From 3b95b41be46e980a45f9e61bcc275a0cbd3d4893 Mon Sep 17 00:00:00 2001 From: Kyle Schwarz Date: Tue, 3 Dec 2024 23:41:51 -0500 Subject: [PATCH] Bindings: Python: Add LINMessage --- bindings/python/CMakeLists.txt | 1 + .../communication/message/linmessage.cpp | 59 +++++++++++++++++++ bindings/python/icsneopy/icsneocpp.cpp | 2 + 3 files changed, 62 insertions(+) create mode 100644 bindings/python/icsneopy/communication/message/linmessage.cpp diff --git a/bindings/python/CMakeLists.txt b/bindings/python/CMakeLists.txt index b2d8f07..1d8659c 100644 --- a/bindings/python/CMakeLists.txt +++ b/bindings/python/CMakeLists.txt @@ -13,6 +13,7 @@ pybind11_add_module(icsneopy icsneopy/communication/message/message.cpp icsneopy/communication/message/canmessage.cpp icsneopy/communication/message/ethernetmessage.cpp + icsneopy/communication/message/linmessage.cpp icsneopy/communication/message/tc10statusmessage.cpp icsneopy/communication/message/mdiomessage.cpp icsneopy/communication/message/callback/messagecallback.cpp diff --git a/bindings/python/icsneopy/communication/message/linmessage.cpp b/bindings/python/icsneopy/communication/message/linmessage.cpp new file mode 100644 index 0000000..cfee887 --- /dev/null +++ b/bindings/python/icsneopy/communication/message/linmessage.cpp @@ -0,0 +1,59 @@ +#include +#include +#include + +#include "icsneo/communication/message/linmessage.h" + +namespace icsneo { + +void init_linmessage(pybind11::module_& m) { + pybind11::class_(m, "LINErrorFlags") + .def_readwrite("ErrRxBreakOnly", &LINErrorFlags::ErrRxBreakOnly) + .def_readwrite("ErrRxBreakSyncOnly", &LINErrorFlags::ErrRxBreakSyncOnly) + .def_readwrite("ErrTxRxMismatch", &LINErrorFlags::ErrTxRxMismatch) + .def_readwrite("ErrRxBreakNotZero", &LINErrorFlags::ErrRxBreakNotZero) + .def_readwrite("ErrRxBreakTooShort", &LINErrorFlags::ErrRxBreakTooShort) + .def_readwrite("ErrRxSyncNot55", &LINErrorFlags::ErrRxSyncNot55) + .def_readwrite("ErrRxDataLenOver8", &LINErrorFlags::ErrRxDataLenOver8) + .def_readwrite("ErrFrameSync", &LINErrorFlags::ErrFrameSync) + .def_readwrite("ErrFrameMessageID", &LINErrorFlags::ErrFrameMessageID) + .def_readwrite("ErrFrameResponderData", &LINErrorFlags::ErrFrameResponderData) + .def_readwrite("ErrChecksumMatch", &LINErrorFlags::ErrChecksumMatch); + + pybind11::class_(m, "LINStatusFlags") + .def_readwrite("TxChecksumEnhanced", &LINStatusFlags::TxChecksumEnhanced) + .def_readwrite("TxCommander", &LINStatusFlags::TxCommander) + .def_readwrite("TxResponder", &LINStatusFlags::TxResponder) + .def_readwrite("TxAborted", &LINStatusFlags::TxAborted) + .def_readwrite("UpdateResponderOnce", &LINStatusFlags::UpdateResponderOnce) + .def_readwrite("HasUpdatedResponderOnce", &LINStatusFlags::HasUpdatedResponderOnce) + .def_readwrite("BusRecovered", &LINStatusFlags::BusRecovered) + .def_readwrite("BreakOnly", &LINStatusFlags::BreakOnly); + + pybind11::class_, Frame> linMessage(m, "LINMessage"); + + pybind11::enum_(linMessage, "Type") + .value("NOT_SET", LINMessage::Type::NOT_SET) + .value("LIN_COMMANDER_MSG", LINMessage::Type::LIN_COMMANDER_MSG) + .value("LIN_HEADER_ONLY", LINMessage::Type::LIN_HEADER_ONLY) + .value("LIN_BREAK_ONLY", LINMessage::Type::LIN_BREAK_ONLY) + .value("LIN_SYNC_ONLY", LINMessage::Type::LIN_SYNC_ONLY) + .value("LIN_UPDATE_RESPONDER", LINMessage::Type::LIN_UPDATE_RESPONDER) + .value("LIN_ERROR", LINMessage::Type::LIN_ERROR); + + linMessage + .def(pybind11::init<>()) + .def(pybind11::init()) + .def_static("calc_checksum", &LINMessage::calcChecksum) + .def("calc_protected_id", &LINMessage::calcProtectedID) + .def_readwrite("ID", &LINMessage::ID) + .def_readwrite("protectedID", &LINMessage::protectedID) + .def_readwrite("checksum", &LINMessage::checksum) + .def_readwrite("linMsgType", &LINMessage::linMsgType) + .def_readwrite("isEnhancedChecksum", &LINMessage::isEnhancedChecksum) + .def_readwrite("errFlags", &LINMessage::errFlags) + .def_readwrite("statusFlags", &LINMessage::statusFlags); +} + +} // namespace icsneo + diff --git a/bindings/python/icsneopy/icsneocpp.cpp b/bindings/python/icsneopy/icsneocpp.cpp index 98445f2..622b468 100644 --- a/bindings/python/icsneopy/icsneocpp.cpp +++ b/bindings/python/icsneopy/icsneocpp.cpp @@ -14,6 +14,7 @@ void init_devicetype(pybind11::module_&); void init_message(pybind11::module_&); void init_canmessage(pybind11::module_&); void init_ethernetmessage(pybind11::module_&); +void init_linmessage(pybind11::module_&); void init_tc10statusmessage(pybind11::module_&); void init_mdiomessage(pybind11::module_&); void init_device(pybind11::module_&); @@ -33,6 +34,7 @@ PYBIND11_MODULE(icsneopy, m) { init_message(m); init_canmessage(m); init_ethernetmessage(m); + init_linmessage(m); init_tc10statusmessage(m); init_mdiomessage(m); init_messagefilter(m);