android gps机制分析--定位数据HAL处理
来源:互联网 发布:网络赌钱输了好多 编辑:程序博客网 时间:2024/06/17 01:35
本文转载自:http://blog.csdn.net/u012439416/article/details/72612197
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
- Linux下使用github教程
- 归并排序的Java实现
- Angular4 开发环境搭建
- 推荐几款实用的Android Studio 插件
- C#将字符串转换为整型的三种方法的总结
- android gps机制分析--定位数据HAL处理
- Linux下BLAST安装及BLAST使用
- 安卓与后台进行数据交互
- MySQL 入门常用命令大全(下)
- 请多指教
- 字符函数
- iFrame只要竖滚动条,不要横滚动条的方法
- spring 中JdbcTemplate的queryForObject、queryForMap为空返回错误情况的一个处理
- 关于DSP内存空间不足的问题