Device.hpp
Go to the documentation of this file.
1 #pragma once
2 
3 // std
4 #include <chrono>
5 #include <condition_variable>
6 #include <deque>
7 #include <memory>
8 #include <mutex>
9 #include <string>
10 #include <unordered_map>
11 
12 // project
13 #include "DataQueue.hpp"
15 
16 namespace dai {
21 class Device : public DeviceBase {
22  public:
23  using DeviceBase::DeviceBase; // inherit the ctors
24 
29  explicit Device(const Pipeline& pipeline);
30 
36  template <typename T, std::enable_if_t<std::is_same<T, bool>::value, bool> = true>
37  [[deprecated("Use constructor taking 'UsbSpeed' instead")]] Device(const Pipeline& pipeline, T usb2Mode);
38 
44  Device(const Pipeline& pipeline, UsbSpeed maxUsbSpeed);
45 
51  Device(const Pipeline& pipeline, const dai::Path& pathToCmd);
52 
58  Device(const Pipeline& pipeline, const DeviceInfo& devInfo);
59 
66  template <typename T, std::enable_if_t<std::is_same<T, bool>::value, bool> = true>
67  [[deprecated("Use constructor taking 'UsbSpeed' instead")]] Device(const Pipeline& pipeline, const DeviceInfo& devInfo, T usb2Mode);
68 
75  Device(const Pipeline& pipeline, const DeviceInfo& devInfo, UsbSpeed maxUsbSpeed);
76 
83  Device(const Pipeline& pipeline, const DeviceInfo& devInfo, const dai::Path& pathToCmd);
84 
89  Device();
90 
94  ~Device() override;
95 
97  static constexpr std::size_t EVENT_QUEUE_MAXIMUM_SIZE{2048};
98 
105  std::shared_ptr<DataOutputQueue> getOutputQueue(const std::string& name);
106 
115  std::shared_ptr<DataOutputQueue> getOutputQueue(const std::string& name, unsigned int maxSize, bool blocking = true);
116 
122  std::vector<std::string> getOutputQueueNames() const;
123 
130  std::shared_ptr<DataInputQueue> getInputQueue(const std::string& name);
131 
140  std::shared_ptr<DataInputQueue> getInputQueue(const std::string& name, unsigned int maxSize, bool blocking = true);
141 
147  std::vector<std::string> getInputQueueNames() const;
148 
149  // void setCallback(const std::string& name, std::function<std::shared_ptr<RawBuffer>(std::shared_ptr<RawBuffer>)> cb);
150 
159  std::vector<std::string> getQueueEvents(const std::vector<std::string>& queueNames,
160  std::size_t maxNumEvents = std::numeric_limits<std::size_t>::max(),
161  std::chrono::microseconds timeout = std::chrono::microseconds(-1));
162  std::vector<std::string> getQueueEvents(const std::initializer_list<std::string>& queueNames,
163  std::size_t maxNumEvents = std::numeric_limits<std::size_t>::max(),
164  std::chrono::microseconds timeout = std::chrono::microseconds(-1));
165 
174  std::vector<std::string> getQueueEvents(std::string queueName,
175  std::size_t maxNumEvents = std::numeric_limits<std::size_t>::max(),
176  std::chrono::microseconds timeout = std::chrono::microseconds(-1));
177 
185  std::vector<std::string> getQueueEvents(std::size_t maxNumEvents = std::numeric_limits<std::size_t>::max(),
186  std::chrono::microseconds timeout = std::chrono::microseconds(-1));
187 
195  std::string getQueueEvent(const std::vector<std::string>& queueNames, std::chrono::microseconds timeout = std::chrono::microseconds(-1));
196  std::string getQueueEvent(const std::initializer_list<std::string>& queueNames, std::chrono::microseconds timeout = std::chrono::microseconds(-1));
197 
205  std::string getQueueEvent(std::string queueName, std::chrono::microseconds timeout = std::chrono::microseconds(-1));
206 
213  std::string getQueueEvent(std::chrono::microseconds timeout = std::chrono::microseconds(-1));
214 
215  private:
216  std::unordered_map<std::string, std::shared_ptr<DataOutputQueue>> outputQueueMap;
217  std::unordered_map<std::string, std::shared_ptr<DataInputQueue>> inputQueueMap;
218  std::unordered_map<std::string, DataOutputQueue::CallbackId> callbackIdMap;
219 
220  // Event queue
221  std::mutex eventMtx;
222  std::condition_variable eventCv;
223  std::deque<std::string> eventQueue;
224 
225  bool startPipelineImpl(const Pipeline& pipeline) override;
226  void closeImpl() override;
227 };
228 
229 } // namespace dai
dai::Device::~Device
~Device() override
dtor to close the device
Definition: Device.cpp:64
dai::Device::eventCv
std::condition_variable eventCv
Definition: Device.hpp:222
DataQueue.hpp
dai::Pipeline
Represents the pipeline, set of nodes and connections between them.
Definition: Pipeline.hpp:100
dai::UsbSpeed
UsbSpeed
Definition: shared/depthai-shared/include/depthai-shared/common/UsbSpeed.hpp:12
dai::DeviceInfo
Definition: XLinkConnection.hpp:27
dai::Device::Device
Device()
Definition: Device.cpp:62
DeviceBase.hpp
dai::Device::callbackIdMap
std::unordered_map< std::string, DataOutputQueue::CallbackId > callbackIdMap
Definition: Device.hpp:218
dai::Device::eventQueue
std::deque< std::string > eventQueue
Definition: Device.hpp:223
dai::Device::getInputQueueNames
std::vector< std::string > getInputQueueNames() const
Definition: Device.cpp:145
dai::Device::getOutputQueue
std::shared_ptr< DataOutputQueue > getOutputQueue(const std::string &name)
Definition: Device.cpp:86
dai::Device::getOutputQueueNames
std::vector< std::string > getOutputQueueNames() const
Definition: Device.cpp:111
dai::Device::outputQueueMap
std::unordered_map< std::string, std::shared_ptr< DataOutputQueue > > outputQueueMap
Definition: Device.hpp:216
dai::Device::EVENT_QUEUE_MAXIMUM_SIZE
static constexpr std::size_t EVENT_QUEUE_MAXIMUM_SIZE
Maximum number of elements in event queue.
Definition: Device.hpp:97
dai::Device::eventMtx
std::mutex eventMtx
Definition: Device.hpp:221
dai::Device::inputQueueMap
std::unordered_map< std::string, std::shared_ptr< DataInputQueue > > inputQueueMap
Definition: Device.hpp:217
dai::Device::startPipelineImpl
bool startPipelineImpl(const Pipeline &pipeline) override
Definition: Device.cpp:255
dai::DeviceBase::DeviceBase
DeviceBase()
Definition: DeviceBase.cpp:353
dai::Device
Definition: Device.hpp:21
dai::DeviceBase
Definition: DeviceBase.hpp:50
dai::Device::getQueueEvent
std::string getQueueEvent(const std::vector< std::string > &queueNames, std::chrono::microseconds timeout=std::chrono::microseconds(-1))
Definition: Device.cpp:238
dai::Device::getQueueEvents
std::vector< std::string > getQueueEvents(const std::vector< std::string > &queueNames, std::size_t maxNumEvents=std::numeric_limits< std::size_t >::max(), std::chrono::microseconds timeout=std::chrono::microseconds(-1))
Definition: Device.cpp:164
dai::Device::closeImpl
void closeImpl() override
Definition: Device.cpp:68
dai::Device::getInputQueue
std::shared_ptr< DataInputQueue > getInputQueue(const std::string &name)
Definition: Device.cpp:120
dai::Path
Represents paths on a filesystem; accepts utf-8, Windows utf-16 wchar_t, or std::filesystem::path.
Definition: Path.hpp:27
dai
Definition: CameraExposureOffset.hpp:6


depthai
Author(s): Martin Peterlin
autogenerated on Sat Mar 22 2025 02:58:19