@@ -166,9 +166,6 @@ class CANParser {
166
166
subscriber = zmq_socket (context, ZMQ_SUB);
167
167
zmq_setsockopt (subscriber, ZMQ_SUBSCRIBE, " " , 0 );
168
168
169
- forwarder = zmq_socket (context, ZMQ_PUB);
170
- zmq_bind (forwarder, " tcp://*:8592" );
171
-
172
169
std::string tcp_addr_str;
173
170
174
171
if (sendcan) {
@@ -247,17 +244,8 @@ class CANParser {
247
244
// parse the messages
248
245
for (int i = 0 ; i < msg_count; i++) {
249
246
auto cmsg = cans[i];
250
-
251
- if (cmsg.getDat ().size () > 8 ) continue ; // shouldnt ever happen
252
- uint8_t dat[8 ] = {0 };
253
- memcpy (dat, cmsg.getDat ().begin (), cmsg.getDat ().size ());
254
-
255
- if (can_forward_period_ns > 0 ) raw_can_values[cmsg.getSrc ()][cmsg.getAddress ()] = read_u64_be (dat);
256
-
257
- // if (((cmsg.getAddress() == 0xe4 or cmsg.getAddress() == 0x33d) and cmsg.getSrc() == bus) or \
258
- // (cmsg.getSrc() != bus and cmsg.getAddress() != 0x33d and cmsg.getAddress() != 0xe4 and \
259
- // (cmsg.getAddress() < 0x240 or cmsg.getAddress() > 0x24A))) {
260
247
if (cmsg.getSrc () != bus) {
248
+ // DEBUG("skip %d: wrong bus\n", cmsg.getAddress());
261
249
continue ;
262
250
}
263
251
auto state_it = message_states.find (cmsg.getAddress ());
@@ -266,38 +254,27 @@ class CANParser {
266
254
continue ;
267
255
}
268
256
257
+ if (cmsg.getDat ().size () > 8 ) continue ; // shouldnt ever happen
258
+ uint8_t dat[8 ] = {0 };
259
+ memcpy (dat, cmsg.getDat ().begin (), cmsg.getDat ().size ());
260
+
269
261
// Assumes all signals in the message are of the same type (little or big endian)
270
262
// TODO: allow signals within the same message to have different endianess
271
263
auto & sig = message_states[cmsg.getAddress ()].parse_sigs [0 ];
272
264
if (sig.is_little_endian ) {
273
265
p = read_u64_le (dat);
274
266
} else {
275
267
p = read_u64_be (dat);
276
- }
268
+ }
277
269
278
270
DEBUG (" proc %X: %llx\n " , cmsg.getAddress (), p);
279
271
280
272
state_it->second .parse (sec, cmsg.getBusTime (), p);
281
273
}
282
274
}
283
275
284
- void ForwardCANData (uint64_t sec) {
285
- if (sec > next_can_forward_ns) {
286
- next_can_forward_ns += can_forward_period_ns;
287
- // next_can_forward_ns starts at 0, so it needs to be reset. Also handle delays.
288
- if (sec > next_can_forward_ns) next_can_forward_ns = sec + can_forward_period_ns;
289
- std::string canOut = " " ;
290
- for (auto src : raw_can_values) {
291
- for (auto pid : src.second ) {
292
- canOut = canOut + std::to_string (src.first ) + " " + std::to_string (pid.first ) + " " + std::to_string (pid.second ) + " |" ;
293
- }
294
- }
295
- zmq_send (forwarder, canOut.data (), canOut.size (), 0 );
296
- }
297
- }
298
-
299
276
void UpdateValid (uint64_t sec) {
300
- can_valid = true ;
277
+ can_valid = true ;
301
278
for (const auto & kv : message_states) {
302
279
const auto & state = kv.second ;
303
280
if (state.check_threshold > 0 && (sec - state.seen ) > state.check_threshold ) {
@@ -340,8 +317,6 @@ class CANParser {
340
317
UpdateCans (sec, cans);
341
318
}
342
319
343
- if (can_forward_period_ns > 0 ) ForwardCANData (sec);
344
-
345
320
UpdateValid (sec);
346
321
347
322
zmq_msg_close (&msg);
@@ -376,11 +351,6 @@ class CANParser {
376
351
void *context = NULL ;
377
352
void *subscriber = NULL ;
378
353
379
- void *forwarder = NULL ;
380
- uint64_t can_forward_period_ns = 100000000 ;
381
- uint64_t next_can_forward_ns = 0 ;
382
- std::unordered_map<uint32_t , std::unordered_map<uint32_t , uint64_t >> raw_can_values;
383
-
384
354
const DBC *dbc = NULL ;
385
355
std::unordered_map<uint32_t , MessageState> message_states;
386
356
};
0 commit comments