我正在嘗試完成具有兩個獨立TX通道的無線電的FE設備。該向導爲TX數據生成了一個具有2個短輸入端口的設備。當我分配一個TX通道作爲設備的用戶時,我不知道分配使用哪個端口。處理這個問題的最佳方法是什麼,因爲我將不得不從適當的端口讀取數據發送到TX通道?TX有沒有等同於matchAllocationIdToStreamId的?
如果我將輸入端口的數量減少到一個,我可以擁有爲每個路由設置流ID(作爲過濾器)的屬性,並讓用戶將流ID綁定到調諧器索引。這必須在分配後完成。
我正在嘗試完成具有兩個獨立TX通道的無線電的FE設備。該向導爲TX數據生成了一個具有2個短輸入端口的設備。當我分配一個TX通道作爲設備的用戶時,我不知道分配使用哪個端口。處理這個問題的最佳方法是什麼,因爲我將不得不從適當的端口讀取數據發送到TX通道?TX有沒有等同於matchAllocationIdToStreamId的?
如果我將輸入端口的數量減少到一個,我可以擁有爲每個路由設置流ID(作爲過濾器)的屬性,並讓用戶將流ID綁定到調諧器索引。這必須在分配後完成。
你有正確的想法。應該有一個輸入BulkIO端口,可以處理多個流,而不是多個輸入端口。該向導允許開發人員指定要生成多少個輸入端口,因此您必須選擇兩個。 FEI Tuner設備沒有太多理由需要兩個相同類型的輸入端口來攝取數據流。 USRP_UHD
是多個輸入端口確實有意義的示例,但這僅僅是因爲它支持多種數據類型(short
和float
),並且它具有每種類型的輸入端口。
所以,現在讓我們假設你有一個輸入端口用於發送數據到兩個TX通道。您應該將輸入數據的流ID映射到TX調諧器的分配ID。您建議使用調諧器索引,但我建議使用分配ID。有(至少)三種方式輸入流映射到特定分配的調諧器:
connectionTable
屬性通常用於多輸出端口,但同樣的概念可以應用於多輸入端口。每個struct條目都會將輸入流ID映射到Allocation ID(也許是輸入端口的端口名,儘管在這種情況下離開端口名可能更好)。這必須像任何其他屬性一樣在外部進行配置,而不是在用於多輸出端口時進行配置,並且在FEI設備本身進行分配期間進行配置。當在輸入端口接收到數據時,開發者代碼將不得不檢查connectionTable
屬性以知道數據流與哪個調諧器相關聯(如果有的話)。"TUNER_ID"
和值= <actual allocation id of TX tuner>
)來定義識別目標TX調諧器的SRI關鍵字,並將其添加到輸入數據流的SRI。再次,開發者代碼將需要檢查SRI關鍵字以知道數據流與哪個調諧器相關聯(如果有的話)。注意,對於多輸出端口到端口的連接使用的是,分配ID相匹配的連接ID製成,並且其連同connectionTable
屬性(它映射分配/連接ID到流ID)可以使輸出端口僅將數據流發送到適當的連接。輸入端口(或「提供」端口,因爲它們被稱爲)實際上並不知道連接ID,因此不能使用類似的方法。
有上述每個提議的解決方案的優點和缺點:
connectionTable
屬性時必須格外小心,因爲消除現有的connectionTable
配置將非常容易。您必須查詢屬性才能獲取當前配置,並根據需要進行修改,然後使用修改的值配置該屬性。只需使用Stream ID和Allocation ID映射進行配置即可清除任何現有的配置。一個簡單的方法是創建一個名爲類似於addStreamMapping
的結構體,它在配置時將值添加到connectionTable
結構序列(使用Property偵聽器)。相同的技術可以用於去除connectionTable
條目。這允許FEI設備同步添加/刪除條目。理想情況下,你甚至可以支持所有三種。 FEI沒有定義如何將輸入數據流映射到特定的TX調諧器,所以在定義和記錄之前,請使用最適合您使用情況的方法。