subghz_scene_receiver.c 3.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  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. default:
  55. break;
  56. }
  57. } else if(event.type == SceneManagerEventTypeTick) {
  58. switch(subghz->state_notifications) {
  59. case NOTIFICATION_TX_STATE:
  60. notification_message(subghz->notifications, &sequence_blink_red_10);
  61. break;
  62. case NOTIFICATION_RX_STATE:
  63. notification_message(subghz->notifications, &sequence_blink_blue_10);
  64. break;
  65. default:
  66. break;
  67. }
  68. }
  69. return false;
  70. }
  71. const void subghz_scene_receiver_on_exit(void* context) {
  72. // SubGhz* subghz = context;
  73. }