18 #include <LLTRACE_impl.h> 19 #include <SEGGER_SYSVIEW.h> 28 SEGGER_SYSVIEW_MODULE LLTRACE_modules[MICROEJ_TRACE_MAX_NB_MODULES];
29 char* LLTRACE_module_names[MICROEJ_TRACE_MAX_NB_MODULES][MICROEJ_TRACE_MAX_MODULE_DESCRIPTION_LENGTH];
35 bool LLTRACE_started =
false;
42 void LLTRACE_IMPL_start() {
43 if(MICROEJ_TRACE_WAIT_FOR_SYSVIEW_CONNECTION){
44 if(SEGGER_SYSVIEW_isConnected() == 0){
45 printf(
"Wait for SystemView Application Connection...\n");
46 while(SEGGER_SYSVIEW_isConnected() == 0){
49 printf(
"SystemView Application Connected.\n");
52 LLTRACE_started =
true;
55 void LLTRACE_IMPL_stop() {
56 if(!MICROEJ_TRACE_OVER_RTOS){
57 SEGGER_SYSVIEW_Stop();
59 LLTRACE_started =
false;
62 bool LLTRACE_IMPL_is_started() {
63 return LLTRACE_started;
66 int32_t LLTRACE_IMPL_declare_event_group(
const char* group_name, int32_t nb_events) {
68 if(module_offset < MICROEJ_TRACE_MAX_NB_MODULES){
69 SEGGER_SYSVIEW_MODULE* module = &LLTRACE_modules[module_offset];
70 char* module_description = (
char*)&LLTRACE_module_names[module_offset];
76 strcpy(module_description, MICROEJ_TRACE_MODULE_DESCRIPTION_PREFIX);
77 strncpy(&module_description[
sizeof(MICROEJ_TRACE_MODULE_DESCRIPTION_PREFIX)-1], group_name, MICROEJ_TRACE_MAX_MODULE_DESCRIPTION_LENGTH-
sizeof(MICROEJ_TRACE_MODULE_DESCRIPTION_PREFIX-1));
78 module_description[MICROEJ_TRACE_MAX_MODULE_DESCRIPTION_LENGTH-1] =
'\0';
79 module->sModule = module_description;
81 module->NumEvents = nb_events;
82 module->EventOffset = 0;
83 module->pfSendModuleDesc = NULL;
86 SEGGER_SYSVIEW_RegisterModule(module);
87 return (int32_t)module;
95 void LLTRACE_IMPL_record_event_void(int32_t group_id, int32_t event_id) {
96 SEGGER_SYSVIEW_MODULE* module = (SEGGER_SYSVIEW_MODULE*) group_id;
97 SEGGER_SYSVIEW_RecordVoid(module->EventOffset + event_id);
100 void LLTRACE_IMPL_record_event_u32(int32_t group_id, int32_t event_id, uint32_t value0) {
101 SEGGER_SYSVIEW_MODULE* module = (SEGGER_SYSVIEW_MODULE*) group_id;
102 SEGGER_SYSVIEW_RecordU32(module->EventOffset + event_id, value0);
105 void LLTRACE_IMPL_record_event_u32x2(int32_t group_id, int32_t event_id, uint32_t value1, uint32_t value2) {
106 SEGGER_SYSVIEW_MODULE* module = (SEGGER_SYSVIEW_MODULE*) group_id;
107 SEGGER_SYSVIEW_RecordU32x2(module->EventOffset + event_id, value1, value2);
110 void LLTRACE_IMPL_record_event_u32x3(int32_t group_id, int32_t event_id, uint32_t value1, uint32_t value2, uint32_t value3) {
111 SEGGER_SYSVIEW_MODULE* module = (SEGGER_SYSVIEW_MODULE*) group_id;
112 SEGGER_SYSVIEW_RecordU32x3(module->EventOffset + event_id, value1, value2, value3);
115 void LLTRACE_IMPL_record_event_u32x4(int32_t group_id, int32_t event_id, uint32_t value1, uint32_t value2, uint32_t value3, uint32_t value4) {
116 SEGGER_SYSVIEW_MODULE* module = (SEGGER_SYSVIEW_MODULE*) group_id;
117 SEGGER_SYSVIEW_RecordU32x4(module->EventOffset + event_id, value1, value2, value3, value4);
120 void LLTRACE_IMPL_record_event_u32x5(int32_t group_id, int32_t event_id, uint32_t value1, uint32_t value2, uint32_t value3, uint32_t value4, uint32_t value5) {
121 SEGGER_SYSVIEW_MODULE* module = (SEGGER_SYSVIEW_MODULE*) group_id;
122 SEGGER_SYSVIEW_RecordU32x5(module->EventOffset + event_id, value1, value2, value3, value4, value5);
125 void LLTRACE_IMPL_record_event_u32x6(int32_t group_id, int32_t event_id, uint32_t value1, uint32_t value2, uint32_t value3, uint32_t value4, uint32_t value5, uint32_t value6) {
126 SEGGER_SYSVIEW_MODULE* module = (SEGGER_SYSVIEW_MODULE*) group_id;
127 SEGGER_SYSVIEW_RecordU32x6(module->EventOffset + event_id, value1, value2, value3, value4, value5, value6);
130 void LLTRACE_IMPL_record_event_u32x7(int32_t group_id, int32_t event_id, uint32_t value1, uint32_t value2, uint32_t value3, uint32_t value4, uint32_t value5, uint32_t value6, uint32_t value7) {
131 SEGGER_SYSVIEW_MODULE* module = (SEGGER_SYSVIEW_MODULE*) group_id;
132 SEGGER_SYSVIEW_RecordU32x7(module->EventOffset + event_id, value1, value2, value3, value4, value5, value6, value7);
135 void LLTRACE_IMPL_record_event_u32x8(int32_t group_id, int32_t event_id, uint32_t value1, uint32_t value2, uint32_t value3, uint32_t value4, uint32_t value5, uint32_t value6, uint32_t value7, uint32_t value8) {
136 SEGGER_SYSVIEW_MODULE* module = (SEGGER_SYSVIEW_MODULE*) group_id;
137 SEGGER_SYSVIEW_RecordU32x8(module->EventOffset + event_id, value1, value2, value3, value4, value5, value6, value7, value8);
140 void LLTRACE_IMPL_record_event_u32x9(int32_t group_id, int32_t event_id, uint32_t value1, uint32_t value2, uint32_t value3, uint32_t value4, uint32_t value5, uint32_t value6, uint32_t value7, uint32_t value8, uint32_t value9) {
141 SEGGER_SYSVIEW_MODULE* module = (SEGGER_SYSVIEW_MODULE*) group_id;
142 SEGGER_SYSVIEW_RecordU32x9(module->EventOffset + event_id, value1, value2, value3, value4, value5, value6, value7, value8, value9);
145 void LLTRACE_IMPL_record_event_u32x10(int32_t group_id, int32_t event_id, uint32_t value1, uint32_t value2, uint32_t value3, uint32_t value4, uint32_t value5, uint32_t value6, uint32_t value7, uint32_t value8, uint32_t value9, uint32_t value10){
146 SEGGER_SYSVIEW_MODULE* module = (SEGGER_SYSVIEW_MODULE*) group_id;
147 SEGGER_SYSVIEW_RecordU32x10(module->EventOffset + event_id, value1, value2, value3, value4, value5, value6, value7, value8, value9, value10);
150 void LLTRACE_IMPL_record_event_end(int32_t group_id, int32_t event_id){
151 SEGGER_SYSVIEW_MODULE* module = (SEGGER_SYSVIEW_MODULE*) group_id;
152 SEGGER_SYSVIEW_RecordEndCall(module->EventOffset + event_id);
155 void LLTRACE_IMPL_record_event_end_u32(int32_t group_id, int32_t event_id, uint32_t value1){
156 SEGGER_SYSVIEW_MODULE* module = (SEGGER_SYSVIEW_MODULE*) group_id;
157 SEGGER_SYSVIEW_RecordEndCallU32(module->EventOffset + event_id, value1);
int32_t LLTRACE_next_free_module_offset
MicroEJ Trace library low level API.