#ifndef _SIZHU_CTRL_WORD_H #define _SIZHU_CTRL_WORD_H #include "define_all.h" #define SYSTEM_SINGLE_BIT_SET1 0x0001 #define SYSTEM_SINGLE_BIT_SET0 0x0000 /*******************************˼ÖþÐÂϵͳ״̬×Ö******************************/ #define SSW_LCD_ALWAYS_SHOW_MODE 0x0001 #define SSW_LCD_FLOW_SHOW_MODE 0x0002 #define SSW_WORK_STATE_CALIBRATION 0x0001 #define SSW_WORK_STATE_PARA_CONFIG 0x0002 #define SSW_WORK_STATE_PARA_SHOW 0x0003 #define SSW_VALVE_STATUS_OPEN 0x0001 #define SSW_VALVE_STATUS_CLOSE 0x0002 #define SSW_VALVE_STATUS_OPENING 0x0003 #define SSW_VALVE_STATUS_CLOSEING 0x0004 #define SSW_VALVE_STATUS_ERR 0x0005 #define SSW_BILLING_TYPE_TERMINAL 0x0001 #define SSW_BILLING_TYPE_CENTER 0x0002 #define SSW_MEDIA_STATUS_WATER 0x0001 #define SSW_MEDIA_STATUS_AIR 0x0002 #define SSW_MEDIA_STATUS_GAS 0x0003 #define SSW_CHANNEL_REMOVAL_STATUS_UP 0x0001 #define SSW_CHANNEL_REMOVAL_STATUS_DOWN 0x0002 #define SSW_CHANNEL_REMOVAL_STATUS_MID 0x0003 /*******************************˼ÖþÐÂϵͳ״̬×Ö******************************/ /*******************************˼ÖþÐÂϵͳ¹¦ÄÜ¿ØÖÆ×Ö******************************/ #define SFCW_CURRENT_LOOP_WORK_CONDITION 0x0004 #define SFCW_CURRENT_LOOP_LOW_LIMIT 0x0002 #define SFCW_CURRENT_LOOP_OPEN 0x0001 #define SFCW_LCD_BIDIRECTIONAL 0x0004 #define SFCW_LCD_NORMAL_SHOW_MODE 0x0000 #define SFCW_LCD_FLOW_SHOW_MODE 0x0002 #define SFCW_LCD_ALWAYS_SHOW_MODE 0x0001 #define SFCW_PRE_CORRECTION_TYPE 0x0000 #define SFCW_TEM_CORRECTION_TYPE 0x0000 #define SFCW_MANUAL_UP_CHANNEL_REMOVAL_CTRL 0x0004 #define SFCW_MANUAL_DOWN_CHANNEL_REMOVAL_CTRL 0x0002 #define SFCW_MANUAL_MID_CHANNEL_REMOVAL_CTRL 0x0001 #define SFCW_MANUAL_ALL_CHANNEL_REMOVAL_CTRL 0x0006 #define SFCW_BILLING_TYPE_NONE 0x0000 #define SFCW_BILLING_TYPE_TERMINAL 0x0001 #define SFCW_BILLING_TYPE_CENTER 0x0002 /*******************************˼ÖþÐÂϵͳ¹¦ÄÜ¿ØÖÆ×Ö******************************/ #pragma pack(1) /*********************************ϵͳ״̬×ÖÏà¹Ø**************************************/ typedef struct system_status_word_inf { uint16_t lcd_mode : 3; uint16_t : 1; uint16_t account_state : 1; uint16_t flow_direction : 1; uint16_t : 2; uint16_t : 1; // Ô¤Áô uint16_t power_state : 1; uint16_t : 1; uint16_t cover_open :1; uint16_t mainboard_remove :1; uint16_t : 3; 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_down : 1; uint16_t lith_remove : 1; uint16_t alka_low : 1; uint16_t alka_down : 1; uint16_t alka_remove : 1; uint16_t : 2; uint16_t gprs_status : 1; uint16_t : 3; uint16_t valve_bat_low: 1; uint16_t valve_bat_down: 1; uint16_t : 2; 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 tem_sudden_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 dismantle : 1; uint16_t : 1; uint16_t channel_removal_status:2; uint16_t : 2; 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 small_flow:1; uint16_t constant_flow : 1; uint16_t cl_have_flow : 1; uint16_t : 2; uint16_t current_loop_open: 1; uint16_t : 4; }SYSTEM_STA_WORD_T; #define SYSTEM_STATUS_WORD_INF_LENGTH sizeof(SYSTEM_STA_WORD_T) typedef union { u16 status_word_union[SYSTEM_STATUS_WORD_INF_LENGTH>>1]; SYSTEM_STA_WORD_T status_word; }SYSTEM_STATUS_WORD_T; /*********************************ϵͳ״̬×ÖÏà¹Ø**************************************/ /*********************************¹¦ÄÜ¿ØÖÆ×ÖÏà¹Ø**************************************/ typedef struct { uint16_t current_loop_set : 3; uint16_t : 1; uint16_t small_flow_cut_off : 1; uint16_t : 2; uint16_t bidirectional_measure: 1; uint16_t lcd_mode: 3; uint16_t : 5; uint16_t compressibility_factor_choose : 2; uint16_t compressibility_factor_type : 1; uint16_t pre_correction_type : 3; uint16_t pre_err_process_mode: 2; uint16_t : 3; uint16_t tem_correction_type : 3; uint16_t tem_err_process_mode : 2; uint16_t penalty_measure2 : 1; uint16_t penalty_measure3 : 1; uint16_t : 6; uint16_t measure_channel_removal : 3; uint16_t manual_flow_para_ctrl: 1; uint16_t : 4; uint16_t balance_sufficient_allow_open_valve: 1; uint16_t exti_flag: 1; uint16_t virtual_billing : 1; uint16_t : 1; uint16_t calibration_mode: 1; uint16_t account_open: 1; uint16_t : 2; uint16_t show_balance : 1; uint16_t show_price: 1; uint16_t show_logo : 1; uint16_t : 3; uint16_t billing_mode: 2; uint16_t : 16; }SYSTEM_FUN_CTRL_WORD_T; #define SYSTEM_FUNCTION_CTRL_WORD_INF_LENGTH sizeof(SYSTEM_FUN_CTRL_WORD_T) typedef union system_function_ctrl_word_inf //ϵͳ¹¦ÄÜ¿ØÖÆ×Ö { u16 fun_ctrl_union[SYSTEM_FUNCTION_CTRL_WORD_INF_LENGTH>>1]; SYSTEM_FUN_CTRL_WORD_T fun_ctrl_word; }SYSTEM_FUNCTION_CTRL_WORD_T; /*********************************¹¦ÄÜ¿ØÖÆ×ÖÏà¹Ø**************************************/ /*********************************±¨¾¯¿ØÖÆ×ÖÏà¹Ø**************************************/ typedef struct { uint16_t : 4; // Ô¤Áô uint16_t account_status : 1; uint16_t flow_bidirectional : 1; uint16_t : 2; uint16_t system_start : 1; uint16_t power_state : 1; uint16_t : 1; uint16_t cover_open : 1; uint16_t mainboard_remove : 1; uint16_t : 3; uint16_t valve_error : 1; uint16_t valve_state_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_down : 1; uint16_t lith_remove : 1; uint16_t alka_low : 1; uint16_t alka_down : 1; uint16_t alka_remove : 1; uint16_t : 2; uint16_t gprs_status : 1; uint16_t : 3; uint16_t valve_bat_low:1; uint16_t valve_bat_down:1; uint16_t : 2; 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 tem_sudden_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 media_water : 1; uint16_t media_err : 1; uint16_t dismantle : 1; uint16_t : 1; uint16_t channel_removal : 1; uint16_t : 3; 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_status : 2; 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 current_loop_para_amend: 1; uint16_t low_pulse_para_amend: 1; uint16_t : 1; uint16_t gas_cal_amend : 1; uint16_t gas_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; #define SYSTEM_ALARM_WORD_INF_LENGTH sizeof(SYS_ALARM_T) typedef union { uint16_t alarm_word_union[SYSTEM_ALARM_WORD_INF_LENGTH >> 1]; SYS_ALARM_T alarm_word; }SYSTEM_ALARM_WORD_T; // ±¨¾¯×Ö typedef union { uint16_t alarm_ctl_word_union[SYSTEM_ALARM_WORD_INF_LENGTH >> 1]; SYS_ALARM_T alarm_ctl_word; }SYSTEM_ALARM_CTRL_WORD_T; // ±¨¾¯¿ØÖÆ×Ö typedef union { uint16_t alarm_ctl_send_union[SYSTEM_ALARM_WORD_INF_LENGTH >> 1]; SYS_ALARM_T alarm_ctl_send_word; } SYSTEM_ALARM_REPORT_CTRL_WORD_T; // ±¨¾¯Éϱ¨×Ö /*********************************±¨¾¯¿ØÖÆ×ÖÏà¹Ø**************************************/ /*********************************¹Ø·§¿ØÖÆ×ÖÏà¹Ø**************************************/ typedef struct { uint16_t gprs_cmd_need_close_valve_flag : 1; // Ô¶´«ÃüÁî uint16_t gprs_cmd_close_valve_type : 1; uint16_t flow_direction_need_close_valve_flag : 1; // Á÷ÏòÒì³£ uint16_t flow_direction_close_valve_type : 1; uint16_t power_sta_need_close_valve_flag : 1; // Íâµç±ä»¯ uint16_t power_sta_close_valve_type : 1; uint16_t : 2; uint16_t cover_open_need_close_valve_flag : 1; // ¿ª¸Ç uint16_t cover_open_close_valve_type : 1; uint16_t main_board_removal_need_close_valve_flag : 1; // ¿ª¸Ç uint16_t main_board_removal_close_valve_type : 1; uint16_t : 4; } VALVE_STATUS_CHANGE_T; typedef struct { uint16_t valve_error_need_close_valve_flag : 1; // ·§ÃÅÒì³£ uint16_t valve_error_close_valve_type : 1; uint16_t balance_1_need_close_valve_flag : 1; // Óà¶îÉÙ¶î1 uint16_t balance_1_close_valve_type : 1; uint16_t balance_2_need_close_valve_flag : 1; // Óà¶îÉÙ¶î2 uint16_t balance_2_close_valve_type : 1; uint16_t balance_3_need_close_valve_flag : 1; // Óà¶îÉÙ¶î3 uint16_t balance_3_close_valve_type : 1; uint16_t balance_4_need_close_valve_flag : 1; // Óà¶îÉÙ¶î4 uint16_t balance_4_close_valve_type : 1; uint16_t balance_5_need_close_valve_flag : 1; // Óà¶îÉÙ¶î5 uint16_t balance_5_close_valve_type : 1; uint16_t : 4; } VALVE_BILLING_CHANGE_1_T; typedef struct { uint16_t set_cumulate_need_close_valve_flag : 1; // ÉèÖõÄÀÛ»ýÆøÁ¿µ½ uint16_t set_cumulate_close_valve_type : 1; uint16_t no_use_gas_need_close_valve_flag : 1; // ÎÞÓÃÆøÌìÊýµ½ uint16_t no_use_gas_close_valve_type : 1; uint16_t no_gprs_need_close_valve_flag : 1; // ÎÞÉϱ¨ÌìÊý uint16_t no_gprs_close_valve_type : 1; uint16_t : 10; } VALVE_BILLING_CHANGE_2_T; typedef struct { uint16_t lith_low_need_close_valve_flag : 1; // ﮵çµÍµç uint16_t lith_low_close_valve_type : 1; uint16_t lith_down_need_close_valve_flag : 1; // ﮵çÇ·/µôµç uint16_t lith_down_close_valve_type : 1; uint16_t lith_remove_need_close_valve_flag : 1; // ﮵çÒÆ³ý uint16_t lith_remove_close_valve_type : 1; uint16_t alka_low_need_close_valve_flag : 1; // ¼îµçµÍµç uint16_t alka_low_close_valve_type : 1; uint16_t alka_down_need_close_valve_flag : 1; // ¼îµçÇ·/µôµç uint16_t alka_down_close_valve_type : 1; uint16_t alka_remove_need_close_valve_flag : 1; // ¼îµçÒÆ³ý uint16_t alka_remove_close_valve_type : 1; uint16_t gprs_fail_need_close_valve_flag : 1; // gprsʧ°Ü uint16_t gprs_fail_close_valve_type : 1; uint16_t : 2; } VALVE_VOLTAGE_CHANGE_1_T; typedef struct { uint16_t flow_bat_low_need_close_valve_flag :1; uint16_t flow_bat_low_need_close_valve_type :1; uint16_t flow_bat_down_need_close_valve_flag :1; uint16_t flow_bat_down_need_close_valve_type :1; uint16_t read_485_abnormal_need_close_valve_flag :1; uint16_t read_485_abnormal_need_close_valve_type :1; uint16_t read_485_smaller_abnormal_need_close_valve_flag :1; uint16_t read_485_smaller_abnormal_need_close_valve_type :1; uint16_t pulse_broken_need_close_valve_flag :1; uint16_t pulse_broken_need_close_valve_type :1; uint16_t valve_bat_low_need_close_valve_flag :1; uint16_t valve_bat_low_need_close_valve_type :1; uint16_t valve_bat_down_need_close_valve_flag :1; uint16_t valve_bat_down_need_close_valve_type :1; uint16_t : 2; // ¸ù¾ÝЭÒ飬»ù±¾É϶¼ÊÇSZV10XÏà¹ØµÄ²ÎÊý£¬È¼Æø±íÎÞÓà } VALVE_VOLTAGE_CHANGE_2_T; typedef struct { uint16_t temp_up_need_close_valve_flag : 1; // ζȳ¬ÉÏÏÞ uint16_t temp_up_close_valve_type : 1; uint16_t temp_up_up_need_close_valve_flag : 1; // ζȳ¬ÉÏÉÏÏÞ uint16_t temp_up_up_close_valve_type : 1; uint16_t temp_down_need_close_valve_flag : 1; // ζȳ¬ÏÂÏÞ uint16_t temp_down_close_valve_type : 1; uint16_t temp_down_down_need_close_valve_flag : 1; // ζȳ¬ÏÂÏÂÏÞ uint16_t temp_down_down_close_valve_type : 1; uint16_t press_up_need_close_valve_flag : 1; // ѹÁ¦³¬ÉÏÏÞ uint16_t press_up_close_valve_type : 1; uint16_t press_up_up_need_close_valve_flag : 1; // ѹÁ¦³¬ÉÏÉÏÏÞ uint16_t press_up_up_close_valve_type : 1; uint16_t press_down_need_close_valve_flag : 1; // ѹÁ¦³¬ÏÂÏÞ uint16_t press_down_close_valve_type : 1; uint16_t press_down_down_need_close_valve_flag : 1; // ѹÁ¦³¬ÏÂÏÂÏÞ uint16_t press_down_down_close_valve_type : 1; } VALVE_TP_ERR_1_T; typedef struct { uint16_t temp_err_need_close_valve_flag : 1; // ζȴíÎó uint16_t temp_err_close_valve_type : 1; uint16_t press_err_need_close_valve_flag : 1; // ѹÁ¦´íÎó uint16_t press_err_close_valve_type : 1; uint16_t ambient_temp_up_need_close_valve_flag : 1; // »·¾³Î¶ȳ¬ÉÏÏÞ uint16_t ambient_temp_up_close_valve_type : 1; uint16_t ambient_temp_down_need_close_valve_flag : 1; // »·¾³Î¶ȳ¬ÏÂÏÞ uint16_t ambient_temp_down_close_valve_type : 1; uint16_t ambient_temp_sudden_change_need_close_valve_flag : 1; // »·¾³Î¶ȳ¬ÏÂÏÞ uint16_t ambient_temp_sudden_change_close_valve_type : 1; uint16_t : 6; } VALVE_TP_ERR_2_T; typedef struct { uint16_t flow_vel_err_need_close_valve_flag : 1; // Á÷ËÙÒì³£ uint16_t flow_vel_err_close_valve_type : 1; uint16_t tof_diff_err_need_close_valve_flag : 1; // ·ÉÐÐʱ¼ä²îÒì³£ uint16_t tof_diff_err_close_valve_type : 1; uint16_t sound_vel_err_need_close_valve_flag : 1; // ÉùËÙÒì³£ uint16_t sound_vel_err_close_valve_type : 1; uint16_t snr_err_need_close_valve_flag : 1; // ÐÅÔë±ÈÒì³££¨Signal to Noise Ratio£© uint16_t snr_err_close_valve_type : 1; uint16_t sig_up_need_close_valve_flag : 1; // ÐźÅÒç³ö uint16_t sig_up_close_valve_type : 1; uint16_t sig_th_err_need_close_valve_flag : 1; // ÐźÅãÐÖµÒì³££¨Threshold£© uint16_t sig_th_err_close_valve_type : 1; uint16_t gain_err_need_close_valve_flag : 1; // ÔöÒæÒì³£ uint16_t gain_err_close_valve_type : 1; uint16_t ut_lose_need_close_valve_flag : 1; // ̽ͷ¶ªÊ§£¨Ultrasonic Transducer£© uint16_t ut_lose_close_valve_type : 1; } VALVE_MEASURE_ERR_1_T; typedef struct { uint16_t flooding_water_need_close_valve_flag : 1; // ½øË® uint16_t flooding_water_close_valve_type : 1; uint16_t media_err_need_close_valve_flag : 1; // ½éÖÊÒì³£ uint16_t media_err_close_valve_type : 1; uint16_t dismantle_need_close_valve_flag : 1; // ²ð±í uint16_t dismantle_close_valve_type : 1; uint16_t metering_unit_abnormal_need_close_valve_flag : 1;//¼ÆÁ¿µ¥ÔªÒì³£ uint16_t metering_unit_abnormal_need_close_valve_type : 1;//¼ÆÁ¿µ¥ÔªÒì³£ uint16_t : 8; } VALVE_MEASURE_ERR_2_T; typedef struct { uint16_t leakage_need_close_valve_flag : 1; // ÆøÌåй©£¨½ÓÍⲿ±¨¾¯Æ÷Åжϣ© uint16_t leakage_close_valve_type : 1; uint16_t lcd_up_need_close_valve_flag : 1; // lcdÏÔʾ³¬ÏÞ uint16_t lcd_up_close_valve_type : 1; uint16_t lcd_temp_low_need_close_valve_flag : 1; // lcdµÍΠuint16_t lcd_temp_low_close_valve_type : 1; uint16_t flow_up_1_need_close_valve_flag : 1; // Á÷Á¿³¬ÏÞ1 uint16_t flow_up_1_close_valve_type : 1; uint16_t flow_up_2_need_close_valve_flag : 1; // Á÷Á¿³¬ÏÞ2 uint16_t flow_up_2_close_valve_type : 1; uint16_t flow_up_3_need_close_valve_flag : 1; // Á÷Á¿³¬ÏÞ3 uint16_t flow_up_3_close_valve_type : 1; uint16_t cl_constant_flow_need_close_valve_flag : 1; // ¹Ø·§ºãÁ÷£¨Î¢Ð¡Á÷Á¿Ð¹Â©£© uint16_t cl_constant_flow_valve_type : 1; uint16_t op_constant_flow_close_valve_flag : 1; // ¿ª·§ºãÁ÷ uint16_t op_constant_flow_valve_type : 1; } VALVE_OTHER_ERR_1_T; typedef struct { uint16_t cl_have_flow_need_close_valve_flag : 1; // ¹Ø·§×߯ø uint16_t cl_have_flow_valve_type : 1; uint16_t e2p_write_err_need_close_valve_flag : 1; // e2pдÒì³£ uint16_t e2p_write_err_flow_valve_type : 1; uint16_t e2p_read_err_need_close_valve_flag : 1; // e2p¶ÁÒì³£ uint16_t e2p_read_err_flow_valve_type : 1; uint16_t : 10; } VALVE_OTHER_ERR_2_T; typedef struct { VALVE_STATUS_CHANGE_T valve_ctr_1; VALVE_BILLING_CHANGE_1_T valve_ctr_2; VALVE_BILLING_CHANGE_2_T valve_ctr_3; VALVE_VOLTAGE_CHANGE_1_T valve_ctr_4; VALVE_VOLTAGE_CHANGE_2_T valve_ctr_5; VALVE_TP_ERR_1_T valve_ctr_6; VALVE_TP_ERR_2_T valve_ctr_7; VALVE_MEASURE_ERR_1_T valve_ctr_8; VALVE_MEASURE_ERR_2_T valve_ctr_9; VALVE_OTHER_ERR_1_T valve_ctr_10; VALVE_OTHER_ERR_2_T valve_ctr_11; } VALVE_CTL_BYTES_T; // ¹Ø·§¿ØÖÆ×Ö // ¹Ø·§×Ö³¤¶È #define VALVE_CTL_LENGTH (sizeof(VALVE_STATUS_CHANGE_T) + sizeof(VALVE_BILLING_CHANGE_1_T) + sizeof(VALVE_BILLING_CHANGE_2_T) + \ sizeof(VALVE_VOLTAGE_CHANGE_1_T) + sizeof(VALVE_VOLTAGE_CHANGE_2_T) + sizeof(VALVE_TP_ERR_1_T) + \ sizeof(VALVE_TP_ERR_2_T) + sizeof(VALVE_MEASURE_ERR_1_T) + sizeof(VALVE_MEASURE_ERR_2_T) + \ sizeof(VALVE_OTHER_ERR_1_T) + sizeof(VALVE_OTHER_ERR_2_T)) #define VALVE_CTL_LEN sizeof(VALVE_CTL_BYTES_T) #pragma pack() extern SYSTEM_STATUS_WORD_T system_status_word_g; extern SYSTEM_FUNCTION_CTRL_WORD_T system_function_ctrl_word_g; extern SYSTEM_ALARM_WORD_T system_alarm_word_g; extern SYSTEM_ALARM_CTRL_WORD_T system_alarm_ctrl_word_g; extern SYSTEM_ALARM_REPORT_CTRL_WORD_T system_alarm_report_ctrl_word_g; extern VALVE_CTL_BYTES_T valve_ctl_bytes_g; #endif