LOCAL_SRC_FILES:= \
rild.c
LOCAL_SHARED_LIBRARIES := \
libcutils \
libril
LOCAL_CFLAGS := -DRIL_SHLIB
LOCAL_MODULE:= rild
include $(BUILD_EXECUTABLE)
|
仅实现main函数作为整个ril层的入口点,负责完成初始化。
1. 获取 libreference-ril.so 的位置, 以可以在
#define LIB_PATH_PROPERTY "rild.libpath"
#define LIB_ARGS_PROPERTY "rild.libargs"
property_get(LIB_PATH_PROPERTY, libPath, NULL))
|
然后以
switchUser();
dlHandle = dlopen(rilLibPath, RTLD_NOW);
|
开启 libril.so 端的事件监听
开启 libreference-ril.so 端对硬件的事件监听
funcs = rilInit(&s_rilEnv, argc, rilArgv);
|
并且把信息的回调函数注册到 Libril.so 中
然后主线程进入死循环。
其中把reference-ril 和 libril两个层次的就是
funcs = rilInit(&s_rilEnv, argc, rilArgv);和
RIL_register(funcs);两个函数,
rilInit把 libril组件提供的接口
s_rilEnv
提供给reference-ril使用,其中主要是包含
static struct RIL_Env s_rilEnv = {
RIL_onRequestComplete,
RIL_onUnsolicitedResponse,
RIL_requestTimedCallback
};
|
通过这组接口,
reference-ril就可以得到libril的 ril_commands.h 中的整套响应的处理流程。
而
rilInit对应的RIL_Init 返回一套
reference-ril的接口,主要包括
static const RIL_RadioFunctions s_callbacks = {
RIL_VERSION,
onRequest,
currentState,
onSupports,
onCancel,
getVersion
};
|
其中主要的
onRequest接口为
reference-ril提供给libril的接口,也就是 libril收到上位 APP的 操作请求后就可以通过 onRequest 接口由
reference-ril组件传递给modem。
阅读(2211) | 评论(0) | 转发(0) |