Skip to content

Commit d285b5f

Browse files
committed
cpp refactored, refactor the python next
1 parent c36f540 commit d285b5f

File tree

10 files changed

+230
-168
lines changed

10 files changed

+230
-168
lines changed

TEST_APPS/device/nfcapp/main.cpp

Lines changed: 36 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -35,35 +35,36 @@ using mbed::nfc::NFCEEPROMDriver;
3535

3636
#endif // MBED_CONF_NFCEEPROM
3737

38+
const char *errorcodes = // descriptions from nfc/stack/nfc_errors.h
39+
" 0 NFC_OK\r\n"
40+
" 1 NFC_ERR_UNKNOWN\r\n"
41+
" 2 NFC_ERR_LENGTH\r\n"
42+
" 3 NFC_ERR_NOT_FOUND\r\n"
43+
" 4 NFC_ERR_UNSUPPORTED\r\n"
44+
" 5 NFC_ERR_PARAMS\r\n"
45+
" 6 NFC_ERR_BUFFER_TOO_SMALL\r\n"
46+
" 7 NFC_ERR_TIMEOUT\r\n"
47+
" 8 NFC_ERR_CRC\r\n"
48+
" 9 NFC_ERR_NOPEER\r\n"
49+
"10 NFC_ERR_PARITY\r\n"
50+
"11 NFC_ERR_FIELD\r\n"
51+
"12 NFC_ERR_COLLISION\r\n"
52+
"13 NFC_ERR_WRONG_COMM\r\n"
53+
"14 NFC_ERR_PROTOCOL\r\n"
54+
"15 NFC_ERR_BUSY\r\n"
55+
"16 NFC_ERR_CONTROLLER\r\n"
56+
"17 NFC_ERR_HALTED\r\n"
57+
"18 NFC_ERR_MAC\r\n"
58+
"19 NFC_ERR_UNDERFLOW\r\n"
59+
"20 NFC_ERR_DISCONNECTED\r\n"
60+
"21 NFC_ERR_ABORTED\r\n";
61+
3862

3963
void wrap_printf(const char *f, va_list a)
4064
{
4165
vprintf(f, a);
4266
}
4367

44-
const char *errorcodes = // descriptions from nfc/stack/nfc_errors.h
45-
" 0 NFC_OK \n"
46-
" 1 NFC_ERR_UNKNOWN\n"
47-
" 2 NFC_ERR_LENGTH \n"
48-
" 3 NFC_ERR_NOT_FOUND\n"
49-
" 4 NFC_ERR_UNSUPPORTED\n"
50-
" 5 NFC_ERR_PARAMS \n"
51-
" 6 NFC_ERR_BUFFER_TOO_SMALL\n"
52-
" 7 NFC_ERR_TIMEOUT\n"
53-
" 8 NFC_ERR_CRC\n"
54-
" 9 NFC_ERR_NOPEER \n"
55-
"10 NFC_ERR_PARITY \n"
56-
"11 NFC_ERR_FIELD\n"
57-
"12 NFC_ERR_COLLISION\n"
58-
"13 NFC_ERR_WRONG_COMM \n"
59-
"14 NFC_ERR_PROTOCOL \n"
60-
"15 NFC_ERR_BUSY \n"
61-
"16 NFC_ERR_CONTROLLER \n"
62-
"17 NFC_ERR_HALTED \n"
63-
"18 NFC_ERR_MAC\n"
64-
"19 NFC_ERR_UNDERFLOW\n"
65-
"20 NFC_ERR_DISCONNECTED \n"
66-
"21 NFC_ERR_ABORTED\n";
6768

