GPRS相关及基站信息获取
模组上电后会自动注册GSM网络,注册成功后便可以通话、发送短信, 要实现上网功能则还需要激活GPRS网络,GPRS的基本知识在本文基础知识部分已经阐述了,这里边不再进行说明。
我们知道激活GPRS网络需要进行附着和上下文激活两个步骤, 而且这两个步骤有先后顺序,先进行附着再进行上下文激活。 网络相关的事件及参数可以在api_event.h中找到
例程:demo/network
1. 宏定义
1.1. PDP_APN_MAX_LENGTH
APN最长长度
#define PDP_APN_MAX_LENGTH 64
1.2. PDP_USER_NAME_MAX_LENGTH
PDP用户名最长长度
#define PDP_USER_NAME_MAX_LENGTH 64
1.3. PDP_USER_PASSWD_MAX_LENGTH
PDP用户密码最长长度
#define PDP_USER_PASSWD_MAX_LENGTH 64
2. 结构体类型
2.1. Network_Status_t
网络状态
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;
2.2. Network_PDP_Context_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;
2.3. Network_Location_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;
2.4. Network_Error_t
网络错误信息
typedef enum{
NETWORK_ERROR_NONE = 0 ,
NETWORK_ERROR_MAX
} Network_Error_t;
3. 功能函数
3.1. Network_Callback_Func_t
typedef void (*Network_Callback_Func_t)(Network_Status_t status);
功能
网络回调函数,由用户定义
参数
- status:网络状态
返回值
无
3.2. Network_SetStatusChangedCallback
void Network_SetStatusChangedCallback(Network_Callback_Func_t callback);
功能
设置网络回调函数,除了使用回调函数,也可以在主任务接收来自底层的事件(建议)
参数
- callback:网路状态回调函数
返回值
无
3.3. Network_StartAttach
bool Network_StartAttach();
功能
开始附着网络
参数
无
返回值
- true:成功执行附着网络,附着成功后会产生事件,false:附着失败,可能是已经附着或者无法附着
3.4. Network_StartDetach
bool Network_StartDetach();
功能
去附着网络
参数
无
返回值
- true:执行去附着成功,false:执行去附着失败
3.5. Network_StartActive
bool Network_StartActive(Network_PDP_Context_t context);
功能
开始上下文激活
参数
- context:上下文设置,根据不同的运营商和网络设置
返回值
- 执行激活是否成功,如果失败,请检查信号以及是否已经附着了网络
3.6. Network_StartDeactive
bool Network_StartDeactive(uint8_t contextID);
功能
上下文去激活
参数
- contextID:上下文ID,这里作保留,目前传入值始终为1
返回值
- 去激活是否成功执行,具体是否成功会产生事件
3.7. Network_GetIp
bool Network_GetIp(char* ip, uint8_t size);
功能
获得GPRS ip地址,注意这里的ip地址不是公网地址,而是局域网地址
参数
- ip:获取到的ip地址点分十进制表示
- size:字符串长度
返回值
- 是否成功获取ip地址
3.8. Network_GetCellInfoRequst
bool Network_GetCellInfoRequst();
功能
发起获取附近基站信息请求,信息会以事件(API_EVENT_ID_NETWORK_CELL_INFO
)产生
参数
无
返回值
- 发起获取基站信息请求是否成功