NRF52840 USB audio + cdc在windows上需要添加关联设置

#define USBD_AUDIO_CLASS 0x01
#define USBD_AUDIO_SUBCLASS_CONTROL 0x01
#define USBD_AUDIO_PROTOCOL_UNDEFINED 0x00
#define USBD_DSC_TYPE_INTERFACE_ASSOCIATION 0x0B

static bool audio_feed_descriptors(app_usbd_class_descriptor_ctx_t * p_ctx,
app_usbd_class_inst_t const * p_inst,
uint8_t * p_buff,
size_t max_size)
{
static uint8_t ifaces = 0;
ifaces = app_usbd_class_iface_count_get(p_inst);
ASSERT(ifaces == 2);
app_usbd_audio_t const * p_audio = audio_get(p_inst);

APP_USBD_CLASS_DESCRIPTOR_BEGIN(p_ctx, p_buff, max_size);

static app_usbd_class_iface_conf_t const * p_cur_iface = NULL;
p_cur_iface = app_usbd_class_iface_get(p_inst, 0);

//********** IA insert ******************

APP_USBD_CLASS_DESCRIPTOR_WRITE(0x08); // bLength
APP_USBD_CLASS_DESCRIPTOR_WRITE(USBD_DSC_TYPE_INTERFACE_ASSOCIATION);
APP_USBD_CLASS_DESCRIPTOR_WRITE(app_usbd_class_iface_number_get(p_cur_iface));
APP_USBD_CLASS_DESCRIPTOR_WRITE(ifaces);
APP_USBD_CLASS_DESCRIPTOR_WRITE(USBD_AUDIO_CLASS);
APP_USBD_CLASS_DESCRIPTOR_WRITE(USBD_AUDIO_SUBCLASS_CONTROL);
APP_USBD_CLASS_DESCRIPTOR_WRITE(USBD_AUDIO_PROTOCOL_UNDEFINED);
APP_USBD_CLASS_DESCRIPTOR_WRITE(0x00);

//*****************************************

/* CONTROL INTERFACE DESCRIPTOR */
APP_USBD_CLASS_DESCRIPTOR_WRITE(0x09); // bLength
APP_USBD_CLASS_DESCRIPTOR_WRITE(APP_USBD_DESCRIPTOR_INTERFACE); // bDescriptorType = Interface

// static app_usbd_class_iface_conf_t const * p_cur_iface = NULL;
// p_cur_iface = app_usbd_class_iface_get(p_inst, 0);

APP_USBD_CLASS_DESCRIPTOR_WRITE(app_usbd_class_iface_number_get(p_cur_iface)); // bInterfaceNumber
APP_USBD_CLASS_DESCRIPTOR_WRITE(0x00); // bAlternateSetting
APP_USBD_CLASS_DESCRIPTOR_WRITE(app_usbd_class_iface_ep_count_get(p_cur_iface)); // bNumEndpoints
APP_USBD_CLASS_DESCRIPTOR_WRITE(APP_USBD_AUDIO_CLASS); // bInterfaceClass = Audio
APP_USBD_CLASS_DESCRIPTOR_WRITE(APP_USBD_AUDIO_SUBCLASS_AUDIOCONTROL); // bInterfaceSubclass (Audio Control)
APP_USBD_CLASS_DESCRIPTOR_WRITE(APP_USBD_AUDIO_CLASS_PROTOCOL_UNDEFINED); // bInterfaceProtocol
APP_USBD_CLASS_DESCRIPTOR_WRITE(0x00); // iInterface

/* HEADER INTERFACE */
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值