/********************************************************************************************************* * Module : main.h * Abstract : main modules is defined data structure! * Version : 1.0.0 * Author : Leopul(COPYRIGHT 2025 - 2027 Leopul. All rights reserved.) * Complete : 2025-02-16 * Content : None * Note : None *********************************************************************************************************/ #ifndef __MAIN_H #define __MAIN_H #include "stdint.h" #define STS_TYPE 0x07 #define STS_R_START 4000 #define STS_RW_CHIOSE_START 4100 #define STS_RW_EEP_STATUS_START (STS_RW_CHIOSE_START + 1) #define STS_RW_EEP_INPUT_TH_START (STS_RW_EEP_STATUS_START + 1) #define STS_RW_EEP_OUTPUT_TH_START (STS_RW_EEP_INPUT_TH_START + 32) #define STS_RW_EEP_TEMP_TH_START (STS_RW_EEP_OUTPUT_TH_START + 20) #define STS_RW_EEP_ELE_V_I_ARGV (STS_RW_EEP_TEMP_TH_START + 2) #define STS_RW_EEP_ELE_CLEAR_CONSUMER (STS_RW_EEP_ELE_V_I_ARGV + 6) #define STS_RW_EEP_ELE_CLEAR_BEEP (STS_RW_EEP_ELE_CLEAR_CONSUMER + 1) #define EEP_DEVICE_INFO (0) #define EEP_MD_START (32) #define MAX_ROW (40) #define IIC_CONSUMER_START (2048) #define IIC_CONSUMER_LENTH (12) #define IIC_CONSUMER_PAGE (32) #define IIC_CONSUMER_MAX_NUM (30) #define INVALID_VALUE (40000000000) #define SMALL_VALUE (500) #define LOST_COUNT 100 #define WANNING_COUNT 1000 enum{ INPUT_CHANNEL_1 = 0, INPUT_CHANNEL_2, }; enum { CH448_CHANNEL_1 = 0, CH448_CHANNEL_2, CH448_CHANNEL_3, CH448_CHANNEL_NONE, }; #pragma pack (2) typedef struct { uint32_t uniq_ID_64_95; uint32_t uniq_ID_32_63; uint32_t uniq_ID_00_31; uint32_t channels; char ver[12]; char date[32]; }md_information_t; typedef struct { uint32_t voltage; uint32_t current; uint32_t power; uint32_t consumer; uint32_t freq; uint32_t factor; uint32_t angle; }md_out_power_info; typedef struct { uint32_t voltage; uint32_t freq; }md_input_info; typedef struct{ uint16_t choise_ch; }md_chiose_ch; typedef struct{ uint16_t input_status[2]; }md_input_status; typedef struct{ uint16_t fan_status; }md_fans; typedef struct { uint16_t vmax_wa_1 : 1; uint16_t vmin_wa_1 : 1; uint16_t hzmax_wa_1 : 1; uint16_t hzmin_wa_1 : 1; uint16_t : 4; uint16_t vmax_wa_2 : 1; uint16_t vmin_wa_2 : 1; uint16_t hzmax_wa_2 : 1; uint16_t hzmin_wa_2 : 1; uint16_t : 4; }wanning_in_t; typedef struct{ //uint16_t waning[2]; /* two input */ wanning_in_t in_wan[2]; }md_in_wanning; typedef struct { float iic_consumer; uint64_t recode_index1; }iic_consumer_data_t; typedef struct{ iic_consumer_data_t iic_da; uint64_t index; uint16_t row; }consumer_data; typedef struct { uint16_t vmax_wa_1 : 1; uint16_t vmin_wa_1 : 1; uint16_t imax_wa_1 : 1; uint16_t pmax_wa_1 : 1; uint16_t cmax_wa_1 : 1; uint16_t : 3; uint16_t vmax_wa_2 : 1; uint16_t vmin_wa_2 : 1; uint16_t imax_wa_2 : 1; uint16_t pmax_wa_2 : 1; uint16_t cmax_wa_2 : 1; uint16_t : 3; }waning_out_t; typedef struct { waning_out_t out_waning; }md_out_wanning; typedef struct{ uint8_t vmax_en : 1; uint8_t vmin_en : 1; uint8_t freqmax_en : 1; uint8_t freqmin_en : 1; uint8_t : 1; }input_wanning_en_t; typedef struct{ uint8_t vmax_en : 1; uint8_t vmin_en : 1; uint8_t imax_en : 1; uint8_t pmax_en : 1; uint8_t cmax_en : 1; uint8_t : 3; }output_wanning_en_t; typedef struct { uint32_t voltage_max_1; uint32_t voltage_max_2; uint32_t voltage_min_1; uint32_t voltage_min_2; uint32_t current_max_1; uint32_t current_max_2; uint32_t power_max_1; uint32_t power_max_2; uint32_t consumer_max_1; uint32_t consumer_max_2; }eep_out_th_t; typedef struct { uint32_t voltage_max_1; uint32_t voltage_max_2; uint32_t voltage_min_1; uint32_t voltage_min_2; uint32_t freq_max_1; uint32_t freq_max_2; uint32_t freq_min_1; uint32_t freq_min_2; }eep_in_th_t; typedef struct{ int16_t max_temp; int16_t min_temp; }eep_temp_th_t; typedef struct{ uint16_t v_k; uint16_t i_k; }eep_ele_arg_t; typedef struct{ uint16_t out_status; //4101 eep_in_th_t input_th[2]; eep_out_th_t output_th; eep_temp_th_t temp_th; eep_ele_arg_t input_arg[2]; eep_ele_arg_t output_arg; }md_eep_data_t; typedef struct { uint8_t o_v_max : 1; uint8_t o_v_min : 1; uint8_t o_i_max : 1; uint8_t o_p_max : 1; uint8_t o_c_max : 1; uint8_t : 3; }wanning_o_t; typedef union { uint8_t beep_waning; wanning_o_t o_t; }wanning_o_beep_t; typedef wanning_o_beep_t wanning_o_beep_flag_t; typedef struct { uint8_t i_v_max : 1; uint8_t i_v_min : 1; uint8_t i_hz_max : 1; uint8_t i_hz_min : 1; uint8_t : 4; }wanning_i_t; typedef union { uint8_t beep_waning; wanning_i_t i_t; }wanning_i_beep_t; typedef wanning_i_beep_t wanning_i_beep_flag_t; typedef struct{ uint16_t dev; md_input_info input[2]; md_input_status input_status; md_in_wanning input_wanning; md_out_wanning output_waning; md_out_power_info out_power; int16_t temprature; uint16_t temprature_flag; uint16_t fans_status; md_information_t info; }r_data_t; typedef union{ r_data_t r_data; uint16_t data[100]; }m_r_data_t; typedef struct { uint16_t chiose_ch; //4100 md_eep_data_t md_eep; }rw_data_t; typedef union{ rw_data_t rw_data; uint16_t data[100]; }m_rw_data_t; //typedef uint16_t iic_over_func; typedef struct{ m_r_data_t m_r; //4000 m_rw_data_t m_rw; //4100 }md_data_t; #pragma pack () typedef struct sts_data{ uint8_t beep_flag; uint8_t chiose_flag; uint32_t chiose_count_max; uint32_t chiose_counter; uint32_t beep_count; uint32_t lost_count; uint32_t baund; uint32_t addr; uint32_t wanning_count; uint8_t exit_init_flag; uint8_t switch_status; md_data_t m_data; consumer_data kwh; float iic_consumer; float temprature; input_wanning_en_t input_wanning_en[2]; output_wanning_en_t output_wanning_en; uint8_t input_beep; wanning_o_beep_t o_beep; wanning_o_beep_flag_t o_beep_flag; wanning_i_beep_t i_beep[2]; wanning_i_beep_flag_t i_beep_flag[2]; void (*choise_input)(uint8_t channel); void (*open_output)(); void (*close_output)(); void (*read_ele)(uint8_t channel); void (*read_switch_level)(); uint8_t (*get_input1_level)(); uint8_t (*get_input2_level)(); void (*fans)(uint8_t on_off); void (*beep)(); void (*clear_beep)(); void (*led_flash)(); void (*key_clear_beep)(); void (*read_eeprom)(uint16_t addr,uint8_t *r_buff,uint16_t lenth); void (*write_eeprom)(uint16_t addr,uint8_t *w_buff,uint16_t lenth); void (*read_eeprom_page)(uint16_t addr,uint8_t *r_buff,uint16_t lenth); void (*write_eeprom_page)(uint16_t addr,uint8_t *r_buff,uint16_t lenth); float (*read_temp)(); void (*check_wanning)(uint8_t channel); }sts_data_t; sts_data_t *get_sts(void); #endif