datadef.h 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089
  1. #ifndef __DATADEF_Hx__
  2. #define __DATADEF_Hx__
  3. #include <stdint.h>
  4. //#include "log.h"
  5. #include "semphr.h"
  6. #define VERSION_SMART "V2.0.0"
  7. #define POWER_CH_MAX 12
  8. #define POWER_BOARD_MAX 32
  9. #define POWER_BOARD_TIMEOUT 50
  10. #define POWER_RETRY_TIMES 3
  11. #define POWER_SLAVE_CH_MAX 32
  12. #define POWER_CASCADE_MAX 32
  13. #define BREAKER_BOARD_MAX 8
  14. #define BREAKER_CH_MAX 6
  15. #define BREAKER_BOARD_ADDR_START 64
  16. enum {
  17. RW_READ=0, //读
  18. RW_WRITE //写
  19. };
  20. enum{
  21. A_P = 0,
  22. B_P,
  23. C_P,
  24. };
  25. enum {
  26. TIME_ABS=0, //绝对时间
  27. TIME_REL //相对时间
  28. };
  29. enum {
  30. LOOP_HOUR=0,
  31. LOOP_DAY,
  32. LOOP_WEEK,
  33. LOOP_MONTH,
  34. LOOP_YEAR,
  35. LOOP_USER
  36. };
  37. enum {
  38. PDU_AC_I1O1=0, //单相交流
  39. PDU_DC_I1O1, //直流
  40. PDU_AC_I3O3=3, //三相进三相出
  41. PDU_AC_I3O1, //三相进单相出
  42. PDU_AC_I3O1_H, //三相进单相出
  43. PDU_AC_I3O2, //三相进两相出
  44. };
  45. enum {
  46. ALARM_TYPE_POWER=0,
  47. ALARM_TYPE_SENSOR,
  48. ALARM_TYPE_NETWORK,
  49. ALARM_TYPE_OPRATION,
  50. ALARM_TYPE_RUNNING,
  51. ALARM_TYPE_MAX
  52. };
  53. enum {
  54. ALARM_V_UPPER=0,
  55. ALARM_V_LOWER,
  56. ALARM_C_UPPER,
  57. ALARM_W_UPPER,
  58. ALARM_P_UPPER,
  59. ALARM_PH_LOSS,
  60. ALARM_MAX
  61. };
  62. enum {
  63. ALARM_ACT_CLOSE_CH=1,
  64. ALARM_ACT_MESG,
  65. ALARM_ACT_CLOSE_CHALL,
  66. };
  67. enum {
  68. IP_MODE_DHCP=0,
  69. IP_MODE_STATIC,
  70. };
  71. enum {
  72. IP_VER_ERR=0,
  73. IP_VER_V4,
  74. IP_VER_V6,
  75. };
  76. enum {
  77. MODBUS_MASTER=0,
  78. MODBUS_SLAVE,
  79. };
  80. enum {
  81. SNMP_AUTH_NONE=0,
  82. SNMP_AUTH_MD5,
  83. SNMP_AUTH_SHA,
  84. SNMP_AUTH_MAX
  85. };
  86. enum {
  87. SNMP_ENCYPT_NONE=0,
  88. SNMP_ENCYPT_DES,
  89. SNMP_ENCYPT_AES,
  90. SNMP_ENCYPT_MAX
  91. };
  92. enum
  93. {
  94. SENSOR_TYPE_TEMP_HUMI=0, //温湿度传感器
  95. SENSOR_TYPE_SMOKE, //烟雾传感器
  96. SENSOR_TYPE_WATER, //水浸传感器
  97. SENSOR_TYPE_ACCESS, //门禁传感器
  98. SENSOR_TYPE_GAS, //气体传感器
  99. SENSOR_TYPE_AIR_PRESS, //气压传感器
  100. SENSOR_TYPE_AIR_COND, //空条传感器
  101. SENSOR_TYPE_LEAK, //泄漏传感器
  102. SENSOR_TYPE_TEMP, //温度传感器
  103. SENSOR_TYPE_TEMP_DOUBLE, //双温度传感器
  104. SENSOR_TYPE_PRESS, //压力传感器
  105. SENSOR_TYPE_MAX,
  106. };
  107. enum {
  108. SENSOR_TYPE_TEMP_HUMI_RSWSN01PVC=0,
  109. SENSOR_TYPE_TEMP_HUMI_HKSHT301T1H536VRS485,
  110. SENSOR_TYPE_TEMP_HUMI_MAX
  111. };
  112. enum {
  113. SENSOR_TYPE_TEMP_DOUBLE_DL10BM485V24D2=0,
  114. SENSOR_TYPE_TEMP_DOUBLE_MAX
  115. };
  116. enum {
  117. SENSOR_TYPE_TEMP_BTG50H8EL3200=0,
  118. SENSOR_TYPE_TEMP_MAX
  119. };
  120. enum {
  121. SENSOR_TYPE_LEAK_XWDC01A=0,
  122. SENSOR_TYPE_LEAK_MAX
  123. };
  124. enum {
  125. LANG_ID_CHINESE=0,
  126. LANG_ID_ENGLISH,
  127. LANG_ID_RUSSIAN,
  128. LANG_ID_SPANISH,
  129. LANG_ID_PORTYGYESE,
  130. LANG_ID_GERMAN,
  131. LANG_ID_FRENCH,
  132. LANG_ID_ITALIAN,
  133. LANG_ID_JAPANESE,
  134. LANG_ID_MAX
  135. };
  136. ////////////////////////////////////////////////
  137. #pragma pack (1)
  138. typedef struct {
  139. uint16_t year;
  140. uint8_t mon;
  141. uint8_t day;
  142. uint8_t hour;
  143. uint8_t min;
  144. uint8_t sec;
  145. }datetime_t;
  146. typedef struct {
  147. uint8_t mode;
  148. uint8_t addr;
  149. uint32_t baud;
  150. }modbus_data_t;
  151. typedef struct {
  152. char max_char_1;
  153. char max_char_2;
  154. uint8_t flash_index;
  155. char show_data[16];
  156. }net_show_val;
  157. typedef struct {
  158. uint8_t mode; //0:DHCP 1:STATIC
  159. char ipaddr[48]; //
  160. char mask[48]; //
  161. char gateway[48]; //
  162. char dns1[48]; //dns1
  163. char dns2[48]; //dns2
  164. }network_data_t;
  165. typedef struct{
  166. net_show_val n_show;
  167. network_data_t n_bak;
  168. }menu_net_t;
  169. typedef struct {
  170. char max_char_1;
  171. char max_char_2;
  172. uint8_t flash_index;
  173. char show_data[16];
  174. }base_show_val;
  175. typedef struct{
  176. int zone;
  177. uint8_t lang;
  178. uint16_t route;
  179. char date[12];
  180. char time[12];
  181. }base_set_t;
  182. typedef struct {
  183. base_show_val n_show;
  184. base_set_t n_bak;
  185. }menu_base_t;
  186. typedef struct {
  187. uint32_t id; //产品ID
  188. char pname[32]; //产品名称
  189. char pnumber[32]; //产品编号
  190. char status[32]; //产品状态
  191. char name[32]; //设备名称
  192. char number[32]; //设备编号
  193. char date[32]; //设备生产日期
  194. char batch[32]; //设备生产批次
  195. uint8_t type; //产品类型
  196. uint8_t count; //级联设备数
  197. uint32_t samp_time; //采集周期 单位ms
  198. uint32_t save_time; //采集周期 单位ms
  199. uint16_t ph_group; //三组相数
  200. uint16_t ch_delay; //通道延时
  201. }product_data_t;
  202. typedef struct {
  203. char phase_seq[36];
  204. }phase_seq_3_1_t;
  205. typedef struct {
  206. char phase_left[36];
  207. char phase_right[36];
  208. }phase_seq_3_2_t;
  209. typedef struct {
  210. uint8_t watchdog;
  211. int32_t flip_time;
  212. uint8_t led;
  213. uint8_t beep;
  214. uint16_t rotate;
  215. uint8_t lang;
  216. }misc_data_t;
  217. typedef struct {
  218. char name[256];
  219. char site[256];
  220. char mail[256];
  221. char addr[256];
  222. char tele[32];
  223. }service_data_t;
  224. typedef struct {
  225. uint32_t id[3];
  226. uint32_t chs;
  227. uint32_t time;
  228. char ver[12];
  229. }board_info_t;
  230. typedef struct {
  231. uint8_t type;
  232. uint8_t chs;
  233. }board_key_t;
  234. typedef struct {
  235. char ver[16];
  236. char bldtime[32];
  237. }version_data_t;
  238. typedef struct {
  239. uint8_t lang;
  240. int8_t tzone;
  241. uint16_t route;
  242. char ver[16];
  243. char sys_time[32];
  244. }system_data_t;
  245. typedef struct {
  246. int32_t th_max_1;
  247. int32_t th_min_1;
  248. int32_t th_max_2;
  249. int32_t th_min_2;
  250. }sensor_th_t;
  251. typedef struct {
  252. char alg[12];
  253. char passwd[32];
  254. }crypt_data_t;
  255. typedef struct {
  256. char user[32];
  257. crypt_data_t auth;
  258. crypt_data_t priv;
  259. }crypt_t;
  260. typedef struct {
  261. uint8_t mode;
  262. uint8_t version;
  263. char publics[10];
  264. char privates[10];
  265. uint8_t trapmode;
  266. //crypt_t crypt;
  267. char nms_ip[32];
  268. }snmp_data_t;
  269. typedef struct{
  270. sensor_th_t sens[3];
  271. }sensor_config_t;
  272. typedef struct{
  273. int role_id;
  274. char user_name[32];
  275. char password_md5[33];
  276. char date[16];
  277. char time[16];
  278. }user_config_t;
  279. typedef struct{
  280. uint32_t user_count;
  281. user_config_t config[10];
  282. }user_data_t;
  283. typedef struct {
  284. system_data_t sys;
  285. version_data_t ver;
  286. modbus_data_t cas;
  287. misc_data_t misc;
  288. product_data_t prod;
  289. service_data_t serv;
  290. network_data_t netwk;
  291. sensor_config_t sensor;
  292. snmp_data_t snmp;
  293. phase_seq_3_1_t phase_seq;
  294. phase_seq_3_2_t phase_seq_2;
  295. user_data_t user;
  296. }paras_data_t;
  297. typedef struct {
  298. float voltage; //电压
  299. float current; //电流
  300. float power; //功率(视在)
  301. float reactive_power; //无功功率
  302. float app_power; //视在
  303. float freq; //频率
  304. float factor; //功率因数
  305. float consump; //耗电量consumption
  306. }power_t;
  307. //designed over by liyi
  308. typedef struct {
  309. uint8_t th_sen_max_en : 1;
  310. uint8_t th_sen_min_en : 1;
  311. uint8_t : 6;
  312. }th_sen_t;
  313. typedef struct {
  314. th_sen_t en;
  315. float max; //threashold max value
  316. float min; //
  317. uint8_t act;
  318. uint8_t para[14]; //14*8=128 channels
  319. }thr_val_t;
  320. typedef struct {
  321. uint16_t v_upper_en:1;
  322. uint16_t v_lower_en:1;
  323. uint16_t c_upper_en:1;
  324. uint16_t p_upper_en:1;
  325. uint16_t w_upper_en:1;
  326. uint16_t : 11;
  327. }thr_en;
  328. typedef struct {
  329. // thr_val_t v_upper;
  330. // thr_val_t v_lower;
  331. // thr_val_t c_upper; //current
  332. // thr_val_t p_upper;
  333. // thr_val_t w_upper; //power consumption
  334. thr_en en;
  335. float v_upper;
  336. float v_lower;
  337. float c_upper;
  338. float p_upper;
  339. float w_upper;
  340. }thr_t;
  341. typedef struct
  342. {
  343. uint8_t v_upper : 1;
  344. uint8_t v_lower : 1;
  345. uint8_t c_upper : 1;
  346. uint8_t p_upper : 1;
  347. uint8_t w_upper : 1;
  348. uint8_t : 3; //预留
  349. }wanning_type_t;
  350. typedef struct
  351. {
  352. uint32_t l1_v_upper : 1;
  353. uint32_t l1_v_lower : 1;
  354. uint32_t l1_c_upper : 1;
  355. uint32_t l1_p_upper : 1;
  356. uint32_t l1_w_upper : 1;
  357. uint32_t : 3; //预留
  358. uint32_t l2_v_upper : 1;
  359. uint32_t l2_v_lower : 1;
  360. uint32_t l2_c_upper : 1;
  361. uint32_t l2_p_upper : 1;
  362. uint32_t l2_w_upper : 1;
  363. uint32_t : 3; //预留
  364. uint32_t l3_v_upper : 1;
  365. uint32_t l3_v_lower : 1;
  366. uint32_t l3_c_upper : 1;
  367. uint32_t l3_p_upper : 1;
  368. uint32_t l3_w_upper : 1;
  369. uint32_t : 3; //预留
  370. uint32_t ph_1_lose : 1; //缺相L1用于输入端
  371. uint32_t ph_2_lose : 1; //缺相L2用于输入端
  372. uint32_t ph_3_lose : 1; //缺相L3用于输入端
  373. uint32_t : 5; //预留
  374. }alarm_all_t;
  375. typedef struct{
  376. uint8_t l_v_upper : 1;
  377. uint8_t l_v_lower : 1;
  378. uint8_t l_c_upper : 1;
  379. uint8_t l_p_upper : 1;
  380. uint8_t l_w_upper : 1;
  381. uint8_t : 3; //预留
  382. }alar_t;
  383. typedef union{
  384. alar_t ala[4];
  385. alarm_all_t ala_all;
  386. }p_alar_t;
  387. typedef struct {
  388. uint8_t ch;
  389. alarm_all_t alarm;
  390. uint32_t time;
  391. }alarm_data_t;
  392. typedef struct {
  393. char name[16];
  394. uint8_t type;
  395. uint8_t addr;
  396. uint8_t ch; //该通道在全部板上的所排序号,程序始于0,用户始于1
  397. uint8_t sch; //该通道在其所在的板上的序号,程序始于0,用户始于1
  398. uint8_t ph_id; //phase id, 0:L1相 1:L2相 2:L3相
  399. uint8_t ph_val; //三相输出设置,0:单相 1:三相
  400. uint8_t open_delay;
  401. uint8_t close_delay;
  402. }info_t;
  403. typedef struct {
  404. info_t info;
  405. power_t power[3]; //电力信息
  406. thr_t thr; //阈值
  407. alarm_all_t alarm;
  408. uint8_t status;
  409. uint8_t nwire;
  410. //uint32_t time;
  411. void *pbrd;
  412. }power_ch_t;
  413. typedef struct {
  414. char name[16];
  415. uint8_t addr;
  416. }breaker_info_t;
  417. typedef struct {
  418. uint8_t id; //breaker id
  419. uint8_t nid; //node id
  420. uint8_t sw;
  421. uint32_t time;
  422. }breaker_samp_t;
  423. typedef struct {
  424. breaker_info_t info;
  425. breaker_samp_t samp;
  426. }breaker_data_t;
  427. typedef struct {
  428. uint8_t cnt;
  429. breaker_data_t *data;
  430. }breaker_all_t;
  431. typedef struct {
  432. uint8_t chn;
  433. uint8_t status;
  434. }web_chn_ctrl_t;
  435. typedef struct {
  436. uint8_t status;
  437. }web_all_ctrl_t;
  438. typedef struct{
  439. uint8_t chn;
  440. uint8_t open;
  441. uint8_t close;
  442. }web_delay_t;
  443. typedef struct{
  444. uint8_t chn;
  445. thr_t thr;
  446. }web_thr_t;
  447. typedef struct
  448. {
  449. thr_t thr;
  450. }web_batch_thr_t;
  451. typedef struct
  452. {
  453. uint8_t chn;
  454. }web_clear_consumer_t;
  455. typedef network_data_t web_net_t;
  456. typedef web_thr_t batch_thr_t;
  457. typedef struct
  458. {
  459. uint8_t mode;
  460. uint8_t addr;
  461. uint32_t baud;
  462. }web_rs485_t;
  463. typedef snmp_data_t web_snmp_t;
  464. typedef struct
  465. {
  466. int8_t zone;
  467. uint8_t date_time[32];
  468. }web_device_t;
  469. typedef struct
  470. {
  471. float v_max;
  472. float v_min;
  473. }web_sensor_config_t;
  474. typedef struct{
  475. char user[32];
  476. char password[32];
  477. }web_login_t;
  478. typedef struct {
  479. uint8_t permition;
  480. char user[32];
  481. char password[32];
  482. }web_user_add_t;
  483. typedef struct
  484. {
  485. char user[32];
  486. }web_user_delete_t;
  487. typedef struct
  488. {
  489. uint8_t role_id;
  490. char user[32];
  491. char old_password[32];
  492. char new_password[32];
  493. }web_user_update_t;
  494. typedef struct{
  495. char file_name[32];
  496. uint32_t file_size;
  497. uint32_t file_crc;
  498. }web_import_start_t;
  499. typedef struct{
  500. uint32_t file_crc;
  501. uint32_t chunk;
  502. uint32_t lenth;
  503. uint8_t data[4096];
  504. }web_import_ing_t;
  505. typedef union
  506. {
  507. web_chn_ctrl_t cnt_ctrl;
  508. web_all_ctrl_t all_ctrl;
  509. web_delay_t delay;
  510. web_thr_t thr;
  511. web_batch_thr_t b_thr;
  512. web_clear_consumer_t clear;
  513. web_net_t net;
  514. web_rs485_t rs485;
  515. web_device_t device;
  516. web_sensor_config_t sensor;
  517. web_snmp_t snmp;
  518. batch_thr_t batch;
  519. web_login_t login;
  520. web_user_add_t user_add;
  521. web_user_delete_t user_delete;
  522. web_user_update_t user_update;
  523. web_import_start_t import_start;
  524. web_import_ing_t import_ing;
  525. }wed_set_t;
  526. typedef struct {
  527. int roul_id;
  528. char user[32];
  529. char date[16];
  530. char time[16];
  531. }user_t;
  532. typedef struct{
  533. uint32_t count;
  534. user_t users[10];
  535. }wb_send_user_t;
  536. typedef struct {
  537. char name[32];
  538. uint8_t type;
  539. uint8_t addr;
  540. uint8_t num_val;
  541. uint8_t status;
  542. uint8_t check_count;
  543. }sensor_info_t;
  544. typedef struct {
  545. uint8_t max_up : 1;
  546. uint8_t min_down :1;
  547. }sensor_alarm_t;
  548. typedef struct {
  549. thr_val_t thr;
  550. sensor_alarm_t s_alarm;
  551. float value;
  552. }sensor_val_t;
  553. typedef struct {
  554. sensor_info_t info;
  555. sensor_val_t val[2];
  556. //uint32_t time;
  557. }sensor_data_t;
  558. typedef struct {
  559. uint8_t cnt;
  560. uint8_t max;
  561. sensor_data_t *data;
  562. }sensor_all_t;
  563. typedef struct{
  564. char name[32];
  565. uint8_t status;
  566. uint8_t v_max_wrn;
  567. uint8_t v_min_wrn;
  568. float value;
  569. float v_max;
  570. float v_min;
  571. }web_sensor_info_t;
  572. typedef struct {
  573. uint8_t type;
  574. uint32_t str_id;
  575. uint32_t sep_id;
  576. uint32_t time;
  577. }alarm_msg_t;
  578. typedef struct {
  579. uint32_t brd[POWER_BOARD_MAX];
  580. uint8_t time_mode; //绝对时间/相对时间
  581. uint32_t time_s; //起始时间, 单位: 秒
  582. uint32_t time_inv; //间隔时间, 单位: 秒
  583. int8_t loop_mode; //按日/周/月/年
  584. int32_t loop_times; //循环次数, 负值为无限循环
  585. }schedule_data_t;
  586. //////////////////////////////
  587. //typedef struct
  588. //{
  589. // uint8_t userID; //用户ID
  590. // char name[32]; //用户名-登录
  591. // char password[32]; //用户密码
  592. // char nick[32]; //用户名称
  593. // uint8_t roleID; //角色ID
  594. // uint32_t time; //用户创建时间
  595. //}user_data_t;
  596. typedef struct
  597. {
  598. uint8_t roleID; //角色ID
  599. char roleName[32]; //角色名称
  600. uint8_t roleLevel; //角色等级
  601. char auth[32]; //角色权限
  602. int roleSort; //显示顺序
  603. uint32_t time; //创建时间
  604. }role_data_t;
  605. typedef struct
  606. {
  607. int id;
  608. int use;
  609. char account[64];
  610. }mail_recv_t;
  611. typedef struct
  612. {
  613. uint8_t id;
  614. uint8_t mode; //0: open 1: close
  615. char account[64]; //用户账号
  616. char password[24]; //用户密码
  617. char server[64]; //服务器
  618. char port[10]; //端口
  619. char auth[16]; //认证方式
  620. char *ca; //ca cert
  621. }mail_send_t;
  622. typedef struct
  623. {
  624. mail_send_t send;
  625. #define MAIL_RECV_MAX 10
  626. mail_recv_t recv[MAIL_RECV_MAX]; //接收账号列表
  627. }mail_info_t;
  628. enum {
  629. MQTT_PLAT_EMQX=0,
  630. MQTT_PLAT_ALIYUN,
  631. MQTT_PLAT_MAX
  632. };
  633. typedef struct {
  634. uint8_t id; //id
  635. uint8_t plat; //0: emqx 1: aliyun
  636. uint8_t mode; //0: open 1: close
  637. char proto[16]; //mqtt, mqtts, ws, wss
  638. char name[32]; //server name
  639. char server[256]; //server ip
  640. char port[10]; //server port
  641. char cid[64]; //client ID
  642. char user[32]; //
  643. char password[32];
  644. char *cert;
  645. uint8_t status;
  646. }mqtt_server_t;
  647. typedef struct {
  648. #define MQTT_SER_MAX 5
  649. mqtt_server_t ser[MQTT_SER_MAX];
  650. }mqtt_info_t;
  651. typedef struct {
  652. uint8_t type;
  653. char *content;
  654. uint32_t time;
  655. }log_data_t;
  656. ///////////////////////////////////////////////////////////
  657. typedef struct ac_dc_out{
  658. uint32_t voltage;
  659. uint32_t current;
  660. uint32_t power;
  661. uint32_t freq;
  662. uint32_t consumer;
  663. uint32_t factor;
  664. }ac_dc_out_t;
  665. typedef struct ac_dc_in{
  666. uint32_t all_voltage;
  667. uint32_t all_current;
  668. uint32_t all_power;
  669. uint32_t all_consumer;
  670. }ac_dc_in_t;
  671. typedef uint32_t sensor_t;
  672. typedef struct cascade_sensor{
  673. sensor_t s_1;
  674. sensor_t s_2;
  675. }cascade_sensor_t;
  676. typedef struct md_ac_dc{
  677. uint16_t dev_cnt; //设备类型和通道数
  678. ac_dc_out_t power[POWER_SLAVE_CH_MAX]; //最大64通道
  679. ac_dc_in_t power_all;
  680. uint16_t temp;
  681. uint16_t humity;
  682. uint16_t switch_stu[POWER_SLAVE_CH_MAX];
  683. uint16_t delay_open[POWER_SLAVE_CH_MAX];
  684. uint16_t delay_close[POWER_SLAVE_CH_MAX];
  685. cascade_sensor_t md_s[4];
  686. //sensor_info_t md_s[4];
  687. //uint16_t dry_node[4];
  688. }md_ac_dc_t;
  689. typedef struct all_info{
  690. uint32_t voltage;
  691. uint32_t current;
  692. uint32_t power;
  693. uint32_t consumer;
  694. }all_info_t;
  695. typedef struct {
  696. uint32_t power;
  697. uint32_t freq;
  698. uint32_t consumer;
  699. uint16_t fac;
  700. uint32_t out_type;
  701. }all_chn_info_t;
  702. typedef struct chn_phase_info{
  703. uint32_t p_voltage;
  704. uint32_t p_current;
  705. uint32_t p_power;
  706. uint32_t p_consumer;
  707. uint32_t p_status;
  708. }chn_phase_info_t;
  709. typedef struct md_3_ac{
  710. uint16_t dev_cnt; //设备类型和通道数
  711. all_info_t ac_3_all_pw[3];
  712. all_chn_info_t ac_3_all_chn[POWER_SLAVE_CH_MAX];
  713. chn_phase_info_t ac_3_chn_p[POWER_SLAVE_CH_MAX][3];
  714. uint16_t temp;
  715. uint16_t humity;
  716. uint16_t switch_chn[POWER_SLAVE_CH_MAX];
  717. uint16_t delay_open[POWER_SLAVE_CH_MAX];
  718. uint16_t delay_close[POWER_SLAVE_CH_MAX];
  719. cascade_sensor_t md_s[4];
  720. //sensor_info_t md_s[4];
  721. //uint16_t dry_node[4];
  722. }md_3_ac_t;
  723. typedef struct cascade_data{
  724. uint8_t chs; //从机读取通道数
  725. power_ch_t *pch;
  726. }cascade_data_t;
  727. ///////////////////////////////////////////////////////////
  728. typedef struct {
  729. uint8_t flag;
  730. }sys_stat_t;
  731. typedef struct {
  732. uint8_t flag;
  733. }mesg_data_t;
  734. typedef struct {
  735. uint8_t cnt;
  736. uint8_t addr[POWER_CASCADE_MAX];
  737. }slave_list_t;
  738. enum{
  739. NEW_PKT_TYPE_DEVICE_INFO, //channels,power type,date,version,hard,version
  740. NEW_PKT_TYPE_ELE_INFO, //name_16 status board_addr board_chn delay_open delay_close phase_l phase_r max 32
  741. NEW_PKT_TYPE_SENSOR,
  742. NEW_PKT_TYPE_NETWORK,
  743. NEW_PKT_TYPE_RS485,
  744. NEW_PKT_TYPE_SNMP,
  745. NEW_PKT_TYPE_WANNING,
  746. NEW_PKT_TYPE_NTP,
  747. MEW_PKT_TYPE_LOGIN,
  748. NEW_PKT_TYPE_USER,
  749. NEW_PKT_TYPE_IMPORT_FILE,
  750. NEW_PKT_TYPE_IMPORT_FIRM,
  751. NEW_PKT_TYPE_IMPORT_B_FIRM,
  752. };
  753. enum{
  754. NEW_SUB_PKT_TYPE_IMPORT_FILE_SATRT,
  755. NEW_SUB_PKT_TYPE_IMPORT_FILE_ING,
  756. NEW_SUB_PKT_TYPE_IMPORT_FILE_END,
  757. };
  758. enum{
  759. NEW_SUB_PKT_TYPE_IMPORT_FIRM_START,
  760. NEW_SUB_PKT_TYPE_IMPORT_FIRM_ING,
  761. NEW_SUB_PKT_TYPE_IMPORT_FIRM_END,
  762. };
  763. enum{
  764. NEW_SUB_PKT_TYPE_ELE_DATA_L1,
  765. NEW_SUB_PKT_TYPE_ELE_DATA_L2,
  766. NEW_SUB_PKT_TYPE_ELE_DATA_L3,
  767. NEW_SUB_PKT_TYPE_ELE_DATA_INFO,
  768. NEW_SUB_PKT_TYPE_ELE_DATA_ALL,
  769. NEW_SUB_PKT_TYPE_ELE_DATA_THR,
  770. NEW_SUB_PKT_TYPE_ELE_DELAY,
  771. NEW_SUB_PKT_TYPE_ELE_CLEAR_CONSUMER,
  772. NEW_SUB_PKT_TYPE_ELE_CTRL,
  773. NEW_SUB_PKT_TYPE_ELE_ALL_CTRL,
  774. NEW_SUB_PKT_TYPE_ELE_BATCH,
  775. };
  776. enum{
  777. NEW_SUB_PKT_TYPE_HUMI = 0,
  778. NEW_SUB_PKT_TYPE_TEMP,
  779. NEW_SUB_PKT_TYPE_SMOKE,
  780. NEW_SUB_PKT_TYPE_CO2,
  781. };
  782. enum{
  783. NEW_SUB_PKT_TYPE_WANNING_CLEAN = 0,
  784. NEW_SUB_PKT_TYPE_WANNING_SOUND_LIGHT_CLEAN,
  785. };
  786. enum{
  787. NEW_SUB_PKT_TYPE_USER_INFO = 0,
  788. NEW_SUB_PKT_TYPE_USER_ADD,
  789. NEW_SUB_PKT_TYPE_USER_UPDATE,
  790. NEW_SUB_PKT_TYPE_USER_DELETE,
  791. };
  792. typedef struct{
  793. uint8_t chs;
  794. uint8_t power_type;
  795. int8_t zone;
  796. uint8_t board_cnt;
  797. char soft_version[32];
  798. char hard_version[32];
  799. char date[16];
  800. char time[16];
  801. }web_device_info_t;
  802. typedef struct{
  803. #define RES_NOERR 0
  804. #define RES_ERR_CHUNK_CRC 1
  805. #define RES_ERR_FILE_CRC 2
  806. #define RES_ERR_FILE_OPEN 3
  807. #define RES_ERR_CHUNK 4
  808. uint8_t flag_error;
  809. uint16_t chunck;
  810. }web_file_respone_t;
  811. typedef alarm_all_t web_channel_wanning_t;
  812. enum {
  813. SUB_TYPE_POWER_SWITCH=0, //set relay switch
  814. SUB_TYPE_POWER_ALARM,
  815. SUB_TYPE_POWER_THRESHOLD,
  816. SUB_TYPE_POWER_OPEN_DELAY,
  817. SUB_TYPE_POWER_CLOSE_DELAY,
  818. SUB_TYPE_PARAS_SYS,
  819. SUB_TYPE_PARAS_MODBUS,
  820. SUB_TYPE_PARAS_MISC,
  821. SUB_TYPE_PARAS_PROD,
  822. SUB_TYPE_PARAS_SERV,
  823. SUB_TYPE_PARAS_NETWORK,
  824. SUB_TYPE_PARAS_SNMP,
  825. SUB_TYPE_PARAS_NTP,
  826. SUB_TYPE_POWER_CONSUMER_CLEAR,
  827. SUB_TYPE_POWER_PH_CFG,
  828. SUB_TYPE_MAX,
  829. };
  830. #define PKT_MAGIC 0xdead
  831. typedef struct {
  832. uint16_t magic;
  833. uint8_t addr;
  834. uint8_t type;
  835. uint8_t subtype;
  836. uint8_t nack;
  837. uint32_t flag;
  838. uint32_t dlen;
  839. uint8_t data[];
  840. }pkt_hdr_t;
  841. typedef struct
  842. {
  843. uint16_t power_query_flag : 1;
  844. uint16_t cascade_query_flag : 1;
  845. uint16_t lcd_query_flag : 1;
  846. uint16_t sensor_query_flag : 1;
  847. uint16_t cascade_scan_flag : 1;
  848. uint16_t web_query_flag : 1;
  849. }watchdog_flag_t;
  850. typedef union{
  851. uint16_t value;
  852. watchdog_flag_t dog;
  853. }watchdog_t;
  854. typedef struct{
  855. SemaphoreHandle_t xMutex;
  856. watchdog_t dog;
  857. }wachdog_handle_t;
  858. #pragma pack ()
  859. #define CONCAT(a,b) a b
  860. #define SD_DEV "sd"
  861. #define NOR_DEV "nor"
  862. #define ROOT_PATH "/"
  863. #define SD_PATH CONCAT(ROOT_PATH,SD_DEV)
  864. #define NOR_PATH CONCAT(ROOT_PATH,NOR_DEV)
  865. #define DB_NAME "smartPDU"
  866. #define INI_NAME "smartPDU.ini"
  867. #define INF_NAME "PDUInfo.txt"
  868. #define INF_PH_3_1 "PH_3_1.ini"
  869. #define INF_PH_3_2 "PH_3_2.ini"
  870. #define USER_NAME "userInfo.csv"
  871. #if 0
  872. #define DB_PATH SD_PATH
  873. #define CFG_PATH NOR_PATH
  874. #else
  875. #define DB_PATH ROOT_PATH
  876. #define CFG_PATH ROOT_PATH
  877. #endif
  878. #endif