digital_signal.h 727 B

1234567891011121314151617181920212223242526272829
  1. #pragma once
  2. #include <stdint.h>
  3. #include <stdlib.h>
  4. #include <stdbool.h>
  5. #include <furi_hal_gpio.h>
  6. typedef struct {
  7. bool start_level;
  8. uint32_t edge_cnt;
  9. uint32_t edges_max_cnt;
  10. float* edge_timings;
  11. uint32_t* reload_reg_buff;
  12. } DigitalSignal;
  13. DigitalSignal* digital_signal_alloc(uint32_t max_edges_cnt);
  14. void digital_signal_free(DigitalSignal* signal);
  15. bool digital_signal_append(DigitalSignal* signal_a, DigitalSignal* signal_b);
  16. bool digital_signal_get_start_level(DigitalSignal* signal);
  17. uint32_t digital_signal_get_edges_cnt(DigitalSignal* signal);
  18. float digital_signal_get_edge(DigitalSignal* signal, uint32_t edge_num);
  19. bool digital_signal_send(DigitalSignal* signal, const GpioPin* gpio);