/******************************************************************** **dryloop通讯模块头文件 ********************************************************************/ #ifndef DRYLOOP_H #define DRYLOOP_H #define DRYLOOP_UART_DEBUG 0 #if DRYLOOP_UART_DEBUG #define dryloop_printf printf #else #define dryloop_printf(p,...) do{;}while(0) //若没开启调试模式,printf定义为空 #endif #define MODE_SYNC 0 //异步模式 不可阻塞型 #define MODE_ASYN 1 //同步模式 阻塞型 必须等应答后才能发下一条命令 #define DRYLOOP_UART_NUM (3) #define DRYLOOP_UART_BPS (115200) #define DRYLOOP_UART_SEND_MODE MODE_ASYN //异步发送,还是同步发送 #define DRYLOOP_UART_BUF_MAX_LEN 128 #define DRYLOOP_UART_TIMEOUT (300/SYSTICKMS) //超时时间300ms typedef enum { DRYLOOP_I2C_RF_KEY = 0X00, DRYLOOP_I2C_PWRDW_KEY = 0X01, DRYLOOP_I2C_PWRUP_KEY = 0X02, DRYLOOP_I2C_VER = 0X03, DRYLOOP_I2C_VERYY = 0X04, DRYLOOP_I2C_VERMM = 0X05, DRYLOOP_I2C_VERDD = 0X06, DRYLOOP_I2C_AMP_KEY = 0X07, //读取寄存器 //配置寄存器 DRYLOOP_I2C_TS_LED = 0X10, DRYLOOP_I2C_RF_LED = 0X11, DRYLOOP_I2C_SYSERR_LED = 0X12, DRYLOOP_I2C_FWD_ADDR = 0X13 }E_DRYLOOP_I2C_ADDRESS; #define DRYLOOP_UART_COMM_HEAD (0XFA) typedef struct { uint8 rec[DRYLOOP_UART_BUF_MAX_LEN]; uint8 send[DRYLOOP_UART_BUF_MAX_LEN]; uint32 rec_index; BOOL rec_proc_flag; uint32 un_resp_flag; //未应答标志 为0时才能发新命令,发送命令置位,超时或收到应答后清零 uint32 send_tick; }S_DRYLOOP_UART_BUF,*pS_DRYLOOP_UART_BUF; typedef struct { BOOL rf; BOOL rf_need_send; uint32 rf_send_tick; BOOL ts; BOOL ts_need_send; uint32 ts_send_tick; BOOL sys_err; BOOL sys_need_send; uint32 sys_send_tick; }S_DRYLOOP_LED_STATUS,*pS_DRYLOOP_LED_STATUS; typedef struct { BOOL rf_need_get; uint32 rf_get_tick; BOOL power_need_get; uint32 power_get_tick; BOOL amp_need_get; uint32 amp_get_tick; }S_DRYLOOP_GET_STATUS,*pS_DRYLOOP_GET_STATUS; //__packed #pragma pack(1) typedef struct { uint8 header; uint8 data_len; uint8 cmd; uint8 other[100]; }S_DRYLOOP_UART_PROTOCOL,*pS_DRYLOOP_UART_PROTOCOL; #pragma pack() #define DRYLOOP_UART_PROTOCOL_ANS_CMD (0X3F) #define DRYLOOP_UART_PROTOCOL_ANS_OK (1<<7) #define DRYLOOP_UART_PROTOCOL_ANS_ERR (1<<6) #define DRYLOOP_UART_PROTOCOL_ERR_SUM (1) #define DRYLOOP_UART_PROTOCOL_ERR_UNKNOW_CMD (2) #define DRYLOOP_UART_PROTOCOL_ERR_RESERVE1 (3) #define DRYLOOP_UART_PROTOCOL_ERR_RESERVE2 (4) #define DRYLOOP_TIMER_CYCLE 5 #define DRYLOOO_CHECK_VERSION 10 #define DRYLOOO_CHECK_CYCLE 15 // 单位tick 1tick 10ms #define DRYLOOP_SEND_CYCLE 9*10 #define DRYLOOP_SEND_CHECK_CYCLE 500 //单位tick 5s 周期性的发送状态周期 #define DRYLOOP_GET_CHECK_CYCLE 50 //单位tick 500ms 周期性的获取状态周期 //由数据区长度获取整个报文的长度 #define GET_UART_LEN_BY_DATA_LEN(data_len,frame_len) \ do{\ (frame_len) = (data_len)+5;\ }while(0) extern S_DRYLOOP dryloop_status; extern void dryloop_init(void); extern void dryloop_check(void); extern void dryloop_send(void); extern void dryloop_reset(void); extern void dryloop_process(void); extern void dryloop_amp_on(BOOL flag); extern void dryloop_uart_buf_check(uint8* pbuf,uint32 len); #endif /***************************END*************************************/