datadef.h 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838
  1. #ifndef __DATADEF_Hx__
  2. #define __DATADEF_Hx__
  3. #include <stdint.h>
  4. #include "log.h"
  5. #define POWER_CH_MAX 12
  6. #define POWER_BOARD_MAX 32
  7. #define POWER_BOARD_TIMEOUT 200
  8. #define POWER_RETRY_TIMES 3
  9. #define POWER_SLAVE_CH_MAX 32
  10. #define POWER_CASCADE_MAX 32
  11. #define BREAKER_BOARD_MAX 8
  12. #define BREAKER_CH_MAX 6
  13. #define BREAKER_BOARD_ADDR_START 64
  14. enum {
  15. RW_READ=0, //读
  16. RW_WRITE //写
  17. };
  18. enum{
  19. A_P = 0,
  20. B_P,
  21. C_P,
  22. };
  23. enum {
  24. TIME_ABS=0, //绝对时间
  25. TIME_REL //相对时间
  26. };
  27. enum {
  28. LOOP_HOUR=0,
  29. LOOP_DAY,
  30. LOOP_WEEK,
  31. LOOP_MONTH,
  32. LOOP_YEAR,
  33. LOOP_USER
  34. };
  35. enum {
  36. PDU_AC_I1O1=0,
  37. PDU_DC_I1O1,
  38. PDU_AC_I3O3=3,
  39. PDU_AC_I3O1,
  40. PDU_AC_I3O1_H,
  41. };
  42. enum {
  43. ALARM_TYPE_POWER=0,
  44. ALARM_TYPE_SENSOR,
  45. ALARM_TYPE_NETWORK,
  46. ALARM_TYPE_OPRATION,
  47. ALARM_TYPE_RUNNING,
  48. ALARM_TYPE_MAX
  49. };
  50. enum {
  51. ALARM_V_UPPER=0,
  52. ALARM_V_LOWER,
  53. ALARM_C_UPPER,
  54. ALARM_W_UPPER,
  55. ALARM_P_UPPER,
  56. ALARM_PH_LOSS,
  57. ALARM_MAX
  58. };
  59. enum {
  60. ALARM_ACT_CLOSE_CH=1,
  61. ALARM_ACT_MESG,
  62. ALARM_ACT_CLOSE_CHALL,
  63. };
  64. enum {
  65. IP_MODE_DHCP=0,
  66. IP_MODE_STATIC,
  67. };
  68. enum {
  69. IP_VER_ERR=0,
  70. IP_VER_V4,
  71. IP_VER_V6,
  72. };
  73. enum {
  74. MODBUS_MASTER=0,
  75. MODBUS_SLAVE,
  76. };
  77. enum {
  78. SNMP_AUTH_NONE=0,
  79. SNMP_AUTH_MD5,
  80. SNMP_AUTH_SHA,
  81. SNMP_AUTH_MAX
  82. };
  83. enum {
  84. SNMP_ENCYPT_NONE=0,
  85. SNMP_ENCYPT_DES,
  86. SNMP_ENCYPT_AES,
  87. SNMP_ENCYPT_MAX
  88. };
  89. enum
  90. {
  91. SENSOR_TYPE_TEMP_HUMI=0, //温湿度传感器
  92. SENSOR_TYPE_SMOKE, //烟雾传感器
  93. SENSOR_TYPE_WATER, //水浸传感器
  94. SENSOR_TYPE_ACCESS, //门禁传感器
  95. SENSOR_TYPE_GAS, //气体传感器
  96. SENSOR_TYPE_AIR_PRESS, //气压传感器
  97. SENSOR_TYPE_AIR_COND, //空条传感器
  98. SENSOR_TYPE_LEAK, //泄漏传感器
  99. SENSOR_TYPE_TEMP, //温度传感器
  100. SENSOR_TYPE_TEMP_DOUBLE, //双温度传感器
  101. SENSOR_TYPE_PRESS, //压力传感器
  102. SENSOR_TYPE_MAX,
  103. };
  104. enum {
  105. SENSOR_TYPE_TEMP_HUMI_RSWSN01PVC=0,
  106. SENSOR_TYPE_TEMP_HUMI_HKSHT301T1H536VRS485,
  107. SENSOR_TYPE_TEMP_HUMI_MAX
  108. };
  109. enum {
  110. SENSOR_TYPE_TEMP_DOUBLE_DL10BM485V24D2=0,
  111. SENSOR_TYPE_TEMP_DOUBLE_MAX
  112. };
  113. enum {
  114. SENSOR_TYPE_TEMP_BTG50H8EL3200=0,
  115. SENSOR_TYPE_TEMP_MAX
  116. };
  117. enum {
  118. SENSOR_TYPE_LEAK_XWDC01A=0,
  119. SENSOR_TYPE_LEAK_MAX
  120. };
  121. enum {
  122. LANG_ID_CHINESE=0,
  123. LANG_ID_ENGLISH,
  124. LANG_ID_RUSSIAN,
  125. LANG_ID_SPANISH,
  126. LANG_ID_PORTYGYESE,
  127. LANG_ID_GERMAN,
  128. LANG_ID_FRENCH,
  129. LANG_ID_ITALIAN,
  130. LANG_ID_JAPANESE,
  131. LANG_ID_MAX
  132. };
  133. ////////////////////////////////////////////////
  134. #pragma pack (1)
  135. typedef struct {
  136. uint16_t year;
  137. uint8_t mon;
  138. uint8_t day;
  139. uint8_t hour;
  140. uint8_t min;
  141. uint8_t sec;
  142. }datetime_t;
  143. typedef struct {
  144. uint8_t mode;
  145. uint8_t addr;
  146. uint32_t baud;
  147. }modbus_data_t;
  148. typedef struct {
  149. char max_char_1;
  150. char max_char_2;
  151. uint8_t flash_index;
  152. char show_data[16];
  153. }net_show_val;
  154. typedef struct {
  155. uint8_t mode; //0:DHCP 1:STATIC
  156. char ipaddr[48]; //
  157. char mask[48]; //
  158. char gateway[48]; //
  159. char dns1[48]; //dns1
  160. char dns2[48]; //dns2
  161. }network_data_t;
  162. typedef struct{
  163. net_show_val n_show;
  164. network_data_t n_bak;
  165. }menu_net_t;
  166. typedef struct {
  167. uint32_t id; //产品ID
  168. char pname[32]; //产品名称
  169. char pnumber[32]; //产品编号
  170. char status[32]; //产品状态
  171. char name[32]; //设备名称
  172. char number[32]; //设备编号
  173. char date[32]; //设备生产日期
  174. char batch[32]; //设备生产批次
  175. uint8_t type; //产品类型
  176. uint8_t count; //级联设备数
  177. uint32_t samp_time; //采集周期 单位ms
  178. uint32_t save_time; //采集周期 单位ms
  179. uint16_t ph_group; //三组相数
  180. uint16_t ch_delay; //通道延时
  181. }product_data_t;
  182. typedef struct {
  183. uint8_t watchdog;
  184. int32_t flip_time;
  185. uint8_t led;
  186. uint8_t beep;
  187. uint16_t rotate;
  188. }misc_data_t;
  189. typedef struct {
  190. char name[256];
  191. char site[256];
  192. char mail[256];
  193. char addr[256];
  194. char tele[32];
  195. }service_data_t;
  196. typedef struct {
  197. uint32_t id[3];
  198. uint32_t chs;
  199. uint32_t time;
  200. char ver[12];
  201. }board_info_t;
  202. typedef struct {
  203. uint8_t type;
  204. uint8_t chs;
  205. }board_key_t;
  206. typedef struct {
  207. char ver[16];
  208. char bldtime[32];
  209. }version_data_t;
  210. typedef struct {
  211. uint8_t lang;
  212. int8_t tzone;
  213. }system_data_t;
  214. typedef struct {
  215. uint32_t th_max_1;
  216. uint32_t th_min_1;
  217. uint32_t th_max_2;
  218. uint32_t th_min_2;
  219. }sensor_th_t;
  220. typedef struct {
  221. system_data_t sys;
  222. version_data_t ver;
  223. modbus_data_t cas;
  224. misc_data_t misc;
  225. product_data_t prod;
  226. service_data_t serv;
  227. network_data_t netwk;
  228. sensor_th_t sensor[3];
  229. }paras_data_t;
  230. typedef struct {
  231. // float voltage; //电压
  232. // float current; //电流
  233. // float power; //功率(视在)
  234. // float freq; //频率
  235. // float factor; //功率因数
  236. // float consump; //耗电量consumption
  237. // float active; //有功功率
  238. // float reactive; //无功功率
  239. // uint8_t ph_out; //三相输出时,用于判断该相是否有输出
  240. //
  241. // uint8_t status; //开关状态
  242. // uint8_t nwire; //零线状态
  243. uint16_t voltage; // 电压 保留1位小数,单位V
  244. uint16_t current; // 电流 保留1位小数,单位A
  245. uint32_t power; // 功率 保留3位小数,单位W,最大值65535W
  246. uint16_t freq; // 频率 保留1位小数,单位Hz
  247. uint8_t factor; // 因素 保留2位小数,单位fa
  248. uint32_t consump; // 耗电量 保留3位小数,单位kWh
  249. // uint8_t status;
  250. // uint8_t nwire;
  251. }power_t;
  252. //designed by liyi
  253. typedef struct
  254. {
  255. uint16_t freq; // 频率 保留1位小数,单位Hz
  256. uint8_t factor; // 因素 保留1位小数,单位fa
  257. uint16_t voltage; // 电压 保留1位小数,单位V
  258. uint16_t current; // 电流 保留1位小数,单位A
  259. uint32_t power; // 功率 保留0位小数,单位W,最大值65535W
  260. uint32_t consumer; // 耗电量 保留2位小数,单位kWh
  261. }n_power_t; // 16字节 相比于power_t 节约内存,20字节
  262. typedef struct{
  263. uint16_t v_upper;
  264. uint16_t v_lower;
  265. uint16_t c_upper;
  266. uint32_t p_upper;
  267. uint32_t w_upper;
  268. }n_thr_t; //相对于thr_t节约内存 17字节
  269. typedef struct{
  270. uint8_t en;
  271. n_thr_t thr[3];
  272. uint8_t para[14];
  273. }total_thr_t; //总阈值
  274. typedef struct{
  275. uint16_t v_upper : 1; //电压超上限
  276. uint16_t v_lower : 1; //电压超下限
  277. uint16_t c_upper : 1; //电流超上限
  278. uint16_t p_upper : 1; //功率超上限
  279. uint16_t w_upper : 1; //耗电量超上限
  280. uint16_t : 3; //预留
  281. uint16_t ph_1_lose : 1; //缺相L1用于输入端
  282. uint16_t ph_2_lose : 1; //缺相L2用于输入端
  283. uint16_t ph_3_lose : 1; //缺相L3用于输入端
  284. uint16_t : 5; //预留
  285. }n_alarm_t; //告警节约5字节
  286. typedef struct{
  287. char name[16]; //通道信息数据;
  288. uint8_t type;
  289. uint8_t addr;
  290. uint8_t ch; //表头id
  291. uint8_t sch; //在控制板上的通道;
  292. uint8_t ph_id; //相信息
  293. uint8_t status;
  294. uint8_t ph_val;
  295. uint8_t open_delay; //开延时 单位s
  296. uint8_t close_delay; //关延时 单位s
  297. }n_info_t; //节约20字节
  298. //designed over by liyi
  299. typedef struct {
  300. uint8_t th_sen_max_en : 1;
  301. uint8_t th_sen_min_en : 1;
  302. uint8_t : 6;
  303. }th_sen_t;
  304. typedef struct {
  305. th_sen_t en;
  306. float max; //threashold max value
  307. float min; //
  308. uint8_t act;
  309. uint8_t para[14]; //14*8=128 channels
  310. }thr_val_t;
  311. typedef struct {
  312. uint16_t v_upper_en:1;
  313. uint16_t v_lower_en:1;
  314. uint16_t c_upper_en:1;
  315. uint16_t p_upper_en:1;
  316. uint16_t w_upper_en:1;
  317. // uint16_t : 11;
  318. }thr_en;
  319. typedef struct {
  320. // thr_val_t v_upper;
  321. // thr_val_t v_lower;
  322. // thr_val_t c_upper; //current
  323. // thr_val_t p_upper;
  324. // thr_val_t w_upper; //power consumption
  325. thr_en en;
  326. uint16_t v_upper;
  327. uint16_t v_lower;
  328. uint16_t c_upper;
  329. uint32_t p_upper;
  330. uint32_t w_upper;
  331. }thr_t;
  332. typedef struct {
  333. // uint8_t v_upper; //电压超上限
  334. // uint8_t v_lower; //电压超下限
  335. // uint8_t c_upper; //电流超上限
  336. // uint8_t p_upper; //功率超上限
  337. // uint8_t w_upper; //耗电量超上限
  338. //
  339. // uint8_t ph_loss; //缺相,0,1,2位分别代表L1,L2,L3相,相应位为1则代表缺相,为0则不缺
  340. uint16_t v_upper : 1; //电压超上限
  341. uint16_t v_lower : 1; //电压超下限
  342. uint16_t c_upper : 1; //电流超上限
  343. uint16_t p_upper : 1; //功率超上限
  344. uint16_t w_upper : 1; //耗电量超上限
  345. uint16_t : 3; //预留
  346. uint16_t ph_1_lose : 1; //缺相L1用于输入端
  347. uint16_t ph_2_lose : 1; //缺相L2用于输入端
  348. uint16_t ph_3_lose : 1; //缺相L3用于输入端
  349. uint16_t : 5; //预留
  350. }alarm_t;
  351. typedef struct {
  352. uint8_t ch;
  353. alarm_t alarm;
  354. uint32_t time;
  355. }alarm_data_t;
  356. typedef struct {
  357. char name[16];
  358. uint8_t type;
  359. uint8_t addr;
  360. uint8_t ch; //该通道在全部板上的所排序号,程序始于0,用户始于1
  361. uint8_t sch; //该通道在其所在的板上的序号,程序始于0,用户始于1
  362. uint8_t ph_id; //phase id, 0:L1相 1:L2相 2:L3相
  363. uint8_t ph_val; //三相输出设置,0:单相 1:三相
  364. uint8_t open_delay;
  365. uint8_t close_delay;
  366. }info_t;
  367. typedef struct {
  368. info_t info;
  369. power_t power[3]; //电力信息
  370. thr_t thr; //阈值
  371. alarm_t alarm;
  372. uint8_t status;
  373. uint8_t nwire;
  374. //uint32_t time;
  375. void *pbrd;
  376. }power_ch_t;
  377. typedef struct {
  378. char name[16];
  379. uint8_t addr;
  380. }breaker_info_t;
  381. typedef struct {
  382. uint8_t id; //breaker id
  383. uint8_t nid; //node id
  384. uint8_t sw;
  385. uint32_t time;
  386. }breaker_samp_t;
  387. typedef struct {
  388. breaker_info_t info;
  389. breaker_samp_t samp;
  390. }breaker_data_t;
  391. typedef struct {
  392. uint8_t cnt;
  393. breaker_data_t *data;
  394. }breaker_all_t;
  395. typedef struct {
  396. int (*get_power)(power_ch_t *pch);
  397. int (*get_alarm)(power_ch_t *pch);
  398. int (*set_ch)(power_ch_t *pch);
  399. int (*set_open_delay)(power_ch_t *pch);
  400. int (*set_close_delay)(power_ch_t *pch);
  401. int (*set_kb_value)(power_ch_t *pch);
  402. int (*set_threshold)(power_ch_t *pch);
  403. int (*reset_consump)(power_ch_t *pch);
  404. int (*detect)(uint8_t addr);
  405. int (*get_info)(uint8_t addr, board_info_t *info);
  406. //int (*get_board)(board_data_t *pbrd);
  407. int (*set_board)(uint8_t addr, uint8_t on);
  408. int (*set_all)(uint8_t on);
  409. }board_fn_t;
  410. typedef struct {
  411. board_fn_t fn;
  412. uint8_t type;
  413. uint8_t addr;
  414. uint8_t chs;
  415. uint8_t sw; //开关监测状态
  416. uint8_t ch0; //board ch start
  417. uint8_t ph_loss;
  418. board_info_t info;
  419. breaker_data_t brk[2];
  420. power_ch_t *pch; //根据实际通道数申请连续内存
  421. }board_data_t;
  422. typedef struct {
  423. float voltage; //电压
  424. float current; //电流
  425. float power; //视在功率
  426. float freq; //频率
  427. float factor; //功率因数
  428. float consump; //耗电量
  429. float active; //有功功率
  430. float reactive; //无功功率
  431. }total_t;
  432. typedef struct {
  433. uint8_t type;
  434. total_t total[3];
  435. }power_total_t;
  436. typedef struct {
  437. uint8_t chs; //所有控制板的总通道数
  438. power_ch_t *pch;
  439. power_total_t ttl;
  440. }power_all_t;
  441. typedef struct {
  442. char name[32];
  443. uint8_t type;
  444. uint8_t addr;
  445. uint8_t num_val;
  446. uint8_t status;
  447. uint8_t check_count;
  448. }sensor_info_t;
  449. typedef struct {
  450. uint8_t max_up : 1;
  451. uint8_t min_down :1;
  452. }sensor_alarm_t;
  453. typedef struct {
  454. thr_val_t thr;
  455. sensor_alarm_t s_alarm;
  456. float value;
  457. }sensor_val_t;
  458. typedef struct {
  459. sensor_info_t info;
  460. sensor_val_t val[2];
  461. //uint32_t time;
  462. }sensor_data_t;
  463. typedef struct {
  464. uint8_t cnt;
  465. uint8_t max;
  466. sensor_data_t *data;
  467. }sensor_all_t;
  468. typedef struct {
  469. uint8_t type;
  470. uint32_t str_id;
  471. uint32_t sep_id;
  472. uint32_t time;
  473. }alarm_msg_t;
  474. typedef struct {
  475. uint32_t brd[POWER_BOARD_MAX];
  476. uint8_t time_mode; //绝对时间/相对时间
  477. uint32_t time_s; //起始时间, 单位: 秒
  478. uint32_t time_inv; //间隔时间, 单位: 秒
  479. int8_t loop_mode; //按日/周/月/年
  480. int32_t loop_times; //循环次数, 负值为无限循环
  481. }schedule_data_t;
  482. typedef struct cascade_saddr{
  483. uint8_t addr;
  484. uint16_t channels;
  485. //board_fn_t *fn;
  486. power_ch_t ch[POWER_SLAVE_CH_MAX];
  487. }slave_info_t;
  488. //////////////////////////////
  489. typedef struct
  490. {
  491. uint8_t userID; //用户ID
  492. char name[32]; //用户名-登录
  493. char password[32]; //用户密码
  494. char nick[32]; //用户名称
  495. uint8_t roleID; //角色ID
  496. uint32_t time; //用户创建时间
  497. }user_data_t;
  498. typedef struct
  499. {
  500. uint8_t roleID; //角色ID
  501. char roleName[32]; //角色名称
  502. uint8_t roleLevel; //角色等级
  503. char auth[32]; //角色权限
  504. int roleSort; //显示顺序
  505. uint32_t time; //创建时间
  506. }role_data_t;
  507. typedef struct {
  508. char alg[12];
  509. char passwd[64];
  510. }crypt_data_t;
  511. typedef struct {
  512. char user[32];
  513. crypt_data_t auth;
  514. crypt_data_t priv;
  515. }crypt_t;
  516. typedef struct {
  517. uint8_t mode;
  518. uint8_t version;
  519. char publics[64];
  520. uint8_t trapmode;
  521. crypt_t crypt;
  522. char nms_ip[64];
  523. }snmp_data_t;
  524. typedef struct
  525. {
  526. int id;
  527. int use;
  528. char account[64];
  529. }mail_recv_t;
  530. typedef struct
  531. {
  532. uint8_t id;
  533. uint8_t mode; //0: open 1: close
  534. char account[64]; //用户账号
  535. char password[24]; //用户密码
  536. char server[64]; //服务器
  537. char port[10]; //端口
  538. char auth[16]; //认证方式
  539. char *ca; //ca cert
  540. }mail_send_t;
  541. typedef struct
  542. {
  543. mail_send_t send;
  544. #define MAIL_RECV_MAX 10
  545. mail_recv_t recv[MAIL_RECV_MAX]; //接收账号列表
  546. }mail_info_t;
  547. enum {
  548. MQTT_PLAT_EMQX=0,
  549. MQTT_PLAT_ALIYUN,
  550. MQTT_PLAT_MAX
  551. };
  552. typedef struct {
  553. uint8_t id; //id
  554. uint8_t plat; //0: emqx 1: aliyun
  555. uint8_t mode; //0: open 1: close
  556. char proto[16]; //mqtt, mqtts, ws, wss
  557. char name[32]; //server name
  558. char server[256]; //server ip
  559. char port[10]; //server port
  560. char cid[64]; //client ID
  561. char user[32]; //
  562. char password[32];
  563. char *cert;
  564. uint8_t status;
  565. }mqtt_server_t;
  566. typedef struct {
  567. #define MQTT_SER_MAX 5
  568. mqtt_server_t ser[MQTT_SER_MAX];
  569. }mqtt_info_t;
  570. typedef struct {
  571. uint8_t type;
  572. char *content;
  573. uint32_t time;
  574. }log_data_t;
  575. ///////////////////////////////////////////////////////////
  576. typedef struct ac_dc_out{
  577. uint32_t voltage;
  578. uint32_t current;
  579. uint32_t power;
  580. uint32_t freq;
  581. uint32_t consumer;
  582. uint32_t factor;
  583. }ac_dc_out_t;
  584. typedef struct ac_dc_in{
  585. uint32_t all_voltage;
  586. uint32_t all_current;
  587. uint32_t all_power;
  588. uint32_t all_consumer;
  589. }ac_dc_in_t;
  590. typedef struct md_ac_dc{
  591. uint16_t dev_cnt; //设备类型和通道数
  592. ac_dc_out_t power[POWER_SLAVE_CH_MAX]; //最大64通道
  593. ac_dc_in_t power_all;
  594. uint16_t temp;
  595. uint16_t humity;
  596. uint16_t switch_stu[POWER_SLAVE_CH_MAX];
  597. uint16_t delay_open[POWER_SLAVE_CH_MAX];
  598. uint16_t delay_close[POWER_SLAVE_CH_MAX];
  599. sensor_info_t md_s[4];
  600. //uint16_t dry_node[4];
  601. }md_ac_dc_t;
  602. typedef struct all_info{
  603. uint32_t voltage;
  604. uint32_t current;
  605. uint32_t power;
  606. uint32_t consumer;
  607. }all_info_t;
  608. typedef struct {
  609. uint32_t power;
  610. uint32_t freq;
  611. uint32_t consumer;
  612. uint16_t fac;
  613. uint32_t out_type;
  614. }all_chn_info_t;
  615. typedef struct chn_phase_info{
  616. uint32_t p_voltage;
  617. uint32_t p_current;
  618. uint32_t p_power;
  619. uint32_t p_consumer;
  620. uint32_t p_status;
  621. }chn_phase_info_t;
  622. typedef struct md_3_ac{
  623. uint16_t dev_cnt; //设备类型和通道数
  624. all_info_t ac_3_all_pw[3];
  625. all_chn_info_t ac_3_all_chn[POWER_SLAVE_CH_MAX];
  626. chn_phase_info_t ac_3_chn_p[POWER_SLAVE_CH_MAX][3];
  627. uint16_t temp;
  628. uint16_t humity;
  629. uint16_t switch_chn[POWER_SLAVE_CH_MAX];
  630. uint16_t delay_open[POWER_SLAVE_CH_MAX];
  631. uint16_t delay_close[POWER_SLAVE_CH_MAX];
  632. sensor_info_t md_s[4];
  633. //uint16_t dry_node[4];
  634. }md_3_ac_t;
  635. typedef struct cascade_data{
  636. uint8_t chs; //从机读取通道数
  637. power_ch_t *pch;
  638. }cascade_data_t;
  639. ///////////////////////////////////////////////////////////
  640. typedef struct {
  641. uint8_t flag;
  642. }sys_stat_t;
  643. typedef struct {
  644. uint8_t flag;
  645. }mesg_data_t;
  646. typedef struct {
  647. uint8_t cnt;
  648. uint8_t addr[POWER_CASCADE_MAX];
  649. }slave_list_t;
  650. enum {
  651. PKT_TYPE_ACK=0,
  652. PKT_TYPE_PARAS,
  653. PKT_TYPE_POWER_CH, //power_ch_t
  654. PKT_TYPE_POWER_TOTAL, //power_total_t
  655. PKT_TYPE_POWER_RESET,
  656. PKT_TYPE_CH_ALL,
  657. PKT_TYPE_SCAN,
  658. PKT_TYPE_FACTORY,
  659. PKT_TYPE_ALARM,
  660. PKT_TYPE_SENSOR,
  661. PKT_TYPE_BREAKER,
  662. PKT_TYPE_STAT,
  663. PKT_TYPE_MESG,
  664. PKT_TYPE_FILE,
  665. PKT_TYPE_SLAVE_LIST, //slave addr list
  666. PKT_TYPE_MAX
  667. };
  668. enum {
  669. SUB_TYPE_POWER_SWITCH=0, //set relay switch
  670. SUB_TYPE_POWER_ALARM,
  671. SUB_TYPE_POWER_THRESHOLD,
  672. SUB_TYPE_POWER_OPEN_DELAY,
  673. SUB_TYPE_POWER_CLOSE_DELAY,
  674. SUB_TYPE_PARAS_SYS,
  675. SUB_TYPE_PARAS_MODBUS,
  676. SUB_TYPE_PARAS_MISC,
  677. SUB_TYPE_PARAS_PROD,
  678. SUB_TYPE_PARAS_SERV,
  679. SUB_TYPE_PARAS_NETWORK,
  680. SUB_TYPE_MAX
  681. };
  682. #define PKT_MAGIC 0xdead
  683. typedef struct {
  684. uint16_t magic;
  685. uint8_t addr;
  686. uint8_t type;
  687. uint8_t subtype;
  688. uint8_t nack;
  689. uint32_t flag;
  690. uint32_t dlen;
  691. uint8_t data[0];
  692. }pkt_hdr_t;
  693. #pragma pack ()
  694. #define CONCAT(a,b) a b
  695. #define SD_DEV "sd"
  696. #define NOR_DEV "nor"
  697. #define ROOT_PATH "/"
  698. #define SD_PATH CONCAT(ROOT_PATH,SD_DEV)
  699. #define NOR_PATH CONCAT(ROOT_PATH,NOR_DEV)
  700. #define DB_NAME "smartPDU"
  701. #define INI_NAME "smartPDU.ini"
  702. #define INF_NAME "PDUInfo.txt"
  703. #if 1
  704. #define DB_PATH SD_PATH
  705. #define CFG_PATH NOR_PATH
  706. #else
  707. #define DB_PATH ROOT_PATH
  708. #define CFG_PATH ROOT_PATH
  709. #endif
  710. #endif