From 65a1f09a903cb2bcef9bcd576b5146407dd77ecd Mon Sep 17 00:00:00 2001 From: jacqueline Date: Fri, 18 Aug 2023 12:32:18 +1000 Subject: Support app console commands for the samd --- src/app_console/app_console.cpp | 58 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) (limited to 'src/app_console/app_console.cpp') 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 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 -- cgit v1.2.3