2
2
* Copyright (c) 2013-2020 Arm Limited. All rights reserved.
3
3
* Copyright 2019, Cypress Semiconductor Corporation
4
4
* or a subsidiary of Cypress Semiconductor Corporation.
5
+ * Copyright (c) 2021 Chris Reed
5
6
*
6
7
* SPDX-License-Identifier: Apache-2.0
7
8
*
38
39
#include "target_family.h"
39
40
#include "flash_manager.h"
40
41
#include <string.h>
41
-
42
+ #include "daplink_vendor_commands.h"
42
43
43
44
#ifdef DRAG_N_DROP_SUPPORT
44
45
#include "file_stream.h"
@@ -67,15 +68,15 @@ uint32_t DAP_ProcessVendorCommand(const uint8_t *request, uint8_t *response) {
67
68
* response ++ = * request ; // copy Command ID
68
69
69
70
switch (* request ++ ) { // first byte in request is Command ID
70
- case ID_DAP_Vendor0 : {
71
+ case ID_DAP_GetUniqueID : {
71
72
const char * id_str = info_get_unique_id ();
72
73
uint8_t len = strlen (id_str );
73
74
* response ++ = len ;
74
75
memcpy (response , id_str , len );
75
76
num += (len + 1 ); // increment response count by ID length + length byte
76
77
break ;
77
78
}
78
- case ID_DAP_Vendor1 : {
79
+ case ID_DAP_UART_GetLineCoding : {
79
80
// get line coding
80
81
int32_t read_len = sizeof (CDC_LINE_CODING );
81
82
CDC_LINE_CODING cdc_line_coding ;
@@ -84,7 +85,7 @@ uint32_t DAP_ProcessVendorCommand(const uint8_t *request, uint8_t *response) {
84
85
num += (read_len + 1 );
85
86
break ;
86
87
}
87
- case ID_DAP_Vendor2 : {
88
+ case ID_DAP_UART_SetConfiguration : {
88
89
// set uart configuration
89
90
CDC_LINE_CODING cdc_line_coding ;
90
91
USBD_CDC_ACM_PortGetLineCoding (& cdc_line_coding );
@@ -98,7 +99,7 @@ uint32_t DAP_ProcessVendorCommand(const uint8_t *request, uint8_t *response) {
98
99
num += (sizeof (uint32_t ) << 16 ) | 1 ;
99
100
break ;
100
101
}
101
- case ID_DAP_Vendor3 : {
102
+ case ID_DAP_UART_Read : {
102
103
// uart read
103
104
int32_t read_len = 62 ;
104
105
read_len = uart_read_data (response + 1 , read_len );
@@ -110,7 +111,7 @@ uint32_t DAP_ProcessVendorCommand(const uint8_t *request, uint8_t *response) {
110
111
num += (read_len + 1 );
111
112
break ;
112
113
}
113
- case ID_DAP_Vendor4 : {
114
+ case ID_DAP_UART_Write : {
114
115
// uart write
115
116
int32_t write_len = * request ;
116
117
request ++ ;
@@ -123,7 +124,7 @@ uint32_t DAP_ProcessVendorCommand(const uint8_t *request, uint8_t *response) {
123
124
case ID_DAP_Vendor5 : break ;
124
125
case ID_DAP_Vendor6 : break ;
125
126
case ID_DAP_Vendor7 : break ;
126
- case ID_DAP_Vendor8 : {
127
+ case ID_DAP_SetUSBTestMode : {
127
128
* response = 1 ;
128
129
if (0 == * request ) {
129
130
main_usb_set_test_mode (false);
@@ -135,7 +136,7 @@ uint32_t DAP_ProcessVendorCommand(const uint8_t *request, uint8_t *response) {
135
136
num += (1U << 16 ) | 1U ; // increment request and response count each by 1
136
137
break ;
137
138
}
138
- case ID_DAP_Vendor9 : {
139
+ case ID_DAP_ResetTargetIfNoAutoReset : {
139
140
// reset target
140
141
* response = 1 ;
141
142
if (!config_get_auto_rst ()) {
@@ -145,19 +146,19 @@ uint32_t DAP_ProcessVendorCommand(const uint8_t *request, uint8_t *response) {
145
146
break ;
146
147
}
147
148
#ifdef DRAG_N_DROP_SUPPORT
148
- case ID_DAP_Vendor10 : {
149
+ case ID_DAP_MSD_Open : {
149
150
// open mass storage device stream
150
151
* response = stream_open ((stream_type_t )(* request ));
151
152
num += (1 << 16 ) | 1 ;
152
153
break ;
153
154
}
154
- case ID_DAP_Vendor11 : {
155
+ case ID_DAP_MSD_Close : {
155
156
// close mass storage device stream
156
157
* response = stream_close ();
157
158
num += 1 ;
158
159
break ;
159
160
}
160
- case ID_DAP_Vendor12 : {
161
+ case ID_DAP_MSD_Write : {
161
162
// write to mass storage device
162
163
uint32_t write_len = * request ;
163
164
request ++ ;
@@ -167,7 +168,7 @@ uint32_t DAP_ProcessVendorCommand(const uint8_t *request, uint8_t *response) {
167
168
break ;
168
169
}
169
170
#endif
170
- case ID_DAP_Vendor13 : {
171
+ case ID_DAP_SelectEraseMode : {
171
172
// switching between chip erase and page erase
172
173
// COMMAND(OUT Packet)
173
174
// BYTE 0 1000 1110 0x8D
0 commit comments