1 Direct Audio TX代码流程

1.1 从Host到FW

1.1.1 代码流程

htc.c::HifLayerRecvCallback//从HIF_USB_CONTEXT获取数据中断,具体问俊奇

-> htc.c::_HTCPipeIndicateRecvMgs//HTC_SERVICE.ProcessRecvMsgMultiple = htt_tgt_hif_svc_h2t_input

-> htt_tgt_hif_svc.c::_htt_tgt_hif_svc_h2t_input//处理各类消息

-> htt_tgt_hif_svc.c::_htt_tgt_hif_svc_h2t_msg_dispatch//从HTC_BUFFER中读出h2t_msg_type=HTT_H2T_MSG_TYPE_TX_FRM

-> htt_tgt_tx.c::_htt_tgt_tx_input//处理HTT_H2T_MSG_TYPE_TX_FRM

-> ar_wal_tx_de.h::ar_wal_tx_de_input//调用_tx_de_input

-> ar_wal_tx_de_patch.c::patch_tx_de_input

1.1.2 重要的结构体

1.1.3 对应的log

enter htc.c::HifLayerRecvCallback.
enter htc.c::_HTCPipeIndicateRecvMgs.
enter htt_tgt_hif_svc.c::_htt_tgt_hif_svc_h2t_input.
enter htt_tgt_hif_svc.c::_htt_tgt_hif_svc_h2t_input call htt_tgt_hif_svc_h2t_msg_dispatch.
enter htt_tgt_hif_svc.c::_htt_tgt_hif_svc_h2t_msg_dispatch.
enter htt_tgt_tx.c::_htt_tgt_tx_input.
enter htt_tgt_tx.c::_htt_tgt_tx_input call ar_wal_tx_de_input 002, tid = 0.
enter ar_wal_tx_de_patch.c::patch_tx_de_input.

1.2 从FW到Air

1.2.1 代码流程

ar_wal_tx_send_patch.c::patch_tx_send_completion_hdlr//ACK处理函数,分析谁调用了它

-> ar_wal_tx_send_patch.c::patch_tx_send_proc_ppdu_done

/ar_wal_tx_send_patch.c::patch_tx_send_deliver_comp_pending_descs//comp_ctxt->tx_comp_ind_buf_send=htt_tgt_tx_compl_ind

-> htt_tgt_tx.c::_htt_tgt_tx_compl_ind

-> htt_tgt_hif_svc.c::_htt_tgt_hif_svc_msg_to_host

1.2.2 重要的结构体

struct wal_tx_msdu/wal_tx_msdu_t

结构体WHAL_TX_MSDU_DESC

结构体WHAL_TX_FRAG_DESC

举例:从struct wal_tx_mpdu* ppdu_mpdu_list中获取数据

A_UINT8* bufPtr = (A_UINT8*)(A_CPU_ADDR((WHAL_TX_FRAG_DESC*)A_CPU_ADDR(WHAL_MSDU_GET_DATA_REMOTE(WHAL_MSDU_DESC(msdu_desc)))->bufPtr));

(1) WHAL_MSDU_DESC(msdu_desc)强制转化成WHAL_TX_MSDU_DESC

(2) WHAL_MSDU_GET_DATA_REMOTE(msdu_desc_ptr)=WHAL_TX_MSDU_DESC.fragDescPtr

(3) (WHAL_TX_FRAG_DESC*)A_CPU_ADDR(frag_desc)->bufPtr=WHAL_TX_FRAG_DESC.bufPtr

struct ath_buf

struct htcWlanBuffers

struct txbuf

举例:从struct ath_buf中获取数据

A_UINT8* buffer = WLAN_BUF_START(abf->bf_b.wlanBuf.rx);

struct ath_buf->struct htcWlanBuffers->struct txbuf.bfdata_start

A_UINT32 length = WLAN_BUF_LENGTH(abf->bf_b.wlanBuf.rx);

struct ath_buf->struct htcWlanBuffers->struct txbuf.bfdata_len

1.2.3 对应的log:

enter ar_wal_tx_send_patch.c::patch_tx_send_completion_hdlr.
enter ar_wal_tx_send_patch.c::patch_tx_send_completion_hdlr call tx_send_proc_ppdu_done.
enter ar_wal_tx_send_patch.c::patch_tx_send_proc_ppdu_done.
enter ar_wal_tx_send_patch.c::patch_tx_send_deliver_comp_pending_descs.
enter htt_tgt_tx.c::_htt_tgt_tx_compl_ind.
enter htt_tgt_hif_svc.c::_htt_tgt_hif_svc_msg_to_host.

