android wifi Direct Audio TX/RX延迟分析
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延迟分析的更多相关文章
- Android WIFI 分析(一)
本文基于<深入理解Android WiFi NFC和GPS 卷>和 Android N 代码结合分析 WifiService 是 Frameworks中负责wifi功能的核心服务,它主 ...
- android wifi ANR问题分析总结
android wifi ANR问题分析总结 1 看看main进程阻塞在那里? 2 调用关系的函数阻塞在那里? 3 最终阻塞函数的阻塞前的log以及状态
- 【Android】 Android-wifi 直连 wifi direct wifi p2p
现在,Android的支持Wi -Fi的直接点对点点对点(P2P)Android系统的供电设备和其他类型的设备,没有一个热点或互联网连接之间的连接.Android框架提供了一套Wi - Fi的P2P的 ...
- Android网络通信之WiFi Direct
使用Wi-Fi Direct技术可以让具备硬件支持的设备在没有中间接入点的情况下进行直接互联.Android 4.0(API版本14)及以后的系统都提供了对Wi-Fi Direct的API支持.通过对 ...
- 马上搞定Android平台的Wi-Fi Direct开发
导语 移动互联网时代,很多用户趋向于将大量的资料保存在移动设备上.但在给用户带来便利的同时引发了一个新的问题——保存在移动设备上的资料该怎样共享出去?到了思考时间,普通青年这样想:折腾什么劲啊,直接用 ...
- Android网络通信(8):WiFi Direct
Android网络通信之WiFi Direct 使用Wi-Fi Direct技术可以让具备硬件支持的设备在没有中间接入点的情况下进行直接互联.Android 4.0(API版本14)及以后的系统都提供 ...
- Android Wi-Fi Display(Miracast)介绍
地址:http://blog.csdn.net/innost/article/details/8474683 Android Wi-Fi Display(Miracast)介绍 2012年11月中旬, ...
- 17、Wi-Fi Direct
Wi-Fi Direct简介 从Android4.0(API Level=14)开始,允许通过Wi-Fi模块在两个移动设备之间建立直接连接(这种技术称为Wi-Fi Direct),这种连接不需要无线路 ...
- android——wifi系统架构
1. 系统架构 Android WiFi系统引入了wpa_supplicant,它的整个WiFi系统以wpa_supplicant为核心来定义上层用户接口和下层驱动接口.整个WiFi系统架构如下图所示 ...
随机推荐
- JSP中的 HttpSession、pageContext对象
pageContext 隐含对象对应javax.servlet.jsp.PageContext,都自动的被加入至pageContext中, 您可以由它来取得与JSP相关的对应之Servlet对象,像是 ...
- jquery获取所有被选中checkbox
想要得到所有被选中的checkbox的value ,并且传给后台 var headers = ""; $('input[name="header"]:check ...
- Bootstrap插件系列——Bootstrap-table初始化、分页、客户端搜索、服务端搜索
又好久不写博客,最近项目都是用的bootstrap的样式,不出意外,应该是要在bootstrap的道路上越走越远了,所以下定决心,把bootstrap的插件都好好学学. 昨天写了boostrap-ta ...
- Xamarin踩坑经历
1.SDK版本 Android SDK Build-tools必须安装23.0.1版,不得升级高版本,否则将导致异常:尝试在条件"$(_DeviceSdkVersion) >= 21& ...
- 【bzoj3211】花神游历各国
Description Input Output 每次x=1时,每行一个整数,表示这次旅行的开心度 Sample Input 4 1 100 5 551 1 2 2 1 2 1 1 2 2 2 ...
- hibernate存储过程 3
hibernate存储过程 User.hbm.xml文件的内容如下: <?xml version="1.0"?> <!DOCTYPE hibe ...
- IE6的连接数限制问题
今天解决了一个bug.看似是UI的bug,最后发现IE的设置问题(严格来说,IE6这么做没有问题,因为HTTP协议的规范如此). 先描述一下问题: 有一个页面管理Job,选中一些Job可以Run,每次 ...
- dos2unix unix2dos
实现windows和linux之间的文件自动转换,消除^M.
- amr转MP3
using System; using System.Threading; using System.IO; using System.Diagnostics; using System.Securi ...
- CSS 部件
1.导航菜单: [荐]抽屉式菜单 jQuery.mmenu jQuery.mmenu 实现了类似手机上经常使用的抽屉式菜单,效果很好.http://mmenu.frebsite.nl/ 2.jQuer ...