mirror of https://github.com/rusefi/opendbc.git
quick draft of what this might look like
This commit is contained in:
parent
38ea0a0aaa
commit
55c617a97d
|
@ -67,6 +67,7 @@ public:
|
|||
uint64_t last_sec = 0;
|
||||
uint64_t last_nonempty_sec = 0;
|
||||
uint64_t bus_timeout_threshold = 0;
|
||||
SignalValue get_msg(uint32_t msg_addr);
|
||||
|
||||
CANParser(int abus, const std::string& dbc_name,
|
||||
const std::vector<MessageParseOptions> &options);
|
||||
|
|
|
@ -53,7 +53,6 @@ cdef extern from "common_dbc.h":
|
|||
uint32_t address
|
||||
string name
|
||||
|
||||
|
||||
cdef struct MessageParseOptions:
|
||||
uint32_t address
|
||||
int check_frequency
|
||||
|
@ -78,6 +77,7 @@ cdef extern from "common.h":
|
|||
CANParser(int, string, vector[MessageParseOptions])
|
||||
void update_string(string, bool)
|
||||
vector[SignalValue] query_latest()
|
||||
SignalValue get_msg(uint32_t msg_addr)
|
||||
|
||||
cdef cppclass CANPacker:
|
||||
CANPacker(string)
|
||||
|
|
|
@ -295,6 +295,21 @@ void CANParser::UpdateValid(uint64_t sec) {
|
|||
}
|
||||
}
|
||||
|
||||
SignalValue CANParser::get_msg(uint32_t msg_addr) {
|
||||
auto state_it = message_states.find(msg_addr);
|
||||
if (state_it != message_states.end()) {
|
||||
MessageState state = state_it->second;
|
||||
const Signal &sig = state.parse_sigs[0];
|
||||
return (SignalValue){
|
||||
.address = state.address,
|
||||
.name = sig.name,
|
||||
.value = state.vals[0],
|
||||
.all_values = state.all_vals[0],
|
||||
};
|
||||
}
|
||||
assert(false);
|
||||
}
|
||||
|
||||
std::vector<SignalValue> CANParser::query_latest() {
|
||||
std::vector<SignalValue> ret;
|
||||
|
||||
|
|
|
@ -7,6 +7,7 @@ from libcpp.unordered_set cimport unordered_set
|
|||
from libc.stdint cimport uint32_t, uint64_t, uint16_t
|
||||
from libcpp cimport bool
|
||||
from libcpp.map cimport map
|
||||
import time
|
||||
|
||||
from .common cimport CANParser as cpp_CANParser
|
||||
from .common cimport SignalParseOptions, MessageParseOptions, dbc_lookup, SignalValue, DBC
|
||||
|
@ -97,6 +98,9 @@ cdef class CANParser:
|
|||
self.can = new cpp_CANParser(bus, dbc_name, message_options_v)
|
||||
self.update_vl()
|
||||
|
||||
def get_msg(self):
|
||||
return self.can.get_msg(835)
|
||||
|
||||
cdef unordered_set[uint32_t] update_vl(self):
|
||||
cdef unordered_set[uint32_t] updated_addrs
|
||||
|
||||
|
@ -118,11 +122,13 @@ cdef class CANParser:
|
|||
return updated_addrs
|
||||
|
||||
def update_string(self, dat, sendcan=False):
|
||||
for v in self.vl_all.values():
|
||||
v.clear()
|
||||
#for v in self.vl_all.values():
|
||||
# v.clear()
|
||||
|
||||
# t = time.time()
|
||||
self.can.update_string(dat, sendcan)
|
||||
return self.update_vl()
|
||||
# print(time.time() - t)
|
||||
# return self.update_vl()
|
||||
|
||||
def update_strings(self, strings, sendcan=False):
|
||||
for v in self.vl_all.values():
|
||||
|
|
Loading…
Reference in New Issue