描述符——设备描述符

news2024/11/20 8:47:08

文章目录

    • 描述符定义
    • 描述符实现
    • 描述符含义

描述符定义

在这里插入图片描述在这里插入图片描述

描述符实现

/**
 * @brief Device descriptor.
 */
typedef struct __attribute__ ((packed))
{
    uint8_t  bLength            ; /**< Size of this descriptor in bytes. */
    uint8_t  bDescriptorType    ; /**< DEVICE Descriptor Type. */
    uint16_t bcdUSB             ; /**< BUSB Specification Release Number in Binary-Coded Decimal (i.e., 2.10 is 210H). This field identifies the release of the USB Specification with which the device and its descriptors are compliant. */

    uint8_t  bDeviceClass       ; /**< Class code (assigned by the USB-IF). \n If this field is reset to zero, each interface within a configuration specifies its own class information and the various interfaces operate independently. \n If this field is set to a value between 1 and FEH, the device supports different class specifications on different interfaces and the interfaces may not operate independently. This value identifies the class definition used for the aggregate interfaces. \n If this field is set to FFH, the device class is vendor-specific. */
    uint8_t  bDeviceSubClass    ; /**< Subclass code (assigned by the USB-IF). These codes are qualified by the value of the bDeviceClass field. \n If the bDeviceClass field is reset to zero, this field must also be reset to zero. \n If the bDeviceClass field is not set to FFH, all values are reserved for assignment by the USB-IF. */
    uint8_t  bDeviceProtocol    ; /**< Protocol code (assigned by the USB-IF). These codes are qualified by the value of the bDeviceClass and the bDeviceSubClass fields. If a device supports class-specific protocols on a device basis as opposed to an interface basis, this code identifies the protocols that the device uses as defined by the specification of the device class. \n If this field is reset to zero, the device does not use class-specific protocols on a device basis. However, it may use classspecific protocols on an interface basis. \n If this field is set to FFH, the device uses a vendor-specific protocol on a device basis. */
    uint8_t  bMaxPacketSize0    ; /**< Maximum packet size for endpoint zero (only 8, 16, 32, or 64 are valid). For HS devices is fixed to 64. */

    uint16_t idVendor           ; /**< Vendor ID (assigned by the USB-IF). */
    uint16_t idProduct          ; /**< Product ID (assigned by the manufacturer). */
    uint16_t bcdDevice          ; /**< Device release number in binary-coded decimal. */

    uint8_t  iManufacturer      ; /**< Index of string descriptor describing manufacturer. */
    uint8_t  iProduct           ; /**< Index of string descriptor describing product. */
    uint8_t  iSerialNumber      ; /**< Index of string descriptor describing the device's serial number. */

    uint8_t  bNumConfigurations ; /**< Number of possible configurations. */
}usb_desc_device_t;

描述符含义

fielddescription
bLength表示该描述符的长度。设备描述符的长度为 18 字节,写成十六进制就是 0x12。
bDescriptorType描述符类型。设备描述符的编号为 0x01。
bcdUSB2 字节,该设备所使用的 USB 协议的版本。如 USB2.0 就是 0x0200,USB1.1 就是 0x0110。实际传输的时候是低字节在前。
bDeviceClass设备所使用的类代码。
bDeviceSubClass设备所使用子类代码。
bDeviceProtocol设备所使用的协议,协议代码由 USB 协会规定。
bMaxPacketSize0端点 0 的最大包长。它的取值可以是 8 16 32 64 字节。对于高速设备固定是 64 字节
idVendor2 字节,厂商 ID。
idProduct2 字节,产品 ID。
bcdDevice2 字节,设备的版本号。
iManufacturer描述厂商的字符串的索引值。
iProduct描述产品的字符串索引值。
iSerialNumber描述设备的序列号字符串索引值。
bNumConfigurations表示该设备有多少种配置。
  • 设备描述符决定该设备有多少种配置
    在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1035392.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux0.11——第三回 做好访问内存的最基础准备工作

