#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
|