动态更改USB配置/接口;由设备启动



我正在开发一个USB MIDI设备,该设备将用作无线系统的接收器。该设备将通过无线电模块与发射机进行双向通信,发射机是一个在USB主机模式下运行的独立硬件。

接收器将插入电脑。插入发射器的MIDI设备需要在电脑上显示为MIDI端口。由于变送器支持USB集线器,因此可以插入多个设备。

有两个要求,我不是100%如何满足:

1.(PC端的MIDI端口名称需要反映插入变送器的USB设备提供的名称,以便清楚该端口用于哪个设备。

2.(当设备从发射机插入/拔出时,PC上的MIDI端口集需要更新。这就是问题的关键:有没有一种方法可以更新由设备启动的可用USB接口/MDI插孔?

执行此操作的暴力方法是,每当接收器从发送器接收到发生更改的消息时,它都会完全重置接收器(重置时,接收器会轮询发送器的当前设备,并在主机重新枚举时提供更新的信息(。

发射机/接收机硬件均基于PIC32MZ MCU(无RTOS(。我擅长编写USB代码,让主机/接收器端做任何事情。问题是,在USB协议的层面上,如何做到这一点。

此外,需要明确的是:发射器/接收器通信将是一个自组织协议,接收器将自己设置其所有USB配置数据;这个想法并不是试图通过无线链路无缝枚举设备。

要在PC上显示端口名称,只需将USB描述符字符串复制到变送器即可。

USB设备更改配置的唯一方法是重置自身,就像它被拔下一样,并让主机重新枚举它。因此,防止多个设备相互干扰的唯一方法就是在接收器上安装多个(虚拟(USB设备。如果您的硬件不支持此功能,则无法避免重置。

最新更新