修改GPS HAL 注入卫星数据

Posted by on March 14, 2022

HAL层修改

  • 修改的是Gnss1.0

修改IGnss.hal

 ``
    injectExtNmea(GnssUtcTime timestamp, string nmeaString) generates (bool success);
 `` 

修改Gnss.h头文件

 ``
        Return<bool> injectExtNmea(int64_t timestamp, const hidl_string& nmeaString) override;

 ``

修改Gnss.cpp 文件

- 重写增加了injectExtNmea函数
``
  Return<bool> Gnss::injectExtNmea(int64_t timestamp, const hidl_string& nmeaString) {
    
  }
``
  • 这里注意HIDL对应和参数类型

然后单独编译Gnss 模块

mmm hardware/interfaces/gnss/1.0/Gnss.cpp

  • 会生成对应的Gnss so库和在out out\target\common\obj\JAVA_LIBRARIES 生成jar 调用的 class jar 文件

  • hardware/current.txt 文件中添加编译完成功后的Gnss的Hash值

  • 更新新的HAL库信息

    development/vndk/tools/header-checker/utils/create_reference_dumps.py -l android.hardware.gnss@1.1 -products 编译的productId

  • 然后再FW或者应用层通过 getService 调用获取Gnss java对象

    Gnss gnss = android.hardware.gnss.V1_0.IGnss.getService(true); 拿到了Gnss对象之后就可以调用对应的方法了