From 6f2ad54adc30cada8cdda1014226f9b76cd3c3d5 Mon Sep 17 00:00:00 2001 From: Thomas Stoddard Date: Thu, 2 Apr 2026 19:45:58 +0000 Subject: [PATCH] Device: Add get_pcb_serial() & get_mac_address() --- bindings/python/icsneopy/device/device.cpp | 2 ++ device/device.cpp | 19 +++++++++++++++++++ include/icsneo/device/device.h | 2 ++ 3 files changed, 23 insertions(+) diff --git a/bindings/python/icsneopy/device/device.cpp b/bindings/python/icsneopy/device/device.cpp index 25459c0..39f18dd 100644 --- a/bindings/python/icsneopy/device/device.cpp +++ b/bindings/python/icsneopy/device/device.cpp @@ -32,6 +32,8 @@ void init_device(pybind11::module_& m) { .def("get_script_status", &Device::getScriptStatus, pybind11::call_guard()) .def("get_serial_number", &Device::getSerialNumber) .def("get_serial", &Device::getSerial) + .def("get_pcb_serial", &Device::getPCBSerial, pybind11::call_guard()) + .def("get_mac_address", &Device::getMACAddress, pybind11::call_guard()) .def("get_supported_rx_networks", &Device::getSupportedRXNetworks, pybind11::return_value_policy::reference) .def("get_supported_tx_networks", &Device::getSupportedTXNetworks, pybind11::return_value_policy::reference) .def("get_tc10_status", &Device::getTC10Status, pybind11::call_guard()) diff --git a/device/device.cpp b/device/device.cpp index ad32113..ec08fe2 100644 --- a/device/device.cpp +++ b/device/device.cpp @@ -1,4 +1,5 @@ #include +#include #include "icsneo/api/eventmanager.h" #include "icsneo/communication/message/filter/main51messagefilter.h" #include "icsneo/communication/message/extendedresponsemessage.h" @@ -2253,6 +2254,24 @@ bool Device::setRTC(const std::chrono::time_point& ti return m51msg->data.front(); } +std::optional> Device::getPCBSerial() { + auto serialMsg = com->getSerialNumberSync(); + if(!serialMsg || !serialMsg->hasPCBSerial) { + return std::nullopt; + } + + return std::vector(serialMsg->pcbSerial, serialMsg->pcbSerial + sizeof(serialMsg->pcbSerial)); +} + +std::optional> Device::getMACAddress() { + auto serialMsg = com->getSerialNumberSync(); + if(!serialMsg || !serialMsg->hasMacAddress) { + return std::nullopt; + } + + return std::vector(serialMsg->macAddress, serialMsg->macAddress + sizeof(serialMsg->macAddress)); +} + std::optional> Device::getSupportedFeatures() { auto timeout = std::chrono::milliseconds(100); std::shared_ptr msg = com->waitForMessageSync( diff --git a/include/icsneo/device/device.h b/include/icsneo/device/device.h index 8731528..ee1c704 100644 --- a/include/icsneo/device/device.h +++ b/include/icsneo/device/device.h @@ -178,6 +178,8 @@ public: DeviceType getType() const { return DeviceType(data.type); } std::string getSerial() const { return data.serial; } uint32_t getSerialNumber() const { return Device::SerialStringToNum(getSerial()); } + std::optional> getPCBSerial(); + std::optional> getMACAddress(); const neodevice_t& getNeoDevice() const { return data; } virtual std::string getProductName() const { return getType().getGenericProductName(); } std::string describe() const;