@@ -44,7 +44,12 @@ FUNC(tpl_tick, OS_CODE) tpl_trace_get_timestamp()
44
44
extern " C" FUNC(void , OS_CODE) tpl_trace_start()
45
45
{
46
46
# 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
+ }
48
53
# else
49
54
# error "unsupported trace mode: TRACE_FORMAT"
50
55
#endif
@@ -73,7 +78,7 @@ extern "C" FUNC(void, OS_CODE) tpl_trace_proc_change_state(
73
78
tpl_trace_start ();
74
79
# if TRACE_FORMAT == TRACE_FORMAT_SERIAL
75
80
/* TTT 00 SSS (Type, State) */
76
- uint8_t byte = PROC_CHANGE_STATE <<5 | target_state;
81
+ uint8_t byte = PROC_TYPE <<5 | target_state;
77
82
uint8_t chksum = byte;
78
83
Serial.write (byte);
79
84
@@ -99,7 +104,7 @@ extern "C" FUNC(void, OS_CODE) tpl_trace_proc_change_state(
99
104
* trace the lock of a resource by an entity
100
105
* ** Function defined in os/tpl_trace.h **
101
106
* @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)
103
108
*/
104
109
extern " C" FUNC(void , OS_CODE) tpl_trace_res_change_state(
105
110
CONST (tpl_resource_id, AUTOMATIC) res_id,
@@ -108,8 +113,8 @@ extern "C" FUNC(void, OS_CODE) tpl_trace_res_change_state(
108
113
const tpl_tick ts=tpl_trace_get_timestamp ();
109
114
tpl_trace_start ();
110
115
# 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 ) ;
113
118
uint8_t chksum = byte;
114
119
Serial.write (byte);
115
120
@@ -143,8 +148,8 @@ extern "C" FUNC(void, OS_CODE) tpl_trace_time_obj_change_state(
143
148
const tpl_tick ts=tpl_trace_get_timestamp ();
144
149
tpl_trace_start ();
145
150
# 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;
148
153
uint8_t chksum = byte;
149
154
Serial.write (byte);
150
155
@@ -177,8 +182,8 @@ extern "C" FUNC(void, OS_CODE) tpl_trace_time_obj_expire(
177
182
const tpl_tick ts=tpl_trace_get_timestamp ();
178
183
tpl_trace_start ();
179
184
# 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 ;
182
187
uint8_t chksum = byte;
183
188
Serial.write (byte);
184
189
@@ -214,7 +219,7 @@ extern "C" FUNC(void, OS_CODE) tpl_trace_event_set(
214
219
tpl_trace_start ();
215
220
# if TRACE_FORMAT == TRACE_FORMAT_SERIAL
216
221
/* TTT EEEEE (Type, Event) */
217
- uint8_t byte = EVENT_SET <<5 | (event & 0x1F );
222
+ uint8_t byte = EVENT_TYPE <<5 | (event & 0x1F );
218
223
uint8_t chksum = byte;
219
224
Serial.write (byte);
220
225
@@ -226,7 +231,8 @@ extern "C" FUNC(void, OS_CODE) tpl_trace_event_set(
226
231
chksum += byte;
227
232
Serial.write (byte);
228
233
229
- byte = task_target_id & 0xff ;
234
+ // TODO: limited to 128 tasks
235
+ byte = (EVENT_SET_KIND << 7 ) | (task_target_id & 0x7f );
230
236
chksum += byte;
231
237
Serial.write (byte);
232
238
@@ -249,7 +255,7 @@ extern "C" FUNC(void, OS_CODE) tpl_trace_event_reset(
249
255
tpl_trace_start ();
250
256
# if TRACE_FORMAT == TRACE_FORMAT_SERIAL
251
257
/* TTT EEEEE (Type, Event) */
252
- uint8_t byte = EVENT_RESET <<5 | (event & 0x1F );
258
+ uint8_t byte = EVENT_TYPE <<5 | (event & 0x1F );
253
259
uint8_t chksum = byte;
254
260
Serial.write (byte);
255
261
@@ -261,7 +267,7 @@ extern "C" FUNC(void, OS_CODE) tpl_trace_event_reset(
261
267
chksum += byte;
262
268
Serial.write (byte);
263
269
264
- byte = 0 ;
270
+ byte = EVENT_RESET_KIND << 7 ;
265
271
chksum += byte;
266
272
Serial.write (byte);
267
273
@@ -271,6 +277,77 @@ extern "C" FUNC(void, OS_CODE) tpl_trace_event_reset(
271
277
#endif
272
278
}
273
279
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
+
274
351
#define OS_STOP_SEC_CODE
275
352
#include " tpl_memmap.h"
276
353
0 commit comments