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)产生
参数
无
返回值
- 发起获取基站信息请求是否成功