feat: URB packet processing & DAP command push
This commit is contained in:
parent
957cc01656
commit
529e0a375f
|
@ -100,7 +100,7 @@ This information includes:
|
||||||
/// This configuration settings is used to optimize the communication performance with the
|
/// This configuration settings is used to optimize the communication performance with the
|
||||||
/// debugger and depends on the USB peripheral. For devices with limited RAM or USB buffer the
|
/// debugger and depends on the USB peripheral. For devices with limited RAM or USB buffer the
|
||||||
/// setting can be reduced (valid range is 1 .. 255).
|
/// setting can be reduced (valid range is 1 .. 255).
|
||||||
#define DAP_PACKET_COUNT 8U ///< Specifies number of packets buffered.
|
#define DAP_PACKET_COUNT 1U ///< Specifies number of packets buffered.
|
||||||
|
|
||||||
/// Indicate that UART Serial Wire Output (SWO) trace is available.
|
/// Indicate that UART Serial Wire Output (SWO) trace is available.
|
||||||
/// This information is returned by the command \ref DAP_Info as part of <b>Capabilities</b>.
|
/// This information is returned by the command \ref DAP_Info as part of <b>Capabilities</b>.
|
||||||
|
@ -109,7 +109,7 @@ This information includes:
|
||||||
/// Maximum SWO UART Baudrate.
|
/// Maximum SWO UART Baudrate.
|
||||||
#define SWO_UART_MAX_BAUDRATE 50000000U ///< SWO UART Maximum Baudrate in Hz.
|
#define SWO_UART_MAX_BAUDRATE 50000000U ///< SWO UART Maximum Baudrate in Hz.
|
||||||
// <<<<<<<<<<<<<<<<<<<<<<<<<<<<< 5MHz
|
// <<<<<<<<<<<<<<<<<<<<<<<<<<<<< 5MHz
|
||||||
// TODO: uncertain value
|
//// TODO: uncertain value
|
||||||
|
|
||||||
/// Indicate that Manchester Serial Wire Output (SWO) trace is available.
|
/// Indicate that Manchester Serial Wire Output (SWO) trace is available.
|
||||||
/// This information is returned by the command \ref DAP_Info as part of <b>Capabilities</b>.
|
/// This information is returned by the command \ref DAP_Info as part of <b>Capabilities</b>.
|
||||||
|
@ -144,7 +144,7 @@ This information includes:
|
||||||
*/
|
*/
|
||||||
__STATIC_INLINE uint8_t DAP_GetVendorString(char *str)
|
__STATIC_INLINE uint8_t DAP_GetVendorString(char *str)
|
||||||
{
|
{
|
||||||
//TODO: fill this
|
////TODO: fill this
|
||||||
// In fact, Keil can get the corresponding information through USB
|
// In fact, Keil can get the corresponding information through USB
|
||||||
// without filling in this information.
|
// without filling in this information.
|
||||||
(void)str;
|
(void)str;
|
||||||
|
@ -296,7 +296,7 @@ __STATIC_INLINE void PORT_OFF(void)
|
||||||
*/
|
*/
|
||||||
__STATIC_FORCEINLINE uint32_t PIN_SWCLK_TCK_IN(void)
|
__STATIC_FORCEINLINE uint32_t PIN_SWCLK_TCK_IN(void)
|
||||||
{
|
{
|
||||||
// TODO : can we set to 0?
|
////TODO: can we set to 0?
|
||||||
return ((GPIO.in >> PIN_SWCLK) & 0x1);
|
return ((GPIO.in >> PIN_SWCLK) & 0x1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -478,7 +478,7 @@ __STATIC_FORCEINLINE uint32_t PIN_nTRST_IN(void)
|
||||||
*/
|
*/
|
||||||
__STATIC_FORCEINLINE void PIN_nTRST_OUT(uint32_t bit)
|
__STATIC_FORCEINLINE void PIN_nTRST_OUT(uint32_t bit)
|
||||||
{
|
{
|
||||||
//TODO : What does this mean? ? ?
|
////TODO: What does this mean? ? ?
|
||||||
if ((bit & 1U) == 1)
|
if ((bit & 1U) == 1)
|
||||||
{
|
{
|
||||||
//set bit
|
//set bit
|
||||||
|
@ -512,7 +512,7 @@ __STATIC_FORCEINLINE uint32_t PIN_nRESET_IN(void)
|
||||||
*/
|
*/
|
||||||
__STATIC_FORCEINLINE void PIN_nRESET_OUT(uint32_t bit)
|
__STATIC_FORCEINLINE void PIN_nRESET_OUT(uint32_t bit)
|
||||||
{
|
{
|
||||||
//TODO : What does this mean? ? ?
|
////TODO: What does this mean? ? ?
|
||||||
if ((bit & 1U) == 1)
|
if ((bit & 1U) == 1)
|
||||||
{
|
{
|
||||||
//set bit
|
//set bit
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
/**
|
/**
|
||||||
* @file USB_handle.c
|
* @file USB_handle.c
|
||||||
* @brief Handle all Standard Device Requests
|
* @brief Handle all Standard Device Requests on endpoint 0
|
||||||
* @version 0.1
|
* @version 0.1
|
||||||
* @date 2020-01-23
|
* @date 2020-01-23
|
||||||
*
|
*
|
||||||
|
@ -17,34 +17,38 @@
|
||||||
#include "usbip_server.h"
|
#include "usbip_server.h"
|
||||||
#include "usb_defs.h"
|
#include "usb_defs.h"
|
||||||
|
|
||||||
|
|
||||||
// handle functions
|
// handle functions
|
||||||
static void handleGetDescriptor(struct usbip_stage2_header *header);
|
static void handleGetDescriptor(usbip_stage2_header *header);
|
||||||
|
|
||||||
////TODO: fill this
|
////TODO: fill this
|
||||||
int handleUSBControlRequest(struct usbip_stage2_header *header)
|
int handleUSBControlRequest(usbip_stage2_header *header)
|
||||||
{
|
{
|
||||||
// Table 9-3. Standard Device Requests
|
// Table 9-3. Standard Device Requests
|
||||||
|
|
||||||
switch (header->u.cmd_submit.request.bmRequestType)
|
switch (header->u.cmd_submit.request.bmRequestType)
|
||||||
{
|
{
|
||||||
case 0x00:
|
case 0x00: // ignore..
|
||||||
switch (header->u.cmd_submit.request.bRequest)
|
switch (header->u.cmd_submit.request.bRequest)
|
||||||
{
|
{
|
||||||
case USB_REQ_CLEAR_FEATURE:
|
case USB_REQ_CLEAR_FEATURE:
|
||||||
/* code */
|
os_printf("* CLEAR FEATURE\r\n");
|
||||||
|
send_stage2_submit_data(header, 0, 0, 0);
|
||||||
break;
|
break;
|
||||||
case USB_REQ_SET_FEATURE:
|
case USB_REQ_SET_FEATURE:
|
||||||
/* code */
|
os_printf("* SET FEATURE\r\n");
|
||||||
|
send_stage2_submit_data(header, 0, 0, 0);
|
||||||
break;
|
break;
|
||||||
case USB_REQ_SET_ADDRESS:
|
case USB_REQ_SET_ADDRESS:
|
||||||
/* code */
|
os_printf("* SET ADDRESS\r\n");
|
||||||
|
send_stage2_submit_data(header, 0, 0, 0);
|
||||||
break;
|
break;
|
||||||
case USB_REQ_SET_DESCRIPTOR:
|
case USB_REQ_SET_DESCRIPTOR:
|
||||||
/* code */
|
os_printf("* SET DESCRIPTOR\r\n");
|
||||||
|
send_stage2_submit_data(header, 0, 0, 0);
|
||||||
break;
|
break;
|
||||||
case USB_REQ_SET_CONFIGURATION:
|
case USB_REQ_SET_CONFIGURATION:
|
||||||
/* code */
|
os_printf("* SET CONFIGURATION\r\n");
|
||||||
|
send_stage2_submit_data(header, 0, 0, 0);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
os_printf("USB unknown request, bmRequestType:%d,bRequest:%d\r\n",
|
os_printf("USB unknown request, bmRequestType:%d,bRequest:%d\r\n",
|
||||||
|
@ -52,17 +56,20 @@ int handleUSBControlRequest(struct usbip_stage2_header *header)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 0x01:
|
case 0x01: // ignore...
|
||||||
switch (header->u.cmd_submit.request.bRequest)
|
switch (header->u.cmd_submit.request.bRequest)
|
||||||
{
|
{
|
||||||
case USB_REQ_CLEAR_FEATURE:
|
case USB_REQ_CLEAR_FEATURE:
|
||||||
/* code */
|
os_printf("* CLEAR FEATURE\r\n");
|
||||||
|
send_stage2_submit_data(header, 0, 0, 0);
|
||||||
break;
|
break;
|
||||||
case USB_REQ_SET_FEATURE:
|
case USB_REQ_SET_FEATURE:
|
||||||
/* code */
|
os_printf("* SET FEATURE\r\n");
|
||||||
|
send_stage2_submit_data(header, 0, 0, 0);
|
||||||
break;
|
break;
|
||||||
case USB_REQ_SET_INTERFACE:
|
case USB_REQ_SET_INTERFACE:
|
||||||
/* code */
|
os_printf("* SET INTERFACE\r\n");
|
||||||
|
send_stage2_submit_data(header, 0, 0, 0);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
|
@ -71,14 +78,16 @@ int handleUSBControlRequest(struct usbip_stage2_header *header)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 0x02:
|
case 0x02: // ignore..
|
||||||
switch (header->u.cmd_submit.request.bRequest)
|
switch (header->u.cmd_submit.request.bRequest)
|
||||||
{
|
{
|
||||||
case USB_REQ_CLEAR_FEATURE:
|
case USB_REQ_CLEAR_FEATURE:
|
||||||
/* code */
|
os_printf("* CLEAR FEATURE\r\n");
|
||||||
|
send_stage2_submit_data(header, 0, 0, 0);
|
||||||
break;
|
break;
|
||||||
case USB_REQ_SET_FEATURE:
|
case USB_REQ_SET_FEATURE:
|
||||||
/* code */
|
os_printf("* SET INTERFACE\r\n");
|
||||||
|
send_stage2_submit_data(header, 0, 0, 0);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
|
@ -88,17 +97,19 @@ int handleUSBControlRequest(struct usbip_stage2_header *header)
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 0x80:
|
case 0x80: // *IMPORTANT*
|
||||||
switch (header->u.cmd_submit.request.bRequest)
|
switch (header->u.cmd_submit.request.bRequest)
|
||||||
{
|
{
|
||||||
case USB_REQ_GET_CONFIGURATION:
|
case USB_REQ_GET_CONFIGURATION:
|
||||||
handleGetDescriptor(header);
|
os_printf("* GET CONIFGTRATION\r\n");
|
||||||
|
send_stage2_submit_data(header, 0, 0, 0);
|
||||||
break;
|
break;
|
||||||
case USB_REQ_GET_DESCRIPTOR:
|
case USB_REQ_GET_DESCRIPTOR:
|
||||||
/* code */
|
handleGetDescriptor(header); ////TODO: device_qualifier
|
||||||
break;
|
break;
|
||||||
case USB_REQ_GET_STATUS:
|
case USB_REQ_GET_STATUS:
|
||||||
/* code */
|
os_printf("* GET STATUS\r\n");
|
||||||
|
send_stage2_submit_data(header, 0, 0, 0);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
os_printf("USB unknown request, bmRequestType:%d,bRequest:%d\r\n",
|
os_printf("USB unknown request, bmRequestType:%d,bRequest:%d\r\n",
|
||||||
|
@ -106,17 +117,20 @@ int handleUSBControlRequest(struct usbip_stage2_header *header)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 0x81:
|
case 0x81: // ignore...
|
||||||
switch (header->u.cmd_submit.request.bRequest)
|
switch (header->u.cmd_submit.request.bRequest)
|
||||||
{
|
{
|
||||||
case USB_REQ_GET_INTERFACE:
|
case USB_REQ_GET_INTERFACE:
|
||||||
/* code */
|
os_printf("* GET INTERFACE\r\n");
|
||||||
|
send_stage2_submit_data(header, 0, 0, 0);
|
||||||
break;
|
break;
|
||||||
case USB_REQ_SET_SYNCH_FRAME:
|
case USB_REQ_SET_SYNCH_FRAME:
|
||||||
/* code */
|
os_printf("* SET SYNCH FRAME\r\n");
|
||||||
|
send_stage2_submit_data(header, 0, 0, 0);
|
||||||
break;
|
break;
|
||||||
case USB_REQ_GET_STATUS:
|
case USB_REQ_GET_STATUS:
|
||||||
/* code */
|
os_printf("* GET STATUS\r\n");
|
||||||
|
send_stage2_submit_data(header, 0, 0, 0);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
|
@ -126,11 +140,12 @@ int handleUSBControlRequest(struct usbip_stage2_header *header)
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 0x82:
|
case 0x82: // ignore...
|
||||||
switch (header->u.cmd_submit.request.bRequest)
|
switch (header->u.cmd_submit.request.bRequest)
|
||||||
{
|
{
|
||||||
case USB_REQ_GET_STATUS:
|
case USB_REQ_GET_STATUS:
|
||||||
/* code */
|
os_printf("* GET STATUS\r\n");
|
||||||
|
send_stage2_submit_data(header, 0, 0, 0);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
|
@ -139,7 +154,6 @@ int handleUSBControlRequest(struct usbip_stage2_header *header)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
/////////
|
|
||||||
|
|
||||||
default:
|
default:
|
||||||
os_printf("USB unknown request, bmRequestType:%d,bRequest:%d\r\n",
|
os_printf("USB unknown request, bmRequestType:%d,bRequest:%d\r\n",
|
||||||
|
@ -148,8 +162,8 @@ int handleUSBControlRequest(struct usbip_stage2_header *header)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
////TODO: fill this
|
////TODO: BOS descriptor
|
||||||
static void handleGetDescriptor(struct usbip_stage2_header *header)
|
static void handleGetDescriptor(usbip_stage2_header *header)
|
||||||
{
|
{
|
||||||
// 9.4.3 Get Descriptor
|
// 9.4.3 Get Descriptor
|
||||||
switch (header->u.cmd_submit.request.wValue.u8hi)
|
switch (header->u.cmd_submit.request.wValue.u8hi)
|
||||||
|
@ -168,7 +182,6 @@ static void handleGetDescriptor(struct usbip_stage2_header *header)
|
||||||
|
|
||||||
send_stage2_submit(header, 0, header->u.cmd_submit.data_length);
|
send_stage2_submit(header, 0, header->u.cmd_submit.data_length);
|
||||||
send(kSock, kUSBd0ConfigDescriptor, sizeof(kUSBd0ConfigDescriptor), 0);
|
send(kSock, kUSBd0ConfigDescriptor, sizeof(kUSBd0ConfigDescriptor), 0);
|
||||||
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -177,18 +190,19 @@ static void handleGetDescriptor(struct usbip_stage2_header *header)
|
||||||
send_stage2_submit(header, 0, header->u.cmd_submit.data_length);
|
send_stage2_submit(header, 0, header->u.cmd_submit.data_length);
|
||||||
send(kSock, kUSBd0ConfigDescriptor, sizeof(kUSBd0ConfigDescriptor), 0);
|
send(kSock, kUSBd0ConfigDescriptor, sizeof(kUSBd0ConfigDescriptor), 0);
|
||||||
send(kSock, kUSBd0InterfaceDescriptor, sizeof(kUSBd0InterfaceDescriptor), 0);
|
send(kSock, kUSBd0InterfaceDescriptor, sizeof(kUSBd0InterfaceDescriptor), 0);
|
||||||
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case USB_DT_STRING:
|
case USB_DT_STRING:
|
||||||
os_printf("* GET 0x03 STRING DESCRIPTOR\r\n");
|
os_printf("* GET 0x03 STRING DESCRIPTOR\r\n");
|
||||||
|
|
||||||
if (header->u.cmd_submit.request.wValue.u8lo == 0) {
|
if (header->u.cmd_submit.request.wValue.u8lo == 0)
|
||||||
|
{
|
||||||
os_printf("** REQUESTED list of supported languages\r\n");
|
os_printf("** REQUESTED list of supported languages\r\n");
|
||||||
send_stage2_submit_data(header, 0, kLangDescriptor, sizeof(kLangDescriptor));
|
send_stage2_submit_data(header, 0, kLangDescriptor, sizeof(kLangDescriptor));
|
||||||
}
|
}
|
||||||
else{
|
else
|
||||||
|
{
|
||||||
os_printf("***Unsupported operation***\r\n");
|
os_printf("***Unsupported operation***\r\n");
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
@ -227,7 +241,6 @@ static void handleGetDescriptor(struct usbip_stage2_header *header)
|
||||||
send_stage2_submit(header, 0, 0);
|
send_stage2_submit(header, 0, 0);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
||||||
default:
|
default:
|
||||||
os_printf("USB unknown Get Descriptor requested:%d", header->u.cmd_submit.request.wValue.u8lo);
|
os_printf("USB unknown Get Descriptor requested:%d", header->u.cmd_submit.request.wValue.u8lo);
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -26,7 +26,8 @@ const uint8_t kUSBd0DeviceDescriptor[0x12] =
|
||||||
{
|
{
|
||||||
0x12, // bLength
|
0x12, // bLength
|
||||||
USB_DT_DEVICE, // bDescriptorType (constant)
|
USB_DT_DEVICE, // bDescriptorType (constant)
|
||||||
USBShort(0x0200), // bcdUSB (2.00)
|
USBShort(0x0210), // bcdUSB
|
||||||
|
////TODO: Is it also available elsewhere?
|
||||||
|
|
||||||
// We need to use a device other than the USB-IF standard, set to 0x00
|
// We need to use a device other than the USB-IF standard, set to 0x00
|
||||||
0x00, // bDeviceClass
|
0x00, // bDeviceClass
|
||||||
|
|
|
@ -197,13 +197,13 @@ typedef struct
|
||||||
*/
|
*/
|
||||||
typedef struct
|
typedef struct
|
||||||
{
|
{
|
||||||
struct usbip_stage2_header_basic base;
|
usbip_stage2_header_basic base;
|
||||||
|
|
||||||
union {
|
union {
|
||||||
struct usbip_stage2_header_cmd_submit cmd_submit;
|
usbip_stage2_header_cmd_submit cmd_submit;
|
||||||
struct usbip_stage2_header_ret_submit ret_submit;
|
usbip_stage2_header_ret_submit ret_submit;
|
||||||
struct usbip_stage2_header_cmd_unlink cmd_unlink;
|
usbip_stage2_header_cmd_unlink cmd_unlink;
|
||||||
struct usbip_stage2_header_ret_unlink ret_unlink;
|
usbip_stage2_header_ret_unlink ret_unlink;
|
||||||
} u;
|
} u;
|
||||||
} __attribute__((packed)) usbip_stage2_header;
|
} __attribute__((packed)) usbip_stage2_header;
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
set(COMPONENT_SRCS "main.c timer.c tcp_server.c usbip_server.c")
|
set(COMPONENT_SRCS "main.c timer.c tcp_server.c usbip_server.c DAP_handle.c")
|
||||||
set(COMPONENT_ADD_INCLUDEDIRS ". $ENV{IDF_PATH}/components/esp8266/include/esp8266/ ../components/USBIP")
|
set(COMPONENT_ADD_INCLUDEDIRS ". $ENV{IDF_PATH}/components/esp8266/include/esp8266/ ../components/USBIP")
|
||||||
|
|
||||||
register_component()
|
register_component()
|
||||||
|
|
|
@ -0,0 +1,45 @@
|
||||||
|
/**
|
||||||
|
* @file DAP_handle.c
|
||||||
|
* @brief Handle DAP packets and transaction push
|
||||||
|
* @version 0.1
|
||||||
|
* @date 2020-01-25
|
||||||
|
*
|
||||||
|
* @copyright Copyright (c) 2020
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <stdint.h>
|
||||||
|
#include "usbip_server.h"
|
||||||
|
#include "DAP_handle.h"
|
||||||
|
#include "DAP.h"
|
||||||
|
|
||||||
|
////TODO: Merge this
|
||||||
|
#define DAP_PACKET_SIZE 512
|
||||||
|
|
||||||
|
|
||||||
|
uint8_t data_out[DAP_PACKET_SIZE];
|
||||||
|
int respond = 0;
|
||||||
|
|
||||||
|
|
||||||
|
void handle_dap_data_request(usbip_stage2_header *header)
|
||||||
|
{
|
||||||
|
uint8_t * data_in = (uint8_t *)header;
|
||||||
|
data_in = &(data_in[sizeof(usbip_stage2_header)]);
|
||||||
|
// Point to the beginning of the URB packet
|
||||||
|
respond = DAP_ProcessCommand((uint8_t *)data_in, (uint8_t *)data_out);
|
||||||
|
send_stage2_submit(header, 0, 0);
|
||||||
|
|
||||||
|
}
|
||||||
|
void handle_dap_data_response(usbip_stage2_header *header)
|
||||||
|
{
|
||||||
|
if (respond) {
|
||||||
|
respond = 0;
|
||||||
|
//os_printf("*** Will respond");
|
||||||
|
send_stage2_submit_data(header, 0, data_out, DAP_PACKET_SIZE);
|
||||||
|
|
||||||
|
//os_printf("*** RESPONDED ***");
|
||||||
|
} else {
|
||||||
|
//os_printf("*** Will NOT respond");
|
||||||
|
send_stage2_submit(header, 0, 0);
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,8 @@
|
||||||
|
#ifndef __DAP_HANDLE_H__
|
||||||
|
#define __DAP_HANDLE_H__
|
||||||
|
|
||||||
|
#include "usbip_defs.h"
|
||||||
|
|
||||||
|
void handle_dap_data_request(usbip_stage2_header *header);
|
||||||
|
void handle_dap_data_response(usbip_stage2_header *header);
|
||||||
|
#endif
|
|
@ -121,7 +121,6 @@ static void send_device_list()
|
||||||
|
|
||||||
static void send_device_info()
|
static void send_device_info()
|
||||||
{
|
{
|
||||||
//// TODO:fill this
|
|
||||||
os_printf("Sending device info...");
|
os_printf("Sending device info...");
|
||||||
usbip_stage1_usb_device device;
|
usbip_stage1_usb_device device;
|
||||||
|
|
||||||
|
@ -172,7 +171,7 @@ static void send_interface_info()
|
||||||
int emulate(uint8_t *buffer, uint32_t length)
|
int emulate(uint8_t *buffer, uint32_t length)
|
||||||
{
|
{
|
||||||
// usbip_stage2_header header;
|
// usbip_stage2_header header;
|
||||||
int command = read_stage2_command((usbip_stage2_header *)buffer); ////TODO: fill this
|
int command = read_stage2_command((usbip_stage2_header *)buffer, length); ////TODO: fill this
|
||||||
if (command < 0)
|
if (command < 0)
|
||||||
{
|
{
|
||||||
return -1;
|
return -1;
|
||||||
|
@ -272,13 +271,13 @@ static int handle_submit(usbip_stage2_header *header)
|
||||||
case 0x01:
|
case 0x01:
|
||||||
if (header->base.direction == 0)
|
if (header->base.direction == 0)
|
||||||
{
|
{
|
||||||
// Serial.println("EP 01 DATA FROM HOST");
|
// os_printf("EP 01 DATA FROM HOST");
|
||||||
handle_data_request(header);
|
handle_dap_data_request(header);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// Serial.println("EP 01 DATA TO HOST");
|
// os_printf("EP 01 DATA TO HOST");
|
||||||
handle_data_response(header);
|
handle_dap_data_response(header);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue