use std::string for SignalPackValue::name (#390)

This commit is contained in:
Dean Lee 2021-09-03 05:25:47 +08:00 committed by GitHub
parent 83afde21fa
commit b6ceded26b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 6 additions and 11 deletions

View File

@ -66,7 +66,7 @@ cdef extern from "common_dbc.h":
double value double value
cdef struct SignalPackValue: cdef struct SignalPackValue:
const char * name string name
double value double value

View File

@ -8,7 +8,7 @@
#define ARRAYSIZE(x) (sizeof(x)/sizeof(x[0])) #define ARRAYSIZE(x) (sizeof(x)/sizeof(x[0]))
struct SignalPackValue { struct SignalPackValue {
const char* name; std::string name;
double value; double value;
}; };

View File

@ -51,12 +51,11 @@ CANPacker::CANPacker(const std::string& dbc_name) {
uint64_t CANPacker::pack(uint32_t address, const std::vector<SignalPackValue> &signals, int counter) { uint64_t CANPacker::pack(uint32_t address, const std::vector<SignalPackValue> &signals, int counter) {
uint64_t ret = 0; uint64_t ret = 0;
for (const auto& sigval : signals) { for (const auto& sigval : signals) {
std::string name = std::string(sigval.name);
double value = sigval.value; double value = sigval.value;
auto sig_it = signal_lookup.find(std::make_pair(address, name)); auto sig_it = signal_lookup.find(std::make_pair(address, sigval.name));
if (sig_it == signal_lookup.end()) { if (sig_it == signal_lookup.end()) {
WARN("undefined signal %s - %d\n", name.c_str(), address); WARN("undefined signal %s - %d\n", sigval.name.c_str(), address);
continue; continue;
} }
const auto& sig = sig_it->second; const auto& sig = sig_it->second;

View File

@ -33,15 +33,11 @@ cdef class CANPacker:
cdef uint64_t pack(self, addr, values, counter): cdef uint64_t pack(self, addr, values, counter):
cdef vector[SignalPackValue] values_thing cdef vector[SignalPackValue] values_thing
values_thing.reserve(len(values))
cdef SignalPackValue spv cdef SignalPackValue spv
names = []
for name, value in values.iteritems(): for name, value in values.iteritems():
n = name.encode('utf8') spv.name = name.encode('utf8')
names.append(n) # TODO: find better way to keep reference to temp string around
spv.name = n
spv.value = value spv.value = value
values_thing.push_back(spv) values_thing.push_back(spv)