模组上电后会自动注册GSM网络,注册成功后便可以通话、发送短信, 要实现上网功能则还需要激活GPRS网络,GPRS的基本知识在本文基础知识部分已经阐述了,这里边不再进行说明。
我们知道激活GPRS网络需要进行附着和上下文激活两个步骤, 而且这两个步骤有先后顺序,先进行附着再进行上下文激活。 网络相关的事件及参数可以在api_event.h中找到
例程:demo/network
APN最长长度
#define PDP_APN_MAX_LENGTH 64
PDP用户名最长长度
#define PDP_USER_NAME_MAX_LENGTH 64
PDP用户密码最长长度
#define PDP_USER_PASSWD_MAX_LENGTH 64
网络状态
typedef enum{
NETWORK_STATUS_OFFLINE = 0 ,
NETWORK_STATUS_REGISTERING ,
NETWORK_STATUS_REGISTERED ,
NETWORK_STATUS_DETACHED ,
NETWORK_STATUS_ATTACHING ,
NETWORK_STATUS_ATTACHED ,
NETWORK_STATUS_DEACTIVED ,
NETWORK_STATUS_ACTIVATING ,
NETWORK_STATUS_ACTIVATED ,
NETWORK_STATUS_ATTACH_FAILED ,
NETWORK_STATUS_ACTIVATE_FAILED ,
NETWORK_STATUS_MAX
}Network_Status_t;
PDP上下文参数设置
typedef struct{
char apn[PDP_APN_MAX_LENGTH]; // Access Point Name
char userName[PDP_USER_NAME_MAX_LENGTH];
char userPasswd[PDP_USER_PASSWD_MAX_LENGTH];
}Network_PDP_Context_t;
基站信息
typedef struct
{
uint8_t sMcc[3]; //移动国家号码,中国为460
uint8_t sMnc[3]; //移动网号,中国移动00,中国联通01
uint16_t sLac; //位置区号码
uint16_t sCellID; //小区识别码
uint8_t iBsic; //基站识别码
int8_t iRxLev; //接收报告信号强度
uint8_t iRxLevSub; //接收报告信号强度小数部分
uint16_t nArfcn; //基站频点
} Network_Location_t;
网络错误信息
typedef enum{
NETWORK_ERROR_NONE = 0 ,
NETWORK_ERROR_MAX
} Network_Error_t;
typedef void (*Network_Callback_Func_t)(Network_Status_t status);
网络回调函数,由用户定义
- status:网络状态
无
void Network_SetStatusChangedCallback(Network_Callback_Func_t callback);
设置网络回调函数,除了使用回调函数,也可以在主任务接收来自底层的事件(建议)
- callback:网路状态回调函数
无
bool Network_StartAttach();
开始附着网络
无
- true:成功执行附着网络,附着成功后会产生事件,false:附着失败,可能是已经附着或者无法附着
bool Network_StartDetach();
去附着网络
无
- true:执行去附着成功,false:执行去附着失败
bool Network_StartActive(Network_PDP_Context_t context);
开始上下文激活
- context:上下文设置,根据不同的运营商和网络设置
- 执行激活是否成功,如果失败,请检查信号以及是否已经附着了网络
bool Network_StartDeactive(uint8_t contextID);
上下文去激活
- contextID:上下文ID,这里作保留,目前传入值始终为1
- 去激活是否成功执行,具体是否成功会产生事件
bool Network_GetIp(char* ip, uint8_t size);
获得GPRS ip地址,注意这里的ip地址不是公网地址,而是局域网地址
- ip:获取到的ip地址点分十进制表示
- size:字符串长度
- 是否成功获取ip地址
bool Network_GetCellInfoRequst();
发起获取附近基站信息请求,信息会以事件(API_EVENT_ID_NETWORK_CELL_INFO
)产生
无
- 发起获取基站信息请求是否成功