@@ -57,18 +57,30 @@ void add_comma(char *text, int text_size) {
57
57
strlcat (text , "," , text_size );
58
58
}
59
59
60
- void get_chain (uint64_t pkt , char * text , int text_size ) {
60
+ void get_r2f_chain (uint64_t pkt , char * text , int text_size ) {
61
61
uint32_t val ;
62
62
63
63
val = pkt & 0x03ULL ;
64
64
65
65
strlcat (text , "chain=" , text_size );
66
66
67
- strlcat (text , val & 0x02 ? "FIRST+" : "NOT_FIRST+" , text_size );
68
- strlcat (text , val & 0x01 ? "LAST" : "NOT_LAST" , text_size );
67
+ switch (val ) {
68
+ case 0 :
69
+ strlcat (text , "MIDDLE" , text_size );
70
+ break ;
71
+ case 1 :
72
+ strlcat (text , "LAST" , text_size );
73
+ break ;
74
+ case 2 :
75
+ strlcat (text , "FIRST" , text_size );
76
+ break ;
77
+ case 3 :
78
+ strlcat (text , "ONLY" , text_size );
79
+ break ;
80
+ }
69
81
}
70
82
71
- void get_dev_batt_stat (uint64_t pkt , char * text , int text_size ) {
83
+ void get_r2f_dev_batt_stat (uint64_t pkt , char * text , int text_size ) {
72
84
uint32_t val ;
73
85
74
86
pkt >>= 2 ;
@@ -92,7 +104,7 @@ void get_dev_batt_stat(uint64_t pkt, char *text, int text_size) {
92
104
}
93
105
}
94
106
95
- void get_msg_id_type (uint64_t pkt , char * text , int text_size ) {
107
+ void get_r2f_msg_id_type (uint64_t pkt , char * text , int text_size ) {
96
108
uint32_t val ;
97
109
char temp [32 ];
98
110
@@ -113,7 +125,7 @@ void get_msg_id_type(uint64_t pkt, char *text, int text_size) {
113
125
}
114
126
}
115
127
116
- void get_unit_addr_code (uint64_t pkt , char * text , int text_size ) {
128
+ void get_r2f_unit_addr_code (uint64_t pkt , char * text , int text_size ) {
117
129
uint32_t val ;
118
130
char temp [32 ];
119
131
@@ -124,7 +136,7 @@ void get_unit_addr_code(uint64_t pkt, char *text, int text_size) {
124
136
strlcat (text , temp , text_size );
125
137
}
126
138
127
- void get_brake_pressure (uint64_t pkt , char * text , int text_size ) {
139
+ void get_r2f_brake_pressure (uint64_t pkt , char * text , int text_size ) {
128
140
uint32_t val ;
129
141
char temp [32 ];
130
142
@@ -154,7 +166,7 @@ void get_brake_pressure(uint64_t pkt, char *text, int text_size) {
154
166
}
155
167
}
156
168
157
- void get_disc_bits (uint64_t pkt , char * text , int text_size ) {
169
+ void get_r2f_disc_bits (uint64_t pkt , char * text , int text_size ) {
158
170
uint32_t val ;
159
171
char temp [32 ];
160
172
@@ -166,7 +178,7 @@ void get_disc_bits(uint64_t pkt, char *text, int text_size) {
166
178
strlcat (text , temp , text_size );
167
179
}
168
180
169
- void get_valve_bit (uint64_t pkt , char * text , int text_size ) {
181
+ void get_r2f_valve_bit (uint64_t pkt , char * text , int text_size ) {
170
182
uint32_t val ;
171
183
172
184
pkt >>= 39 ;
@@ -176,7 +188,7 @@ void get_valve_bit(uint64_t pkt, char *text, int text_size) {
176
188
strlcat (text , val == 0 ? "FAILED" : "OPERATIONAL" , text_size );
177
189
}
178
190
179
- void get_confirm_bit (uint64_t pkt , char * text , int text_size ) {
191
+ void get_r2f_confirm_bit (uint64_t pkt , char * text , int text_size ) {
180
192
uint32_t val ;
181
193
182
194
pkt >>= 40 ;
@@ -186,7 +198,7 @@ void get_confirm_bit(uint64_t pkt, char *text, int text_size) {
186
198
strlcat (text , val == 0 ? "UPDATE" : "RESPONSE" , text_size );
187
199
}
188
200
189
- void get_disc_bit1 (uint64_t pkt , char * text , int text_size ) {
201
+ void get_r2f_disc_bit1 (uint64_t pkt , char * text , int text_size ) {
190
202
uint32_t val ;
191
203
char temp [32 ];
192
204
@@ -198,7 +210,7 @@ void get_disc_bit1(uint64_t pkt, char *text, int text_size) {
198
210
strlcat (text , temp , text_size );
199
211
}
200
212
201
- void get_motion_bit (uint64_t pkt , char * text , int text_size ) {
213
+ void get_r2f_motion_bit (uint64_t pkt , char * text , int text_size ) {
202
214
uint32_t val ;
203
215
204
216
pkt >>= 42 ;
@@ -208,7 +220,7 @@ void get_motion_bit(uint64_t pkt, char *text, int text_size) {
208
220
strlcat (text , val == 0 ? "STOPPED/NOT_MONITORED" : "IN_MOTION" , text_size );
209
221
}
210
222
211
- void get_mkr_light_batt_bit (uint64_t pkt , char * text , int text_size ) {
223
+ void get_r2f_mkr_light_batt_bit (uint64_t pkt , char * text , int text_size ) {
212
224
uint32_t val ;
213
225
214
226
pkt >>= 43 ;
@@ -218,7 +230,7 @@ void get_mkr_light_batt_bit(uint64_t pkt, char *text, int text_size) {
218
230
strlcat (text , val == 0 ? "OK/NOT_MONITORED" : "WEAK" , text_size );
219
231
}
220
232
221
- void get_mkr_light_bit (uint64_t pkt , char * text , int text_size ) {
233
+ void get_r2f_mkr_light_bit (uint64_t pkt , char * text , int text_size ) {
222
234
uint32_t val ;
223
235
224
236
pkt >>= 44 ;
@@ -228,6 +240,102 @@ void get_mkr_light_bit(uint64_t pkt, char *text, int text_size) {
228
240
strlcat (text , val == 0 ? "OFF/NOT_MONITORED" : "ON" , text_size );
229
241
}
230
242
243
+ void decode_basic_r2f (uint64_t pkt , char * text , int text_size ) {
244
+
245
+ get_r2f_chain (pkt , text , text_size );
246
+ add_comma (text , text_size );
247
+ get_r2f_dev_batt_stat (pkt , text , text_size );
248
+ add_comma (text , text_size );
249
+ get_r2f_msg_id_type (pkt , text , text_size );
250
+ add_comma (text , text_size );
251
+ get_r2f_unit_addr_code (pkt , text , text_size );
252
+ add_comma (text , text_size );
253
+ get_r2f_brake_pressure (pkt , text , text_size );
254
+ add_comma (text , text_size );
255
+ get_r2f_disc_bits (pkt , text , text_size );
256
+ add_comma (text , text_size );
257
+ get_r2f_valve_bit (pkt , text , text_size );
258
+ add_comma (text , text_size );
259
+ get_r2f_confirm_bit (pkt , text , text_size );
260
+ add_comma (text , text_size );
261
+ get_r2f_disc_bit1 (pkt , text , text_size );
262
+ add_comma (text , text_size );
263
+ get_r2f_motion_bit (pkt , text , text_size );
264
+ add_comma (text , text_size );
265
+ get_r2f_mkr_light_batt_bit (pkt , text , text_size );
266
+ add_comma (text , text_size );
267
+ get_r2f_mkr_light_bit (pkt , text , text_size );
268
+ }
269
+
270
+ void get_f2r_chain (uint64_t pkt , char * text , int text_size ) {
271
+ uint32_t val ;
272
+
273
+ val = pkt & 0x03 ;
274
+
275
+ strlcat (text , "chain=" , text_size );
276
+
277
+ if (val == 3 ) {
278
+ strlcat (text , "VALID" , text_size );
279
+ } else {
280
+ strlcat (text , "INVALID" , text_size );
281
+ }
282
+ }
283
+
284
+ void get_f2r_msg_id_type (uint64_t pkt , char * text , int text_size ) {
285
+ uint32_t val ;
286
+
287
+ pkt >>= 2 ;
288
+ val = pkt & 0x07ULL ;
289
+
290
+ strlcat (text , "msgid=" , text_size );
291
+ strlcat (text , val == 0 ? "VALID" : "INVALID" , text_size );
292
+ }
293
+
294
+ void get_f2r_unit_addr_code (uint64_t pkt , char * text , int text_size ) {
295
+ uint32_t val ;
296
+ char temp [32 ];
297
+
298
+ pkt >>= 5 ;
299
+ val = pkt & 0x1ffffULL ;
300
+ strlcat (text , "unit_addr=" , text_size );
301
+ sprintf (temp , "%d" , val );
302
+ strlcat (text , temp , text_size );
303
+ }
304
+
305
+ void get_f2r_command (uint64_t pkt , char * text , int text_size ) {
306
+ uint32_t val ;
307
+ char temp [32 ];
308
+
309
+ pkt >>= 22 ;
310
+ val = pkt & 0xff ;
311
+ strlcat (text , "cmd=" , text_size );
312
+ switch (val ) {
313
+ case 0x55 :
314
+ strlcat (text , "STATUS_REQ" , text_size );
315
+ break ;
316
+
317
+ case 0xaa :
318
+ strlcat (text , "APPLY_BRAKES" , text_size );
319
+ break ;
320
+
321
+ default :
322
+ sprintf (temp , "UNKNOWN(%d)" , val );
323
+ strlcat (text , temp , text_size );
324
+ break ;
325
+ }
326
+ }
327
+
328
+ void decode_basic_f2r (uint64_t pkt , char * text , int text_size ) {
329
+
330
+ get_f2r_chain (pkt , text , text_size );
331
+ add_comma (text , text_size );
332
+ get_f2r_msg_id_type (pkt , text , text_size );
333
+ add_comma (text , text_size );
334
+ get_f2r_unit_addr_code (pkt , text , text_size );
335
+ add_comma (text , text_size );
336
+ get_f2r_command (pkt , text , text_size );
337
+ }
338
+
231
339
void eotd_to_text (unsigned char * eotd , int eotd_len , char * text , int text_size )
232
340
{
233
341
assert (eotd_len == EOTD_LENGTH + 1 );
@@ -240,9 +348,10 @@ void eotd_to_text (unsigned char *eotd, int eotd_len, char *text, int text_size)
240
348
}
241
349
242
350
* text = '\0' ;
243
- #ifndef EOTD_RAW
351
+
244
352
char eotd_type = eotd [EOTD_LENGTH ];
245
353
354
+ #ifndef EOTD_RAW
246
355
if (eotd_type == EOTD_TYPE_F2R ) {
247
356
strlcat (text , "FRONT>REAR:" , text_size );
248
357
} else {
@@ -259,29 +368,13 @@ void eotd_to_text (unsigned char *eotd, int eotd_len, char *text, int text_size)
259
368
now -> tm_hour , now -> tm_min , now -> tm_sec );
260
369
strlcat (text , date_buffer , text_size );
261
370
#endif
262
- get_chain (pkt , text , text_size );
263
- add_comma (text , text_size );
264
- get_dev_batt_stat (pkt , text , text_size );
265
- add_comma (text , text_size );
266
- get_msg_id_type (pkt , text , text_size );
267
- add_comma (text , text_size );
268
- get_unit_addr_code (pkt , text , text_size );
269
- add_comma (text , text_size );
270
- get_brake_pressure (pkt , text , text_size );
271
- add_comma (text , text_size );
272
- get_disc_bits (pkt , text , text_size );
273
- add_comma (text , text_size );
274
- get_valve_bit (pkt , text , text_size );
275
- add_comma (text , text_size );
276
- get_confirm_bit (pkt , text , text_size );
277
- add_comma (text , text_size );
278
- get_disc_bit1 (pkt , text , text_size );
279
- add_comma (text , text_size );
280
- get_motion_bit (pkt , text , text_size );
281
- add_comma (text , text_size );
282
- get_mkr_light_batt_bit (pkt , text , text_size );
283
- add_comma (text , text_size );
284
- get_mkr_light_bit (pkt , text , text_size );
371
+
372
+ if (eotd_type == EOTD_TYPE_R2F ) {
373
+ decode_basic_r2f (pkt , text , text_size );
374
+ } else {
375
+ decode_basic_f2r (pkt , text , text_size );
376
+ }
377
+
285
378
#ifdef EOTD_APPEND_HEX
286
379
char hex [64 ];
287
380
add_comma (text , text_size );
0 commit comments