#include #include #include #include "icsneo/communication/message/flexray/flexraymessage.h" #include "icsneo/device/extensions/flexray/symbol.h" #include "icsneo/device/extensions/flexray/channel.h" #include "icsneo/device/extensions/flexray/crcstatus.h" namespace icsneo { struct FlexRayNamespace { using Symbol = icsneo::FlexRay::Symbol; using CRCStatus = icsneo::FlexRay::CRCStatus; using Channel = icsneo::FlexRay::Channel; }; void init_flexraymessage(pybind11::module_& m) { // dummy class to hold the enums pybind11::class_ flexray(m, "FlexRay"); // enumerations pybind11::enum_(flexray, "Symbol") .value("None", FlexRayNamespace::Symbol::None) .value("Unknown", FlexRayNamespace::Symbol::Unknown) .value("Wakeup", FlexRayNamespace::Symbol::Wakeup) .value("CAS", FlexRayNamespace::Symbol::CAS); pybind11::enum_(flexray, "CRCStatus") .value("OK", FlexRayNamespace::CRCStatus::OK) .value("Error", FlexRayNamespace::CRCStatus::Error) .value("NoCRC", FlexRayNamespace::CRCStatus::NoCRC); pybind11::enum_(flexray, "Channel") .value("None", FlexRayNamespace::Channel::None) .value("A", FlexRayNamespace::Channel::A) .value("B", FlexRayNamespace::Channel::B) .value("AB", FlexRayNamespace::Channel::AB); // read-only until transmit is supported pybind11::class_, Frame>(m, "FlexRayMessage") .def(pybind11::init()) .def_readonly("slotid", &FlexRayMessage::slotid) .def_readonly("tsslen", &FlexRayMessage::tsslen) .def_readonly("framelen", &FlexRayMessage::framelen) .def_readonly("symbol", &FlexRayMessage::symbol) .def_readonly("header_crc_status", &FlexRayMessage::headerCRCStatus) .def_readonly("header_crc", &FlexRayMessage::headerCRC) .def_readonly("frame_crc_status", &FlexRayMessage::crcStatus) .def_readonly("frame_crc", &FlexRayMessage::frameCRC) .def_readonly("channel", &FlexRayMessage::channel) .def_readonly("null_frame", &FlexRayMessage::nullFrame) .def_readonly("payload_preamble", &FlexRayMessage::payloadPreamble) .def_readonly("sync_frame", &FlexRayMessage::sync) .def_readonly("startup_frame", &FlexRayMessage::startup) .def_readonly("dynamic_frame", &FlexRayMessage::dynamic) .def_readonly("cycle", &FlexRayMessage::cycle); } } // namespace icsneo