首页 > 其他分享 >CH573F蓝牙从机(peripheral)例程讲解(服务修改篇)

CH573F蓝牙从机(peripheral)例程讲解(服务修改篇)

时间:2022-11-07 15:22:05浏览次数:61  
标签:connHandle CH573F InitCharCfg 例程 Characteristic peripheral uint8 GATT GATTServAp

修改服务需要对蓝牙比较熟悉的工程师去完成,否则在例程功能满足自己需求时,不建议修改,很容易改错,下面就简单介绍下如何在别的char添加一个nofify属性。

step1:

给Simple Profile Characteristic 1 Properties添加一个notify属性,原先只有读写属性:

// Simple Profile Characteristic 1 Properties
static uint8_t simpleProfileChar1Props = GATT_PROP_READ | GATT_PROP_WRITE | GATT_PROP_NOTIF;

step2:

模仿char4在char1的value 1下添加:

// Characteristic 1 configuration
{
{ATT_BT_UUID_SIZE, clientCharCfgUUID},
GATT_PERMIT_READ | GATT_PERMIT_WRITE,
0,
(uint8_t *)simpleProfileChar1Config},

step3:

全局搜索下simpleProfileChar4Config,共有五处,上面已经改了两处,

bStatus_t SimpleProfile_AddService(uint32_t services)
{
uint8_t status = SUCCESS;

// Initialize Client Characteristic Configuration attributes
GATTServApp_InitCharCfg(INVALID_CONNHANDLE, simpleProfileChar4Config);
GATTServApp_InitCharCfg(INVALID_CONNHANDLE, simpleProfileChar1Config);
// Register with Link DB to receive link status change callback
linkDB_Register(simpleProfile_HandleConnStatusCB);

if(services & SIMPLEPROFILE_SERVICE)
{
// Register GATT attribute list and CBs with GATT Server App
status = GATTServApp_RegisterService(simpleProfileAttrTbl,
GATT_NUM_ATTRS(simpleProfileAttrTbl),
GATT_MAX_ENCRYPT_KEY_SIZE,
&simpleProfileCBs);
}

step4:

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, simpleProfileChar1Config);
}
}
}

step5:

新建一个通知函数:

step6:

前五步设置好,notify的通道就已经打通了,接下来调用发送就可以验证了:

ps:后面会加一些app端的显示

 

标签:connHandle,CH573F,InitCharCfg,例程,Characteristic,peripheral,uint8,GATT,GATTServAp
From: https://www.cnblogs.com/risc5-ble/p/16866045.html

相关文章

  • mega板和openmv通信例程
    mega板和openmv通信例程openmvimporttimefrompybimportUARTuart=UART(3,9600)#注意波特率while(True):uart.write("123"+"\n")time.sleep_ms(......
  • CH58X/CH57X/V208的Broadcaster(广播者)例程讲解
    在对ble进行应用的时候,每个用户的需求可能不尽相同。这里着重介绍从机Broadcaster例程,只广播不连接。使用该例程时可以在手机使用APP上对Broadcaster进行调试。安卓端在......
  • 编译gRPC相关示例程序,undefined reference to `deflateInit2_'等相关错误解决
    编译gRPC相关示例程序时,出现如下链接错误:/home/suph/.local/lib/libgrpc.a(message_compress.cc.o):Infunction`zlib_compress(grpc_slice_buffer*,grpc_slice_buffer*......
  • CH573/579/582 ADC例程介绍
    在adc的例程中共有六种AD测量,1、温度测量,2、单通道测量,3、DMA单通道测量,4、差分通道测量,5、触摸按键测量,6、中断方式单通道测量,接下来我们逐一描述。一、温度测量首先调......
  • Halcon入门之必看例程
    学习halcon例程是入门halcon的一种很好的方法,初学者尤其应该关注例程中处理问题的思路。以下是作者认为初入门时必看的例程名称,大家根据名称自行查找。......
  • 例程清单之 TI-DSP
    专栏一裸机TIF28335型TI-TMS320F例程(0)工程创建TI-TMS320F例程(1)点灯TI-TMS320F例程(2)流水灯TI-TMS320F例程(3)按键扫描输入TI-TMS320F例程(4)内部定时器0驱动......
  • 例程清单之 Altera-FPGA
    XilinxS6型例程【Verilog版|VHDL版】(0)工程创建例程【Verilog版|VHDL版】(1)xx例程【Verilog版|VHDL版】(2)xx例程【Verilog版|VHDL版】(3)xx例程【Verilog版......
  • 1490_TC275_UART_shell例程测试
    前面我已经测试了UART的简单例子,并且还修改了PIN脚通过Arduino来读取了串口信息。这是一个比较简单的监控方式,只需要一个PIN就能够给我提供printf打印功能。而这样的工具对......
  • CH582peripheral讲解01(禁用单个绑定设备)
    这里对CH582蓝牙芯片的一个参数进行讲解:GAPBOND_DISABLE_SINGLEBOND,描述是这样的:#defineGAPBOND_DISABLE_SINGLEBOND       0x41A //!<Disableasingle......
  • CH573蓝牙主机(Central)例程讲解(主机功能流程介绍)
    蓝牙主机,顾名思义,就是一个蓝牙主设备,与从机建立连接进行通信,可以接收从机通知,也可以给从机发送信息,可将Central例程和Peripheral例程结合使用。蓝牙主机例程的工作流程大......