zoukankan      html  css  js  c++  java
  • Linux 内核使用 USB 数据函数

    USB 核心中的几个帮忙函数可用来从所有的 USB 设备中存取标准信息. 这些函数不能从 中断上下文或者持有自旋锁时调用.

    函数 usb_get_descriptor 获取指定的 USB 描述符从特定的设备. 这个函数被定义为:

    int usb_get_descriptor(struct usb_device *dev, unsigned char type, unsigned char index, void *buf, int size);

    这个函数可被一个 USB 驱动用来从 struct usb_device 结构中, 获取任何还没有在 struct usb_device 和 struct usb_interface 结构中出现的设备描述符, 例如声音描述 符或者其他类的特定消息. 这个函数的参数是:

    struct usb_device *usb_dev 指向应当从中获取描述符的 USB 设备的指针

    unsigned char type

    描述符类型. 这个类型在 USB 规范中描述, 并且是下列类型之一:

    USB_DT_DEVICE USB_DT_CONFIG USB_DT_STRING USB_DT_INTERFACE USB_DT_ENDPOINT USB_DT_DEVICE_QUALIFIER USB_DT_OTHER_SPEED_CONFIG USB_DT_INTERFACE_POWER USB_DT_OTG USB_DT_DEBUG USB_DT_INTERFACE_ASSOCIATION USB_DT_CS_DEVICE USB_DT_CS_CONFIG USB_DT_CS_STRING USB_DT_CS_INTERFACE USB_DT_CS_ENDPOINT

    unsigned char index

    应当从设备获取的描述符的数目. void *buf

    你拷贝描述符到的缓冲的指针. int size

    由 buf 变量指向的内存的大小.

    如果这个函数成功, 它返回从设备读取的字节数, 否则, 它返回由它所调用的底层函数 usb_control_msg 所返回的一个负错误值.

    usb_get_descripter 调用的一项最普遍的用法是从 USB 设备获取一个字符串. 因为这个 是非常普遍, 有一个帮忙函数称为 usb_get_string:

    int usb_get_string(struct usb_device *dev, unsigned short langid, unsigned char index, void *buf, int size);

    如果成功, 这个函数返回设备收到的给这个字符串的字节数. 否则, 它返回一个由这个函 数调用的底层函数 usb_control_msg 返回的负错误值.

    如果这个函数成功, 它返回一个以 UTF-16LE 格式编码的字符串(Unicode, 16 位每字符, 小端字节序)在 buf 参数指向的缓冲中. 因为这个格式不是非常有用, 有另一个函数, 称 为 usb_string, 它返回一个从一个 USB 设备读来的字符串, 并且已经转换为一个 ISO 8859-1 格式字符串. 这个字符集是一个 8 位的 UICODE 的子集, 并且是最普遍的英文和 其他西欧字符串格式. 因为这是 USB 设备的字符串的典型格式, 建议 usb_string 函数 来替代 usb_get_string 函数.

  • 相关阅读:
    ios中要在tableview中添加事件的方法
    ios中键盘处理适合ipad 和iphone
    ios中LeveyPopListView 弹出view的用法
    ios中VRGCalendarView日历控件
    ios中MKHorizMenu用法
    ios中封装网络和tableview的综合运用
    ios中core Plot (2)
    ios中NSObject分类(2)
    ios中NSObject分类
    ios 中UIViewController的分类
  • 原文地址:https://www.cnblogs.com/fanweisheng/p/11147394.html
Copyright © 2011-2022 走看看