imu_firmware_update.cpp
Go to the documentation of this file.
1 
2 #include <cstdio>
3 #include <iostream>
4 
5 #include "utility.hpp"
6 
7 // Includes common necessary includes for development using depthai library
8 #include "depthai/depthai.hpp"
9 
10 int main() {
11  using namespace std;
12  using namespace std::chrono;
13 
14  dai::Device device;
15 
16  auto imuType = device.getConnectedIMU();
17  auto imuFirmwareVersion = device.getIMUFirmwareVersion();
18  auto embeddedIMUFirmwareVersion = device.getEmbeddedIMUFirmwareVersion();
19  std::cout << "IMU type: " << imuType << " firmware version: " << imuFirmwareVersion
20  << " embedded firmware version: " << embeddedIMUFirmwareVersion << std::endl;
21 
22  std::cout << "Warning! Flashing IMU firmware can potentially soft brick your device and should be done with caution." << std::endl;
23  std::cout << "Do not unplug your device while the IMU firmware is flashing." << std::endl;
24  std::cout << "Type 'y' and press enter to proceed, otherwise exits: ";
25  std::cin.ignore();
26  if(std::cin.get() != 'y') {
27  std::cout << "Prompt declined, exiting..." << std::endl;
28  return -1;
29  }
30 
31  auto started = device.startIMUFirmwareUpdate();
32  if(!started) {
33  std::cout << "Couldn't start IMU firmware update" << std::endl;
34  return 1;
35  }
36 
37  while(true) {
38  bool fwUpdateFinished;
39  unsigned int percentage;
40  std::tie(fwUpdateFinished, percentage) = device.getIMUFirmwareUpdateStatus();
41  std::cout << "IMU FW update status: " << std::setprecision(1) << percentage << std::endl;
42  if(fwUpdateFinished) {
43  if(percentage == 100) {
44  std::cout << "Firmware update successful!" << std::endl;
45  } else {
46  std::cout << "Firmware update failed!" << std::endl;
47  }
48  break;
49  }
50  std::this_thread::sleep_for(1s);
51  }
52 
53  return 0;
54 }
DAI_SPAN_NAMESPACE_NAME::get
constexpr auto get(span< E, S > s) -> decltype(s[N])
Definition: span.hpp:491
dai::DeviceBase::getIMUFirmwareVersion
dai::Version getIMUFirmwareVersion()
Definition: DeviceBase.cpp:1125
dai::DeviceBase::getEmbeddedIMUFirmwareVersion
dai::Version getEmbeddedIMUFirmwareVersion()
Definition: DeviceBase.cpp:1136
dai::DeviceBase::getConnectedIMU
std::string getConnectedIMU()
Definition: DeviceBase.cpp:1121
depthai.hpp
dai::DeviceBase::startIMUFirmwareUpdate
bool startIMUFirmwareUpdate(bool forceUpdate=false)
Definition: DeviceBase.cpp:1147
dai::Device
Definition: Device.hpp:21
main
int main()
Definition: imu_firmware_update.cpp:10
std
Definition: Node.hpp:366
dai::DeviceBase::getIMUFirmwareUpdateStatus
std::tuple< bool, unsigned int > getIMUFirmwareUpdateStatus()
Definition: DeviceBase.cpp:1151
utility.hpp


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