15
15
*/
16
16
#include < string>
17
17
#include < vector>
18
+ #include < stdarg.h>
18
19
#include < stdlib.h>
19
20
#include " mbed_events.h"
20
21
#include " mbed-client-cli/ns_cmdline.h"
29
30
30
31
using mbed::nfc::nfc_rf_protocols_bitmask_t ;
31
32
32
- events::EventQueue nfcQueue;
33
+ events::EventQueue HandleTestCommand::_nfcQueue;
34
+
33
35
rtos::Thread nfcThread;
34
- NFCTestShim *pNFC_Test_Shim = NULL ;
36
+ bool human_trace_enabled = true ;
35
37
36
- NFCTestShim *new_testshim ()
38
+ NFCTestShim *HandleTestCommand:: new_testshim ()
37
39
{
38
40
#if MBED_CONF_NFCEEPROM
39
- mbed::nfc::NFCEEPROMDriver &eeprom_driver = get_eeprom_driver (nfcQueue );
41
+ mbed::nfc::NFCEEPROMDriver &eeprom_driver = get_eeprom_driver (_nfcQueue );
40
42
41
- return ((NFCTestShim *)(new NFCProcessEEPROM (nfcQueue , eeprom_driver)));
43
+ return ((NFCTestShim *)(new NFCProcessEEPROM (_nfcQueue , eeprom_driver)));
42
44
#else
43
- return ((NFCTestShim *)(new NFCProcessController (nfcQueue )));
45
+ return ((NFCTestShim *)(new NFCProcessController (_nfcQueue )));
44
46
#endif // EEPROM
45
47
46
48
}
47
49
48
- void nfcRoutine ()
50
+ void HandleTestCommand::nfc_routine ()
49
51
{
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
+ }
51
63
}
52
64
53
65
HandleTestCommand::HandleTestCommand ()
54
66
{
55
- osStatus status = nfcThread.start (mbed::callback (&nfcRoutine ));
67
+ osStatus status = nfcThread.start (mbed::callback (&HandleTestCommand::nfc_routine ));
56
68
MBED_ASSERT (status == osOK);
57
69
}
58
70
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
+
59
108
int HandleTestCommand::cmd_set_last_nfc_error (int argc, char *argv[])
60
109
{
61
110
if (argc <= 1 ) {
62
111
cmd_printf (" setlastnfcerror() invalid parameter(s)\r\n " );
63
112
return (CMDLINE_RETCODE_INVALID_PARAMETERS);
64
113
} else {
65
114
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);
67
116
}
68
117
return (CMDLINE_RETCODE_EXCUTING_CONTINUE);
69
118
}
@@ -72,7 +121,7 @@ int HandleTestCommand::cmd_set_last_nfc_error(int argc, char *argv[])
72
121
int HandleTestCommand::cmd_get_max_ndef (int argc, char *argv[])
73
122
{
74
123
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);
76
125
return CMDLINE_RETCODE_EXCUTING_CONTINUE;
77
126
}
78
127
return CMDLINE_RETCODE_FAIL;
@@ -81,19 +130,18 @@ int HandleTestCommand::cmd_get_max_ndef(int argc, char *argv[])
81
130
82
131
int HandleTestCommand::cmd_init_nfc (int argc, char *argv[])
83
132
{
84
-
85
133
if (pNFC_Test_Shim) {
86
134
cmd_printf (" WARN init called again!\r\n " ); // only legal here, if eeprom driver stops talking
87
135
} else {
88
136
pNFC_Test_Shim = new_testshim ();
89
137
}
90
- nfcQueue .call (pNFC_Test_Shim, &NFCTestShim::cmd_init);
138
+ _nfcQueue .call (pNFC_Test_Shim, &NFCTestShim::cmd_init);
91
139
return (CMDLINE_RETCODE_EXCUTING_CONTINUE);
92
140
}
93
141
94
142
int HandleTestCommand::cmd_read_message (int argc, char *argv[])
95
143
{
96
- nfcQueue .call (pNFC_Test_Shim, &NFCTestShim::cmd_read_nfc_contents);
144
+ _nfcQueue .call (pNFC_Test_Shim, &NFCTestShim::cmd_read_nfc_contents);
97
145
98
146
return (CMDLINE_RETCODE_EXCUTING_CONTINUE);
99
147
}
@@ -109,8 +157,8 @@ int HandleTestCommand::cmd_set_smartposter(int argc, char *argv[])
109
157
char *uri = (char *) malloc (strlen (argv[1 ]) + 1 );
110
158
if (uri) {
111
159
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
114
162
} else {
115
163
cmd_printf (" WARN out of memory!\r\n " );
116
164
return (CMDLINE_RETCODE_FAIL);
@@ -119,10 +167,9 @@ int HandleTestCommand::cmd_set_smartposter(int argc, char *argv[])
119
167
return (CMDLINE_RETCODE_EXCUTING_CONTINUE);
120
168
}
121
169
122
- // todo: jira IOTPAN-295
123
170
int HandleTestCommand::cmd_erase (int argc, char *argv[])
124
171
{
125
- nfcQueue .call (pNFC_Test_Shim, &NFCTestShim::cmd_erase);
172
+ _nfcQueue .call (pNFC_Test_Shim, &NFCTestShim::cmd_erase);
126
173
return (CMDLINE_RETCODE_EXCUTING_CONTINUE);
127
174
}
128
175
@@ -169,31 +216,31 @@ int HandleTestCommand::cmd_write_long_ndef_message(int argc, char *argv[])
169
216
data[length] = ' \0 ' ;
170
217
171
218
// 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);
173
220
return (CMDLINE_RETCODE_EXCUTING_CONTINUE);
174
221
}
175
222
176
223
int HandleTestCommand::cmd_start_discovery (int argc, char *argv[])
177
224
{
178
225
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 );
181
228
} 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 );
184
231
}
185
232
return (CMDLINE_RETCODE_EXCUTING_CONTINUE);
186
233
}
187
234
188
235
int HandleTestCommand::cmd_stop_discovery (int argc, char *argv[])
189
236
{
190
- nfcQueue .call (pNFC_Test_Shim, &NFCTestShim::cmd_stop_discovery);
237
+ _nfcQueue .call (pNFC_Test_Shim, &NFCTestShim::cmd_stop_discovery);
191
238
return (CMDLINE_RETCODE_EXCUTING_CONTINUE);
192
239
}
193
240
194
241
int HandleTestCommand::cmd_get_supported_rf_protocols (int argc, char *argv[])
195
242
{
196
- nfcQueue .call (pNFC_Test_Shim, &NFCTestShim::cmd_get_rf_protocols);
243
+ _nfcQueue .call (pNFC_Test_Shim, &NFCTestShim::cmd_get_rf_protocols);
197
244
return (CMDLINE_RETCODE_EXCUTING_CONTINUE);
198
245
}
199
246
@@ -234,38 +281,8 @@ int HandleTestCommand::cmd_configure_rf_protocols(int argc, char *argv[])
234
281
}
235
282
argindex--;
236
283
}
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);
239
286
return (CMDLINE_RETCODE_EXCUTING_CONTINUE);
240
287
}
241
288
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