summaryrefslogtreecommitdiff
path: root/src/system_fsm
diff options
context:
space:
mode:
Diffstat (limited to 'src/system_fsm')
-rw-r--r--src/system_fsm/booting.cpp4
-rw-r--r--src/system_fsm/include/system_fsm.hpp5
-rw-r--r--src/system_fsm/running.cpp4
-rw-r--r--src/system_fsm/system_fsm.cpp2
4 files changed, 9 insertions, 6 deletions
diff --git a/src/system_fsm/booting.cpp b/src/system_fsm/booting.cpp
index 1ad8c02d..1e1b2959 100644
--- a/src/system_fsm/booting.cpp
+++ b/src/system_fsm/booting.cpp
@@ -27,8 +27,6 @@ namespace states {
static const char kTag[] = "BOOT";
-console::AppConsole* Booting::sAppConsole;
-
auto Booting::entry() -> void {
ESP_LOGI(kTag, "beginning tangara boot");
ESP_LOGI(kTag, "installing early drivers");
@@ -78,7 +76,7 @@ auto Booting::entry() -> void {
auto Booting::exit() -> void {
// TODO(jacqueline): Gate this on something. Debug flag? Flashing mode?
- sAppConsole = new console::AppConsole(sDatabase);
+ sAppConsole = new console::AppConsole();
sAppConsole->Launch();
}
diff --git a/src/system_fsm/include/system_fsm.hpp b/src/system_fsm/include/system_fsm.hpp
index 89cdcf47..037c0a0e 100644
--- a/src/system_fsm/include/system_fsm.hpp
+++ b/src/system_fsm/include/system_fsm.hpp
@@ -56,6 +56,8 @@ class SystemState : public tinyfsm::Fsm<SystemState> {
static std::shared_ptr<drivers::SdStorage> sStorage;
static std::shared_ptr<drivers::Display> sDisplay;
static std::shared_ptr<database::Database> sDatabase;
+
+ static console::AppConsole* sAppConsole;
};
namespace states {
@@ -65,9 +67,6 @@ namespace states {
* looks good.
*/
class Booting : public SystemState {
- private:
- static console::AppConsole* sAppConsole;
-
public:
void entry() override;
void exit() override;
diff --git a/src/system_fsm/running.cpp b/src/system_fsm/running.cpp
index 9116ec9d..f9ff6140 100644
--- a/src/system_fsm/running.cpp
+++ b/src/system_fsm/running.cpp
@@ -4,6 +4,7 @@
* SPDX-License-Identifier: GPL-3.0-only
*/
+#include "app_console.hpp"
#include "freertos/projdefs.h"
#include "result.hpp"
@@ -28,6 +29,7 @@ void Running::entry() {
vTaskDelay(pdMS_TO_TICKS(250));
auto storage_res = drivers::SdStorage::Create(sGpioExpander.get());
if (storage_res.has_error()) {
+ ESP_LOGW(kTag, "failed to mount!");
events::Dispatch<StorageError, SystemState, audio::AudioState, ui::UiState>(
StorageError());
return;
@@ -38,11 +40,13 @@ void Running::entry() {
ESP_LOGI(kTag, "opening database");
auto database_res = database::Database::Open();
if (database_res.has_error()) {
+ ESP_LOGW(kTag, "failed to open!");
events::Dispatch<StorageError, SystemState, audio::AudioState, ui::UiState>(
StorageError());
return;
}
sDatabase.reset(database_res.value());
+ console::AppConsole::sDatabase = sDatabase;
ESP_LOGI(kTag, "storage loaded okay");
events::Dispatch<StorageMounted, SystemState, audio::AudioState, ui::UiState>(
diff --git a/src/system_fsm/system_fsm.cpp b/src/system_fsm/system_fsm.cpp
index bcab298c..c59c0908 100644
--- a/src/system_fsm/system_fsm.cpp
+++ b/src/system_fsm/system_fsm.cpp
@@ -20,6 +20,8 @@ std::shared_ptr<drivers::SdStorage> SystemState::sStorage;
std::shared_ptr<drivers::Display> SystemState::sDisplay;
std::shared_ptr<database::Database> SystemState::sDatabase;
+console::AppConsole* SystemState::sAppConsole;
+
void SystemState::react(const FatalError& err) {
if (!is_in_state<states::Error>()) {
transit<states::Error>();