|
1 |
| -#include <libmaestro.h> |
| 1 | +#include <maestro/Device.h> |
| 2 | +#include <maestro/Program.h> |
2 | 3 | #include <pybind11/pybind11.h>
|
3 | 4 | #include <pybind11/stl.h>
|
4 | 5 |
|
5 | 6 | namespace py = pybind11;
|
6 | 7 |
|
| 8 | +using namespace Maestro; |
| 9 | + |
7 | 10 | // clang-format off
|
8 | 11 | PYBIND11_MODULE(maestro, m)
|
9 | 12 | {
|
10 |
| - m.attr("__version__") = "1.0.0"; |
11 |
| - m.def("getConnectedDevices", &MaestroDevice::getConnectedDevices); |
| 13 | + m.attr("__version__") = "0.1.0"; |
| 14 | + m.def("getConnectedDevices", &Device::getConnectedDevices); |
12 | 15 |
|
13 |
| - py::class_<MaestroDevice> device(m, "Device"); |
| 16 | + py::class_<Device> device(m, "Device"); |
14 | 17 |
|
15 |
| - py::enum_<MaestroDevice::SerialMode>(device, "SerialMode") |
16 |
| - .value("SERIAL_MODE_USB_DUAL_PORT", MaestroDevice::SerialMode::SERIAL_MODE_USB_DUAL_PORT) |
17 |
| - .value("SERIAL_MODE_USB_CHAINED", MaestroDevice::SerialMode::SERIAL_MODE_USB_CHAINED) |
18 |
| - .value("SERIAL_MODE_UART_DETECT_BAUD_RATE", MaestroDevice::SerialMode::SERIAL_MODE_UART_DETECT_BAUD_RATE) |
19 |
| - .value("SERIAL_MODE_UART_FIXED_BAUD_RATE", MaestroDevice::SerialMode::SERIAL_MODE_UART_FIXED_BAUD_RATE) |
| 18 | + py::enum_<Device::SerialMode>(device, "SerialMode") |
| 19 | + .value("SERIAL_MODE_USB_DUAL_PORT", Device::SerialMode::SERIAL_MODE_USB_DUAL_PORT) |
| 20 | + .value("SERIAL_MODE_USB_CHAINED", Device::SerialMode::SERIAL_MODE_USB_CHAINED) |
| 21 | + .value("SERIAL_MODE_UART_DETECT_BAUD_RATE", Device::SerialMode::SERIAL_MODE_UART_DETECT_BAUD_RATE) |
| 22 | + .value("SERIAL_MODE_UART_FIXED_BAUD_RATE", Device::SerialMode::SERIAL_MODE_UART_FIXED_BAUD_RATE) |
20 | 23 | .export_values();
|
21 | 24 |
|
22 |
| - py::class_<MaestroDevice::DeviceSettings>(device, "DeviceSettings") |
23 |
| - .def_readwrite("firmwareVersionMinor", &MaestroDevice::DeviceSettings::firmwareVersionMinor) |
24 |
| - .def_readwrite("firmwareVersionMajor", &MaestroDevice::DeviceSettings::firmwareVersionMajor) |
25 |
| - .def_readwrite("servosAvailable", &MaestroDevice::DeviceSettings::servosAvailable) |
26 |
| - .def_readwrite("servoPeriod", &MaestroDevice::DeviceSettings::servoPeriod) |
27 |
| - .def_readwrite("miniMaestroServoPeriod", &MaestroDevice::DeviceSettings::miniMaestroServoPeriod) |
28 |
| - .def_readwrite("servoMultiplier", &MaestroDevice::DeviceSettings::servoMultiplier) |
29 |
| - .def_readwrite("fixedBaudRate", &MaestroDevice::DeviceSettings::fixedBaudRate) |
30 |
| - .def_readwrite("enableCrc", &MaestroDevice::DeviceSettings::enableCrc) |
31 |
| - .def_readwrite("neverSuspend", &MaestroDevice::DeviceSettings::neverSuspend) |
32 |
| - .def_readwrite("serialDeviceNumber", &MaestroDevice::DeviceSettings::serialDeviceNumber) |
33 |
| - .def_readwrite("miniSscOffset", &MaestroDevice::DeviceSettings::miniSscOffset) |
34 |
| - .def_readwrite("serialTimeout", &MaestroDevice::DeviceSettings::serialTimeout) |
35 |
| - .def_readwrite("scriptDone", &MaestroDevice::DeviceSettings::scriptDone) |
36 |
| - .def_readwrite("enablePullups", &MaestroDevice::DeviceSettings::enablePullups) |
| 25 | + py::class_<Device::DeviceSettings>(device, "DeviceSettings") |
| 26 | + .def_readwrite("firmwareVersionMinor", &Device::DeviceSettings::firmwareVersionMinor) |
| 27 | + .def_readwrite("firmwareVersionMajor", &Device::DeviceSettings::firmwareVersionMajor) |
| 28 | + .def_readwrite("servosAvailable", &Device::DeviceSettings::servosAvailable) |
| 29 | + .def_readwrite("servoPeriod", &Device::DeviceSettings::servoPeriod) |
| 30 | + .def_readwrite("miniMaestroServoPeriod", &Device::DeviceSettings::miniMaestroServoPeriod) |
| 31 | + .def_readwrite("servoMultiplier", &Device::DeviceSettings::servoMultiplier) |
| 32 | + .def_readwrite("fixedBaudRate", &Device::DeviceSettings::fixedBaudRate) |
| 33 | + .def_readwrite("enableCrc", &Device::DeviceSettings::enableCrc) |
| 34 | + .def_readwrite("neverSuspend", &Device::DeviceSettings::neverSuspend) |
| 35 | + .def_readwrite("serialDeviceNumber", &Device::DeviceSettings::serialDeviceNumber) |
| 36 | + .def_readwrite("miniSscOffset", &Device::DeviceSettings::miniSscOffset) |
| 37 | + .def_readwrite("serialTimeout", &Device::DeviceSettings::serialTimeout) |
| 38 | + .def_readwrite("scriptDone", &Device::DeviceSettings::scriptDone) |
| 39 | + .def_readwrite("enablePullups", &Device::DeviceSettings::enablePullups) |
37 | 40 | ;
|
38 | 41 |
|
39 |
| - py::enum_<MaestroDevice::ChannelMode>(device, "ChannelMode") |
40 |
| - .value("SERVO", MaestroDevice::ChannelMode::SERVO) |
41 |
| - .value("SERVO_MULTIPLIED", MaestroDevice::ChannelMode::SERVO_MULTIPLIED) |
42 |
| - .value("OUTPUT", MaestroDevice::ChannelMode::OUTPUT) |
43 |
| - .value("INPUT", MaestroDevice::ChannelMode::INPUT) |
| 42 | + py::enum_<Device::ChannelMode>(device, "ChannelMode") |
| 43 | + .value("SERVO", Device::ChannelMode::SERVO) |
| 44 | + .value("SERVO_MULTIPLIED", Device::ChannelMode::SERVO_MULTIPLIED) |
| 45 | + .value("OUTPUT", Device::ChannelMode::OUTPUT) |
| 46 | + .value("INPUT", Device::ChannelMode::INPUT) |
44 | 47 | .export_values();
|
45 | 48 |
|
46 |
| - py::enum_<MaestroDevice::HomeMode>(device, "HomeMode") |
47 |
| - .value("OFF", MaestroDevice::HomeMode::OFF) |
48 |
| - .value("IGNORE", MaestroDevice::HomeMode::IGNORE) |
49 |
| - .value("GOTO", MaestroDevice::HomeMode::GOTO) |
| 49 | + py::enum_<Device::HomeMode>(device, "HomeMode") |
| 50 | + .value("OFF", Device::HomeMode::OFF) |
| 51 | + .value("IGNORE", Device::HomeMode::IGNORE) |
| 52 | + .value("GOTO", Device::HomeMode::GOTO) |
50 | 53 | .export_values();
|
51 | 54 |
|
52 |
| - py::class_<MaestroDevice::ChannelSettings>(device, "ChannelSettings") |
53 |
| - .def_readwrite("mode", &MaestroDevice::ChannelSettings::mode) |
54 |
| - .def_readwrite("homeMode", &MaestroDevice::ChannelSettings::homeMode) |
55 |
| - .def_readwrite("home", &MaestroDevice::ChannelSettings::home) |
56 |
| - .def_readwrite("minimum", &MaestroDevice::ChannelSettings::minimum) |
57 |
| - .def_readwrite("maximum", &MaestroDevice::ChannelSettings::maximum) |
58 |
| - .def_readwrite("neutral", &MaestroDevice::ChannelSettings::neutral) |
59 |
| - .def_readwrite("range", &MaestroDevice::ChannelSettings::range) |
60 |
| - .def_readwrite("speed", &MaestroDevice::ChannelSettings::speed) |
61 |
| - .def_readwrite("acceleration", &MaestroDevice::ChannelSettings::acceleration) |
| 55 | + py::class_<Device::ChannelSettings>(device, "ChannelSettings") |
| 56 | + .def_readwrite("mode", &Device::ChannelSettings::mode) |
| 57 | + .def_readwrite("homeMode", &Device::ChannelSettings::homeMode) |
| 58 | + .def_readwrite("home", &Device::ChannelSettings::home) |
| 59 | + .def_readwrite("minimum", &Device::ChannelSettings::minimum) |
| 60 | + .def_readwrite("maximum", &Device::ChannelSettings::maximum) |
| 61 | + .def_readwrite("neutral", &Device::ChannelSettings::neutral) |
| 62 | + .def_readwrite("range", &Device::ChannelSettings::range) |
| 63 | + .def_readwrite("speed", &Device::ChannelSettings::speed) |
| 64 | + .def_readwrite("acceleration", &Device::ChannelSettings::acceleration) |
62 | 65 | ;
|
63 | 66 |
|
64 |
| - py::class_<MaestroDevice::ServoStatus>(device, "ServoStatus") |
65 |
| - .def_readonly("position", &MaestroDevice::ServoStatus::position) |
66 |
| - .def_readonly("target", &MaestroDevice::ServoStatus::target) |
67 |
| - .def_readonly("speed", &MaestroDevice::ServoStatus::speed) |
68 |
| - .def_readonly("acceleration", &MaestroDevice::ServoStatus::acceleration) |
| 67 | + py::class_<Device::ServoStatus>(device, "ServoStatus") |
| 68 | + .def_readonly("position", &Device::ServoStatus::position) |
| 69 | + .def_readonly("target", &Device::ServoStatus::target) |
| 70 | + .def_readonly("speed", &Device::ServoStatus::speed) |
| 71 | + .def_readonly("acceleration", &Device::ServoStatus::acceleration) |
69 | 72 | ;
|
70 | 73 |
|
71 |
| - device.def("getName", &MaestroDevice::getName) |
72 |
| - .def("getNumChannels", &MaestroDevice::getNumChannels) |
73 |
| - .def("setTarget", &MaestroDevice::setTarget) |
74 |
| - .def("setSpeed", &MaestroDevice::setSpeed) |
75 |
| - .def("setAcceleration", &MaestroDevice::setAcceleration) |
76 |
| - .def("getServoStatus", &MaestroDevice::getServoStatus) |
77 |
| - .def("restoreDefaultConfiguration", &MaestroDevice::restoreDefaultConfiguration) |
78 |
| - .def("getDeviceSettings", &MaestroDevice::getDeviceSettings) |
79 |
| - .def("setDeviceSettings", &MaestroDevice::setDeviceSettings) |
80 |
| - .def("getChannelSettings", &MaestroDevice::getChannelSettings) |
81 |
| - .def("setChannelSettings", &MaestroDevice::setChannelSettings) |
82 |
| - .def("eraseScript", &MaestroDevice::eraseScript) |
83 |
| - .def("restartScriptAtSubroutine", &MaestroDevice::restartScriptAtSubroutine) |
84 |
| - .def("restartScriptAtSubroutineWithParameter", &MaestroDevice::restartScriptAtSubroutineWithParameter) |
85 |
| - .def("restartScript", &MaestroDevice::restartScript) |
86 |
| - .def("setScriptDone", &MaestroDevice::setScriptDone) |
87 |
| - .def("startBootloader", &MaestroDevice::startBootloader) |
88 |
| - .def("reinitialize", &MaestroDevice::reinitialize) |
89 |
| - .def("clearErrors", &MaestroDevice::clearErrors) |
90 |
| - .def("writeScript", &MaestroDevice::writeScript) |
91 |
| - .def("setPWM", &MaestroDevice::setPWM) |
92 |
| - .def("disablePWM", &MaestroDevice::disablePWM) |
| 74 | + device.def("getName", &Device::getName) |
| 75 | + .def("getNumChannels", &Device::getNumChannels) |
| 76 | + .def("setTarget", &Device::setTarget, py::arg("channelNumber"), py::arg("target")) |
| 77 | + .def("setSpeed", &Device::setSpeed, py::arg("channelNumber"), py::arg("target")) |
| 78 | + .def("setAcceleration", &Device::setAcceleration, py::arg("channelNumber"), py::arg("target")) |
| 79 | + .def("getServoStatus", &Device::getServoStatus) |
| 80 | + .def("restoreDefaultConfiguration", &Device::restoreDefaultConfiguration) |
| 81 | + .def("getDeviceSettings", &Device::getDeviceSettings) |
| 82 | + .def("setDeviceSettings", &Device::setDeviceSettings, py::arg("settings")) |
| 83 | + .def("getChannelSettings", &Device::getChannelSettings) |
| 84 | + .def("setChannelSettings", &Device::setChannelSettings, py::arg("channelNumber"), py::arg("settings")) |
| 85 | + .def("eraseScript", &Device::eraseScript) |
| 86 | + .def("restartScriptAtSubroutine", &Device::restartScriptAtSubroutine, py::arg("subroutineNumber")) |
| 87 | + .def("restartScriptAtSubroutineWithParameter", &Device::restartScriptAtSubroutineWithParameter, py::arg("subroutineNumber"), py::arg("parameter")) |
| 88 | + .def("restartScript", &Device::restartScript) |
| 89 | + .def("setScriptDone", &Device::setScriptDone, py::arg("value")) |
| 90 | + .def("startBootloader", &Device::startBootloader) |
| 91 | + .def("reinitialize", &Device::reinitialize) |
| 92 | + .def("clearErrors", &Device::clearErrors) |
| 93 | + .def("writeScript", &Device::writeScript, py::arg("bytecode")) |
| 94 | + .def("setPWM", &Device::setPWM, py::arg("dutyCycle"), py::arg("period")) |
| 95 | + .def("disablePWM", &Device::disablePWM) |
93 | 96 | ;
|
| 97 | + |
| 98 | + py::class_<Program>(m, "Program") |
| 99 | + .def(py::init<const std::string &, bool>(), py::arg("script"), py::arg("isMiniMaestro")) |
| 100 | + .def("getByteList", &Program::getByteList) |
| 101 | + .def("getCRC", &Program::getCRC) |
| 102 | + .def("toString", &Program::toString); |
94 | 103 | }
|
0 commit comments