diff options
| author | jacqueline <me@jacqueline.id.au> | 2023-08-18 12:32:18 +1000 |
|---|---|---|
| committer | jacqueline <me@jacqueline.id.au> | 2023-08-18 12:32:18 +1000 |
| commit | 65a1f09a903cb2bcef9bcd576b5146407dd77ecd (patch) | |
| tree | 71d56da8ffe15218f13eecb35bea7d7f9276eb30 /src/app_console/app_console.cpp | |
| parent | d8533c42df9d3ac250d896c9fd1077b8c9a9552b (diff) | |
| download | tangara-fw-65a1f09a903cb2bcef9bcd576b5146407dd77ecd.tar.gz | |
Support app console commands for the samd
Diffstat (limited to 'src/app_console/app_console.cpp')
| -rw-r--r-- | src/app_console/app_console.cpp | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/src/app_console/app_console.cpp b/src/app_console/app_console.cpp index 7804fd34..e9bd7cdc 100644 --- a/src/app_console/app_console.cpp +++ b/src/app_console/app_console.cpp @@ -38,6 +38,7 @@ namespace console { std::weak_ptr<database::Database> AppConsole::sDatabase; audio::TrackQueue* AppConsole::sTrackQueue; drivers::Bluetooth* AppConsole::sBluetooth; +drivers::Samd* AppConsole::sSamd; int CmdListDir(int argc, char** argv) { auto lock = AppConsole::sDatabase.lock(); @@ -481,6 +482,62 @@ void RegisterBtList() { esp_console_cmd_register(&cmd); } +int CmdSamd(int argc, char** argv) { + static const std::string usage = "usage: samd [flash|charge]"; + if (argc != 2) { + std::cout << usage << std::endl; + return 1; + } + + std::string cmd{argv[1]}; + if (cmd == "flash") { + std::cout << "resetting samd..." << std::endl; + vTaskDelay(pdMS_TO_TICKS(5)); + + AppConsole::sSamd->ResetToFlashSamd(); + } else if (cmd == "charge") { + auto res = AppConsole::sSamd->ReadChargeStatus(); + if (res) { + switch (res.value()) { + case drivers::Samd::ChargeStatus::kNoBattery: + std::cout << "kNoBattery" << std::endl; + break; + case drivers::Samd::ChargeStatus::kBatteryCritical: + std::cout << "kBatteryCritical" << std::endl; + break; + case drivers::Samd::ChargeStatus::kDischarging: + std::cout << "kDischarging" << std::endl; + break; + case drivers::Samd::ChargeStatus::kChargingRegular: + std::cout << "kChargingRegular" << std::endl; + break; + case drivers::Samd::ChargeStatus::kChargingFast: + std::cout << "kChargingFast" << std::endl; + break; + case drivers::Samd::ChargeStatus::kFullCharge: + std::cout << "kFullCharge" << std::endl; + break; + } + } else { + std::cout << "unknown" << std::endl; + } + } else { + std::cout << usage << std::endl; + return 1; + } + + return 0; +} + +void RegisterSamd() { + esp_console_cmd_t cmd{.command = "samd", + .help = "", + .hint = NULL, + .func = &CmdSamd, + .argtable = NULL}; + esp_console_cmd_register(&cmd); +} + auto AppConsole::RegisterExtraComponents() -> void { RegisterListDir(); RegisterPlayFile(); @@ -495,6 +552,7 @@ auto AppConsole::RegisterExtraComponents() -> void { RegisterDbDump(); RegisterTaskStates(); RegisterBtList(); + RegisterSamd(); } } // namespace console |
