summaryrefslogtreecommitdiff
path: root/src/system_fsm/booting.cpp
diff options
context:
space:
mode:
authorjacqueline <me@jacqueline.id.au>2023-08-28 13:26:53 +1000
committerjacqueline <me@jacqueline.id.au>2023-08-28 13:26:53 +1000
commit3a0c42f9240eedfbc6a1e94ad3a59c52664fb5b5 (patch)
tree0505db40de6fceaf5829548ef86f4cb53b739bcb /src/system_fsm/booting.cpp
parenta1327763ab70dbf4996e032dd227de368f78f4ad (diff)
downloadtangara-fw-3a0c42f9240eedfbc6a1e94ad3a59c52664fb5b5.tar.gz
Move battery measurement to its own class
Diffstat (limited to 'src/system_fsm/booting.cpp')
-rw-r--r--src/system_fsm/booting.cpp24
1 files changed, 8 insertions, 16 deletions
diff --git a/src/system_fsm/booting.cpp b/src/system_fsm/booting.cpp
index 33ed39d1..f33d1679 100644
--- a/src/system_fsm/booting.cpp
+++ b/src/system_fsm/booting.cpp
@@ -38,12 +38,6 @@ namespace states {
static const char kTag[] = "BOOT";
-static const TickType_t kBatteryCheckPeriod = pdMS_TO_TICKS(60 * 1000);
-
-static void battery_timer_cb(TimerHandle_t timer) {
- events::System().Dispatch(internal::BatteryTimerFired{});
-}
-
auto Booting::entry() -> void {
ESP_LOGI(kTag, "beginning tangara boot");
ESP_LOGI(kTag, "installing early drivers");
@@ -53,33 +47,31 @@ auto Booting::entry() -> void {
ESP_ERROR_CHECK(drivers::init_spi());
sGpios.reset(drivers::Gpios::Create());
+ sSamd.reset(drivers::Samd::Create());
+ sAdc.reset(drivers::AdcBattery::Create());
+ assert(sSamd.get() && sAdc.get());
+
+ sBattery.reset(new battery::Battery(sSamd.get(), sAdc.get()));
+
// Start bringing up LVGL now, since we have all of its prerequisites.
sTrackQueue.reset(new audio::TrackQueue());
ESP_LOGI(kTag, "starting ui");
- if (!ui::UiState::Init(sGpios.get(), sTrackQueue.get())) {
+ if (!ui::UiState::Init(sGpios.get(), sTrackQueue.get(), sBattery)) {
events::System().Dispatch(FatalError{});
return;
}
// Install everything else that is certain to be needed.
ESP_LOGI(kTag, "installing remaining drivers");
- sSamd.reset(drivers::Samd::Create());
- sBattery.reset(drivers::Battery::Create());
sNvs.reset(drivers::NvsStorage::Open());
sTagParser.reset(new database::TagParserImpl());
- if (!sSamd || !sBattery || !sNvs) {
+ if (!sNvs) {
events::System().Dispatch(FatalError{});
events::Ui().Dispatch(FatalError{});
return;
}
- ESP_LOGI(kTag, "battery is at %u%% (= %lu mV)", sBattery->Percent(),
- sBattery->Millivolts());
- TimerHandle_t battery_timer = xTimerCreate("battery", kBatteryCheckPeriod,
- true, NULL, battery_timer_cb);
- xTimerStart(battery_timer, portMAX_DELAY);
-
// ESP_LOGI(kTag, "starting bluetooth");
// sBluetooth.reset(new drivers::Bluetooth(sNvs.get()));
// sBluetooth->Enable();