digital_signal.h 859 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. #pragma once
  2. #include <stdint.h>
  3. #include <stdlib.h>
  4. #include <stdbool.h>
  5. #include <furi_hal_gpio.h>
  6. #ifdef __cplusplus
  7. extern "C" {
  8. #endif
  9. typedef struct {
  10. bool start_level;
  11. uint32_t edge_cnt;
  12. uint32_t edges_max_cnt;
  13. uint32_t* edge_timings;
  14. uint32_t* reload_reg_buff;
  15. } DigitalSignal;
  16. DigitalSignal* digital_signal_alloc(uint32_t max_edges_cnt);
  17. void digital_signal_free(DigitalSignal* signal);
  18. bool digital_signal_append(DigitalSignal* signal_a, DigitalSignal* signal_b);
  19. void digital_signal_prepare_arr(DigitalSignal* signal);
  20. bool digital_signal_get_start_level(DigitalSignal* signal);
  21. uint32_t digital_signal_get_edges_cnt(DigitalSignal* signal);
  22. uint32_t digital_signal_get_edge(DigitalSignal* signal, uint32_t edge_num);
  23. void digital_signal_send(DigitalSignal* signal, const GpioPin* gpio);
  24. #ifdef __cplusplus
  25. }
  26. #endif