R2UWaterRS485UW500/app/eeprom_app.h

210 lines
5.2 KiB
C
Raw Normal View History

2024-06-03 15:49:39 +08:00
/***********************************************************************************
* @Copyright (c) :(C)2013, Qindao ieslab Co., Ltd
* @FileName :new_gsm_EEPROM_processor.c
* @Author :Intelligent gas team
* @Version :V1.0
* @Date :2013-11-29
* @Description :the function of the entity of system processor
************************************************************************************/
#ifndef __EEPROM_APP_H
#define __EEPROM_APP_H
/*--------------------------------Including-------------------------------------------*/
#include "UWater_eeprom_driver.h"
#include "eeprom_app.h"
/*------------------------------ Variable Define -------------------------------------*/
#ifdef __cplusplus
extern "C" {
#endif
//<2F><><EFBFBD>տ<EFBFBD>ʲ<EFBFBD><CAB2>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD>EEPROM<4F><EFBFBD><E6B4A2>ַ<EFBFBD><D6B7> <20><><EFBFBD><EFBFBD><EFBFBD>μ<EFBFBD><CEBC><EFBFBD>NB<4E><42><EFBFBD><EFBFBD>EEPROM<4F><EFBFBD><E6B4A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>
//#define EEP_ADDR_SYS_BASE 0x0000
////#define EEP_ADDR_SOE_BASE 0x0800
//#define EEP_ADDR_MONTH_FROZEN_BASE 0x1000 //10<31><30><EFBFBD><EFBFBD><C2B6><EFBFBD>10*12*EACH_DATA_SIZE<5A><45>1200<30><30>0x0480
//#define EEP_ADDR_DAY_FROZEN_BASE 0x1800 //365*EACH_DATA_SIZE<5A><45>3650<35><30>0x0E42 0x1800+0x0E42=0x2642
//#define EEP_ADDR_HOUR_FROZEN_BASE 0x3000 //62<36><32><EFBFBD><EFBFBD>Сʱ<D0A1><CAB1><EFBFBD>ᣬ62*24* EACH_DATA_SIZE<5A><45>14880<38><30>0x3A20 0x3000+0x3A20= 0x6A20
//#define EEP_ADDR_SYS_BACKUP_BASE 0x7000
//#define EEP_ADDR_ACCUMUL_BASE 0x7800
//#define EEP_ADDR_ACCUMUL_BACKUP_BASE 0x7900
//#define EE_S_FAIL 0
//#define EE_S_SUCCESS 1
//#define EE_S_OPERATING 2
//#define EE_S_ADD_ERR 4
#define EE_S_NO_ERR 0x00
#define EE_S_MAIN_BACKUP_BOTH_ERR 0x01 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>CRC<52><43><EFBFBD><EFBFBD>
#define EE_S_MAIN_ERR 0x02 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>CRC<52><43><EFBFBD><EFBFBD>
#define EE_S_TIMEOUT_ERR 0x04 //EEPROM<4F><4D>ʱ
#define EE_WR_TIMEOUT 52 //<2F><>λΪ100ms<6D><73><EFBFBD><EFBFBD>ʱʱ<CAB1><CAB1>Ϊ100ms<6D><73><EFBFBD><EFBFBD>EE_WR_TIMEOUT<55><54>
#define EE_Write_Retry_Max_Time 3
#define WRITEOPERTAION 0x55
#define READOPERTAION 0xAA
#define Bit_2Bits 0x01 //2λС<CEBB><D0A1><EFBFBD><EFBFBD>1<EFBFBD><31><EFBFBD>ֽڿ<D6BD><DABF>Ա<EFBFBD>ʾ
#define Bit_3Bits 0x02 //3λС<CEBB><D0A1><EFBFBD><EFBFBD>2<EFBFBD><32><EFBFBD>ֽڿ<D6BD><DABF>Ա<EFBFBD>ʾ
#define Demical_Bit Bit_3Bits //С<><D0A1>λλ<CEBB><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ2<CEAA><32>3
#define NODATA 0xFF
#define EEADDERR 0x00
#define EESYSDATAADDOK 0x01
#define EEOTHERDATAADDOK 0x02
typedef enum
{
cst_EE_S_S0=0,
cst_EE_S_S1,
cst_EE_S_S2,
cst_EE_S_S3,
cst_EE_S_S4,
cst_EE_S_S5,
cst_EE_S_S6,
cst_EE_S_S7,
cst_EE_S_S8,
cst_EE_S_S9,
cst_EE_S_S10,
cst_EE_S_S11,
cst_EE_S_S12,
cst_EE_S_S13,
cst_EE_S_S14,
cst_EE_S_S15,
cst_EE_S_S16,
cst_EE_S_S17,
cst_EE_S_S18,
cst_EE_S_S19,
cst_EE_S_S20,
cst_EE_S_S21
}cst_EE_S_STEP_NAME;
typedef enum
{
cst_EE_A_S0=0,
cst_EE_A_S1,
cst_EE_A_S2,
cst_EE_A_S3,
cst_EE_A_S4,
cst_EE_A_S5,
cst_EE_A_S6,
cst_EE_A_S7,
cst_EE_A_S8,
cst_EE_A_S9,
cst_EE_A_S10,
cst_EE_A_S11,
cst_EE_A_S12,
cst_EE_A_S13,
cst_EE_A_S14,
cst_EE_A_S15,
cst_EE_A_S16,
cst_EE_A_S17,
cst_EE_A_S18,
cst_EE_A_S19,
cst_EE_A_S20,
cst_EE_A_S21
}cst_EE_A_STEP_NAME;//EEPROM<4F><4D><EFBFBD><EFBFBD><EFBFBD>ۻ<EFBFBD><DBBB><EFBFBD>С<EFBFBD><D0A1>λ<EFBFBD><CEBB>״̬<D7B4><CCAC>״̬<D7B4><CCAC>
typedef enum
{
cst_EE_TOTAL_S0,
cst_EE_TOTAL_S1,
cst_EE_TOTAL_S2,
cst_EE_TOTAL_S3,
cst_EE_TOTAL_S4,
}cst_EE_TOTAL_STEP_NAME;//EEPROM<4F><4D>ʼ<EFBFBD><CABC>״̬<D7B4><CCAC>״̬<D7B4><CCAC>
typedef enum
{
IMPORTANT_DATA_OP_S0 = 0,
IMPORTANT_DATA_OP_S1,
IMPORTANT_DATA_OP_S2,
IMPORTANT_DATA_OP_S3,
IMPORTANT_DATA_OP_S4,
IMPORTANT_DATA_OP_S5,
IMPORTANT_DATA_OP_S6,
IMPORTANT_DATA_OP_S7,
IMPORTANT_DATA_OP_S8,
IMPORTANT_DATA_OP_S9,
IMPORTANT_DATA_OP_S20,
IMPORTANT_DATA_OP_S21
}IMPORTANT_DATA_OP;
enum
{
FIRST_POWER_ON_SAVE_S0 = 0,
FIRST_POWER_ON_SAVE_S1,
FIRST_POWER_ON_SAVE_S2,
FIRST_POWER_ON_SAVE_S3
};
typedef enum
{
EE_INIT_STATE_S0=0,
EE_INIT_STATE_S1,
EE_INIT_STATE_S2,
EE_INIT_STATE_S3,
EE_INIT_STATE_S4,
EE_INIT_STATE_S5,
EE_INIT_STATE_S20
}TYPE_EE_INIT_STATE;
typedef struct
{
u8 data[EEPageSize-2];
u16 CRCvalue;
}EE_DATA_STRUCT;
typedef union
{
EE_DATA_STRUCT EE_Sysdata_Struct;
u8 buf[EEPageSize];
}EE_DATA_UNION;
void ee_sys_data_init (void);
u8 ee_write_sys_data_all(void);
u8 ee_read_sys_data_all(void);
void ee_read_soe_data(void);
void ee_read_hour_frozen_data(void);
void ee_read_day_frozen_data(void);
void ee_read_month_frozen_data(void);
void ee_write_soe_data(void);
void ee_write_hour_frozen_data(void);
void ee_write_day_frozen_data(void);
void ee_write_month_frozen_data(void);
void ee_s_clear_err_msg(void);
u8 ee_s_get_err_msg(void);
void ee_wr_sysdata_machine(void);
u8 ee_sys_check_complete(void);
u8 ee_sys_if_idle(void);
u8 ee_sys_if_sleep(void);
void ee_write_accumul_Decimals(u16* accumul_Decimals_Pointer);
void ee_read_accumul_Decimals(u16* accumul_Decimals_Pointer);
void ee_wr_accumul_machine(void);
u8 ee_accumul_check_complete(void);
u8 ee_accumul_if_idle(void);
u8 ee_accumul_if_sleep(void);
void EeSysMachine(void);
u16 ee_addr_compute(u8 *data_addr);
u8 EeReadImportantDataIfIdle(void);
u8 EeWriteImportantDataIfIdle(void);
u8 EeEraseImportantDataIfIdle(void);//<2F><><EFBFBD><EFBFBD>״̬<D7B4><CCAC><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>
void StartEeEraseImportantData(void);
void StartEeReadImportantData(void);
void StartEeWriteImportantData(void);
void set_important_data_rd_state (void);
u8 get_important_data_rd_state (void);
void EeReadImportantDataMachine(void);
void LoadEepromImportantData(void);
void RAMBackupRefresh(void);
void set_reset_souce (u16 reset_souce);
u16 get_reset_souce (void);
#ifdef __cplusplus
}
#endif //#ifdef __cplusplus
#endif