breaker_detection.h 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. #ifndef __BREAKER_DETECTION_H__
  2. #define __BREAKER_DETECTION_H__
  3. #include "stdint.h"
  4. #define BREAKER_IO_BASE (96)
  5. #define BREAKER_IO_1 (BREAKER_IO_BASE+(16)) // 112 may use
  6. #define BREAKER_IO_2 (BREAKER_IO_BASE+(17)) // 113
  7. #define BREAKER_IO_3 (BREAKER_IO_BASE+(18)) // 114 may use
  8. #define BREAKER_IO_4 (BREAKER_IO_BASE+(19)) // 115
  9. #define BREAKER_485_CHN_MAX (6)
  10. enum{
  11. BREAKER_485_CHN1 = 1,
  12. BREAKER_485_CHN2,
  13. BREAKER_485_CHN3,
  14. BREAKER_485_CHN4,
  15. BREAKER_485_CHN5,
  16. BREAKER_485_CHN6,
  17. };
  18. #define BREADER_485_ADDR (64)
  19. #define BREADER_485_ADDR_CHN_REG (2200)
  20. #define BREAKER_BOARD_MAX (8)
  21. #define CHN1_ONLOINE (1)
  22. #define CHN2_ONLOINE (2)
  23. #define CHN3_ONLOINE (4)
  24. #define CHN4_ONLOINE (8)
  25. #define CHN5_ONLOINE (16)
  26. #define CHN6_ONLOINE (32)
  27. typedef struct breaker_scanner_info{
  28. uint16_t ch_status[BREAKER_485_CHN_MAX];
  29. }breaker_scanner_info_t;
  30. typedef struct breaker_scanner{
  31. uint8_t breaker_flag[BREAKER_BOARD_MAX];
  32. breaker_scanner_info_t board[BREAKER_BOARD_MAX]; // breaker addr start by 64
  33. }breaker_scanner_t;
  34. int breaker_init(int gpio);
  35. int breaker_deinit(int gpio);
  36. int breaker_read_status(int gpio);
  37. int breaker_485_get_chns(void* manger,int saddr,unsigned short* cnt);
  38. int breaker_485_get_chn_status(void* manger,int saddr,int channel,unsigned short *statue);
  39. int breaker_485_get_all_chn_status(void* manger,int saddr,unsigned short *status);
  40. void* breaker_scanner_thread(void* arg);
  41. breaker_scanner_t *get_breaker_scanner(void);
  42. #endif