<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[tronteng的专栏]]></title><description><![CDATA[]]></description><link>https://blog.csdn.net/tronteng</link><language>zh-cn</language><generator>https://blog.csdn.net/</generator><copyright><![CDATA[Copyright &copy; tronteng]]></copyright><item><title><![CDATA[audio_policy_configuration.xml 解析]]></title><link>https://blog.csdn.net/tronteng/article/details/84621544</link><guid>https://blog.csdn.net/tronteng/article/details/84621544</guid><author>tronteng</author><pubDate>Thu, 29 Nov 2018 11:28:50 +0800</pubDate><description><![CDATA[android的audioserver 进程启动时，会创建AudioPolicyManager,
洋洋洒洒数千行的其构造函数，第一步就是加载配置相关的xml。

#define AUDIO_POLICY_XML_CONFIG_FILE_PATH_MAX_LENGTH 128
#define AUDIO_POLICY_XML_CONFIG_FILE_NAME &quot;audio_policy_config...]]></description><category></category></item><item><title><![CDATA[Android AudioPolicyService服务启动过程]]></title><link>https://blog.csdn.net/tronteng/article/details/84620888</link><guid>https://blog.csdn.net/tronteng/article/details/84620888</guid><author>tronteng</author><pubDate>Thu, 29 Nov 2018 11:19:32 +0800</pubDate><description><![CDATA[转至：https://www.cnblogs.com/senior-engineer/p/5089559.html

AudioPolicyService是策略的制定者，比如什么时候打开音频接口设备、某种Stream类型的音频对应什么设备等等。而AudioFlinger则是策略的执行者，例如具体如何与音频设备通信，如何维护现有系统中的音频设备，以及多个音频流的混音如何处理等等都得由它来完成。Aud...]]></description><category></category></item><item><title><![CDATA[Android音频模块启动流程分析]]></title><link>https://blog.csdn.net/tronteng/article/details/84619936</link><guid>https://blog.csdn.net/tronteng/article/details/84619936</guid><author>tronteng</author><pubDate>Thu, 29 Nov 2018 11:05:16 +0800</pubDate><description><![CDATA[注意：本文基于 Android 7.0 进行分析。

1) 设备开机，系统启动时将执行 /system/etc/init/audioserver.rc ，运行 /system/bin/ 目录下的 audioserver 服务。audioserver.rc 内容如下：

service audioserver /system/bin/audioserver
    class main
    us...]]></description><category></category></item><item><title><![CDATA[配置音频政策]]></title><link>https://blog.csdn.net/tronteng/article/details/84619391</link><guid>https://blog.csdn.net/tronteng/article/details/84619391</guid><author>tronteng</author><pubDate>Thu, 29 Nov 2018 10:57:23 +0800</pubDate><description><![CDATA[配置音频政策

Android 7.0 引入了一种新的音频政策配置文件格式 (XML)，用于描述音频拓扑。

以前的 Android 版本需要使用 device/&amp;lt;company&amp;gt;/&amp;lt;device&amp;gt;/audio/audio_policy.conf 来声明您产品上存在的音频设备（您可以在 device/samsung/tuna/audio/audio_policy.conf ...]]></description><category></category></item><item><title><![CDATA[MTK 驱动（63）---MTK TP驱动移植]]></title><link>https://blog.csdn.net/tronteng/article/details/83791931</link><guid>https://blog.csdn.net/tronteng/article/details/83791931</guid><author>tronteng</author><pubDate>Tue, 06 Nov 2018 18:19:29 +0800</pubDate><description><![CDATA[MTK TP驱动移植

 

对于MTK TP驱动移植一般分为六部分：

1、硬件IO口配置；

2、TP驱动移植；

3、I2C通信；

4、中断触发；

5、数据上报；

6、虚拟按键；

 

硬件电路：




1、GPIO配置

打开 vendor\mediatek\proprietary\scripts\DrvGen.exe 

选择 cendor\mediatek\proprieta...]]></description><category></category></item><item><title><![CDATA[单片机多级菜单编程实现-基于二叉树链表]]></title><link>https://blog.csdn.net/tronteng/article/details/83269259</link><guid>https://blog.csdn.net/tronteng/article/details/83269259</guid><author>tronteng</author><pubDate>Mon, 22 Oct 2018 10:25:57 +0800</pubDate><description><![CDATA[单片机多级菜单编程实现(ZT)建立一个树状的菜单结构，用链表实现

链表中包含：
1、指向同级左右菜单和指向父菜单、子菜单的四个菜单结构体指针；
2、进入该菜单时需要执行的初始化函数指针
3、退出该菜单时需要执行的结束函数指针
4、该菜单内的按键处理函数指针数组的指针操作菜单模块需要的按键操作有：左、右、确
认、退出。
采用这种办法，可以方便的添加或删减菜单。并且只需要在其头文件中修改初始变量就可...]]></description><category></category></item><item><title><![CDATA[MTK 驱动（38）---MTK 待机问题分析]]></title><link>https://blog.csdn.net/tronteng/article/details/83268353</link><guid>https://blog.csdn.net/tronteng/article/details/83268353</guid><author>tronteng</author><pubDate>Mon, 22 Oct 2018 09:30:59 +0800</pubDate><description><![CDATA[转：https://blog.csdn.net/zhangbijun1230/article/details/79832115

