#ifndef EC200A_4G_H #define EC200A_4G_H #ifdef __cplusplus /*C++编译环境下兼容C语言*/ extern "C" { #endif /*------ Exported includes(头文件) ----------------------*/ #include "main.h" #include "plat_comm/4g_module/ec200a_4g_cfg.h" /*------ Exported struct(结构体定义) --------------------*/ typedef enum { STEP_SWCHTO_CMD_MODE = 0, //切换到指令模式 STEP_QUERY_SIM_STATE, //查询SIM卡状态 STEP_QUERY_CCID, //查询sim卡号 STEP_SET_CFUN, //设置功能模式 STEP_SET_CGREG, //设置PS域 网络注册状态 STEP_QUERY_CGREG, //查询PS域 网络注册状态 STEP_SET_QICSGP_APN, //设置TCP场景参数 设置APN STEP_SET_CGQMIN, //设置服务质量参数(最低可接受的) STEP_SET_CGQREQ, //设置服务质量参数(请求的) STEP_QUERY_CSQ, //查询信号强度 STEP_SET_QIACT, //激活PDP场景 STEP_SET_SSL_CFG, //TLS 配置(QSSLCFG 等,仅在需要 TLS 时执行) STEP_SET_SOCKET_AND_OPEN, //设置socket 参数并打开(TCP 或 TLS) STEP_SAVE, //保存当前设置并重启 STEP_INIT_OK, //设置完成 STEP_INIT_DEBUG, // 调试 }E_EC200A_4G_INIT_STEP; typedef struct { U8_T u8_Sim_Type; //APN类型(0:移动,1:联通,2:电信) U8_T u8_socketB_en; //socketB使能 默认套接字分发功能使能 - 使能分发时,组帧解帧需要添加帧头;不使能直接透传模式,将数据上送平台,但无法区分多平台 U8_T *socketA_IP; //域名或者IP+端口号 例如 www.baidu.com:1234 U8_T *socketB_IP; //is NULL 则不存在socket U8_T *apn_str; U16_T socketA_port; //端口号 U16_T socketB_port; U8_T use_tls; //是否启用模块内置 TLS:0=TCP,1=TLS(wss) }S_4G_CONFIG_PARA; typedef struct { U8_T u8_out_cnt; //超时计数 U8_T u8_csq; //信号强度 E_EC200A_4G_INIT_STEP e_4g_init_step; //无线通信模块初始化步骤标志 U8_T u8_Sim_Card[NUM_20]; //SIM卡号 U8_T u8_4g_Version[NUM_20]; //4g版本 U32_T u32_outtime; //超时计数 单位秒 U8_T u8_tcp_socket_id; // 非透传:QISEND/QIRD 使用的 connectID(明文 TCP=0;TLS 与 QSSLOPEN 的 clientID 一致) S_4G_CONFIG_PARA s_4g_para; }S_4G_CTRL_DATA; /*------ Exported variables(变量定义) -------------------*/ /*------ Exported function prototypes (函数声明) -------*/ S8_T s8_ec200a_4g_init(void); void v_4g_data_init(S_4G_CONFIG_PARA *s_4g_para); void v_4g_send_data(U8_T u8_id, U8_T *u8_sendBuf , U16_T u16_len); U16_T u16_4g_recv_data(U8_T *u8_recvBuf ,U16_T u16_len); /** 排空模组 RX FIFO(丢弃);FTP / QISEND 等共用 UART 去粘连 */ void v_4g_uart_rx_discard_fifo(void); #if !EC200A_TCP_USE_TRANSPARENT_MODE /** 非透传:经 AT+QISEND 发送 TCP/TLS 负载(按 EC200A_TCP_APP_RW_MAX 分包;详见 ec200a_4g.c) */ void v_ec200a_tcp_app_send(U8_T u8_id, U8_T *u8_sendBuf, U16_T u16_len); /** 非透传:AT+QIRD 读模组 Socket 缓冲(单次至多 EC200A_TCP_APP_RW_MAX;大帧需上层循环) */ U16_T u16_ec200a_tcp_app_recv(U8_T *u8_recvBuf, U16_T u16_len); /** 模组已在 STEP_INIT_OK 且 PDP 正常时,仅 AT+QICLOSE/QSSLCLOSE + QIOPEN/QSSLOPEN 重建业务 Socket(不拆 PDP) */ S8_T s8_ec200a_tcp_socket_close(void); S8_T s8_ec200a_tcp_socket_soft_reopen(void); #endif U8_T u8_ec200a_modem_tcp_stack_ok(void); U8_T u8_get_sim_card(U8_T *u8_data ,U8_T buf_len); U8_T u8_UAT_check_signal_quality(void); void v_4g_log_data_send_data(U8_T *u8_sendBuf , U16_T u16_len); S8_T s8_ec200a_qiact(void); /** 按 context_id 配置/激活/去激活 PDP,供 FTP 与业务 TCP 分场景(见 ec200a_4g_cfg.h) */ S8_T s8_ec200a_qicsgp_ctx(U8_T context_id); S8_T s8_ec200a_qiact_ctx(U8_T context_id); S8_T s8_ec200a_qideact_ctx(U8_T context_id); #ifdef __cplusplus } #endif #endif /* EC200A_4G_H */