mirror of
https://github.com/RT-Thread/rt-thread.git
synced 2026-11-09 20:45:41 +08:00
Merge branch 'pyconfig' of https://github.com/weety/rt-thread into pyconfig
This commit is contained in:
commit
d344ff5a9e
21 files changed
+1083
-544
No files matched your search
@@ -79,6 +79,7 @@ env:
|
||||
- RTT_BSP='stm32f429-disco' RTT_TOOL_CHAIN='sourcery-arm'
|
||||
- RTT_BSP='stm32l475-iot-disco' RTT_TOOL_CHAIN='sourcery-arm'
|
||||
- RTT_BSP='stm32l476-nucleo' RTT_TOOL_CHAIN='sourcery-arm'
|
||||
- RTT_BSP='stm32h743-nucleo' RTT_TOOL_CHAIN='sourcery-arm'
|
||||
# - RTT_BSP='taihu' RTT_TOOL_CHAIN='sourcery-ppc'
|
||||
# - RTT_BSP='upd70f3454' # iar
|
||||
# - RTT_BSP='x86' # x86
|
||||
|
||||
@@ -1,3 +1,77 @@
|
||||
# RT-Thread 3.1.0 Change Log
|
||||
|
||||
## Kernel
|
||||
|
||||
* The main thread priority can be configured by Kconfig;
|
||||
* Add the checking of kernel object type, which can effectively avoid the problem of continuing to use kernel objects after they are destroyed.
|
||||
* Add the idle hook list to mount multiple idle hook, and can be configured by Kconfig.
|
||||
* Add the device_ops operation set to reduce the footprint of device object.
|
||||
* Remove the special memory operation in application module when using SLAB memory management algorithm.
|
||||
* Move application module from the kernel to `libc/libdl`.
|
||||
* Enhance the debug information output of `rtdbg.h` file.
|
||||
* In Keil/IAR tool chain, the `RT_USED` is used to keep symbols and avoid to add more argument or section in link phrase.
|
||||
|
||||
## Components
|
||||
|
||||
* Remove all of external codes, which will be moved to packages in the future.
|
||||
* Add initialization flag for shell, file system, network protocol stack etc to prevent repeated initialization;
|
||||
* Enable the long file name feature of ELM FatFs in default.
|
||||
* Change DFS FD to dynamic allocation mode. The maximum number of allocation is still DFS_FD_MAX.
|
||||
* Add dfs_fdtable_get() function to get different fdtable;
|
||||
* Add more DFS error messages, and provide easy to understand log when abnormal.
|
||||
* Fix the disk format issue of FatFs file system when multiple FatFs file systems are mounted.
|
||||
* Remove the folder enter feature in msh when input a folder name;
|
||||
* Add `int finsh_set_prompt (const char * prompt);` routine for setting a custom prompt for msh;
|
||||
* Add the VBUS configuration in Kconfig.
|
||||
* Move the application module from kernel to `libc/libdl` component;
|
||||
* Rewrite most of the management code for application module: replace the original object container with the object list; split the symbol resolution code into different processor architecture etc.
|
||||
* Update the application module chapter in the programming guide, and change it into dynamic module chapter.
|
||||
* Overwrite the exit() function of newlib to take over the processing of exit for a dlmodule.
|
||||
* Add SAL (Socket Abstraction Layer) component for adapting different protocol stacks and network implementations, and update the relevant sections of the programming guide;
|
||||
* Add AT component, including AT client, AT server and AT Socket function;
|
||||
* Remove the poll/select API of DFS_NET and move them to SAL component.
|
||||
* Remove the strong dependence of lwIP component for DFS_NET and replace it with Kconfig configuration in SAL.
|
||||
* Add the DHCP server function with lwIP raw API;
|
||||
* Fix the wait queue none-initialization issue in socket allocation of lwIP.
|
||||
* When a thread is about to block on a wait queue, fix the wake up issue for `rt_wqueue_wakeup' is executed to wake up that thread;
|
||||
* Add the PWM driver framework;
|
||||
* Fix the sdio_irq_wakeup release issue in the MMC/SD framework.
|
||||
* Fix the problem of DMA handling in the serial driver framework.
|
||||
* Update SFUD to v1.0.6 version;
|
||||
|
||||
## BSP
|
||||
|
||||
* Fix the SP issue when hard fault occurs for ARM Cortex-M arch;
|
||||
* Add C-Sky CK802 architecture porting;
|
||||
* Add Realtek amebaz WiFi SOC (rtl8710bn) BSP;
|
||||
* Update imxrt1052-evk firmware SDK to support B model chip.
|
||||
* Fix the copying packets issue in the Godson 1C BSP when sending message.
|
||||
* The Nuvoton m05x/m451 BSP are changed into the main() entry mode, and supports GCC compilation;
|
||||
* Fix the inconsistency issue between touch range and LCD resolution in qemu-vexpress-a9.
|
||||
* Add qemu-vexpress-gemini BSP for dual core A9 (RT-Thread + Linux) arch;
|
||||
* Add the basic porting for Raspberry Pi 2B ;
|
||||
* Add CAN and PWM drivers in stm32f4xx-HAL BSP;
|
||||
* Optimize the GPIO driver in stm32f4xx-HAL BSP;
|
||||
* Add UART3 driver in stm32f4xx-HAL BSP;
|
||||
* Fix the I2C1 driver clock in stm32f10x BSP and WDG control interface.
|
||||
* Add rt_hw_us_delay interface in stm32f10x-HAL BSP;
|
||||
* Optimize the GPIO driver in stm32f10x-HAL BSP;
|
||||
* Add GPIO driver and RTC driver in stm32f107 BSP;
|
||||
|
||||
## Tool
|
||||
|
||||
* ENV update to v1.0.0 final version.
|
||||
* ENV added the China mirror for software package, which can speed up the software package download, update etc.
|
||||
* Fix the ENV known bugs and enhance the interaction with users.
|
||||
* Add building script to detect the version of GCC & newlib;
|
||||
* Add building script to detect the version of armcc;
|
||||
* Add `scons --dist` function to make distribution for a BSP.
|
||||
* Add `scons - dist - strip' function to make a minimal files of distribution for a BSP.
|
||||
* Add `ASFLAGS/LOCAL_ASFLAGS' parameters for defined a group and pass them to assembler;
|
||||
* Fix some errors in building script under the Linux environment.
|
||||
* Add the C-Sky CDK IDE project generation.
|
||||
* Add `scons --target=vsc -s` to generate friendly configuration files for VSCode;
|
||||
|
||||
# RT-Thread 3.0.4 Change Log
|
||||
|
||||
## Kernel
|
||||
|
||||
@@ -44,7 +44,7 @@ if PLATFORM == 'gcc':
|
||||
OBJDUMP = PREFIX + 'objdump'
|
||||
OBJCPY = PREFIX + 'objcopy'
|
||||
|
||||
DEVICE = ' -mcpu=cortex-m0+ -mthumb -ffunction-sections -fdata-sections'
|
||||
DEVICE = ' -mcpu=cortex-m0plus -mthumb -ffunction-sections -fdata-sections'
|
||||
CFLAGS = DEVICE
|
||||
AFLAGS = ' -c' + DEVICE + ' -x assembler-with-cpp'
|
||||
LFLAGS = DEVICE + ' -Wl,--gc-sections,-Map=rtthread-MKL15Z128.map,-cref,-u,Reset_Handler -T MKL15Z128_FLASH.ld'
|
||||
|
||||
File diff suppressed because it is too large.
Load diff
@@ -0,0 +1,25 @@
|
||||
mainmenu "RT-Thread Configuration"
|
||||
|
||||
config $BSP_DIR
|
||||
string
|
||||
option env="BSP_ROOT"
|
||||
default "."
|
||||
|
||||
config $RTT_DIR
|
||||
string
|
||||
option env="RTT_ROOT"
|
||||
default "../.."
|
||||
|
||||
config $PKGS_DIR
|
||||
string
|
||||
option env="PKGS_ROOT"
|
||||
default "packages"
|
||||
|
||||
source "$RTT_DIR/Kconfig"
|
||||
source "$PKGS_DIR/Kconfig"
|
||||
|
||||
config RT_USING_UART1
|
||||
bool "Using uart1"
|
||||
select RT_USING_SERIAL
|
||||
default y
|
||||
|
||||
File renamed without changes.
File renamed without changes.
@@ -23,35 +23,10 @@
|
||||
* 2014-04-27 Bernard make code cleanup.
|
||||
* 2017-08-25 LongfeiMa transplantation for stm32h7xx
|
||||
*/
|
||||
|
||||
#include <rthw.h>
|
||||
#include <rtthread.h>
|
||||
|
||||
#include "board.h"
|
||||
#include <stm32h7xx.h>
|
||||
|
||||
#include "lan8742a.h"
|
||||
|
||||
#include "netif/ethernetif.h"
|
||||
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
int main(void)
|
||||
{
|
||||
// rt_kprintf("here we are in the main \r\n");
|
||||
/* LwIP Initialization */
|
||||
#ifdef RT_USING_LWIP
|
||||
{
|
||||
// extern void lwip_sys_init(void);
|
||||
// eth_system_device_init();
|
||||
|
||||
/* register ethernetif device */
|
||||
// rt_hw_lan8742a_init();
|
||||
|
||||
/* init lwip system */
|
||||
// lwip_sys_init();
|
||||
rt_kprintf("TCP/IP initialized!\n");
|
||||
}
|
||||
#endif
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -1,8 +1,17 @@
|
||||
from building import *
|
||||
|
||||
cwd = GetCurrentDir()
|
||||
src = Glob('*.c')
|
||||
src = Split("""
|
||||
board.c
|
||||
stm32h7xx_it.c
|
||||
drv_mpu.c
|
||||
""")
|
||||
|
||||
if GetDepend(['RT_USING_SERIAL']):
|
||||
src += ['drv_usart.c']
|
||||
|
||||
if GetDepend('RT_USING_LWIP'):
|
||||
src += ['lan8742a.c']
|
||||
|
||||
CPPPATH = [cwd]
|
||||
|
||||
|
||||
+261
-211
File diff suppressed because it is too large.
Load diff
@@ -43,7 +43,7 @@ if PLATFORM == 'gcc':
|
||||
STRIP = PREFIX + 'strip'
|
||||
|
||||
DEVICE = ' -mcpu=cortex-m7 -mthumb -mfpu=fpv4-sp-d16 -mfloat-abi=softfp -ffunction-sections -fdata-sections'
|
||||
CFLAGS = DEVICE + ' -g -Wall -DSTM32H743xx -DUSE_HAL_DRIVER -D__ASSEMBLY__ -D__FPU_USED -eentry'
|
||||
CFLAGS = DEVICE + ' -g -Wall -DSTM32H743xx -DUSE_HAL_DRIVER -D__ASSEMBLY__ -eentry'
|
||||
AFLAGS = ' -c' + DEVICE + ' -x assembler-with-cpp -Wa,-mimplicit-it=thumb '
|
||||
LFLAGS = DEVICE + ' -lm -lgcc -lc' + ' -nostartfiles -Wl,--gc-sections,-Map=rtthread_stm32h7xx.map,-cref,-u,Reset_Handler -T rtthread-stm32h7xx.ld'
|
||||
|
||||
|
||||
@@ -133,83 +133,103 @@ const static struct ucdc_comm_descriptor _comm_desc =
|
||||
{
|
||||
#ifdef RT_USB_DEVICE_COMPOSITE
|
||||
/* Interface Association Descriptor */
|
||||
USB_DESC_LENGTH_IAD,
|
||||
USB_DESC_TYPE_IAD,
|
||||
USB_DYNAMIC,
|
||||
0x02,
|
||||
USB_CDC_CLASS_COMM,
|
||||
USB_CDC_SUBCLASS_ACM,
|
||||
USB_CDC_PROTOCOL_V25TER,
|
||||
0x00,
|
||||
{
|
||||
USB_DESC_LENGTH_IAD,
|
||||
USB_DESC_TYPE_IAD,
|
||||
USB_DYNAMIC,
|
||||
0x02,
|
||||
USB_CDC_CLASS_COMM,
|
||||
USB_CDC_SUBCLASS_ACM,
|
||||
USB_CDC_PROTOCOL_V25TER,
|
||||
0x00,
|
||||
},
|
||||
#endif
|
||||
/* Interface Descriptor */
|
||||
USB_DESC_LENGTH_INTERFACE,
|
||||
USB_DESC_TYPE_INTERFACE,
|
||||
USB_DYNAMIC,
|
||||
0x00,
|
||||
0x01,
|
||||
USB_CDC_CLASS_COMM,
|
||||
USB_CDC_SUBCLASS_ACM,
|
||||
USB_CDC_PROTOCOL_V25TER,
|
||||
0x00,
|
||||
{
|
||||
USB_DESC_LENGTH_INTERFACE,
|
||||
USB_DESC_TYPE_INTERFACE,
|
||||
USB_DYNAMIC,
|
||||
0x00,
|
||||
0x01,
|
||||
USB_CDC_CLASS_COMM,
|
||||
USB_CDC_SUBCLASS_ACM,
|
||||
USB_CDC_PROTOCOL_V25TER,
|
||||
0x00,
|
||||
},
|
||||
/* Header Functional Descriptor */
|
||||
0x05,
|
||||
USB_CDC_CS_INTERFACE,
|
||||
USB_CDC_SCS_HEADER,
|
||||
0x0110,
|
||||
{
|
||||
0x05,
|
||||
USB_CDC_CS_INTERFACE,
|
||||
USB_CDC_SCS_HEADER,
|
||||
0x0110,
|
||||
},
|
||||
/* Call Management Functional Descriptor */
|
||||
0x05,
|
||||
USB_CDC_CS_INTERFACE,
|
||||
USB_CDC_SCS_CALL_MGMT,
|
||||
0x00,
|
||||
USB_DYNAMIC,
|
||||
{
|
||||
0x05,
|
||||
USB_CDC_CS_INTERFACE,
|
||||
USB_CDC_SCS_CALL_MGMT,
|
||||
0x00,
|
||||
USB_DYNAMIC,
|
||||
},
|
||||
/* Abstract Control Management Functional Descriptor */
|
||||
0x04,
|
||||
USB_CDC_CS_INTERFACE,
|
||||
USB_CDC_SCS_ACM,
|
||||
0x02,
|
||||
{
|
||||
0x04,
|
||||
USB_CDC_CS_INTERFACE,
|
||||
USB_CDC_SCS_ACM,
|
||||
0x02,
|
||||
},
|
||||
/* Union Functional Descriptor */
|
||||
0x05,
|
||||
USB_CDC_CS_INTERFACE,
|
||||
USB_CDC_SCS_UNION,
|
||||
USB_DYNAMIC,
|
||||
USB_DYNAMIC,
|
||||
{
|
||||
0x05,
|
||||
USB_CDC_CS_INTERFACE,
|
||||
USB_CDC_SCS_UNION,
|
||||
USB_DYNAMIC,
|
||||
USB_DYNAMIC,
|
||||
},
|
||||
/* Endpoint Descriptor */
|
||||
USB_DESC_LENGTH_ENDPOINT,
|
||||
USB_DESC_TYPE_ENDPOINT,
|
||||
USB_DYNAMIC | USB_DIR_IN,
|
||||
USB_EP_ATTR_INT,
|
||||
0x08,
|
||||
0xFF,
|
||||
{
|
||||
USB_DESC_LENGTH_ENDPOINT,
|
||||
USB_DESC_TYPE_ENDPOINT,
|
||||
USB_DYNAMIC | USB_DIR_IN,
|
||||
USB_EP_ATTR_INT,
|
||||
0x08,
|
||||
0xFF,
|
||||
},
|
||||
};
|
||||
|
||||
/* data interface descriptor */
|
||||
const static struct ucdc_data_descriptor _data_desc =
|
||||
{
|
||||
/* interface descriptor */
|
||||
USB_DESC_LENGTH_INTERFACE,
|
||||
USB_DESC_TYPE_INTERFACE,
|
||||
USB_DYNAMIC,
|
||||
0x00,
|
||||
0x02,
|
||||
USB_CDC_CLASS_DATA,
|
||||
0x00,
|
||||
0x00,
|
||||
0x00,
|
||||
{
|
||||
USB_DESC_LENGTH_INTERFACE,
|
||||
USB_DESC_TYPE_INTERFACE,
|
||||
USB_DYNAMIC,
|
||||
0x00,
|
||||
0x02,
|
||||
USB_CDC_CLASS_DATA,
|
||||
0x00,
|
||||
0x00,
|
||||
0x00,
|
||||
},
|
||||
/* endpoint, bulk out */
|
||||
USB_DESC_LENGTH_ENDPOINT,
|
||||
USB_DESC_TYPE_ENDPOINT,
|
||||
USB_DYNAMIC | USB_DIR_OUT,
|
||||
USB_EP_ATTR_BULK,
|
||||
USB_CDC_BUFSIZE,
|
||||
0x00,
|
||||
{
|
||||
USB_DESC_LENGTH_ENDPOINT,
|
||||
USB_DESC_TYPE_ENDPOINT,
|
||||
USB_DYNAMIC | USB_DIR_OUT,
|
||||
USB_EP_ATTR_BULK,
|
||||
USB_CDC_BUFSIZE,
|
||||
0x00,
|
||||
},
|
||||
/* endpoint, bulk in */
|
||||
USB_DESC_LENGTH_ENDPOINT,
|
||||
USB_DESC_TYPE_ENDPOINT,
|
||||
USB_DYNAMIC | USB_DIR_IN,
|
||||
USB_EP_ATTR_BULK,
|
||||
USB_CDC_BUFSIZE,
|
||||
0x00,
|
||||
{
|
||||
USB_DESC_LENGTH_ENDPOINT,
|
||||
USB_DESC_TYPE_ENDPOINT,
|
||||
USB_DYNAMIC | USB_DIR_IN,
|
||||
USB_EP_ATTR_BULK,
|
||||
USB_CDC_BUFSIZE,
|
||||
0x00,
|
||||
},
|
||||
};
|
||||
|
||||
static char serno[_SER_NO_LEN + 1] = {'\0'};
|
||||
|
||||
@@ -80,52 +80,64 @@ const static struct ucdc_eth_descriptor _comm_desc =
|
||||
{
|
||||
#ifdef RT_USB_DEVICE_COMPOSITE
|
||||
/* Interface Association Descriptor */
|
||||
USB_DESC_LENGTH_IAD,
|
||||
USB_DESC_TYPE_IAD,
|
||||
USB_DYNAMIC,
|
||||
0x02,
|
||||
USB_CDC_CLASS_COMM,
|
||||
USB_CDC_SUBCLASS_ETH,
|
||||
USB_CDC_PROTOCOL_NONE,
|
||||
0x00,
|
||||
{
|
||||
USB_DESC_LENGTH_IAD,
|
||||
USB_DESC_TYPE_IAD,
|
||||
USB_DYNAMIC,
|
||||
0x02,
|
||||
USB_CDC_CLASS_COMM,
|
||||
USB_CDC_SUBCLASS_ETH,
|
||||
USB_CDC_PROTOCOL_NONE,
|
||||
0x00,
|
||||
},
|
||||
#endif
|
||||
/* Interface Descriptor */
|
||||
USB_DESC_LENGTH_INTERFACE,
|
||||
USB_DESC_TYPE_INTERFACE,
|
||||
USB_DYNAMIC,
|
||||
0x00,
|
||||
0x01,
|
||||
USB_CDC_CLASS_COMM,
|
||||
USB_CDC_SUBCLASS_ETH,
|
||||
USB_CDC_PROTOCOL_NONE,
|
||||
0x00,
|
||||
{
|
||||
USB_DESC_LENGTH_INTERFACE,
|
||||
USB_DESC_TYPE_INTERFACE,
|
||||
USB_DYNAMIC,
|
||||
0x00,
|
||||
0x01,
|
||||
USB_CDC_CLASS_COMM,
|
||||
USB_CDC_SUBCLASS_ETH,
|
||||
USB_CDC_PROTOCOL_NONE,
|
||||
0x00,
|
||||
},
|
||||
/* Header Functional Descriptor */
|
||||
sizeof(struct ucdc_header_descriptor),
|
||||
USB_CDC_CS_INTERFACE,
|
||||
USB_CDC_SCS_HEADER,
|
||||
0x0110,
|
||||
{
|
||||
sizeof(struct ucdc_header_descriptor),
|
||||
USB_CDC_CS_INTERFACE,
|
||||
USB_CDC_SCS_HEADER,
|
||||
0x0110,
|
||||
},
|
||||
/* Union Functional Descriptor */
|
||||
sizeof(struct ucdc_union_descriptor),
|
||||
USB_CDC_CS_INTERFACE,
|
||||
USB_CDC_SCS_UNION,
|
||||
USB_DYNAMIC,
|
||||
USB_DYNAMIC,
|
||||
{
|
||||
sizeof(struct ucdc_union_descriptor),
|
||||
USB_CDC_CS_INTERFACE,
|
||||
USB_CDC_SCS_UNION,
|
||||
USB_DYNAMIC,
|
||||
USB_DYNAMIC,
|
||||
},
|
||||
/* Abstract Control Management Functional Descriptor */
|
||||
sizeof(struct ucdc_enet_descriptor),
|
||||
USB_CDC_CS_INTERFACE,
|
||||
USB_CDC_SCS_ETH,
|
||||
USB_STRING_SERIAL_INDEX,
|
||||
{0,0,0,0},
|
||||
USB_ETH_MTU,
|
||||
0x00,
|
||||
0x00,
|
||||
{
|
||||
sizeof(struct ucdc_enet_descriptor),
|
||||
USB_CDC_CS_INTERFACE,
|
||||
USB_CDC_SCS_ETH,
|
||||
USB_STRING_SERIAL_INDEX,
|
||||
{0,0,0,0},
|
||||
USB_ETH_MTU,
|
||||
0x00,
|
||||
0x00,
|
||||
},
|
||||
/* Endpoint Descriptor */
|
||||
USB_DESC_LENGTH_ENDPOINT,
|
||||
USB_DESC_TYPE_ENDPOINT,
|
||||
USB_DIR_IN | USB_DYNAMIC,
|
||||
USB_EP_ATTR_INT,
|
||||
0x08,
|
||||
0xFF,
|
||||
{
|
||||
USB_DESC_LENGTH_ENDPOINT,
|
||||
USB_DESC_TYPE_ENDPOINT,
|
||||
USB_DIR_IN | USB_DYNAMIC,
|
||||
USB_EP_ATTR_INT,
|
||||
0x08,
|
||||
0xFF,
|
||||
},
|
||||
};
|
||||
|
||||
/* data interface descriptor */
|
||||
@@ -133,29 +145,35 @@ ALIGN(4)
|
||||
const static struct ucdc_data_descriptor _data_desc =
|
||||
{
|
||||
/* interface descriptor */
|
||||
USB_DESC_LENGTH_INTERFACE,
|
||||
USB_DESC_TYPE_INTERFACE,
|
||||
USB_DYNAMIC,
|
||||
0x00,
|
||||
0x02,
|
||||
USB_CDC_CLASS_DATA,
|
||||
USB_CDC_SUBCLASS_ETH,
|
||||
0x00,
|
||||
0x00,
|
||||
{
|
||||
USB_DESC_LENGTH_INTERFACE,
|
||||
USB_DESC_TYPE_INTERFACE,
|
||||
USB_DYNAMIC,
|
||||
0x00,
|
||||
0x02,
|
||||
USB_CDC_CLASS_DATA,
|
||||
USB_CDC_SUBCLASS_ETH,
|
||||
0x00,
|
||||
0x00,
|
||||
},
|
||||
/* endpoint, bulk out */
|
||||
USB_DESC_LENGTH_ENDPOINT,
|
||||
USB_DESC_TYPE_ENDPOINT,
|
||||
USB_DIR_OUT | USB_DYNAMIC,
|
||||
USB_EP_ATTR_BULK,
|
||||
USB_DYNAMIC,
|
||||
0x00,
|
||||
{
|
||||
USB_DESC_LENGTH_ENDPOINT,
|
||||
USB_DESC_TYPE_ENDPOINT,
|
||||
USB_DIR_OUT | USB_DYNAMIC,
|
||||
USB_EP_ATTR_BULK,
|
||||
USB_DYNAMIC,
|
||||
0x00,
|
||||
},
|
||||
/* endpoint, bulk in */
|
||||
USB_DESC_LENGTH_ENDPOINT,
|
||||
USB_DESC_TYPE_ENDPOINT,
|
||||
USB_DYNAMIC | USB_DIR_IN,
|
||||
USB_EP_ATTR_BULK,
|
||||
USB_DYNAMIC,
|
||||
0x00,
|
||||
{
|
||||
USB_DESC_LENGTH_ENDPOINT,
|
||||
USB_DESC_TYPE_ENDPOINT,
|
||||
USB_DYNAMIC | USB_DIR_IN,
|
||||
USB_EP_ATTR_BULK,
|
||||
USB_DYNAMIC,
|
||||
0x00,
|
||||
},
|
||||
};
|
||||
|
||||
ALIGN(4)
|
||||
|
||||
@@ -275,71 +275,85 @@ const static struct uhid_comm_descriptor _hid_comm_desc =
|
||||
{
|
||||
#ifdef RT_USB_DEVICE_COMPOSITE
|
||||
/* Interface Association Descriptor */
|
||||
USB_DESC_LENGTH_IAD,
|
||||
USB_DESC_TYPE_IAD,
|
||||
USB_DYNAMIC,
|
||||
0x01,
|
||||
0x03, /* bInterfaceClass: HID */
|
||||
{
|
||||
USB_DESC_LENGTH_IAD,
|
||||
USB_DESC_TYPE_IAD,
|
||||
USB_DYNAMIC,
|
||||
0x01,
|
||||
0x03, /* bInterfaceClass: HID */
|
||||
#if defined(RT_USB_DEVICE_HID_KEYBOARD)||defined(RT_USB_DEVICE_HID_MOUSE)
|
||||
USB_HID_SUBCLASS_BOOT, /* bInterfaceSubClass : 1=BOOT, 0=no boot */
|
||||
USB_HID_SUBCLASS_BOOT, /* bInterfaceSubClass : 1=BOOT, 0=no boot */
|
||||
#else
|
||||
USB_HID_SUBCLASS_NOBOOT, /* bInterfaceSubClass : 1=BOOT, 0=no boot */
|
||||
USB_HID_SUBCLASS_NOBOOT, /* bInterfaceSubClass : 1=BOOT, 0=no boot */
|
||||
#endif
|
||||
#if !defined(RT_USB_DEVICE_HID_KEYBOARD)||!defined(RT_USB_DEVICE_HID_MOUSE)||!defined(RT_USB_DEVICE_HID_MEDIA)
|
||||
USB_HID_PROTOCOL_NONE, /* nInterfaceProtocol : 0=none, 1=keyboard, 2=mouse */
|
||||
USB_HID_PROTOCOL_NONE, /* nInterfaceProtocol : 0=none, 1=keyboard, 2=mouse */
|
||||
#elif !defined(RT_USB_DEVICE_HID_MOUSE)
|
||||
USB_HID_PROTOCOL_KEYBOARD, /* nInterfaceProtocol : 0=none, 1=keyboard, 2=mouse */
|
||||
USB_HID_PROTOCOL_KEYBOARD, /* nInterfaceProtocol : 0=none, 1=keyboard, 2=mouse */
|
||||
#else
|
||||
USB_HID_PROTOCOL_MOUSE, /* nInterfaceProtocol : 0=none, 1=keyboard, 2=mouse */
|
||||
USB_HID_PROTOCOL_MOUSE, /* nInterfaceProtocol : 0=none, 1=keyboard, 2=mouse */
|
||||
#endif
|
||||
0x00,
|
||||
0x00,
|
||||
#endif
|
||||
},
|
||||
|
||||
/* Interface Descriptor */
|
||||
USB_DESC_LENGTH_INTERFACE,
|
||||
USB_DESC_TYPE_INTERFACE,
|
||||
USB_DYNAMIC, /* bInterfaceNumber: Number of Interface */
|
||||
0x00, /* bAlternateSetting: Alternate setting */
|
||||
0x02, /* bNumEndpoints */
|
||||
0x03, /* bInterfaceClass: HID */
|
||||
{
|
||||
USB_DESC_LENGTH_INTERFACE,
|
||||
USB_DESC_TYPE_INTERFACE,
|
||||
USB_DYNAMIC, /* bInterfaceNumber: Number of Interface */
|
||||
0x00, /* bAlternateSetting: Alternate setting */
|
||||
0x02, /* bNumEndpoints */
|
||||
0x03, /* bInterfaceClass: HID */
|
||||
#if defined(RT_USB_DEVICE_HID_KEYBOARD)||defined(RT_USB_DEVICE_HID_MOUSE)
|
||||
USB_HID_SUBCLASS_BOOT, /* bInterfaceSubClass : 1=BOOT, 0=no boot */
|
||||
USB_HID_SUBCLASS_BOOT, /* bInterfaceSubClass : 1=BOOT, 0=no boot */
|
||||
#else
|
||||
USB_HID_SUBCLASS_NOBOOT, /* bInterfaceSubClass : 1=BOOT, 0=no boot */
|
||||
USB_HID_SUBCLASS_NOBOOT, /* bInterfaceSubClass : 1=BOOT, 0=no boot */
|
||||
#endif
|
||||
#if !defined(RT_USB_DEVICE_HID_KEYBOARD)||!defined(RT_USB_DEVICE_HID_MOUSE)||!defined(RT_USB_DEVICE_HID_MEDIA)
|
||||
USB_HID_PROTOCOL_NONE, /* nInterfaceProtocol : 0=none, 1=keyboard, 2=mouse */
|
||||
USB_HID_PROTOCOL_NONE, /* nInterfaceProtocol : 0=none, 1=keyboard, 2=mouse */
|
||||
#elif !defined(RT_USB_DEVICE_HID_MOUSE)
|
||||
USB_HID_PROTOCOL_KEYBOARD, /* nInterfaceProtocol : 0=none, 1=keyboard, 2=mouse */
|
||||
USB_HID_PROTOCOL_KEYBOARD, /* nInterfaceProtocol : 0=none, 1=keyboard, 2=mouse */
|
||||
#else
|
||||
USB_HID_PROTOCOL_MOUSE, /* nInterfaceProtocol : 0=none, 1=keyboard, 2=mouse */
|
||||
USB_HID_PROTOCOL_MOUSE, /* nInterfaceProtocol : 0=none, 1=keyboard, 2=mouse */
|
||||
#endif
|
||||
0, /* iInterface: Index of string descriptor */
|
||||
0, /* iInterface: Index of string descriptor */
|
||||
},
|
||||
|
||||
/* HID Descriptor */
|
||||
HID_DESCRIPTOR_SIZE, /* bLength: HID Descriptor size */
|
||||
HID_DESCRIPTOR_TYPE, /* bDescriptorType: HID */
|
||||
0x0110, /* bcdHID: HID Class Spec release number */
|
||||
0x00, /* bCountryCode: Hardware target country */
|
||||
0x01, /* bNumDescriptors: Number of HID class descriptors to follow */
|
||||
0x22, /* bDescriptorType */
|
||||
sizeof(_report_desc), /* wItemLength: Total length of Report descriptor */
|
||||
{
|
||||
HID_DESCRIPTOR_SIZE, /* bLength: HID Descriptor size */
|
||||
HID_DESCRIPTOR_TYPE, /* bDescriptorType: HID */
|
||||
0x0110, /* bcdHID: HID Class Spec release number */
|
||||
0x00, /* bCountryCode: Hardware target country */
|
||||
0x01, /* bNumDescriptors: Number of HID class descriptors to follow */
|
||||
{
|
||||
{
|
||||
0x22, /* bDescriptorType */
|
||||
sizeof(_report_desc), /* wItemLength: Total length of Report descriptor */
|
||||
},
|
||||
},
|
||||
},
|
||||
|
||||
/* Endpoint Descriptor IN */
|
||||
USB_DESC_LENGTH_ENDPOINT,
|
||||
USB_DESC_TYPE_ENDPOINT,
|
||||
USB_DYNAMIC | USB_DIR_IN,
|
||||
USB_EP_ATTR_INT,
|
||||
0x40,
|
||||
0x01,
|
||||
{
|
||||
USB_DESC_LENGTH_ENDPOINT,
|
||||
USB_DESC_TYPE_ENDPOINT,
|
||||
USB_DYNAMIC | USB_DIR_IN,
|
||||
USB_EP_ATTR_INT,
|
||||
0x40,
|
||||
0x01,
|
||||
},
|
||||
|
||||
/* Endpoint Descriptor OUT */
|
||||
USB_DESC_LENGTH_ENDPOINT,
|
||||
USB_DESC_TYPE_ENDPOINT,
|
||||
USB_DYNAMIC | USB_DIR_OUT,
|
||||
USB_EP_ATTR_INT,
|
||||
0x40,
|
||||
0x01,
|
||||
{
|
||||
USB_DESC_LENGTH_ENDPOINT,
|
||||
USB_DESC_TYPE_ENDPOINT,
|
||||
USB_DYNAMIC | USB_DIR_OUT,
|
||||
USB_EP_ATTR_INT,
|
||||
0x40,
|
||||
0x01,
|
||||
},
|
||||
};
|
||||
|
||||
|
||||
@@ -480,12 +494,7 @@ static rt_err_t _interface_handler(ufunction_t func, ureq_t setup)
|
||||
rt_usbd_ep0_read(func->device, data->report_buf, setup->wLength, _hid_set_report_callback);
|
||||
break;
|
||||
case USB_HID_REQ_SET_IDLE:
|
||||
{
|
||||
int duration = (setup->wValue >> 8);
|
||||
int report_id = (setup->wValue & 0xFF);
|
||||
|
||||
dcd_ep0_send_status(func->device->dcd);
|
||||
}
|
||||
break;
|
||||
case USB_HID_REQ_SET_PROTOCOL:
|
||||
data->protocol = setup->wValue;
|
||||
|
||||
@@ -120,38 +120,46 @@ const static struct umass_descriptor _mass_desc =
|
||||
{
|
||||
#ifdef RT_USB_DEVICE_COMPOSITE
|
||||
/* Interface Association Descriptor */
|
||||
USB_DESC_LENGTH_IAD,
|
||||
USB_DESC_TYPE_IAD,
|
||||
USB_DYNAMIC,
|
||||
0x01,
|
||||
USB_CLASS_MASS_STORAGE,
|
||||
0x06,
|
||||
0x50,
|
||||
0x00,
|
||||
{
|
||||
USB_DESC_LENGTH_IAD,
|
||||
USB_DESC_TYPE_IAD,
|
||||
USB_DYNAMIC,
|
||||
0x01,
|
||||
USB_CLASS_MASS_STORAGE,
|
||||
0x06,
|
||||
0x50,
|
||||
0x00,
|
||||
},
|
||||
#endif
|
||||
USB_DESC_LENGTH_INTERFACE, //bLength;
|
||||
USB_DESC_TYPE_INTERFACE, //type;
|
||||
USB_DYNAMIC, //bInterfaceNumber;
|
||||
0x00, //bAlternateSetting;
|
||||
0x02, //bNumEndpoints
|
||||
USB_CLASS_MASS_STORAGE, //bInterfaceClass;
|
||||
0x06, //bInterfaceSubClass;
|
||||
0x50, //bInterfaceProtocol;
|
||||
0x00, //iInterface;
|
||||
{
|
||||
USB_DESC_LENGTH_INTERFACE, //bLength;
|
||||
USB_DESC_TYPE_INTERFACE, //type;
|
||||
USB_DYNAMIC, //bInterfaceNumber;
|
||||
0x00, //bAlternateSetting;
|
||||
0x02, //bNumEndpoints
|
||||
USB_CLASS_MASS_STORAGE, //bInterfaceClass;
|
||||
0x06, //bInterfaceSubClass;
|
||||
0x50, //bInterfaceProtocol;
|
||||
0x00, //iInterface;
|
||||
},
|
||||
|
||||
USB_DESC_LENGTH_ENDPOINT, //bLength;
|
||||
USB_DESC_TYPE_ENDPOINT, //type;
|
||||
USB_DYNAMIC | USB_DIR_OUT, //bEndpointAddress;
|
||||
USB_EP_ATTR_BULK, //bmAttributes;
|
||||
USB_DYNAMIC, //wMaxPacketSize;
|
||||
0x00, //bInterval;
|
||||
{
|
||||
USB_DESC_LENGTH_ENDPOINT, //bLength;
|
||||
USB_DESC_TYPE_ENDPOINT, //type;
|
||||
USB_DYNAMIC | USB_DIR_OUT, //bEndpointAddress;
|
||||
USB_EP_ATTR_BULK, //bmAttributes;
|
||||
USB_DYNAMIC, //wMaxPacketSize;
|
||||
0x00, //bInterval;
|
||||
},
|
||||
|
||||
USB_DESC_LENGTH_ENDPOINT, //bLength;
|
||||
USB_DESC_TYPE_ENDPOINT, //type;
|
||||
USB_DYNAMIC | USB_DIR_IN, //bEndpointAddress;
|
||||
USB_EP_ATTR_BULK, //bmAttributes;
|
||||
USB_DYNAMIC, //wMaxPacketSize;
|
||||
0x00, //bInterval;
|
||||
{
|
||||
USB_DESC_LENGTH_ENDPOINT, //bLength;
|
||||
USB_DESC_TYPE_ENDPOINT, //type;
|
||||
USB_DYNAMIC | USB_DIR_IN, //bEndpointAddress;
|
||||
USB_EP_ATTR_BULK, //bmAttributes;
|
||||
USB_DYNAMIC, //wMaxPacketSize;
|
||||
0x00, //bInterval;
|
||||
},
|
||||
};
|
||||
|
||||
const static char* _ustring[] =
|
||||
@@ -751,8 +759,8 @@ static rt_bool_t _cbw_verify(ufunction_t func, struct scsi_cmd* cmd,
|
||||
return RT_FALSE;
|
||||
}
|
||||
|
||||
if((cbw->dflags & USB_DIR_IN) && cmd->dir == DIR_OUT ||
|
||||
!(cbw->dflags & USB_DIR_IN) && cmd->dir == DIR_IN)
|
||||
if(((cbw->dflags & USB_DIR_IN) && (cmd->dir == DIR_OUT)) ||
|
||||
(!(cbw->dflags & USB_DIR_IN) && (cmd->dir == DIR_IN)))
|
||||
{
|
||||
rt_kprintf("dir error\n");
|
||||
return RT_FALSE;
|
||||
|
||||
@@ -106,54 +106,68 @@ const static struct ucdc_comm_descriptor _comm_desc =
|
||||
{
|
||||
#ifdef RT_USB_DEVICE_COMPOSITE
|
||||
/* Interface Association Descriptor */
|
||||
USB_DESC_LENGTH_IAD,
|
||||
USB_DESC_TYPE_IAD,
|
||||
USB_DYNAMIC,
|
||||
0x02,
|
||||
USB_CDC_CLASS_COMM,
|
||||
USB_CDC_SUBCLASS_ACM,
|
||||
USB_CDC_PROTOCOL_VENDOR,
|
||||
0x00,
|
||||
{
|
||||
USB_DESC_LENGTH_IAD,
|
||||
USB_DESC_TYPE_IAD,
|
||||
USB_DYNAMIC,
|
||||
0x02,
|
||||
USB_CDC_CLASS_COMM,
|
||||
USB_CDC_SUBCLASS_ACM,
|
||||
USB_CDC_PROTOCOL_VENDOR,
|
||||
0x00,
|
||||
},
|
||||
#endif
|
||||
/* Interface Descriptor */
|
||||
USB_DESC_LENGTH_INTERFACE,
|
||||
USB_DESC_TYPE_INTERFACE,
|
||||
USB_DYNAMIC,
|
||||
0x00,
|
||||
0x01,
|
||||
USB_CDC_CLASS_COMM,
|
||||
USB_CDC_SUBCLASS_ACM,
|
||||
USB_CDC_PROTOCOL_VENDOR,
|
||||
0x00,
|
||||
{
|
||||
USB_DESC_LENGTH_INTERFACE,
|
||||
USB_DESC_TYPE_INTERFACE,
|
||||
USB_DYNAMIC,
|
||||
0x00,
|
||||
0x01,
|
||||
USB_CDC_CLASS_COMM,
|
||||
USB_CDC_SUBCLASS_ACM,
|
||||
USB_CDC_PROTOCOL_VENDOR,
|
||||
0x00,
|
||||
},
|
||||
/* Header Functional Descriptor */
|
||||
0x05,
|
||||
USB_CDC_CS_INTERFACE,
|
||||
USB_CDC_SCS_HEADER,
|
||||
0x0110,
|
||||
{
|
||||
0x05,
|
||||
USB_CDC_CS_INTERFACE,
|
||||
USB_CDC_SCS_HEADER,
|
||||
0x0110,
|
||||
},
|
||||
/* Call Management Functional Descriptor */
|
||||
0x05,
|
||||
USB_CDC_CS_INTERFACE,
|
||||
USB_CDC_SCS_CALL_MGMT,
|
||||
0x00,
|
||||
USB_DYNAMIC,
|
||||
{
|
||||
0x05,
|
||||
USB_CDC_CS_INTERFACE,
|
||||
USB_CDC_SCS_CALL_MGMT,
|
||||
0x00,
|
||||
USB_DYNAMIC,
|
||||
},
|
||||
/* Abstract Control Management Functional Descriptor */
|
||||
0x04,
|
||||
USB_CDC_CS_INTERFACE,
|
||||
USB_CDC_SCS_ACM,
|
||||
0x02,
|
||||
{
|
||||
0x04,
|
||||
USB_CDC_CS_INTERFACE,
|
||||
USB_CDC_SCS_ACM,
|
||||
0x02,
|
||||
},
|
||||
/* Union Functional Descriptor */
|
||||
0x05,
|
||||
USB_CDC_CS_INTERFACE,
|
||||
USB_CDC_SCS_UNION,
|
||||
USB_DYNAMIC,
|
||||
USB_DYNAMIC,
|
||||
{
|
||||
0x05,
|
||||
USB_CDC_CS_INTERFACE,
|
||||
USB_CDC_SCS_UNION,
|
||||
USB_DYNAMIC,
|
||||
USB_DYNAMIC,
|
||||
},
|
||||
/* Endpoint Descriptor */
|
||||
USB_DESC_LENGTH_ENDPOINT,
|
||||
USB_DESC_TYPE_ENDPOINT,
|
||||
USB_DIR_IN | USB_DYNAMIC,
|
||||
USB_EP_ATTR_INT,
|
||||
0x08,
|
||||
0x0A,
|
||||
{
|
||||
USB_DESC_LENGTH_ENDPOINT,
|
||||
USB_DESC_TYPE_ENDPOINT,
|
||||
USB_DIR_IN | USB_DYNAMIC,
|
||||
USB_EP_ATTR_INT,
|
||||
0x08,
|
||||
0x0A,
|
||||
},
|
||||
};
|
||||
|
||||
/* data interface descriptor */
|
||||
@@ -161,29 +175,35 @@ ALIGN(4)
|
||||
const static struct ucdc_data_descriptor _data_desc =
|
||||
{
|
||||
/* interface descriptor */
|
||||
USB_DESC_LENGTH_INTERFACE,
|
||||
USB_DESC_TYPE_INTERFACE,
|
||||
USB_DYNAMIC,
|
||||
0x00,
|
||||
0x02,
|
||||
USB_CDC_CLASS_DATA,
|
||||
0x00,
|
||||
0x00,
|
||||
0x00,
|
||||
{
|
||||
USB_DESC_LENGTH_INTERFACE,
|
||||
USB_DESC_TYPE_INTERFACE,
|
||||
USB_DYNAMIC,
|
||||
0x00,
|
||||
0x02,
|
||||
USB_CDC_CLASS_DATA,
|
||||
0x00,
|
||||
0x00,
|
||||
0x00,
|
||||
},
|
||||
/* endpoint, bulk out */
|
||||
USB_DESC_LENGTH_ENDPOINT,
|
||||
USB_DESC_TYPE_ENDPOINT,
|
||||
USB_DIR_OUT | USB_DYNAMIC,
|
||||
USB_EP_ATTR_BULK,
|
||||
USB_DYNAMIC,
|
||||
0x00,
|
||||
{
|
||||
USB_DESC_LENGTH_ENDPOINT,
|
||||
USB_DESC_TYPE_ENDPOINT,
|
||||
USB_DIR_OUT | USB_DYNAMIC,
|
||||
USB_EP_ATTR_BULK,
|
||||
USB_DYNAMIC,
|
||||
0x00,
|
||||
},
|
||||
/* endpoint, bulk in */
|
||||
USB_DESC_LENGTH_ENDPOINT,
|
||||
USB_DESC_TYPE_ENDPOINT,
|
||||
USB_DYNAMIC | USB_DIR_IN,
|
||||
USB_EP_ATTR_BULK,
|
||||
USB_DYNAMIC,
|
||||
0x00,
|
||||
{
|
||||
USB_DESC_LENGTH_ENDPOINT,
|
||||
USB_DESC_TYPE_ENDPOINT,
|
||||
USB_DYNAMIC | USB_DIR_IN,
|
||||
USB_EP_ATTR_BULK,
|
||||
USB_DYNAMIC,
|
||||
0x00,
|
||||
},
|
||||
};
|
||||
|
||||
ALIGN(4)
|
||||
|
||||
@@ -58,39 +58,47 @@ struct winusb_descriptor _winusb_desc =
|
||||
{
|
||||
#ifdef RT_USB_DEVICE_COMPOSITE
|
||||
/* Interface Association Descriptor */
|
||||
USB_DESC_LENGTH_IAD,
|
||||
USB_DESC_TYPE_IAD,
|
||||
USB_DYNAMIC,
|
||||
0x01,
|
||||
0xFF,
|
||||
0x00,
|
||||
0x00,
|
||||
0x00,
|
||||
{
|
||||
USB_DESC_LENGTH_IAD,
|
||||
USB_DESC_TYPE_IAD,
|
||||
USB_DYNAMIC,
|
||||
0x01,
|
||||
0xFF,
|
||||
0x00,
|
||||
0x00,
|
||||
0x00,
|
||||
},
|
||||
#endif
|
||||
/*interface descriptor*/
|
||||
USB_DESC_LENGTH_INTERFACE, //bLength;
|
||||
USB_DESC_TYPE_INTERFACE, //type;
|
||||
USB_DYNAMIC, //bInterfaceNumber;
|
||||
0x00, //bAlternateSetting;
|
||||
0x02, //bNumEndpoints
|
||||
0xFF, //bInterfaceClass;
|
||||
0x00, //bInterfaceSubClass;
|
||||
0x00, //bInterfaceProtocol;
|
||||
0x00, //iInterface;
|
||||
{
|
||||
USB_DESC_LENGTH_INTERFACE, //bLength;
|
||||
USB_DESC_TYPE_INTERFACE, //type;
|
||||
USB_DYNAMIC, //bInterfaceNumber;
|
||||
0x00, //bAlternateSetting;
|
||||
0x02, //bNumEndpoints
|
||||
0xFF, //bInterfaceClass;
|
||||
0x00, //bInterfaceSubClass;
|
||||
0x00, //bInterfaceProtocol;
|
||||
0x00, //iInterface;
|
||||
},
|
||||
/*endpoint descriptor*/
|
||||
USB_DESC_LENGTH_ENDPOINT,
|
||||
USB_DESC_TYPE_ENDPOINT,
|
||||
USB_DYNAMIC | USB_DIR_OUT,
|
||||
USB_EP_ATTR_BULK,
|
||||
USB_DYNAMIC,
|
||||
0x00,
|
||||
{
|
||||
USB_DESC_LENGTH_ENDPOINT,
|
||||
USB_DESC_TYPE_ENDPOINT,
|
||||
USB_DYNAMIC | USB_DIR_OUT,
|
||||
USB_EP_ATTR_BULK,
|
||||
USB_DYNAMIC,
|
||||
0x00,
|
||||
},
|
||||
/*endpoint descriptor*/
|
||||
USB_DESC_LENGTH_ENDPOINT,
|
||||
USB_DESC_TYPE_ENDPOINT,
|
||||
USB_DYNAMIC | USB_DIR_IN,
|
||||
USB_EP_ATTR_BULK,
|
||||
USB_DYNAMIC,
|
||||
0x00,
|
||||
{
|
||||
USB_DESC_LENGTH_ENDPOINT,
|
||||
USB_DESC_TYPE_ENDPOINT,
|
||||
USB_DYNAMIC | USB_DIR_IN,
|
||||
USB_EP_ATTR_BULK,
|
||||
USB_DYNAMIC,
|
||||
0x00,
|
||||
},
|
||||
};
|
||||
|
||||
|
||||
|
||||
@@ -36,7 +36,7 @@ static rt_list_t device_list;
|
||||
static rt_size_t rt_usbd_ep_write(udevice_t device, uep_t ep, void *buffer, rt_size_t size);
|
||||
static rt_size_t rt_usbd_ep_read_prepare(udevice_t device, uep_t ep, void *buffer, rt_size_t size);
|
||||
static rt_err_t rt_usbd_ep_assign(udevice_t device, uep_t ep);
|
||||
static rt_err_t rt_usbd_ep_unassign(udevice_t device, uep_t ep);
|
||||
rt_err_t rt_usbd_ep_unassign(udevice_t device, uep_t ep);
|
||||
|
||||
/**
|
||||
* This function will handle get_device_descriptor bRequest.
|
||||
@@ -1865,7 +1865,7 @@ static rt_err_t rt_usbd_ep_assign(udevice_t device, uep_t ep)
|
||||
return -RT_ERROR;
|
||||
}
|
||||
|
||||
static rt_err_t rt_usbd_ep_unassign(udevice_t device, uep_t ep)
|
||||
rt_err_t rt_usbd_ep_unassign(udevice_t device, uep_t ep)
|
||||
{
|
||||
RT_ASSERT(device != RT_NULL);
|
||||
RT_ASSERT(device->dcd != RT_NULL);
|
||||
|
||||
@@ -78,11 +78,13 @@ static struct usb_qualifier_descriptor dev_qualifier =
|
||||
struct usb_os_comp_id_descriptor usb_comp_id_desc =
|
||||
{
|
||||
//head section
|
||||
USB_DYNAMIC,
|
||||
0x0100,
|
||||
0x04,
|
||||
USB_DYNAMIC,
|
||||
{0x00,0x00,0x00,0x00,0x00,0x00,0x00},
|
||||
{
|
||||
USB_DYNAMIC,
|
||||
0x0100,
|
||||
0x04,
|
||||
USB_DYNAMIC,
|
||||
{0x00,0x00,0x00,0x00,0x00,0x00,0x00},
|
||||
},
|
||||
};
|
||||
static rt_list_t class_list;
|
||||
int rt_usbd_class_list_init(void)
|
||||
|
||||
@@ -249,7 +249,7 @@ rt_err_t rt_usbh_hub_clear_port_feature(uhub_t hub, rt_uint16_t port, rt_uint16_
|
||||
if(hub->is_roothub)
|
||||
{
|
||||
root_hub_ctrl(hub->hcd, port, RH_CLEAR_PORT_FEATURE,
|
||||
(void*)feature);
|
||||
(void*)(rt_uint32_t)feature);
|
||||
return RT_EOK;
|
||||
}
|
||||
|
||||
@@ -290,7 +290,7 @@ rt_err_t rt_usbh_hub_set_port_feature(uhub_t hub, rt_uint16_t port,
|
||||
if(hub->is_roothub)
|
||||
{
|
||||
root_hub_ctrl(hub->hcd, port, RH_SET_PORT_FEATURE,
|
||||
(void*)feature);
|
||||
(void*)(rt_uint32_t)feature);
|
||||
return RT_EOK;
|
||||
}
|
||||
|
||||
@@ -413,7 +413,7 @@ static rt_err_t rt_usbh_hub_port_change(uhub_t hub)
|
||||
RT_DEBUG_LOG(RT_DEBUG_USB, ("port %d status 0x%x\n", i + 1, pstatus));
|
||||
|
||||
/* check port status change */
|
||||
if ((pstatus & PORT_CCSC))
|
||||
if (pstatus & PORT_CCSC)
|
||||
{
|
||||
/* clear port status change feature */
|
||||
rt_usbh_hub_clear_port_feature(hub, i + 1, PORT_FEAT_C_CONNECTION);
|
||||
|
||||
+2
-1
@@ -36,6 +36,7 @@
|
||||
* 2018-02-24 Bernard change version number to v3.0.3
|
||||
* 2018-04-25 Bernard change version number to v3.0.4
|
||||
* 2018-05-31 Bernard change version number to v3.1.0
|
||||
* 2018-09-04 Bernard change version number to v3.1.1
|
||||
*/
|
||||
|
||||
#ifndef __RT_DEF_H__
|
||||
@@ -57,7 +58,7 @@ extern "C" {
|
||||
/* RT-Thread version information */
|
||||
#define RT_VERSION 3L /**< major version number */
|
||||
#define RT_SUBVERSION 1L /**< minor version number */
|
||||
#define RT_REVISION 0L /**< revise version number */
|
||||
#define RT_REVISION 1L /**< revise version number */
|
||||
|
||||
/* RT-Thread version */
|
||||
#define RTTHREAD_VERSION ((RT_VERSION * 10000) + \
|
||||
|
||||
Reference in new issue
Block a user