#ifndef _ADMINISTRATOR_H_
|
#define _ADMINISTRATOR_H_
|
|
#include "define_all.h"
|
|
|
#define __SYS_STATUS_BYTES_GET(__HANDLE__) ((&sys_admin_g)->sys_admin.state_bytes.__HANDLE__)
|
|
#define __SYS_STATUS_BYTES_STATUS(__HANDLE__, __FLAG__, __ID__) \
|
do \
|
{ \
|
if (__SYS_STATUS_BYTES_GET(__HANDLE__) != __FLAG__) \
|
{ \
|
((&sys_admin_g)->sys_admin.state_bytes.__HANDLE__ = __FLAG__); \
|
sys_clear_state_bytes_id_g = __ID__; \
|
Alarm_List_Node_Deleted(&pList_head,__ID__); \
|
} \
|
} while (0)
|
|
#define __SYS_ALARM_BYTES_SET(__HANDLE__, __FLAG__) ((&sys_admin_g)->sys_admin.alarm_bytes.__HANDLE__ = __FLAG__)
|
|
#define __SYS_STATUS_ALARM_BYTES_SET(__HANDLE__) \
|
do \
|
{ \
|
if (__SYS_STATUS_BYTES_GET(__HANDLE__) != SET) \
|
(&sys_admin_g)->sys_admin.state_bytes.__HANDLE__ = \
|
(&sys_admin_g)->sys_admin.alarm_bytes.__HANDLE__ = SET; \
|
} while (0)
|
|
#define __SYS_FUNC_CFG_BYTES_GET(__HANDLE__) ((&sys_func_cfg_bytes_g)->sys_func_cfg_bytes_s.__HANDLE__)
|
|
#define __SYS_ALARM_CTL_BYTES_GET(__HANDLE__) ((&sys_alarm_ctl_bytes_g)->sys_alarm_ctl_send.__HANDLE__)
|
|
#define __SYS_ALARM_SEND_BYTES_GET(__HANDLE__) ((&sys_alarm_send_bytes_g)->sys_alarm_ctl_send.__HANDLE__)
|
|
#define __SYS_ALARM_CTL_SEND_BYTES_SET(__HANDLE__,__FLAG__) \
|
do \
|
{ \
|
if(__SYS_ALARM_CTL_BYTES_GET(__HANDLE__) != __FLAG__) \
|
(&sys_alarm_ctl_bytes_g)->sys_alarm_ctl_send.__HANDLE__ = \
|
(&sys_alarm_send_bytes_g)->sys_alarm_ctl_send.__HANDLE__ = __FLAG__; \
|
}while(0)
|
|
|
#define SYS_STATUS_BYTES_TYPE_LENGTH sizeof(SYS_STATUS_T) // 12×Ö½Ú£¨6´óÀࣩ //²é״̬¡¢±¨¾¯×ÖÎĵµ¿ÉµÃÎĵµ
|
#define SYS_ALARM_BYTES_TYPE_LENGTH sizeof(SYS_ALARM_T)
|
#define SYS_ALARM_CTL_BYTES_TYPE_LENGTH SYS_ALARM_BYTES_TYPE_LENGTH
|
#define SYS_ALARM_SEND_BYTES_TYPE_LENGTH SYS_ALARM_BYTES_TYPE_LENGTH
|
#define SYS_FUNC_CTL_BYTES_TYPE_LENGTH sizeof(SYS_FUNC_CFG_UNION_T)
|
|
#define SYS_ALARM_VALVE_ID_FUNC_TABLE_NUM_1 (sizeof(sys_av_id_tab_func_1) / sizeof(SYS_ALARM_VALVE_ID_FUNC_TABLE_DRV_T))
|
#define SYS_ALARM_VALVE_ID_FUNC_TABLE_NUM_2 (sizeof(sys_av_id_tab_func_2) / sizeof(SYS_ALARM_VALVE_ID_FUNC_TABLE_DRV_T))
|
#define SYS_ALARM_VALVE_ID_FUNC_TABLE_NUM_3 (sizeof(sys_av_id_tab_func_3) / sizeof(SYS_ALARM_VALVE_ID_FUNC_TABLE_DRV_T))
|
#define SYS_ALARM_VALVE_ID_FUNC_TABLE_NUM_4 (sizeof(sys_av_id_tab_func_4) / sizeof(SYS_ALARM_VALVE_ID_FUNC_TABLE_DRV_T))
|
#define SYS_ALARM_VALVE_ID_FUNC_TABLE_NUM_5 (sizeof(sys_av_id_tab_func_5) / sizeof(SYS_ALARM_VALVE_ID_FUNC_TABLE_DRV_T))
|
#define SYS_ALARM_VALVE_ID_FUNC_TABLE_NUM_6 (sizeof(sys_av_id_tab_func_6) / sizeof(SYS_ALARM_VALVE_ID_FUNC_TABLE_DRV_T))
|
#define SYS_ALARM_VALVE_ID_FUNC_TABLE_NUM_7 (sizeof(sys_av_id_tab_func_7) / sizeof(SYS_ALARM_VALVE_ID_FUNC_TABLE_DRV_T))
|
|
#define ALARM_BYTES_DAILY_NUM 2
|
|
typedef enum
|
{
|
VALVE_NONE = 0U,
|
VALVE_OP,
|
VALVE_CL,
|
VALVE_OPENING,
|
VALVE_CLOSING,
|
VALVE_ERROR
|
} VALVE_STATE_T; // ·§ÃÅ״̬ÀàÐÍ
|
|
typedef enum
|
{
|
LDM_KEY_AWAKEN = 0U, // °´¼ü»½ÐÑ
|
LDM_ALWAYS_AWAKEN, // ³£ÏÔ
|
LDM_FLOW_AWAKEN // ÓÐÁ÷Á¿»½ÐÑ
|
} LCD_DISPLAY_MODE_T; // LCDÆÁÄ»ÏÔʾģʽÀàÐÍ
|
|
typedef enum
|
{
|
BM_NONE = 0U,
|
BM_DEVICE, // É豸¶Ë
|
BM_PLATFORM // ƽ̨¶Ë
|
} BILLING_MODE_T; // ¼Æ·Ñģʽ
|
|
typedef enum
|
{
|
PARA_AMEND_NONE = 0U,
|
GAS_CUMULATE_PARA_AMEND,
|
BALANCE_PARA_AMEND,
|
TEMP_CFG_PARA_AMEND,
|
PRESS_CFG_PARA_AMEND,
|
BILLING_PARA_AMEND,
|
GAS_CAL_PARA_AMEND,
|
GAS_CFG_PARA_AMEND,
|
PLUSE_CAL_PARA_AMEND,
|
UT_ERR_PARA_AMEND,
|
UT_CAL_PARA_AMEND,
|
SYS_FUNC_CFG_BYTES_AMEND,
|
ALARM_CTL_SEND_BYTES_AMEND,
|
VALVE_CTL_BYTES_AMEND,
|
BILLING_ALARM_CFG_AMEND,
|
SEC_ORDER_CORR_PARA_AMEND,
|
} PARA_AMEND_T; // ²ÎÊýÐÞ¸ÄÀàÐÍ
|
|
typedef enum //BCD
|
{
|
AV_NORMAL = 0U,
|
A_RESTART, // ¸´Î» ½ö½öÊDZ¨¾¯ÀàÐͲ»²úÉú¹Ø·§
|
AV_EXTERN_VCC_DOWN,
|
AV_UNCAP_1,
|
AV_UNCAP_2,
|
AV_GPRS_FAIL,
|
AV_LCD_UP,
|
|
AV_LITH_LOW = 0x10, // ﮵çµÍµç±¨¾¯/¹Ø·§
|
AV_LITH_UNDER,
|
AV_LITH_REMOVE,
|
AV_ALKA_LOW,
|
AV_ALKA_UNDER,
|
AV_ALKA_REMOVE,
|
AV_VALVE_VCC_LOW,
|
AV_VALVE_VCC_DOWN,
|
RTC_VCC,
|
|
AV_TEMP_ERR = 0x20, // ζÈÒì³£±¨¾¯/¹Ø·§
|
AV_TEMP_UP,
|
AV_TEMP_UP_UP,
|
AV_TEMP_DOWN,
|
AV_TEMP_DOWN_DOWN,
|
AV_PRESS_ERR,
|
AV_PRESS_UP,
|
AV_PRESS_UP_UP,
|
AV_PRESS_DOWN,
|
AV_PRESS_DOWN_DOWN,
|
AV_CPU_TEMP_UP = 0x30, // 30
|
AV_CPU_TEMP_DOWN,
|
AV_CPU_TEMP_DRASTIC_CHANGE,
|
AV_LCD_TEMP_LOW,
|
|
AV_UT_LOSE = 0x40, // ̽ͷ¶ªÊ§±¨¾¯/¹Ø·§
|
AV_FLOW_VEL_ERR,
|
AV_TOF_DIFF_ERR,
|
AV_SOUND_VEL_ERR,
|
AV_SNR_ERR,
|
AV_SIG_UP,
|
AV_SIG_TH_ERR,
|
AV_GAIN_ERR,
|
AV_INPUT_WATER_ERR,
|
AV_MEDIA_ERR,
|
AV_DISMANTLE = 0x50, //50
|
AV_MEASURE_ERR, //¼ÆÁ¿µ¥Ôª´íÎ󣨿ÉÄÜΪÖ÷´ÓͨѶʧ°Ü£¬Ò²¿ÉΪʱ¼äоƬ´íÎó£©
|
|
AV_FLOW_UP_1 = 0x60, // Á÷Á¿³¬ÏÞ1±¨¾¯/¹Ø·§
|
AV_FLOW_UP_2,
|
AV_FLOW_UP_3,
|
AV_FLOW_DIRECTION,
|
AV_CONSTANT_FLOW,
|
AV_CONSTANT_TINY_FLOW,
|
AV_LEAKAGE,
|
|
AV_VALVE_ERR = 0x70,
|
AV_CL_HAVE_FLOW,
|
|
AV_BALANCE_1 = 0x90, // Óà¶îÉÙ¶î1±¨¾¯/¹Ø·§
|
AV_BALANCE_2,
|
AV_BALANCE_3,
|
AV_BALANCE_4,
|
AV_BALANCE_5,
|
AV_SET_CUMULATE,
|
AV_NO_USE_GAS,
|
AV_NO_GPRS,
|
|
V_KEY_OP = 0x996, // ½ö½öÊǹط§ÀàÐͲ»²úÉú±¨¾¯
|
V_KEY_CL = 0x997,
|
V_GPRS_CMD_OP = 0x998,
|
V_GPRS_CMD_CL = 0x999
|
} SYS_ALARM_VALVE_T; // ±¨¾¯ºÍ¹Ø·§ÀàÐÍID
|
|
#pragma pack(1)
|
|
typedef struct
|
{
|
uint16_t lcd_mode : 3;
|
uint16_t : 1;
|
uint16_t account_state : 1;
|
uint16_t flow_direction : 1;
|
uint16_t work_state : 2;
|
uint16_t : 1; // Ô¤Áô
|
uint16_t power_state : 1;
|
uint16_t : 1;
|
uint16_t uncap_state_1 : 1; //²ðÃæ°å
|
uint16_t : 4;
|
|
uint16_t valve_state : 3;
|
uint16_t valve_lock : 1;
|
uint16_t set_cumulate_up_to : 1;
|
uint16_t no_use_gas_date_up_to : 1;
|
uint16_t no_gprs_date_up_to : 1;
|
uint16_t virtual_billing : 1;
|
uint16_t billing_type : 2;
|
uint16_t : 1; // Ô¤Áô
|
uint16_t balance_small_1 : 1;
|
uint16_t balance_small_2 : 1;
|
uint16_t balance_small_3 : 1;
|
uint16_t balance_small_4 : 1;
|
uint16_t balance_small_5 : 1;
|
|
uint16_t lith_low : 1;
|
uint16_t lith_under : 1;
|
uint16_t lith_remove : 1;
|
uint16_t alka_low : 1;
|
uint16_t alka_under : 1;
|
uint16_t alka_remove : 1;
|
uint16_t : 2;
|
uint16_t gprs_status : 1;
|
uint16_t : 7;
|
|
uint16_t temp_err : 1;
|
uint16_t temp_up : 1;
|
uint16_t temp_up_up : 1;
|
uint16_t temp_down : 1;
|
uint16_t temp_down_down : 1;
|
uint16_t cpu_temp_up : 1;
|
uint16_t cpu_temp_down : 1;
|
uint16_t cpu_temp_drastic_change : 1;
|
uint16_t press_err : 1;
|
uint16_t press_up : 1;
|
uint16_t press_up_up : 1;
|
uint16_t press_down : 1;
|
uint16_t press_down_down : 1;
|
uint16_t : 3;
|
|
uint16_t flow_ver_err : 1;
|
uint16_t tof_diff_err : 1;
|
uint16_t sound_vel_err : 1;
|
uint16_t snr_err : 1;
|
uint16_t sig_up : 1;
|
uint16_t sig_th_err : 1;
|
uint16_t gain_err : 1;
|
uint16_t ut_lose : 1;
|
uint16_t media_status : 2;
|
uint16_t input_water : 1;
|
uint16_t measure_err : 1;
|
uint16_t : 4;
|
|
uint16_t gas_leakage : 1;
|
uint16_t lcd_up : 1;
|
uint16_t lcd_temp_low : 1;
|
uint16_t flow_up_1 : 1;
|
uint16_t flow_up_2 : 1;
|
uint16_t flow_up_3 : 1;
|
uint16_t constant_tiny_flow : 1;
|
uint16_t constant_flow : 1;
|
uint16_t cl_have_flow : 1;
|
uint16_t : 7;
|
} SYS_STATUS_T;
|
|
typedef struct
|
{
|
uint16_t : 4; // Ô¤Áô
|
uint16_t account_state : 1;
|
uint16_t flow_direction : 1;
|
uint16_t : 2;
|
uint16_t restart : 1;
|
uint16_t power_state : 1;
|
uint16_t : 1;
|
uint16_t uncap_state_1 : 1;
|
uint16_t : 4;
|
|
uint16_t valve_error : 1;
|
uint16_t valve_change : 1;
|
uint16_t : 2;
|
uint16_t set_cumulate_up_to : 1;
|
uint16_t no_use_gas_date_up_to : 1;
|
uint16_t no_gprs_date_up_to : 1;
|
uint16_t : 4;
|
uint16_t balance_small_1 : 1;
|
uint16_t balance_small_2 : 1;
|
uint16_t balance_small_3 : 1;
|
uint16_t balance_small_4 : 1;
|
uint16_t balance_small_5 : 1;
|
|
uint16_t lith_low : 1;
|
uint16_t lith_under : 1;
|
uint16_t lith_remove : 1;
|
uint16_t alka_low : 1;
|
uint16_t alka_under : 1;
|
uint16_t alka_remove : 1;
|
uint16_t : 2;
|
uint16_t gprs_status : 1;
|
uint16_t : 7;
|
|
uint16_t temp_err : 1;
|
uint16_t temp_up : 1;
|
uint16_t temp_up_up : 1;
|
uint16_t temp_down : 1;
|
uint16_t temp_down_down : 1;
|
uint16_t cpu_temp_up : 1;
|
uint16_t cpu_temp_down : 1;
|
uint16_t cpu_temp_drastic_change : 1;
|
uint16_t press_err : 1;
|
uint16_t press_up : 1;
|
uint16_t press_up_up : 1;
|
uint16_t press_down : 1;
|
uint16_t press_down_down : 1;
|
uint16_t : 3;
|
|
uint16_t flow_vel_err : 1;
|
uint16_t tof_diff_err : 1;
|
uint16_t sound_vel_err : 1;
|
uint16_t snr_err : 1;
|
uint16_t sig_up : 1;
|
uint16_t sig_th_err : 1;
|
uint16_t gain_err : 1;
|
uint16_t ut_lose : 1;
|
uint16_t input_water : 1;
|
uint16_t media_other : 1;
|
uint16_t dismantle : 1;
|
uint16_t measure_err : 1;
|
uint16_t : 4;
|
|
uint16_t gas_leakage : 1;
|
uint16_t lcd_up : 1;
|
uint16_t lcd_temp_low : 1;
|
uint16_t flow_up_1 : 1;
|
uint16_t flow_up_2 : 1;
|
uint16_t flow_up_3 : 1;
|
uint16_t constant_tiny_flow : 1;
|
uint16_t constant_flow : 1;
|
uint16_t cl_have_flow : 1;
|
uint16_t : 7;
|
|
uint16_t gas_cumulate_amend : 1;
|
uint16_t balance_amend : 1;
|
uint16_t temp_para_amend : 1;
|
uint16_t press_para_amend : 1;
|
uint16_t billing_para_amend : 1;
|
uint16_t : 3;
|
uint16_t flow_cal_amend : 1;
|
uint16_t flow_para_amend : 1;
|
uint16_t pluse_cal_amend : 1;
|
uint16_t ut_err_amend : 1;
|
uint16_t ut_cal_amend : 1;
|
uint16_t : 3;
|
} SYS_ALARM_T;
|
|
typedef union
|
{
|
uint16_t alarm_ctl_send_union[SYS_ALARM_CTL_BYTES_TYPE_LENGTH >> 1];
|
SYS_ALARM_T sys_alarm_ctl_send;
|
} SYS_ALARM_CTL_SEND_UNION_T; // ±¨¾¯¿ØÖÆ/Éϱ¨×Ö
|
|
typedef union
|
{
|
uint16_t func_cfg_union[4];
|
struct
|
{
|
uint16_t : 4; // Ô¤Áô
|
uint16_t small_flow_excision : 1;
|
uint16_t : 2;
|
uint16_t both_way_measure : 1;
|
uint16_t lcd_mode : 3;
|
uint16_t : 5;
|
|
uint16_t set_compressibility : 2;
|
uint16_t : 1;
|
uint16_t press_corrected_manage : 3;
|
uint16_t press_err_manage : 2;
|
uint16_t : 3;
|
uint16_t temp_corrected_manage : 3;
|
uint16_t temp_err_manage : 2;
|
|
uint16_t super_flow_manage_3 : 1;
|
uint16_t super_flow_manage_2 : 1;
|
uint16_t : 14;
|
|
uint16_t : 2;
|
uint16_t virtual_billing : 1;
|
uint16_t : 2;
|
uint16_t account_state : 1;
|
uint16_t : 2;
|
uint16_t balance_display_set:1;
|
uint16_t price_display_set: 1;
|
uint16_t logo_display_set : 1;
|
uint16_t : 3;
|
uint16_t billing_type : 2;
|
} sys_func_cfg_bytes_s;
|
} SYS_FUNC_CFG_UNION_T;
|
|
typedef union
|
{
|
uint16_t admin_union[(SYS_STATUS_BYTES_TYPE_LENGTH + SYS_ALARM_BYTES_TYPE_LENGTH) >> 1];
|
struct
|
{
|
__IO SYS_STATUS_T state_bytes;
|
__IO SYS_ALARM_T alarm_bytes;
|
} sys_admin; // ϵͳ¹ÜÀíÔ±
|
} SYS_ADMIN_UNION_T;
|
|
typedef struct
|
{
|
const SYS_ALARM_VALVE_T alarm_valve_id; // ±¨¾¯/¹Ø·§ÔÒòid
|
const uint8_t offset_bit; // Õë¶ÔÓÚ±¨¾¯×ֵį«ÒÆÁ¿
|
__IO uint16_t alarm_daily_num; // ÿÈյı¨¾¯´ÎÊýÏÞÖÆ
|
uint16_t *alarm_byte; // ±¨¾¯×Ö
|
} SYS_ALARM_VALVE_ID_FUNC_TABLE_DRV_T;
|
|
#pragma pack()
|
|
extern PARA_AMEND_T sys_para_amend_log_flag_g;
|
|
extern SYS_ALARM_VALVE_T sys_alarm_id_g;
|
extern SYS_ALARM_VALVE_T sys_valve_ctl_id_g;
|
|
extern SYS_ADMIN_UNION_T sys_admin_g;
|
|
extern SYS_ALARM_CTL_SEND_UNION_T sys_alarm_ctl_bytes_g;
|
|
extern SYS_ALARM_CTL_SEND_UNION_T sys_alarm_send_bytes_g;
|
|
extern SYS_FUNC_CFG_UNION_T sys_func_cfg_bytes_g;
|
|
void Admin_AlarmBytesProcess(uint8_t *pGprs_send_flag, SYS_ADMIN_UNION_T *sys_admin_p);
|
|
void Sys_StatusBytesInit(void);
|
void Upcap1_StateAlarmHandler(void);
|
|
#include "linked_list.h"
|
|
#endif
|