ril

REQUEST

ril.h
 
在ril.h中定义函数指针RIL_RequestFunc(),RIL_RadioStateRequest(),RIL_Supports(),   RIL_Cancel() ,RIL_GetVersion(),
用数据结构RIL_RadioFunctions 对以上函数指针进行包装,
如下:
typedef struct {
    int version;        /* set to RIL_VERSION */ 
    RIL_RequestFunc onRequest; 
    RIL_RadioStateRequest onStateRequest;    
    RIL_Supports supports;
    RIL_Cancel onCancel;   
    RIL_GetVersion getVersion;  
} RIL_RadioFunctions;     
reference-ril  /reference.c
在reference-ril.c 中定义结构体
/*** Static Variables ***/
static const RIL_RadioFunctions s_callbacks = {
    RIL_VERSION,
    onRequest,
    currentState,
    onSupports,
    onCancel,
    getVersion
};
并且实现函数onRequest,currentState,onSupports,onCancel,getVersion.
在函数RIL_Init中,返回参数s_callbacks;
rild /rild.c
在rild中调用函数RIL_Init(),得到s_callbacks;通过RIL_register()函数注册到libril中.
libril /ril.cpp
RIL_register()函数是在这里实现的,目的是得到reference-ril中s_callbacks函数指针,这本地调用。
/
onUnsolicited
ril.h
在这里定义结构体RIL_Env
如下:
struct RIL_Env {
      void (*OnRequestComplete)(RIL_Token t, RIL_Errno e,
                           void *response, size_t responselen);
      void (*OnUnsolicitedResponse)(int unsolResponse, const void *data,
                                    size_t datalen);
      void (*RequestTimedCallback) (RIL_TimedCallback callback,
                                   void *param, const struct timeval *relativeTime);
};
libril /ril.cpp
在libril中实现函数RIL_onRequestComplete(),RIL_onUnsolicitedResponse(),
RIL_requestTimedCallback(),
rild /rild.c
在这里引进,libril中的函数IL_onRequestComplete(),RIL_onUnsolicitedResponse(),
RIL_requestTimedCallback(),
并且构造成结构RIL_Env
如下:
static struct RIL_Env s_rilEnv = {
    RIL_onRequestComplete,
    RIL_onUnsolicitedResponse,
    RIL_requestTimedCallback
};
然后在rilInit()中将s_rilEnv传递给reference.c
reference-ril /reference.c
reference.c中定义变量static const struct RIL_Env *s_rilenv;
通过RIL_Init得到 s_rilevn 指针,
然后定义这个
#define RIL_onRequestComplete(t, e, response, responselen) s_rilenv->OnRequestComplete(t,e, response, responselen)
#define RIL_onUnsolicitedResponse(a,b,c) s_rilenv->OnUnsolicitedResponse(a,b,c)
#define RIL_requestTimedCallback(a,b,c) s_rilenv->RequestTimedCallback(a,b,c)
进行调用。
在reference-ril.c 中有函数onUnsolicited(),通过mainloop()调用函数at_open(fd, onUnsolicited),传递到atchannel.c中,
在函数at_open() 中,启动readloop()线程,监控mode 设备(/dev/ttyUSB0)
在函数onUnsolicited()中实际上是调用 RIL_onUnsolicitedResponse()实现功能的。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值