From f743f32e631aef49a4cbd87a0af042e62cad5452 Mon Sep 17 00:00:00 2001 From: Jonathan Schwartz Date: Tue, 8 Apr 2025 20:47:51 +0000 Subject: [PATCH] Bindings: Python: Add FlexRay Only RX at this time. --- bindings/python/CMakeLists.txt | 1 + .../message/flexray/flexraymessage.cpp | 57 +++++++++++++++++++ bindings/python/icsneopy/icsneocpp.cpp | 2 + 3 files changed, 60 insertions(+) create mode 100644 bindings/python/icsneopy/communication/message/flexray/flexraymessage.cpp diff --git a/bindings/python/CMakeLists.txt b/bindings/python/CMakeLists.txt index 11b1d44..23a8268 100644 --- a/bindings/python/CMakeLists.txt +++ b/bindings/python/CMakeLists.txt @@ -35,6 +35,7 @@ pybind11_add_module(icsneopy icsneopy/communication/message/scriptstatusmessage.cpp icsneopy/communication/message/callback/messagecallback.cpp icsneopy/communication/message/filter/messagefilter.cpp + icsneopy/communication/message/flexray/flexraymessage.cpp icsneopy/disk/diskdriver.cpp icsneopy/device/device.cpp icsneopy/icsneocpp.cpp diff --git a/bindings/python/icsneopy/communication/message/flexray/flexraymessage.cpp b/bindings/python/icsneopy/communication/message/flexray/flexraymessage.cpp new file mode 100644 index 0000000..7a40795 --- /dev/null +++ b/bindings/python/icsneopy/communication/message/flexray/flexraymessage.cpp @@ -0,0 +1,57 @@ +#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 + diff --git a/bindings/python/icsneopy/icsneocpp.cpp b/bindings/python/icsneopy/icsneocpp.cpp index 6471d04..9437937 100644 --- a/bindings/python/icsneopy/icsneocpp.cpp +++ b/bindings/python/icsneopy/icsneocpp.cpp @@ -28,6 +28,7 @@ void init_device(pybind11::module_&); void init_messagefilter(pybind11::module_&); void init_messagecallback(pybind11::module_&); void init_version(pybind11::module_&); +void init_flexraymessage(pybind11::module_& m); PYBIND11_MODULE(icsneopy, m) { pybind11::options options; @@ -56,6 +57,7 @@ PYBIND11_MODULE(icsneopy, m) { init_messagecallback(m); init_diskdriver(m); init_device(m); + init_flexraymessage(m); m.def("find_all_devices", &FindAllDevices); m.def("get_supported_devices", &GetSupportedDevices);