高通平台data call管理库dsi"/>
【应用】高通平台data call管理库dsi
【基本概念】
DSI:Data Service Interface,数据业务接口
netctrl:网络控制
bring up / tear down:数据呼叫通道的建立、销毁
APN:Access Point Name,移动接入点名称
PDN:Packet data network,包数据网络(分组业务网络)
DNS:Domain Name Service,域名解析服务
Qos:Quality Of Service,业务质量控制
QMI:Qualcomm Messaging Interface,高通消息传递接口
本库启动的时候作为一个守护进程,底层依赖QMI提供功能,客户端启动进程后调用本库连接守护进程处理数据业务。
本库提供:
1. WWAN数据业务的建立、销毁和基本配置,可以配置APN、IP协议族、技术选择优先级、用户名密码、profile ID等
2. Qos(DSI_NetCtrl provides methods for applications to request UE-initiated QoS)
3. 多播和多媒体多播
4. DNS(Domain Name Service)
5. 各种数据业务状态查询
6. 支持双IP数据呼叫,客户端只要使用单个接口即可,不用连接两次
7. 支持多PDN同时建立数据业务,应用程序必须控制路由
8. 支持多个进程连接DSI_NetCtrl,每个进程可以独立控制数据连接的建立和销毁,多PDN场景也可以用多个进程处理
【数据呼叫流程】
1. dsi_init,初始化,客户端连接到守护进程
2. dsi_start_data_call,设置数据连接参数,启动数据连接,启动前可以配置多次,可以配置的参数包括:
2.1 UMTS / CDMA ID
2.2 APN
2.3 IP Version (IPv4 / IPv6/ IPv4v6)
2.4 APN用户名密码
2.5 认证优先级
2.6 技术类型 / 扩展技术名称
3. dsi_stop_data_call,销毁数据连接(同时网络侧可能发起数据连接销毁,此时将网络状态通知到dsi进程)
【Qos】
主要功能:
流量监管(对进入接口的,超出限制速率的报文进行丢弃)
流量整形(对接口发送的,超出限制速率的报文先进行缓存,等待流量不超出速率时发送)
拥塞避免(在出现网络拥塞时对符合条件的报文进行丢弃)
拥塞管理(在出现网络拥塞时采用队列调度的方法对符合条件的队列中的报文优先发送)
流策略(可根据不同的流分类实现诸如禁止/允许通过,重标记报文优先级、重标记报文VLAN标签、重定向流量、过滤报文、
流量镜像、启用流量统计功能等行为)。
dsi库支持用户发起的和网络侧发起的Qos。
Qos部分待续。。。
【接口】
int dsi_init ( int mode )
设置MODE:DSI_MODE_GENERAL / DSI_MODE_TES,返回0代表OK
dsi_hndl_t dsi_get_data_srvc_hndl ( dsi_net_ev_cb cb_fn, void∗user_data )
初始化结构体dsi_store_s:
typedef struct dsi_store_s
{
dsi_net_ev_cb net_ev_cb; /* caller/owner callback function */
void * user_data; /* caller/owner cookie */
dsi_evt_payload_t *ev_payload; /* Cached event payload */
dsi_priv_t priv; /* private data */
int dsi_tech; /* if user provided specific technology
* other than CDMA/UMTS, use this field
* to store it */
void * self; /* used to validate dsi_stor_t ptr */
} dsi_store_t;
dsi库中有20个结构体的数组:
/* max supported dsi handles */
#define DSI_MAX_DATA_CALLS 20
在这个数组中查询到空的,新申请变量做初始化配置后加入到数组中,返回新申请节点的指针给用户供后续使用。
void dsi_rel_data_srvc_hndl ( dsi_hndl_t hndl )
释放掉handler句柄,将申请过的句柄空间释放掉,从结构体数组中删除即可
int dsi_set_data_call_param ( dsi_hndl_t hndl, dsi_call_param_identifier_t identifier, dsi_call_param_value_t∗info )
设置data call的参数,参数定义如下:
/** Specifies which configuration parameter to update using
dsi_set_data_call_param(). */
typedef enum dsi_call_info_enum_e
{
DSI_CALL_INFO_MIN = 0,
DSI_CALL_INFO_UMTS_PROFILE_IDX, /**< UMTS profile ID. */
DSI_CALL_INFO_APN_NAME, /**< APN name. */
DSI_CALL_INFO_USERNAME, /**< APN user name (if any). */
DSI_CALL_INFO_PASSWORD, /**< APN password (if any). */
DSI_CALL_INFO_AUTH_PREF, /**< Authentication preference. */
DSI_CALL_INFO_CDMA_PROFILE_IDX, /**< CDMA profile ID. */
DSI_CALL_INFO_IP_ADDR,
DSI_CALL_INFO_DEVICE_NAME,
DSI_CALL_INFO_TECH_PREF, /**< Technology preference. */
DSI_CALL_INFO_CALL_TYPE,
DSI_CALL_INFO_IP_VERSION, /**< Preferred IP family for the call. */
DSI_CALL_INFO_EXT_TECH_PREF,
DSI_CALL_INFO_PARTIAL_RETRY,
DSI_CALL_INFO_APP_TYPE,
DSI_CALL_INFO_MAX
} dsi_call_param_identifier_t;
int dsi_start_data_call ( dsi_hndl_t hndl ) / int dsi_stop_data_call ( dsi_hndl_t hndl )
启动、停止data call,直接带入初始化时获得的句柄就OK
待续。。。
更多推荐
【应用】高通平台data call管理库dsi
发布评论