提交SMOD ATSC IMX APP版本 V122
This commit is contained in:
@@ -0,0 +1,231 @@
|
||||
#ifndef _TCP_TASK_H
|
||||
#define _TCP_TASK_H
|
||||
#include "config.h"
|
||||
|
||||
#if USE_SPECT_DATA_TASK
|
||||
#include "type.h"
|
||||
#define SPECT_DEBUG_MODE 0
|
||||
#define SPECT_TASK_UART_DEBUG 0 //串口调试信息开关
|
||||
|
||||
#if SPECT_TASK_UART_DEBUG
|
||||
#define spect_printf printf
|
||||
#else
|
||||
#define spect_printf(p,...) do{;}while(0)
|
||||
#endif
|
||||
|
||||
#define FRAME_WITHOUT_DATA_LEN (10) //FRAME结构中,数据区为空时的最小数据长度
|
||||
|
||||
#define FRAME_HEADER (0X46)
|
||||
#define FRAME_TAIL (0X96)
|
||||
|
||||
#define SPECT_CMD_ACK (1<<15) //高位置1表示ack
|
||||
enum SPECT_CMD_TYPE
|
||||
{
|
||||
FRAME_CMD_READ_1 = 0x0001, //读取复数信息
|
||||
FRAME_CMD_READ_2 = 0X0002, //读取IMD和SNR信息
|
||||
FRAME_CMD_RETURN_ERR_LICENCE = 0x0003, //licence 错误,
|
||||
|
||||
FRAME_CMD_WRITE_1 = 0x0101,
|
||||
FRAME_CMD_OTHER_1 = 0x0201,
|
||||
};
|
||||
|
||||
enum SPECT_FRAME_ERR
|
||||
{
|
||||
FRAME_ERR_NONE = 0,
|
||||
FRAME_ERR_ID,
|
||||
FRAME_ERR_HEADER,
|
||||
FRAME_ERR_LEN,
|
||||
FRAME_ERR_INDEX,
|
||||
FRAME_ERR_DATA,
|
||||
FRAME_ERR_SUM,
|
||||
FRAME_ERR_TAIL,
|
||||
};
|
||||
|
||||
|
||||
struct frame_index
|
||||
{
|
||||
uint8 index1;
|
||||
uint8 index2;
|
||||
};
|
||||
|
||||
//数据结构体,类似于串口通讯的,但进行了部分改动,如长度域由单字节扩充为双字节(数据比较长)
|
||||
//超过1字节的,按照小端序存放,低字节在前,高字节在后
|
||||
//__packed
|
||||
#pragma pack(1)
|
||||
struct tcp_data_frame
|
||||
{
|
||||
uint8 id; //激励器ID
|
||||
uint8 header; //帧头,固定值
|
||||
uint16 len; //帧长度 整帧,从id到tail
|
||||
uint16 cmd; //数据内容类型
|
||||
uint16 index; //当应答数据存在多帧时,为应答序号 高字节为第n帧(从1开始),低字节为总帧号
|
||||
//uint16 reserved; //保留字节 以待扩充(字节对齐)
|
||||
void *pdata; //数据区 也可定义为数组模式 实际长度为len-10
|
||||
uint8 sum; //数据校验和 从帧头道sum前的字节累加和,不包含sum //利用指针直接访问sum和tail域不可
|
||||
uint8 tail; //帧尾,固定值
|
||||
};
|
||||
#pragma pack()
|
||||
|
||||
//字节对齐
|
||||
struct snr_imd
|
||||
{
|
||||
uint8 rsnr;
|
||||
uint8 tsnr;
|
||||
uint8 limd;
|
||||
uint8 uimd;
|
||||
};
|
||||
|
||||
|
||||
|
||||
struct complex
|
||||
{
|
||||
uint16 real;
|
||||
uint16 imag;
|
||||
};
|
||||
|
||||
#define TCP_FRAME_DATA_LEN (1024) //应答数据时,包含的有效数据长度
|
||||
#define TCP_DATA_COMPLEX_NUM (4096*2) //一总数据包含的复数个数 tx和rx共8k个复数 原先是只有tx
|
||||
#define TCP_DATA_BUF_LEN (TCP_DATA_COMPLEX_NUM*sizeof(struct complex))
|
||||
|
||||
#define TCP_FRAM_SNR_IMD_LEN (sizeof(struct snr_imd))
|
||||
|
||||
#define TCP_SPECT_REC_BUF_LEN (64)
|
||||
#define TCP_SPECT_SEND_BUF_LEN (1536+64)
|
||||
|
||||
|
||||
#define TCP_SPECT_COMM_PORT (5700)
|
||||
|
||||
|
||||
|
||||
struct frame_struct
|
||||
{
|
||||
uint8 spect_data[TCP_FRAME_DATA_LEN];
|
||||
struct snr_imd snr_imd_data;
|
||||
};
|
||||
|
||||
|
||||
#ifndef htons
|
||||
#define htons(a) \
|
||||
((((a) >> 8) & 0x00ff) | \
|
||||
(((a) << 8) & 0xff00))
|
||||
#endif
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
#if 1
|
||||
#define FPGA_UPGRADE_CTRL_ADDR (0xe0)
|
||||
#define FPGA_UP_CTRL_RESET_EN_MASK (1<<0)
|
||||
#define FPGA_UP_CTRL_CHECKID_MASK (1<<1)
|
||||
#define FPGA_UP_CTRL_VERIFY_MASK (1<<2)
|
||||
#define FPGA_UP_CTRL_HDRESET_EN_MASK (1<<7)
|
||||
|
||||
#define FPGA_UPGRADE_STATUS_ERROR_MASK (1<<0)
|
||||
#define FPGA_UP_STATUS_DONE_MASK (1<<1)
|
||||
#define FPGA_UP_STATUS_BUSY_MASK (1<<2)
|
||||
#define FPGA_UP_STATUS_EARSE_OK_MASK (1<<3)
|
||||
#endif
|
||||
|
||||
#define __tcp_fpgaUp_task__ 1
|
||||
#if __tcp_fpgaUp_task__
|
||||
|
||||
//-----------------------------------------------
|
||||
#define FPGA1_UPGRADE_ADDRESS (0XFFFF)
|
||||
#define FPGA2_UPGRADE_ADDRESS (0X1FFF)
|
||||
|
||||
#define MAX_PER_FRAME_LEN 100
|
||||
#define MAX_DATA_LEN 544
|
||||
#define TX_DATA_LEN 10
|
||||
|
||||
/*
|
||||
:10F14000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCF
|
||||
10F14000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
*/
|
||||
#define UPDATA_RAW_FRAME_MIN_LEN 11
|
||||
#define UPDATA_RAW_FRAME_MAX_LEN 50
|
||||
|
||||
|
||||
#define FRAME_NO_DATA_LEN 4
|
||||
|
||||
#define USE_FPGA_UP_WRITE (1)
|
||||
|
||||
//-----------------------------------------------
|
||||
|
||||
enum E_upgrade_step{
|
||||
UPGRADE_START = 0x01, // 发起升级
|
||||
POLL_ERASER = 0x02, // poll MCU 的 eraser 状态,是否完成
|
||||
W_DATA_BLOCK = 0x03, // 取文件数据块发送给 MCU
|
||||
W_DATA_BLOCK_LAST = 0x04, // 最后一个文件数据块发送给MCU的 STEP_BUT
|
||||
};
|
||||
|
||||
enum E_ack{
|
||||
START_OK = 0x01, // MCU 回复 可以开始升级
|
||||
ERASER_ING, // MCU 回复 正在擦除
|
||||
ERASER_END, // MCU 回复 擦除完成
|
||||
READY, // MCU 回复 烧写当前数据块完成,可发送下一数据块
|
||||
NOT_READY, // MCU 回复 当前数据块失败,PC等1ms再重复发送当前数据块
|
||||
ABORT_SUCCESS, // MCU 回复 成功结束
|
||||
ABORT_ERROR, // MCU 回复 失败结束
|
||||
ACKP_BUT
|
||||
};
|
||||
|
||||
/*
|
||||
head | 帧头 0xAA
|
||||
cmd |
|
||||
datalen | 0x0000-0xffff 后面数据断的长度
|
||||
data | datalen长度的字节数据
|
||||
crc | 0xx 1个字节的校验码,从head到crc之前的数据字节sum,head、cmd、datalen、data
|
||||
tail | 帧尾 0xBB
|
||||
*/
|
||||
//__packed
|
||||
#pragma pack(1)
|
||||
typedef struct
|
||||
{
|
||||
uint8 head;
|
||||
uint8 cmd;
|
||||
uint16 datalen;
|
||||
uint8 *pdata;
|
||||
uint8 sum;
|
||||
uint8 tail;
|
||||
}S_FPGA_UP_FRAME_NEW ;
|
||||
#pragma pack()
|
||||
|
||||
typedef struct
|
||||
{
|
||||
uint8 head;
|
||||
uint8 lenH;
|
||||
uint8 lenL;
|
||||
uint8 addr1;
|
||||
uint8 addr2;
|
||||
uint8 addr3;
|
||||
uint8 addr4;
|
||||
uint8 typeH;
|
||||
uint8 typeL;
|
||||
uint8 data[32];
|
||||
uint8 crcH;
|
||||
uint8 crcL;
|
||||
}S_FGPA_UPDATA_FRAME;
|
||||
|
||||
//-----------------------------------------------
|
||||
|
||||
extern int fpga_up_thr(void * pvParameters);
|
||||
extern void * tcp_remote_thr(void *args);
|
||||
extern void * udp_remote_thr(void * args);
|
||||
|
||||
|
||||
#endif//#if __tcp_fpgaUp_task__
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
void check_fpga_up_finished_reboot_sys(void);
|
||||
|
||||
void tcp_remote_task(void * pvParameters);
|
||||
void udp_remote_task(void * pvParameters);
|
||||
void fpga_upgrade_task(void * pvParameters);
|
||||
void check_ts_err_status(void);
|
||||
void check_fpga_gps_lock_status(void);
|
||||
extern void check_send_alarm_state(void);
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user