main.h 8.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408
  1. /*********************************************************************************************************
  2. * Module : main.h
  3. * Abstract : main modules is defined data structure!
  4. * Version : 1.0.0
  5. * Author : Leopul(COPYRIGHT 2025 - 2027 Leopul. All rights reserved.)
  6. * Complete : 2025-02-16
  7. * Content : None
  8. * Note : None
  9. *********************************************************************************************************/
  10. #ifndef __MAIN_H
  11. #define __MAIN_H
  12. #include "stdint.h"
  13. #define STS_TYPE 0x07
  14. #define STS_R_START 4000
  15. #define STS_RW_CHIOSE_START 4100
  16. #define STS_RW_EEP_STATUS_START (STS_RW_CHIOSE_START + 1)
  17. #define STS_RW_EEP_INPUT_TH_START (STS_RW_EEP_STATUS_START + 1)
  18. #define STS_RW_EEP_OUTPUT_TH_START (STS_RW_EEP_INPUT_TH_START + 32)
  19. #define STS_RW_EEP_TEMP_TH_START (STS_RW_EEP_OUTPUT_TH_START + 20)
  20. #define STS_RW_EEP_ELE_V_I_ARGV (STS_RW_EEP_TEMP_TH_START + 2)
  21. #define STS_RW_EEP_ELE_CLEAR_CONSUMER (STS_RW_EEP_ELE_V_I_ARGV + 6)
  22. #define STS_RW_EEP_ELE_CLEAR_BEEP (STS_RW_EEP_ELE_CLEAR_CONSUMER + 1)
  23. #define EEP_DEVICE_INFO (0)
  24. #define EEP_MD_START (32)
  25. #define MAX_ROW (40)
  26. #define IIC_CONSUMER_START (2048)
  27. #define IIC_CONSUMER_LENTH (12)
  28. #define IIC_CONSUMER_PAGE (32)
  29. #define IIC_CONSUMER_MAX_NUM (30)
  30. #define INVALID_VALUE (40000000000)
  31. #define SMALL_VALUE (500)
  32. #define LOST_COUNT 100
  33. #define WANNING_COUNT 1000
  34. enum{
  35. INPUT_CHANNEL_1 = 0,
  36. INPUT_CHANNEL_2,
  37. };
  38. enum {
  39. CH448_CHANNEL_1 = 0,
  40. CH448_CHANNEL_2,
  41. CH448_CHANNEL_3,
  42. CH448_CHANNEL_NONE,
  43. };
  44. #pragma pack (2)
  45. typedef struct {
  46. uint32_t uniq_ID_64_95;
  47. uint32_t uniq_ID_32_63;
  48. uint32_t uniq_ID_00_31;
  49. uint32_t channels;
  50. char ver[12];
  51. char date[32];
  52. }md_information_t;
  53. typedef struct {
  54. uint32_t voltage;
  55. uint32_t current;
  56. uint32_t power;
  57. uint32_t consumer;
  58. uint32_t freq;
  59. uint32_t factor;
  60. uint32_t angle;
  61. }md_out_power_info;
  62. typedef struct {
  63. uint32_t voltage;
  64. uint32_t freq;
  65. }md_input_info;
  66. typedef struct{
  67. uint16_t choise_ch;
  68. }md_chiose_ch;
  69. typedef struct{
  70. uint16_t input_status[2];
  71. }md_input_status;
  72. typedef struct{
  73. uint16_t fan_status;
  74. }md_fans;
  75. typedef struct {
  76. uint16_t vmax_wa_1 : 1;
  77. uint16_t vmin_wa_1 : 1;
  78. uint16_t hzmax_wa_1 : 1;
  79. uint16_t hzmin_wa_1 : 1;
  80. uint16_t : 4;
  81. uint16_t vmax_wa_2 : 1;
  82. uint16_t vmin_wa_2 : 1;
  83. uint16_t hzmax_wa_2 : 1;
  84. uint16_t hzmin_wa_2 : 1;
  85. uint16_t : 4;
  86. }wanning_in_t;
  87. typedef struct{
  88. //uint16_t waning[2]; /* two input */
  89. wanning_in_t in_wan[2];
  90. }md_in_wanning;
  91. typedef struct {
  92. float iic_consumer;
  93. uint64_t recode_index1;
  94. }iic_consumer_data_t;
  95. typedef struct{
  96. iic_consumer_data_t iic_da;
  97. uint64_t index;
  98. uint16_t row;
  99. }consumer_data;
  100. typedef struct
  101. {
  102. uint16_t vmax_wa_1 : 1;
  103. uint16_t vmin_wa_1 : 1;
  104. uint16_t imax_wa_1 : 1;
  105. uint16_t pmax_wa_1 : 1;
  106. uint16_t cmax_wa_1 : 1;
  107. uint16_t : 3;
  108. uint16_t vmax_wa_2 : 1;
  109. uint16_t vmin_wa_2 : 1;
  110. uint16_t imax_wa_2 : 1;
  111. uint16_t pmax_wa_2 : 1;
  112. uint16_t cmax_wa_2 : 1;
  113. uint16_t : 3;
  114. }waning_out_t;
  115. typedef struct {
  116. waning_out_t out_waning;
  117. }md_out_wanning;
  118. typedef struct{
  119. uint8_t vmax_en : 1;
  120. uint8_t vmin_en : 1;
  121. uint8_t freqmax_en : 1;
  122. uint8_t freqmin_en : 1;
  123. uint8_t : 1;
  124. }input_wanning_en_t;
  125. typedef struct{
  126. uint8_t vmax_en : 1;
  127. uint8_t vmin_en : 1;
  128. uint8_t imax_en : 1;
  129. uint8_t pmax_en : 1;
  130. uint8_t cmax_en : 1;
  131. uint8_t : 3;
  132. }output_wanning_en_t;
  133. typedef struct {
  134. uint32_t voltage_max_1;
  135. uint32_t voltage_max_2;
  136. uint32_t voltage_min_1;
  137. uint32_t voltage_min_2;
  138. uint32_t current_max_1;
  139. uint32_t current_max_2;
  140. uint32_t power_max_1;
  141. uint32_t power_max_2;
  142. uint32_t consumer_max_1;
  143. uint32_t consumer_max_2;
  144. }eep_out_th_t;
  145. typedef struct {
  146. uint32_t voltage_max_1;
  147. uint32_t voltage_max_2;
  148. uint32_t voltage_min_1;
  149. uint32_t voltage_min_2;
  150. uint32_t freq_max_1;
  151. uint32_t freq_max_2;
  152. uint32_t freq_min_1;
  153. uint32_t freq_min_2;
  154. }eep_in_th_t;
  155. typedef struct{
  156. int16_t max_temp;
  157. int16_t min_temp;
  158. }eep_temp_th_t;
  159. typedef struct{
  160. uint16_t v_k;
  161. uint16_t i_k;
  162. }eep_ele_arg_t;
  163. typedef struct{
  164. uint16_t out_status; //4101
  165. eep_in_th_t input_th[2];
  166. eep_out_th_t output_th;
  167. eep_temp_th_t temp_th;
  168. eep_ele_arg_t input_arg[2];
  169. eep_ele_arg_t output_arg;
  170. }md_eep_data_t;
  171. typedef struct
  172. {
  173. uint8_t o_v_max : 1;
  174. uint8_t o_v_min : 1;
  175. uint8_t o_i_max : 1;
  176. uint8_t o_p_max : 1;
  177. uint8_t o_c_max : 1;
  178. uint8_t : 3;
  179. }wanning_o_t;
  180. typedef union
  181. {
  182. uint8_t beep_waning;
  183. wanning_o_t o_t;
  184. }wanning_o_beep_t;
  185. typedef wanning_o_beep_t wanning_o_beep_flag_t;
  186. typedef struct
  187. {
  188. uint8_t i_v_max : 1;
  189. uint8_t i_v_min : 1;
  190. uint8_t i_hz_max : 1;
  191. uint8_t i_hz_min : 1;
  192. uint8_t : 4;
  193. }wanning_i_t;
  194. typedef union
  195. {
  196. uint8_t beep_waning;
  197. wanning_i_t i_t;
  198. }wanning_i_beep_t;
  199. typedef wanning_i_beep_t wanning_i_beep_flag_t;
  200. typedef struct{
  201. uint16_t dev;
  202. md_input_info input[2];
  203. md_input_status input_status;
  204. md_in_wanning input_wanning;
  205. md_out_wanning output_waning;
  206. md_out_power_info out_power;
  207. int16_t temprature;
  208. uint16_t temprature_flag;
  209. uint16_t fans_status;
  210. md_information_t info;
  211. }r_data_t;
  212. typedef union{
  213. r_data_t r_data;
  214. uint16_t data[100];
  215. }m_r_data_t;
  216. typedef struct
  217. {
  218. uint16_t chiose_ch; //4100
  219. md_eep_data_t md_eep;
  220. }rw_data_t;
  221. typedef union{
  222. rw_data_t rw_data;
  223. uint16_t data[100];
  224. }m_rw_data_t;
  225. //typedef uint16_t iic_over_func;
  226. typedef struct{
  227. m_r_data_t m_r; //4000
  228. m_rw_data_t m_rw; //4100
  229. }md_data_t;
  230. #pragma pack ()
  231. typedef struct sts_data{
  232. uint8_t beep_flag;
  233. uint8_t chiose_flag;
  234. uint32_t chiose_count_max;
  235. uint32_t chiose_counter;
  236. uint32_t beep_count;
  237. uint32_t lost_count;
  238. uint32_t baund;
  239. uint32_t addr;
  240. uint32_t wanning_count;
  241. uint8_t exit_init_flag;
  242. uint8_t switch_status;
  243. md_data_t m_data;
  244. consumer_data kwh;
  245. float iic_consumer;
  246. float temprature;
  247. input_wanning_en_t input_wanning_en[2];
  248. output_wanning_en_t output_wanning_en;
  249. uint8_t input_beep;
  250. wanning_o_beep_t o_beep;
  251. wanning_o_beep_flag_t o_beep_flag;
  252. wanning_i_beep_t i_beep[2];
  253. wanning_i_beep_flag_t i_beep_flag[2];
  254. void (*choise_input)(uint8_t channel);
  255. void (*open_output)();
  256. void (*close_output)();
  257. void (*read_ele)(uint8_t channel);
  258. void (*read_switch_level)();
  259. uint8_t (*get_input1_level)();
  260. uint8_t (*get_input2_level)();
  261. void (*fans)(uint8_t on_off);
  262. void (*beep)();
  263. void (*clear_beep)();
  264. void (*led_flash)();
  265. void (*key_clear_beep)();
  266. void (*read_eeprom)(uint16_t addr,uint8_t *r_buff,uint16_t lenth);
  267. void (*write_eeprom)(uint16_t addr,uint8_t *w_buff,uint16_t lenth);
  268. void (*read_eeprom_page)(uint16_t addr,uint8_t *r_buff,uint16_t lenth);
  269. void (*write_eeprom_page)(uint16_t addr,uint8_t *r_buff,uint16_t lenth);
  270. float (*read_temp)();
  271. void (*check_wanning)(uint8_t channel);
  272. }sts_data_t;
  273. sts_data_t *get_sts(void);
  274. #endif