Files
smod_atsc_app/atsc_app/inc/tcp_autocal.h
T

339 lines
7.1 KiB
C

#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