ESP32-C3 学习测试 蓝牙 篇(六、添加 Service)_esp32c3 hid

本文目的明确:添加一个 Service 。

ESP32-C3 入门专栏目录【导航】ESP32-C3 入门教程目录 【快速跳转】
❤️
ESP32-C3学习 蓝牙 篇系列博文连接:

❤️
测试使用的开发板:
自己画一块ESP32-C3 的开发板(第一次使用立创EDA)(PCB到手)

❤️
测试使用的开发环境:
ESP32-C3 VScode开发环境搭建(基于乐鑫官方ESP-IDF——Windows和Ubuntu双环境)

❤️
蓝牙篇系列相关博文:
ESP32-C3 学习测试 蓝牙 篇(一、认识 ESP-IDF 的蓝牙框架、简单的了解蓝牙协议栈)
ESP32-C3 学习测试 蓝牙 篇(二、蓝牙调试APP、开发板手机连接初体验)
ESP32-C3 学习测试 蓝牙 篇(三、认识蓝牙 GATT 协议)
ESP32-C3 学习测试 蓝牙 篇(四、GATT Server 示例解析)
ESP32-C3 学习测试 蓝牙 篇(五、添加 characteristic)


一、添加一个 Service

相对于 characteristic 来说,service 会复杂一点,但是在乐鑫官方论坛直接已经有乐鑫的工程师给过示例,所以大家都可以参考示例来进行,防止链接失效,在本文最后直接把示例代码给贴出来了,示例链接:

esp32 如何创建具有多个蓝牙服务和多个特征值的示例?

因为有示例(示例在文末),照着这个来就没问题。

在我自己测试的时候,我是比示例多创建了一个 characteristic ,而且其中有一个带通知的 characteristic,比示例中添加的地方多一点,我把需要修改的地方总结记录一下,如果后续再应用的时候需要用到什么特别的再说。

1.1 新 service 头文件枚举定义

在这里插入图片描述

1.2 新 service 的一些定义

在这里插入图片描述

在这里插入图片描述

1.3 新 service 的属性表

在这里插入图片描述

1.4 新 service 的通知

在这里插入图片描述

1.5 ☆新 service 的创建☆

新 service 的创建操作是在 gatts_profile_event_handler 回调函数中使用一个标志位通过判断实现的:

在这里插入图片描述

在这里插入图片描述

到这里,新的 service 添加程序就修改完成,根据例程和我们前面文章的学习这没什么难度,但是实际上我测试也用了一些时间。

要细心!拷贝代码,修改代码要细心! = =!

二、测试

上面的程序修改完成以后,测试就简单了:

在这里插入图片描述

上图可以看到,在我们之前的基础上,我们多了一个 Service, 根据我们的程序 Service 中有2个 characteristic ,characteristic 的属性与程序设置的一致, 通知的读取也正常。

其他的一些读写操作可以根据前面几篇文章自己测试,我测试过一切正常。

结语

本文成功添加了一个 Service,我们没有深入分析原理,所以没什么难度,根据示例框架来即可。

磨磨唧唧花了这么多篇文章,好歹也把蓝牙玩起来了,但是到目前为止,我们还没有结合开发板上面的
一些其他设备做蓝牙的使用。

❤️
我们还没有实现我们使用蓝牙的第一个小目标:

通过蓝牙通讯,把传感器的数据发送给手机,然后手机也可以控制开发板上的LED灯。

但是有了这几篇文章的基础,我们接下来就要实现我们的这个小目标,做一个简单的应用。
❤️

应用完善程度取决于博主到时候测试使用的情况,如果顺利肯定完善点,不顺利就……⁄(⁄ ⁄•⁄ω⁄•⁄ ⁄)⁄ 大家多多理解……

本文就到这里,谢谢大家,最后附上官方论坛的示例源码:

附录(源码)

gatts_table_creat_demo.c:

/\*
 This example code is in the Public Domain (or CC0 licensed, at your option.)

 Unless required by applicable law or agreed to in writing, this
 software is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
 CONDITIONS OF ANY KIND, either express or implied.
\*/

/\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
\*
\* This demo showcases creating a GATT database using a predefined attribute table.
\* It acts as a GATT server and can send adv data, be connected by client.
\* Run the gatt\_client demo, the client demo will automatically connect to the gatt\_server\_service\_table demo.
\* Client demo will enable GATT server's notify after connection. The two devices will then exchange
\* data.
\*
\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*/


#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "freertos/event\_groups.h"
#include "esp\_system.h"
#include "esp\_log.h"
#include "nvs\_flash.h"
#include "esp\_bt.h"

#include "esp\_gap\_ble\_api.h"
#include "esp\_gatts\_api.h"
#include "esp\_bt\_main.h"
#include "gatts\_table\_creat\_demo.h"
#include "esp\_gatt\_common\_api.h"

#define GATTS\_TABLE\_TAG "GATTS\_TABLE\_DEMO"

#define PROFILE\_NUM 1
#define PROFILE\_APP\_IDX 0
#define ESP\_AP
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值