Skip to content

Commit 32dfbcc

Browse files
committed
[trace] arduino port update
1 parent d4d320d commit 32dfbcc

File tree

1 file changed

+90
-13
lines changed

1 file changed

+90
-13
lines changed

tpl_trace.cpp

Lines changed: 90 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,12 @@ FUNC(tpl_tick, OS_CODE) tpl_trace_get_timestamp()
4444
extern "C" FUNC(void, OS_CODE) tpl_trace_start()
4545
{
4646
# if TRACE_FORMAT == TRACE_FORMAT_SERIAL
47-
Serial.begin(115200); //115200 bps, 8N1
47+
static uint8_t serialIsInit = 0;
48+
if(!serialIsInit) {
49+
Serial.begin(115200); //115200 bps, 8N1
50+
while(!Serial);
51+
serialIsInit = 1;
52+
}
4853
# else
4954
# error "unsupported trace mode: TRACE_FORMAT"
5055
#endif
@@ -73,7 +78,7 @@ extern "C" FUNC(void, OS_CODE) tpl_trace_proc_change_state(
7378
tpl_trace_start();
7479
# if TRACE_FORMAT == TRACE_FORMAT_SERIAL
7580
/* TTT 00 SSS (Type, State) */
76-
uint8_t byte = PROC_CHANGE_STATE<<5 | target_state;
81+
uint8_t byte = PROC_TYPE<<5 | target_state;
7782
uint8_t chksum = byte;
7883
Serial.write(byte);
7984

@@ -99,7 +104,7 @@ extern "C" FUNC(void, OS_CODE) tpl_trace_proc_change_state(
99104
* trace the lock of a resource by an entity
100105
* ** Function defined in os/tpl_trace.h **
101106
* @param res_id identifier of the locked resource
102-
* @param target_state identifier of the locked resource
107+
* @param target_state new state of the resource (RESOURCE_FREE / RESOURCE_TAKEN)
103108
*/
104109
extern "C" FUNC(void, OS_CODE) tpl_trace_res_change_state(
105110
CONST(tpl_resource_id, AUTOMATIC) res_id,
@@ -108,8 +113,8 @@ extern "C" FUNC(void, OS_CODE) tpl_trace_res_change_state(
108113
const tpl_tick ts=tpl_trace_get_timestamp();
109114
tpl_trace_start();
110115
# if TRACE_FORMAT == TRACE_FORMAT_SERIAL
111-
/* TTT 00 SSS (Type, State) */
112-
uint8_t byte = RES_CHANGE_STATE<<5 | target_state;
116+
/* TTT 00 00S (Type, State) */
117+
uint8_t byte = (RES_TYPE<<5) | (target_state & 1);
113118
uint8_t chksum = byte;
114119
Serial.write(byte);
115120

@@ -143,8 +148,8 @@ extern "C" FUNC(void, OS_CODE) tpl_trace_time_obj_change_state(
143148
const tpl_tick ts=tpl_trace_get_timestamp();
144149
tpl_trace_start();
145150
# if TRACE_FORMAT == TRACE_FORMAT_SERIAL
146-
/* TTT 00 SSS (Type, State) */
147-
uint8_t byte = TIMEOBJ_CHANGE_STATE<<5 | target_state;
151+
/* TTT K0 SSS (Type, Kind, State) */
152+
uint8_t byte = TIMEOBJ_TYPE<<5 | TIMEOBJ_CHANGE_STATE_KIND <<4 | target_state;
148153
uint8_t chksum = byte;
149154
Serial.write(byte);
150155

@@ -177,8 +182,8 @@ extern "C" FUNC(void, OS_CODE) tpl_trace_time_obj_expire(
177182
const tpl_tick ts=tpl_trace_get_timestamp();
178183
tpl_trace_start();
179184
# if TRACE_FORMAT == TRACE_FORMAT_SERIAL
180-
/* TTT 00000 (Type) */
181-
uint8_t byte = TIMEOBJ_EXPIRE<<5;
185+
/* TTT K0000 (Type, Kind) */
186+
uint8_t byte = TIMEOBJ_TYPE<<5 | TIMEOBJ_EXPIRE_KIND <<4;
182187
uint8_t chksum = byte;
183188
Serial.write(byte);
184189

@@ -214,7 +219,7 @@ extern "C" FUNC(void, OS_CODE) tpl_trace_event_set(
214219
tpl_trace_start();
215220
# if TRACE_FORMAT == TRACE_FORMAT_SERIAL
216221
/* TTT EEEEE (Type, Event) */
217-
uint8_t byte = EVENT_SET<<5 | (event & 0x1F);
222+
uint8_t byte = EVENT_TYPE<<5 | (event & 0x1F);
218223
uint8_t chksum = byte;
219224
Serial.write(byte);
220225

@@ -226,7 +231,8 @@ extern "C" FUNC(void, OS_CODE) tpl_trace_event_set(
226231
chksum += byte;
227232
Serial.write(byte);
228233

229-
byte = task_target_id & 0xff;
234+
//TODO: limited to 128 tasks
235+
byte = (EVENT_SET_KIND << 7) | (task_target_id & 0x7f);
230236
chksum += byte;
231237
Serial.write(byte);
232238

@@ -249,7 +255,7 @@ extern "C" FUNC(void, OS_CODE) tpl_trace_event_reset(
249255
tpl_trace_start();
250256
# if TRACE_FORMAT == TRACE_FORMAT_SERIAL
251257
/* TTT EEEEE (Type, Event) */
252-
uint8_t byte = EVENT_RESET<<5 | (event & 0x1F);
258+
uint8_t byte = EVENT_TYPE<<5 | (event & 0x1F);
253259
uint8_t chksum = byte;
254260
Serial.write(byte);
255261

@@ -261,7 +267,7 @@ extern "C" FUNC(void, OS_CODE) tpl_trace_event_reset(
261267
chksum += byte;
262268
Serial.write(byte);
263269

264-
byte = 0;
270+
byte = EVENT_RESET_KIND << 7;
265271
chksum += byte;
266272
Serial.write(byte);
267273

@@ -271,6 +277,77 @@ extern "C" FUNC(void, OS_CODE) tpl_trace_event_reset(
271277
#endif
272278
}
273279

280+
/**
281+
* trace the COM message:
282+
* - when a message is sent
283+
*
284+
*/
285+
#if WITH_COM == YES
286+
extern "C" FUNC(void, OS_CODE) tpl_trace_msg_send(
287+
CONST(tpl_message_id, AUTOMATIC) mess_id,
288+
CONST(tpl_bool,AUTOMATIC) is_zero_message)
289+
{
290+
const tpl_tick ts=tpl_trace_get_timestamp();
291+
tpl_trace_start();
292+
# if TRACE_FORMAT == TRACE_FORMAT_SERIAL
293+
/* TTT MMMMM (Type, Message) */
294+
uint8_t byte = MESSAGE_TYPE << 5 | (mess_id & 0x1F);
295+
uint8_t chksum = byte;
296+
Serial.write(byte);
297+
298+
byte = ts >> 8;
299+
chksum += byte;
300+
Serial.write(byte);
301+
302+
byte = ts & 0xff;
303+
chksum += byte;
304+
Serial.write(byte);
305+
306+
byte = (uint8_t)is_zero_message;
307+
chksum += byte;
308+
Serial.write(byte);
309+
310+
Serial.write(chksum);
311+
# else
312+
# error "unsupported trace mode: TRACE_FORMAT"
313+
# endif /* TRACE_FORMAT == TRACE_FORMAT_SERIAL */
314+
}
315+
/**
316+
* trace the message:
317+
* - when a message is received
318+
*
319+
*/
320+
FUNC(void, OS_CODE) tpl_trace_msg_receive(
321+
VAR(tpl_message_id, AUTOMATIC) mess_id)
322+
{
323+
const tpl_tick ts=tpl_trace_get_timestamp();
324+
tpl_trace_start();
325+
# if TRACE_FORMAT == TRACE_FORMAT_SERIAL
326+
/* TTT MMMMM (Type, Message) */
327+
uint8_t byte = MESSAGE_TYPE << 5 | (mess_id & 0x1F);
328+
uint8_t chksum = byte;
329+
Serial.write(byte);
330+
331+
byte = ts >> 8;
332+
chksum += byte;
333+
Serial.write(byte);
334+
335+
byte = ts & 0xff;
336+
chksum += byte;
337+
Serial.write(byte);
338+
339+
byte = (uint8_t)MESSAGE_RECEIVE_KIND;
340+
chksum += byte;
341+
Serial.write(byte);
342+
343+
Serial.write(chksum);
344+
# else
345+
# error "unsupported trace mode: TRACE_FORMAT"
346+
# endif /* TRACE_FORMAT == TRACE_FORMAT_SERIAL */
347+
}
348+
#endif /* WITH_COM == YES */
349+
350+
274351
#define OS_STOP_SEC_CODE
275352
#include "tpl_memmap.h"
276353

0 commit comments

Comments
 (0)