#include #include #include #include #include #include "icsneo/device/idevicesettings.h" #include namespace icsneo { struct DeviceSettingsNamespace { using EthLinkMode = AELinkMode; using LinkSpeed = EthLinkSpeed; }; void init_idevicesettings(pybind11::module_& m) { pybind11::classh settings(m, "Settings"); pybind11::enum_(settings, "EthernetLinkMode") .value("Auto", DeviceSettingsNamespace::EthLinkMode::AE_LINK_AUTO) .value("Slave", DeviceSettingsNamespace::EthLinkMode::AE_LINK_SLAVE) .value("Master", DeviceSettingsNamespace::EthLinkMode::AE_LINK_MASTER); pybind11::enum_(settings, "EthernetLinkSpeed") .value("Speed10M", DeviceSettingsNamespace::LinkSpeed::ETH_SPEED_10) .value("Speed100M", DeviceSettingsNamespace::LinkSpeed::ETH_SPEED_100) .value("Speed1G", DeviceSettingsNamespace::LinkSpeed::ETH_SPEED_1000) .value("Speed2_5G", DeviceSettingsNamespace::LinkSpeed::ETH_SPEED_2500) .value("Speed5G", DeviceSettingsNamespace::LinkSpeed::ETH_SPEED_5000) .value("Speed10G", DeviceSettingsNamespace::LinkSpeed::ETH_SPEED_10000); pybind11::enum_(settings, "LINMode") .value("Sleep", LINMode::SLEEP_MODE) .value("Slow", LINMode::SLOW_MODE) .value("Normal", LINMode::NORMAL_MODE) .value("Fast", LINMode::FAST_MODE); pybind11::classh(m, "IDeviceSettings") .def("apply", &IDeviceSettings::apply, pybind11::arg("temporary") = 0, pybind11::call_guard()) .def("apply_defaults", &IDeviceSettings::applyDefaults, pybind11::arg("temporary") = 0, pybind11::call_guard()) .def("refresh", &IDeviceSettings::refresh, pybind11::call_guard()) // Baudrate methods .def("get_baudrate", &IDeviceSettings::getBaudrateFor, pybind11::call_guard()) .def("set_baudrate", &IDeviceSettings::setBaudrateFor, pybind11::call_guard()) .def("get_fd_baudrate", &IDeviceSettings::getFDBaudrateFor, pybind11::call_guard()) .def("set_fd_baudrate", &IDeviceSettings::setFDBaudrateFor, pybind11::call_guard()) // Termination methods .def("is_termination_supported", &IDeviceSettings::isTerminationSupportedFor, pybind11::call_guard()) .def("can_termination_be_enabled", &IDeviceSettings::canTerminationBeEnabledFor, pybind11::call_guard()) .def("is_termination_enabled", &IDeviceSettings::isTerminationEnabledFor, pybind11::call_guard()) .def("set_termination", &IDeviceSettings::setTerminationFor, pybind11::call_guard()) .def("get_termination_groups", &IDeviceSettings::getTerminationGroups, pybind11::call_guard()) // LIN methods .def("is_commander_resistor_enabled", &IDeviceSettings::isCommanderResistorEnabledFor, pybind11::call_guard()) .def("set_commander_resistor", &IDeviceSettings::setCommanderResistorFor, pybind11::call_guard()) .def("get_lin_mode", &IDeviceSettings::getLINModeFor, pybind11::call_guard()) .def("set_lin_mode", &IDeviceSettings::setLINModeFor, pybind11::call_guard()) .def("get_lin_commander_response_time", &IDeviceSettings::getLINCommanderResponseTimeFor, pybind11::call_guard()) .def("set_lin_commander_response_time", &IDeviceSettings::setLINCommanderResponseTimeFor, pybind11::call_guard()) // Ethernet PHY methods .def("get_phy_enable", &IDeviceSettings::getPhyEnable, pybind11::call_guard()) .def("get_phy_mode", &IDeviceSettings::getPhyMode, pybind11::call_guard()) .def("get_phy_speed", &IDeviceSettings::getPhySpeed, pybind11::call_guard()) .def("set_phy_enable", &IDeviceSettings::setPhyEnable, pybind11::call_guard()) .def("set_phy_mode", &IDeviceSettings::setPhyMode, pybind11::call_guard()) .def("set_phy_speed", &IDeviceSettings::setPhySpeed, pybind11::call_guard()) // Status properties .def_readonly("disabled", &IDeviceSettings::disabled) .def_readonly("readonly", &IDeviceSettings::readonly); } } // namespace icsneo