【BLE】TLSR8258开发记录之5--SDK添加自定义服务

2023-10-10 17:30

本文主要是介绍【BLE】TLSR8258开发记录之5--SDK添加自定义服务,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1、说明

在SDK V3.4 BLE sample中添加自定义服务,前期使用昇润APP,故需要符合他的server UUID。
实现打印功能需要先实现模拟串口的添加。服务说明

2、操作

A.在gatt_uuid.h中,添加定义服务定义

//MG add
#define SERVICE_UUID_MG_TMHR                                      0x1000//MG add
#define CHARACTERISTIC_UUID_MG_TMHR_RX                            0x1001
#define CHARACTERISTIC_UUID_MG_TMHR_TX                            0x1002

B.在app_config.h中,在ATT Handle define添加枚举定义

    //MG addTMHR /**********************************************************************************************/MG_TMHR_PS_H,MG_INCLUDE_H,                            MG_TMHR_INPUT_CD_H,MG_TMHR_INPUT_DP_H,MG_TMHR_OUTPUT_CD_H,MG_TMHR_OUTPUT_DP_H,MG_TMHR_INPUT_CCB_H,

C.在app_att.c中添加UUID定义

 MG TMHR /
static const u16 MG_TMHR_Service_UUID     = SERVICE_UUID_MG_TMHR;
static const u16 MG_TMHR_RX_CharUUID      = CHARACTERISTIC_UUID_MG_TMHR_RX;
static const u16 MG_TMHR_TX_CharUUID      = CHARACTERISTIC_UUID_MG_TMHR_TX;

添加数据缓冲区(输入输出)

//MG add
static u8 MG_TMHR_In[2];
static u8 MG_TMHR_InCCC[2];
static u8 MG_TMHR_Out[2];

添加特征值定义

//MG add
static const u8 MG_TMHR_CharVal_RX[5] = {CHAR_PROP_READ | CHAR_PROP_WRITE_WITHOUT_RSP | CHAR_PROP_NOTIFY,U16_LO(MG_TMHR_INPUT_DP_H),U16_HI(MG_TMHR_INPUT_DP_H),U16_LO(CHARACTERISTIC_UUID_MG_TMHR_RX),U16_HI(CHARACTERISTIC_UUID_MG_TMHR_RX)
};
static const u8 MG_TMHR_CharVal_TX[5] = {CHAR_PROP_READ | CHAR_PROP_NOTIFY,U16_LO(MG_TMHR_OUTPUT_DP_H),U16_HI(MG_TMHR_OUTPUT_DP_H),U16_LO(CHARACTERISTIC_UUID_MG_TMHR_TX),U16_HI(CHARACTERISTIC_UUID_MG_TMHR_TX)
};

添加自定义include服务

static const u16 MG_include[3] = {MG_TMHR_PS_H,MG_TMHR_INPUT_CCB_H,SERVICE_UUID_MG_TMHR};

在my_Attributes添加属性,其中“MG_TMHR_Write_CB”为写回调函数,即APP下发数据过来后,从机接收到数据后会进入该回调函数
以下代码添加的位置须与ATT Handle define中的"MG_TMHRxx"枚举位置相对应

//    // MG TMHR ///TMHR data service{6,ATT_PERMISSIONS_READ,2,2,(u8*)(&my_primaryServiceUUID), (u8*)(&MG_TMHR_Service_UUID),0},//   include MG service{0,ATT_PERMISSIONS_READ,2,sizeof(MG_include),(u8*)(&hidIncludeUUID),     (u8*)(MG_include), 0},//data RX{0,ATT_PERMISSIONS_READ,2,sizeof(MG_TMHR_CharVal_RX),(u8*)(&my_characterUUID), (u8*)(MG_TMHR_CharVal_RX), 0},    //prop{0,ATT_PERMISSIONS_RDWR,2,2,(u8*)(&MG_TMHR_RX_CharUUID),     (u8*)(MG_TMHR_Out), &MG_TMHR_Write_CB},    //value//data TX{0,ATT_PERMISSIONS_READ,2,sizeof(MG_TMHR_CharVal_TX),(u8*)(&my_characterUUID), (u8*)(MG_TMHR_CharVal_TX), 0},    //prop{0,ATT_PERMISSIONS_READ,2, 2,(u8*)(&MG_TMHR_TX_CharUUID),     (u8*)(MG_TMHR_In), 0},    //value{0,ATT_PERMISSIONS_RDWR,2,sizeof(MG_TMHR_InCCC),(u8*)(&clientCharacterCfgUUID),     (u8*)(MG_TMHR_InCCC), 0}

回调函数定义如下:(测试用)

