CH58X服务修改
在对ble系列应用时,很多时候拿手机充当主机。在使用ble 调试助手时常会用到write、read、notify等功能。有时可能会根据自己的需求对这些服务进行修改。下图是官方例程体现出的services。

想要对服务进行修改,要从从机抓起。毕竟执行服务的是从机。需要操作的gattprofile.c的文件。

以添加服务为例新增一个notify服务,在UUID为0XFFF2的服务进行修改。要模拟一个服务就要做到神形兼备 ,既有相应的功能选项又要能够实现相应的功能。
首先让他先有形,这一步是比较容易的在图中的部分进行修改(根据已经有的notify服务进行修改)
,修改后的代码为
static uint8_t simpleProfileChar2Props = GATT_PROP_READ | GATT_PROP_NOTIFY;下载程序后的效果为,但是是无法实现notify的功能的。


接下来就要为notify实现功能而努力。继续往下看程序我们会发现关于UUID为0XFFF4的notify服务的配置。经过对比我们会发现具体实现notify的功能的程序在红框中
,
那我们就要对我们新增的notify进行修改
// Characteristic 2 Declaration
{
{ATT_BT_UUID_SIZE, characterUUID},
GATT_PERMIT_READ,
0,
&simpleProfileChar2Props}, // Characteristic Value 2
{
{ATT_BT_UUID_SIZE, simpleProfilechar2UUID},
GATT_PERMIT_READ,
0,
simpleProfileChar2},
// rzz
{
{ATT_BT_UUID_SIZE, simpleProfilechar2UUID},
0,
0,
simpleProfileChar2}, // rzz
{
{ATT_BT_UUID_SIZE, clientCharCfgUUID},
GATT_PERMIT_READ | GATT_PERMIT_WRITE,
0,
(uint8_t *)simpleProfileChar2Config}, // Characteristic 2 User Description
{
{ATT_BT_UUID_SIZE, charUserDescUUID},
GATT_PERMIT_READ,
0,
simpleProfileChar2UserDesp},
到这里就能使用了吗?不,仍需努力。接下来我们要继续浏览gattprofile.c中的程序。
请看好接下来的操作:这里可以发现红框中出现的simpleProfileChar4Config与前面的的相对应,在这里要考虑新增一个
GATTServApp_InitCharCfg(INVALID_CONNHANDLE, simpleProfileChar2Config)语句,再回头看一下有对simpleProfileChar4Config的定义的全局变量。

static gattCharCfg_t simpleProfileChar4Config[PERIPHERAL_MAX_CONNECTION];
static gattCharCfg_t simpleProfileChar2Config[PERIPHERAL_MAX_CONNECTION];
接下来对NOTIFY进行操作,
bStatus_t simpleProfile_Notify(uint16_t connHandle, attHandleValueNoti_t *pNoti)
{
uint16_t value = GATTServApp_ReadCharCfg(connHandle, simpleProfileChar4Config);
uint16_t value1 = GATTServApp_ReadCharCfg(connHandle, simpleProfileChar2Config);
// If notifications enabled
if(value & GATT_CLIENT_CFG_NOTIFY)
{
// Set the handle
pNoti->handle = simpleProfileAttrTbl[SIMPLEPROFILE_CHAR4_VALUE_POS].handle;
// Send the notification
return GATT_Notification(connHandle, pNoti, FALSE);
}
if(value1 & GATT_CLIENT_CFG_NOTIFY)
{
// Set the handle
pNoti->handle = simpleProfileAttrTbl[SIMPLEPROFILE_CHAR2_VALUE_POS].handle; //rzz
// Send the notification
return GATT_Notification(connHandle, pNoti, FALSE);
}
return bleIncorrectMode;
}
static void simpleProfile_HandleConnStatusCB(uint16_t connHandle, uint8_t changeType)
{
// Make sure this is not loopback connection
if(connHandle != LOOPBACK_CONNHANDLE)
{
// Reset Client Char Config if connection has dropped
if((changeType == LINKDB_STATUS_UPDATE_REMOVED) ||
((changeType == LINKDB_STATUS_UPDATE_STATEFLAGS) &&
(!linkDB_Up(connHandle))))
{
GATTServApp_InitCharCfg(connHandle, simpleProfileChar4Config);
GATTServApp_InitCharCfg(connHandle, simpleProfileChar2Config);//rzz
}
}
}
更改到此处notify的功能已经可以用了,根据自己的需求在peripheral.c中进行修改,在notify中接收相应的数据。

