Config.hpp
Go to the documentation of this file.
1 #pragma once
2 
3 #include "Memory.hpp"
4 
5 // std
6 #include <array>
7 #include <chrono>
8 #include <cstdint>
9 
10 // libraries
11 #include "NlohmannJsonCompat.hpp"
12 
13 #define DEPTHAI_BOOTLOADER_NLOHMANN_JSON_OPTIONAL_TO(v1) nlohmann::to_json(nlohmann_json_j[#v1], nlohmann_json_t.v1);
14 #define DEPTHAI_BOOTLOADER_NLOHMANN_JSON_OPTIONAL_FROM(v1) if(nlohmann_json_j.contains(#v1)) nlohmann_json_j[#v1].get_to(nlohmann_json_t.v1);
15 
16 #define DEPTHAI_BOOTLOADER_NLOHMANN_DEFINE_TYPE_OPTIONAL_NON_INTRUSIVE(Type, ...) \
17  inline void to_json(nlohmann::json& nlohmann_json_j, const Type& nlohmann_json_t) { DEPTHAI_BOOTLOADER_NLOHMANN_JSON_EXPAND(DEPTHAI_BOOTLOADER_NLOHMANN_JSON_PASTE(DEPTHAI_BOOTLOADER_NLOHMANN_JSON_OPTIONAL_TO, __VA_ARGS__)) } \
18  inline void from_json(const nlohmann::json& nlohmann_json_j, Type& nlohmann_json_t) { DEPTHAI_BOOTLOADER_NLOHMANN_JSON_EXPAND(DEPTHAI_BOOTLOADER_NLOHMANN_JSON_PASTE(DEPTHAI_BOOTLOADER_NLOHMANN_JSON_OPTIONAL_FROM, __VA_ARGS__)) }
19 
20 namespace dai
21 {
22 namespace bootloader
23 {
24 
25 
26 // Config
27 struct NetworkConfig {
33  int timeoutMs = 30000;
34  // Network configuration options
35  // IPv4
36  std::uint32_t ipv4 = 0;
37  std::uint32_t ipv4Mask = 0;
38  std::uint32_t ipv4Gateway = 0;
39  std::uint32_t ipv4Dns = 0;
40  std::uint32_t ipv4DnsAlt = 0;
41  bool staticIpv4 = false;
42  // TODO(themarpe) - IPv6
43  std::array<uint32_t, 4> ipv6 = {};
44  std::uint32_t ipv6Prefix = 0;
45  std::array<uint32_t, 4> ipv6Gateway = {};
46  std::array<uint32_t, 4> ipv6Dns = {};
47  std::array<uint32_t, 4> ipv6DnsAlt = {};
48  bool staticIpv6 = false;
49  // MAC address - if not flashed, overwrites autogenerated one
50  std::array<uint8_t, 6> mac = {};
51 };
52 DEPTHAI_BOOTLOADER_NLOHMANN_DEFINE_TYPE_OPTIONAL_NON_INTRUSIVE(NetworkConfig, timeoutMs, ipv4, ipv4Mask, ipv4Gateway, ipv4Dns, ipv4DnsAlt, staticIpv4, ipv6, ipv6Prefix, ipv6Gateway, ipv6Dns, ipv6DnsAlt, staticIpv6, mac);
53 
54 // Config
55 struct UsbConfig {
61  int timeoutMs = 3000;
62 
66  int maxUsbSpeed = 3;
67 
69  uint16_t vid = 0x03E7, pid = 0xF63C;
70 };
72 
73 struct Config {
77  uint32_t userBlSize = 0;
78  uint32_t userBlChecksum = 0;
79 };
80 DEPTHAI_BOOTLOADER_NLOHMANN_DEFINE_TYPE_OPTIONAL_NON_INTRUSIVE(Config, appMem, usb, network, userBlSize, userBlChecksum);
81 
82 } // namespace bootloader
83 } // namespace dai
84 
dai::bootloader::UsbConfig::pid
uint16_t pid
Definition: Config.hpp:69
dai::bootloader::NetworkConfig
Definition: Config.hpp:27
dai::bootloader::Memory::AUTO
@ AUTO
dai::bootloader::NetworkConfig::mac
std::array< uint8_t, 6 > mac
Definition: Config.hpp:50
dai::bootloader::NetworkConfig::ipv6
std::array< uint32_t, 4 > ipv6
Definition: Config.hpp:43
dai::bootloader::NetworkConfig::staticIpv4
bool staticIpv4
Definition: Config.hpp:41
dai::bootloader::NetworkConfig::ipv4Mask
std::uint32_t ipv4Mask
Definition: Config.hpp:37
dai::bootloader::UsbConfig::vid
uint16_t vid
VID/PID pair used by bootloader.
Definition: Config.hpp:69
dai::bootloader::NetworkConfig::ipv6DnsAlt
std::array< uint32_t, 4 > ipv6DnsAlt
Definition: Config.hpp:47
dai::bootloader::NetworkConfig::timeoutMs
int timeoutMs
Definition: Config.hpp:33
dai::bootloader::Memory
Memory
Definition: Memory.hpp:11
dai::bootloader::UsbConfig::timeoutMs
int timeoutMs
Definition: Config.hpp:61
dai::bootloader::Config::appMem
Memory appMem
Definition: Config.hpp:74
dai::bootloader::DEPTHAI_BOOTLOADER_NLOHMANN_DEFINE_TYPE_OPTIONAL_NON_INTRUSIVE
DEPTHAI_BOOTLOADER_NLOHMANN_DEFINE_TYPE_OPTIONAL_NON_INTRUSIVE(NetworkConfig, timeoutMs, ipv4, ipv4Mask, ipv4Gateway, ipv4Dns, ipv4DnsAlt, staticIpv4, ipv6, ipv6Prefix, ipv6Gateway, ipv6Dns, ipv6DnsAlt, staticIpv6, mac)
dai::bootloader::NetworkConfig::ipv4
std::uint32_t ipv4
Definition: Config.hpp:36
dai::bootloader::UsbConfig::maxUsbSpeed
int maxUsbSpeed
Definition: Config.hpp:66
dai::bootloader::NetworkConfig::ipv4DnsAlt
std::uint32_t ipv4DnsAlt
Definition: Config.hpp:40
NlohmannJsonCompat.hpp
dai::bootloader::NetworkConfig::ipv6Dns
std::array< uint32_t, 4 > ipv6Dns
Definition: Config.hpp:46
Memory.hpp
dai::bootloader::NetworkConfig::ipv4Dns
std::uint32_t ipv4Dns
Definition: Config.hpp:39
dai::bootloader::Config::userBlChecksum
uint32_t userBlChecksum
Definition: Config.hpp:78
dai::bootloader::NetworkConfig::ipv6Gateway
std::array< uint32_t, 4 > ipv6Gateway
Definition: Config.hpp:45
dai::bootloader::NetworkConfig::ipv4Gateway
std::uint32_t ipv4Gateway
Definition: Config.hpp:38
dai::bootloader::Config
Definition: Config.hpp:73
dai::bootloader::UsbConfig
Definition: Config.hpp:55
dai::bootloader::Config::userBlSize
uint32_t userBlSize
Definition: Config.hpp:77
dai::bootloader::NetworkConfig::staticIpv6
bool staticIpv6
Definition: Config.hpp:48
dai::bootloader::Config::network
NetworkConfig network
Definition: Config.hpp:76
dai::bootloader::Config::usb
UsbConfig usb
Definition: Config.hpp:75
dai
Definition: CameraExposureOffset.hpp:6
dai::bootloader::NetworkConfig::ipv6Prefix
std::uint32_t ipv6Prefix
Definition: Config.hpp:44


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