蓝牙应用开发的目的是实现数据的无线传输,首先要有数据,其次以什么方式组织起来,最后发送。BLE协议栈GATT层规定了数据的组织方式,如下图:

上图的Profile是一个数组,叫做属性表,每个Characteristic(结构体)叫做属性,是数组的组成元素。举个实例化的例子,如下图是一个具体的Service:

需要将这个service(项目开发对象)和属于这个service的若干个characteristic加入到BLE协议栈中,添加service和characteristic就是修改GATTProfile文件,以TI的BLE协议栈为例。

在simpleGATTprofile.c文件中,修改属性表

/*** GATT Attribute format.*/
typedef struct attAttribute_t
{gattAttrType_t type; //!< Attribute type (2 or 16 octet UUIDs)uint8 permissions;   //!< Attribute permissionsuint16 handle;       //!< Attribute handle - assigned internally by attribute serveruint8* const pValue; //!< Attribute value - encoding of the octet array is defined in //!< the applicable profile. The maximum length of an attribute //!< value shall be 512 octets.
} gattAttribute_t;static gattAttribute_t simpleProfileAttrTbl[SERVAPP_NUM_ATTR_SUPPORTED] =
{...//添加Simple Profile Service//添加Characteristic//添加Characteristic Declaration//添加Characteristic Value//添加Characteristic User Description
}

到此添加完毕,可以对该表进行读写,然后调用链路层函数通过射频发送或接收属性数据。

BLE协议栈入门二(添加service和characteristic)相关推荐

  1. 蓝牙BLE(协议栈、OSAL、蓝牙APP工具)

    目录 蓝牙配对和绑定 蓝牙4.0 BLE 信道(RF Channel) BLE协议栈分层 PHY层(Physical layer 物理层) LL层(Link Layer 链路层) HCI层(Host ...

  2. Android BLE学习(二): Android与51822蓝牙模块通信流程的实现与分析

    http://www.itkeyword.com/doc/7802444777000507x499/android-BLE 背景 上一节介绍了蓝牙Android搜索BLE模块方法,搜索到蓝牙模块后,我 ...

  3. 五 蓝牙低功耗(BLE)协议栈 之 ATT层

    一 介绍 ATT全称是Attribute protocol(数据交互协议),这一层的关键词是Attribute(属性).一个属性其实就是一条数据,属性是BLE数据提供单元,也是蓝牙空中传播数据的最上层 ...

  4. 络达开发---自定义BLE服务(二):功能实现

    络达开发--自定义BLE服务(一) 一.目录和工程的配置 本文讲解如何在该SDK中添加用户自居定义的BLE服务.该服务的源码可以存放在自己希望的位置,但为符合工程目录的合理性,建议放在工程所在的目录下 ...

  5. 蓝牙BLE(BlueTooth BLE)入门及爬坑指南

    前言 最近比较忙,两三周没有更新简书了,公司正好在做蓝牙BLE的项目,本来觉得挺简单的东西从网上找了个框架,就咔咔地开始搞,搞完以后才发现里面还有不少坑呢,故而写一篇蓝牙BLE入门及爬坑指南,旨在帮助 ...

  6. 蓝牙协议分析(3)_蓝牙低功耗(BLE)协议栈介绍

    原文链接:蓝牙协议分析(3)_蓝牙低功耗(BLE)协议栈介绍 系列索引:蓝牙协议分析(1)_基本概念 蓝牙协议分析(2)_协议架构 目录 1. 前言 2. Why 3. How和What 4. Phy ...

  7. conan入门(二):conan 服务配置-密码管理及策略

    conan 服务配置 密码管理及策略配置 第一次以管理员身份(admin)使用默认密码(password)WEB登录入JFrog Artifactory后台时,系统就提示要求我修改密码,因为现有密码太 ...

  8. 基于NXP的蓝牙BLE协议栈代码分析

    重要概念点总结 1.profile 规范.包含有service服务,如电量. 2.service,每一个服务可能包含一个或多个特征值. 3.characteristic 特征值.通信载体,电量为20% ...

  9. linux内核开发入门二(内核KO模块介绍、开发流程以及注意事项)

    linux内核开发入门二(内核KO模块介绍.开发流程以及注意事项) 一.什么是内核模块 内核模块:ko模块(Kernel Object Module)是Linux内核中的可加载模块,它可以动态地向内核 ...

  10. SQL基础使用入门(二): DML语句和DCL语句

    SQL语句第二个类别--DML 语句 DML是数据操作语言的缩写,主要用来对数据表中数据记录实例对象进行操作,包括插入.删除.查找以及修改四大操作,这也是开发人员使用中最为频繁的操作. 1.插入记录 ...

最新文章

  1. 最新阿里Java技术面试题,看这一文就够了!
  2. Redis学习-内存优化
  3. 【企业管理】2020年3-4 月 每日花语
  4. 机器学习之数据预处理
  5. 高内聚低耦合_高渗透环氧树脂灌浆料
  6. 递归方程组解的渐进阶的求法——代入法
  7. linux命令数据盘分多个区,pvmove命令 – 移动物理盘区
  8. 在哪里编写写php,php扩展编写
  9. 目录树 删除 数据结构_互联网发布:最详细的《数据结构算法核心总结》,图文并茂超清晰...
  10. Laravel 生成二维码的方法
  11. 老外写的关于协程的性能文章-主打http协议
  12. vue中select选择框的监听事件
  13. python中filter用法_filter用法--Python
  14. EasyUI - Layout 布局控件
  15. 优秀关卡设计的十个原则
  16. Unit iptables.service could not be found
  17. MHZ是计算机的什么单位,电脑mhz是什么意思
  18. VTK实现多个体数据映射到一起进行渲染
  19. OpenCV 常见问题解决方案
  20. Python爬虫 - 获取网页编码

热门文章

  1. 基于MNIST数据集实现手写数字识别
  2. linux 进程 cmd su,linux下常用管理命令
  3. 一张图,区分NPN于PNP型三极管的工作原理
  4. Hadoop安装snappy(编译源码)
  5. Hadoop是什么?基本概念
  6. win10使用的c语言程序开发,Win10是什么编程语言写的?源代码文件多到你无法想象...
  7. SimpleMind 1.27.1 小巧的思维导图工具
  8. 松鼠症 知识过载与疲于奔命
  9. deep learning 入门
  10. 人工智能“剧透”《权游》大结局,第一个“领便当”的居然是ta