#ifndef _TCP_AUTOCAL_H_ #define _TCP_AUTOCAL_H_ //tcp>>>>------------- #define E_UDP_ADJ_DPD 1 //tcp-frame #define TCP_AUTOCAL_FRAME_HEADER 0X5AA5 #define TCP_AUTOCAL_FRAME_TAIL 0XFEEF #define TCP_AUTOCAL_FRAME_LEN_WITHOUT_DATA 16 #define TCP_AUTOCAL_FRAME_NOT_SUM_LEN 4 //整报文中,不需要参数校验和计算的长度 #define TCP_AUTOCAL_RET_TYPE_SEND 0 #define TCP_AUTOCAL_RET_TYPE_RET (1<<15) #define TCP_AUTOCAL_FRAME_OK (0) #define TCP_AUTOCAL_FRAME_ERR (1<<14) //buf #define TCP_AUTOCAL_REMOTE_MAX_REC_LEN 128 #define TCP_AUTOCAL_REMOTE_MAX_SEND_LEN 128 #define TCP_AUTOCAL_REMOTE_MAX_PRO_LEN 128 //port #define PA_TCP_PORT 6000 #define METERT_TCP_PORT 6020 #define EXC_UDP_PORT 6010 //err-num #define TCP_AUTOCAL_ERR_NONE 0 #define TCP_AUTOCAL_ERR_CHECK_SUM 1 #define TCP_AUTOCAL_ERR_CMD_TYPE 2 #define TCP_AUTOCAL_ERR_CMD_INDEX 3 #define TCP_AUTOCAL_ERR_SET_DATA 4 #define TCP_AUTOCAL_ERR_FRAME_FORAMT 5 #define TCP_AUTOCAL_ERR_RST_KEY 6 #define TCP_AUTOCAL_ERR_LOCAL_MODE 7 #define TCP_AUTOCAL_ERR_DST_ID 8 #define TCP_AUTOCAL_ERR_SRC_ID 9 #define TCP_AUTOCAL_ERR_UNKNOW_FRAME 0XFF //此错误,表示报文格式未知,不做应答 //link #define DEV_TIMEOUT 20 //band #define NET_BW_6M 0x0c #define NET_BW_7M 0x0b #define NET_BW_8M 0x0a //cmd-index typedef enum { E_READ_POWER_METER_PARA = 0x1001, E_READ_POWER_AMP_PARA = 0x2001, E_READ_EXC_PARA = 0x3002, E_READ_DEV_CMD_END=0x9000, }E_TCP_READ_DEV_PARA_CMD; typedef enum { E_WRITE_POWER_METER_PARA = 0x1001, E_WRITE_POWER_AMP_PARA = 0x2001, E_WRITE_EXC_PARA = 0x3002, E_WRITE_DEV_CMD_END=0x9000, }E_TCP_WRITE_DEV_PARA_CMD; typedef enum{ E_AUTOCAL_OK=0, E_PA_LINK_ERR, E_METER_LINK_ERR, E_METER_PARA_ERR, E_PA_PARA_ERR, E_PA_PARA_SEND_TIMEOUT_ERR, E_METER_PARA_ADJ_ERR, E_PA_FWD_PARA_ADJ_ERR,//E_PA_PARA_ADJ_ERR E_PA_REF_PARA_ADJ_ERR, E_DEVS_FREQ_DISACCORD_ERR, E_DEVS_FREQ_SWITCH_ERR, E_EXCITER_OUTPUT_MAX_ERR, E_FREQ_OVER_RANGE_ERR, E_FIRST_FREQ_MANUAL_CACLIB_ERR, E_FIRST_FREQ_MANUAL_SAVE_ERR, CALI_STAGE1=0x30, E_AUTOCAL_FINISH=0x66 }E_AUTOCAL_ERR; typedef enum{ CHECK_OK=0, CHECK_ERR }E_CHECK_STATUS; typedef enum{ STAGE1_STEP_CHECK_LINK=0, STAGE1_STEP_SEND_FIRST_FREQ, STAGE1_STEP_PROMPT_MANUAL_CALIB, STAGE1_STEP_CHECK_FIRST_FREQ, STAGE1_STEP_PROMPT_FIRST_FREQ_OK, STAGE2_STEP_BASE=0x20, STAGE2_STEP_CHECK_LINK, STAGE2_STEP_CONFIG_BASE_PARA, STAGE2_STEP_CHECK_FIRST_FREQ, STAGE2_STEP_SEND_CONFIG_PARA, STAGE2_STEP_CHECK_EXC_POWER, STAGE2_STEP_ADJ_PA_PARA, STAGE2_STEP_NEXT_FREQ, STAGE_STEP_CHECKED_ERR=0xff }E_CALIB_SETP; typedef enum{AUTO_CALIB_IDLE=0,AUTO_CALIB_STAGE1,AUTO_CALIB_STAGE2,AUTO_CALIB_FIRST_FREQ_CHECK,AUTO_CALIB_END}E_AUTO_CALIB_STAGE; typedef enum{ E_CALI_OFF=0, E_CALI_HOLD, E_CALI_START,//E_CALI_UPDATE, E_CALI_CHECK, E_CALI_UPDATE, }E_AUTOCAL_STATUS; //cmd-type typedef enum{CMD_TYPE_READ=1,CMD_TYPE_SET=2,CMD_TYPE_END}E_CMD_TYPE; //dev-id PA/CTL公用一个ID typedef enum{DEV_PA_ID=0x100,DEV_EXCITER_ID=0x200,DEV_METER_ID=0x400,DEV_REMOTE_PC_ID=0xA00}E_DEV_ID; //dec-index-offset #define POWER_METER_CMD_INDEX_OFFSET 0x1000 #define PA_CMD_INDEX_OFFSET 0x2000 #define EXCITER_CMD_INDEX_OFFSET 0x3000 //frame typedef struct { uint16 header; uint16 length; //整帧报文总长度 uint16 src_dev_id; uint16 dst_dev_id; uint16 cmd_type; uint16 cmd_index; uint32 data[4]; //实际长度有length域决定 uint16 sum; uint16 tail; }S_AUTOCAL_TCP_FRAME; //power-meter typedef struct { uint32 fwd_power; uint32 ref_power; uint32 fwd_db; uint32 ref_db; uint32 freq_ch; uint32 band; }S_POWER_METER_PARA; typedef struct { uint32 band; uint32 freq_ch; }S_POWER_METER_TCP_SET_PARA; //pa typedef struct { uint32 fwd_power; uint32 ref_power; uint32 fwd_db; uint32 ref_db; uint32 freq_ch; uint32 band; uint32 fwd_adj; uint32 ref_adj; }S_DEV_PA_PARA; typedef struct { uint32 band; uint32 freq_ch; uint32 fwd_adj; uint32 ref_adj; }S_PA_TCP_SET_PARA; //tcp<<<<------------- //设备参数>>>>----------- typedef struct { uint16 freq_ch; uint16 band; uint32 fwd_power; uint16 ref_power; uint16 fwd_db; uint16 ref_db; uint8 linkErr; }st_POWER_METER_LOG; typedef struct { uint16 freq_ch; uint16 band; uint32 fwd_power; uint16 ref_power; uint16 fwd_adj; uint16 ref_adj; uint8 linkErr; }st_PA_LOG; typedef struct { st_POWER_METER_LOG meter; st_PA_LOG pa; }st_AUTO_CALIBRATION_LOG; typedef struct { uint16 freq_ch; uint16 band; }st_POWER_METER_SET; typedef struct { uint16 freq_ch; uint16 band; uint16 fwd_adj; uint16 ref_adj; }st_PA_SET; typedef struct { st_POWER_METER_SET meter; st_PA_SET pa; }st_AUTO_CALIBRATION_SET; typedef struct { st_POWER_METER_LOG log; st_POWER_METER_SET set; }st_METER_PARA; typedef struct { st_PA_LOG log; st_PA_SET set; }st_PA_PARA; typedef struct { st_METER_PARA meter; st_PA_PARA pa; uint8 tx_freq; }st_AUTO_CAL_PARA; typedef struct { uint16 pa_cnt; uint8 pa_link; uint16 meter_cnt; uint8 meter_link; }st_DEV_LINK; //设备参数<<<<----------- typedef struct { uint16 first_freq; uint16 base_freq; uint16 exc_power; uint16 exc_pow_first;// 第一个频点的功率 uint16 exc_pow_min; uint16 exc_pow_max; uint32 pa_fwd; uint32 pa_fwd_first; uint16 pa_fwd_adj; uint16 pa_fwd_adj_first;// 第一个频点的修正值 uint16 pa_fwd_adj_min; uint16 pa_fwd_adj_max; uint32 meter_fwd; uint32 meter_fwd_first; uint16 exc_dw_range;//频点切换时激励器向下的最大范围 uint16 exc_up_range; uint16 exc_cal_fwd;//计算调节的功率值 }S_AUTOCAL_BASE_PARA; //测试>>>>------------- enum{NET_SOCKET=1,NET_CONNECT}; enum{NET_INDEX_PA=0,NET_INDEX_METER,NET_INDEX_END}; typedef struct{ uint8 socket; uint8 connect; }st_NET_TEST; typedef enum { ERR_NONE=0, PA_SOCKET_ERR, METRT_SOCKET_ERR, PA_CONNECT_ERR, METRT_CONNECT_ERR, PA_SEND_ERR, METER_SEND_ERR, }e_ERR_NUM; //测试<<<<------------- void update_power_meter_para(void); void update_pa_para(void); void tcp_write_power_meter_msg(void); void tcp_write_pa_msg(void); void tcp_client_task(void * pvParameters); void tcp_client_pa_task(void * pvParameters); void tcp_client_meter_task(void * pvParameters); uint8 udp_send_pa_test(void); uint8 update_autocal_base(void); uint8 update_autocal_base(void); uint8 save_autocal_base(void); uint8 init_autocal_base(void); void udp_read_pa_info(void); void auto_udp_task(void * pvParameters); #endif