music.c 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. #include "music.h"
  2. #include "guide.h"
  3. #include "screen.h"
  4. #define DBG_TAG "music"
  5. #define DBG_LVL DBG_LOG
  6. #include <rtdbg.h>
  7. #define SPK_PIN GET_PIN(A, 15)
  8. #define SPK2_PIN GET_PIN(D, 0)
  9. void music_play(uint8_t music)
  10. {
  11. if(music == MUSIC_OFF)
  12. {
  13. rt_pin_write(SPK_PIN, PIN_HIGH);
  14. rt_pin_write(SPK2_PIN, PIN_HIGH);
  15. }
  16. else
  17. {
  18. if(rt_pin_read(SPK_PIN))
  19. {
  20. rt_pin_write(SPK_PIN, PIN_LOW);
  21. rt_pin_write(SPK2_PIN, PIN_LOW);
  22. }
  23. else
  24. {
  25. rt_pin_write(SPK_PIN, PIN_HIGH);
  26. rt_pin_write(SPK2_PIN, PIN_HIGH);
  27. }
  28. }
  29. }
  30. void music_thread(void *param)
  31. {
  32. while(1)
  33. {
  34. switch(S.Status)
  35. {
  36. case STATUS_INIT:
  37. case STATUS_READY:
  38. case STATUS_RUN:
  39. case STATUS_REMOTE_MANUAL:
  40. case STATUS_RUN_LOW_POWER:
  41. case STATUS_STOP_LOW_POWER:
  42. case STATUS_RUN_OBS_LOW_SPEED: //BUG3
  43. music_play(MUSIC_OFF);
  44. break;
  45. default:
  46. music_play(MUSIC_SCRAM);
  47. break;
  48. }
  49. rt_thread_mdelay(1000);
  50. }
  51. }
  52. static int music_init(void)
  53. {
  54. static rt_thread_t tid;
  55. rt_pin_mode(SPK_PIN, PIN_MODE_OUTPUT);
  56. rt_pin_mode(SPK2_PIN, PIN_MODE_OUTPUT);
  57. rt_pin_write(SPK_PIN, PIN_HIGH);
  58. rt_pin_write(SPK2_PIN, PIN_HIGH);
  59. tid = rt_thread_create("spk", music_thread, NULL, 1024, RT_THREAD_PRIORITY_MAX - 7, 10);
  60. if(tid)
  61. {
  62. rt_thread_startup(tid);
  63. }
  64. return RT_EOK;
  65. }
  66. INIT_APP_EXPORT(music_init);