接口描述符&端点描述符 RNDIS

三、RNDIS网卡

  RNDIS 是 Remote Network Driver Interface Specification(远程网络驱动程序接口规范) 的首字母缩写,实际上的作用为 TCP/IP over USB,也即视 USB 设备(如手机)为网卡,是基于USB实现RNDIS实际上就是TCP/IP over USB,从而使 Windows 可以通过 USB 设备连接网络。

  TCP/IP 协议族,简称为 TCP/IP, 其名称源于其最早的两个核心协议 TCP(Transmission Control Protocol,传输控制协议)和 IP (Internet Protocol,网际协议),它规定了设备连接网络的方式以及数据如何传输的标准。

  8910平台支持RNDIS功能,并且默认处于开启状态。模块只要能联网,正常情况下只要将模块接入电脑(windows、linux)电脑就会识别出来一块网卡,不需要经历ppp拨号那样复杂的流程就可以访问联网。

3.1、RNDIS接口关联描述符(8字节)

字段

长度(位)

偏 移量(位)

十六进制值

说明

bLength

8

72

0x08

描述符 大小为8字节

bDescr iptorType

8

80

0x0B

接口类型

bFirst Interface

8

88

0x00

起 始接口号是0

bInter faceCount

8

96

0x02

接口数为2

bFunc tionClass

8

104

0xE0

该 接口属于无 线控制器类

bFunctio nSubClass

8

112

0x01

该接口属于R F控制器子类

bFunctio nProtocol

8

120

0x03

该接口 使用设备线 适配器同步 流接口协议

** iFunction**

8

128

0x05

接 口字符串描 述符索引为5

在这里插入图片描述

在这里插入图片描述

3.2、控制接口

3.2.1、RNDIS控制接口描述符(9字节)

字段

长度(位)

偏 移量(位)

十六进制值

说明

bLength

8

136

0x09

描述符 大小为9字节

bDescr iptorType

8

144

0x04

接口 描述符类型

bInterf aceNumber

8

152

0x00

此接口号 的索引为0。

bAlterna teSetting

8

160

0x00

用于选择此 接口的备用 设置的值为0

bNum Endpoints

8

168

0x01

此接 口使用的端 点数为1(不 包括端点0)

bInter faceClass

8

176

0xE0

接口实现无 线控制器类

bInterfac eSubClass

8

184

0x01

接 口实现射频 控制器子类

bInterfac eProtocol

8

192

0x03

接口 使用设备线 适配器同步 流接口协议

i Interface

8

200

0x03

接 口字符串描 述符索引为3

在这里插入图片描述

在这里插入图片描述

3.2.2、RNDIS CDC Header功能描述符(5字节)

  Header功能描述符表示功能描述符的开始,其他紧跟的内容就是此设备的功能描述符的内容。bcdCDC表示的是CDC的版本。

字段

长度(位)

偏 移量(位)

十六进制值

说明

bLength

8

208

0x05

描述符 的大小,以 字节为单位

bDescr iptorType

8

216

0x24

描述符类型

bDescript orSubType

8

224

0x00

描 述符子类型

bcdCDC

16

232

0x0110

USB通信 类定义通信 规范1.10版

在这里插入图片描述

在这里插入图片描述

3.2.3、RNDIS CDC Call Management功能描述符(4字节)

  Call Management描述的就是电话相关的东西,AT指令集的支持情况。 bDataInterface表示如有电话时,电话数据内容对应的接口号。

字段

长度(位)

偏 移量(位)

十六进制值

说明

bLength

8

248

0x05

描述符 的大小,以 字节为单位

bDescr iptorType

8

256

0x24

描述符类型

bDescript orSubType

8

264

0x01

描 述符子类型

bmCap abilities

8

272

0x00

Bit0:设备 是否自己处 理呼叫管理1 Bit1:设备是 否可以通过 数据类接口 发送/接收呼 叫管理信息0

bData Interface

8

280

0x01

可选用 于呼叫管理 的数据类接 口的接口号

在这里插入图片描述

在这里插入图片描述

3.2.4、RNDIS CDC ACM功能描述符(4字节)

  ACM(Abstract Control Model),即抽象控制模型,PSTN下,除了ACM模型还有还有DLM(Direct Line Mode), TCM(Telephone Control Model)。

字段

长 度 ( 位 )

偏移 量( 位)

十 六 进 制 值

说明

bLength*

8

288

0 x04

描述符的大小,以字节为单位

bDescri ptorType

8

296

0 x24

描述符类型

** bDescripto rSubType**

8

