summaryrefslogtreecommitdiff
path: root/src/main
diff options
context:
space:
mode:
authorjacqueline <me@jacqueline.id.au>2023-04-26 15:21:32 +1000
committerjacqueline <me@jacqueline.id.au>2023-04-26 15:21:32 +1000
commitfbe047a35fff100cb5f42d10984bccde137f586e (patch)
treeab05dff1142f6a6a14f4b03a4340672a5e65976a /src/main
parent083f4011aa740d492d9a9ceb07c7228003f5ad39 (diff)
downloadtangara-fw-fbe047a35fff100cb5f42d10984bccde137f586e.tar.gz
Add some basic data and retrieval
Diffstat (limited to 'src/main')
-rw-r--r--src/main/app_console.cpp54
-rw-r--r--src/main/app_console.hpp4
-rw-r--r--src/main/main.cpp16
3 files changed, 65 insertions, 9 deletions
diff --git a/src/main/app_console.cpp b/src/main/app_console.cpp
index 40159f4e..859700f4 100644
--- a/src/main/app_console.cpp
+++ b/src/main/app_console.cpp
@@ -9,7 +9,9 @@
#include <string>
#include "audio_playback.hpp"
+#include "database.hpp"
#include "esp_console.h"
+#include "esp_log.h"
namespace console {
@@ -145,7 +147,55 @@ void RegisterAudioStatus() {
esp_console_cmd_register(&cmd);
}
-AppConsole::AppConsole(audio::AudioPlayback* playback) : playback_(playback) {
+int CmdDbInit(int argc, char** argv) {
+ static const std::string usage = "usage: db_init";
+ if (argc != 1) {
+ std::cout << usage << std::endl;
+ return 1;
+ }
+
+ sInstance->database_->Initialise();
+
+ return 0;
+}
+
+void RegisterDbInit() {
+ esp_console_cmd_t cmd{.command = "db_init",
+ .help = "scans for playable files and adds them to the database",
+ .hint = NULL,
+ .func = &CmdDbInit,
+ .argtable = NULL};
+ esp_console_cmd_register(&cmd);
+}
+
+int CmdDbTitles(int argc, char** argv) {
+ static const std::string usage = "usage: db_titles";
+ if (argc != 1) {
+ std::cout << usage << std::endl;
+ return 1;
+ }
+
+ database::Iterator it = sInstance->database_->ByTitle();
+ while (true) {
+ std::optional<std::string> title = it.Next();
+ if (!title) {
+ break;
+ }
+ std::cout << *title << std::endl;
+ }
+ return 0;
+}
+
+void RegisterDbTitles() {
+ esp_console_cmd_t cmd{.command = "db_titles",
+ .help = "lists titles of ALL songs in the database",
+ .hint = NULL,
+ .func = &CmdDbTitles,
+ .argtable = NULL};
+ esp_console_cmd_register(&cmd);
+}
+
+AppConsole::AppConsole(audio::AudioPlayback* playback, database::Database *database) : playback_(playback), database_(database) {
sInstance = this;
}
AppConsole::~AppConsole() {
@@ -158,6 +208,8 @@ auto AppConsole::RegisterExtraComponents() -> void {
RegisterToggle();
RegisterVolume();
RegisterAudioStatus();
+ RegisterDbInit();
+ RegisterDbTitles();
}
} // namespace console
diff --git a/src/main/app_console.hpp b/src/main/app_console.hpp
index f94bcb51..fcefd4d4 100644
--- a/src/main/app_console.hpp
+++ b/src/main/app_console.hpp
@@ -4,16 +4,18 @@
#include "audio_playback.hpp"
#include "console.hpp"
+#include "database.hpp"
#include "storage.hpp"
namespace console {
class AppConsole : public Console {
public:
- explicit AppConsole(audio::AudioPlayback* playback);
+ explicit AppConsole(audio::AudioPlayback* playback, database::Database *database);
virtual ~AppConsole();
audio::AudioPlayback* playback_;
+ database::Database *database_;
protected:
virtual auto RegisterExtraComponents() -> void;
diff --git a/src/main/main.cpp b/src/main/main.cpp
index 312018cb..6ef7c61b 100644
--- a/src/main/main.cpp
+++ b/src/main/main.cpp
@@ -38,6 +38,7 @@
static const char* TAG = "MAIN";
void db_main(void* whatever) {
+ database::Database **arg_db = reinterpret_cast<database::Database**>(whatever);
ESP_LOGI(TAG, "Init database");
std::unique_ptr<database::Database> db;
auto db_res = database::Database::Open();
@@ -48,13 +49,13 @@ void db_main(void* whatever) {
ESP_LOGI(TAG, "database good :)");
}
- vTaskDelay(pdMS_TO_TICKS(2000));
+ *arg_db = db.get();
- db->Initialise();
+ db->ByTitle();
- vTaskDelay(pdMS_TO_TICKS(2000));
-
- db.reset();
+ while (1) {
+ vTaskDelay(portMAX_DELAY);
+ }
vTaskDelete(NULL);
}
@@ -89,7 +90,8 @@ extern "C" void app_main(void) {
StaticTask_t database_task_buffer = {};
StackType_t* database_stack = reinterpret_cast<StackType_t*>(
heap_caps_malloc(db_stack_size, MALLOC_CAP_SPIRAM));
- xTaskCreateStatic(&db_main, "LEVELDB", db_stack_size, NULL, 1, database_stack,
+ database::Database *db;
+ xTaskCreateStatic(&db_main, "LEVELDB", db_stack_size, &db, 1, database_stack,
&database_task_buffer);
ESP_LOGI(TAG, "Init touch wheel");
@@ -110,7 +112,7 @@ extern "C" void app_main(void) {
vTaskDelay(pdMS_TO_TICKS(1000));
ESP_LOGI(TAG, "Launch console");
- console::AppConsole console(playback.get());
+ console::AppConsole console(playback.get(), db);
console.Launch();
uint8_t prev_position = 0;