美文网首页
nfc hal分析

nfc hal分析

作者: 413x | 来源:发表于2018-08-02 12:55 被阅读0次

    nfc hal分析

    AndroidXRef 真是绝好的在线工具。

    /system/nfc/src/include/adaptations/NfcAdaptation:

    sp<INfc> NfcAdaptation::mHal
    

    在整个/system/nfc目录下都没有对mHal的初始化,在该目录下所有mHal的相关操作都是调用其内部函数
    故猜测mHal为Nfc的Hal层接口。

    /hardware/interfaces/nfc/1.0/default/

    在整个目录下没有INfc的c或者cpp文件,仅存在INfc.hal。猜测aidl文件功能类似,看google android hal
    文档。发现会通过hidl-gen根据INfc.hal自动生成INfc.h,BpNfc.h,NfcAll.cpp,BnNfc.h,iHwNfc.h

    查看INfc.hal:

    open:打开NFCC设备并准备好接受write命令进一步初始化。

    write:将写入内容放入queue中并立即初始化。

    coreInitialized:在接受到来自NFCC的CORE_INIT_RSP后被调用。随即等待NfcEvent.POST_INIT_CPLT

    prediscover:在每次开始RF discovering时都会被调用,在这里做固件相关的配置

    powerCycle:通过power cycle重启controller。

    /hardware/interfaces/nfc/1.0/default/Nfc.h

    定义了struct Nfc,派生自INfc,定义了open,write等成员函数,静态函数eventCall,dataCallback,
    内部成员mCallback,mDevice

    /hardware/interfaces/nfc/1.0/default/service.cpp

    该文件中的对INfc.hal中的文件中open, write等进行实现。HIDL_FETCH_INfc是外部模块获取Nfc结构体的方法
    它内部实现了获取mDevice的方式:hw_get_module(这是hw内部管理hal的接口)。

    /hardware/interfaces/nfc/1.0/default/service.cpp

    该文件是hidl-gen自动生成的。mHal有成员函数getService

    /hardware/libhardware

    主要关注上述的hw_get_module如何实现

    hw_get_module为接口,内部由hw_get_module_by_class实现。内部查找class_id所对应动态库路径,调用load加载
    ,在load内部用dlopen打开。用dlsym找到HMI符号所对应模块。

    相关文章

      网友评论

          本文标题:nfc hal分析

          本文链接:https://www.haomeiwen.com/subject/nbbjvftx.html