Chinaunix首页 | 论坛 | 博客
  • 博客访问: 9464735
  • 博文数量: 1750
  • 博客积分: 12961
  • 博客等级: 上将
  • 技术积分: 20091
  • 用 户 组: 普通用户
  • 注册时间: 2009-01-09 11:25
个人简介

偷得浮生半桶水(半日闲), 好记性不如抄下来(烂笔头). 信息爆炸的时代, 学习是一项持续的工作.

文章分类

全部博文(1750)

文章存档

2024年(26)

2023年(26)

2022年(112)

2021年(217)

2020年(157)

2019年(192)

2018年(81)

2017年(78)

2016年(70)

2015年(52)

2014年(40)

2013年(51)

2012年(85)

2011年(45)

2010年(231)

2009年(287)

分类: LINUX

2009-12-01 11:19:34

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 端的事件监听

RIL_startEventLoop();


开启 libreference-ril.so 端对硬件的事件监听

funcs = rilInit(&s_rilEnv, argc, rilArgv);


并且把信息的回调函数注册到 Libril.so 中

RIL_register(funcs);

然后主线程进入死循环。


其中把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) |
给主人留下些什么吧!~~