music_beeper_cli.c 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. #include <furi.h>
  2. #include <cli/cli.h>
  3. #include <storage/storage.h>
  4. #include "music_beeper_worker.h"
  5. static void music_beeper_cli(Cli* cli, FuriString* args, void* context) {
  6. UNUSED(context);
  7. MusicBeeperWorker* music_beeper_worker = music_beeper_worker_alloc();
  8. Storage* storage = furi_record_open(RECORD_STORAGE);
  9. do {
  10. if(storage_common_stat(storage, furi_string_get_cstr(args), NULL) == FSE_OK) {
  11. if(!music_beeper_worker_load(music_beeper_worker, furi_string_get_cstr(args))) {
  12. printf("Failed to open file %s\r\n", furi_string_get_cstr(args));
  13. break;
  14. }
  15. } else {
  16. if(!music_beeper_worker_load_rtttl_from_string(
  17. music_beeper_worker, furi_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_beeper_worker_set_volume(music_beeper_worker, 1.0f);
  24. music_beeper_worker_start(music_beeper_worker);
  25. while(!cli_cmd_interrupt_received(cli)) {
  26. furi_delay_ms(50);
  27. }
  28. music_beeper_worker_stop(music_beeper_worker);
  29. } while(0);
  30. furi_record_close(RECORD_STORAGE);
  31. music_beeper_worker_free(music_beeper_worker);
  32. }
  33. void music_beeper_on_system_start() {
  34. #ifdef SRV_CLI
  35. Cli* cli = furi_record_open(RECORD_CLI);
  36. cli_add_command(cli, "music_beeper", CliCommandFlagDefault, music_beeper_cli, NULL);
  37. furi_record_close(RECORD_CLI);
  38. #else
  39. UNUSED(music_beeper_cli);
  40. #endif
  41. }