这只是最基础的修改,如有问题请指正!
CH58X服务修改的更多相关文章
- 使用windows服务修改CPU型号(重启依然有效)
此项目基于.net framework 4.0 效果如下: 服务运行前: 服务运行后: 思路大概是这样: 通过修改注册表可以修改CPU型号,把服务设置成本地服务,并且开机自动启动,来实现开机自动修改处 ...
- 扩展服务 修改新增Service的默认主题
问题描述:想要在F:\PHPnow-1.5.6\htdocs\yt\Yourphp\Tpl\ 目录下新增一个Service\Default(A) 和Service\new(B) 两个主题 ...
- 通过服务修改widgetUI
public static void updateAppWidget(Context context, String displayMsg) { AppWidgetManager appWidgetM ...
- 解决Windows服务修改配置文件后必须重启的问题
原文地址:http://www.cnblogs.com/jeffwongishandsome/archive/2011/04/24/2026381.html 解决方法:读取配置文件前先刷新文件 ...
- SuperMap-WMTS服务修改切片集顺序
1.访问iserver的服务接口,找到WMTS服务接口 2.选择切片集的默认顺序
- cetnos 7 ntp服务的安装与配置
首先需要搭建yum本地仓库 http://www.cnblogs.com/jw35/p/5967677.html #搭建yum仓库方法 yum install ntp -y #安装n ...
- ubuntu chmod 无法更改 文件夹权限 系统提示“不允许的操作 2、linux 如何修改只读文件 3、ubuntu安装
1.ubuntu chmod 无法更改 文件夹权限 系统提示“不允许的操作 答案:需要超级用户权限 sudo 2.linux 如何修改只读文件 答案:可以使用chmod命令,为改文件提供其他的权限.u ...
- 从开发的角度比较 ASP.NET Web 服务与 WCF
Windows Communication Foundation (WCF) 具有一个 ASP.NET 兼容模式选项,用户使用此选项可以对 WCF 应用程序进行编程和配置,使其像 ASP.NET We ...
- Windows服务器nginx+tomcat服务负载均衡
一.安装两个tomcat服务自启动 1. 解压两个tomcat,名称为分别1,2 2. 配置环境变量 3. 修改文件server.xml中的三个端口号,使得两个tomcat不冲突 (1)<Ser ...
随机推荐
- bbs项目解读
1.注册功能 具体的效果图如下: 注册功能涉及到的逻辑步骤: 1.搭建前端html页面 2.向后端提交用户输入数据 3.对用户输入的数据格式进行校验 4.页面输入数据格式错误,及时向用户进行提示/正确 ...
- Word 分页符怎么使用
当一页内容输入完之后,还留有很多空白区域没有填写,一直按回车键跳转到下一页显得复杂,并且回车键经过的地方都是段落. 可以手动添加分页符,使当前页跳转到下一页. 也可以使用快捷键Ctrl + Enter ...
- iommu分析之---intel iommu初始化
intel 的iommu 是iommu框架的一个实现案例. 由于intel 的iommu 实现得比arm smmv3复杂得多,里面概念也多,所以针对intel 实现的iommu 案例的初始化部分进行一 ...
- [CF1539F] Strange Array (线段树)
题面 有一个长度为 n \tt n n 的序列 a \tt a a ,对于每一个位置 i ∈ [ 1 , n ] \tt i\in[1,n] i∈[1,n]: 选择一个区间 [ l , r ] \tt ...
- 【HTML】学习路径5-预格式标签和字体标签
<!DOCTYPE html> <html> <head> <title>我是标题</title> <meta charset=&qu ...
- 【java】非常多!学习路径24-总结目前所有知识(上)
感谢sikiedu.com的siki老师.几年前就开始看siki的课程,最近突然想写这个笔记系列,顺便回顾一下这些基础的知识,同时也希望能帮助到一些人,有问题一起交流哈. 全文共十章,大约1.5万字, ...
- 五 工厂方法模式【Factory Method Pattern】 来自CBF4LIFE 的设计模式
女娲补天的故事大家都听说过吧,今天不说这个,说女娲创造人的故事,可不是"造人"的工作,这个词被现代人滥用了.这个故事是说,女娲在补了天后,下到凡间一看,哇塞,风景太优美了,天空是湛 ...
- PHP生成唯一不重复的编号
当我们要将一个庞大的数据进行编号时,而编号有位数限制,比如5位的车牌号.10位的某证件号码.订单流水号.短网址等等,我们可以使用36进制计算出符合位数的不重复的编号. 下载:https://url72 ...
- 一个注解解决ShardingJdbc不支持复杂SQL
背景介绍 公司最近做分库分表业务,接入了 Sharding JDBC,接入完成后,回归测试时发现好几个 SQL 执行报错,关键这几个表都还不是分片表.报错如下: 这下糟了嘛.熟悉 Sharding J ...
- 《网页设计基础——HTML注释与CSS注释》
网页设计基础--HTML注释与CSS注释 一.HTML注释: 格式: <!-- 在此处书写注释 --> 例如: <html> <head> <ti ...