304

0 x02

描述符子类型

bmCapa bilities

8

312

0 x00

第0位:设备是否支持Set_Comm_Feature 、Clear_Comm_Feature和Get_Comm_Fea ture的组合请求第1位:设备是否支持Se t_Line_Coding、Set_Control_Line_St ate、Get_Line_Coding和Serial_State 1的通知组合

在这里插入图片描述

在这里插入图片描述

3.2.5、RNDIS CDC Union功能描述符(5字节)

  Union描述符就是用来告诉主机端,哪些接口是联合在一起的,对应着一个功能,这个功能需要主机装载对应的驱动来实现,因此,功能与驱动是一对一的关系。这里bControlInterface值为0,则表示接口0为控制接口,bSubBoardinateInterface0值为1,表示接口1为控制接口0的下级接口,即数据接口。在CDC标准中,控制接口是必须的,而数据接口是可选的,因此,数据接口为控制接口的附属。

字段

长 度(位)

偏移 量(位)

解码

十 六进制值

说明

b Length

8

320

0x05

0x05

描 述符的大 小,以字 节为单位

b Descript orType

8

328

0x24

0x24

描 述符类型

bDes criptorS ubType

8

336

0x06

0x06

描述 符子类型

bCo ntrolInt erface

8

344

0x00

0x00

通信或数 据类接口 的接口号

** bSubordi nateInte rface0**

8

352

0x01

0x01

下级接口 的接口号

在这里插入图片描述

在这里插入图片描述

3.2.6、RNDIS 通知端点描述符(7字节)

字段

长度(位)

偏 移量(位)

十六进制值

说明

bLength

8

360

0x07

描述符 大小为7字节

bDescr iptorType

8

368

0x05

端点 描述符类型

bEndpoi ntAddress

8

376

0x82

这 是端点号为 2的输入端点

bmA ttributes

8

384

0x03

类型-传输 :中断低功 耗:无Pkt大 小调整:无

wMaxP acketSize

16

392

0x0008

此终结点的 最大数据包 大小为8字节 。如果是高 速,则每帧 增加0个事务

** bInterval**

8

408

0x09

轮询 间隔值为每 9帧。如果高 速,每256帧

在这里插入图片描述

在这里插入图片描述

3.3、数据接口

3.3.1、RNDIS数据接口描述符(9字节)

字段

长度(位)

偏 移量(位)

十六进制值

说明

bLength

8

416

0x09

描述符 大小为9字节

bDescr iptorType

8

424

0x04

接口 描述符类型

bAlterna teSetting

8

432

0x01

此 接口号为1。

bAlterna teSetting

8

440

0x00

用于选择此 接口的备用 设置的值为0

bNum Endpoints

8

448

0x02

此接 口使用的端 点数为2(不 包括端点0)

bInter faceClass

8

456

0x0A

接口实现 数据接口类

bInterfac eProtocol

8

472

0x00

接口使用 不需要特定 于类的协议

bInterfac eSubClass

8

464

0x00

子类编码为0

i Interface

8

480

0x04

接 口字符串描 述符索引为4

在这里插入图片描述

在这里插入图片描述

3.3.2、RNDIS数据输入端点描述符(7字节)

字段

长度(位)

偏 移量(位)

十六进制值

说明

bLength

8

488

0x07

描述符 大小为7字节

bDescr iptorType

8

496

0x05

端点 描述符类型

bEndpoi ntAddress

8

504

0x81

这是端点号 为1的IN端点

bmA ttributes

8

512

0x02

类型-传输 :批量包大 小调整:否

wMaxP acketSize

16

520

0x0200

此 终结点的最 大数据包大 小为512字节 。如果是高 速,则每帧 增加0个事务

** bInterval**

8

536

0x00

轮询间隔 值为每0帧。 高速未定义

在这里插入图片描述

在这里插入图片描述

3.3.3、RNDIS数据输出端点描述符(7字节)

字段

长度(位)

偏 移量(位)

十六进制值

说明

bLength

8

544

0x07

描述符 大小为7字节

bDescr iptorType

8

552

0x05

端点 描述符类型

bEndpoi ntAddress

8

560

0x01

这 是端点号为 1的输出端点

bmA ttributes

8

568

0x02

类型-传输 :批量包大 小调整:否

wMaxP acketSize

16

576

0x0200

此 终结点的最 大数据包大 小为512字节 。如果是高 速,则每帧 增加0个事务

** bInterval**

8

592

0x00

轮询间隔 值为每0帧。

在这里插入图片描述

在这里插入图片描述