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 两个结构体变量,搜索后发现

这就涉及到初始化函数了
本文深入探讨libnfc源码中I2C通信模块的读线程函数,解析从I2C接口读取数据并传递给phTmlNfc_DeferredCall函数的过程。通过跟踪调用流程,详细分析了phTmlNfc_Init()初始化函数及phDa4Nfc_msgrcv()接收函数的作用,揭示了libnfc中关键数据类型的使用场景。
593

被折叠的 条评论
为什么被折叠?



