#ifndef _UPPER_COMPUTER_RW_API_H_ #define _UPPER_COMPUTER_RW_API_H_ #include "define_all.h" #include "upper_computer.h" /*²Ù×÷ȨÏÞ*/ #define UC_NORMAL_USER 0x0001 // ÆÕͨÓû§È¨ÏÞ #define UC_POWER_USER UC_NORMAL_USER << 1 // ¸ß¼¶Óû§È¨ÏÞ #define UC_ADMIN_USER UC_POWER_USER << 1 // ¹ÜÀíÔ±Óû§È¨ÏÞ #define UC_SUPERUSER UC_ADMIN_USER << 1 // ³¬¼¶Óû§È¨ÏÞ #define UC_RECV_WRITE_TABLE_NUM (sizeof(uc_recv_write_tab_func) / sizeof(UC_RECV_WRITE_FUNC_TABLE_DRV_T)) #define UC_RECV_READ_TABLE_NUM (sizeof(uc_recv_read_tab_func) / sizeof(UC_RECV_READ_FUNC_TABLE_DRV_T)) #define UC_DATA_TABLE_BYTES_LENGTH 2 // ±íºÅ³¤¶È #define SLAVE_UNION_PARA_LENGTH sizeof(UC_SLAVE_PARA_UNION_T) #define SLAVE_SOFT_HARD_PARA_LENGTH sizeof(struct slave_soft_hard) #define SLAVE_PIPE_PARA_LENGTH sizeof(struct pipe_para) #define SLAVE_UT_PARA_LENGTH sizeof(struct ut_para) #define SLAVE_CORR_SET_REAL_PARA_LENGTH sizeof(struct corr_set_real) #define SLAVE_RAW_DATA_LENGTH sizeof(struct raw_data) #define SLAVE_REAL_TIME_DATA_LENGTH sizeof(struct real_time_data) #define SLAVE_UT_REAL_PARA_1_LENGTH sizeof(struct ut_real_para_1) #define SLAVE_UT_REAL_PARA_2_LENGTH sizeof(struct ut_real_para_2) #define SLAVE_RES_PARA_LENGTH sizeof(struct res_para) #define SLAVE_TEMP_TIMEDIFF_PARA_LENGTH sizeof(struct temp_timediff_para) #define SLAVE_CORR_FIXED_PARA_LENGTH sizeof(struct corr_fixed) typedef enum{ UCC_MASTER_INFO_RW = 2, UCC_TIME_RW = 45, UCC_SLAVE_INFO_RW_2 = 0x500, UCC_FLOW_CFG_PARA_RW, UCC_PRESS_CFG_PARA_RW, UCC_TEMP_CFG_PARA_RW, UCC_GPRS_CFG_RW, UCC_AES_KEYS_RW = 0x506, UCC_SAVE_TIME_RW, UCC_CUMULATE_SET_RW, UCC_STATE_BYTES_RO_2, UCC_FUNC_CFG_RW_2, UCC_ALARM_CFG_SEND_RW, UCC_VALVE_CTL_RW_2, UCC_VALVE_FLAG_WO, UCC_REALTIME_PARA_RO, UCC_MICRO_CONSTANT_PARA_RW, UCC_CYCLIC_LOG_DATA_INFO_RO, UCC_SEC_CORR_SET_PARA_RW, UCC_SEC_CORR_REAL_PARA_RO, UCC_ZERO_DRIFT_CFG_RW, UCC_BALANCE_SET_WO = 0x600, UCC_PAY_LOG_RO, UCC_PRICE_CFG_RW, UCC_BILLING_CFG_RW, UCC_SLAVE_INFO_RW = 0x2000, UCC_STATE_BYTES_RO = 0x2005, UCC_FUNC_CFG_RW, UCC_ALARM_CFG_RW, UCC_ALARM_SEND_RW, UCC_VALVE_CTL_RW = 0x2009, //0x2009 + 1 = 0x200A UCC_SLAVE_PIPE_RW = 0x2010,//ÓÉÓÚÊÇBCD¸ñʽËùÒÔÒªÖØÐ = 0x2010 UCC_SLAVE_UT_RW, UCC_SLAVE_CORR_SET_RW, UCC_SLAVE_CORR_REAL_RO, UCC_SLAVE_RAW_DATA_RO, UCC_SLAVE_TP_DATA_RO, UCC_SLAVE_UT_REAL_1_RO, UCC_SLAVE_UT_REAL_2_RW, UCC_SLAVE_RST_WO = 0x2020, UCC_SLAVE_STATUS_RO, UCC_SLAVE_ALARM_RO, UCC_SLAVE_REAL_DATA_RO, UCC_SLAVE_ZERO_2_ZERO_WO, UCC_SLAVE_RES_RW, UCC_SLAVE_PWR_RW, UCC_SLAVE_TEMP_TIMEDIFF_RO, UCC_SLAVE_CAL_DATA_PARA_RW, UCC_SLAVE_CORR_FIXED_RW, UCC_BASIC_INFO_RW = 0x2050, UCC_CAL_PULSE_RW, }UC_CMD; #pragma pack(1) typedef struct { float temp_value; float timediff_value; }TEMP_TIMEDIFF_T; typedef union { struct slave_soft_hard { uint8_t slave_pcb_num[5]; // pcbÐòÁкŠuint8_t slave_pcb_type[5]; // pcbÐͺŠuint8_t slave_hardware_ver[5]; // Ó²¼þ°æ±¾ uint8_t slave_firmware_ver[4]; // ¹Ì¼þ°æ±¾ uint8_t slave_firmware_crc[2]; // ¹Ì¼þcrc uint8_t slave_firmware_time[3]; // ¹Ì¼þ°æ±¾ÈÕÆÚ } slave_soft_hard_s; struct pipe_para { float pipe_area; float ut_physical_distance; float ut_effective_distance; float reimburse_time_a; float reimburse_time_b; uint8_t device_type; } pipe_para_s; struct ut_para { float real_vcc; float real_dac_value; float real_dac_num; // 0~4095 float ad_conver_factor; float ut_ad_line_a; // 1~2047 float ut_ad_line_b; float ut_da_line_line_a; float ut_da_line_line_b; } ut_para_s; struct corr_set_real { float flow[10]; float corrected[10]; } corr_set_real_s; struct raw_data { uint16_t ut_ad_a[500]; uint16_t ut_ad_b[500]; } raw_data_s; struct real_time_data { float forward_time_a; float reverse_time_b; float tof_diff; float flow_vel; float flow; float sound_vel; uint16_t forward_sig; uint16_t reverse_sig; uint16_t line_real_a; uint16_t line_real_b; uint16_t line_up_a; uint16_t line_up_b; uint16_t line_down_a; uint16_t line_down_b; uint16_t forward_gain; uint16_t reserve_gain; float raw_signal_a; float raw_signal_b; } real_time_data_s; struct temp_press { float temp; float press; }temp_press_s; struct ut_real_para_1 { uint16_t res_a; uint16_t res_b; uint16_t line_real_a; uint16_t line_real_b; uint16_t signal_max_a; uint16_t signal_max_b; }ut_real_para_1_s; struct ut_real_para_2 { uint16_t gain_max_a; uint16_t gain_min_a; uint16_t gain_max_b; uint16_t gain_min_b; uint16_t compensate_res_min; float res_time_diff; }ut_real_para_2_s; struct res_para { uint8_t res_state; uint8_t res_a; uint8_t res_b; }res_para_s; struct temp_timediff_para { uint8_t cal_state; uint8_t temp_point; TEMP_TIMEDIFF_T data_buffer[100]; }temp_timediff_para_s; struct corr_fixed { uint8_t corr_fixed_state; uint8_t fixed_len_point; float flow_data_point[8]; }corr_fixed_s; } UC_SLAVE_PARA_UNION_T; typedef ErrorStatus_STM32 (*pUc_RecvWrite_FuncHandler)(uint8_t *pData); typedef struct { const uint16_t uc_data_table; const uint8_t func_admin_mode; // º¯ÊýģʽȨÏÞ£¨´ú±í¸Ãº¯ÊýÔÚʲôģʽÏ¿ɷÃÎÊ£© const uint16_t func_admin_user; // º¯ÊýÓû§È¨ÏÞ£¨´ú±í¿É·ÃÎʵÄȨÏÞ¼¶±ð£© pUc_RecvWrite_FuncHandler UcRecvWriteFuncHandler; } UC_RECV_WRITE_FUNC_TABLE_DRV_T; // ÉÏλ»ú½ÓÊÕдÊý¾Ý±íÇý¶¯; typedef ErrorStatus_STM32 (*pUc_RecvRead_FuncHandler)(uint8_t *pOutputData, uint16_t *data_field_len); typedef struct { const uint16_t uc_data_table; const uint8_t func_admin_mode; // º¯ÊýģʽȨÏÞ£¨´ú±í¸Ãº¯ÊýÔÚʲôģʽÏ¿ɷÃÎÊ£© const uint16_t func_admin_user; // º¯ÊýÓû§È¨ÏÞ£¨´ú±í¿É·ÃÎʵÄȨÏÞ¼¶±ð£© pUc_RecvRead_FuncHandler UcRecvReadFuncHandler; } UC_RECV_READ_FUNC_TABLE_DRV_T; // ÉÏλ»ú½ÓÊÕ¶ÁÊý¾Ý±íÇý¶¯; #pragma pack() extern UC_SLAVE_PARA_UNION_T slave_para_union_g; /************************************** Write Data **************************************************************/ ErrorStatus_STM32 Uc_WriteMasterInfoHandler(uint8_t *pData); ErrorStatus_STM32 Uc_WriteSalve_PwrHandler(uint8_t *pData); ErrorStatus_STM32 Uc_WriteSlave_TransitionHandler(uint8_t *pData); ErrorStatus_STM32 Uc_WriteTimeHandler(uint8_t *pData); ErrorStatus_STM32 Uc_WriteFlowAlarmCfgHandler(uint8_t *pData); ErrorStatus_STM32 Uc_WritePressAlarmCfgHandler(uint8_t *pData); ErrorStatus_STM32 Uc_WriteTempAlarmCfgHandler(uint8_t *pData); ErrorStatus_STM32 Uc_WritePulseFactorHandler(uint8_t *pData); ErrorStatus_STM32 Uc_WriteFuncCfgHandler(uint8_t *pData); ErrorStatus_STM32 Uc_WriteAlarmCtlHandler(uint8_t *pData); ErrorStatus_STM32 Uc_WriteAlarmSendHandler(uint8_t *pData); ErrorStatus_STM32 Uc_WriteValveCtlHandler(uint8_t *pData); ErrorStatus_STM32 Uc_WriteBasicInfoHandler(uint8_t *pData); ErrorStatus_STM32 Uc_WriteFlowAlarmCfg_2Handler(uint8_t *pData); ErrorStatus_STM32 Uc_WritePressAlarmCfg_2Handler(uint8_t *pData); ErrorStatus_STM32 Uc_WriteTempAlarmCfg_2Handler(uint8_t *pData); ErrorStatus_STM32 Uc_WriteBillingAlarmCfg_Handler(uint8_t *pData); ErrorStatus_STM32 Uc_WritePulseFactor_2Handler(uint8_t *pData); ErrorStatus_STM32 Uc_WritePriceCfgHandler(uint8_t *pData); ErrorStatus_STM32 Uc_WriteGprsCfgHandler(uint8_t *pData); ErrorStatus_STM32 Uc_WriteAes128KeysHandler(uint8_t *pData); ErrorStatus_STM32 Uc_WriteSaveTimeCfgHandler(uint8_t *pData); ErrorStatus_STM32 Uc_WriteBalanceSetHandler(uint8_t *pData); ErrorStatus_STM32 Uc_WriteCumulateSetHandler(uint8_t *pData); ErrorStatus_STM32 Uc_WriteFuncCfg_2Handler(uint8_t *pData); ErrorStatus_STM32 Uc_WriteAlarmCtlSend_2Handler(uint8_t *pData); ErrorStatus_STM32 Uc_WriteValveCtl_2Handler(uint8_t *pData); ErrorStatus_STM32 Uc_WriteValveFlag_Handler(uint8_t *pData); ErrorStatus_STM32 Uc_WriteMicroConstant_Handler(uint8_t *pData); ErrorStatus_STM32 Uc_WriteSecCorrSet_Handler(uint8_t *pData); ErrorStatus_STM32 Uc_WriteZeroDriftCfg_Handler(uint8_t *pData); void Upper_ComputerWriteResultProcess(ErrorStatus_STM32 result_state, uint8_t *pData, UC_RECV_DATA_UNION_T *uc_recv_union_p); ErrorStatus_STM32 Upper_ComputerWriteProcess(uint16_t work_permissions, uint16_t table_id, uint8_t *pWriteData); /************************************** Read Data **************************************************************/ ErrorStatus_STM32 Uc_ReadMasterInfoHandler(uint8_t *pOutputData, uint16_t *data_field_len); ErrorStatus_STM32 Uc_ReadSalve_PwrHandler(uint8_t *pOutputData, uint16_t *pData_field_len); ErrorStatus_STM32 Uc_ReadSlave_TransitionHandler(uint8_t *pOutputData, uint16_t *data_field_len); ErrorStatus_STM32 Uc_ReadTimeHandler(uint8_t *pOutputData, uint16_t *data_field_len); ErrorStatus_STM32 Uc_ReadFlowAlarmCfgHandler(uint8_t *pOutputData, uint16_t *data_field_len); ErrorStatus_STM32 Uc_ReadPressAlarmCfgHandler(uint8_t *pOutputData, uint16_t *data_field_len); ErrorStatus_STM32 Uc_ReadTempAlarmCfgHandler(uint8_t *pOutputData, uint16_t *data_field_len); ErrorStatus_STM32 Uc_ReadPulseFactorHandler(uint8_t *pOutputData, uint16_t *data_field_len); ErrorStatus_STM32 Uc_ReadStateBytesHandler(uint8_t *pOutputData, uint16_t *data_field_len); ErrorStatus_STM32 Uc_ReadFuncCfgHandler(uint8_t *pOutputData, uint16_t *data_field_len); ErrorStatus_STM32 Uc_ReadAlarmCtlHandler(uint8_t *pOutputData, uint16_t *data_field_len); ErrorStatus_STM32 Uc_ReadAlarmSendHandler(uint8_t *pOutputData, uint16_t *data_field_len); ErrorStatus_STM32 Uc_ReadValveCtlHandler(uint8_t *pOutputData, uint16_t *data_field_len); ErrorStatus_STM32 Uc_ReadBasicInfoHandler(uint8_t *pOutputData, uint16_t *pData_field_len); ErrorStatus_STM32 Uc_ReadFlowAlarmCfg_2Handler(uint8_t *pOutputData, uint16_t *pData_field_len); ErrorStatus_STM32 Uc_ReadPressAlarmCfg_2Handler(uint8_t *pOutputData, uint16_t *pData_field_len); ErrorStatus_STM32 Uc_ReadTempAlarmCfg_2Handler(uint8_t *pOutputData, uint16_t *pData_field_len); ErrorStatus_STM32 Uc_ReadBillingAlarmCfg_Handler(uint8_t *pOutputData, uint16_t *pData_field_len); ErrorStatus_STM32 Uc_ReadPulseFactor_2Handler(uint8_t *pOutputData, uint16_t *pData_field_len); ErrorStatus_STM32 Uc_ReadPriceCfgHandler(uint8_t *pOutputData, uint16_t *pData_field_len); ErrorStatus_STM32 Uc_ReadGprsCfgHandler(uint8_t *pOutputData, uint16_t *pData_field_len); ErrorStatus_STM32 Uc_ReadAes128KeysHandler(uint8_t *pOutputData, uint16_t *pData_field_len); ErrorStatus_STM32 Uc_ReadSaveTimeCfgHandler(uint8_t *pOutputData, uint16_t *pData_field_len); ErrorStatus_STM32 Uc_ReadRealCumulateHandler(uint8_t *pOutputData, uint16_t *pData_field_len); ErrorStatus_STM32 Uc_ReadStateBytes_2Handler(uint8_t *pOutputData, uint16_t *pData_field_len); ErrorStatus_STM32 Uc_ReadFuncCfg_2Handler(uint8_t *pOutputData, uint16_t *pData_field_len); ErrorStatus_STM32 Uc_ReadAlarmCtlSend_2Handler(uint8_t *pOutputData, uint16_t *pData_field_len); ErrorStatus_STM32 Uc_ReadValveCtl_2Handler(uint8_t *pOutputData, uint16_t *pData_field_len); ErrorStatus_STM32 Uc_ReadRealParaHandler(uint8_t *pOutputData, uint16_t *pData_field_len); ErrorStatus_STM32 Uc_ReadMicroConstantHandler(uint8_t *pOutputData, uint16_t *pData_field_len); ErrorStatus_STM32 Uc_ReadCyclicLogDataHandler(uint8_t *pOutputData, uint16_t *pData_field_len); ErrorStatus_STM32 Uc_ReadSecCorrSetHandler(uint8_t *pOutputData, uint16_t *pData_field_len); ErrorStatus_STM32 Uc_ReadSecCorrRealHandler(uint8_t *pOutputData, uint16_t *pData_field_len); ErrorStatus_STM32 Uc_ReadZeroDriftCfgHandler(uint8_t *pOutputData, uint16_t *pData_field_len); void Upper_ComputerReadResultProcess(ErrorStatus_STM32 result_state, uint8_t *pData, UC_RECV_DATA_UNION_T *uc_recv_union_p); ErrorStatus_STM32 Upper_ComputerReadProcess(uint16_t work_permissions, uint16_t table_id, uint8_t *pOutput); #endif