music_player_cli.c 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. #include <furi.h>
  2. #include <cli/cli.h>
  3. #include <storage/storage.h>
  4. #include "music_player_worker.h"
  5. static void music_player_cli(Cli* cli, string_t args, void* context) {
  6. MusicPlayerWorker* music_player_worker = music_player_worker_alloc();
  7. Storage* storage = furi_record_open("storage");
  8. do {
  9. if(storage_common_stat(storage, string_get_cstr(args), NULL) == FSE_OK) {
  10. if(!music_player_worker_load(music_player_worker, string_get_cstr(args))) {
  11. printf("Failed to open file %s\r\n", string_get_cstr(args));
  12. break;
  13. }
  14. } else {
  15. if(!music_player_worker_load_rtttl_from_string(
  16. music_player_worker, string_get_cstr(args))) {
  17. printf("Argument is not a file or RTTTL\r\n");
  18. break;
  19. }
  20. }
  21. printf("Press CTRL+C to stop\r\n");
  22. music_player_worker_start(music_player_worker);
  23. while(!cli_cmd_interrupt_received(cli)) {
  24. osDelay(50);
  25. }
  26. music_player_worker_stop(music_player_worker);
  27. } while(0);
  28. furi_record_close("storage");
  29. music_player_worker_free(music_player_worker);
  30. }
  31. void music_player_on_system_start() {
  32. #ifdef SRV_CLI
  33. Cli* cli = furi_record_open("cli");
  34. cli_add_command(cli, "music_player", CliCommandFlagDefault, music_player_cli, NULL);
  35. furi_record_close("cli");
  36. #else
  37. UNUSED(music_player_cli);
  38. #endif
  39. }