首页 > 其他分享 >ECM拨号回调函数分析

ECM拨号回调函数分析

时间:2022-12-08 18:32:59浏览次数:34  
标签:函数 cb ECM QCMAP 拨号 client qcmap ind data


static void qcmap_init(void)

{

if(g_data_call_sm.g_qcmap_client) {

if((g_data_call_sm.g_qcmap_client = get_qcmap_client(manager_qcmap_ind_cb_thread, NULL))) {

log_warn("create QCMAP failure");

return;

}

}

if(call_enable_mobileap()) {

log_warn("Enable QCMAP failure");

return;

}

}

在做ECM拨号功能时,涉及的底层响应回调上层接口函数;

(1)quectel_data_call.c

传入回调函数参数get_qcmap_clientà manager_qcmap_ind_cb_thread.

(2)qcmap_client_c.cpp        

int get_qcmap_client(qcmap_client_ind_cb ind_cb, void *user_data)

{

if(g_qcmap_client) {

return 0;

}



g_qcmap_client = (struct c_qcmap_client *)malloc(sizeof(struct c_qcmap_client));



if(NULL == g_qcmap_client) {

return -1;

}

g_qcmap_client->c = new QCMAP_Client(qcmap_status_ind_cb);

if(!g_qcmap_client->c) {

free(g_qcmap_client);

g_qcmap_client = NULL;

return -1;

}

g_qcmap_client->cb = ind_cb;

g_qcmap_client->user_data = user_data;

return 0;

}

由QCMAP_Client(qcmap_status_ind_cb) [QCMAP_Client.cpp]将本层回调函数传入系统底层,达到系统底层事件触发回调qcmap_status_ind_cb 中的指针回调函数。

 

(3)qcmap_client_c.cpp         

if(inds_cb[loop].msg_cb) {

if(!inds_cb[loop].msg_cb(ind_data, inds_cb[loop].msg_buf_size,

cb_data, inds_cb[loop].cb_size)) {

if(g_qcmap_client->cb) {

g_qcmap_client->cb(g_qcmap_client->user_data,

inds_cb[loop].qcmap_msg_id,

cb_data,

inds_cb[loop].cb_size);

} else {

QCMAP_LOG("Could not found qcmap client indication function");

}

} else {

QCMAP_LOG("invalid msg_cb functions");

}

}

将中间层指针指向上层回调函数,如:

g_qcmap_client->cb = ind_cb;

 

从而实现整个系统任务的事件回调函数的处理,即:

系统事件(底层)à qcmap_status_ind_cbà处理本层事件回调(中间层)à处理上层事件回调(顶层).

 

标签:函数,cb,ECM,QCMAP,拨号,client,qcmap,ind,data
From: https://blog.51cto.com/u_6958388/5923028

相关文章

  • ecm、ppp、ndis 拨号
    Modem拨号,PPP属于数据链路层协议,它使用HDLC协议格式来封装数据帧,而在数据流中如果遇到0x7D,则表示后面的数据是控制信息,当它出现的时候,设备需从数据模式切换成控制模式,病处......
  • 辅助函数...mapGetters
    ...mapGetters 辅助函数仅仅是将store中的getter映射到局部计算属性:例:页面中组件中调用映射根部store中的getter。store.js/***store.js*/importVuefrom......
  • 4.函数
    1.定义函数参数要加类型,要有返回值functionadd(x:number,y:number):number{returnx+y;}//匿名函数letmyAdd=function(x:number,y:number):number{ret......
  • CUDA——可用于核函数中的CUDA基本数学运算函数总结
    网上搜了半天,都没有找到一篇详细总结可用于CUDAdevice上直接使用的数学函数的文章,于是直接去NVIDIA官方的Document中,终于搜索到了CUDA函数手册,在此整理总结,供自己和大家......
  • GO函数
    GO函数1.1函数分类在go语言中,函数是第一类对象,我们可以将函数保存到变量中。函数主要有具名和匿名之分,包级函数一般都是具名函数,具名函数是匿名函数的一种特例,当匿名函......
  • Google Earth Engine(GEE)——MODIS影像平滑函数的进行
    OverridetheentrypointofanimageIntroducedinGitLabandGitLabRunner9.4.Readmoreaboutthe extendedconfigurationoptions.Beforeexplainingtheav......
  • 关于shell脚本返回值,函数的一个乌龙
    1.背景最近公司有个比较差的游戏项目,简直快突破运维下线,环境条件组合极多,为了快速完成更新脚本,所以采用shell来完成,由于长时间没有写过代码,因为一个概念性问题闹出一个......
  • 【221208-4】求函数u=根号下3t-3+根号下4-t的最值?
    ......
  • 每日一抄 Go语言封装qsort快速排序函数
    packageqsort/*《GO语言高级编程》设计中案例,仅作为笔记进行收藏。qsort快速排序函数是C语⾔的⾼阶函数,⽀持⽤于⾃定义排序⽐较函数,可以对任意类型的数组进⾏排序。*......
  • 用递归函数实现树形结构转化为列表数据
    题目:  将下面的树结构的数据转化为列表的数据。[{"name":"北京市","code":"11","children":[{"name":"市辖区","code":"1101","children":[{"name":"......