usb_net编译通过
Some checks failed
Build / set-matrix (push) Has been cancelled
Build / make-os (macos-latest) (push) Has been cancelled
Build / make-os (windows-latest) (push) Has been cancelled
Build / zephyr (push) Has been cancelled
Build / hil-hfp (push) Has been cancelled
pre-commit / pre-commit (push) Has been cancelled
Build / cmake (aarch64-gcc) (push) Has been cancelled
Build / cmake (arm-gcc) (push) Has been cancelled
Build / cmake (esp-idf) (push) Has been cancelled
Build / cmake (msp430-gcc) (push) Has been cancelled
Build / cmake (riscv-gcc) (push) Has been cancelled
Build / make (aarch64-gcc) (push) Has been cancelled
Build / make (arm-gcc) (push) Has been cancelled
Build / make (msp430-gcc) (push) Has been cancelled
Build / make (riscv-gcc) (push) Has been cancelled
Build / make (rx-gcc) (push) Has been cancelled
Build / arm-iar (make) (push) Has been cancelled
Build / hil-build (arm-gcc) (push) Has been cancelled
Build / hil-build (esp-idf) (push) Has been cancelled
Build / hil-tinyusb (push) Has been cancelled
Some checks failed
Build / set-matrix (push) Has been cancelled
Build / make-os (macos-latest) (push) Has been cancelled
Build / make-os (windows-latest) (push) Has been cancelled
Build / zephyr (push) Has been cancelled
Build / hil-hfp (push) Has been cancelled
pre-commit / pre-commit (push) Has been cancelled
Build / cmake (aarch64-gcc) (push) Has been cancelled
Build / cmake (arm-gcc) (push) Has been cancelled
Build / cmake (esp-idf) (push) Has been cancelled
Build / cmake (msp430-gcc) (push) Has been cancelled
Build / cmake (riscv-gcc) (push) Has been cancelled
Build / make (aarch64-gcc) (push) Has been cancelled
Build / make (arm-gcc) (push) Has been cancelled
Build / make (msp430-gcc) (push) Has been cancelled
Build / make (riscv-gcc) (push) Has been cancelled
Build / make (rx-gcc) (push) Has been cancelled
Build / arm-iar (make) (push) Has been cancelled
Build / hil-build (arm-gcc) (push) Has been cancelled
Build / hil-build (esp-idf) (push) Has been cancelled
Build / hil-tinyusb (push) Has been cancelled
This commit is contained in:
@@ -23,6 +23,13 @@
|
|||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include <rtthread.h>
|
||||||
|
#include "bsp_init.h"
|
||||||
|
#include "stm32f4xx.h"
|
||||||
|
#include "dcd.h"
|
||||||
|
#include <ctype.h>
|
||||||
|
|
||||||
|
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
@@ -47,8 +54,55 @@ static uint32_t blink_interval_ms = BLINK_NOT_MOUNTED;
|
|||||||
static void led_blinking_task(void);
|
static void led_blinking_task(void);
|
||||||
static void cdc_task(void);
|
static void cdc_task(void);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
int tusb_board_init(void) {
|
||||||
|
GPIO_InitTypeDef GPIO_InitStructure;
|
||||||
|
|
||||||
|
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB, ENABLE);
|
||||||
|
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_OTG_HS, ENABLE);
|
||||||
|
|
||||||
|
GPIO_PinAFConfig(GPIOB, GPIO_PinSource14, GPIO_AF_OTG2_FS);
|
||||||
|
GPIO_PinAFConfig(GPIOB, GPIO_PinSource15, GPIO_AF_OTG2_FS);
|
||||||
|
|
||||||
|
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
|
||||||
|
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
|
||||||
|
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_14 | GPIO_Pin_15;
|
||||||
|
GPIO_Init(GPIOB, &GPIO_InitStructure);
|
||||||
|
|
||||||
|
// no need enable irq, it will be enabled in dwc2_dcd_int_enable()
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void usb_irq_enable(){
|
||||||
|
NVIC_InitTypeDef NVIC_InitStructure;
|
||||||
|
|
||||||
|
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);
|
||||||
|
NVIC_InitStructure.NVIC_IRQChannel = OTG_HS_IRQn;
|
||||||
|
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
|
||||||
|
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3;
|
||||||
|
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
|
||||||
|
NVIC_Init(&NVIC_InitStructure);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void tusb_thread_entry(void *parameter)
|
||||||
|
{
|
||||||
|
(void) parameter;
|
||||||
|
while (1)
|
||||||
|
{
|
||||||
|
#if CFG_TUH_ENABLED
|
||||||
|
tuh_task();
|
||||||
|
#endif
|
||||||
|
#if CFG_TUD_ENABLED
|
||||||
|
tud_task();
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*------------- MAIN -------------*/
|
/*------------- MAIN -------------*/
|
||||||
int main(void) {
|
int main_task(void) {
|
||||||
board_init();
|
board_init();
|
||||||
|
|
||||||
// init device stack on configured roothub port
|
// init device stack on configured roothub port
|
||||||
|
@@ -34,7 +34,7 @@
|
|||||||
|
|
||||||
//#include "cpu.h"
|
//#include "cpu.h"
|
||||||
|
|
||||||
typedef int sys_prot_t;
|
// typedef int sys_prot_t;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@@ -32,12 +32,14 @@
|
|||||||
#ifndef __LWIPOPTS_H__
|
#ifndef __LWIPOPTS_H__
|
||||||
#define __LWIPOPTS_H__
|
#define __LWIPOPTS_H__
|
||||||
|
|
||||||
|
#include "rtdef.h"
|
||||||
|
|
||||||
/* Prevent having to link sys_arch.c (we don't test the API layers in unit tests) */
|
/* Prevent having to link sys_arch.c (we don't test the API layers in unit tests) */
|
||||||
#define NO_SYS 1
|
#define NO_SYS 0
|
||||||
#define MEM_ALIGNMENT 4
|
#define MEM_ALIGNMENT 4
|
||||||
#define LWIP_RAW 0
|
#define LWIP_RAW 0
|
||||||
#define LWIP_NETCONN 0
|
#define LWIP_NETCONN 0
|
||||||
#define LWIP_SOCKET 0
|
#define LWIP_SOCKET 1
|
||||||
#define LWIP_DHCP 0
|
#define LWIP_DHCP 0
|
||||||
#define LWIP_ICMP 1
|
#define LWIP_ICMP 1
|
||||||
#define LWIP_UDP 1
|
#define LWIP_UDP 1
|
||||||
@@ -68,5 +70,7 @@
|
|||||||
#define LWIP_BROADCAST_PING 1
|
#define LWIP_BROADCAST_PING 1
|
||||||
#define LWIP_IPV6_MLD 0
|
#define LWIP_IPV6_MLD 0
|
||||||
#define LWIP_IPV6_SEND_ROUTER_SOLICIT 0
|
#define LWIP_IPV6_SEND_ROUTER_SOLICIT 0
|
||||||
|
#define LWIP_TIMEVAL_PRIVATE 0
|
||||||
|
// #define _TIMEVAL_DEFINED 1
|
||||||
|
|
||||||
#endif /* __LWIPOPTS_H__ */
|
#endif /* __LWIPOPTS_H__ */
|
||||||
|
@@ -49,12 +49,18 @@ The smartphone may be artificially picky about which Ethernet MAC address to rec
|
|||||||
try changing the first byte of tud_network_mac_address[] below from 0x02 to 0x00 (clearing bit 1).
|
try changing the first byte of tud_network_mac_address[] below from 0x02 to 0x00 (clearing bit 1).
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include <rtthread.h>
|
||||||
|
#include "bsp_init.h"
|
||||||
|
#include "stm32f4xx.h"
|
||||||
|
#include "dcd.h"
|
||||||
|
|
||||||
|
|
||||||
#include "bsp/board_api.h"
|
#include "bsp/board_api.h"
|
||||||
#include "tusb.h"
|
#include "tusb.h"
|
||||||
|
|
||||||
#include "dhserver.h"
|
#include "dhserver.h"
|
||||||
#include "dnserver.h"
|
#include "dnserver.h"
|
||||||
#include "httpd.h"
|
#include "lwip/apps/httpd.h"
|
||||||
#include "lwip/ethip6.h"
|
#include "lwip/ethip6.h"
|
||||||
#include "lwip/init.h"
|
#include "lwip/init.h"
|
||||||
#include "lwip/timeouts.h"
|
#include "lwip/timeouts.h"
|
||||||
@@ -187,7 +193,7 @@ bool tud_network_recv_cb(const uint8_t *src, uint16_t size) {
|
|||||||
struct pbuf *p = pbuf_alloc(PBUF_RAW, size, PBUF_POOL);
|
struct pbuf *p = pbuf_alloc(PBUF_RAW, size, PBUF_POOL);
|
||||||
|
|
||||||
if (p == NULL) {
|
if (p == NULL) {
|
||||||
printf("ERROR: Failed to allocate pbuf of size %d\n", size);
|
TU_LOG(2,"ERROR: Failed to allocate pbuf of size %d\n", size);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -199,7 +205,7 @@ bool tud_network_recv_cb(const uint8_t *src, uint16_t size) {
|
|||||||
// or steal it from whatever took ownership of it with undefined consequences.
|
// or steal it from whatever took ownership of it with undefined consequences.
|
||||||
// See: https://savannah.nongnu.org/patch/index.php?10121
|
// See: https://savannah.nongnu.org/patch/index.php?10121
|
||||||
if (netif->input(p, netif) != ERR_OK) {
|
if (netif->input(p, netif) != ERR_OK) {
|
||||||
printf("ERROR: netif input failed\n");
|
TU_LOG(2,"ERROR: netif input failed\n");
|
||||||
pbuf_free(p);
|
pbuf_free(p);
|
||||||
}
|
}
|
||||||
// Signal tinyusb that the current frame has been processed.
|
// Signal tinyusb that the current frame has been processed.
|
||||||
@@ -227,10 +233,10 @@ static void handle_link_state_switch(void) {
|
|||||||
/* Button pressed - toggle link state */
|
/* Button pressed - toggle link state */
|
||||||
last_link_state = !last_link_state;
|
last_link_state = !last_link_state;
|
||||||
if (last_link_state) {
|
if (last_link_state) {
|
||||||
printf("Link state: UP\n");
|
TU_LOG(2,"Link state: UP\n");
|
||||||
netif_set_link_up(&netif_data);
|
netif_set_link_up(&netif_data);
|
||||||
} else {
|
} else {
|
||||||
printf("Link state: DOWN\n");
|
TU_LOG(2,"Link state: DOWN\n");
|
||||||
netif_set_link_down(&netif_data);
|
netif_set_link_down(&netif_data);
|
||||||
}
|
}
|
||||||
/* LWIP callback will notify USB host about the change */
|
/* LWIP callback will notify USB host about the change */
|
||||||
@@ -239,9 +245,72 @@ static void handle_link_state_switch(void) {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int main(void) {
|
|
||||||
|
|
||||||
|
int tusb_board_init(void) {
|
||||||
|
GPIO_InitTypeDef GPIO_InitStructure;
|
||||||
|
|
||||||
|
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB, ENABLE);
|
||||||
|
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_OTG_HS, ENABLE);
|
||||||
|
|
||||||
|
GPIO_PinAFConfig(GPIOB, GPIO_PinSource14, GPIO_AF_OTG2_FS);
|
||||||
|
GPIO_PinAFConfig(GPIOB, GPIO_PinSource15, GPIO_AF_OTG2_FS);
|
||||||
|
|
||||||
|
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
|
||||||
|
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
|
||||||
|
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_14 | GPIO_Pin_15;
|
||||||
|
GPIO_Init(GPIOB, &GPIO_InitStructure);
|
||||||
|
|
||||||
|
// no need enable irq, it will be enabled in dwc2_dcd_int_enable()
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void usb_irq_enable(){
|
||||||
|
NVIC_InitTypeDef NVIC_InitStructure;
|
||||||
|
|
||||||
|
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);
|
||||||
|
NVIC_InitStructure.NVIC_IRQChannel = OTG_HS_IRQn;
|
||||||
|
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
|
||||||
|
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3;
|
||||||
|
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
|
||||||
|
NVIC_Init(&NVIC_InitStructure);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
static void tusb_thread_entry(void *parameter)
|
||||||
|
{
|
||||||
|
(void) parameter;
|
||||||
|
while (1)
|
||||||
|
{
|
||||||
|
#if CFG_TUH_ENABLED
|
||||||
|
tuh_task();
|
||||||
|
#endif
|
||||||
|
#if CFG_TUD_ENABLED
|
||||||
|
tud_task();
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
int init_tinyusb(void) {
|
||||||
/* initialize TinyUSB */
|
/* initialize TinyUSB */
|
||||||
board_init();
|
rt_thread_t tid;
|
||||||
|
RCC_ClocksTypeDef rcc = {0};
|
||||||
|
RCC_GetClocksFreq(&rcc);
|
||||||
|
rt_kprintf("TinyUSB init... \r\n");
|
||||||
|
rt_kprintf("rcc.SYSCLK_Frequency=%d Hz\r\n", rcc.SYSCLK_Frequency);
|
||||||
|
rt_kprintf("rcc.HCLK_Frequency=%d Hz\r\n", rcc.HCLK_Frequency);
|
||||||
|
rt_kprintf("rcc.PCLK1_Frequency=%d Hz\r\n", rcc.PCLK1_Frequency);
|
||||||
|
rt_kprintf("rcc.PCLK2_Frequency=%d Hz\r\n", rcc.PCLK2_Frequency);
|
||||||
|
rt_kprintf("rcc.USBCLK_Frequency=%d Hz\r\n", rcc.USBCLK_Frequency);
|
||||||
|
tusb_board_init();
|
||||||
|
|
||||||
// init device stack on configured roothub port
|
// init device stack on configured roothub port
|
||||||
tusb_rhport_init_t dev_init = {
|
tusb_rhport_init_t dev_init = {
|
||||||
@@ -249,6 +318,7 @@ int main(void) {
|
|||||||
.speed = TUSB_SPEED_AUTO
|
.speed = TUSB_SPEED_AUTO
|
||||||
};
|
};
|
||||||
tusb_init(BOARD_TUD_RHPORT, &dev_init);
|
tusb_init(BOARD_TUD_RHPORT, &dev_init);
|
||||||
|
usb_irq_enable();
|
||||||
|
|
||||||
if (board_init_after_tusb) {
|
if (board_init_after_tusb) {
|
||||||
board_init_after_tusb();
|
board_init_after_tusb();
|
||||||
@@ -267,30 +337,50 @@ int main(void) {
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if CFG_TUD_NCM
|
#if CFG_TUD_NCM
|
||||||
printf("USB NCM network interface initialized\n");
|
TU_LOG(2,"USB NCM network interface initialized\n");
|
||||||
#elif CFG_TUD_ECM_RNDIS
|
#elif CFG_TUD_ECM_RNDIS
|
||||||
printf("USB RNDIS/ECM network interface initialized\n");
|
TU_LOG(2,"USB RNDIS/ECM network interface initialized\n");
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
while (1) {
|
#ifdef RT_USING_HEAP
|
||||||
tud_task();
|
tid = rt_thread_create("tusb", tusb_thread_entry, RT_NULL,
|
||||||
sys_check_timeouts(); // service lwip
|
2048,
|
||||||
handle_link_state_switch();
|
1, 10);
|
||||||
|
if (tid == RT_NULL)
|
||||||
|
#else
|
||||||
|
rt_err_t result;
|
||||||
|
|
||||||
|
tid = &tusb_thread;
|
||||||
|
result = rt_thread_init(tid, "tusb", tusb_thread_entry, RT_NULL,
|
||||||
|
tusb_stack, sizeof(tusb_stack), 4, 10);
|
||||||
|
if (result != RT_EOK)
|
||||||
|
#endif /* RT_USING_HEAP */
|
||||||
|
{
|
||||||
|
TU_LOG(2,"Fail to create TinyUSB thread");
|
||||||
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
rt_thread_startup(tid);
|
||||||
|
// while (1) {
|
||||||
|
// tud_task();
|
||||||
|
// // sys_check_timeouts(); // service lwip
|
||||||
|
// // handle_link_state_switch();
|
||||||
|
// }
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
extern_init(tinyusb, init_tinyusb);
|
||||||
|
|
||||||
/* lwip has provision for using a mutex, when applicable */
|
/* lwip has provision for using a mutex, when applicable */
|
||||||
/* This implementation is for single-threaded use only */
|
/* This implementation is for single-threaded use only */
|
||||||
sys_prot_t sys_arch_protect(void) {
|
// sys_prot_t sys_arch_protect(void) {
|
||||||
return 0;
|
// return 0;
|
||||||
}
|
// }
|
||||||
void sys_arch_unprotect(sys_prot_t pval) {
|
// void sys_arch_unprotect(sys_prot_t pval) {
|
||||||
(void) pval;
|
// (void) pval;
|
||||||
}
|
// }
|
||||||
|
|
||||||
/* lwip needs a millisecond time source, and the TinyUSB board support code has one available */
|
// /* lwip needs a millisecond time source, and the TinyUSB board support code has one available */
|
||||||
uint32_t sys_now(void) {
|
// uint32_t sys_now(void) {
|
||||||
return board_millis();
|
// return board_millis();
|
||||||
}
|
// }
|
||||||
|
@@ -38,7 +38,7 @@ extern "C" {
|
|||||||
|
|
||||||
// RHPort number used for device can be defined by board.mk, default to port 0
|
// RHPort number used for device can be defined by board.mk, default to port 0
|
||||||
#ifndef BOARD_TUD_RHPORT
|
#ifndef BOARD_TUD_RHPORT
|
||||||
#define BOARD_TUD_RHPORT 0
|
#define BOARD_TUD_RHPORT 1
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// RHPort max operational speed can defined by board.mk
|
// RHPort max operational speed can defined by board.mk
|
||||||
@@ -50,17 +50,19 @@ extern "C" {
|
|||||||
// Common Configuration
|
// Common Configuration
|
||||||
//--------------------------------------------------------------------
|
//--------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
#define CFG_TUSB_MCU OPT_MCU_STM32F4
|
||||||
// defined by compiler flags for flexibility
|
// defined by compiler flags for flexibility
|
||||||
#ifndef CFG_TUSB_MCU
|
#ifndef CFG_TUSB_MCU
|
||||||
#error CFG_TUSB_MCU must be defined
|
#error CFG_TUSB_MCU must be defined
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef CFG_TUSB_OS
|
#ifndef CFG_TUSB_OS
|
||||||
#define CFG_TUSB_OS OPT_OS_NONE
|
#define CFG_TUSB_OS OPT_OS_RTTHREAD
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef CFG_TUSB_DEBUG
|
#ifndef CFG_TUSB_DEBUG
|
||||||
#define CFG_TUSB_DEBUG 0
|
#define CFG_TUSB_DEBUG 3
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// Enable Device stack
|
// Enable Device stack
|
||||||
@@ -68,6 +70,18 @@ extern "C" {
|
|||||||
|
|
||||||
// Default is max speed that hardware controller could support with on-chip PHY
|
// Default is max speed that hardware controller could support with on-chip PHY
|
||||||
#define CFG_TUD_MAX_SPEED BOARD_TUD_MAX_SPEED
|
#define CFG_TUD_MAX_SPEED BOARD_TUD_MAX_SPEED
|
||||||
|
// fs is 0; hs is 1
|
||||||
|
#ifndef BOARD_DEVICE_RHPORT_NUM
|
||||||
|
#define BOARD_DEVICE_RHPORT_NUM 1
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if BOARD_DEVICE_RHPORT_NUM == 0
|
||||||
|
#define CFG_TUSB_RHPORT0_MODE (OPT_MODE_DEVICE | BOARD_DEVICE_RHPORT_SPEED)
|
||||||
|
#elif BOARD_DEVICE_RHPORT_NUM == 1
|
||||||
|
#define CFG_TUSB_RHPORT1_MODE (OPT_MODE_DEVICE | BOARD_DEVICE_RHPORT_SPEED)
|
||||||
|
#else
|
||||||
|
#error "Incorrect RHPort configuration"
|
||||||
|
#endif
|
||||||
|
|
||||||
/* USB DMA on some MCUs can only access a specific SRAM region with restriction on alignment.
|
/* USB DMA on some MCUs can only access a specific SRAM region with restriction on alignment.
|
||||||
* Tinyusb use follows macros to declare transferring memory so that they can be put
|
* Tinyusb use follows macros to declare transferring memory so that they can be put
|
||||||
|
@@ -25,6 +25,7 @@
|
|||||||
|
|
||||||
#include "bsp/board_api.h"
|
#include "bsp/board_api.h"
|
||||||
#include "tusb.h"
|
#include "tusb.h"
|
||||||
|
#include "net_device.h"
|
||||||
|
|
||||||
/* A combination of interfaces must have a unique product id, since PC will save device driver after the first plug.
|
/* A combination of interfaces must have a unique product id, since PC will save device driver after the first plug.
|
||||||
* Same VID/PID with different interface e.g MSC (first), then CDC (later) will possibly cause system error on PC.
|
* Same VID/PID with different interface e.g MSC (first), then CDC (later) will possibly cause system error on PC.
|
||||||
|
@@ -368,7 +368,7 @@ static void xmit_start_if_possible(uint8_t rhport) {
|
|||||||
#if CFG_TUD_NCM_LOG_LEVEL >= 3
|
#if CFG_TUD_NCM_LOG_LEVEL >= 3
|
||||||
{
|
{
|
||||||
uint16_t len = ncm_interface.xmit_tinyusb_ntb->nth.wBlockLength;
|
uint16_t len = ncm_interface.xmit_tinyusb_ntb->nth.wBlockLength;
|
||||||
TU_LOG_BUF(3, ncm_interface.xmit_tinyusb_ntb->data[i], len);
|
TU_LOG_BUF(3, ncm_interface.xmit_tinyusb_ntb->data, len);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@@ -612,7 +612,7 @@ static bool recv_validate_datagram(const recv_ntb_t *ntb, uint32_t len) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#if CFG_TUD_NCM_LOG_LEVEL >= 3
|
#if CFG_TUD_NCM_LOG_LEVEL >= 3
|
||||||
TU_LOG_BUF(3, ntb->data[i], len);
|
TU_LOG_BUF(3, ntb->data, len);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// -> ntb contains a valid packet structure
|
// -> ntb contains a valid packet structure
|
||||||
|
Reference in New Issue
Block a user