dragonpilot - 基於 openpilot 的開源駕駛輔助系統
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

35 lines
922 B

5 years ago
#include <vector>
#include <tuple>
#include <string>
#include "messaging.hpp"
5 years ago
#include "cereal/gen/cpp/log.capnp.h"
#include "cereal/gen/cpp/car.capnp.h"
typedef struct {
long address;
std::string dat;
long busTime;
long src;
} can_frame;
extern "C" {
void can_list_to_can_capnp_cpp(const std::vector<can_frame> &can_list, std::string &out, bool sendCan, bool valid) {
MessageBuilder msg;
auto event = msg.initEvent();
5 years ago
event.setValid(valid);
auto canData = sendCan ? event.initSendcan(can_list.size()) : event.initCan(can_list.size());
int j = 0;
for (auto it = can_list.begin(); it != can_list.end(); it++, j++) {
canData[j].setAddress(it->address);
canData[j].setBusTime(it->busTime);
canData[j].setDat(kj::arrayPtr((uint8_t*)it->dat.data(), it->dat.size()));
canData[j].setSrc(it->src);
}
auto bytes = msg.toBytes();
5 years ago
out.append((const char *)bytes.begin(), bytes.size());
}
}