android gps机制分析--定位数据HAL处理
来源:互联网 发布:单片机cy标志为 编辑:程序博客网 时间:2024/06/05 19:20
6 gps数据在HAL中处理
reportPosition的实现,前面提到的包含了position信息的qmiLocEventPositionReportIndMsgT_v02数据类型作为参数传入:
解析出qmiLocEventPositionReportIndMsgT_v02里的相应的数据,填充到UlpLocation结构中,
以下是经纬度,填充到UlpLocation location.gpsLocation中,当然也包含了Altitude、Heading、accuracy等值的填充;
最后UlpLocation填充完成,当然UlpLocation的成员变量GpsLocation也相应的填充完成了,调用:
LocApiBase::reportPosition的实现:
hardware/qcom/gps/core/LocApiBase.cpp
LocApiBase::reportPosition里有一个TO_ALL_LOCADAPTERS的宏定义:
看下TO_ALL_ADAPTERS的定义,大致意思应该是针对每个LocAdapterBase*类型的adapter依次调用他们的reportPosition方法:
hardware/qcom/gps/core/LocApiBase.h
具体来看下LocAdapterBase的reportPosition方法的具体实现:
hardware/qcom/gps/core/LocAdapterBase.cpp
mLocAdapterProxyBase包含在LocAdapterBase类中:
reportPosition的定义,这是一个虚函数,也就是说具体实现需要看子类,关于reportPosition的具体实现,
我们可以在LocalAdapterBase的子类LocInternalAdapter里面看下,具体定义如下:
new出来的LocEngReportPosition对象的第二个参数是传入的UlpLocation类型的数据,
sendMsg函数通过msg_q_snd会把msg发送到消息队列mQ中:
hardware/qcom/gps/core/MsgTask.cpp
然后run函数通过msg_q_rcv接受消息队列mQ的消息,读取msg,依次执行msg的log()和proc():
msg是LocMsg类型的数据,其中proc是一个虚函数,需要在其子类中实现:
LocEngReportPosition恰好是LocMsg的子类:
看一下LocEngReportPosition:proc的实现:
hardware/qcom/gps/loc_api/libloc_api_50001/loc_eng.cpp
把location的信息通过location_cb传递给android framework层:
小结:Position信息在loc_api层是qmiLocEventPositionReportIndMsgT_v02类型的数据,
在LocApiV02 :: reportPosition函数里面转换成UlpLocation类型的数据,然后经过一系列步骤发送到message queue中,
MsgTask:run函数从message queue中取出相应的数据,然后调用proc()函数,在proc()函数里loc eng层的callback
把数据转换成GpsLocation类型的数据,再传递到android framework层。
- android gps机制分析--定位数据HAL处理
- android gps机制分析--定位数据HAL处理
- android gps hal大概分析
- android gps机制分析--定位数据传输到Java
- android关于GPS hal层的分析
- android关于GPS hal层的分析
- android关于GPS hal层的分析
- android关于GPS hal层的分析
- android关于GPS hal层的分析
- Android获取GPS定位数据
- Android GPS HAL详解
- android gps hal
- android gps机制分析--之一
- Android HAL hardware module分析 以GPS module为例
- Android HAL hardware module分析 以GPS module为例
- Android HAL hardware module分析 以GPS module为例
- Android HAL原理实现& GPS HAL实现
- Understanding Android GPS HAL Driver
- setalpha和setimagealpha的区别详解
- [HNOI2008]玩具装箱
- Java集合类——HashSet
- struts2 no result defined for action xxxx and result input
- universal-image-loader源码解析
- android gps机制分析--定位数据HAL处理
- oracle 练习题
- OSGI入门
- hdu_5649 DZY Loves Sorting
- hdu1050 Moving Tables
- 一个能够快速把JSON数据格式化成漂亮网页的开源JavaScript库:angular-json-human
- thinkphp函数及常量
- windows7 C语言打印目前进程列表、删除一个进程、显示一个进程地址。
- UVA 1594 Ducci Sequence