100 lines
5.5 KiB
C
100 lines
5.5 KiB
C
#ifndef _EC20MODULE_H
|
||
#define _EC20MODULE_H
|
||
#include <stdbool.h>
|
||
#include "usart.h"
|
||
#include "syslib.h"
|
||
|
||
/*****************************************
|
||
*ec20module内部常变量
|
||
****************************************/
|
||
#define EC20_UART COM1 //STM32与EC20通信串口的映射
|
||
#define MODULE_CMDPACK_LEN 1288 //EC20 module相关命令字符串的最大长度
|
||
#define SIM_ICCID_LEN 25 //存放 SIM卡ICCID号 数组的长度
|
||
#define EC20_VER_LEN 20 //粗放EC20模块 软件版本号 数组的长度
|
||
#define EC20_VOL_LEN 4 //存放EC20模块电压 数组的长度
|
||
#define CSQ_LEN 3 //存放EC20模块信号质量 数组的长度
|
||
|
||
/*EC20 3.6V供电稳压片使能引脚:高电平使能*/
|
||
#define EC20_POW_PORT PE
|
||
#define EC20_POW_PIN PIN15
|
||
#define EC20_POW PEout(EC20_POW_PIN)
|
||
|
||
/*EC20 硬件复位引脚:常态低电平,高电平脉冲复位EC20*/
|
||
#define EC20_RST_PORT PE //PE15
|
||
#define EC20_RST_PIN PIN11
|
||
#define EC20_RST PEout(EC20_RST_PIN)
|
||
|
||
/*****************************************
|
||
*ec20module用户自定义数据类型
|
||
****************************************/
|
||
typedef enum
|
||
{
|
||
AT_MODE = 0 , //AT命令模式
|
||
USER_MODE = 1 , //接收sever用户数据模式
|
||
} EC20RECMODE_e ; //EC20串口工作模式
|
||
|
||
typedef struct
|
||
{
|
||
uint8_t cmdNum ; //命令序号
|
||
char *cmdStr ; //发送命令字符串
|
||
uint16_t timeout ; //接收回码超时时间t=revTimeout*100ms
|
||
char *trueStr ; //正确的回码子串
|
||
volatile int trueOffset ; //正确回码字符子串在ec20AtBuf中的偏移地址
|
||
char *falseStr ; //指令处理失败返回的字符串指针
|
||
RunResult revResult ; //处理结果
|
||
uint8_t rtyNum ; //失败后重发次数
|
||
}EC20_CMD_DATA_s; //ec20通用命令收发参数结构体
|
||
|
||
typedef struct
|
||
{
|
||
char ec20SoftVer[EC20_VER_LEN+1] ; //存放EC20模块的软件版本
|
||
char ec20Voltage[EC20_VOL_LEN+1] ; //存放EC20模块的供电电压
|
||
char csq[CSQ_LEN+1] ; //3+1bytes 存放信号质量CSQ
|
||
char simICCID[SIM_ICCID_LEN+1] ; //25+1bytes 存放SIM卡的ICCID号
|
||
}ModuleParam_s ; //EC20存放模块参数的结构体
|
||
|
||
/*****************************************
|
||
*ec20可供外部使用的常变量
|
||
****************************************/
|
||
#define MAX_IP_LEN 16 //IPV4 IP地址的最大长度
|
||
#define PORT_MAXLEN 6 //IPV4 端口的最大长度(0-65535)
|
||
#define EC20_ATBUF_LEN 320 //ec20AtBuf缓冲区长度
|
||
#define EC20_HTTPBUF_LEN 320 //ec20AtBuf缓冲区长度
|
||
#define EC20_FTPBUF_LEN (2048+256) //ec20FtpBuf缓冲区长度
|
||
|
||
extern ModuleParam_s sEc20Param ; //声明ModuleParam_s结构体变量sEc20Param,存放EC20一些信息,供上层调用
|
||
extern volatile bool httpDataMode ; //串口模式:接收http数据模式
|
||
extern volatile bool ftpDataMode ; //串口模式:接收ftp数据模式
|
||
extern char ec20AtBuf[EC20_ATBUF_LEN] ; //EC20 AT命令回码存放缓冲区
|
||
extern char ec20HttpBuf[EC20_HTTPBUF_LEN] ; //EC20 AT命令回码存放缓冲区
|
||
extern char ec20FtpBuf[EC20_FTPBUF_LEN] ; //EC20 FTP返回数据存放缓冲区
|
||
extern volatile int ec20FtpBufIndex ; //ec20FtpBuf缓冲区写指针
|
||
extern FrameQueue_s sTcpQueue ; //环形帧缓冲区,存储模块返回的tcp相关数据
|
||
extern FrameQueue_s sUrcQueue ; //环形帧缓冲区,存储模块返回的URC数据
|
||
|
||
/*****************************************
|
||
*内部函数声明
|
||
****************************************/
|
||
RunResult EC20_SendModuleCmd( uint8_t cmdNum, char *format,... ) ; // EC20通过串口发送module相关命令
|
||
void EC20_Uart_Init(void) ; //初始化EC20_UART
|
||
void EC20_GPIO_Init( void ) ; //初始化EC20相关控制IO
|
||
void EC20_POWON(void) ; //EC20 3.6V供电稳压片使能上电
|
||
void EC20_POWOFF(void) ; //EC20 3.6V供电稳压片失能断电
|
||
RunResult EC20_START(void) ; //EC20开机上电、等待串口“RDY”回码
|
||
RunResult EC20_Handshake( void ) ; //mcu与EC20通过EC20_UART握手
|
||
RunResult EC20_CloseEcho(void) ; //关闭EC20 AT命令的回显
|
||
void Ec20ReceiveFrameCallback(char *recvBuf, uint16_t recvLen) ; //EC20_UART串口帧中断回调函数
|
||
|
||
/*****************************************
|
||
*对外接口函数声明
|
||
****************************************/
|
||
extern void Ec20AtBufReset(void) ; //ec20AtBuf缓冲区 初始化
|
||
extern void Ec20HttpBufReset(void) ; //ec20HttpBuf缓冲区 初始化
|
||
extern void Ec20FtpBufReset(void) ; //ec20FtpBuf缓冲区初始化
|
||
extern RunResult EC20_CLOSE(void) ; //EC20关机流程 软关机+断电
|
||
extern RunResult EC20_Query_SoftRelese(char *version) ; //获取EC20的软件版本号
|
||
extern RunResult EC20_Query_Voltage(char *voltage) ; //获取EC20的供电电压
|
||
extern RunResult EC20_Module_Init( void ) ; //EC20模块相关初始化
|
||
|
||
#endif
|