music_player_cli.c 1.4 KB

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