mtk 平台待机问题分析:

1 待机问题分类 
1）无法待机： 

1. 需要确认 APK 是否有 partial_wakelock 

2. kernel 是否持有 wakeup source 不释放. 

2）可以待机，但是唤醒频繁. 

1. 是否有打开数据连接...]]></description><category></category></item><item><title><![CDATA[转 新型的按键扫描程序（转）长按 短按 写的很棒]]></title><link>https://blog.csdn.net/tronteng/article/details/83095536</link><guid>https://blog.csdn.net/tronteng/article/details/83095536</guid><author>tronteng</author><pubDate>Tue, 16 Oct 2018 18:34:33 +0800</pubDate><description><![CDATA[原文：http://blog.ednchina.com/zp2009/983530/message.aspx

不过我在网上游逛了很久，也看过不少源程序了，没有发现这种按键处理办法的踪迹，所以，我将他共享出来，和广大同僚们共勉。我非常坚信这种按键处理办法的便捷和高效，你可以移植到任何一种嵌入式处理器上面，因为C语言强大的可移植性。

 

同时，这里面用到了一些分层的思想，在单片机当中也是相当有用...]]></description><category></category></item><item><title><![CDATA[uCGUI 按键窗口切换机制二叉树]]></title><link>https://blog.csdn.net/tronteng/article/details/83095531</link><guid>https://blog.csdn.net/tronteng/article/details/83095531</guid><author>tronteng</author><pubDate>Tue, 16 Oct 2018 18:34:00 +0800</pubDate><description><![CDATA[转自：https://www.cnblogs.com/hiker-blogs/archive/2013/07/02/3166080.html

前段时间在做一个窗口项目，这个项目菜单项过多，在管理起来比较麻烦。想做一个高效移植又方便的一个切换机制。后来在网上多方查找这方面资料，但是感觉比较少。后来自己整理出了这个结构，希望对后来朋友有所帮助。

    本结构不只局限与按键操作，同时也支持触摸切换...]]></description><category></category></item><item><title><![CDATA[分享一个按键液晶多级菜单设计方法，工控行业中沿用多年，屡试不爽，附带本人一个调试通过]]></title><link>https://blog.csdn.net/tronteng/article/details/83095525</link><guid>https://blog.csdn.net/tronteng/article/details/83095525</guid><author>tronteng</author><pubDate>Tue, 16 Oct 2018 18:32:51 +0800</pubDate><description><![CDATA[ 

转自：https://www.amobbs.com/forum.php?mod=viewthread&amp;amp;tid=4001689

typedef struct
			{
			　uchar 　KeyStateIndex ; 　　/ / 当前状态索引号
			　uchar 　KeyDnState ; 　　/ / 按下“向下”键时转向的状态索引号
			　uchar 　KeyUpState...]]></description><category></category></item><item><title><![CDATA[多级菜单框架（C实现）]]></title><link>https://blog.csdn.net/tronteng/article/details/83095510</link><guid>https://blog.csdn.net/tronteng/article/details/83095510</guid><author>tronteng</author><pubDate>Tue, 16 Oct 2018 18:30:57 +0800</pubDate><description><![CDATA[以前见过的多级菜单都是用索引号实现，但是这种菜单修改不易，正好这段时间我要在OLED上显示菜单，所以就编了一个框架出来，代码如下

C文件

#include &quot;parallelmenu.h&quot;
#include &quot;include.h&quot;
#include &amp;lt;string.h&amp;gt;
#define check 1
Page* current_page;
Option* current_opt;...]]></description><category></category></item><item><title><![CDATA[转 单片机实现多级菜单]]></title><link>https://blog.csdn.net/tronteng/article/details/83095475</link><guid>https://blog.csdn.net/tronteng/article/details/83095475</guid><author>tronteng</author><pubDate>Tue, 16 Oct 2018 18:27:36 +0800</pubDate><description><![CDATA[转自：https://blog.csdn.net/u010980705/article/details/52600980

单片机实现多级菜单

 

1、首先定义一个机构体如下
typedef struct
   {
     uchar current;
     uchar up;//上键
     uchar down;//下键
     uchar enter;//确认键
     vo...]]></description><category></category></item><item><title><![CDATA[多功能按键设计。利用一个I/O口，接一个按键，实现3功能操作：单击 + 双击 + 长按]]></title><link>https://blog.csdn.net/tronteng/article/details/83095438</link><guid>https://blog.csdn.net/tronteng/article/details/83095438</guid><author>tronteng</author><pubDate>Tue, 16 Oct 2018 18:25:52 +0800</pubDate><description><![CDATA[
			题目：多功能按键设计。利用一个I/O口，接一个按键，实现3功能操作：单击 + 双击 + 长按。  
			============================================================================ 
			用户基本操作定义： 
			    1。短按操作：按键按下，按下时间&amp;lt;1s，属于一次短按操作 
			    2。长按...]]></description><category></category></item><item><title><![CDATA[Android Gatt连接流程源码分析之ClientIf注册]]></title><link>https://blog.csdn.net/tronteng/article/details/53435231</link><guid>https://blog.csdn.net/tronteng/article/details/53435231</guid><author>tronteng</author><pubDate>Fri, 02 Dec 2016 15:35:29 +0800</pubDate><description><![CDATA[本文将重点描述Android蓝牙GATT连接的大致流程，不会过多地纠缠代码细节，只为了从架构上梳理清楚，为接下来深入研究底层机制奠定一个宏观认识。
