上篇博客中已经对BTStack框架进行了较为详细的说明,本篇博客将进一步总结一下(由韦大仙笔记所得). 可以从5个方面来理解BTStack的框架: 1.硬件操作:hci_transport_t BTStack支持多种接口的蓝牙模块,比如USB口.3线串口.5线串口. 对于这些接口,会抽象出对应的hci_transport_t结构体. 该结构体成员如下: 里面有init.open.send_packet等重要成员. 对于3线串口.5线串口,它们在init.open设备时,不需要写两套代码.因为它们…
首先来看一下,对于硬件操作,它是如何来进行处理的.在上篇文章中曾说过,在main函数里面它会调用硬件相关的代码,调用操作系统相关的代码.在BTStack中,可以搜索一下main.c,将会发现有很多main.c,都是为于port目录下面. Main.c (port\esp32\components\btstack) Main.c (port\ez430-rf2560\src) Main.c (port\libusb) Main.c (port\libusb-intel) Main.c (port\…
本篇博客根据韦东山的视频,整理所得. 本篇博客讲解BTStack的框架,首先来看一下硬件的结构: 蓝牙模块接在电脑上,或是接在开发板上.不论接在哪,我们都需要编写程序来控制这个蓝牙模块. . 我们需要发送数据给蓝牙模块 需要发送命令给蓝牙模块,比如让它发出无线信号去扫描.识别.连接.读写附近的蓝牙设备 2. 需要从蓝牙模块获得数据 3. 需要处理获得的数据 上述3步骤可以简化为一个循环: 1.读取数据:可以读取用户输入的指示,也可以读取蓝牙模块的数据 2.处理数据:根据用户的指示发送数据给蓝牙模…
本篇博客根据韦东山的视频整理所得. 在上篇博客,通过阅读BTStack的源码,大体了解了其框架,对于任何一个BTStack的应用程序都有一个main函数,这个main函数是统一的.这个main函数做了某些初始化之后,最终会调用到应用程序提供的btstack_main,在btstack_main里面首先做一些初始化,然后调用hci_power_on函数去打开蓝牙模块. 一. 数据类型 运行BTStack程序时,会生成hci_dump.pklg文件,可以使用WireShark打开此文件,截图如下:…
简介 FFmpeg是一个集录制.转换.音/视频编码解码功能为一体的完整的开源解决方案. FFmpeg的开发是基于Linux操作系统,但是可以在大多数操作系统中编译和使用.FFmpeg支持MPEG.DivX.MPEG4.AC3.DV. FLV等40多种编码,AVI.MPEG.OGG.Matroska.ASF等90多种解码. TCPMP, VLC, MPlayer等开源播放器都用到了FFmpeg. FFmpeg主目录下主要有libavcodec.libavformat和 libavutil等子目录.…
http://blog.csdn.net/wstarx/article/details/1572393 FFMPEG源码分析(二) http://www.cnblogs.com/qingquan/archive/2011/08/29/2158912.html 简介 FFmpeg是一个集录制.转换.音/视频编码解码功能为一体的完整的开源解决方案.FFmpeg的开发是基于Linux操作系统,但是可以在大多数操作系统中编译和使用.FFmpeg支持MPEG.DivX.MPEG4.AC3.DV.FLV等4…
DeepCtr是一个简易的CTR模型框架,集成了深度学习流行的所有模型,适合学推荐系统模型的人参考. 我在参加比赛中用到了这个框架,但是效果一般,为了搞清楚原因从算法和框架两方面入手.在读代码的过程中遇到一些不理解的问题,所以记录在这里. dense_embedding和sparse_embedding的区别? 处理dense, 是将dense接全连接层变成embedding size的一个list,然后和sparse一样的操作 concat_fun 这里是concat什么?fm的输入为什么需要…
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家讲的是关于开源软件协议基本知识. 牛顿曾说过:"如果我比别人看得更远,那是因为我站在巨人的肩上".在软件开发中如果说也存在巨人的肩膀让我们站,我想这个巨人应该就是开源软件.一个优秀的软件开发人员应该能够善于学习和利用开源软件来加速自己的开发,而为了正确地使用开源软件,我们必须要了解开源软件协议,今天我们就来聊一聊开源软件协议这个话题. 1.开源软件是什么? 所谓"开源软件"(open-source softwa…
1. 前言 大家都知道,相比传统蓝牙,蓝牙低功耗(BLE)最大的突破就是加大了对广播通信(Advertising)的支持和利用.关于广播通信,通过“玩转BLE(1)_Eddystone beacon”和“玩转BLE(2)_使用bluepy扫描BLE的广播数据”两篇文章的介绍,我们已经有了一个整体的认识.本文将依此为基础,从技术的角度,分析和理解BLE协议中有关广播通信的定义和实现. 注1:之前的蓝牙协议分析文章(如“蓝牙协议分析(3)_蓝牙低功耗(BLE)协议栈介绍”),偏向于从横向.从大而全的…
1.概述:   蓝牙协议规范遵循开放系统互连参考模型(OSI/RM),从低到高地定义了蓝牙协议堆栈的各个层次. SIG(Session Initiation Protocol)所定义的蓝牙技术规范的目的是使符合该规范的各种应用之间能够实现互操作. 互操作的远端设备需要使用相同的协议栈,不同的应用需要不同的协议栈. 但是,所有的应用都要使用蓝牙技术规范中的数据链路层和物理层. 2.完整的蓝牙协议栈 完整的蓝牙协议栈如图1所示,不是任何应用都必须使用全部协议,而是可以只使用其中的一列或多列. 图1显…