BoardConfig.hpp
Go to the documentation of this file.
1 #pragma once
2 
3 // std
4 #include <cstdint>
5 #include <unordered_map>
6 
7 // project
17 
18 namespace dai {
19 
20 constexpr static uint32_t BOARD_CONFIG_MAGIC1 = 0x78010000U;
21 constexpr static uint32_t BOARD_CONFIG_MAGIC2 = 0x21ea17e6U;
22 
23 struct BoardConfig {
25  struct USB {
26  uint16_t vid = 0x03e7, pid = 0xf63b;
27  uint16_t flashBootedVid = 0x03e7, flashBootedPid = 0xf63d;
29  std::string productName, manufacturer;
30  };
31 
33 
35  struct Network {
39  uint16_t mtu = 0;
42  bool xlinkTcpNoDelay = true;
43  };
44 
46 
49  std::vector<std::string> sysctl;
50 
54 
56  struct GPIO {
58  Mode mode = Mode::DIRECT;
59  enum Direction : std::int8_t { INPUT = 0, OUTPUT = 1 };
60  Direction direction = Direction::INPUT;
61  enum Level : std::int8_t { LOW = 0, HIGH = 1 };
62  Level level = Level::LOW;
63  enum Pull : std::int8_t { NO_PULL = 0, PULL_UP = 1, PULL_DOWN = 2, BUS_KEEPER = 3 };
64  Pull pull = Pull::NO_PULL;
66  enum Drive : std::int8_t { MA_2 = 2, MA_4 = 4, MA_8 = 8, MA_12 = 12 };
68  bool schmitt = false, slewFast = false;
69  GPIO() = default;
75  };
76  std::unordered_map<std::int8_t, GPIO> gpio;
77 
78  // Uart config
79 
81  struct UART {
82  // TBD
83  // std::int8_t tx, rx;
84  std::int8_t tmp;
85  };
87  std::unordered_map<std::int8_t, UART> uart;
88 
91 
94 
97 
100 
103 
106 
109 
112 
113  bool nonExclusiveMode = false;
114 
115  // TODO(themarpe) - add later when applicable
116  // // Socket description
117  // struct Socket {
118  // int i2cBus;
119  // int mipiStart, mipiEnd; // inclusive
120  // int gpioPwr, gpioRst;
121  // float voltageCore, voltageAnalog, voltageInterface;
122  // // TODO(themarpe) - tbd if better placed here
123  // // tl::optional<CameraBoardSocket> syncTo;
124  // };
125  // std::unordered_map<CameraBoardSocket, Socket> socket;
126 
128  struct Camera {
129  std::string name;
130  // TODO(themarpe) - add later when applicable
131  // std::vector<std::string> sensorName;
133  // std::vector<vector> vcm;
134  // tl::optional<CameraBoardSocket> syncTo;
136  };
137  std::unordered_map<CameraBoardSocket, Camera> camera;
138 
139  struct IMU {
140  IMU() : bus(0), interrupt(53), wake(34), csGpio(8), boot(46), reset(45) {}
142  };
144 
146  struct UVC {
147  std::string cameraName;
148  uint16_t width, height;
150  bool enable;
151  UVC(uint16_t width, uint16_t height) : width(width), height(height), frameType(RawImgFrame::Type::NV12), enable(true) {}
152  UVC() : UVC(1920, 1080) {}
153  };
155 };
156 
157 DEPTHAI_SERIALIZE_EXT(BoardConfig::USB, vid, pid, flashBootedVid, flashBootedPid, maxSpeed, productName, manufacturer);
158 DEPTHAI_SERIALIZE_EXT(BoardConfig::Network, mtu, xlinkTcpNoDelay);
159 DEPTHAI_SERIALIZE_EXT(BoardConfig::GPIO, mode, direction, level, pull, drive, schmitt, slewFast);
161 DEPTHAI_SERIALIZE_EXT(BoardConfig::Camera, name, sensorType, orientation);
162 DEPTHAI_SERIALIZE_EXT(BoardConfig::IMU, bus, interrupt, wake, csGpio, boot, reset);
163 DEPTHAI_SERIALIZE_EXT(BoardConfig::UVC, cameraName, width, height, frameType, enable);
165  usb,
166  network,
167  sysctl,
168  watchdogTimeoutMs,
169  watchdogInitialDelayMs,
170  gpio,
171  uart,
172  pcieInternalClock,
173  usb3PhyInternalClock,
174  emmc,
175  logPath,
176  logSizeMax,
177  logVerbosity,
178  logDevicePrints,
179  nonExclusiveMode,
180  camera,
181  imu,
182  uvc);
183 
184 } // namespace dai
dai::BoardConfig::GPIO::GPIO
GPIO(Direction direction, Level level)
Definition: BoardConfig.hpp:71
dai::BoardConfig::uart
std::unordered_map< std::int8_t, UART > uart
UART instance map.
Definition: BoardConfig.hpp:87
dai::BoardConfig::IMU::csGpio
int8_t csGpio
Definition: BoardConfig.hpp:141
dai::BoardConfig::GPIO::BUS_KEEPER
@ BUS_KEEPER
Definition: BoardConfig.hpp:63
dai::BoardConfig::USB::vid
uint16_t vid
Definition: BoardConfig.hpp:26
dai::UsbSpeed
UsbSpeed
Definition: shared/depthai-shared/include/depthai-shared/common/UsbSpeed.hpp:12
dai::RawImgFrame
RawImgFrame structure.
Definition: RawImgFrame.hpp:12
dai::BoardConfig::GPIO::MA_4
@ MA_4
Definition: BoardConfig.hpp:66
dai::BoardConfig::USB::manufacturer
std::string manufacturer
Definition: BoardConfig.hpp:29
dai::BoardConfig::Camera::name
std::string name
Definition: BoardConfig.hpp:129
dai::BoardConfig::IMU::interrupt
int8_t interrupt
Definition: BoardConfig.hpp:141
dai::BoardConfig::UVC::cameraName
std::string cameraName
Definition: BoardConfig.hpp:147
optional.hpp
dai::DEPTHAI_SERIALIZE_EXT
DEPTHAI_SERIALIZE_EXT(CameraSensorConfig, width, height, minFps, maxFps, fov, type)
dai::BoardConfig::UVC::height
uint16_t height
Definition: BoardConfig.hpp:148
dai::BoardConfig::UVC::enable
bool enable
Definition: BoardConfig.hpp:150
dai::BoardConfig::IMU::bus
int8_t bus
Definition: BoardConfig.hpp:141
dai::BoardConfig::GPIO::drive
Drive drive
Definition: BoardConfig.hpp:67
dai::BoardConfig::imu
tl::optional< IMU > imu
Definition: BoardConfig.hpp:143
dai::BoardConfig::camera
std::unordered_map< CameraBoardSocket, Camera > camera
Definition: BoardConfig.hpp:137
CameraBoardSocket.hpp
dai::RawImgFrame::Type
Type
Definition: RawImgFrame.hpp:13
dai::BoardConfig::network
Network network
Definition: BoardConfig.hpp:45
dai::BoardConfig::GPIO::PULL_DOWN
@ PULL_DOWN
Definition: BoardConfig.hpp:63
dai::BoardConfig::GPIO::direction
Direction direction
Definition: BoardConfig.hpp:60
dai::UsbSpeed::SUPER
@ SUPER
dai::BoardConfig::gpio
std::unordered_map< std::int8_t, GPIO > gpio
Definition: BoardConfig.hpp:76
dai::BoardConfig::GPIO::ALT_MODE_5
@ ALT_MODE_5
Definition: BoardConfig.hpp:57
dai::BoardConfig::GPIO::slewFast
bool slewFast
Definition: BoardConfig.hpp:68
dai::BoardConfig::GPIO::HIGH
@ HIGH
Definition: BoardConfig.hpp:61
dai::BoardConfig::logVerbosity
tl::optional< LogLevel > logVerbosity
log verbosity
Definition: BoardConfig.hpp:108
dai::BoardConfig::Camera::sensorType
tl::optional< CameraSensorType > sensorType
Definition: BoardConfig.hpp:132
dai::BoardConfig::logPath
tl::optional< std::string > logPath
log path
Definition: BoardConfig.hpp:102
dai::BoardConfig::GPIO::INPUT
@ INPUT
Definition: BoardConfig.hpp:59
dai::BoardConfig::GPIO::schmitt
bool schmitt
Definition: BoardConfig.hpp:68
dai::BoardConfig::UVC
UVC configuration for USB descriptor.
Definition: BoardConfig.hpp:146
dai::bootloader::Type
Type
Definition: Type.hpp:11
dai::BoardConfig::GPIO::ALT_MODE_6
@ ALT_MODE_6
Definition: BoardConfig.hpp:57
dai::BoardConfig::USB::productName
std::string productName
Definition: BoardConfig.hpp:29
dai::BoardConfig::GPIO::MA_12
@ MA_12
Definition: BoardConfig.hpp:66
dai::BoardConfig::nonExclusiveMode
bool nonExclusiveMode
Definition: BoardConfig.hpp:113
dai::BoardConfig::Camera::orientation
tl::optional< CameraImageOrientation > orientation
Definition: BoardConfig.hpp:135
dai::BOARD_CONFIG_MAGIC2
constexpr static uint32_t BOARD_CONFIG_MAGIC2
Definition: BoardConfig.hpp:21
dai::BoardConfig::IMU::wake
int8_t wake
Definition: BoardConfig.hpp:141
dai::BoardConfig::Network::xlinkTcpNoDelay
bool xlinkTcpNoDelay
Definition: BoardConfig.hpp:42
dai::BoardConfig::IMU
Definition: BoardConfig.hpp:139
dai::BoardConfig::GPIO::LOW
@ LOW
Definition: BoardConfig.hpp:61
RawImgFrame.hpp
dai::BoardConfig::UVC::frameType
RawImgFrame::Type frameType
Definition: BoardConfig.hpp:149
dai::BoardConfig::logSizeMax
tl::optional< size_t > logSizeMax
Max log size.
Definition: BoardConfig.hpp:105
dai::BOARD_CONFIG_MAGIC1
constexpr static uint32_t BOARD_CONFIG_MAGIC1
Definition: BoardConfig.hpp:20
dai::BoardConfig::GPIO::level
Level level
Definition: BoardConfig.hpp:62
dai::BoardConfig::GPIO::MA_2
@ MA_2
Definition: BoardConfig.hpp:66
UsbSpeed.hpp
dai::BoardConfig::pcieInternalClock
tl::optional< bool > pcieInternalClock
PCIe config.
Definition: BoardConfig.hpp:90
dai::BoardConfig::Network::mtu
uint16_t mtu
Definition: BoardConfig.hpp:39
dai::BoardConfig::GPIO::ALT_MODE_0
@ ALT_MODE_0
Definition: BoardConfig.hpp:57
dai::BoardConfig::Camera
Camera description.
Definition: BoardConfig.hpp:128
dai::BoardConfig::GPIO::pull
Pull pull
Definition: BoardConfig.hpp:64
dai::BoardConfig::uvc
tl::optional< UVC > uvc
Definition: BoardConfig.hpp:154
dai::BoardConfig::USB::maxSpeed
UsbSpeed maxSpeed
Definition: BoardConfig.hpp:28
dai::BoardConfig::GPIO::NO_PULL
@ NO_PULL
Definition: BoardConfig.hpp:63
dai::BoardConfig::GPIO::ALT_MODE_2
@ ALT_MODE_2
Definition: BoardConfig.hpp:57
dai::BoardConfig::Network
Network configuration.
Definition: BoardConfig.hpp:35
dai::BoardConfig::GPIO::GPIO
GPIO(Direction direction, Mode mode, Pull pull)
Definition: BoardConfig.hpp:74
dai::BoardConfig::USB::pid
uint16_t pid
Definition: BoardConfig.hpp:26
Serialization.hpp
CameraImageOrientation.hpp
dai::BoardConfig::GPIO::GPIO
GPIO(Direction direction, Mode mode)
Definition: BoardConfig.hpp:73
dai::BoardConfig::GPIO::Pull
Pull
Definition: BoardConfig.hpp:63
dai::BoardConfig::GPIO::PULL_UP
@ PULL_UP
Definition: BoardConfig.hpp:63
dai::BoardConfig::GPIO
GPIO config.
Definition: BoardConfig.hpp:56
dai::BoardConfig::USB::flashBootedPid
uint16_t flashBootedPid
Definition: BoardConfig.hpp:27
dai::BoardConfig::UART
UART instance config.
Definition: BoardConfig.hpp:81
dai::BoardConfig::GPIO::mode
Mode mode
Definition: BoardConfig.hpp:58
dai::BoardConfig::GPIO::Drive
Drive
Drive strength in mA (2, 4, 8 and 12mA)
Definition: BoardConfig.hpp:66
dai::BoardConfig::GPIO::GPIO
GPIO(Direction direction)
Definition: BoardConfig.hpp:70
dai::BoardConfig::GPIO::MA_8
@ MA_8
Definition: BoardConfig.hpp:66
dai::BoardConfig::UVC::UVC
UVC()
Definition: BoardConfig.hpp:152
dai::BoardConfig::IMU::reset
int8_t reset
Definition: BoardConfig.hpp:141
dai::BoardConfig::mipi4LaneRgb
tl::optional< bool > mipi4LaneRgb
MIPI 4Lane RGB config.
Definition: BoardConfig.hpp:96
dai::BoardConfig::sysctl
std::vector< std::string > sysctl
Definition: BoardConfig.hpp:49
tl::optional< uint32_t >
dai::BoardConfig
Definition: BoardConfig.hpp:23
dai::BoardConfig::USB::flashBootedVid
uint16_t flashBootedVid
Definition: BoardConfig.hpp:27
dai::BoardConfig::UART::tmp
std::int8_t tmp
Definition: BoardConfig.hpp:84
dai::BoardConfig::usb3PhyInternalClock
tl::optional< bool > usb3PhyInternalClock
USB3 phy config.
Definition: BoardConfig.hpp:93
dai::BoardConfig::GPIO::ALT_MODE_4
@ ALT_MODE_4
Definition: BoardConfig.hpp:57
dai::BoardConfig::usb
USB usb
Definition: BoardConfig.hpp:32
dai::BoardConfig::IMU::IMU
IMU()
Definition: BoardConfig.hpp:140
dai::BoardConfig::GPIO::Level
Level
Definition: BoardConfig.hpp:61
dai::BoardConfig::UVC::width
uint16_t width
Definition: BoardConfig.hpp:148
dai::BoardConfig::UVC::UVC
UVC(uint16_t width, uint16_t height)
Definition: BoardConfig.hpp:151
reset
static void reset(uint32_t digest[], std::string &buffer, uint64_t &transforms)
Definition: sha1.hpp:55
dai::BoardConfig::watchdogInitialDelayMs
tl::optional< uint32_t > watchdogInitialDelayMs
Definition: BoardConfig.hpp:53
dai::BoardConfig::GPIO::GPIO
GPIO()=default
dai::BoardConfig::GPIO::ALT_MODE_1
@ ALT_MODE_1
Definition: BoardConfig.hpp:57
dai::BoardConfig::GPIO::ALT_MODE_3
@ ALT_MODE_3
Definition: BoardConfig.hpp:57
dai::BoardConfig::IMU::boot
int8_t boot
Definition: BoardConfig.hpp:141
dai::BoardConfig::GPIO::Direction
Direction
Definition: BoardConfig.hpp:59
dai::BoardConfig::logDevicePrints
tl::optional< bool > logDevicePrints
log device prints
Definition: BoardConfig.hpp:111
LogLevel.hpp
dai
Definition: CameraExposureOffset.hpp:6
dai::BoardConfig::GPIO::OUTPUT
@ OUTPUT
Definition: BoardConfig.hpp:59
dai::BoardConfig::GPIO::GPIO
GPIO(Direction direction, Level level, Pull pull)
Definition: BoardConfig.hpp:72
dai::BoardConfig::watchdogTimeoutMs
tl::optional< uint32_t > watchdogTimeoutMs
Watchdog config.
Definition: BoardConfig.hpp:52
dai::BoardConfig::emmc
tl::optional< bool > emmc
eMMC config
Definition: BoardConfig.hpp:99
dai::BoardConfig::GPIO::Mode
Mode
Definition: BoardConfig.hpp:57
dai::BoardConfig::GPIO::DIRECT
@ DIRECT
Definition: BoardConfig.hpp:57
CameraSensorType.hpp
dai::BoardConfig::USB
USB related config.
Definition: BoardConfig.hpp:25


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