subghz_scene_transmitter.c 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  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. subghz_transmitter_set_frequency_preset(subghz_transmitter, subghz->frequency, subghz->preset);
  14. view_dispatcher_switch_to_view(subghz->view_dispatcher, SubGhzViewTransmitter);
  15. subghz->state_notifications = NOTIFICATION_IDLE_STATE;
  16. }
  17. const bool subghz_scene_transmitter_on_event(void* context, SceneManagerEvent event) {
  18. SubGhz* subghz = context;
  19. if(event.type == SceneManagerEventTypeCustom) {
  20. if(event.event == SubghzTransmitterEventSendStart) {
  21. subghz->state_notifications = NOTIFICATION_TX_STATE;
  22. subghz_transmitter_tx_start(subghz);
  23. return true;
  24. } else if(event.event == SubghzTransmitterEventSendStop) {
  25. subghz->state_notifications = NOTIFICATION_IDLE_STATE;
  26. subghz_transmitter_tx_stop(subghz);
  27. subghz_sleep();
  28. return true;
  29. } else if(event.event == SubghzTransmitterEventBack) {
  30. subghz->state_notifications = NOTIFICATION_IDLE_STATE;
  31. scene_manager_search_and_switch_to_previous_scene(
  32. subghz->scene_manager, SubGhzSceneStart);
  33. return true;
  34. }
  35. } else if(event.type == SceneManagerEventTypeTick) {
  36. if(subghz->state_notifications == NOTIFICATION_TX_STATE) {
  37. notification_message(subghz->notifications, &sequence_blink_red_10);
  38. }
  39. return true;
  40. }
  41. return false;
  42. }
  43. const void subghz_scene_transmitter_on_exit(void* context) {
  44. SubGhz* subghz = context;
  45. SubghzTransmitter* subghz_transmitter = subghz->subghz_transmitter;
  46. subghz_transmitter_set_callback(subghz_transmitter, NULL, subghz);
  47. subghz->state_notifications = NOTIFICATION_IDLE_STATE;
  48. }