subghz_scene_receiver.c 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. #include "../subghz_i.h"
  2. #include "../views/subghz_receiver.h"
  3. void subghz_scene_receiver_callback(SubghzReceverEvent event, void* context) {
  4. furi_assert(context);
  5. SubGhz* subghz = context;
  6. view_dispatcher_send_custom_event(subghz->view_dispatcher, event);
  7. }
  8. const void subghz_scene_receiver_on_enter(void* context) {
  9. SubGhz* subghz = context;
  10. SubghzReceiver* subghz_receiver = subghz->subghz_receiver;
  11. subghz_receiver_set_callback(subghz_receiver, subghz_scene_receiver_callback, subghz);
  12. subghz_receiver_set_protocol(subghz_receiver, subghz->protocol_result, subghz->protocol);
  13. subghz_receiver_set_worker(subghz_receiver, subghz->worker);
  14. subghz->state_notifications = NOTIFICATION_RX_STATE;
  15. view_dispatcher_switch_to_view(subghz->view_dispatcher, SubGhzViewReceiver);
  16. }
  17. const bool subghz_scene_receiver_on_event(void* context, SceneManagerEvent event) {
  18. SubGhz* subghz = context;
  19. if(event.type == SceneManagerEventTypeCustom) {
  20. switch(event.event) {
  21. case SubghzReceverEventSave:
  22. subghz->state_notifications = NOTIFICATION_IDLE_STATE;
  23. subghz->frequency = subghz_receiver_get_frequency(subghz->subghz_receiver);
  24. subghz->preset = subghz_receiver_get_preset(subghz->subghz_receiver);
  25. subghz->protocol_result = subghz_receiver_get_protocol(subghz->subghz_receiver);
  26. scene_manager_next_scene(subghz->scene_manager, SubGhzSceneSaveName);
  27. return true;
  28. break;
  29. case SubghzReceverEventBack:
  30. scene_manager_previous_scene(subghz->scene_manager);
  31. return true;
  32. break;
  33. case SubghzReceverEventSendStart:
  34. subghz->state_notifications = NOTIFICATION_TX_STATE;
  35. subghz->frequency = subghz_receiver_get_frequency(subghz->subghz_receiver);
  36. subghz->preset = subghz_receiver_get_preset(subghz->subghz_receiver);
  37. subghz->protocol_result = subghz_receiver_get_protocol(subghz->subghz_receiver);
  38. subghz_transmitter_tx_start(subghz);
  39. return true;
  40. break;
  41. case SubghzReceverEventSendStop:
  42. subghz->state_notifications = NOTIFICATION_IDLE_STATE;
  43. subghz_transmitter_tx_stop(subghz);
  44. return true;
  45. break;
  46. case SubghzReceverEventMain:
  47. subghz->state_notifications = NOTIFICATION_RX_STATE;
  48. return true;
  49. break;
  50. case SubghzReceverEventConfig:
  51. subghz->state_notifications = NOTIFICATION_IDLE_STATE;
  52. return true;
  53. break;
  54. case SubghzReceverEventSendHistoryFull:
  55. subghz->state_notifications = NOTIFICATION_IDLE_STATE;
  56. return true;
  57. break;
  58. default:
  59. break;
  60. }
  61. } else if(event.type == SceneManagerEventTypeTick) {
  62. switch(subghz->state_notifications) {
  63. case NOTIFICATION_TX_STATE:
  64. notification_message(subghz->notifications, &sequence_blink_red_10);
  65. break;
  66. case NOTIFICATION_RX_STATE:
  67. notification_message(subghz->notifications, &sequence_blink_blue_10);
  68. break;
  69. default:
  70. break;
  71. }
  72. }
  73. return false;
  74. }
  75. const void subghz_scene_receiver_on_exit(void* context) {
  76. // SubGhz* subghz = context;
  77. }