action_ir.c 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. // Methods for IR transmission
  2. #include <infrared.h>
  3. #include <infrared/encoder_decoder/infrared.h>
  4. #include <applications/services/cli/cli.h>
  5. #include "action_i.h"
  6. #include "quac.h"
  7. typedef struct {
  8. size_t timings_size; /**< Number of elements in the timings array. */
  9. uint32_t* timings; /**< Pointer to an array of timings describing the signal. */
  10. uint32_t frequency; /**< Carrier frequency of the signal. */
  11. float duty_cycle; /**< Duty cycle of the signal. */
  12. } InfraredRawSignal;
  13. typedef struct InfraredSignal {
  14. bool is_raw;
  15. union {
  16. InfraredMessage message;
  17. InfraredRawSignal raw;
  18. } payload;
  19. } InfraredSignal;
  20. InfraredSignal* infrared_signal_alloc() {
  21. InfraredSignal* signal = malloc(sizeof(InfraredSignal));
  22. signal->is_raw = false;
  23. signal->payload.message.protocol = InfraredProtocolUnknown;
  24. return signal;
  25. }
  26. void action_ir_tx(void* context, FuriString* action_path, FuriString* error) {
  27. UNUSED(action_path);
  28. UNUSED(error);
  29. UNUSED(context);
  30. // App* app = context;
  31. // InfraredSignal* signal = infrared_signal_alloc();
  32. // const char* ir_file = furi_string_get_cstr(action_path);
  33. // bool success = infrared_parse_message(ir_file, signal) || infrared_parse_raw(ir_file, signal);
  34. // if(success) {
  35. // infrared_signal_transmit(signal);
  36. // } else {
  37. // ACTION_SET_ERROR("IR: Error sending signal");
  38. // }
  39. // infrared_signal_free(signal);
  40. }