#ifndef _CYCLIC_STORAGE_DATA_CREATED_API_H_ #define _CYCLIC_STORAGE_DATA_CREATED_API_H_ #include "define_all.h" #include "valve_control.h" #include "billing.h" #include "system_parameter.h" #define SEND_FLOW_DATA_LOG_FORMAT_SIZE sizeof(SYS_SEND_FLOW_DATA_SYSLOG_FORMAT_T) #define HISTORY_FLOW_DATA_LOG_FORMAT_SIZE sizeof(SYS_FLOW_DATA_SYSLOG_FORMAT_T) #define VALVE_LOG_FORMAT_SIZE sizeof(VALVE_SYSLOG_FORMAT_T) #define PAY_LOG_FORMAT_SIZE sizeof(PAY_SYSLOG_FORMAT_T) #define RESTORE_DEFAULT_LOG_FORMAT_SIZE sizeof(RESTORE_DEFAULT_SYSLOG_FORMAT_T) #define TIMING_LOG_FORMAT_SIZE sizeof(TIMING_SYSLOG_FORMAT_T) #define AMEND_LOG_FORMAT_HEAD (sizeof(PARA_AMEND_SYSLOG_FORMAT_T) - sizeof(PARA_AMEND_UNION_T)) #define GAS_CUMULATE_AMEND_LOG_FORMAT_SIZE (sizeof(struct gas_cumulate_amend) + AMEND_LOG_FORMAT_HEAD) #define BALANCE_AMEND_LOG_FORMAT_SIZE (sizeof(struct balance_amend) + AMEND_LOG_FORMAT_HEAD) #define BILLING_PRICE_AMEND_LOG_FORMAT_SIZE (sizeof(struct billing_price_amend) + AMEND_LOG_FORMAT_HEAD) #define PRESS_CFG_AMEND_LOG_FORMAT_SIZE (sizeof(struct press_cfg_amend) + AMEND_LOG_FORMAT_HEAD) #define TEMP_CFG_AMEND_LOG_FORMAT_SIZE (sizeof(struct temp_cfg_amend) + AMEND_LOG_FORMAT_HEAD) #define FLOW_CFG_AMEND_LOG_FORMAT_SIZE (sizeof(struct flow_cfg_amend) + AMEND_LOG_FORMAT_HEAD) #define CAL_PULSE_AMEND_LOG_FORMAT_SIZE (sizeof(struct cal_pulse_amend) + AMEND_LOG_FORMAT_HEAD) #define SYS_FUNC_CFG_AMEND_LOG_FORMAT_SIZE (sizeof(struct sys_func_cfg_amend) + AMEND_LOG_FORMAT_HEAD) #define ALARM_CTL_SEND_BYTES_AMEND_LOG_FORMAT_SIZE (sizeof(struct sys_alarm_ctl_send_amend) + AMEND_LOG_FORMAT_HEAD) #define VALVE_CTL_BYTES_AMEND_LOG_FORMAT_SIZE (sizeof(struct sys_valve_ctl_bytes_amend) + AMEND_LOG_FORMAT_HEAD) #define BILLING_ALARM_CFG_AMEND_LOG_FORMAT_SIZE (sizeof(struct billing_alarm_cfg_amend) + AMEND_LOG_FORMAT_HEAD) #define SEC_CORR_PARA_AMEND_LOG_FORMAT_SIZE (sizeof(struct sec_corr_para_amend) + AMEND_LOG_FORMAT_HEAD) #define ALARM_DATA_LOG_FORMAT_HEAD (sizeof(ALARM_SYSLOG_FORMAT_T) - sizeof(ALARM_SYSLOG_UNION_T)) #define MEASURE_ALARM_DATA_LOG_FORMAT_SIZE (sizeof(struct measure_alarm_data) + ALARM_DATA_LOG_FORMAT_HEAD) #define OTHER_ALARM_DATA_LOG_FORMAT_SIZE (sizeof(struct other_alarm_data) + ALARM_DATA_LOG_FORMAT_HEAD) typedef enum { SDM_NULL = 0U, SDM_UPPER, // ÉÏλ»ú SDM_BT_APP, // À¶ÑÀAPP SDM_GPRS_CMD, // Ô¶´«ÃüÁî } SYS_DATA_MENDER; typedef enum { TC_NULL = 0U, TC_AUTO, TC_GPRS, TC_UPPER, TC_BT_APP, }TIMING_CAUSE_T; #pragma pack(1) /*****************************Cyclic Data************************************************/ typedef union { struct measure_alarm_data { float tof_up; float tof_down; float tof_diff; uint8_t signal_intensity_up; uint8_t signal_intensity_down; uint8_t signal_gain_up; uint8_t signal_gain_down; uint16_t snr_up; // ÐÅÔë±È_ÉÏͨµÀ uint16_t snr_down; float sound_vel; float flow_vel; uint8_t reserve[20]; // Ô¤Áô } measure_alarm_data_s; struct other_alarm_data { uint32_t price_now; double balance_now; uint8_t reserve[20]; } other_alarm_data_s; } ALARM_SYSLOG_UNION_T; typedef struct { uint16_t record_num; uint8_t record_time[6]; uint16_t alarm_id; double forward_cumulate_sc; // ÕýÏò±ê¿öÀÛ»ýÁ¿ double forward_cumulate_wc; float instant_sc; float instant_wc; float temperature; float pressure; float cpu_temperature; // »·¾³ÎÂ¶È uint8_t lith_vcc; uint8_t alka_vcc; uint16_t status_bytes[SYS_STATUS_BYTES_TYPE_LENGTH >> 1]; ALARM_SYSLOG_UNION_T alarm_syslog_union; } ALARM_SYSLOG_FORMAT_T; typedef struct // 19 bytes { uint16_t record_num; uint8_t record_time[6]; VALVE_WORK_TYPE work_type; SYS_ALARM_VALVE_T switch_cause; uint16_t open_cnt; uint16_t close_cnt; uint8_t reserve[4]; } VALVE_SYSLOG_FORMAT_T; //4 bytesÔ¤Áô //·§ÃÅÀúÊ·¼Ç¼ typedef struct // 11 bytes { uint16_t record_num; uint8_t record_time[6]; SYS_DATA_MENDER mender; uint8_t reserve[2]; } RESTORE_DEFAULT_SYSLOG_FORMAT_T; // 4 bytesÔ¤Áô//»Ö¸´Ä¬ÈÏÉèÖüǼ¸ñʽ typedef struct // 30 bytes { uint16_t record_num; // ÐòºÅ uint8_t record_time[6]; // ʱ¼ä SYS_DATA_MENDER mender; // ÐÞ¸ÄÕß uint16_t plant_number; // ³§¼Ò´úÂë uint8_t pay_type; uint16_t pay_cnt; int32_t pay_value; long long pay_value_cumulate; uint8_t reserve[4]; // Ô¤ÁôÊÇΪÁËÒÔºóÇø·ÖÆøÁ¿³äÖµ } PAY_SYSLOG_FORMAT_T; // 4 bytesÔ¤Áô // ³äÖµ¼Ç¼ typedef struct { uint16_t record_num; // ÐòºÅ uint8_t record_time_before[6]; // ʱ¼ä TIMING_CAUSE_T timing_cause; uint16_t plant_number; // ³§¼Ò´úÂë uint8_t record_time_now[6]; uint8_t reserve[6]; }TIMING_SYSLOG_FORMAT_T;//6 bytesÔ¤Áô //Уʱ¼Ç¼ typedef union { struct gas_cumulate_amend // 36 bytes { double cumulate_sc_before; double cumulate_wc_before; double cumulate_sc_after; double cumulate_wc_after; uint8_t reserve[4]; } gas_cumulate_amend_s; // ÀÛ»ýÁ¿Ð޸ļǼ struct balance_amend // 20 bytes { double balance_before; double balance_now; uint8_t reserve[4]; // Ô¤ÁôÊÇΪÁËÒÔºóÇø·ÖÊÇÓà¶î»¹ÊÇÓàÁ¿ } balance_amend_s; // Óà¶î/ÓàÁ¿Ð޸ļǼ¸ñʽ struct billing_price_amend // 222 bytes { LADDER_PRICE_CFG_PARA_T price_cfg_before; LADDER_PRICE_CFG_PARA_T price_cfg_now; } billing_price_amend_s; // ¼Æ·Ñ¼Û¸ñÐ޸ļǼ¸ñʽ£¨²»ÓÃÔ¤Áô£¬ÒòΪLADDER_PRICE_CFG_PARA_TÖÐÓÐÔ¤Áô£© struct press_cfg_amend // 88 bytes { SYS_PRESS_ALARM_CFG_T press_cfg_before; SYS_PRESS_ALARM_CFG_T press_cgf_now; } press_cfg_amend_s; // ѹÁ¦ÅäÖÃÐ޸ļǼ¸ñʽ£¨²»ÓÃÔ¤Áô£¬ÒòΪSYS_PRESS_ALARM_CFG_TÖÐÓÐÔ¤Áô£© struct temp_cfg_amend // 76 bytes { SYS_TEMP_ALARM_CFG_T temp_cfg_before; SYS_TEMP_ALARM_CFG_T temp_cgf_now; } temp_cfg_amend_s; // ζÈÅäÖÃÐ޸ļǼ¸ñʽ£¨²»ÓÃÔ¤Áô£¬ÒòΪSYS_TEMP_ALARM_CFG_TÖÐÓÐÔ¤Áô£© struct flow_cfg_amend // 56 bytes { SYS_FLOW_ALARM_CFG_T flow_cfg_before; SYS_FLOW_ALARM_CFG_T flow_cfg_now; } flow_cfg_amend_s; // Á÷Á¿ÅäÖÃÐ޸ļǼ¸ñʽ£¨²»ÓÃÔ¤Áô£¬ÒòΪSYS_FLOW_ALARM_CFG_TÖÐÓÐÔ¤Áô£© struct cal_pulse_amend // 16 bytes { CAL_PULSE_PARA_T cal_pulse_cfg_before; CAL_PULSE_PARA_T cal_pulse_cfg_now; } cal_pulse_amend_s; // ±ê¶¨Âö³å²ÎÊýÐ޸ļǼ¸ñʽ£¨²»ÓÃÔ¤Áô£¬ÒòΪCAL_PULSE_PARA_TÖÐÓÐÔ¤Áô£© struct sys_func_cfg_amend { uint16_t func_cfg_bytes_before[SYS_FUNC_CTL_BYTES_TYPE_LENGTH >> 1]; uint16_t func_cfg_bytes_now[SYS_FUNC_CTL_BYTES_TYPE_LENGTH >> 1]; } sys_func_cfg_amend_s; struct sys_alarm_ctl_send_amend { uint16_t alarm_ctl_bytes_before[SYS_ALARM_CTL_BYTES_TYPE_LENGTH >> 1]; uint16_t alarm_send_bytes_before[SYS_ALARM_SEND_BYTES_TYPE_LENGTH >> 1]; uint16_t alarm_ctl_bytes_now[SYS_ALARM_CTL_BYTES_TYPE_LENGTH >> 1]; uint16_t alarm_send_bytes_now[SYS_ALARM_SEND_BYTES_TYPE_LENGTH >> 1]; } sys_alarm_ctl_bytes_amend_s; struct sys_valve_ctl_bytes_amend { uint16_t valve_ctl_bytes_before[VALVE_CTL_LEN >> 1]; uint16_t valve_ctl_bytes_now[VALVE_CTL_LEN >> 1]; } sys_valve_ctl_bytes_amend_s; struct billing_alarm_cfg_amend { BILLING_ALARM_CFG_T billing_alarm_before; BILLING_ALARM_CFG_T billing_alarm_now; } billing_alarm_cfg_amend_s; struct sec_corr_para_amend { SECOND_ORDER_CORR_T sec_corr_para_before; SECOND_ORDER_CORR_T sec_corr_para_now; }sec_corr_para_amend_s; } PARA_AMEND_UNION_T; typedef struct { uint16_t record_num; uint8_t record_time[6]; SYS_DATA_MENDER mender; uint16_t plant_number; PARA_AMEND_UNION_T para_amend_union; } PARA_AMEND_SYSLOG_FORMAT_T; // ¸÷ÖÖ²ÎÊýÐ޸ļǼ¸ñʽ typedef struct // 110 bytes { uint8_t check_sum; // ÓÉÓÚ´¢´æ¶Áдʱ¿ÉÄܱ»Öжϴò¶Ï£¬ÇÒÔ¶´«Êý¾Ý½ÏÎªÖØÒª£¬ËùÒÔµ¥¶ÀÌí¼ÓУÑéºÍ×öÅжϡ£ uint8_t record_time[6]; double forward_cumulate_sc; // ÕýÏò±ê¿öÀÛ»ýÁ¿ double forward_cumulate_wc; float instant_sc; float instant_wc; float temperature; float pressure; uint32_t price_now; double balance_now; float cpu_temp; uint8_t lith_vcc; uint8_t alka_vcc; uint16_t snr_up; // ÐÅÔë±È_ÉÏͨµÀ uint16_t snr_down; uint8_t signal_gain_up; uint8_t signal_gain_down; uint8_t signal_intensity_up; uint8_t signal_intensity_down; float tof_up; float tof_down; float sound_vel; float flow_vel; uint16_t sys_state_bytes[SYS_STATUS_BYTES_TYPE_LENGTH >> 1]; uint8_t reserve[17]; } SYS_SEND_FLOW_DATA_SYSLOG_FORMAT_T; // ·¢ËÍÁ÷Á¿¶³½áÊý¾Ý¼Ç¼¸ñʽ typedef struct // 62 bytes { uint8_t record_time[6]; double forward_cumulate_sc; // ÕýÏò±ê¿öÀÛ»ýÁ¿ double forward_cumulate_wc; float instant_sc; float instant_wc; float temperature; float pressure; uint32_t price_now; double balance_now; uint8_t reserve[12]; } SYS_FLOW_DATA_SYSLOG_FORMAT_T; // 50 bytes + 12 bytesÔ¤Áô Á÷Á¿Êý¾ÝÀúÊ·¼Ç¼´¢´æ¸ñʽ #pragma pack() extern PAY_SYSLOG_FORMAT_T pay_para_g; extern VALVE_SYSLOG_FORMAT_T valve_log_g; extern PARA_AMEND_SYSLOG_FORMAT_T para_amend_log_g; extern TIMING_SYSLOG_FORMAT_T timing_log_g; void System_ValveLog_CyclicStorageHandler(VALVE_WORK_TYPE *pSucc_flag, SYS_ALARM_VALVE_T cause_id, VALVE_SYSLOG_FORMAT_T *valve_log_buffer_p, __IO RTC_TimeDateTypeDef *calendar_p); void AlarmLog_CyclicStorageHandler(SYS_ALARM_VALVE_T * pAlarm_id, SYS_REAL_TIME_DATA_T *realtime_data_p, BILLING_REAL_PARA_T *billing_realtime_p, __IO RTC_TimeDateTypeDef *calendar_p); void SendFlowData_LogRecordCreated(SYS_SEND_FLOW_DATA_SYSLOG_FORMAT_T *pOutput, SYS_REAL_TIME_DATA_T *realtime_data_p, BILLING_REAL_PARA_T *billing_realtime_p, __IO RTC_TimeDateTypeDef *calendar_p); void FlowData_LogRecordCreated(SYS_FLOW_DATA_SYSLOG_FORMAT_T *pOutput, SYS_REAL_TIME_DATA_T *realtime_data_p, BILLING_REAL_PARA_T *billing_realtime_p, __IO RTC_TimeDateTypeDef *calendar_p); void PayLog_CyclicStorageHandler(uint8_t *pPay_flag, PAY_SYSLOG_FORMAT_T *pay_log_buffer_p, __IO RTC_TimeDateTypeDef *calendar_p); void ParaAmendLog_CyclicStorageHandler(PARA_AMEND_T *pAmend_flag, PARA_AMEND_SYSLOG_FORMAT_T *amend_log_buffer_p, __IO RTC_TimeDateTypeDef *calendar_p); void TimingLog_CyclicStorageHandler(TIMING_SYSLOG_FORMAT_T * timing_log_buffer_p,__IO RTC_TimeDateTypeDef *calendar_p); #endif