Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
2301_76519099
rt-thread
提交
3044461b
R
rt-thread
项目概览
2301_76519099
/
rt-thread
与 Fork 源项目一致
Fork自
RT-Thread / rt-thread
通知
3
Star
1
Fork
1
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
R
rt-thread
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
未验证
提交
3044461b
编写于
11月 25, 2017
作者:
B
Bernard Xiong
提交者:
GitHub
11月 25, 2017
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #1039 from uestczyh222/rndis
[DeviceDrivers][USB] rndis class LWIP on USB
上级
94ba2c0b
f4fb7161
变更
6
展开全部
显示空白变更内容
内联
并排
Showing
6 changed file
with
1801 addition
and
2 deletion
+1801
-2
components/drivers/KConfig
components/drivers/KConfig
+8
-0
components/drivers/usb/usbdevice/SConscript
components/drivers/usb/usbdevice/SConscript
+3
-0
components/drivers/usb/usbdevice/class/ndis.h
components/drivers/usb/usbdevice/class/ndis.h
+229
-0
components/drivers/usb/usbdevice/class/rndis.c
components/drivers/usb/usbdevice/class/rndis.c
+1325
-0
components/drivers/usb/usbdevice/class/rndis.h
components/drivers/usb/usbdevice/class/rndis.h
+222
-0
components/drivers/usb/usbdevice/core/core.c
components/drivers/usb/usbdevice/core/core.c
+14
-2
未找到文件。
components/drivers/KConfig
浏览文件 @
3044461b
...
@@ -132,6 +132,10 @@ menu "Using USB"
...
@@ -132,6 +132,10 @@ menu "Using USB"
config _RT_USB_DEVICE_HID
config _RT_USB_DEVICE_HID
bool "Enable to use device as HID device"
bool "Enable to use device as HID device"
select RT_USB_DEVICE_HID
select RT_USB_DEVICE_HID
config _RT_USB_DEVICE_RNDIS
bool "Enable to use device as rndis device"
select RT_USB_DEVICE_RNDIS
depends on RT_USING_LWIP
config _RT_USB_DEVICE_ECM
config _RT_USB_DEVICE_ECM
bool "Enable to use device as ecm device"
bool "Enable to use device as ecm device"
select RT_USB_DEVICE_ECM
select RT_USB_DEVICE_ECM
...
@@ -150,6 +154,10 @@ menu "Using USB"
...
@@ -150,6 +154,10 @@ menu "Using USB"
config RT_USB_DEVICE_HID
config RT_USB_DEVICE_HID
bool "Enable to use device as HID device"
bool "Enable to use device as HID device"
default n
default n
config RT_USB_DEVICE_RNDIS
bool "Enable to use device as rndis device"
default n
depends on RT_USING_LWIP
config RT_USB_DEVICE_ECM
config RT_USB_DEVICE_ECM
bool "Enable to use device as ecm device"
bool "Enable to use device as ecm device"
default n
default n
...
...
components/drivers/usb/usbdevice/SConscript
浏览文件 @
3044461b
...
@@ -19,6 +19,9 @@ if GetDepend('RT_USB_DEVICE_MSTORAGE'):
...
@@ -19,6 +19,9 @@ if GetDepend('RT_USB_DEVICE_MSTORAGE'):
if
GetDepend
(
'RT_USB_DEVICE_ECM'
):
if
GetDepend
(
'RT_USB_DEVICE_ECM'
):
src
+=
Glob
(
'class/ecm.c'
)
src
+=
Glob
(
'class/ecm.c'
)
if
GetDepend
(
'RT_USB_DEVICE_RNDIS'
):
src
+=
Glob
(
'class/rndis.c'
)
if
GetDepend
(
'RT_USB_DEVICE_WINUSB'
):
if
GetDepend
(
'RT_USB_DEVICE_WINUSB'
):
src
+=
Glob
(
'class/winusb.c'
)
src
+=
Glob
(
'class/winusb.c'
)
...
...
components/drivers/usb/usbdevice/class/ndis.h
0 → 100644
浏览文件 @
3044461b
/*
* ndis.h
*
* Modified by Colin O'Flynn <coflynn@newae.com>
* ntddndis.h modified by Benedikt Spranger <b.spranger@pengutronix.de>
*
* Thanks to the cygwin development team,
* espacially to Casper S. Hornstrup <chorns@users.sourceforge.net>
*
* THIS SOFTWARE IS NOT COPYRIGHTED
*
* This source code is offered for use in the public domain. You may
* use, modify or distribute it freely.
*
* This code is distributed in the hope that it will be useful but
* WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
* DISCLAIMED. This includes but is not limited to warranties of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
*
*/
#ifndef __NDIS_H__
#define __NDIS_H__
#define NDIS_STATUS_MULTICAST_FULL 0xC0010009
#define NDIS_STATUS_MULTICAST_EXISTS 0xC001000A
#define NDIS_STATUS_MULTICAST_NOT_FOUND 0xC001000B
/* from drivers/net/sk98lin/h/skgepnmi.h */
#define OID_PNP_CAPABILITIES 0xFD010100
#define OID_PNP_SET_POWER 0xFD010101
#define OID_PNP_QUERY_POWER 0xFD010102
#define OID_PNP_ADD_WAKE_UP_PATTERN 0xFD010103
#define OID_PNP_REMOVE_WAKE_UP_PATTERN 0xFD010104
#define OID_PNP_ENABLE_WAKE_UP 0xFD010106
enum
NDIS_DEVICE_POWER_STATE
{
NdisDeviceStateUnspecified
=
0
,
NdisDeviceStateD0
,
NdisDeviceStateD1
,
NdisDeviceStateD2
,
NdisDeviceStateD3
,
NdisDeviceStateMaximum
};
struct
NDIS_PM_WAKE_UP_CAPABILITIES
{
enum
NDIS_DEVICE_POWER_STATE
MinMagicPacketWakeUp
;
enum
NDIS_DEVICE_POWER_STATE
MinPatternWakeUp
;
enum
NDIS_DEVICE_POWER_STATE
MinLinkChangeWakeUp
;
};
/* NDIS_PNP_CAPABILITIES.Flags constants */
#define NDIS_DEVICE_WAKE_UP_ENABLE 0x00000001
#define NDIS_DEVICE_WAKE_ON_PATTERN_MATCH_ENABLE 0x00000002
#define NDIS_DEVICE_WAKE_ON_MAGIC_PACKET_ENABLE 0x00000004
/* Required Object IDs (OIDs) */
#define OID_GEN_SUPPORTED_LIST 0x00010101
#define OID_GEN_HARDWARE_STATUS 0x00010102
#define OID_GEN_MEDIA_SUPPORTED 0x00010103
#define OID_GEN_MEDIA_IN_USE 0x00010104
#define OID_GEN_MAXIMUM_LOOKAHEAD 0x00010105
#define OID_GEN_MAXIMUM_FRAME_SIZE 0x00010106
#define OID_GEN_LINK_SPEED 0x00010107
#define OID_GEN_TRANSMIT_BUFFER_SPACE 0x00010108
#define OID_GEN_RECEIVE_BUFFER_SPACE 0x00010109
#define OID_GEN_TRANSMIT_BLOCK_SIZE 0x0001010A
#define OID_GEN_RECEIVE_BLOCK_SIZE 0x0001010B
#define OID_GEN_VENDOR_ID 0x0001010C
#define OID_GEN_VENDOR_DESCRIPTION 0x0001010D
#define OID_GEN_CURRENT_PACKET_FILTER 0x0001010E
#define OID_GEN_CURRENT_LOOKAHEAD 0x0001010F
#define OID_GEN_DRIVER_VERSION 0x00010110
#define OID_GEN_MAXIMUM_TOTAL_SIZE 0x00010111
#define OID_GEN_PROTOCOL_OPTIONS 0x00010112
#define OID_GEN_MAC_OPTIONS 0x00010113
#define OID_GEN_MEDIA_CONNECT_STATUS 0x00010114
#define OID_GEN_MAXIMUM_SEND_PACKETS 0x00010115
#define OID_GEN_VENDOR_DRIVER_VERSION 0x00010116
#define OID_GEN_SUPPORTED_GUIDS 0x00010117
#define OID_GEN_NETWORK_LAYER_ADDRESSES 0x00010118
#define OID_GEN_TRANSPORT_HEADER_OFFSET 0x00010119
#define OID_GEN_MACHINE_NAME 0x0001021A
#define OID_GEN_RNDIS_CONFIG_PARAMETER 0x0001021B
#define OID_GEN_VLAN_ID 0x0001021C
/* Optional OIDs */
#define OID_GEN_MEDIA_CAPABILITIES 0x00010201
#define OID_GEN_PHYSICAL_MEDIUM 0x00010202
/* Required statistics OIDs */
#define OID_GEN_XMIT_OK 0x00020101
#define OID_GEN_RCV_OK 0x00020102
#define OID_GEN_XMIT_ERROR 0x00020103
#define OID_GEN_RCV_ERROR 0x00020104
#define OID_GEN_RCV_NO_BUFFER 0x00020105
/* Optional statistics OIDs */
#define OID_GEN_DIRECTED_BYTES_XMIT 0x00020201
#define OID_GEN_DIRECTED_FRAMES_XMIT 0x00020202
#define OID_GEN_MULTICAST_BYTES_XMIT 0x00020203
#define OID_GEN_MULTICAST_FRAMES_XMIT 0x00020204
#define OID_GEN_BROADCAST_BYTES_XMIT 0x00020205
#define OID_GEN_BROADCAST_FRAMES_XMIT 0x00020206
#define OID_GEN_DIRECTED_BYTES_RCV 0x00020207
#define OID_GEN_DIRECTED_FRAMES_RCV 0x00020208
#define OID_GEN_MULTICAST_BYTES_RCV 0x00020209
#define OID_GEN_MULTICAST_FRAMES_RCV 0x0002020A
#define OID_GEN_BROADCAST_BYTES_RCV 0x0002020B
#define OID_GEN_BROADCAST_FRAMES_RCV 0x0002020C
#define OID_GEN_RCV_CRC_ERROR 0x0002020D
#define OID_GEN_TRANSMIT_QUEUE_LENGTH 0x0002020E
#define OID_GEN_GET_TIME_CAPS 0x0002020F
#define OID_GEN_GET_NETCARD_TIME 0x00020210
#define OID_GEN_NETCARD_LOAD 0x00020211
#define OID_GEN_DEVICE_PROFILE 0x00020212
#define OID_GEN_INIT_TIME_MS 0x00020213
#define OID_GEN_RESET_COUNTS 0x00020214
#define OID_GEN_MEDIA_SENSE_COUNTS 0x00020215
#define OID_GEN_FRIENDLY_NAME 0x00020216
#define OID_GEN_MINIPORT_INFO 0x00020217
#define OID_GEN_RESET_VERIFY_PARAMETERS 0x00020218
/* IEEE 802.3 (Ethernet) OIDs */
#define NDIS_802_3_MAC_OPTION_PRIORITY 0x00000001
#define OID_802_3_PERMANENT_ADDRESS 0x01010101
#define OID_802_3_CURRENT_ADDRESS 0x01010102
#define OID_802_3_MULTICAST_LIST 0x01010103
#define OID_802_3_MAXIMUM_LIST_SIZE 0x01010104
#define OID_802_3_MAC_OPTIONS 0x01010105
#define OID_802_3_RCV_ERROR_ALIGNMENT 0x01020101
#define OID_802_3_XMIT_ONE_COLLISION 0x01020102
#define OID_802_3_XMIT_MORE_COLLISIONS 0x01020103
#define OID_802_3_XMIT_DEFERRED 0x01020201
#define OID_802_3_XMIT_MAX_COLLISIONS 0x01020202
#define OID_802_3_RCV_OVERRUN 0x01020203
#define OID_802_3_XMIT_UNDERRUN 0x01020204
#define OID_802_3_XMIT_HEARTBEAT_FAILURE 0x01020205
#define OID_802_3_XMIT_TIMES_CRS_LOST 0x01020206
#define OID_802_3_XMIT_LATE_COLLISIONS 0x01020207
/* Wireless LAN OIDs */
#define OID_802_11_BSSID 0x0D010101
/* Q S */
#define OID_802_11_SSID 0x0D010102
/* Q S */
#define OID_802_11_NETWORK_TYPE_IN_USE 0x0D010204
/* Q S */
#define OID_802_11_RSSI 0x0D010206
/* Q I */
#define OID_802_11_BSSID_LIST 0x0D010217
/* Q */
#define OID_802_11_BSSID_LIST_SCAN 0x0D01011A
/* S */
#define OID_802_11_INFRASTRUCTURE_MODE 0x0D010108
/* Q S */
#define OID_802_11_SUPPORTED_RATES 0x0D01020E
/* Q */
#define OID_802_11_CONFIGURATION 0x0D010211
/* Q S */
#define OID_802_11_ADD_WEP 0x0D010113
/* S */
#define OID_802_11_WEP_STATUS 0x0D01011B
/* Q S */
#define OID_802_11_REMOVE_WEP 0x0D010114
/* S */
#define OID_802_11_DISASSOCIATE 0x0D010115
/* S */
#define OID_802_11_AUTHENTICATION_MODE 0x0D010118
/* Q S */
#define OID_802_11_RELOAD_DEFAULTS 0x0D01011C
/* S */
/* OID_GEN_MINIPORT_INFO constants */
#define NDIS_MINIPORT_BUS_MASTER 0x00000001
#define NDIS_MINIPORT_WDM_DRIVER 0x00000002
#define NDIS_MINIPORT_SG_LIST 0x00000004
#define NDIS_MINIPORT_SUPPORTS_MEDIA_QUERY 0x00000008
#define NDIS_MINIPORT_INDICATES_PACKETS 0x00000010
#define NDIS_MINIPORT_IGNORE_PACKET_QUEUE 0x00000020
#define NDIS_MINIPORT_IGNORE_REQUEST_QUEUE 0x00000040
#define NDIS_MINIPORT_IGNORE_TOKEN_RING_ERRORS 0x00000080
#define NDIS_MINIPORT_INTERMEDIATE_DRIVER 0x00000100
#define NDIS_MINIPORT_IS_NDIS_5 0x00000200
#define NDIS_MINIPORT_IS_CO 0x00000400
#define NDIS_MINIPORT_DESERIALIZE 0x00000800
#define NDIS_MINIPORT_REQUIRES_MEDIA_POLLING 0x00001000
#define NDIS_MINIPORT_SUPPORTS_MEDIA_SENSE 0x00002000
#define NDIS_MINIPORT_NETBOOT_CARD 0x00004000
#define NDIS_MINIPORT_PM_SUPPORTED 0x00008000
#define NDIS_MINIPORT_SUPPORTS_MAC_ADDRESS_OVERWRITE 0x00010000
#define NDIS_MINIPORT_USES_SAFE_BUFFER_APIS 0x00020000
#define NDIS_MINIPORT_HIDDEN 0x00040000
#define NDIS_MINIPORT_SWENUM 0x00080000
#define NDIS_MINIPORT_SURPRISE_REMOVE_OK 0x00100000
#define NDIS_MINIPORT_NO_HALT_ON_SUSPEND 0x00200000
#define NDIS_MINIPORT_HARDWARE_DEVICE 0x00400000
#define NDIS_MINIPORT_SUPPORTS_CANCEL_SEND_PACKETS 0x00800000
#define NDIS_MINIPORT_64BITS_DMA 0x01000000
#define NDIS_MEDIUM_802_3 0x00000000
#define NDIS_MEDIUM_802_5 0x00000001
#define NDIS_MEDIUM_FDDI 0x00000002
#define NDIS_MEDIUM_WAN 0x00000003
#define NDIS_MEDIUM_LOCAL_TALK 0x00000004
#define NDIS_MEDIUM_DIX 0x00000005
#define NDIS_MEDIUM_ARCENT_RAW 0x00000006
#define NDIS_MEDIUM_ARCENT_878_2 0x00000007
#define NDIS_MEDIUM_ATM 0x00000008
#define NDIS_MEDIUM_WIRELESS_LAN 0x00000009
#define NDIS_MEDIUM_IRDA 0x0000000A
#define NDIS_MEDIUM_BPC 0x0000000B
#define NDIS_MEDIUM_CO_WAN 0x0000000C
#define NDIS_MEDIUM_1394 0x0000000D
#define NDIS_PACKET_TYPE_DIRECTED 0x00000001
#define NDIS_PACKET_TYPE_MULTICAST 0x00000002
#define NDIS_PACKET_TYPE_ALL_MULTICAST 0x00000004
#define NDIS_PACKET_TYPE_BROADCAST 0x00000008
#define NDIS_PACKET_TYPE_SOURCE_ROUTING 0x00000010
#define NDIS_PACKET_TYPE_PROMISCUOUS 0x00000020
#define NDIS_PACKET_TYPE_SMT 0x00000040
#define NDIS_PACKET_TYPE_ALL_LOCAL 0x00000080
#define NDIS_PACKET_TYPE_GROUP 0x00000100
#define NDIS_PACKET_TYPE_ALL_FUNCTIONAL 0x00000200
#define NDIS_PACKET_TYPE_FUNCTIONAL 0x00000400
#define NDIS_PACKET_TYPE_MAC_FRAME 0x00000800
#define NDIS_MEDIA_STATE_CONNECTED 0x00000000
#define NDIS_MEDIA_STATE_DISCONNECTED 0x00000001
#define NDIS_MAC_OPTION_COPY_LOOKAHEAD_DATA 0x00000001
#define NDIS_MAC_OPTION_RECEIVE_SERIALIZED 0x00000002
#define NDIS_MAC_OPTION_TRANSFERS_NOT_PEND 0x00000004
#define NDIS_MAC_OPTION_NO_LOOPBACK 0x00000008
#define NDIS_MAC_OPTION_FULL_DUPLEX 0x00000010
#define NDIS_MAC_OPTION_EOTX_INDICATION 0x00000020
#define NDIS_MAC_OPTION_8021P_PRIORITY 0x00000040
#define NDIS_MAC_OPTION_RESERVED 0x80000000
#endif
/* __NDIS_H__ */
components/drivers/usb/usbdevice/class/rndis.c
0 → 100644
浏览文件 @
3044461b
此差异已折叠。
点击以展开。
components/drivers/usb/usbdevice/class/rndis.h
0 → 100644
浏览文件 @
3044461b
/*
* File : rndis.h
* This file is part of RT-Thread RTOS
* COPYRIGHT (C) 2012, RT-Thread Development Team
*
* The license and distribution terms for this file may be
* found in the file LICENSE in this distribution or at
* http://www.rt-thread.org/license/LICENSE
*
* Change Logs:
* Date Author Notes
* 2012-12-24 heyuanjie87 first version
*/
#ifndef __RNDIS_H__
#define __RNDIS_H__
#include <rtthread.h>
#define USB_ETH_MTU 1500+14
#define RNDIS_MESSAGE_BUFFER_SIZE 128
#define RESPONSE_AVAILABLE 0x00000001
/* Remote NDIS version numbers */
#define RNDIS_MAJOR_VERSION 1
#define RNDIS_MINOR_VERSION 0
/* common status values */
#define RNDIS_STATUS_SUCCESS 0X00000000
#define RNDIS_STATUS_FAILURE 0XC0000001
#define RNDIS_STATUS_INVALID_DATA 0XC0010015
#define RNDIS_STATUS_NOT_SUPPORTED 0XC00000BB
#define RNDIS_STATUS_MEDIA_CONNECT 0X4001000B
#define RNDIS_STATUS_MEDIA_DISCONNECT 0X4001000C
/* Remote NDIS message types */
#define REMOTE_NDIS_PACKET_MSG 0x00000001
#define REMOTE_NDIS_INITIALIZE_MSG 0X00000002
#define REMOTE_NDIS_HALT_MSG 0X00000003
#define REMOTE_NDIS_QUERY_MSG 0X00000004
#define REMOTE_NDIS_SET_MSG 0X00000005
#define REMOTE_NDIS_RESET_MSG 0X00000006
#define REMOTE_NDIS_INDICATE_STATUS_MSG 0X00000007
#define REMOTE_NDIS_KEEPALIVE_MSG 0X00000008
#define REMOTE_NDIS_INITIALIZE_CMPLT 0X80000002
#define REMOTE_NDIS_QUERY_CMPLT 0X80000004
#define REMOTE_NDIS_SET_CMPLT 0X80000005
#define REMOTE_NDIS_RESET_CMPLT 0X80000006
#define REMOTE_NDIS_KEEPALIVE_CMPLT 0X80000008
/* device flags */
#define RNDIS_DF_CONNECTIONLESS 0x00000001
#define RNDIS_DF_CONNECTION_ORIENTED 0x00000002
/* mediums */
#define RNDIS_MEDIUM_802_3 0x00000000
struct
ucls_rndis
{
uep_t
notify
;
rt_uint32_t
filter
;
rt_bool_t
header
;
rt_uint8_t
rndis_state
;
rt_uint8_t
media_state
;
rt_uint8_t
ethaddr
[
6
];
};
/* Remote NDIS generic message type */
struct
rndis_gen_msg
{
rt_uint32_t
MessageType
;
rt_uint32_t
MessageLength
;
};
typedef
struct
rndis_gen_msg
*
rndis_gen_msg_t
;
struct
rndis_packet_msg
{
rt_uint32_t
MessageType
;
rt_uint32_t
MessageLength
;
rt_uint32_t
DataOffset
;
rt_uint32_t
DataLength
;
rt_uint32_t
OOBDataOffset
;
rt_uint32_t
OOBDataLength
;
rt_uint32_t
NumOOBDataElements
;
rt_uint32_t
PerPacketInfoOffset
;
rt_uint32_t
PerPacketInfoLength
;
rt_uint32_t
VcHandle
;
rt_uint32_t
Reserved
;
};
typedef
struct
rndis_packet_msg
*
rndis_packet_msg_t
;
/* Remote NDIS Initialize Message */
struct
rndis_init_msg
{
rt_uint32_t
MessageType
;
rt_uint32_t
MessageLength
;
rt_uint32_t
RequestId
;
rt_uint32_t
MajorVersion
;
rt_uint32_t
MinorVersion
;
rt_uint32_t
MaxTransferSize
;
};
typedef
struct
rndis_init_msg
*
rndis_init_msg_t
;
/* Response */
struct
rndis_init_cmplt
{
rt_uint32_t
MessageType
;
rt_uint32_t
MessageLength
;
rt_uint32_t
RequestId
;
rt_uint32_t
Status
;
rt_uint32_t
MajorVersion
;
rt_uint32_t
MinorVersion
;
rt_uint32_t
DeviceFlags
;
rt_uint32_t
Medium
;
rt_uint32_t
MaxPacketsPerTransfer
;
rt_uint32_t
MaxTransferSize
;
rt_uint32_t
PacketAlignmentFactor
;
rt_uint32_t
AfListOffset
;
rt_uint32_t
AfListSize
;
};
typedef
struct
rndis_init_cmplt
*
rndis_init_cmplt_t
;
/* Remote NDIS Halt Message */
struct
rndis_halt_msg
{
rt_uint32_t
MessageType
;
rt_uint32_t
MessageLength
;
rt_uint32_t
RequestId
;
};
/* Remote NDIS Query Message */
struct
rndis_query_msg
{
rt_uint32_t
MessageType
;
rt_uint32_t
MessageLength
;
rt_uint32_t
RequestId
;
rt_uint32_t
Oid
;
rt_uint32_t
InformationBufferLength
;
rt_uint32_t
InformationBufferOffset
;
rt_uint32_t
DeviceVcHandle
;
};
typedef
struct
rndis_query_msg
*
rndis_query_msg_t
;
/* Response */
struct
rndis_query_cmplt
{
rt_uint32_t
MessageType
;
rt_uint32_t
MessageLength
;
rt_uint32_t
RequestId
;
rt_uint32_t
Status
;
rt_uint32_t
InformationBufferLength
;
rt_uint32_t
InformationBufferOffset
;
};
typedef
struct
rndis_query_cmplt
*
rndis_query_cmplt_t
;
/* Remote NDIS Set Message */
struct
rndis_set_msg
{
rt_uint32_t
MessageType
;
rt_uint32_t
MessageLength
;
rt_uint32_t
RequestId
;
rt_uint32_t
Oid
;
rt_uint32_t
InformationBufferLength
;
rt_uint32_t
InformationBufferOffset
;
rt_uint32_t
DeviceVcHandle
;
};
typedef
struct
rndis_set_msg
*
rndis_set_msg_t
;
/* Response */
struct
rndis_set_cmplt
{
rt_uint32_t
MessageType
;
rt_uint32_t
MessageLength
;
rt_uint32_t
RequestId
;
rt_uint32_t
Status
;
};
typedef
struct
rndis_set_cmplt
*
rndis_set_cmplt_t
;
/* Remote NDIS Soft Reset Message */
struct
rndis_reset_msg
{
rt_uint32_t
MessageType
;
rt_uint32_t
MessageLength
;
rt_uint32_t
Reserved
;
};
/* Remote NDIS Indicate Status Message */
struct
rndis_indicate_status_msg
{
rt_uint32_t
MessageType
;
rt_uint32_t
MessageLength
;
rt_uint32_t
Status
;
rt_uint32_t
StatusBufferLength
;
rt_uint32_t
StatusBufferOffset
;
};
typedef
struct
rndis_indicate_status_msg
*
rndis_indicate_status_msg_t
;
struct
rndis_keepalive_msg
{
rt_uint32_t
MessageType
;
rt_uint32_t
MessageLength
;
rt_uint32_t
RequestID
;
};
typedef
struct
rndis_keepalive_msg
*
rndis_keepalive_msg_t
;
/* Response: */
struct
rndis_keepalive_cmplt
{
rt_uint32_t
MessageType
;
rt_uint32_t
MessageLength
;
rt_uint32_t
RequestId
;
rt_uint32_t
Status
;
};
typedef
struct
rndis_keepalive_cmplt
*
rndis_keepalive_cmplt_t
;
#endif
components/drivers/usb/usbdevice/core/core.c
浏览文件 @
3044461b
...
@@ -871,6 +871,10 @@ static rt_err_t _ep0_out_notify(udevice_t device, struct ep_msg* ep_msg)
...
@@ -871,6 +871,10 @@ static rt_err_t _ep0_out_notify(udevice_t device, struct ep_msg* ep_msg)
ep0
->
rx_indicate
(
device
,
size
);
ep0
->
rx_indicate
(
device
,
size
);
}
}
}
}
else
{
rt_usbd_ep0_read
(
device
,
ep0
->
request
.
buffer
,
ep0
->
request
.
remain_size
,
ep0
->
rx_indicate
);
}
return
RT_EOK
;
return
RT_EOK
;
}
}
...
@@ -2054,18 +2058,26 @@ rt_size_t rt_usbd_ep0_read(udevice_t device, void *buffer, rt_size_t size,
...
@@ -2054,18 +2058,26 @@ rt_size_t rt_usbd_ep0_read(udevice_t device, void *buffer, rt_size_t size,
rt_err_t
(
*
rx_ind
)(
udevice_t
device
,
rt_size_t
size
))
rt_err_t
(
*
rx_ind
)(
udevice_t
device
,
rt_size_t
size
))
{
{
uep_t
ep0
;
uep_t
ep0
;
rt_size_t
read_size
=
0
;
RT_ASSERT
(
device
!=
RT_NULL
);
RT_ASSERT
(
device
!=
RT_NULL
);
RT_ASSERT
(
device
->
dcd
!=
RT_NULL
);
RT_ASSERT
(
device
->
dcd
!=
RT_NULL
);
RT_ASSERT
(
buffer
!=
RT_NULL
);
RT_ASSERT
(
buffer
!=
RT_NULL
);
ep0
=
&
device
->
dcd
->
ep0
;
ep0
=
&
device
->
dcd
->
ep0
;
ep0
->
request
.
size
=
size
;
ep0
->
request
.
buffer
=
buffer
;
ep0
->
request
.
buffer
=
buffer
;
ep0
->
request
.
remain_size
=
size
;
ep0
->
request
.
remain_size
=
size
;
ep0
->
rx_indicate
=
rx_ind
;
ep0
->
rx_indicate
=
rx_ind
;
if
(
size
>=
ep0
->
id
->
maxpacket
)
{
read_size
=
ep0
->
id
->
maxpacket
;
}
else
{
read_size
=
size
;
}
device
->
dcd
->
stage
=
STAGE_DOUT
;
device
->
dcd
->
stage
=
STAGE_DOUT
;
dcd_ep_read_prepare
(
device
->
dcd
,
EP0_OUT_ADDR
,
buffer
,
size
);
dcd_ep_read_prepare
(
device
->
dcd
,
EP0_OUT_ADDR
,
buffer
,
read_
size
);
return
size
;
return
size
;
}
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录