uvc 扩展单元

UVC設備生產廠家爲留出設備的調試接口,或擴展一些UVC以外的特殊功能,會在其USB固件中添加一些私有命令,比如我

要點亮一個led,如何利用UVC控制接口完成命令傳輸?UVC設備固件如何解析這是一條點亮led的命令?

       在回答上述兩個問題之前,我要先介紹下UVC擴展單元(Extension Unit),UVC擴展單元是專門爲了給設備廠家提供私有命

令的Unit,若想添加點亮led命令,就必須要通過此單元來配置。

       在上一篇學習筆記中,我們將UVC枚舉分爲了兩個階段,其中“第二階段”是否發起由UVC設備的Process Unit描述符決定,如

果在Process Unit描述符中將可見光屬性全部關閉,則PC不會發起“第二階段”枚舉。

         擴展單元也是一樣,如果我們在Extension Unit描述符中打開私有命令屬性,則在UVC設備枚舉過程中,PC也會發起對

Extension Unit的詢問。

        還是以手中的UVC攝像頭爲例, UVC攝像頭擴展單元bNumControls值爲0X18,bmControls值爲0x9F 0x00 0x07,可以分析

出該攝像頭廠家留了24條私有命令通道,其中只用到了9條,bit置1的位即爲打開的私有命令通道號。

        還是要結合抓包數據分析才比較具體,可以看到PC枚舉UVC“第一階段”完成以後,緊接着開始獲取Extension Unit私有命令通

道的屬性信息,在獲取完成後,繼續獲取Process Unit屬性,然後完成枚舉。

         a1 85 00 01  00 03 02 00,GET_LEN命令,第六字節“03”,是因爲Extension Unit Id爲03,第四字節爲“01”,表示這是第一

通道,PC分別枚舉了通道序號“1-5”、7等等九個通道,這就和bmControls值Bit位對應起來了,可以發現bit0對應的私有通道序號

爲1,即私有通道號是從1開始計數的。

      可以看出PC分別按GET_LEN、GET_INFO、GET_MIN、GET_MAX、GET_RES、GET_DEF的順序獲取通道屬性。   

      以通道1爲例,GET_LEN獲得的反饋爲0004,則PC像該通道一次只能寫入4Byte數據。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值