前面两回是把启动区的代码复制来复制去的&#xff0c;这里我们要讨论的就是操作系统怎么为程序访问内存的方式做初步规划的&#xff1f; 操作系统的代码最开头的 512 字节的数据&#xff0c;先从硬盘的启动区移动到了内存 0x7c00 处&#xff0c;然后又立刻被移动到 0x90000 处…

mybatis-plus中更新null值的问题

文章目录 前言一、情景介绍二、方法分析三、原因分析四、解决方式五、方式扩展总结 前言 本文主要介绍 mybatis-plus 中常使用的 update 相关方法的区别&#xff0c;以及更新 null 的方法有哪些等。 至于为什么要写这篇文章&#xff0c;首先是在开发中确实有被坑过几次&#x…

Json文件序列化读取

Json文件 [{"name":"清华大学","location":"北京","grade":"1"},{"name":"北京大学","location":"北京","grade":"2"} ] 安装包 代码 Program.c…

睿趣科技:抖音开网店真的可以相信吗

随着社交媒体的快速发展&#xff0c;抖音已经成为了一个备受欢迎的平台&#xff0c;尤其是对于那些希望在电商领域有所作为的人们。许多人开始在抖音上开设网店&#xff0c;以获取额外的收入或建立自己的事业。然而&#xff0c;对于抖音开网店是否真的可以相信&#xff0c;存在…

java基础学习之变量与运算符

一&#xff0c;关键字 1&#xff0c;定义&#xff1a;被java语言赋予了特殊含义&#xff0c;用作专门用途的字符串或单词。 2&#xff0c;特点&#xff1a;关键字全都是小写字母。 3&#xff0c;关键字一共50个&#xff0c;其中const和goto是保留字。 4&#xff0c;true&#x…

硕士应聘大专老师

招聘信息 当地人社局、学校&#xff08;官方&#xff09; 公众号&#xff08;推荐&#xff09;&#xff1a; 辅导员招聘 厦门人才就业信息平台 高校人才网V 公告出完没多久就要考试面试&#xff0c;提前联系当地院校&#xff0c;问是否招人。 校招南方某些学校会直接去招老师。…

Web自动化测试测试常见BUG

【软件测试面试突击班】如何逼自己一周刷完软件测试八股文教程&#xff0c;刷完面试就稳了&#xff0c;你也可以当高薪软件测试工程师&#xff08;自动化测试&#xff09; 1.翻页 翻页时&#xff0c;没有加载数据为空&#xff0c;第二页数据没有请求 翻页时&#xff0c;重复请…

“淘宝” 开放平台接口设计思路(内附API接口免费接入地址)

最近对接的开放平台有点多&#xff0c;像淘宝、天猫、京东、拼多多、快手、抖音等电商平台的开放平台基本对接了个遍&#xff0c;什么是CRUD BODY也许就是这样的吧&#xff01;&#xff01;&#xff01; 经过这几天的整理&#xff0c;脑子里大概有了个开放平台接口的设计套路&…

mysql优化之索引

索引官方定义&#xff1a;索引是帮助mysql高效获取数据的数据结构。 索引的目的在于提高查询效率&#xff0c;可以类比字典。 可以简单理解为&#xff1a;排好序的快速查找数据结构 在数据之外&#xff0c;数据库系统还维护着满足特定查找算法的数据结构&#xff0c;这种数据…

面试题:ElasticSearch是什么?应用场景是什么?

文章目录 1、什么是搜索2、如果用数据库做搜索会怎么样3、什么是全文检索、倒排索引和Lucene4、ElasticSearch是什么ElasticSearch的功能ElasticSearch的应用场景ElasticSearch的特点 ElasticSearch是一个分布式&#xff0c;高性能、高可用、可伸缩的搜索和分析系统 看了上面这…

泛型编程<T extends Comparable<? super T>>是什么意思

