#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include "tq_network.h"
#include "tq_uart.h"
#include "tq_common.h"
宏定义 | |
#define | with_r 0 |
类型定义 | |
typedef void(* | Callback) (int intput_type, char *pin, char *puk) |
回调函数类型,其中intput_type为0时仅需输入PIN码进行解锁,若连续3次输入错误PIN码,这时intput_type为1,需要输入PUK码进行解锁,同时输入新的PIN码。 | |
函数 | |
int | send_at (int fd, const char *cmd, char *buff, int buff_size) |
用于发送AT指令 更多... | |
int | cmd_AT (int fd) |
发送指令“AT”,检查模块是否在线。 更多... | |
int | cmd_signal (int fd, char *buff, int buff_size) |
发送指令“AT+CSQ”,获取信号强度 更多... | |
void | set_Callback (Callback) |
设置用于输入PUK与PIN码的回调函数。 | |
int | init (int fd, enum Model model, char *reply, int reply_size) |
对GSM模块进行初始化 更多... | |
int | dial (int fd, char *dialing_type, enum PDP_type pdp_type, char *apn, enum AUTH auth, char *name, char *pwd) |
使用RMNET、RMDIS、ECM方式通过AT指令进行拨号。 更多... | |
int | dial_pppd (char *modem, enum PDP_type pdp_type, char *apn, char *auth, char *name, char *pwd) |
使用PPPD方式通过脚本进行拨号 更多... | |
int | disconnect_dial (int fd, char *dialing_type) |
对于RMNET、RMDIS、ECM方式通过AT指令断开拨号。 更多... | |
void | disconnect_pppd () |
对于PPPD方式,使用本函数断开拨号。 | |
Date | Version | Author | Description |
---|---|---|---|
2021-09-03 | 1.0 | owen | 第一次发布,对串口操作函数进一步封装用于发送AT指令,目前考虑到不同厂家AT指令可能不同,通用性不强,故只写了AT和CSQ两条指令。 |
2021-12-07 | 1.1 | owen | 添加了初始化,拨号,断开拨号等函数接口。 |
int cmd_AT | ( | int | fd | ) |
发送指令“AT”,检查模块是否在线。
fd | AT调试串口文件描述符 |
int cmd_signal | ( | int | fd, |
char * | buff, | ||
int | buff_size | ||
) |
发送指令“AT+CSQ”,获取信号强度
fd | AT调试串口文件描述符 |
buff | 数据接收缓存区 |
buff_size | 数据接收缓存区大小 |
int dial | ( | int | fd, |
char * | dialing_type, | ||
enum PDP_type | pdp_type, | ||
char * | apn, | ||
enum AUTH | auth, | ||
char * | name, | ||
char * | pwd | ||
) |
使用RMNET、RMDIS、ECM方式通过AT指令进行拨号。
fd | MODEM串口或AT串口文件描述符 |
dialing_type | 拨号方式,参数有"RMNET"、"RNDIS"、"ECM" |
pdp_type | PDP类型,详情可见上方PDP_type枚举类型 |
apn | APN类型,详情可见上方APN枚举类型,若为专网则需通过运营方得到APN节点名称 |
auth | 鉴权类型,详情可见上方AUTH枚举类型 |
name | 登陆用户名。移动卡默认的用户名是 GSM ,电信卡和联通卡默认的是 CARD。如果有指定的,则需要设置成客户提供的用户名 |
pwd | 登陆密码。移动卡默认的密码是1234,电信卡和联通卡默认的是CARD。如果有指定的,则需要设置成客户提供的密码 |
int dial_pppd | ( | char * | modem, |
enum PDP_type | pdp_type, | ||
char * | apn, | ||
char * | auth, | ||
char * | name, | ||
char * | pwd | ||
) |
使用PPPD方式通过脚本进行拨号
modem | 模块的MODEM端口 |
pdp_type | PDP类型,详情可见上方PDP_type枚举类型 |
apn | APN类型,详情可见上方APN枚举类型,若为专网则需通过运营方得到APN节点名称 |
auth | 鉴权类型,如"-pap","-chap"等,如无可传入NULL |
name | 登陆用户名。移动卡默认的用户名是 GSM ,电信卡和联通卡默认的是 CARD。如果有指定的,则需要设置成客户提供的用户名 |
pwd | 登陆密码。移动卡默认的密码是1234,电信卡和联通卡默认的是CARD。如果有指定的,则需要设置成客户提供的密码 |
int disconnect_dial | ( | int | fd, |
char * | dialing_type | ||
) |
对于RMNET、RMDIS、ECM方式通过AT指令断开拨号。
fd | AT调试串口文件描述符 |
dialing_type | 拨号方式,参数有"RMNET"、"RNDIS"、"ECM" |
int init | ( | int | fd, |
enum Model | model, | ||
char * | reply, | ||
int | reply_size | ||
) |
对GSM模块进行初始化
fd | AT调试串口文件描述符 |
model | 模块选择,详情可见上方Model枚举类型 |
reply | 数据接收缓存区,里面有多条指令的返回结果。 |
reply_size | 数据接收缓存区大小 |
int send_at | ( | int | fd, |
const char * | cmd, | ||
char * | buff, | ||
int | buff_size | ||
) |
用于发送AT指令
fd | AT调试串口文件描述符 |
cmd | AT指令,如“AT”,通常是ASCII文本。指令也可以不以''结尾。 |
buff | 数据接收缓存区 |
buff_size | 数据接收缓存区大小 |
实际上该函数是封装了一些串口操作。 检查设备节点,并发送指令,等待一秒后开始接收数据返回,超时为2秒,若超时则再等待2秒再去读取指令返回,超时为0。