DeviceBootloader.hpp
Go to the documentation of this file.
1 #pragma once
2 
3 // std
4 #include <string>
5 #include <thread>
6 #include <type_traits>
7 
8 // project
9 #include "CallbackHandler.hpp"
10 #include "DataQueue.hpp"
15 
16 // shared
21 
22 namespace dai {
23 
24 // DeviceBootloader (RAII), connects to device and maintains watchdog ...
25 
30  public:
31  // Alias
37 
38  // Derive and extend bootloader::Config for easier usage
39  struct Config : public bootloader::Config {
41  void setStaticIPv4(std::string ip, std::string mask, std::string gateway);
43  void setDynamicIPv4(std::string ip, std::string mask, std::string gateway);
45  bool isStaticIPV4();
47  std::string getIPv4();
49  std::string getIPv4Mask();
51  std::string getIPv4Gateway();
53  void setDnsIPv4(std::string dns, std::string dnsAlt = "");
55  std::string getDnsIPv4();
57  std::string getDnsAltIPv4();
58 
60  void setUsbTimeout(std::chrono::milliseconds ms);
62  std::chrono::milliseconds getUsbTimeout();
63 
65  void setNetworkTimeout(std::chrono::milliseconds ms);
67  std::chrono::milliseconds getNetworkTimeout();
68 
70  void setMacAddress(std::string mac);
72  std::string getMacAddress();
73 
75  void setUsbMaxSpeed(UsbSpeed speed);
78 
80  nlohmann::json toJson() const;
81 
83  static Config fromJson(nlohmann::json);
84 
85  private:
86  nlohmann::json data;
87  };
88 
89  // Add an alias to Version
91 
92  struct ApplicationInfo {
95  std::string firmwareVersion;
96  std::string applicationName;
97  };
98 
99  struct MemoryInfo {
100  bool available;
101  std::int64_t size;
102  std::string info;
103  };
104 
105  // constants
106 
108  static constexpr const Type DEFAULT_TYPE{Type::USB};
109 
110  // Static API
115  static std::tuple<bool, DeviceInfo> getFirstAvailableDevice();
116 
121  static std::vector<DeviceInfo> getAllAvailableDevices();
122 
131  static std::vector<uint8_t> createDepthaiApplicationPackage(
132  const Pipeline& pipeline, const dai::Path& pathToCmd = {}, bool compress = false, std::string applicationName = "", bool checkChecksum = false);
133 
141  static std::vector<uint8_t> createDepthaiApplicationPackage(const Pipeline& pipeline,
142  bool compress,
143  std::string applicationName = "",
144  bool checkChecksum = false);
145 
154  static void saveDepthaiApplicationPackage(const dai::Path& path,
155  const Pipeline& pipeline,
156  const dai::Path& pathToCmd = {},
157  bool compress = false,
158  std::string applicationName = "",
159  bool checkChecksum = false);
160 
168  static void saveDepthaiApplicationPackage(
169  const dai::Path& path, const Pipeline& pipeline, bool compress, std::string applicationName = "", bool checkChecksum = false);
170 
175 
179  static std::vector<std::uint8_t> getEmbeddedBootloaderBinary(Type type = DEFAULT_TYPE);
180 
181  DeviceBootloader() = delete;
182 
187  explicit DeviceBootloader(const DeviceInfo& devInfo);
188 
194  template <typename T, std::enable_if_t<std::is_same<T, bool>::value, bool> = true>
195  DeviceBootloader(const DeviceInfo& devInfo, T allowFlashingBootloader);
196 
204  DeviceBootloader(const DeviceInfo& devInfo, Type type, bool allowFlashingBootloader = false);
205 
212  DeviceBootloader(const DeviceInfo& devInfo, const dai::Path& pathToBootloader, bool allowFlashingBootloader = false);
213 
220  DeviceBootloader(std::string nameOrDeviceId, bool allowFlashingBootloader = false);
221 
227 
235  std::tuple<bool, std::string> flash(std::function<void(float)> progressCallback,
236  const Pipeline& pipeline,
237  bool compress = false,
238  std::string applicationName = "",
239  Memory memory = Memory::AUTO,
240  bool checkChecksum = false);
241 
248  std::tuple<bool, std::string> flash(
249  const Pipeline& pipeline, bool compress = false, std::string applicationName = "", Memory memory = Memory::AUTO, bool checkChecksum = false);
250 
255  ApplicationInfo readApplicationInfo(Memory memory);
256 
262  std::tuple<bool, std::string> flashDepthaiApplicationPackage(std::function<void(float)> progressCallback,
263  std::vector<uint8_t> package,
264  Memory memory = Memory::AUTO);
265 
270  std::tuple<bool, std::string> flashDepthaiApplicationPackage(std::vector<uint8_t> package, Memory memory = Memory::AUTO);
271 
276  std::tuple<bool, std::string> flashClear(Memory memory = Memory::AUTO);
277 
283  std::tuple<bool, std::string> flashBootloader(std::function<void(float)> progressCallback, const dai::Path& path = {});
284 
292  std::tuple<bool, std::string> flashBootloader(Memory memory, Type type, std::function<void(float)> progressCallback, const dai::Path& path = {});
293 
299  std::tuple<bool, std::string> flashUserBootloader(std::function<void(float)> progressCallback, const dai::Path& path = {});
300 
305  std::tuple<bool, std::string> flashGpioModeBootHeader(Memory memory, int gpioMode);
306 
311  std::tuple<bool, std::string> flashUsbRecoveryBootHeader(Memory memory);
312 
322  std::tuple<bool, std::string> flashBootHeader(Memory memory, int32_t frequency = -1, int64_t location = -1, int32_t dummyCycles = -1, int64_t offset = -1);
323 
334  std::tuple<bool, std::string> flashFastBootHeader(
335  Memory memory, int32_t frequency = -1, int64_t location = -1, int32_t dummyCycles = -1, int64_t offset = -1);
336 
344  std::tuple<bool, std::string> flashCustom(Memory memory, size_t offset, const std::vector<uint8_t>& data, std::function<void(float)> progressCb = nullptr);
345  std::tuple<bool, std::string> flashCustom(Memory memory, size_t offset, const uint8_t* data, size_t size, std::function<void(float)> progressCb = nullptr);
346  std::tuple<bool, std::string> flashCustom(Memory memory, size_t offset, std::string filename, std::function<void(float)> progressCb = nullptr);
347 
356  std::tuple<bool, std::string> readCustom(
357  Memory memory, size_t offset, size_t size, std::vector<uint8_t>& data, std::function<void(float)> progressCb = nullptr);
358  std::tuple<bool, std::string> readCustom(Memory memory, size_t offset, size_t size, uint8_t* data, std::function<void(float)> progressCb = nullptr);
359  std::tuple<bool, std::string> readCustom(Memory memory, size_t offset, size_t size, std::string filename, std::function<void(float)> progressCb = nullptr);
360  std::tuple<bool, std::string, std::vector<uint8_t>> readCustom(Memory memory, size_t offset, size_t size, std::function<void(float)> progressCb = nullptr);
361 
368  nlohmann::json readConfigData(Memory memory = Memory::AUTO, Type type = Type::AUTO);
369 
376  std::tuple<bool, std::string> flashConfigData(nlohmann::json configData, Memory memory = Memory::AUTO, Type type = Type::AUTO);
377 
384  std::tuple<bool, std::string> flashConfigFile(const dai::Path& configPath, Memory memory = Memory::AUTO, Type type = Type::AUTO);
385 
391  std::tuple<bool, std::string> flashConfigClear(Memory memory = Memory::AUTO, Type type = Type::AUTO);
392 
399  Config readConfig(Memory memory = Memory::AUTO, Type type = Type::AUTO);
400 
407  std::tuple<bool, std::string> flashConfig(const Config& config, Memory memory = Memory::AUTO, Type type = Type::AUTO);
408 
413  MemoryInfo getMemoryInfo(Memory memory);
414 
420 
424  bool isUserBootloader();
425 
431  void bootMemory(const std::vector<uint8_t>& fw);
432 
437  void bootUsbRomBootloader();
438 
442  Version getVersion() const;
443 
449 
454  bool isEmbeddedVersion() const;
455 
459  Type getType() const;
460 
464  bool isAllowedFlashingBootloader() const;
465 
471  void close();
472 
480  bool isClosed() const;
481 
482  private:
483  // private static
484 
485  // private methods
486  void init(bool embeddedMvcmd, const dai::Path& pathToMvcmd, tl::optional<bootloader::Type> type, bool allowBlFlash);
487  template <typename T>
488  bool sendRequest(const T& request);
489  template <typename T>
490  void sendRequestThrow(const T& request);
491  bool receiveResponseData(std::vector<uint8_t>& data);
492  template <typename T>
493  bool parseResponse(const std::vector<uint8_t>& data, T& response);
494  template <typename T>
495  bool receiveResponse(T& response);
496  template <typename T>
497  void receiveResponseThrow(T& response);
499  std::tuple<bool, std::string> flashCustom(
500  Memory memory, size_t offset, const uint8_t* data, size_t size, std::string filename, std::function<void(float)> progressCb);
501  std::tuple<bool, std::string> readCustom(
502  Memory memory, size_t offset, size_t size, uint8_t* data, std::string filename, std::function<void(float)> progressCb);
503 
504  void createWatchdog();
505  void destroyWatchdog();
506 
507  // private variables
508  std::shared_ptr<XLinkConnection> connection;
510 
511  bool isEmbedded = false;
514 
515  // closed
516  std::atomic<bool> closed{false};
517 
518  // Watchdog thread
519  std::thread watchdogThread;
520  std::atomic<bool> watchdogRunning{true};
521 
522  // Monitor thread
523  std::thread monitorThread;
525  std::chrono::steady_clock::time_point lastWatchdogPingTime;
526 
527  // bootloader stream
528  std::unique_ptr<XLinkStream> stream;
529 
530  // Allow flashing bootloader flag
532 
533  // Current connected bootloader version
534  Version version{0, 0, 2};
535 };
536 
537 } // namespace dai
538 
539 // Global namespace
540 inline std::ostream& operator<<(std::ostream& out, const dai::DeviceBootloader::Type& type) {
541  switch(type) {
543  out << "AUTO";
544  break;
545  case dai::DeviceBootloader::Type::USB:
546  out << "USB";
547  break;
548  case dai::DeviceBootloader::Type::NETWORK:
549  out << "NETWORK";
550  break;
551  }
552  return out;
553 }
554 
555 inline std::ostream& operator<<(std::ostream& out, const dai::DeviceBootloader::Memory& memory) {
556  switch(memory) {
558  out << "AUTO";
559  break;
560  case dai::DeviceBootloader::Memory::FLASH:
561  out << "FLASH";
562  break;
563  case dai::DeviceBootloader::Memory::EMMC:
564  out << "EMMC";
565  break;
566  }
567  return out;
568 }
569 
570 inline std::ostream& operator<<(std::ostream& out, const dai::DeviceBootloader::Section& type) {
571  switch(type) {
573  out << "AUTO";
574  break;
575  case dai::DeviceBootloader::Section::HEADER:
576  out << "HEADER";
577  break;
579  out << "BOOTLOADER";
580  break;
581  case dai::DeviceBootloader::Section::USER_BOOTLOADER:
582  out << "USER_BOOTLOADER";
583  break;
584  case dai::DeviceBootloader::Section::BOOTLOADER_CONFIG:
585  out << "BOOTLOADER_CONFIG";
586  break;
587  case dai::DeviceBootloader::Section::APPLICATION:
588  out << "APPLICATION";
589  break;
590  }
591  return out;
592 }
593 
594 inline std::ostream& operator<<(std::ostream& out, const dai::DeviceBootloader::Version& v) {
595  return out << v.toString();
596 }
dai::DeviceBootloader::ApplicationInfo::firmwareVersion
std::string firmwareVersion
Definition: DeviceBootloader.hpp:95
dai::bootloader::NetworkConfig
Definition: Config.hpp:27
DataQueue.hpp
dai::DeviceBootloader::readConfig
Config readConfig(Memory memory=Memory::AUTO, Type type=Type::AUTO)
Definition: DeviceBootloader.cpp:1354
dai::Pipeline
Represents the pipeline, set of nodes and connections between them.
Definition: Pipeline.hpp:100
dai::DeviceBootloader::MemoryInfo
Definition: DeviceBootloader.hpp:99
Pipeline.hpp
dai::DeviceBootloader::Config::getDnsAltIPv4
std::string getDnsAltIPv4()
Get alternate IPv4 DNS server.
Definition: DeviceBootloader.cpp:1529
dai::DeviceBootloader::close
void close()
Definition: DeviceBootloader.cpp:558
dai::UsbSpeed
UsbSpeed
Definition: shared/depthai-shared/include/depthai-shared/common/UsbSpeed.hpp:12
dai::bootloader::Section::BOOTLOADER
@ BOOTLOADER
dai::bootloader::Memory::AUTO
@ AUTO
dai::DeviceBootloader::Config::toJson
nlohmann::json toJson() const
To JSON.
Definition: DeviceBootloader.cpp:1586
dai::DeviceBootloader::bootUsbRomBootloader
void bootUsbRomBootloader()
Definition: DeviceBootloader.cpp:1384
CallbackHandler.hpp
dai::DeviceBootloader
Definition: DeviceBootloader.hpp:29
dai::DeviceInfo
Definition: XLinkConnection.hpp:27
dai::DeviceBootloader::Config::fromJson
static Config fromJson(nlohmann::json)
from JSON
Definition: DeviceBootloader.cpp:1594
dai::DeviceBootloader::flashGpioModeBootHeader
std::tuple< bool, std::string > flashGpioModeBootHeader(Memory memory, int gpioMode)
Definition: DeviceBootloader.cpp:1043
dai::DeviceBootloader::lastWatchdogPingTime
std::chrono::steady_clock::time_point lastWatchdogPingTime
Definition: DeviceBootloader.hpp:525
dai::DeviceBootloader::requestVersion
Version requestVersion()
Definition: DeviceBootloader.cpp:607
dai::DeviceBootloader::flashUsbRecoveryBootHeader
std::tuple< bool, std::string > flashUsbRecoveryBootHeader(Memory memory)
Definition: DeviceBootloader.cpp:1058
UsbSpeed.hpp
dai::DeviceBootloader::bootloaderType
Type bootloaderType
Definition: DeviceBootloader.hpp:512
dai::DeviceBootloader::createWatchdog
void createWatchdog()
Definition: DeviceBootloader.cpp:276
Section.hpp
dai::DeviceBootloader::flashUserBootloader
std::tuple< bool, std::string > flashUserBootloader(std::function< void(float)> progressCallback, const dai::Path &path={})
Definition: DeviceBootloader.cpp:940
dai::DeviceBootloader::saveDepthaiApplicationPackage
static void saveDepthaiApplicationPackage(const dai::Path &path, const Pipeline &pipeline, const dai::Path &pathToCmd={}, bool compress=false, std::string applicationName="", bool checkChecksum=false)
Definition: DeviceBootloader.cpp:241
Type.hpp
dai::DeviceBootloader::Config::setDnsIPv4
void setDnsIPv4(std::string dns, std::string dnsAlt="")
Set IPv4 DNS options.
Definition: DeviceBootloader.cpp:1520
Version
dai::DeviceBootloader::Version Version
Definition: bootloader_version_test.cpp:9
dai::DeviceBootloader::Config::getIPv4Gateway
std::string getIPv4Gateway()
Get IPv4 gateway.
Definition: DeviceBootloader.cpp:1516
dai::DeviceBootloader::Config::getNetworkTimeout
std::chrono::milliseconds getNetworkTimeout()
Get NETWORK timeout.
Definition: DeviceBootloader.cpp:1545
dai::DeviceBootloader::isEmbedded
bool isEmbedded
Definition: DeviceBootloader.hpp:511
dai::DeviceBootloader::deviceInfo
DeviceInfo deviceInfo
Definition: DeviceBootloader.hpp:509
dai::DeviceBootloader::Config::getIPv4
std::string getIPv4()
Get IPv4.
Definition: DeviceBootloader.cpp:1510
dai::DeviceBootloader::flashConfigData
std::tuple< bool, std::string > flashConfigData(nlohmann::json configData, Memory memory=Memory::AUTO, Type type=Type::AUTO)
Definition: DeviceBootloader.cpp:1315
dai::DeviceBootloader::createDepthaiApplicationPackage
static std::vector< uint8_t > createDepthaiApplicationPackage(const Pipeline &pipeline, const dai::Path &pathToCmd={}, bool compress=false, std::string applicationName="", bool checkChecksum=false)
Definition: DeviceBootloader.cpp:72
dai::DeviceBootloader::ApplicationInfo::memory
Memory memory
Definition: DeviceBootloader.hpp:93
dai::Version
Version structure.
Definition: Version.hpp:8
dai::DeviceBootloader::watchdogThread
std::thread watchdogThread
Definition: DeviceBootloader.hpp:519
dai::DeviceBootloader::getType
Type getType() const
Definition: DeviceBootloader.cpp:638
dai::copyable_unique_ptr::operator<<
std::basic_ostream< charT, traits > & operator<<(std::basic_ostream< charT, traits > &os, const copyable_unique_ptr< T > &cu_ptr)
Definition: copyable_unique_ptr.hpp:374
dai::DeviceBootloader::Config
Definition: DeviceBootloader.hpp:39
dai::DeviceBootloader::~DeviceBootloader
~DeviceBootloader()
Destroy the Device Bootloader object.
Definition: DeviceBootloader.cpp:591
dai::bootloader::Memory
Memory
Definition: Memory.hpp:11
dai::DeviceBootloader::Config::setDynamicIPv4
void setDynamicIPv4(std::string ip, std::string mask, std::string gateway)
Setting a dynamic IPv4 will set that IP as well as start DHCP client.
Definition: DeviceBootloader.cpp:1499
dai::bootloader::Type
Type
Definition: Type.hpp:11
dai::DeviceBootloader::ApplicationInfo::applicationName
std::string applicationName
Definition: DeviceBootloader.hpp:96
dai::DeviceBootloader::allowFlashingBootloader
bool allowFlashingBootloader
Definition: DeviceBootloader.hpp:531
DAI_SPAN_NAMESPACE_NAME::detail::data
constexpr auto data(C &c) -> decltype(c.data())
Definition: span.hpp:177
dai::DeviceBootloader::flashConfigClear
std::tuple< bool, std::string > flashConfigClear(Memory memory=Memory::AUTO, Type type=Type::AUTO)
Definition: DeviceBootloader.cpp:1290
dai::DeviceBootloader::receiveResponseThrow
void receiveResponseThrow(T &response)
Definition: DeviceBootloader.cpp:1477
dai::DeviceBootloader::init
void init(bool embeddedMvcmd, const dai::Path &pathToMvcmd, tl::optional< bootloader::Type > type, bool allowBlFlash)
Definition: DeviceBootloader.cpp:357
dai::DeviceBootloader::isUserBootloaderSupported
bool isUserBootloaderSupported()
Definition: DeviceBootloader.cpp:711
dai::DeviceBootloader::monitorThread
std::thread monitorThread
Definition: DeviceBootloader.hpp:523
dai::DeviceBootloader::Config::setMacAddress
void setMacAddress(std::string mac)
Set MAC address if not flashed on controller.
Definition: DeviceBootloader.cpp:1557
dai::DeviceBootloader::flashBootHeader
std::tuple< bool, std::string > flashBootHeader(Memory memory, int32_t frequency=-1, int64_t location=-1, int32_t dummyCycles=-1, int64_t offset=-1)
Definition: DeviceBootloader.cpp:1072
dai::DeviceBootloader::receiveResponse
bool receiveResponse(T &response)
Definition: DeviceBootloader.cpp:1464
dai::DeviceBootloader::lastWatchdogPingTimeMtx
std::mutex lastWatchdogPingTimeMtx
Definition: DeviceBootloader.hpp:524
dai::DeviceBootloader::version
Version version
Definition: DeviceBootloader.hpp:534
Config.hpp
dai::DeviceBootloader::watchdogRunning
std::atomic< bool > watchdogRunning
Definition: DeviceBootloader.hpp:520
dai::DeviceBootloader::getVersion
Version getVersion() const
Definition: DeviceBootloader.cpp:599
dai::DeviceBootloader::flashConfigFile
std::tuple< bool, std::string > flashConfigFile(const dai::Path &configPath, Memory memory=Memory::AUTO, Type type=Type::AUTO)
Definition: DeviceBootloader.cpp:1345
DAI_SPAN_NAMESPACE_NAME::detail::size
constexpr auto size(const C &c) -> decltype(c.size())
Definition: span.hpp:167
dai::DeviceBootloader::MemoryInfo::size
std::int64_t size
Definition: DeviceBootloader.hpp:101
dai::DeviceBootloader::isUserBootloader
bool isUserBootloader()
Definition: DeviceBootloader.cpp:729
dai::bootloader::Type::AUTO
@ AUTO
dai::DeviceBootloader::destroyWatchdog
void destroyWatchdog()
Definition: DeviceBootloader.cpp:349
dai::DeviceBootloader::Config::getUsbTimeout
std::chrono::milliseconds getUsbTimeout()
Get USB timeout.
Definition: DeviceBootloader.cpp:1537
dai::bootloader::Section::AUTO
@ AUTO
XLinkConnection.hpp
dai::DeviceBootloader::DEFAULT_TYPE
static constexpr const Type DEFAULT_TYPE
Default Bootloader type.
Definition: DeviceBootloader.hpp:108
dai::DeviceBootloader::connection
std::shared_ptr< XLinkConnection > connection
Definition: DeviceBootloader.hpp:508
dai::DeviceBootloader::Config::setStaticIPv4
void setStaticIPv4(std::string ip, std::string mask, std::string gateway)
Setting a static IPv4 won't start DHCP client.
Definition: DeviceBootloader.cpp:1493
XLinkStream.hpp
dai::DeviceBootloader::Config::getUsbMaxSpeed
UsbSpeed getUsbMaxSpeed()
Get maxUsbSpeed.
Definition: DeviceBootloader.cpp:1553
dai::DeviceBootloader::ApplicationInfo::hasApplication
bool hasApplication
Definition: DeviceBootloader.hpp:94
dai::DeviceBootloader::sendRequest
bool sendRequest(const T &request)
Definition: DeviceBootloader.cpp:1407
dai::DeviceBootloader::isEmbeddedVersion
bool isEmbeddedVersion() const
Definition: DeviceBootloader.cpp:1398
dai::DeviceBootloader::readConfigData
nlohmann::json readConfigData(Memory memory=Memory::AUTO, Type type=Type::AUTO)
Definition: DeviceBootloader.cpp:1260
nanorpc::core::detail::pack::meta::type
type
Definition: pack_meta.h:26
dai::DeviceBootloader::flashBootloader
std::tuple< bool, std::string > flashBootloader(std::function< void(float)> progressCallback, const dai::Path &path={})
Definition: DeviceBootloader.cpp:854
dai::DeviceBootloader::Memory
dai::bootloader::Memory Memory
Definition: DeviceBootloader.hpp:33
dai::DeviceBootloader::receiveResponseData
bool receiveResponseData(std::vector< uint8_t > &data)
Definition: DeviceBootloader.cpp:1442
dai::DeviceBootloader::Config::data
nlohmann::json data
Definition: DeviceBootloader.hpp:86
dai::DeviceBootloader::getMemoryInfo
MemoryInfo getMemoryInfo(Memory memory)
Definition: DeviceBootloader.cpp:688
dai::bootloader::Section
Section
Definition: Section.hpp:11
dai::DeviceBootloader::Config::setUsbMaxSpeed
void setUsbMaxSpeed(UsbSpeed speed)
Set maxUsbSpeed.
Definition: DeviceBootloader.cpp:1549
dai::DeviceBootloader::Config::setNetworkTimeout
void setNetworkTimeout(std::chrono::milliseconds ms)
Set NETWOR timeout.
Definition: DeviceBootloader.cpp:1541
dai::DeviceBootloader::getEmbeddedBootloaderVersion
static Version getEmbeddedBootloaderVersion()
Definition: DeviceBootloader.cpp:595
dai::DeviceBootloader::Config::isStaticIPV4
bool isStaticIPV4()
Get if static IPv4 configuration is set.
Definition: DeviceBootloader.cpp:1506
dai::DeviceBootloader::isAllowedFlashingBootloader
bool isAllowedFlashingBootloader() const
Definition: DeviceBootloader.cpp:642
dai::DeviceBootloader::getFirstAvailableDevice
static std::tuple< bool, DeviceInfo > getFirstAvailableDevice()
Definition: DeviceBootloader.cpp:48
tl::optional
Definition: 3rdparty/tl/optional.hpp:120
Memory.hpp
dai::DeviceBootloader::stream
std::unique_ptr< XLinkStream > stream
Definition: DeviceBootloader.hpp:528
dai::DeviceBootloader::Config::getDnsIPv4
std::string getDnsIPv4()
Get primary IPv4 DNS server.
Definition: DeviceBootloader.cpp:1525
dai::DeviceBootloader::MemoryInfo::info
std::string info
Definition: DeviceBootloader.hpp:102
dai::DeviceBootloader::Config::getMacAddress
std::string getMacAddress()
Get MAC address if not flashed on controller.
Definition: DeviceBootloader.cpp:1570
dai::DeviceBootloader::MemoryInfo::available
bool available
Definition: DeviceBootloader.hpp:100
dai::DeviceBootloader::getFlashedVersion
tl::optional< Version > getFlashedVersion() const
Definition: DeviceBootloader.cpp:603
dai::DeviceBootloader::flashConfig
std::tuple< bool, std::string > flashConfig(const Config &config, Memory memory=Memory::AUTO, Type type=Type::AUTO)
Definition: DeviceBootloader.cpp:1359
dai::DeviceBootloader::closed
std::atomic< bool > closed
Definition: DeviceBootloader.hpp:516
dai::DeviceBootloader::getAllAvailableDevices
static std::vector< DeviceInfo > getAllAvailableDevices()
Definition: DeviceBootloader.cpp:63
dai::bootloader::Config
Definition: Config.hpp:73
dai::DeviceBootloader::readApplicationInfo
ApplicationInfo readApplicationInfo(Memory memory)
Definition: DeviceBootloader.cpp:655
dai::bootloader::UsbConfig
Definition: Config.hpp:55
dai::DeviceBootloader::parseResponse
bool parseResponse(const std::vector< uint8_t > &data, T &response)
Definition: DeviceBootloader.cpp:1450
dai::Version::toString
std::string toString() const
Convert Version to string.
Definition: Version.cpp:53
dai::DeviceBootloader::readCustom
std::tuple< bool, std::string > readCustom(Memory memory, size_t offset, size_t size, std::vector< uint8_t > &data, std::function< void(float)> progressCb=nullptr)
Definition: DeviceBootloader.cpp:1190
dai::DeviceBootloader::isClosed
bool isClosed() const
Definition: DeviceBootloader.cpp:587
dai::Path
Represents paths on a filesystem; accepts utf-8, Windows utf-16 wchar_t, or std::filesystem::path.
Definition: Path.hpp:27
dai::DeviceBootloader::sendRequestThrow
void sendRequestThrow(const T &request)
Definition: DeviceBootloader.cpp:1426
dai::DeviceBootloader::flashClear
std::tuple< bool, std::string > flashClear(Memory memory=Memory::AUTO)
Definition: DeviceBootloader.cpp:846
dai::DeviceBootloader::flashCustom
std::tuple< bool, std::string > flashCustom(Memory memory, size_t offset, const std::vector< uint8_t > &data, std::function< void(float)> progressCb=nullptr)
Definition: DeviceBootloader.cpp:1112
dai::DeviceBootloader::ApplicationInfo
Definition: DeviceBootloader.hpp:92
dai::DeviceBootloader::flashDepthaiApplicationPackage
std::tuple< bool, std::string > flashDepthaiApplicationPackage(std::function< void(float)> progressCallback, std::vector< uint8_t > package, Memory memory=Memory::AUTO)
Definition: DeviceBootloader.cpp:746
dai::DeviceBootloader::Config::getIPv4Mask
std::string getIPv4Mask()
Get IPv4 mask.
Definition: DeviceBootloader.cpp:1513
dai
Definition: CameraExposureOffset.hpp:6
dai::DeviceBootloader::flash
std::tuple< bool, std::string > flash(std::function< void(float)> progressCallback, const Pipeline &pipeline, bool compress=false, std::string applicationName="", Memory memory=Memory::AUTO, bool checkChecksum=false)
Definition: DeviceBootloader.cpp:646
dai::DeviceBootloader::flashedVersion
tl::optional< Version > flashedVersion
Definition: DeviceBootloader.hpp:513
dai::DeviceBootloader::bootMemory
void bootMemory(const std::vector< uint8_t > &fw)
Definition: DeviceBootloader.cpp:1364
dai::DeviceBootloader::flashFastBootHeader
std::tuple< bool, std::string > flashFastBootHeader(Memory memory, int32_t frequency=-1, int64_t location=-1, int32_t dummyCycles=-1, int64_t offset=-1)
Definition: DeviceBootloader.cpp:1092
dai::DeviceBootloader::DeviceBootloader
DeviceBootloader()=delete
dai::DeviceBootloader::getEmbeddedBootloaderBinary
static std::vector< std::uint8_t > getEmbeddedBootloaderBinary(Type type=DEFAULT_TYPE)
Definition: DeviceBootloader.cpp:1402
dai::DeviceBootloader::Type
dai::bootloader::Type Type
Definition: DeviceBootloader.hpp:32
dai::DeviceBootloader::Config::setUsbTimeout
void setUsbTimeout(std::chrono::milliseconds ms)
Set USB timeout.
Definition: DeviceBootloader.cpp:1533


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