Skip to content

Commit

Permalink
CANParser: add timestamp field (commaai#779)
Browse files Browse the repository at this point in the history
* add timestamp back, logMonoTime

* rename ts_nanos
  • Loading branch information
sshane authored Feb 8, 2023
1 parent 0b7439f commit d103b15
Show file tree
Hide file tree
Showing 4 changed files with 8 additions and 0 deletions.
1 change: 1 addition & 0 deletions can/common.pxd
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,7 @@ cdef extern from "common_dbc.h":

cdef struct SignalValue:
uint32_t address
uint64_t ts_nanos
string name
double value
vector[double] all_values
Expand Down
1 change: 1 addition & 0 deletions can/common_dbc.h
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ struct MessageParseOptions {

struct SignalValue {
uint32_t address;
uint64_t ts_nanos;
std::string name;
double value; // latest value
std::vector<double> all_values; // all values from this cycle
Expand Down
1 change: 1 addition & 0 deletions can/parser.cc
Original file line number Diff line number Diff line change
Expand Up @@ -310,6 +310,7 @@ std::vector<SignalValue> CANParser::query_latest() {
const Signal &sig = state.parse_sigs[i];
ret.push_back((SignalValue){
.address = state.address,
.ts_nanos = state.last_seen_nanos,
.name = sig.name,
.value = state.vals[i],
.all_values = state.all_vals[i],
Expand Down
5 changes: 5 additions & 0 deletions can/parser_pyx.pyx
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ cdef class CANParser:
cdef readonly:
dict vl
dict vl_all
dict ts_nanos
string dbc_name

def __init__(self, dbc_name, signals, checks=None, bus=0, enforce_checks=True):
Expand All @@ -39,6 +40,7 @@ cdef class CANParser:

self.vl = {}
self.vl_all = {}
self.ts_nanos = {}
msg_name_to_address = {}

for i in range(self.dbc[0].msgs.size()):
Expand All @@ -51,6 +53,8 @@ cdef class CANParser:
self.vl[name] = self.vl[msg.address]
self.vl_all[msg.address] = defaultdict(list)
self.vl_all[name] = self.vl_all[msg.address]
self.ts_nanos[msg.address] = {}
self.ts_nanos[name] = self.ts_nanos[msg.address]

# Convert message names into addresses
for i in range(len(signals)):
Expand Down Expand Up @@ -108,6 +112,7 @@ cdef class CANParser:
cv_name = <unicode>cv.name
self.vl[cv.address][cv_name] = cv.value
self.vl_all[cv.address][cv_name].extend(cv.all_values)
self.ts_nanos[cv.address][cv_name] = cv.ts_nanos
updated_addrs.insert(cv.address)

return updated_addrs
Expand Down

0 comments on commit d103b15

Please sign in to comment.