mirror of
https://github.com/MoreTore/openpilot.git
synced 2026-10-01 03:43:51 +08:00
+11
-21
@@ -18,7 +18,7 @@
|
||||
#include <capnp/serialize.h>
|
||||
#include "cereal/gen/cpp/log.capnp.h"
|
||||
|
||||
#include "parser_common.h"
|
||||
#include "common.h"
|
||||
|
||||
#define DEBUG(...)
|
||||
// #define DEBUG printf
|
||||
@@ -40,8 +40,6 @@ uint64_t read_u64_be(const uint8_t* v) {
|
||||
| (uint64_t)v[7]);
|
||||
}
|
||||
|
||||
std::vector<const DBC*> g_dbc;
|
||||
|
||||
bool honda_checksum(int address, uint64_t d, int l) {
|
||||
int target = (d >> l) & 0xF;
|
||||
|
||||
@@ -77,9 +75,9 @@ struct MessageState {
|
||||
for (int i=0; i < parse_sigs.size(); i++) {
|
||||
auto& sig = parse_sigs[i];
|
||||
|
||||
int64_t tmp = (dat >> sig.bo) & ((1 << sig.b2)-1);
|
||||
int64_t tmp = (dat >> sig.bo) & ((1ULL << sig.b2)-1);
|
||||
if (sig.is_signed) {
|
||||
tmp -= (tmp >> (sig.b2-1)) ? (1<<sig.b2) : 0; //signed
|
||||
tmp -= (tmp >> (sig.b2-1)) ? (1ULL << sig.b2) : 0; //signed
|
||||
}
|
||||
|
||||
DEBUG("parse %X %s -> %ld\n", address, sig.name, tmp);
|
||||
@@ -123,6 +121,7 @@ struct MessageState {
|
||||
|
||||
};
|
||||
|
||||
|
||||
class CANParser {
|
||||
public:
|
||||
CANParser(int abus, const std::string& dbc_name,
|
||||
@@ -135,15 +134,10 @@ class CANParser {
|
||||
zmq_setsockopt(subscriber, ZMQ_SUBSCRIBE, "", 0);
|
||||
zmq_connect(subscriber, "tcp://127.0.0.1:8006");
|
||||
|
||||
for (auto dbci : g_dbc) {
|
||||
if (dbci->name == dbc_name) {
|
||||
dbc = dbci;
|
||||
break;
|
||||
}
|
||||
}
|
||||
dbc = dbc_lookup(dbc_name);
|
||||
assert(dbc);
|
||||
|
||||
for (auto &op : options) {
|
||||
for (const auto& op : options) {
|
||||
MessageState state = {
|
||||
.address = op.address,
|
||||
// .check_frequency = op.check_frequency,
|
||||
@@ -178,7 +172,7 @@ class CANParser {
|
||||
}
|
||||
|
||||
// track requested signals for this message
|
||||
for (auto &sigop : sigoptions) {
|
||||
for (const auto& sigop : sigoptions) {
|
||||
if (sigop.address != op.address) continue;
|
||||
|
||||
for (int i=0; i<msg->num_sigs; i++) {
|
||||
@@ -230,8 +224,8 @@ class CANParser {
|
||||
|
||||
void UpdateValid(uint64_t sec) {
|
||||
can_valid = true;
|
||||
for (auto &kv : message_states) {
|
||||
auto &state = kv.second;
|
||||
for (const auto& kv : message_states) {
|
||||
const auto& state = kv.second;
|
||||
if (state.check_threshold > 0 && (sec - state.seen) > state.check_threshold) {
|
||||
if (state.seen > 0) {
|
||||
INFO("%X TIMEOUT\n", state.address);
|
||||
@@ -279,8 +273,8 @@ class CANParser {
|
||||
std::vector<SignalValue> query(uint64_t sec) {
|
||||
std::vector<SignalValue> ret;
|
||||
|
||||
for (auto &kv : message_states) {
|
||||
auto &state = kv.second;
|
||||
for (const auto& kv : message_states) {
|
||||
const auto& state = kv.second;
|
||||
if (sec != 0 && state.seen != sec) continue;
|
||||
|
||||
for (int i=0; i<state.parse_sigs.size(); i++) {
|
||||
@@ -311,10 +305,6 @@ class CANParser {
|
||||
|
||||
}
|
||||
|
||||
void dbc_register(const DBC* dbc) {
|
||||
g_dbc.push_back(dbc);
|
||||
}
|
||||
|
||||
extern "C" {
|
||||
|
||||
void* can_init(int bus, const char* dbc_name,
|
||||
|
||||
Reference in New Issue
Block a user