From 5077fec0348e717fa93bd1879548fed03fcae52e Mon Sep 17 00:00:00 2001 From: Nathan Perry Date: Thu, 24 Oct 2024 00:25:25 -0400 Subject: test_fw: refactor --- test_fw/src/bringup.cpp | 99 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 99 insertions(+) create mode 100644 test_fw/src/bringup.cpp (limited to 'test_fw/src/bringup.cpp') diff --git a/test_fw/src/bringup.cpp b/test_fw/src/bringup.cpp new file mode 100644 index 0000000..44a07c0 --- /dev/null +++ b/test_fw/src/bringup.cpp @@ -0,0 +1,99 @@ +#include "bringup.h" +#include "board.h" + +#include + +using namespace ocularium; + +void bringup::startup_checks(const etl::span &checks) +{ + auto success = true; + + do + { + success = true; + + for (auto &[name, f, succeeded] : checks) + { + if (succeeded) + continue; + + Serial.print("checking " + name + "... "); + + succeeded = f(); + success = success && succeeded; + + if (succeeded) Serial.println("ok"); + else Serial.println("bad"); + } + + if (!success) delay(10); + } while (!success); +} + +void bringup::init_buses() +{ + Wire1.setSCL(SCL_PIN); + Wire1.setSDA(SDA_PIN); + Wire1.setClock(100000); + Wire1.begin(); + + SD_SPI.setCS(SD_CS); + SD_SPI.setMOSI(SD_MOSI); + SD_SPI.setMISO(SD_MISO); + SD_SPI.setSCK(SD_SCK); + SD_SPI.begin(); + + LSM_SPI.setCS(LSM_CS); + LSM_SPI.setMOSI(LSM_MOSI); + LSM_SPI.setMISO(LSM_MISO); + LSM_SPI.setSCK(LSM_SCK); + LSM_SPI.begin(); +} + +void bringup::init_pins() +{ + pinMode(CARD_DETECT, INPUT); + pinMode(LED_FAULT, OUTPUT); + pinMode(LED_CAPTURING, OUTPUT); + pinMode(LED_OTHER, OUTPUT); + pinMode(LED_STORAGE, OUTPUT); + pinMode(LSM_INT1, INPUT); + pinMode(LSM_INT2, INPUT); +} + +void bringup::boot_animation() +{ + constexpr pin_size_t chase[] = { + LED_STORAGE, + LED_OTHER, + LED_FAULT, + LED_CAPTURING, + }; + + for (auto i = 0; i < 5; i++) + { + for (const auto pin: chase) + { + digitalWrite(pin, HIGH); + delay(75); + digitalWrite(pin, LOW); + } + } + + delay(100); + + for (auto i = 0; i < 2; i++) + { + for (const auto pin : chase) + { + digitalWrite(pin, HIGH); + } + delay(100); + for (const auto pin : chase) + { + digitalWrite(pin, LOW); + } + delay(100); + } +} -- cgit v1.3.1