#ifndef MAIN_H #define MAIN_H #include "stdint.h" #define SINGLE_BEGIN_REGISTER 4000 typedef struct { uint16_t on_off_state : 1; uint16_t v_top_en : 1; uint16_t v_top_wanning : 1; uint16_t v_down_en : 1; uint16_t v_down_wanning : 1; uint16_t i_top_en : 1; uint16_t i_top_wanning : 1; uint16_t p_top_en : 1; uint16_t p_top_wanning : 1; uint16_t e_top_en : 1; uint16_t e_top_wanning : 1; uint16_t : 5; //not used }r_state; typedef struct { uint16_t on_off_state : 1; uint16_t v_top_en : 1; uint16_t v_top_wanning : 1; uint16_t v_down_en : 1; uint16_t v_down_wanning : 1; uint16_t i_top_en : 1; uint16_t i_top_wanning : 1; uint16_t p_top_en : 1; uint16_t p_top_wanning : 1; uint16_t e_top_en : 1; uint16_t e_top_wanning : 1; uint16_t all_on : 1; uint16_t all_off : 1; uint16_t : 3; }w_state; typedef struct { uint16_t v_top_max : 1; uint16_t v_down_min : 1; uint16_t i_top_max : 1; uint16_t p_top_max : 1; uint16_t e_top_max : 1; uint16_t : 11; }all_wanning; #pragma pack (2) typedef union { uint16_t data[11]; uint16_t device; }device_t; typedef struct{ uint32_t AC_V; uint32_t AC_I; uint32_t AC_P; uint32_t AC_LINE_Freq; uint32_t AC_E; uint32_t AC_PF; }ele_info_t; typedef struct{ uint32_t V_top; uint32_t V_down; uint32_t I_top; uint32_t I_down; uint32_t P_top; uint32_t P_down; uint32_t E_top; uint32_t E_down; }th_info; typedef struct{ uint32_t V_k; uint32_t V_b; uint32_t I_k; uint32_t I_b; }cofe_t; typedef union{ uint16_t data[198]; ele_info_t info[10]; }ele_data_t; typedef union{ uint16_t data[41]; r_state state[10]; }states_t; typedef union{ uint16_t data[50]; uint32_t total_consumer[10]; }consumer_t; typedef union{ uint16_t data[10]; uint32_t consumer; }all_chn_consumer_t; typedef union{ uint16_t data[10]; uint16_t detection; }detection_t; typedef union{ uint16_t data[10]; all_wanning wanning; }total_wanning_t; typedef union{ uint16_t data[30]; ele_info_t info; }total_ele_data_t; typedef union{ uint16_t data[140]; uint16_t dev_info; }device_info_t; typedef struct { device_t dev; ele_data_t ele_data; states_t stats; consumer_t consumer; detection_t detection; total_wanning_t t_wanning; total_ele_data_t t_ele_data; }md_read_t; typedef union{ uint16_t data[18]; uint16_t on[10]; }w_delay_on_t; typedef union{ uint16_t data[68]; uint16_t off[10]; }w_delay_off_t; typedef union{ uint16_t data[43]; w_state w_state[10]; }w_state_t; typedef union{ uint16_t data[238]; th_info output[10]; }w_th_info_t; typedef union{ uint16_t data[233]; cofe_t cofe[10]; }w_cofe_t; typedef union{ uint16_t data[20]; uint16_t over[10]; }w_over_t; typedef uint16_t clear_consumer_t; #pragma pack () #endif