今天看到了两个这样的写法,非常好奇。 <T extends Comparable<? super T>>public class BplusTree<K extends Comparable </K/>,V>下面是不同人对这种写法的解释 大概理解的意思是实现不同类之间属性的对比 转载链接 这段代码是什么意思呢 public…

小米系列机型--MIUI14关闭广告 推送广告 开屏广告 通用其他miui版本

在现代社会中&#xff0c;手机广告已经成为我们日常生活中的一种困扰。每当我们使用手机时&#xff0c;不断弹出的广告不仅打扰了我们的正常操作&#xff0c;还消耗了我们的流量和电池电量&#xff0c;以小米机型为例.根据下方的设置完以后基本手机就相对来说很干净。 以前博文…

2000-2019年高新技术企业统计情况

2000-2019年高新技术企业统计情况 1、时间&#xff1a;2000-2019年 2、指标&#xff1a;统计年度、所属省份、所属省份代码、所属城市、所属城市代码、认定对象身份、认定总次数、涉及公司总数量 3、来源&#xff1a;csmar 4、指标说明&#xff1a; SgnYear [统计年度] - …

高效查询大量快递信息,轻松掌握技巧

在如今快节奏的生活中&#xff0c;快递已经成为我们日常不可或缺的一部分。然而&#xff0c;对于一些忙碌的人来说&#xff0c;单个查询每一个快递单号可能会浪费太多时间。因此&#xff0c;我们需要一款可以帮助我们批量查询快递的软件。 在市场上&#xff0c;有很多款专门用于…

vue+express、gitee pm2部署轻量服务器(20230923)

一、代码配置 前后端接口都保持 127.0.0.1:3000 vue 项目 创建文件 pm2.config.cjs module.exports {apps: [{name: xin-web, // 应用程序的名称script: npm, // 启动脚本args: run dev, // 启动脚本的参数cwd: /home/vue/xin_web, // Vite 项目的根目录interpreter: none,…

Matlab图像处理-模式识别

模式识别 模式识别就是用计算的方法根据样本的特征将样本划分到一定的类别中去。模式识别就是通过计算机用数学技术方法来研究模式的自动处理和判读&#xff0c;把环境与客体统称为“模式”。模式识别以图像处理与计算机视觉、语音语言信息处理、脑网络组、类脑智能等为主要研…

奇舞周刊第507期:通过 View Transition API 在状态之间添加丰富的过渡动画

记得点击文章末尾的“ 阅读原文 ”查看哟~ 下面先一起看下本期周刊 摘要 吧~ 奇舞推荐 ■ ■ ■ 通过 View Transition API 在状态之间添加丰富的过渡动画 W3C 2023 年度全球技术大会 (TPAC2023) 于今年9月 11 - 15 日召开。W3C CSS 工作组成员 Bramus Van Damme(Google) 为本届…

学习ssh配置

三台设备ar1、ar2、ar3 ar1 通过ssh密码方式登陆ar3 ar2 通过免密码方式登陆ar3 ar3的配置如下&#xff1a;进入路由器 rsa local-key-pair creat 选择y&#xff08;yes&#xff09; Input the bits in the modulus[default 512]:2048 //需要创建密钥的长度user-interface v…

RocketMQ生产环境常见问题分析与总结

一、 RocketMQ 如何保证消息不丢失 这个是在面试时&#xff0c;关于 MQ &#xff0c;面试官最喜欢问的问题。这个问题是所有 MQ 都需要面对的一个共性问题。大致的解决思路都是一致的&#xff0c;但是针对不同的MQ 产品又有不同的解决方案。分析这个问题要从以下几个角度入手&…

【C++】bitset位图的简单模拟实现及常见面试题

文章目录 前言一、 bitset模拟实现二、 常见面试题1.给你一百亿个整数&#xff0c;找到只出现一次的数字2. 给两个文件&#xff0c;分别有100亿个整数&#xff0c;我们只有1G内存&#xff0c;如何找到两个文件交集&#xff1f; 前言 快速查找某个数据是否在一个集合中排序 去重…