diff options
| author | Nathan Perry <np@npry.dev> | 2024-10-24 00:25:25 -0400 |
|---|---|---|
| committer | Nathan Perry <np@npry.dev> | 2024-10-24 00:25:25 -0400 |
| commit | 5077fec0348e717fa93bd1879548fed03fcae52e (patch) | |
| tree | 2b6a93daa2ba9d52d17fa5258f705c9682e49984 /test_fw/src/bringup.cpp | |
| parent | 9c07c2b85d908f699f8ba590b1d60232157eca90 (diff) | |
test_fw: refactor
Diffstat (limited to 'test_fw/src/bringup.cpp')
| -rw-r--r-- | test_fw/src/bringup.cpp | 99 |
1 files changed, 99 insertions, 0 deletions
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 <Wire.h> + +using namespace ocularium; + +void bringup::startup_checks(const etl::span<bringup::init_check> &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); + } +} |