6869
/** Disables VT100 etc. for easy manual UI interaction */
6970
int seteasy(int argc, char *argv[])
@@ -75,6 +76,7 @@ int seteasy(int argc, char *argv[])
7576
}
7677
return (CMDLINE_RETCODE_SUCCESS);
7778
}
79+
7880
/**
7981
* This test app can be used standalone interactively with at 115200 baud terminal. It is designed to work with the
8082
* IceTea test framework https://os.mbed.com/docs/latest/tools/icetea-testing-applications.html . This app does
@@ -88,7 +90,7 @@ int seteasy(int argc, char *argv[])
8890
* If using an NFC EEPROM, an extra library is needed. Please see the documentation in the README.MD for instructions
8991
* on how to modify this test for new drivers/targets, and the steps to run this test suite.
9092
*/
91-
int main(int argc, char *argv[])
93+
int main()
9294
{
9395
cmd_init(&wrap_printf);
9496
cmd_add("getlastnfcerror", HandleTestCommand::cmd_get_last_nfc_error,
@@ -127,6 +129,8 @@ int main(int argc, char *argv[])
127129
"set rf protocols", "-p [t1t]/[t2t]/[t3t]/[isodep]/[nfcdep]/[t5t]");
128130
cmd_add("easy", seteasy, "Use human readable terminal output",
129131
"echo off,vt100 off,return-codes visible");
132+
cmd_add("trace", HandleTestCommand::cmd_set_trace, "detailed tracing on/off, ",
133+
"Defaults to enabled; values like 'on','true','1' all turn it on, anything else turns off detailed tracing.");
130134

131135
#if MBED_CONF_NFCEEPROM
132136
cmd_printf("MBED NFC EEPROM defined\r\n");
@@ -135,16 +139,17 @@ int main(int argc, char *argv[])
135139
#endif
136140

137141
#ifdef TARGET_M24SR
138-
cmd_printf("Using driver:M24SR\r\n");
142+
cmd_printf("Using driver: M24SR\r\n");
139143
#endif
140144
#ifdef TARGET_PN512
141-
cmd_printf("Using driver:PN512\r\n");
145+
cmd_printf("Using driver: PN512\r\n");
142146
#endif
143-
144-
int c;
145-
HandleTestCommand handleCommands; // starts handling nfc messages
146-
while ((c = getc(stdin)) != EOF) {
147-
cmd_char_input(c);
147+
{
148+
int c;
149+
HandleTestCommand handleCommands; // For handling test commands and set nfc message queue
150+
while ((c = getc(stdin)) != EOF) {
151+
cmd_char_input(c);
152+
}
148153
}
149154
return 0;
150155
}

TEST_APPS/device/nfcapp/nfccommands.cpp

Lines changed: 74 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
*/
1616
#include <string>
1717
#include <vector>
18+
#include <stdarg.h>
1819
#include <stdlib.h>
1920
#include "mbed_events.h"
2021
#include "mbed-client-cli/ns_cmdline.h"
@@ -29,41 +30,89 @@
2930

3031
using mbed::nfc::nfc_rf_protocols_bitmask_t;
3132

32-
events::EventQueue nfcQueue;
33+
events::EventQueue HandleTestCommand::_nfcQueue;
34+
3335
rtos::Thread nfcThread;
34-
NFCTestShim *pNFC_Test_Shim = NULL;
36+
bool human_trace_enabled = true;
3537

36-
NFCTestShim *new_testshim()
38+
NFCTestShim *HandleTestCommand::new_testshim()
3739
{
3840
#if MBED_CONF_NFCEEPROM
39-
mbed::nfc::NFCEEPROMDriver &eeprom_driver = get_eeprom_driver(nfcQueue);
41+
mbed::nfc::NFCEEPROMDriver &eeprom_driver = get_eeprom_driver(_nfcQueue);
4042

41-
return ((NFCTestShim *)(new NFCProcessEEPROM(nfcQueue, eeprom_driver)));
43+
return ((NFCTestShim *)(new NFCProcessEEPROM(_nfcQueue, eeprom_driver)));
4244
#else
43-
return ((NFCTestShim *)(new NFCProcessController(nfcQueue)));
45+
return ((NFCTestShim *)(new NFCProcessController(_nfcQueue)));
4446
#endif // EEPROM
4547

4648
}
4749

48-
void nfcRoutine()
50+
void HandleTestCommand::nfc_routine()
4951
{
50-
nfcQueue.dispatch_forever();
52+
_nfcQueue.dispatch_forever();
53+
}
54+
55+
void trace_printf(const char *fmt, ...)
56+
{
57+
if (human_trace_enabled) {
58+
va_list ap;
59+
va_start(ap, fmt);
60+
cmd_vprintf(fmt, ap);
61+
va_end(ap);
62+
}
5163
}
5264

5365
HandleTestCommand::HandleTestCommand()
5466
{
55-
osStatus status = nfcThread.start(mbed::callback(&nfcRoutine));
67+
osStatus status = nfcThread.start(mbed::callback(&HandleTestCommand::nfc_routine));
5668
MBED_ASSERT(status == osOK);
5769
}
5870

71+
int HandleTestCommand::cmd_get_last_nfc_error(int argc, char *argv[])
72+
{
73+
_nfcQueue.call(NFCTestShim::cmd_get_last_nfc_error);
74+
return (CMDLINE_RETCODE_EXCUTING_CONTINUE);
75+
}
76+
77+
/** returns compile time flag if NFC EEPROM was compiled */
78+
int HandleTestCommand::cmd_get_conf_nfceeprom(int argc, char *argv[])
79+
{
80+
_nfcQueue.call(NFCTestShim::cmd_get_conf_nfceeprom);
81+
return (CMDLINE_RETCODE_EXCUTING_CONTINUE);
82+
}
83+
84+
85+
86+
int HandleTestCommand::cmd_set_trace(int argc, char *argv[])
87+
{
88+
human_trace_enabled = false;
89+
if (argc > 1) {
90+
static char buffer[7];
91+
char *p_buffer = buffer;
92+
strncpy(buffer, argv[1], sizeof(buffer) - 1);
93+
buffer[sizeof(buffer) - 1] = 0;
94+
while (*p_buffer) {
95+
*p_buffer = toupper(*p_buffer);
96+
p_buffer++;
97+
}
98+
cmd_printf(buffer);
99+
human_trace_enabled = (0 == strcmp(buffer, "TRUE")) || (0 == strcmp(buffer, "1")) || (0 == strcmp(buffer, "ON"));
100+
}
101+
cmd_printf("set trace '%s'", (human_trace_enabled ? "true" : "false"));
102+
return (CMDLINE_RETCODE_SUCCESS);
103+
}
104+
105+
106+
////////////////////////////////////////////////////////////////////////////////////
107+
59108
int HandleTestCommand::cmd_set_last_nfc_error(int argc, char *argv[])
60109
{
61110
if (argc <= 1) {
62111
cmd_printf("setlastnfcerror() invalid parameter(s)\r\n");
63112
return (CMDLINE_RETCODE_INVALID_PARAMETERS);
64113
} else {
65114
int value = strtol(argv[1], NULL, 10);
66-
nfcQueue.call(NFCTestShim::cmd_set_last_nfc_error, value);
115+
_nfcQueue.call(NFCTestShim::cmd_set_last_nfc_error, value);
67116
}
68117
return (CMDLINE_RETCODE_EXCUTING_CONTINUE);
69118
}
@@ -72,7 +121,7 @@ int HandleTestCommand::cmd_set_last_nfc_error(int argc, char *argv[])
72121
int HandleTestCommand::cmd_get_max_ndef(int argc, char *argv[])
73122
{
74123
if (pNFC_Test_Shim) {
75-
nfcQueue.call(pNFC_Test_Shim, &NFCTestShim::cmd_get_max_ndef);
124+
_nfcQueue.call(pNFC_Test_Shim, &NFCTestShim::cmd_get_max_ndef);
76125
return CMDLINE_RETCODE_EXCUTING_CONTINUE;
77126
}
78127
return CMDLINE_RETCODE_FAIL;
@@ -81,19 +130,18 @@ int HandleTestCommand::cmd_get_max_ndef(int argc, char *argv[])
81130

82131
int HandleTestCommand::cmd_init_nfc(int argc, char *argv[])
83132
{
84-
85133
if (pNFC_Test_Shim) {
86134
cmd_printf("WARN init called again!\r\n"); // only legal here, if eeprom driver stops talking
87135
} else {
88136
pNFC_Test_Shim = new_testshim();
89137
}
90-
nfcQueue.call(pNFC_Test_Shim, &NFCTestShim::cmd_init);
138+
_nfcQueue.call(pNFC_Test_Shim, &NFCTestShim::cmd_init);
91139
return (CMDLINE_RETCODE_EXCUTING_CONTINUE);
92140
}
93141

94142
int HandleTestCommand::cmd_read_message(int argc, char *argv[])
95143
{
96-
nfcQueue.call(pNFC_Test_Shim, &NFCTestShim::cmd_read_nfc_contents);
144+
_nfcQueue.call(pNFC_Test_Shim, &NFCTestShim::cmd_read_nfc_contents);
97145

98146
return (CMDLINE_RETCODE_EXCUTING_CONTINUE);
99147
}
@@ -109,8 +157,8 @@ int HandleTestCommand::cmd_set_smartposter(int argc, char *argv[])
109157
char *uri = (char *) malloc(strlen(argv[1]) + 1);
110158
if (uri) {
111159
strcpy(uri, argv[1]);
112-
nfcQueue.call(pNFC_Test_Shim, &NFCTestShim::cmd_set_smartposter,
113-
uri); // called thread must free
160+
_nfcQueue.call(pNFC_Test_Shim, &NFCTestShim::cmd_set_smartposter,
161+
uri); // called thread must free
114162
} else {
115163
cmd_printf("WARN out of memory!\r\n");
116164
return (CMDLINE_RETCODE_FAIL);
@@ -119,10 +167,9 @@ int HandleTestCommand::cmd_set_smartposter(int argc, char *argv[])
119167
return (CMDLINE_RETCODE_EXCUTING_CONTINUE);
120168
}
121169

122-
// todo: jira IOTPAN-295
123170
int HandleTestCommand::cmd_erase(int argc, char *argv[])
124171
{
125-
nfcQueue.call(pNFC_Test_Shim, &NFCTestShim::cmd_erase);
172+
_nfcQueue.call(pNFC_Test_Shim, &NFCTestShim::cmd_erase);
126173
return (CMDLINE_RETCODE_EXCUTING_CONTINUE);
127174
}
128175

@@ -169,31 +216,31 @@ int HandleTestCommand::cmd_write_long_ndef_message(int argc, char *argv[])
169216
data[length] = '\0';
170217

171218
// method must release buffer
172-
nfcQueue.call(pNFC_Test_Shim, &NFCTestShim::cmd_write_long, data);
219+
_nfcQueue.call(pNFC_Test_Shim, &NFCTestShim::cmd_write_long, data);
173220
return (CMDLINE_RETCODE_EXCUTING_CONTINUE);
174221
}
175222

176223
int HandleTestCommand::cmd_start_discovery(int argc, char *argv[])
177224
{
178225
if ((argc > 1) && (0 == strcmp(argv[1], "man"))) {
179-
cmd_printf("User must restart discovery manually()\r\n");
180-
nfcQueue.call(pNFC_Test_Shim, &NFCTestShim::cmd_start_discovery, false);
226+
trace_printf("User must restart discovery manually()\r\n");
227+
_nfcQueue.call(pNFC_Test_Shim, &NFCTestShim::cmd_start_discovery, false);
181228
} else {
182-
cmd_printf("App will restart discovery loop on auto()\r\n");
183-
nfcQueue.call(pNFC_Test_Shim, &NFCTestShim::cmd_start_discovery, true);
229+
trace_printf("App will restart discovery loop on auto()\r\n");
230+
_nfcQueue.call(pNFC_Test_Shim, &NFCTestShim::cmd_start_discovery, true);
184231
}
185232
return (CMDLINE_RETCODE_EXCUTING_CONTINUE);
186233
}
187234

188235
int HandleTestCommand::cmd_stop_discovery(int argc, char *argv[])
189236
{
190-
nfcQueue.call(pNFC_Test_Shim, &NFCTestShim::cmd_stop_discovery);
237+
_nfcQueue.call(pNFC_Test_Shim, &NFCTestShim::cmd_stop_discovery);
191238
return (CMDLINE_RETCODE_EXCUTING_CONTINUE);
192239
}
193240

194241
int HandleTestCommand::cmd_get_supported_rf_protocols(int argc, char *argv[])
195242
{
196-
nfcQueue.call(pNFC_Test_Shim, &NFCTestShim::cmd_get_rf_protocols);
243+
_nfcQueue.call(pNFC_Test_Shim, &NFCTestShim::cmd_get_rf_protocols);
197244
return (CMDLINE_RETCODE_EXCUTING_CONTINUE);
198245
}
199246

@@ -234,38 +281,8 @@ int HandleTestCommand::cmd_configure_rf_protocols(int argc, char *argv[])
234281
}
235282
argindex--;
236283
}
237-
nfcQueue.call(pNFC_Test_Shim, &NFCTestShim::cmd_configure_rf_protocols,
238-
protocols);
284+
_nfcQueue.call(pNFC_Test_Shim, &NFCTestShim::cmd_configure_rf_protocols,
285+
protocols);
239286
return (CMDLINE_RETCODE_EXCUTING_CONTINUE);
240287
}
241288

242-
// todo: implement
243-
int cmd_start_stop_discovery_wait_tag(int argc, char *argv[])
244-
{
245-
246-
return (CMDLINE_RETCODE_COMMAND_NOT_IMPLEMENTED);
247-
}
248-
249-
/////////////////////////////////////////////////////////////////////
250-
// boilerplate only
251-
252-
int cmd_is_iso7816_supported(int argc, char *argv[])
253-
{
254-
return (CMDLINE_RETCODE_COMMAND_NOT_IMPLEMENTED);
255-
}
256-
257-
int cmd_add_iso7816_application(int argc, char *argv[])
258-
{
259-
return (CMDLINE_RETCODE_COMMAND_NOT_IMPLEMENTED);
260-
}
261-
262-
int cmd_set_tagtype(int argc, char *argv[])
263-
{
264-
return (CMDLINE_RETCODE_COMMAND_NOT_IMPLEMENTED);
265-
}
266-
267-
int cmd_get_tagtype(int argc, char *argv[])
268-
{
269-
return (CMDLINE_RETCODE_COMMAND_NOT_IMPLEMENTED);
270-
}
271-

0 commit comments

Comments
 (0)