From 0cadb24e3172388a8f621dd4ff5aeefe046fe471 Mon Sep 17 00:00:00 2001 From: TheMarpe Date: Sun, 16 May 2021 01:44:52 +0200 Subject: [PATCH 1/9] WIP: Device configuration --- depthai-core | 2 +- examples/01_rgb_preview.py | 2 +- src/DeviceBindings.cpp | 110 +++++++++++++++++++----------- src/DeviceBootloaderBindings.cpp | 14 ++-- src/pipeline/CommonBindings.cpp | 19 ++++-- src/pipeline/PipelineBindings.cpp | 1 + src/py_bindings.cpp | 2 +- 7 files changed, 101 insertions(+), 49 deletions(-) diff --git a/depthai-core b/depthai-core index be20e5ee0..3634db32a 160000 --- a/depthai-core +++ b/depthai-core @@ -1 +1 @@ -Subproject commit be20e5ee04e483ffb3463d87ef0e9286a4333dab +Subproject commit 3634db32aeffb0a92ddb5572b2238db2ade429a8 diff --git a/examples/01_rgb_preview.py b/examples/01_rgb_preview.py index 80057a6ce..9ea96a04f 100755 --- a/examples/01_rgb_preview.py +++ b/examples/01_rgb_preview.py @@ -18,7 +18,7 @@ camRgb.preview.link(xoutRgb.input) # Connect to the device -with dai.Device() as device: +with dai.Device(dai.OpenVINO.VERSION_2021_2, usb2Mode=True) as device: # Print out available cameras print('Connected cameras: ', device.getConnectedCameras()) # Start pipeline diff --git a/src/DeviceBindings.cpp b/src/DeviceBindings.cpp index a24f8c8b6..0f534db44 100644 --- a/src/DeviceBindings.cpp +++ b/src/DeviceBindings.cpp @@ -10,9 +10,10 @@ // hedley #include + // Searches for available devices (as Device constructor) // but pooling, to check for python interrupts, and releases GIL in between -static std::unique_ptr deviceConstructorHelper(const dai::Pipeline& pipeline, const std::string& pathToCmd = "", bool usb2Mode = false){ +static dai::DeviceInfo deviceSearchHelper(){ auto startTime = std::chrono::steady_clock::now(); bool found; dai::DeviceInfo deviceInfo = {}; @@ -40,6 +41,13 @@ static std::unique_ptr deviceConstructorHelper(const dai::Pipeline& // if no devices found, then throw if(!found) throw std::runtime_error("No available devices"); + return deviceInfo; +} + +static std::unique_ptr deviceConstructorHelper(const dai::Pipeline& pipeline, const std::string& pathToCmd = "", bool usb2Mode = false){ + // Find device + dai::DeviceInfo deviceInfo = deviceSearchHelper(); + // Check if pathToCmd supplied if(pathToCmd.empty()){ return std::unique_ptr(new dai::Device(pipeline, deviceInfo, usb2Mode)); @@ -49,35 +57,9 @@ static std::unique_ptr deviceConstructorHelper(const dai::Pipeline& return nullptr; } -// Searches for available devices (as Device constructor) -// but pooling, to check for python interrupts, and releases GIL in between static std::unique_ptr deviceConstructorHelper(dai::OpenVINO::Version version, const std::string& pathToCmd = "", bool usb2Mode = false){ - auto startTime = std::chrono::steady_clock::now(); - bool found; - dai::DeviceInfo deviceInfo = {}; - do { - { - // releases python GIL - py::gil_scoped_release release; - std::tie(found, deviceInfo) = dai::Device::getFirstAvailableDevice(); - // Check if found - if(found){ - break; - } else { - // block for 100ms - std::this_thread::sleep_for(std::chrono::milliseconds(100)); - } - } - // reacquires python GIL for PyErr_CheckSignals call - // check if interrupt triggered in between - if (PyErr_CheckSignals() != 0) throw py::error_already_set(); - } while(std::chrono::steady_clock::now() - startTime < dai::Device::DEFAULT_SEARCH_TIME); - - // If neither UNBOOTED nor BOOTLOADER were found (after 'DEFAULT_SEARCH_TIME'), try BOOTED - if(!found) std::tie(found, deviceInfo) = dai::XLinkConnection::getFirstDevice(X_LINK_BOOTED); - - // if no devices found, then throw - if(!found) throw std::runtime_error("No available devices"); + // Find device + dai::DeviceInfo deviceInfo = deviceSearchHelper(); // Check if pathToCmd supplied if(pathToCmd.empty()){ @@ -116,9 +98,27 @@ void DeviceBindings::bind(pybind11::module& m){ using namespace dai; + // Bind preboot config + py::class_(m, "PrebootConfig", DOC(dai, PrebootConfig)) + .def(py::init<>()) + .def_readwrite("vid", &PrebootConfig::vid) + .def_readwrite("pid", &PrebootConfig::pid) + .def_readwrite("flashBootedVid", &PrebootConfig::flashBootedVid) + .def_readwrite("flashBootedPid", &PrebootConfig::flashBootedPid) + .def_readwrite("maxUsbSpeed", &PrebootConfig::maxUsbSpeed) + ; + // Bind Device, using DeviceWrapper to be able to destruct the object by calling close() - py::class_(m, "Device", DOC(dai, Device)) + py::class_ device(m, "Device", DOC(dai, Device)); + + py::class_(device, "Config", DOC(dai, Device, Config)) + .def(py::init<>()) + .def_readwrite("version", &Device::Config::version) + .def_readwrite("preboot", &Device::Config::preboot) + ; + + device // Python only methods .def("__enter__", [](py::object obj){ return obj; }) .def("__exit__", [](Device& d, py::object type, py::object value, py::object traceback) { d.close(); }) @@ -141,38 +141,71 @@ void DeviceBindings::bind(pybind11::module& m){ // Blocking constructor return deviceConstructorHelper(pipeline, std::string(""), usb2Mode); }), py::arg("pipeline"), py::arg("usb2Mode"), DOC(dai, Device, Device, 2)) + + .def(py::init([](const Pipeline& pipeline, UsbSpeed maxUsbSpeed){ + auto dev = deviceSearchHelper(); + // Blocking constructor + return std::make_unique(pipeline, dev, maxUsbSpeed); + }), py::arg("pipeline"), py::arg("maxUsbSpeed"), DOC(dai, Device, Device, 2)) + .def(py::init([](const Pipeline& pipeline, const std::string& pathToCmd){ // Blocking constructor return deviceConstructorHelper(pipeline, pathToCmd); - }), py::arg("pipeline"), py::arg("pathToCmd"), DOC(dai, Device, Device, 3)) + }), py::arg("pipeline"), py::arg("pathToCmd"), DOC(dai, Device, Device, 4)) .def(py::init([](const Pipeline& pipeline, const DeviceInfo& deviceInfo, bool usb2Mode){ // Non blocking constructor return std::unique_ptr(new Device(pipeline, deviceInfo, usb2Mode)); - }), py::arg("pipeline"), py::arg("deviceDesc"), py::arg("usb2Mode") = false, DOC(dai, Device, Device, 4)) + }), py::arg("pipeline"), py::arg("deviceInfo"), py::arg("usb2Mode") = false, DOC(dai, Device, Device, 5)) + + .def(py::init([](const Pipeline& pipeline, const DeviceInfo& deviceInfo, UsbSpeed maxUsbSpeed){ + // Non blocking constructor + return std::make_unique(pipeline, deviceInfo, maxUsbSpeed); + }), py::arg("pipeline"), py::arg("deviceInfo"), py::arg("maxUsbSpeed"), DOC(dai, Device, Device, 6)) + .def(py::init([](const Pipeline& pipeline, const DeviceInfo& deviceInfo, std::string pathToCmd){ // Non blocking constructor return std::unique_ptr(new Device(pipeline, deviceInfo, pathToCmd)); - }), py::arg("pipeline"), py::arg("deviceDesc"), py::arg("pathToCmd"), DOC(dai, Device, Device, 5)) + }), py::arg("pipeline"), py::arg("deviceInfo"), py::arg("pathToCmd"), DOC(dai, Device, Device, 7)) // Device constructor - OpenVINO version - .def(py::init([](OpenVINO::Version version){ return deviceConstructorHelper(version); }), py::arg("version") = Pipeline::DEFAULT_OPENVINO_VERSION, DOC(dai, Device, Device, 6)) + .def(py::init([](OpenVINO::Version version){ return deviceConstructorHelper(version); }), py::arg("version") = Pipeline::DEFAULT_OPENVINO_VERSION, DOC(dai, Device, Device, 8)) + .def(py::init([](OpenVINO::Version version, bool usb2Mode){ // Blocking constructor return deviceConstructorHelper(version, std::string(""), usb2Mode); - }), py::arg("version"), py::arg("usb2Mode"), DOC(dai, Device, Device, 7)) + }), py::arg("version"), py::arg("usb2Mode"), DOC(dai, Device, Device, 9)) + + .def(py::init([](OpenVINO::Version version, UsbSpeed maxUsbSpeed){ + auto dev = deviceSearchHelper(); + // Non blocking constructor + return std::make_unique(version, dev, maxUsbSpeed); + }), py::arg("version"), py::arg("maxUsbSpeed"), DOC(dai, Device, Device, 10)) + .def(py::init([](OpenVINO::Version version, const std::string& pathToCmd){ // Blocking constructor return deviceConstructorHelper(version, pathToCmd); - }), py::arg("version"), py::arg("pathToCmd"), DOC(dai, Device, Device, 8)) + }), py::arg("version"), py::arg("pathToCmd"), DOC(dai, Device, Device, 11)) .def(py::init([](OpenVINO::Version version, const DeviceInfo& deviceInfo, bool usb2Mode){ // Non blocking constructor return std::unique_ptr(new Device(version, deviceInfo, usb2Mode)); - }), py::arg("version"), py::arg("deviceDesc"), py::arg("usb2Mode") = false, DOC(dai, Device, Device, 9)) + }), py::arg("version"), py::arg("deviceInfo"), py::arg("usb2Mode") = false, DOC(dai, Device, Device, 12)) + + .def(py::init([](OpenVINO::Version version, const DeviceInfo& deviceInfo, UsbSpeed maxUsbSpeed){ + // Non blocking constructor + return std::unique_ptr(new Device(version, deviceInfo, maxUsbSpeed)); + }), py::arg("version"), py::arg("deviceInfo"), py::arg("maxUsbSpeed") = false, DOC(dai, Device, Device, 13)) + + .def(py::init([](OpenVINO::Version version, const DeviceInfo& deviceInfo, std::string pathToCmd){ // Non blocking constructor return std::unique_ptr(new Device(version, deviceInfo, pathToCmd)); - }), py::arg("version"), py::arg("deviceDesc"), py::arg("pathToCmd"), DOC(dai, Device, Device, 10)) + }), py::arg("version"), py::arg("deviceInfo"), py::arg("pathToCmd"), DOC(dai, Device, Device, 14)) + + .def(py::init([](const DeviceInfo& deviceInfo, Device::Config config){ + // Non blocking constructor + return std::make_unique(deviceInfo, config); + }), py::arg("deviceInfo"), py::arg("config"), DOC(dai, Device, Device, 15)) .def("isPipelineRunning", &Device::isPipelineRunning, DOC(dai, Device, isPipelineRunning)) .def("startPipeline", [](Device& d){ @@ -234,6 +267,7 @@ void DeviceBindings::bind(pybind11::module& m){ .def("getChipTemperature", &Device::getChipTemperature, DOC(dai, Device, getChipTemperature)) .def("getLeonCssCpuUsage", &Device::getLeonCssCpuUsage, DOC(dai, Device, getLeonCssCpuUsage)) .def("getLeonMssCpuUsage", &Device::getLeonMssCpuUsage, DOC(dai, Device, getLeonMssCpuUsage)) + .def("getUsbSpeed", &Device::getLeonMssCpuUsage, DOC(dai, Device, getUsbSpeed)) .def("setLogOutputLevel", &Device::setLogOutputLevel, py::arg("level"), DOC(dai, Device, setLogOutputLevel)) .def("getLogOutputLevel", &Device::getLogOutputLevel, DOC(dai, Device, getLogOutputLevel)) .def("addLogCallback", &Device::addLogCallback, py::arg("callback"), DOC(dai, Device, addLogCallback)) diff --git a/src/DeviceBootloaderBindings.cpp b/src/DeviceBootloaderBindings.cpp index e8fb23d87..37db35741 100644 --- a/src/DeviceBootloaderBindings.cpp +++ b/src/DeviceBootloaderBindings.cpp @@ -10,6 +10,12 @@ void DeviceBootloaderBindings::bind(pybind11::module& m){ // Bind DeviceBootloader py::class_ deviceBootloader(m, "DeviceBootloader", DOC(dai, DeviceBootloader)); + // DeviceBootloader::Config + py::class_(deviceBootloader, "Config", DOC(dai, DeviceBootloader, Config)) + .def(py::init<>()) + .def_readwrite("timeout", &DeviceBootloader::Config::timeout) + ; + py::class_(deviceBootloader, "Version", DOC(dai, DeviceBootloader, Version)) .def(py::init(), py::arg("v"), DOC(dai, DeviceBootloader, Version, Version)) .def(py::init(), py::arg("major"), py::arg("minor"), py::arg("patch"), DOC(dai, DeviceBootloader, Version, Version, 2)) @@ -27,16 +33,16 @@ void DeviceBootloaderBindings::bind(pybind11::module& m){ .def_static("getFirstAvailableDevice", &DeviceBootloader::getFirstAvailableDevice, DOC(dai, DeviceBootloader, getFirstAvailableDevice)) .def_static("getAllAvailableDevices", &DeviceBootloader::getAllAvailableDevices, DOC(dai, DeviceBootloader, getAllAvailableDevices)) - .def_static("saveDepthaiApplicationPackage", &DeviceBootloader::saveDepthaiApplicationPackage, py::arg("path"), py::arg("pipeline"), py::arg("pathToCmd") = "", DOC(dai, DeviceBootloader, saveDepthaiApplicationPackage)) - .def_static("createDepthaiApplicationPackage", &DeviceBootloader::createDepthaiApplicationPackage, py::arg("pipeline"), py::arg("pathToCmd") = "", DOC(dai, DeviceBootloader, createDepthaiApplicationPackage)) + .def_static("saveDepthaiApplicationPackage", &DeviceBootloader::saveDepthaiApplicationPackage, py::arg("path"), py::arg("pipeline"), py::arg("maxUsbSpeed") = Device::DEFAULT_USB_SPEED, DOC(dai, DeviceBootloader, saveDepthaiApplicationPackage)) + .def_static("createDepthaiApplicationPackage", &DeviceBootloader::createDepthaiApplicationPackage, py::arg("pipeline"), py::arg("maxUsbSpeed") = Device::DEFAULT_USB_SPEED, DOC(dai, DeviceBootloader, createDepthaiApplicationPackage)) .def_static("getEmbeddedBootloaderVersion", &DeviceBootloader::getEmbeddedBootloaderVersion, DOC(dai, DeviceBootloader, getEmbeddedBootloaderVersion)) - .def_static("getEmbeddedBootloaderBinary", &DeviceBootloader::getEmbeddedBootloaderBinary, DOC(dai, DeviceBootloader, getEmbeddedBootloaderBinary)) + .def_static("getEmbeddedBootloaderBinary", &DeviceBootloader::getEmbeddedBootloaderBinary, py::arg("config"), DOC(dai, DeviceBootloader, getEmbeddedBootloaderBinary)) .def(py::init(), py::arg("deviceDesc"), DOC(dai, DeviceBootloader, DeviceBootloader)) .def(py::init(), py::arg("deviceDesc"), py::arg("pathToCmd"), DOC(dai, DeviceBootloader, DeviceBootloader, 2)) .def("flash", &DeviceBootloader::flash, py::arg("progressCallback"), py::arg("pipeline"), DOC(dai, DeviceBootloader, flash)) .def("flashDepthaiApplicationPackage", &DeviceBootloader::flashDepthaiApplicationPackage, py::arg("progressCallback"), py::arg("package"), DOC(dai, DeviceBootloader, flashDepthaiApplicationPackage)) - .def("flashBootloader", &DeviceBootloader::flashBootloader, py::arg("progressCallback"), py::arg("path") = "", DOC(dai, DeviceBootloader, flashBootloader)) + .def("flashBootloader", &DeviceBootloader::flashBootloader, py::arg("progressCallback"), py::arg("config") = DeviceBootloader::Config{}, DOC(dai, DeviceBootloader, flashBootloader)) .def("getVersion", &DeviceBootloader::getVersion, DOC(dai, DeviceBootloader, getVersion)) .def("isEmbeddedVersion", &DeviceBootloader::isEmbeddedVersion, DOC(dai, DeviceBootloader, isEmbeddedVersion)) ; diff --git a/src/pipeline/CommonBindings.cpp b/src/pipeline/CommonBindings.cpp index c5041ad1d..0a24d7098 100644 --- a/src/pipeline/CommonBindings.cpp +++ b/src/pipeline/CommonBindings.cpp @@ -6,11 +6,12 @@ #include "depthai-shared/common/MemoryInfo.hpp" #include "depthai-shared/common/ChipTemperature.hpp" #include "depthai-shared/common/CpuUsage.hpp" +#include "depthai-shared/common/UsbSpeed.hpp" void CommonBindings::bind(pybind11::module& m){ using namespace dai; - + // CameraBoardSocket enum bindings py::enum_(m, "CameraBoardSocket", DOC(dai, CameraBoardSocket)) .value("AUTO", CameraBoardSocket::AUTO) @@ -18,7 +19,7 @@ void CommonBindings::bind(pybind11::module& m){ .value("LEFT", CameraBoardSocket::LEFT) .value("RIGHT", CameraBoardSocket::RIGHT) ; - + // CameraImageOrientation enum bindings py::enum_(m, "CameraImageOrientation", DOC(dai, CameraImageOrientation)) .value("AUTO", CameraImageOrientation::AUTO) @@ -35,7 +36,7 @@ void CommonBindings::bind(pybind11::module& m){ .def_readwrite("used", &MemoryInfo::used) .def_readwrite("total", &MemoryInfo::total) ; - + // ChipTemperature py::class_(m, "ChipTemperature", DOC(dai, ChipTemperature)) .def(py::init<>()) @@ -45,7 +46,7 @@ void CommonBindings::bind(pybind11::module& m){ .def_readwrite("dss", &ChipTemperature::dss) .def_readwrite("average", &ChipTemperature::average) ; - + // CpuUsage py::class_(m, "CpuUsage", DOC(dai, CpuUsage)) .def(py::init<>()) @@ -53,4 +54,14 @@ void CommonBindings::bind(pybind11::module& m){ .def_readwrite("msTime", &CpuUsage::msTime) ; + // UsbSpeed + py::enum_(m, "UsbSpeed", DOC(dai, UsbSpeed)) + .value("UNKNOWN", UsbSpeed::UNKNOWN) + .value("LOW", UsbSpeed::LOW) + .value("FULL", UsbSpeed::FULL) + .value("HIGH", UsbSpeed::HIGH) + .value("SUPER", UsbSpeed::SUPER) + .value("SUPER_PLUS", UsbSpeed::SUPER_PLUS) + ; + } diff --git a/src/pipeline/PipelineBindings.cpp b/src/pipeline/PipelineBindings.cpp index 01b97b551..cfb010409 100644 --- a/src/pipeline/PipelineBindings.cpp +++ b/src/pipeline/PipelineBindings.cpp @@ -60,6 +60,7 @@ void PipelineBindings::bind(pybind11::module& m){ .def("getAssetManager", static_cast(&Pipeline::getAssetManager), py::return_value_policy::reference_internal, DOC(dai, Pipeline, getAssetManager)) .def("setOpenVINOVersion", &Pipeline::setOpenVINOVersion, py::arg("version") = Pipeline::DEFAULT_OPENVINO_VERSION, DOC(dai, Pipeline, setOpenVINOVersion)) .def("getOpenVINOVersion", &Pipeline::getOpenVINOVersion, DOC(dai, Pipeline, getOpenVINOVersion)) + .def("getRequiredOpenVINOVersion", &Pipeline::getRequiredOpenVINOVersion, DOC(dai, Pipeline, getRequiredOpenVINOVersion)) .def("setCameraTuningBlobPath", &Pipeline::setCameraTuningBlobPath, py::arg("path"), DOC(dai, Pipeline, setCameraTuningBlobPath)) // templated create function diff --git a/src/py_bindings.cpp b/src/py_bindings.cpp index 9686d406e..18fb21f42 100644 --- a/src/py_bindings.cpp +++ b/src/py_bindings.cpp @@ -39,6 +39,7 @@ PYBIND11_MODULE(depthai,m) // Add bindings + CommonBindings::bind(m); OpenVINOBindings::bind(m); AssetManagerBindings::bind(m); NodeBindings::bind(m); @@ -46,7 +47,6 @@ PYBIND11_MODULE(depthai,m) XLinkConnectionBindings::bind(m); DeviceBindings::bind(m); DeviceBootloaderBindings::bind(m); - CommonBindings::bind(m); DatatypeBindings::bind(m); DataQueueBindings::bind(m); LogBindings::bind(m); From 2325f8021041373b05fe4719ba0d66fb3b284b6e Mon Sep 17 00:00:00 2001 From: TheMarpe Date: Sun, 16 May 2021 02:54:44 +0200 Subject: [PATCH 2/9] Fixed wrong bindings --- src/DeviceBindings.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/DeviceBindings.cpp b/src/DeviceBindings.cpp index 0f534db44..454e3e743 100644 --- a/src/DeviceBindings.cpp +++ b/src/DeviceBindings.cpp @@ -267,7 +267,7 @@ void DeviceBindings::bind(pybind11::module& m){ .def("getChipTemperature", &Device::getChipTemperature, DOC(dai, Device, getChipTemperature)) .def("getLeonCssCpuUsage", &Device::getLeonCssCpuUsage, DOC(dai, Device, getLeonCssCpuUsage)) .def("getLeonMssCpuUsage", &Device::getLeonMssCpuUsage, DOC(dai, Device, getLeonMssCpuUsage)) - .def("getUsbSpeed", &Device::getLeonMssCpuUsage, DOC(dai, Device, getUsbSpeed)) + .def("getUsbSpeed", &Device::getUsbSpeed, DOC(dai, Device, getUsbSpeed)) .def("setLogOutputLevel", &Device::setLogOutputLevel, py::arg("level"), DOC(dai, Device, setLogOutputLevel)) .def("getLogOutputLevel", &Device::getLogOutputLevel, DOC(dai, Device, getLogOutputLevel)) .def("addLogCallback", &Device::addLogCallback, py::arg("callback"), DOC(dai, Device, addLogCallback)) From cf3599ba6794fae6cb9a149f541cf509e33dcab3 Mon Sep 17 00:00:00 2001 From: TheMarpe Date: Thu, 20 May 2021 15:34:32 +0200 Subject: [PATCH 3/9] Updated example to showcase UsbSpeed settings --- depthai-core | 2 +- examples/01_rgb_preview.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/depthai-core b/depthai-core index 30f3ce8a9..ab8388573 160000 --- a/depthai-core +++ b/depthai-core @@ -1 +1 @@ -Subproject commit 30f3ce8a99c19f98cfba50a1c1adde4f872acc67 +Subproject commit ab838857383c86b4e27c96dab34ec9a76e04922c diff --git a/examples/01_rgb_preview.py b/examples/01_rgb_preview.py index f8fbe4377..7750137e9 100755 --- a/examples/01_rgb_preview.py +++ b/examples/01_rgb_preview.py @@ -18,7 +18,7 @@ camRgb.preview.link(xoutRgb.input) # Connect to the device -with dai.Device(dai.OpenVINO.VERSION_2021_2, usb2Mode=True) as device: +with dai.Device(dai.OpenVINO.VERSION_2021_3, dai.UsbSpeed.SUPER) as device: # Print out available cameras print('Connected cameras: ', device.getConnectedCameras()) # Print out usb speed From a219530774384cda6efaf5fa775b344713094b32 Mon Sep 17 00:00:00 2001 From: TheMarpe Date: Fri, 21 May 2021 02:24:08 +0200 Subject: [PATCH 4/9] Removed bootloader configuration --- depthai-core | 2 +- src/DeviceBootloaderBindings.cpp | 14 ++++---------- 2 files changed, 5 insertions(+), 11 deletions(-) diff --git a/depthai-core b/depthai-core index ab8388573..dc02c430e 160000 --- a/depthai-core +++ b/depthai-core @@ -1 +1 @@ -Subproject commit ab838857383c86b4e27c96dab34ec9a76e04922c +Subproject commit dc02c430e63cd988c9f3534a813e5813a02625a3 diff --git a/src/DeviceBootloaderBindings.cpp b/src/DeviceBootloaderBindings.cpp index 37db35741..e8fb23d87 100644 --- a/src/DeviceBootloaderBindings.cpp +++ b/src/DeviceBootloaderBindings.cpp @@ -10,12 +10,6 @@ void DeviceBootloaderBindings::bind(pybind11::module& m){ // Bind DeviceBootloader py::class_ deviceBootloader(m, "DeviceBootloader", DOC(dai, DeviceBootloader)); - // DeviceBootloader::Config - py::class_(deviceBootloader, "Config", DOC(dai, DeviceBootloader, Config)) - .def(py::init<>()) - .def_readwrite("timeout", &DeviceBootloader::Config::timeout) - ; - py::class_(deviceBootloader, "Version", DOC(dai, DeviceBootloader, Version)) .def(py::init(), py::arg("v"), DOC(dai, DeviceBootloader, Version, Version)) .def(py::init(), py::arg("major"), py::arg("minor"), py::arg("patch"), DOC(dai, DeviceBootloader, Version, Version, 2)) @@ -33,16 +27,16 @@ void DeviceBootloaderBindings::bind(pybind11::module& m){ .def_static("getFirstAvailableDevice", &DeviceBootloader::getFirstAvailableDevice, DOC(dai, DeviceBootloader, getFirstAvailableDevice)) .def_static("getAllAvailableDevices", &DeviceBootloader::getAllAvailableDevices, DOC(dai, DeviceBootloader, getAllAvailableDevices)) - .def_static("saveDepthaiApplicationPackage", &DeviceBootloader::saveDepthaiApplicationPackage, py::arg("path"), py::arg("pipeline"), py::arg("maxUsbSpeed") = Device::DEFAULT_USB_SPEED, DOC(dai, DeviceBootloader, saveDepthaiApplicationPackage)) - .def_static("createDepthaiApplicationPackage", &DeviceBootloader::createDepthaiApplicationPackage, py::arg("pipeline"), py::arg("maxUsbSpeed") = Device::DEFAULT_USB_SPEED, DOC(dai, DeviceBootloader, createDepthaiApplicationPackage)) + .def_static("saveDepthaiApplicationPackage", &DeviceBootloader::saveDepthaiApplicationPackage, py::arg("path"), py::arg("pipeline"), py::arg("pathToCmd") = "", DOC(dai, DeviceBootloader, saveDepthaiApplicationPackage)) + .def_static("createDepthaiApplicationPackage", &DeviceBootloader::createDepthaiApplicationPackage, py::arg("pipeline"), py::arg("pathToCmd") = "", DOC(dai, DeviceBootloader, createDepthaiApplicationPackage)) .def_static("getEmbeddedBootloaderVersion", &DeviceBootloader::getEmbeddedBootloaderVersion, DOC(dai, DeviceBootloader, getEmbeddedBootloaderVersion)) - .def_static("getEmbeddedBootloaderBinary", &DeviceBootloader::getEmbeddedBootloaderBinary, py::arg("config"), DOC(dai, DeviceBootloader, getEmbeddedBootloaderBinary)) + .def_static("getEmbeddedBootloaderBinary", &DeviceBootloader::getEmbeddedBootloaderBinary, DOC(dai, DeviceBootloader, getEmbeddedBootloaderBinary)) .def(py::init(), py::arg("deviceDesc"), DOC(dai, DeviceBootloader, DeviceBootloader)) .def(py::init(), py::arg("deviceDesc"), py::arg("pathToCmd"), DOC(dai, DeviceBootloader, DeviceBootloader, 2)) .def("flash", &DeviceBootloader::flash, py::arg("progressCallback"), py::arg("pipeline"), DOC(dai, DeviceBootloader, flash)) .def("flashDepthaiApplicationPackage", &DeviceBootloader::flashDepthaiApplicationPackage, py::arg("progressCallback"), py::arg("package"), DOC(dai, DeviceBootloader, flashDepthaiApplicationPackage)) - .def("flashBootloader", &DeviceBootloader::flashBootloader, py::arg("progressCallback"), py::arg("config") = DeviceBootloader::Config{}, DOC(dai, DeviceBootloader, flashBootloader)) + .def("flashBootloader", &DeviceBootloader::flashBootloader, py::arg("progressCallback"), py::arg("path") = "", DOC(dai, DeviceBootloader, flashBootloader)) .def("getVersion", &DeviceBootloader::getVersion, DOC(dai, DeviceBootloader, getVersion)) .def("isEmbeddedVersion", &DeviceBootloader::isEmbeddedVersion, DOC(dai, DeviceBootloader, isEmbeddedVersion)) ; From 0d9e38dd4a07e86f0ec0bc9f043a8e63ff6f7b2f Mon Sep 17 00:00:00 2001 From: TheMarpe Date: Fri, 28 May 2021 14:48:09 +0200 Subject: [PATCH 5/9] Updated rgb_preview example --- depthai-core | 2 +- examples/rgb_preview.py | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/depthai-core b/depthai-core index 2f8ba370a..7dd586a30 160000 --- a/depthai-core +++ b/depthai-core @@ -1 +1 @@ -Subproject commit 2f8ba370a86e5ff627a4e884f12e45b55a387f3f +Subproject commit 7dd586a30d337bf0041bb30d0add37d31e550961 diff --git a/examples/rgb_preview.py b/examples/rgb_preview.py index 37e27d80f..8484547a9 100755 --- a/examples/rgb_preview.py +++ b/examples/rgb_preview.py @@ -21,7 +21,7 @@ camRgb.preview.link(xoutRgb.input) # Connect to the device -with dai.Device(dai.OpenVINO.VERSION_2021_3, dai.UsbSpeed.SUPER) as device: +with dai.Device(pipeline, dai.UsbSpeed.SUPER) as device: # Print out available cameras print('Connected cameras: ', device.getConnectedCameras()) # Print out usb speed @@ -31,7 +31,7 @@ qRgb = device.getOutputQueue(name="rgb", maxSize=4, blocking=False) while True: - inRgb = qRgb.get() # blocking call, will wait until a new data has arrived + inRgb = qRgb.get() # blocking call, will wait until a new data has arrived # Retrieve 'bgr' (opencv format) frame cv2.imshow("rgb", inRgb.getCvFrame()) From 147162688ed6418d9518a9d6cfcd99d1ce6c07a0 Mon Sep 17 00:00:00 2001 From: TheMarpe Date: Thu, 22 Jul 2021 13:49:59 +0200 Subject: [PATCH 6/9] Updated bindings for PrebootConfig --- depthai-core | 2 +- src/DeviceBindings.cpp | 24 +++++++++++++++++------- 2 files changed, 18 insertions(+), 8 deletions(-) diff --git a/depthai-core b/depthai-core index 64f1aba87..d6d95e25d 160000 --- a/depthai-core +++ b/depthai-core @@ -1 +1 @@ -Subproject commit 64f1aba871829c1cb49ae78e887f793c360b417a +Subproject commit d6d95e25d0188c1029be97cc59725fdcd455d021 diff --git a/src/DeviceBindings.cpp b/src/DeviceBindings.cpp index 26c871dd1..a51501fa8 100644 --- a/src/DeviceBindings.cpp +++ b/src/DeviceBindings.cpp @@ -98,14 +98,24 @@ void DeviceBindings::bind(pybind11::module& m){ using namespace dai; - // Bind preboot config - py::class_(m, "PrebootConfig", DOC(dai, PrebootConfig)) + + // Bind PrebootConfig + py::class_ prebootConfig(m, "PrebootConfig", DOC(dai, PrebootConfig)); + + // Bind PrebootConfig::USB + py::class_(prebootConfig, "USB", DOC(dai, PrebootConfig, USB)) + .def(py::init<>()) + .def_readwrite("vid", &PrebootConfig::USB::vid) + .def_readwrite("pid", &PrebootConfig::USB::pid) + .def_readwrite("flashBootedVid", &PrebootConfig::USB::flashBootedVid) + .def_readwrite("flashBootedPid", &PrebootConfig::USB::flashBootedPid) + .def_readwrite("maxSpeed", &PrebootConfig::USB::maxSpeed) + ; + + prebootConfig .def(py::init<>()) - .def_readwrite("vid", &PrebootConfig::vid) - .def_readwrite("pid", &PrebootConfig::pid) - .def_readwrite("flashBootedVid", &PrebootConfig::flashBootedVid) - .def_readwrite("flashBootedPid", &PrebootConfig::flashBootedPid) - .def_readwrite("maxUsbSpeed", &PrebootConfig::maxUsbSpeed) + .def_readwrite("usb", &PrebootConfig::usb) + .def_readwrite("watchdogTimeoutMs", &PrebootConfig::watchdogTimeoutMs) ; From c195c80ddd99ec6104b1c8bf3d2b9f314b21f9f6 Mon Sep 17 00:00:00 2001 From: TheMarpe Date: Sat, 24 Jul 2021 22:39:16 +0200 Subject: [PATCH 7/9] Added missing bindings --- depthai-core | 2 +- src/pipeline/PipelineBindings.cpp | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/depthai-core b/depthai-core index cec733af3..23319c3a2 160000 --- a/depthai-core +++ b/depthai-core @@ -1 +1 @@ -Subproject commit cec733af3cb7015b7024a36b835787e2e5c38e8a +Subproject commit 23319c3a25cd7d5cc43541b81d41b0c1922d429d diff --git a/src/pipeline/PipelineBindings.cpp b/src/pipeline/PipelineBindings.cpp index 8e94aea10..c62f80066 100644 --- a/src/pipeline/PipelineBindings.cpp +++ b/src/pipeline/PipelineBindings.cpp @@ -97,6 +97,7 @@ void PipelineBindings::bind(pybind11::module& m, void* pCallstack){ .def("setCameraTuningBlobPath", &Pipeline::setCameraTuningBlobPath, py::arg("path"), DOC(dai, Pipeline, setCameraTuningBlobPath)) .def("setCalibrationData", &Pipeline::setCalibrationData, py::arg("calibrationDataHandler"), DOC(dai, Pipeline, setCalibrationData)) .def("getCalibrationData", &Pipeline::getCalibrationData, DOC(dai, Pipeline, getCalibrationData)) + .def("getDeviceConfig", &Pipeline::getDeviceConfig, DOC(dai, Pipeline, getDeviceConfig)) // 'Template' create function .def("create", [](dai::Pipeline& p, py::object class_) { auto node = createNode(p, class_); From dde13ab04e8f26c0ee3cc11920646ba9ea50cded Mon Sep 17 00:00:00 2001 From: TheMarpe Date: Mon, 23 Aug 2021 20:38:01 +0200 Subject: [PATCH 8/9] Updated core --- depthai-core | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/depthai-core b/depthai-core index 23319c3a2..5dd1ec3e8 160000 --- a/depthai-core +++ b/depthai-core @@ -1 +1 @@ -Subproject commit 23319c3a25cd7d5cc43541b81d41b0c1922d429d +Subproject commit 5dd1ec3e8d06c2857bcf03c09650a758467a4599 From cb17db2175f669f13b549d05ef7ab6fbaf051cd3 Mon Sep 17 00:00:00 2001 From: TheMarpe Date: Mon, 23 Aug 2021 22:36:26 +0200 Subject: [PATCH 9/9] Updated core --- depthai-core | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/depthai-core b/depthai-core index 5dd1ec3e8..8071ddb6c 160000 --- a/depthai-core +++ b/depthai-core @@ -1 +1 @@ -Subproject commit 5dd1ec3e8d06c2857bcf03c09650a758467a4599 +Subproject commit 8071ddb6c4b2228c48c6eca11d0c400c3b3081d4