dialdetector.h 981 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. #include <linux/input.h>
  2. #include <sys/epoll.h>
  3. #include <stdint.h>
  4. #include <stdbool.h>
  5. #include <stdlib.h>
  6. #include <stdio.h>
  7. #include "events.h"
  8. #include "timerfd.h"
  9. #include "tapi-port.h"
  10. enum dialdetector_dial_state {
  11. DIALDETECTOR_DIAL_WAIT = 1,
  12. DIALDETECTOR_DIAL_WAIT_TIMEOUT = 2,
  13. };
  14. enum dialdetector_port_state {
  15. DIALDETECTOR_PORT_INACTIVE = 0,
  16. DIALDETECTOR_PORT_ACTIVE = 1,
  17. DIALDETECTOR_PORT_ACTIVE_DOWN = 2,
  18. };
  19. struct dialdetector {
  20. enum dialdetector_dial_state dial_state;
  21. enum dialdetector_port_state port_state;
  22. struct tapi_port *port;
  23. int timer_fd;
  24. int impulse_timer_fd;
  25. struct event_callback timeout_cb;
  26. struct event_callback impulse_cb;
  27. struct tapi_port_event_listener port_listener;
  28. size_t num_digits;
  29. unsigned char digits[20];
  30. unsigned int impulses;
  31. void (*dial_callback)(struct tapi_port *port, size_t num_digits, const unsigned char *digits);
  32. };
  33. struct tapi_port;
  34. struct dialdetector *dialdetector_alloc(struct tapi_port *port);