📄 device.c
字号:
k_usb_devdscrsz, // length of descriptor in bytes
k_usb_dscr_typ_device, // descriptor type: device
0x00, // usb version lo
0x02, // usb version hi
0x00, // device class: see interfaces
0x00, // subclass: see interfaces
0x00, // protocol: see interfaces
k_maxpktsz, // ndp 0 max packet size (8,16,32,64)
k_vendorlo, // vendor lo
k_vendorhi, // vendor hi
k_dev_productlo, // product lo
k_dev_producthi, // product hi
kbcd_dev_version_minor, // device release lo
kbcd_dev_version_major, // device release hi
k_dev_idx_str_dscr_mfg, // manufacturer string index
k_dev_idx_str_dscr_prd, // product string index
0, // serial string index
k_dev_max_configuration // number of configurations
};
// high speed device descriptor with serial number - cds
uint8 code g_hs_dev_dscr_w_ser[] =
{
k_usb_devdscrsz, // length of descriptor in bytes
k_usb_dscr_typ_device, // descriptor type: device
0x00, // usb version lo
0x02, // usb version hi
0x00, // device class: see interfaces
0x00, // subclass: see interfaces
0x00, // protocol: see interfaces
k_maxpktsz, // ndp 0 max packet size (8,16,32,64)
k_vendorlo, // vendor lo
k_vendorhi, // vendor hi
k_dev_productlo, // product lo
k_dev_producthi, // product hi
kbcd_dev_version_minor, // device release lo
kbcd_dev_version_major, // device release hi
k_dev_idx_str_dscr_mfg, // manufacturer string index
k_dev_idx_str_dscr_prd, // product string index
k_dev_idx_str_dscr_ser, // cds - serial string index
k_dev_max_configuration // number of configurations
};
//------------------------------------------------------------------------------
// device qualifier descriptor
//------------------------------------------------------------------------------
// full speed device qualifier descriptor
uint8 code g_fs_devqual_dscr[] =
{
k_usb_devqualdscrsz, // length of descriptor in bytes
k_usb_dscr_typ_devqual, // descriptor type: device qualifier
0x00, // usb version lo
0x02, // usb version hi
0x00, // device class: see interfaces
0x00, // subclass: see interfaces
0x00, // protocol: see interfaces
k_maxpktsz, // ndp 0 max packet size, other speed
k_dev_max_configuration, // number of other speed configurations
0 // reserved
};
//------------------------------------------------------------------------------
// high speed device qualifier descriptor
uint8 code g_hs_devqual_dscr[] =
{
k_usb_devqualdscrsz, // length of descriptor in bytes
k_usb_dscr_typ_devqual, // descriptor type: device qualifier
0x00, // usb version lo
0x02, // usb version hi
0x00, // device class: see interfaces
0x00, // subclass: see interfaces
0x00, // protocol: see interfaces
k_maxpktsz, // ndp 0 max packet size, other speed
k_dev_max_configuration, // number of other speed configurations
0 // reserved
};
//------------------------------------------------------------------------------
// configuration descriptor
//------------------------------------------------------------------------------
// full speed configuration descriptor
uint8 code g_fs_cfg_dscr[] =
{
k_usb_cfgdscrsz, // length of descriptor in bytes
k_usb_dscr_typ_config, // descriptor type: configuration
k_usb_cfgdscrsz +
k_usb_ifcdscrsz +
k_usb_ndpdscrsz +
#ifdef k_append_dfu_dscr
k_usb_ndpdscrsz +
k_dfu_funcdscrsz, // total length lo
#else
k_usb_ndpdscrsz, // total length lo
#endif
0, // total length hi
1, // number of interfaces 2 to accomodate the DFU
0x01, // configuration value
0x00, // index of string descriptor
0x80, // attributes: bus powered, no remote wakeup
// 0xFA, // max power: 500ma
0x31, // max power: 98ma
// interface descriptor: BOT mass storage
k_usb_ifcdscrsz, // length of descriptor in bytes
k_usb_dscr_typ_interface, // descriptor type: interface
0, // interface number
0, // alternate interface
2, // number of endpoints
0x08, // usb interface class: mass storage
0x06, // usb interface subclass: scsi
0x50, // interface protocol: BOT (bulk only transport)
0x00, // interface string index
// endpoint descriptor: bulk out
k_usb_ndpdscrsz, // length of descriptor in bytes
0x05, // descriptor type: endpoint
0x02, // endpoint 2, out
0x02, // bulk
k_fs_maxpktsz, // max packet size lo
0x00, // max packet size hi
0x01, // polling interval
// endpoint descriptor: bulk in
k_usb_ndpdscrsz, // length of descriptor in bytes
0x05, // descriptor type: endpoint
0x82, // endpoint 2, in
0x02, // bulk
k_fs_maxpktsz, // max packet size lo
0x00, // max packet size hi
0x00, // polling interval
// dfu functional descriptor
k_dfu_funcdscrsz, // length of descriptor in bytes
k_dfu_dscr_typ_functional, // dfu functional descriptor type
0x07, // manifest, upload, dnload tolerant
_l(k_dfu_detach_timeout), // detach timeout lo
_h(k_dfu_detach_timeout), // detach timeout hi
_l(k_dfu_max_xfer_sz), // max transfer size lo
_h(k_dfu_max_xfer_sz) // max transfer size hi
};
//------------------------------------------------------------------------------
// high speed configuration descriptor
uint8 code g_hs_cfg_dscr[] =
{
k_usb_cfgdscrsz, // length of descriptor in bytes
k_usb_dscr_typ_config, // descriptor type: configuration
k_usb_cfgdscrsz +
k_usb_ifcdscrsz +
k_usb_ndpdscrsz +
#ifdef k_append_dfu_dscr
k_usb_ndpdscrsz +
k_dfu_funcdscrsz, // total length lo
#else
k_usb_ndpdscrsz, // total length lo
#endif
0, // total length hi
1, // number of interfaces
0x01, // configuration value
0x00, // index of string descriptor
0x80, // attributes: bus powered, no remote wakeup
// 0xFA, // max power: 500ma
0x31, // max power: 98ma
// interface descriptor: BOT mass storage
k_usb_ifcdscrsz, // length of descriptor in bytes
k_usb_dscr_typ_interface, // descriptor type: interface
0, // interface number
0, // alternate interface
2, // number of endpoints
0x08, // usb interface class: mass storage
0x06, // usb interface subclass: scsi
0x50, // interface protocol: BOT (bulk only transport)
0x00, // interface string index
// endpoint descriptor: bulk out
k_usb_ndpdscrsz, // length of descriptor in bytes
0x05, // descriptor type: endpoint
0x02, // endpoint 2, out
0x02, // bulk
_l(k_hs_maxpktsz), // max packet size lo
_h(k_hs_maxpktsz), // max packet size hi
0x01, // polling interval
// endpoint descriptor: bulk in
k_usb_ndpdscrsz, // length of descriptor in bytes
0x05, // descriptor type: endpoint
0x82, // endpoint 2, in
0x02, // bulk
_l(k_hs_maxpktsz), // max packet size lo
_h(k_hs_maxpktsz), // max packet size hi
0x00, // polling interval
// dfu functional descriptor
k_dfu_funcdscrsz, // length of descriptor in bytes
k_dfu_dscr_typ_functional, // dfu functional descriptor type
0x07, // manifest, upload, dnload tolerant
_l(k_dfu_detach_timeout), // detach timeout lo
_h(k_dfu_detach_timeout), // detach timeout hi
_l(k_dfu_max_xfer_sz), // max transfer size lo
_h(k_dfu_max_xfer_sz) // max transfer size hi
};
//------------------------------------------------------------------------------
// other speed configuration descriptor
//------------------------------------------------------------------------------
// full speed other speed configuration descriptor
uint8 code g_fs_oscfg_dscr[] =
{
k_usb_cfgdscrsz, // length of descriptor in bytes
k_usb_dscr_typ_osconfig, // descriptor type: other speed configuration
k_usb_cfgdscrsz +
k_usb_ifcdscrsz +
k_usb_ndpdscrsz +
#ifdef k_append_dfu_dscr
k_usb_ndpdscrsz +
k_dfu_funcdscrsz, // total length lo
#else
k_usb_ndpdscrsz, // total length lo
#endif
0, // total length hi
1, // number of interfaces
0x01, // configuration value
0x00, // index of string descriptor
0x80, // attributes: bus powered, no remote wakeup
// 0xFA, // max power: 500ma
0x31, // max power: 98ma
// interface descriptor: BOT mass storage
k_usb_ifcdscrsz, // length of descriptor in bytes
k_usb_dscr_typ_interface, // descriptor type: interface
0, // interface number
0, // alternate interface
2, // number of endpoints
0x08, // usb interface class: mass storage
0x06, // usb interface subclass: scsi
0x50, // interface protocol: BOT (bulk only transport)
0x00, // interface string index
// endpoint descriptor: bulk out
k_usb_ndpdscrsz, // length of descriptor in bytes
0x05, // descriptor type: endpoint
0x02, // endpoint 2, out
0x02, // bulk
k_fs_maxpktsz, // max packet size lo
0x00, // max packet size hi
0x01, // polling interval
// endpoint descriptor: bulk in
k_usb_ndpdscrsz, // length of descriptor in bytes
0x05, // descriptor type: endpoint
0x82, // endpoint 2, in
0x02, // bulk
k_fs_maxpktsz, // max packet size lo
0x00, // max packet size hi
0x00, // polling interval
// dfu functional descriptor
k_dfu_funcdscrsz, // length of descriptor in bytes
k_dfu_dscr_typ_functional, // dfu functional descriptor type
0x07, // manifest, upload, dnload tolerant
_l(k_dfu_detach_timeout), // detach timeout lo
_h(k_dfu_detach_timeout), // detach timeout hi
_l(k_dfu_max_xfer_sz), // max transfer size lo
_h(k_dfu_max_xfer_sz) // max transfer size hi
};
//------------------------------------------------------------------------------
// high speed other speed configuration descriptor
uint8 code g_hs_oscfg_dscr[] =
{
k_usb_cfgdscrsz, // length of descriptor in bytes
k_usb_dscr_typ_osconfig, // descriptor type: other speed configuration
k_usb_cfgdscrsz +
k_usb_ifcdscrsz +
k_usb_ndpdscrsz +
#ifdef k_append_dfu_dscr
k_usb_ndpdscrsz +
k_dfu_funcdscrsz, // total length lo
#else
k_usb_ndpdscrsz, // total length lo
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -