cascade.h 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200
  1. #ifndef __CASCADE_Hx__
  2. #define __CASCADE_Hx__
  3. #include <stdint.h>
  4. #include "common.h"
  5. #include "json_handle.h"
  6. #define CASCADE_MAX 10//32
  7. #define ERR_MAX 5
  8. #define MAX_READ_REGS 1000
  9. #define MAX_WRITE_REGS 1000
  10. #define MAX_READ_REGS2 50000
  11. #define MAX_WRITE_REGS2 50000
  12. #define CASCADE_REG_OFFSET 0x10
  13. #define CASCADE_REG_READ (CASCADE_REG_OFFSET+0x00)
  14. #define CASCADE_REG_WRITE (CASCADE_REG_OFFSET+0x01)
  15. enum {
  16. CASCADE_CMD_OPEN=0,
  17. CASCADE_CMD_CLOSE,
  18. CASCADE_CMD_SAVE,
  19. CASCADE_CMD_SAVE3,
  20. CASCADE_CMD_GET_INFO,
  21. CASCADE_CMD_QUERY_CH,
  22. CASCADE_CMD_QUERY_VOL,
  23. CASCADE_CMD_QUERY_CUR,
  24. CASCADE_CMD_QUERY_PWR,
  25. CASCADE_CMD_QUERY_PWRQ,
  26. CASCADE_CMD_QUERY_HIS,
  27. CASCADE_CMD_QUERY_TOTAL,
  28. CASCADE_CMD_QUERY_TOTAL_PWR,
  29. CASCADE_CMD_MAX,
  30. };
  31. #pragma pack (1)
  32. typedef struct {
  33. int addr;
  34. int err; //err times
  35. }slave_t;
  36. typedef struct {
  37. slave_t *slave;
  38. int cnt;
  39. }dev_list_t;
  40. typedef struct {
  41. uint16_t deveice_type; //设备类型
  42. uint16_t slave_addr; //设备地址
  43. uint32_t voltage; //当前电压
  44. uint32_t current; //当前电流
  45. uint32_t power; //当前功率
  46. uint32_t consumption; //耗电量
  47. uint32_t freq; //频率
  48. uint32_t factor; //功率因素
  49. uint32_t temprature; //温度值
  50. uint32_t humidity; //湿度值
  51. uint32_t warning; //告警
  52. uint16_t power_status; //供电状态
  53. uint16_t sensor_status; //传感器状态
  54. //uint32_t Warinfo;
  55. //uint16_t sersor_type;
  56. }sensor_ori_t;
  57. typedef struct {
  58. int type; //设备类型
  59. int addr;
  60. PowerInfo pwr;
  61. float temprature; //温度值
  62. float humidity; //湿度值
  63. float warning; //告警
  64. int power_status; //供电状态
  65. int sensor_status; //传感器状态
  66. }sensor_data_t;
  67. enum {
  68. TYPE_CMD=0,
  69. TYPE_FILE,
  70. };
  71. enum {
  72. OBJ_OVERALL=0,
  73. OBJ_CHANNEL,
  74. OBJ_HISTORY,
  75. OBJ_SENSOR,
  76. };
  77. typedef struct {
  78. int dlen;
  79. uint8_t *data;
  80. }data_t;
  81. typedef struct {
  82. struct {
  83. uint8_t addr;
  84. uint8_t ch_addr;
  85. uint8_t type;
  86. }board[128];
  87. uint8_t cnt;
  88. }board_info_t;
  89. typedef struct {
  90. uint8_t cnt;
  91. PowerInfo *info;
  92. }power_info_t;
  93. typedef struct {
  94. uint8_t cmd;
  95. uint8_t obj;
  96. uint8_t chId;
  97. char time_s[24]; //start time
  98. char time_e[24]; //end time
  99. }cmd_data_t;
  100. typedef struct {
  101. uint8_t tp;
  102. uint16_t pid;
  103. uint16_t dlen;
  104. uint8_t *data;
  105. }file_data_t;
  106. typedef struct {
  107. int8_t type;
  108. uint8_t data[0];
  109. }mb_pkt_t;
  110. typedef struct {
  111. uint8_t addr;
  112. uint8_t func;
  113. uint16_t reg;
  114. uint16_t regcnt;
  115. uint8_t dlen;
  116. uint8_t *data;
  117. }mb_hdr_t;
  118. #pragma pack ()
  119. ////////slave define////////////////////
  120. typedef struct mmap_modbus{
  121. int offset;
  122. void *addr; //libmodbus source addr
  123. }mmap_modbus_t;
  124. //////////////////////////////////////
  125. typedef struct {
  126. int inited;
  127. pthread_mutex_t mutex; //used for list lock
  128. Modbus_Manger m;
  129. int addr;
  130. slave_t slaves[CASCADE_MAX+1];
  131. modbus_mapping_t *map;
  132. modbus_mapping_t *map2;
  133. cmd_data_t cmd;
  134. int scanAddr;
  135. board_info_t info;
  136. _OverChnPwrAckInfo chInfo;
  137. _OverAllPwrAckInfo allInfo;
  138. power_info_t pwrInfo;
  139. }cascade_handle_t;
  140. extern int cur_dev_addr;
  141. int cascade_init(void);
  142. int cascade_reinit(void);
  143. int cascade_request(cmd_data_t *cmd);
  144. int cascade_get_dlist(dev_list_t *dl);
  145. int cascade_free_dlist(dev_list_t *dl);
  146. int cascade_lock(void);
  147. int cascade_unlock(void);
  148. int cascade_slave_map_init(cascade_handle_t *cas);
  149. void cascade_slave_read(cascade_handle_t *cas, uint32_t addr,uint32_t lenth);
  150. void cascade_slave_write(cascade_handle_t *cas, uint32_t addr, uint16_t val);
  151. #endif