2019-11-22 21:46:33 -08:00
|
|
|
# distutils: language = c++
|
2022-02-24 22:58:37 -08:00
|
|
|
# cython: language_level=3
|
2019-11-22 21:46:33 -08:00
|
|
|
|
2022-02-28 09:10:34 -08:00
|
|
|
from libc.stdint cimport uint8_t, uint16_t, uint32_t, uint64_t
|
|
|
|
from libcpp cimport bool
|
2019-11-22 21:46:33 -08:00
|
|
|
from libcpp.map cimport map
|
|
|
|
from libcpp.string cimport string
|
2022-02-28 09:10:34 -08:00
|
|
|
from libcpp.vector cimport vector
|
2019-11-22 21:46:33 -08:00
|
|
|
from libcpp.unordered_set cimport unordered_set
|
|
|
|
|
|
|
|
|
2022-06-30 11:31:58 -07:00
|
|
|
ctypedef unsigned int (*calc_checksum_type)(uint32_t, const Signal&, const vector[uint8_t] &)
|
|
|
|
|
2019-12-03 08:43:05 -08:00
|
|
|
cdef extern from "common_dbc.h":
|
2019-11-22 21:46:33 -08:00
|
|
|
ctypedef enum SignalType:
|
|
|
|
DEFAULT,
|
2022-07-11 12:36:43 -07:00
|
|
|
COUNTER,
|
2019-11-22 21:46:33 -08:00
|
|
|
HONDA_CHECKSUM,
|
|
|
|
TOYOTA_CHECKSUM,
|
|
|
|
PEDAL_CHECKSUM,
|
2022-06-30 11:31:58 -07:00
|
|
|
VOLKSWAGEN_MQB_CHECKSUM,
|
2022-07-15 10:29:12 -07:00
|
|
|
XOR_CHECKSUM,
|
2020-04-30 14:06:26 -07:00
|
|
|
SUBARU_CHECKSUM,
|
|
|
|
CHRYSLER_CHECKSUM
|
2022-05-15 18:26:19 -07:00
|
|
|
HKG_CAN_FD_CHECKSUM,
|
2019-11-22 21:46:33 -08:00
|
|
|
|
|
|
|
cdef struct Signal:
|
2022-05-12 17:59:33 -07:00
|
|
|
string name
|
2022-02-28 09:10:34 -08:00
|
|
|
int start_bit, msb, lsb, size
|
2019-11-22 21:46:33 -08:00
|
|
|
bool is_signed
|
|
|
|
double factor, offset
|
2022-05-12 17:59:33 -07:00
|
|
|
bool is_little_endian
|
2019-11-22 21:46:33 -08:00
|
|
|
SignalType type
|
2022-06-30 11:31:58 -07:00
|
|
|
calc_checksum_type calc_checksum
|
2019-11-22 21:46:33 -08:00
|
|
|
|
|
|
|
cdef struct Msg:
|
2022-05-12 17:59:33 -07:00
|
|
|
string name
|
2019-11-22 21:46:33 -08:00
|
|
|
uint32_t address
|
|
|
|
unsigned int size
|
2022-05-12 17:59:33 -07:00
|
|
|
vector[Signal] sigs
|
2019-11-22 21:46:33 -08:00
|
|
|
|
|
|
|
cdef struct Val:
|
2022-05-12 17:59:33 -07:00
|
|
|
string name
|
2019-11-22 21:46:33 -08:00
|
|
|
uint32_t address
|
2022-05-12 17:59:33 -07:00
|
|
|
string def_val
|
|
|
|
vector[Signal] sigs
|
2019-11-22 21:46:33 -08:00
|
|
|
|
|
|
|
cdef struct DBC:
|
2022-05-12 17:59:33 -07:00
|
|
|
string name
|
|
|
|
vector[Msg] msgs
|
|
|
|
vector[Val] vals
|
2019-11-22 21:46:33 -08:00
|
|
|
|
|
|
|
cdef struct SignalParseOptions:
|
|
|
|
uint32_t address
|
2022-05-12 17:59:33 -07:00
|
|
|
string name
|
2019-11-22 21:46:33 -08:00
|
|
|
|
|
|
|
|
|
|
|
cdef struct MessageParseOptions:
|
|
|
|
uint32_t address
|
|
|
|
int check_frequency
|
|
|
|
|
|
|
|
cdef struct SignalValue:
|
|
|
|
uint32_t address
|
2023-02-07 23:00:22 -08:00
|
|
|
uint64_t ts_nanos
|
2022-05-12 17:59:33 -07:00
|
|
|
string name
|
2019-11-22 21:46:33 -08:00
|
|
|
double value
|
2022-02-10 13:01:30 -08:00
|
|
|
vector[double] all_values
|
2019-11-22 21:46:33 -08:00
|
|
|
|
2019-12-03 08:43:05 -08:00
|
|
|
cdef struct SignalPackValue:
|
2021-09-02 14:25:47 -07:00
|
|
|
string name
|
2019-12-03 08:43:05 -08:00
|
|
|
double value
|
|
|
|
|
|
|
|
|
|
|
|
cdef extern from "common.h":
|
2019-11-22 21:46:33 -08:00
|
|
|
cdef const DBC* dbc_lookup(const string);
|
|
|
|
|
|
|
|
cdef cppclass CANParser:
|
|
|
|
bool can_valid
|
2022-04-12 22:34:27 -07:00
|
|
|
bool bus_timeout
|
2019-11-22 21:46:33 -08:00
|
|
|
CANParser(int, string, vector[MessageParseOptions], vector[SignalParseOptions])
|
2023-04-22 17:54:36 -07:00
|
|
|
void update_strings(vector[string]&, vector[SignalValue]&, bool)
|
2019-12-03 08:43:05 -08:00
|
|
|
|
|
|
|
cdef cppclass CANPacker:
|
|
|
|
CANPacker(string)
|
2023-03-28 12:33:37 -07:00
|
|
|
vector[uint8_t] pack(uint32_t, vector[SignalPackValue]&)
|