//写回调函数
//static unsigned char led_status= 0;
int MG_TMHR_Write_CB(void *p)
{rf_packet_att_data_t *pw = (rf_packet_att_data_t*)p;int len = pw->l2cap - 3;int i=0;//打印数据for(i=0; i<len; i++){printf("Data[%d] is: %d \r\n",i,pw->dat[i]);}//io翻转//gpio_toggle(GPIO_PD2);//回复数据bls_att_pushNotifyData(MG_TMHR_OUTPUT_DP_H,&pw->dat,len);return 1;
}

3、现象

打开手机调试APP(这里用的昇润APP,用其他的第三方软件也可以),连接上之后选择在发送端口发送:0506,可以在串口助手看到8258转发的0506

这篇关于【BLE】TLSR8258开发记录之5--SDK添加自定义服务的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/181993

相关文章

SpringBoot 多环境开发实战(从配置、管理与控制)

《SpringBoot多环境开发实战(从配置、管理与控制)》本文详解SpringBoot多环境配置,涵盖单文件YAML、多文件模式、MavenProfile分组及激活策略,通过优先级控制灵活切换环境... 目录一、多环境开发基础(单文件 YAML 版)(一)配置原理与优势(二)实操示例二、多环境开发多文件版

Vite 打包目录结构自定义配置小结

《Vite打包目录结构自定义配置小结》在Vite工程开发中,默认打包后的dist目录资源常集中在asset目录下,不利于资源管理,本文基于Rollup配置原理,本文就来介绍一下通过Vite配置自定义... 目录一、实现原理二、具体配置步骤1. 基础配置文件2. 配置说明(1)js 资源分离(2)非 JS 资

使用docker搭建嵌入式Linux开发环境

《使用docker搭建嵌入式Linux开发环境》本文主要介绍了使用docker搭建嵌入式Linux开发环境,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录1、前言2、安装docker3、编写容器管理脚本4、创建容器1、前言在日常开发全志、rk等不同

sysmain服务可以禁用吗? 电脑sysmain服务关闭后的影响与操作指南

《sysmain服务可以禁用吗?电脑sysmain服务关闭后的影响与操作指南》在Windows系统中,SysMain服务(原名Superfetch)作为一个旨在提升系统性能的关键组件,一直备受用户关... 在使用 Windows 系统时,有时候真有点像在「开盲盒」。全新安装系统后的「默认设置」,往往并不尽编

Python 基于http.server模块实现简单http服务的代码举例

《Python基于http.server模块实现简单http服务的代码举例》Pythonhttp.server模块通过继承BaseHTTPRequestHandler处理HTTP请求,使用Threa... 目录测试环境代码实现相关介绍模块简介类及相关函数简介参考链接测试环境win11专业版python

Python实战之SEO优化自动化工具开发指南

《Python实战之SEO优化自动化工具开发指南》在数字化营销时代,搜索引擎优化(SEO)已成为网站获取流量的重要手段,本文将带您使用Python开发一套完整的SEO自动化工具,需要的可以了解下... 目录前言项目概述技术栈选择核心模块实现1. 关键词研究模块2. 网站技术seo检测模块3. 内容优化分析模

Nginx中配置使用非默认80端口进行服务的完整指南

《Nginx中配置使用非默认80端口进行服务的完整指南》在实际生产环境中,我们经常需要将Nginx配置在其他端口上运行,本文将详细介绍如何在Nginx中配置使用非默认端口进行服务,希望对大家有所帮助... 目录一、为什么需要使用非默认端口二、配置Nginx使用非默认端口的基本方法2.1 修改listen指令

SysMain服务可以关吗? 解决SysMain服务导致的高CPU使用率问题

《SysMain服务可以关吗?解决SysMain服务导致的高CPU使用率问题》SysMain服务是超级预读取,该服务会记录您打开应用程序的模式,并预先将它们加载到内存中以节省时间,但它可能占用大量... 在使用电脑的过程中,CPU使用率居高不下是许多用户都遇到过的问题,其中名为SysMain的服务往往是罪魁

基于Java开发一个极简版敏感词检测工具

《基于Java开发一个极简版敏感词检测工具》这篇文章主要为大家详细介绍了如何基于Java开发一个极简版敏感词检测工具,文中的示例代码简洁易懂,感兴趣的小伙伴可以跟随小编一起学习一下... 目录你是否还在为敏感词检测头疼一、极简版Java敏感词检测工具的3大核心优势1.1 优势1:DFA算法驱动,效率提升10

聊聊springboot中如何自定义消息转换器

《聊聊springboot中如何自定义消息转换器》SpringBoot通过HttpMessageConverter处理HTTP数据转换,支持多种媒体类型,接下来通过本文给大家介绍springboot中... 目录核心接口springboot默认提供的转换器如何自定义消息转换器Spring Boot 中的消息