subghz_scene_transmitter.c 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. #include "../subghz_i.h"
  2. #include "../views/subghz_transmitter.h"
  3. void subghz_scene_transmitter_callback(SubghzTransmitterEvent 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_transmitter_on_enter(void* context) {
  9. SubGhz* subghz = context;
  10. SubghzTransmitter* subghz_transmitter = subghz->subghz_transmitter;
  11. subghz_transmitter_set_callback(subghz_transmitter, subghz_scene_transmitter_callback, subghz);
  12. subghz_transmitter_set_protocol(subghz_transmitter, subghz->protocol_result);
  13. view_dispatcher_switch_to_view(subghz->view_dispatcher, SubGhzViewTransmitter);
  14. subghz->state_notifications = NOTIFICATION_IDLE_STATE;
  15. }
  16. const bool subghz_scene_transmitter_on_event(void* context, SceneManagerEvent event) {
  17. SubGhz* subghz = context;
  18. if(event.type == SceneManagerEventTypeCustom) {
  19. if(event.event == SubghzTransmitterEventSendStart) {
  20. subghz->state_notifications = NOTIFICATION_TX_STATE;
  21. subghz_transmitter_tx_start(subghz);
  22. return true;
  23. } else if(event.event == SubghzTransmitterEventSendStop) {
  24. subghz->state_notifications = NOTIFICATION_IDLE_STATE;
  25. subghz_transmitter_tx_stop(subghz);
  26. return true;
  27. } else if(event.event == SubghzTransmitterEventBack) {
  28. subghz->state_notifications = NOTIFICATION_IDLE_STATE;
  29. scene_manager_search_and_switch_to_previous_scene(
  30. subghz->scene_manager, SubGhzSceneStart);
  31. return true;
  32. }
  33. } else if(event.type == SceneManagerEventTypeTick) {
  34. if(subghz->state_notifications == NOTIFICATION_TX_STATE) {
  35. notification_message(subghz->notifications, &sequence_blink_red_10);
  36. }
  37. return true;
  38. }
  39. return false;
  40. }
  41. const void subghz_scene_transmitter_on_exit(void* context) {
  42. SubGhz* subghz = context;
  43. SubghzTransmitter* subghz_transmitter = subghz->subghz_transmitter;
  44. subghz_transmitter_set_callback(subghz_transmitter, NULL, subghz);
  45. subghz->state_notifications = NOTIFICATION_IDLE_STATE;
  46. }