首先建立GATT连接前，我们通常要扫描蓝牙设备，获得设备的BluetoothDevice对象，然后调用connectGatt去建立GATT连接并等待连接状态回调，接下来我们就开始分析这一过程，首先看看connectGatt的实现：
public B]]></description><category></category></item><item><title><![CDATA[蓝牙流程介绍]]></title><link>https://blog.csdn.net/tronteng/article/details/53435217</link><guid>https://blog.csdn.net/tronteng/article/details/53435217</guid><author>tronteng</author><pubDate>Fri, 02 Dec 2016 15:34:39 +0800</pubDate><description><![CDATA[转至：http://blog.csdn.net/ffmpeg4976/article/details/49048469



1 基础知识介绍
1.1 缩略语

BTIF: Bluetooth Interface 
BTU : Bluetooth Upper Layer 
BTM: Bluetooth Manager 
BTE: Bluetooth embedded syste]]></description><category></category></item><item><title><![CDATA[surfaceflinger Bootanimation 服务init 启动]]></title><link>https://blog.csdn.net/tronteng/article/details/44339245</link><guid>https://blog.csdn.net/tronteng/article/details/44339245</guid><author>tronteng</author><pubDate>Tue, 17 Mar 2015 11:19:33 +0800</pubDate><description><![CDATA[在Init.rc中，用service关键字声明了一系列服务.
init.rc对service的说明如下：（详见system/core/init/readme.txt）
Services--------Services are programs which init launches and (optionally) restartswhen they exit.  
Services tak]]></description><category></category></item><item><title><![CDATA[pppd错误码]]></title><link>https://blog.csdn.net/tronteng/article/details/43561255</link><guid>https://blog.csdn.net/tronteng/article/details/43561255</guid><author>tronteng</author><pubDate>Fri, 06 Feb 2015 10:35:47 +0800</pubDate><description><![CDATA[给还在使用modem拨号的朋友
　　0 pppd已经断开，或者已经成功建立连接后请求方又中 断了。
　　1 发成了一个严重错误，例如系统调用失败或者访问非法内存。
　　2 处理给定操作是检测到错误，例如使用两个互斥的操作。
　　3 调用pppd的用户没有权限（必须是超级用户）。
　　4 内核不支持ppp，例如PPP驱动没有加载或者内核编译没有包含PPP驱动。
　　5 pppd收到SIG]]></description><category></category></item><item><title><![CDATA[pppd chat中文帮助]]></title><link>https://blog.csdn.net/tronteng/article/details/43525001</link><guid>https://blog.csdn.net/tronteng/article/details/43525001</guid><author>tronteng</author><pubDate>Thu, 05 Feb 2015 10:50:03 +0800</pubDate><description><![CDATA[最近在做pppd程序测试，在修改chat脚本pppd-on-dialer文件时出现了一些小问题，虽然chat脚本似乎并不难懂，但是要精通掌握还是需要花费一点精力的。虽然后来chat脚本问题基本已经解决了，但是为了彻底搞懂chat脚本，在baidu、google能用的关键字都用了结果只有找到一个官方的英文说明，就是没有中文。为了以后参阅花了1个白天3个夜晚的时间将文件翻译成中文。英文水平有限，难免有]]></description><category></category></item><item><title><![CDATA[Android 3G 拨号脚本]]></title><link>https://blog.csdn.net/tronteng/article/details/43482743</link><guid>https://blog.csdn.net/tronteng/article/details/43482743</guid><author>tronteng</author><pubDate>Wed, 04 Feb 2015 10:21:49 +0800</pubDate><description><![CDATA[1.WCDMA


debug

nodetach

lock

/dev/ttyUSB0

115200

user "card"

password "card"

crtscts

show-password

usepeerdns

noauth

noipdefault

novj

novjccomp

noccp

d]]></description><category></category></item><item><title><![CDATA[HI3515海思开发板移植3G模块笔记]]></title><link>https://blog.csdn.net/tronteng/article/details/43228263</link><guid>https://blog.csdn.net/tronteng/article/details/43228263</guid><author>tronteng</author><pubDate>Wed, 28 Jan 2015 11:54:13 +0800</pubDate><description><![CDATA[海思Hi3515 Linux

3G模块：
1、移动模块：ZTE M305（TD-SCDMA）
2、联通模块：HUAWEI EM770W（WCDMA）
3、电信模块：HUAWEI EM660（CDMA2000-EVDO）
开始工作：
1、在编译内核时，通过make menuconfig打开模块加载选项，因为调用3G需要用到pppd服务，所以找到pppd服务的，全部启用。
2、修改串]]></description><category></category></item></channel></rss>