libnfc读操作从底层到上层分析过程

libnfc源码当中的I2C 文件夹中有phTmlNfc.c文件

libnfc读操作从底层到上层分析过程

其中有读线程函数

libnfc读操作从底层到上层分析过程

这个函数从i2c接口读取数据后传给phTmlNfc_DeferredCall函数。其具体实现如下:

libnfc读操作从底层到上层分析过程

libnfc读操作从底层到上层分析过程

msqid 即是上层函数传进来的队列。进而需要去追踪libnfc读操作从底层到上层分析过程

全局搜索上述结构体变量,发现是下面函数调用的

libnfc读操作从底层到上层分析过程

进而在追踪phTmlNfc_Init();函数。查找调用phTmlNfc_Init()被调用的地方

libnfc读操作从底层到上层分析过程

搜索相关的可能函数得到如下列表

libnfc读操作从底层到上层分析过程

按照字面意义可知:phDa4Nfc_msgrcv()为向FIFIO去I2c 接口,全局搜索这个函数,发现:

libnfc读操作从底层到上层分析过程

最终发现调接收函数的地方是:

libnfc读操作从底层到上层分析过程

仔细观察上述数据类型:包括 PH_LIBNFC_DEFERREDCALL_MSG、NCI_HAL_OPEN_CPLT_MSG、

NCI_HAL_CLOSE_CPLT_MSG ....其中最后一个为NCI_HAL_RX_MSG。

libnfc读操作从底层到上层分析过程

 

这时就要关注搜索nxpncihal_ctrl.p_nfc_stack_data_cback   和 nxpncihal_ctrl.p_nfc_stack_cback 两个结构体变量,搜索后发现

libnfc读操作从底层到上层分析过程

这就涉及到初始化函数了