Bluedroid 函数分析:BTA_GATTC_Open】的更多相关文章

进行GATT 通信,首先要打开GATT 的通道.下面我们分析BTA_GATTC_Open 这个函数: 这个函数在bta_gattc_api.c 文件中定义,这个是一个接口文件,里面没有做真正的open的动作,最终还是要将open 的事件传递到BTE层面: /******************************************************************************* ** ** Function BTA_GATTC_Open ** ** Descr…
我们先来看看在bluedroid 里面有多少地方调用到这里: 可以看出除了 它自己声明的地方,有三处 调用到这个函数. 一处是 进行discovery,一处是进行search的时候,还有一次是bta_dm_sys_hw_cback 中,这个在bta_dm_enable的时候就已经注册了,所有其实最先注册的地方就是bta_dm_sys_hw_cback ,以后即使有地方调用该函数进行GATT 注册,也不会真正的再次注册. 另外 这个函数 其实是BTA_GATTC_AppRegister的包装,但是…
split(),preg_split()与explode()函数分析与介 发布时间:2013-06-01 18:32:45   来源:尔玉毕业设计   评论:0 点击:965 split()函数可以实现使用正则表达式来把字符串拆分为较小的块,并作为一个数组返回,如果出现错误,则返回false.同样也可以根据你需要选择要返回多少个小块.array split(string $pattern,string $string [... split()函数可以实现使用正则表达式来把字符串拆分为较小的块,并…
string函数分析string函数包含在string.c文件中,经常被C文件使用.1. strcpy函数原型: char* strcpy(char* str1,char* str2);函数功能: 把str2指向的字符串拷贝到str1中去函数返回: 返回str1,即指向str1的指针 /** * strcpy - Copy a %NUL terminated string * @dest: Where to copy the string to * @src: Where to copy the…
一.整体流程 start_amboot()函数是执行完start.S汇编文件后第一个C语言函数,完成的功能自然还是初始化的工作 . 1.全局变量指针r8设定,以及全局变量区清零 2.执行一些类初始化函数,详细见init_sequence所对应的函数 3.初始化norflash 4.初始化显示器 5.初始化堆区 6.初始化nandflash 7.环境变量重定位,详见uboot环境变量(env)初始化 8.网络设置 9.设备初始化,详见uboot的devices_init函数分析 10.函数跳转表初…
一.函数说明 函数功能:安装系统函数指针 函数位置:common/exports.c 二.函数分析 void jumptable_init (void) { int i; gd->jt = (void **) malloc (XF_MAX * sizeof (void *)); //在堆中开辟指针空间 ; i < XF_MAX; i++) gd->jt[i] = (void *) dummy; //指针空间都初始化成指向空函数 //依次安装函数指针 gd->jt[XF_get_ve…
Linux-0.11内存管理模块是源码中比較难以理解的部分,如今把笔者个人的理解发表 先发Linux-0.11内核内存管理get_free_page()函数分析 有时间再写其它函数或者文件的:) /*  *Author  : DavidLin  *Date    : 2014-11-11pm  *Email   : linpeng1577@163.com or linpeng1577@gmail.com  *world   : the city of SZ, in China  *Ver    …
在上章和上上上章: 28.QT-QPainter介绍 30.QT-渐变之QLinearGradient. QConicalGradient.QRadialGradient 学习了QPainter基础绘制后,接下来,来学习QPainter其它函数之rotate()函数 首先来看看QPainter其它函数 void QPainter::drawPixmap ( int x, int y, int w, int h, const QPixmap & pixmap, int sx, int sy, in…
又是一篇内核函数分析的博文,我个人觉得Windows的内核是最好的老师,当你想实现一个功能之前可以看看Windows内核是怎么做的,说不定就有灵感呢:) 首先看下官方的注释说明: /*++ Routine Description: For a given virtual address this function returns TRUE if no page fault will occur for a read operation on the address, FALSE otherwis…
STM32F10X固件库函数——串口清状态位函数分析 最近在测试串口热插拔功能的时候,意外发现STM32F10X的串口库函数中,清理串口状态位函数稍稍有点不解.下面是改函数的源码: /******************************************************************************* * Function Name  : USART_ClearFlag * Description    : Clears the USARTx's pend…
string函数分析string函数包含在string.c文件中,经常被C文件使用.1. strcpy函数原型: char* strcpy(char* str1,char* str2);函数功能: 把str2指向的字符串拷贝到str1中去函数返回: 返回str1,即指向str1的指针 /** * strcpy - Copy a %NUL terminated string * @dest: Where to copy the string to * @src: Where to copy the…
本文转载自:http://blog.csdn.net/tigerjibo/article/details/12784823 linux C函数之strdup函数分析 一.函数分析 1.函数原型: #include <string.h> char *strdup(const char *s); 2.功能: strdup()函数主要是拷贝字符串s的一个副本,由函数返回值返回,这个副本有自己的内存空间,和s没有关联.strdup函数复制一个字符串,使用完后,要使用delete函数删除在函数中动态申请…
很多其它内容请參照我的个人网站: http://stackvoid.com/ ACL 链路在 Bluetooth 中很重要,一些重要的应用如 A2DP, 基于 RFCOMM 的应用,BNEP等都要建立 ACL 链路,发送/接收ACL 包.今天跟大家一起来分析 ACL 包发送/接收流程,以及涉及到的重要 command/event. ACL包发送 以下的图(点击大图)是各种应用层使用 L2CAP 的 API:L2CA_DataWrite 发送数据流的过程,此API继续往下走,我仅分析了正常数据流的…
环境及代码介绍 环境和源码 由于有时候要透彻的理解C里面的一些细节问题,所有有必要看看汇编,首先这一切的开始就是从汇编代码进入C的main函数过程.这里不使用编译器自动生成的这部分汇编代码,因为编译器自动生成的代码会涉及环境变量的传递,参数的传递等等一系列问题.以ARM汇编来进行分析.使用一个启动汇编文件和一个main.c的文件,在ARM 2440板子上调试这段程序,使用JLinkExe借助jlink来调试: init.s: .text .global _start _start: ldr sp…
关键词: js手风琴 js百叶窗 js百页窗 实现原理解读 使用两层for循环实现, 第一层有三个功能,分别给第个li: 添加索引 预设位置 添加事件 第二层有两个功能,整理图片位置: 鼠标的li,以及前面那些li的位置 鼠标后面那些li的位置 HTML/CSS 解读:略 HTML/CSS代码: <!-- Author: XiaoWen Create a file: 2016-12-14 09:41:11 Last modified: 2016-12-15 12:56:23 Start to w…
目录 1. 概述 2. 线程 2.1 主要函数 2.2 功能 3. 事件 3.1 主要函数 3.2 功能 1. 概述 GKI以库libbt-brcm_gki.so(Static Lib?)的形式提供给BlueDroid使用 该层是一个适配层,适配了OS相关的进程.内存相关的管理,还可以用于线程间传递消息 主要通过变量gki_cb实现对进程的统一管理 typedef struct { pthread_mutex_t GKI_mutex; pthread_t thread_id[GKI_MAX_TA…
前言 从这节进入jQuery的世界,首先从jQuery的入口函数开始了解jQuery()或$是如何运作的,这里我给出了一个最小的例子来分析. 回忆 在进入分析代码前我们回想下jQuery的使用方法有哪些呢? selector,[context] selector:用来查找的字符串 context:作为待查找的 DOM 元素集.文档或 jQuery 对象. element 一个用于封装成jQuery对象的DOM元素 object 一个用于封装成jQuery对象 elementArray 一个用于封…
一.概述 1.函数位置 common/command.c 2.函数功能分析 解析命令的关键环节是如何根据输入命令查找对应命令的信息,从而跳转到对应命令的函数处执行程序.这必然涉及到如何存放命令的详细信息这个问题.因为一种存法,对应一种查法,进而取法.也就是说,实际上是两个问题: (1)命令的详细信息是如何存放的 (2)如何在命令存储区查找是否有与输入命令匹配的命令 就这两个问题,我们来分别分析uboot的设计方法. 二.".u_boot_cmd"环境变量存储区 1.命令详细信息存储结构…
一.概述 位置:common/main.c 功能:根据传入参数(命令),在命令存储区(.u_boot_cmd)中查找对应的命令,找到命令并调用对应的函数执行 流程: 二.分析 1.函数说明信息 /**************************************************************************** * returns: * 1 - command executed, repeatable * 0 - command executed but no…
函数功能:提示用户输入命令,并读取命令/****************************************************************************/ /* * Prompt for input and read a line. * If CONFIG_BOOT_RETRY_TIME is defined and retry_time >= 0, * time out when time goes past endtime (timebase time…
一.概述    main_loop()函数做的都是与具体平台无关的工作.主要包括的工作如下: (1)初始化启动次数限制机制 (2)Modem功能 (3)设置软件版本号 (4)启动延迟 (5)读取命令,解析命令 二.具体分析void main_loop (void){#ifndef CFG_HUSH_PARSER static char lastcommand[CFG_CBSIZE] = { 0, }; int len; int rc = 1; int flag;#endif #if define…
一.函数说明 函数功能: 完成设备的初始化 函数位置: common/devices.c 二.程序分析 int devices_init (void) { #ifndef CONFIG_ARM /* already relocated for current ARM implementation */ ulong relocation_offset = gd->reloc_off; int i; /* relocate device name pointers */ ; i < (sizeof…
在看imadjust代码时,看到stretchlim函数,特此分析一下,代码注释如下 function lowhigh = stretchlim(varargin) %STRETCHLIM Find limits to contrast stretch an image. % LOW_HIGH = STRETCHLIM(I,TOL) returns a pair of gray values that can be % used by IMADJUST to increase the contr…
环境:Win7 64位 + Matlab R2010a 本次分析的函数为im2uint8,这个函数在图像处理中要用到,主要把图像数据类转换到uint8 uint8函数有效的输入的图像数据类为:logical,uint8,uint16,double,single和int16 如果输入类型为logical,则输入数据为1时转换为255,数据为0还是0. 如果输入类型为uint8,则输入数据保持不变. 如果输入类型为uint16,则输入数据除以255,然后四舍五入. 如果输入数据为double,则输入…
random是python产生伪随机数的模块,随机种子默认为系统时钟.下面分析模块中的方法: 1.random.randint(start,stop): 这是一个产生整数随机数的函数,参数start代表最小值,参数stop代表最大值,两端的数值都可以取到: 函数算法时间复杂度:O(1)核心源代码:return self.randrange(a, b+1)   # 由randrange函数封装而来例子: for i in range(20): print(rm.randint(0, 10), en…
WinMain即(函数运行入口): p { margin-bottom: 0.25cm; line-height: 120% } int WINAPI WinMain (HINSTANCE hinstance,HINSTANCE hPrevInstance,LPSTR  lpCmdLine,int  iCmdShow) { MessageBox(NULL,TEXT("Hello,Window 98!"),TEXT("HelloMSG"),0); return 0;…
Tkinter模块是python比较常用的GUI界面设计模块,首先对相关的函数进行分析. 一 .创建根窗口相关的函数说明 import tkinter as tk top = tk.Tk() # 创建一个根窗口 top.title("窗口的标题") # 设置该窗口的标题 top.geometry("500x500+500+100") # 设置窗口的尺寸,500x500+500+100=width*hight+x+y # width=True|False宽可变|不可变…
map:会根据提供的函数对指定序列做映射. map(func, *iterables) --> map object Make an iterator that computes the function using arguments from each of the iterables. Stops when the shortest iterable is exhausted. """ 根据提示,map有一个函数名参数还有个动态参数,意思是将可迭代的对象打散然后把…
在分析start.S文件过程中提到过,最后从汇编跳到C函数执行的是start_armboot函数,位于lib_arm\board.c文件下,它的执行流程图如下,截图来源于<嵌入式LINUX应用开发完全手册>.根据流程图,以下内容大致分几步写: 1.gd全局变量初始化 2.调用init_sequence函数指针数组里的初始化函数.nand初始化.环境变量初始化.USB初始化 3.死循环main_loop()分析 1.gd全局变量初始化 gd是全局引用的变量,它的定义在Global_data.h…
由于X86平台上面,内存是划分为低端内存和高端内存的,所以在两个区域内的page查找对应的虚拟地址是不一样的. 一. x86上关于page_address()函数的定义 在include/linux/mm.h里面,有对page_address()函数的三种宏定义,主要依赖于不同的平台: 首先来看看几个宏的定义:CONFIG_HIGHMEM:顾名思义,就是是否支持高端内存,可以查看config文件,一般推荐内存超过896M的时候,才配置为支持高端内存.WANT_PAGE_VIRTUAL:X86平台…