stm32_ota/ABM开发板(BOOT源码)/BOOTV2.1/HARDWARE/LTE/EC20/ec20module.h
2024-12-17 20:03:43 +08:00

100 lines
5.5 KiB
C
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#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