libnfc读操作从底层到上层分析过程
libnfc源码当中的I2C 文件夹中有phTmlNfc.c文件
其中有读线程函数
这个函数从i2c接口读取数据后传给phTmlNfc_DeferredCall函数。其具体实现如下:
msqid 即是上层函数传进来的队列。进而需要去追踪
全局搜索上述结构体变量,发现是下面函数调用的
进而在追踪phTmlNfc_Init();函数。查找调用phTmlNfc_Init()被调用的地方
搜索相关的可能函数得到如下列表
按照字面意义可知:phDa4Nfc_msgrcv()为向FIFIO去I2c 接口,全局搜索这个函数,发现:
最终发现调接收函数的地方是:
仔细观察上述数据类型:包括 PH_LIBNFC_DEFERREDCALL_MSG、NCI_HAL_OPEN_CPLT_MSG、
NCI_HAL_CLOSE_CPLT_MSG ....其中最后一个为NCI_HAL_RX_MSG。
这时就要关注搜索nxpncihal_ctrl.p_nfc_stack_data_cback 和 nxpncihal_ctrl.p_nfc_stack_cback 两个结构体变量,搜索后发现
这就涉及到初始化函数了