android wifi Direct Audio TX/RX延迟分析的更多相关文章

  1. Android WIFI 分析(一)

    本文基于<深入理解Android WiFi NFC和GPS 卷>和 Android N 代码结合分析   WifiService 是 Frameworks中负责wifi功能的核心服务,它主 ...

  2. android wifi ANR问题分析总结

    android wifi ANR问题分析总结 1 看看main进程阻塞在那里? 2 调用关系的函数阻塞在那里? 3 最终阻塞函数的阻塞前的log以及状态

  3. 【Android】 Android-wifi 直连 wifi direct wifi p2p

    现在,Android的支持Wi -Fi的直接点对点点对点(P2P)Android系统的供电设备和其他类型的设备,没有一个热点或互联网连接之间的连接.Android框架提供了一套Wi - Fi的P2P的 ...

  4. Android网络通信之WiFi Direct

    使用Wi-Fi Direct技术可以让具备硬件支持的设备在没有中间接入点的情况下进行直接互联.Android 4.0(API版本14)及以后的系统都提供了对Wi-Fi Direct的API支持.通过对 ...

  5. 马上搞定Android平台的Wi-Fi Direct开发

    导语 移动互联网时代,很多用户趋向于将大量的资料保存在移动设备上.但在给用户带来便利的同时引发了一个新的问题——保存在移动设备上的资料该怎样共享出去?到了思考时间,普通青年这样想:折腾什么劲啊,直接用 ...

  6. Android网络通信(8):WiFi Direct

    Android网络通信之WiFi Direct 使用Wi-Fi Direct技术可以让具备硬件支持的设备在没有中间接入点的情况下进行直接互联.Android 4.0(API版本14)及以后的系统都提供 ...

  7. Android Wi-Fi Display(Miracast)介绍

    地址:http://blog.csdn.net/innost/article/details/8474683 Android Wi-Fi Display(Miracast)介绍 2012年11月中旬, ...

  8. 17、Wi-Fi Direct

    Wi-Fi Direct简介 从Android4.0(API Level=14)开始,允许通过Wi-Fi模块在两个移动设备之间建立直接连接(这种技术称为Wi-Fi Direct),这种连接不需要无线路 ...

  9. android——wifi系统架构

    1. 系统架构 Android WiFi系统引入了wpa_supplicant,它的整个WiFi系统以wpa_supplicant为核心来定义上层用户接口和下层驱动接口.整个WiFi系统架构如下图所示 ...

随机推荐

  1. qt5中QPrinter的使用兼容性问题

    qt5与qt4在QPrinter中使用的不同点如下: 在.pro文件中加入如下语句:

  2. 小记:Bmob云端代码测试APNS推送功能 #代码片段

    function onRequest(request, response, modules) { var push = modules.oPush; push.send({ "data&qu ...

  3. 附加数据库失败,sql2008,断电数据库日志受损

    附加数据库失败,提示:无法在数据库 'DBNAME' (数据库 ID 为 7)的页 (1:210288) 上重做事务 ID (0:0) 的日志记录或者在重做数据库 'DBNAME' 的日志中记录的操作 ...

  4. 使用sql更改表的列的数据类型和添加新列和约束

    修改数据库表某一列或添加列,转载的哦~ --增加一列 ALTER TABLE 表名 ADD 列名 VARCHAR(20) NULL --删除一列 ALTER TABLE 表名 drop COLUMN ...

  5. Python模块:collections

    collections模块常用的数据类型: (1)namedtuple(): #创建一个自定义的tuple对象,并且规定了tuple元素的个数,并可以用属性而不是索引来引用tuple的某个元素. fr ...

  6. Form表单(回车)提交问题

    我们有时候希望回车键敲在文本框(input element)里来提交表单(form),但有时候又不希望如此.比如搜索行为,希望输入完关键词之后直接按回车键立即提交表单,而有些复杂表单,可能要避免回车键 ...

  7. mysql存储过程 --游标的使用 取每行记录 (多字段)

    delimiter $ create PROCEDURE phoneDeal() BEGIN DECLARE id varchar(64); -- id DECLARE phone1 varchar( ...

  8. 新手看Mockplus

    如今是一个快节奏的社会,每一天都会有无数的软件发布,每一款软件的制作过程不可避免的需要使用原型设计工具.而Mockplus就是一款原型设计软件,可以用于移动端,PC端以及WEB的原型设计.它也符合如今 ...

  9. 如何搭建lamp(CentOS7+Apache+MySQL+PHP)环境 [转]

    在网上搜资料,自己在本地虚拟机上尝试搭建,弄了整整一天一夜,终于弄好了.网上的资料,虽然很多,但大多都是重复的,拿去试了之后,又很多都不能得到正确的结果.最终找到了适合我的linux环境的搭建方式;在 ...

  10. vs2015 附加到进程找不到w3wp.exe

    vs2015 附加到进程找不到w3wp.exe 解决办法: 浏览器打开你访问的IIS地址后就出现了~!!!!!!!!!