smagi 发表于 2018-2-7 02:00:04

GATT Server 搭建

基本步骤:
1. 定义 service 和 characteristic
1.1 确定UUID,实验时避免重复即可,生产的话参考bluetooth.org已定义的profile
1.2 编写GATT db 接口文件 xx_sever_db.dbi,参考已有的服务
1.3 把xx_sever_db.dbi 文件include 到 sink_gatt_db.db 文件中
2. 注册 service
2.1 sink_gatt_init.c initialiseOptionalServerTasks() 添加服务器初始化代码
2.2 修改注册参数,确定消息处理函数
    xx_server->lib_task.handler = xx_server_ext_msg_handler;
    xx_server->app_task = appTask;
    /* Fill in the registration parameters */
    reg_params.start_handle = start_handle;
    reg_params.end_handle   = end_handle;
    reg_params.task = &xx_server->lib_task;

2.3 初始化代码中注册服务器
         GattManagerRegisterServer(&reg_params)
3. 编写消息处理函数

static void xx_server_ext_msg_handler(Task task, MessageId id, Message msg) {
    GIASS_T *sk_service = (GIASS_T*)task;
    GATT_MANAGER_SERVER_ACCESS_IND_T *access_ind;
    switch (id)   {
      case GATT_MANAGER_SERVER_ACCESS_IND:       {
         switch (access_ind->handle)          {

4. 注意事项
   4.1 reg_params.start_handle 和 end_handle 采用 sink_gatt_db.h 中的定义
   4.2 xx_server_ext_msg_handler 中 access_ind->handle 使用 从 xx_sever_db.dbi 产生的 .h 中的定义,这两个命名空间是不同的。这就是 init 和access 函数放在不同.c文件的主要原因。
   4.3 修改 sink_gatt_db.db 或者 .dbi 文件之后需要修改设备的地址/名字。手机会保存设备上的服务信息,如果设备地址不变的话会产生莫名问题。



smagi 发表于 2018-2-7 04:23:16

详细可以参考 http://blog.csdn.net/wzz4420381/article/details/78359481

psy16882001 发表于 2018-2-7 09:52:23

謝謝分享有機會試試

628495173 发表于 2018-2-7 10:29:08

smagi 发表于 2018-2-6 20:23
详细可以参考 http://blog.csdn.net/wzz4420381/article/details/78359481

原文的博主?

smagi 发表于 2018-2-7 10:34:06

不是,写了一点发现有博文可以参考,就添点注意事项

atom1102 发表于 2023-6-2 09:57:42

我在第2.1的时候初始化后板子无法开机,是怎么回事呢?

atom1102 发表于 2023-6-2 10:01:59

我在2.1时因为初始化导致板子无法开机时怎么回事呢?

atom1102 发表于 2023-6-2 10:20:24

在2.1时因为初始化导致板子无法开机时怎么回事呢?我的初始化函数时这样的:C:\Users\15544\Desktop\sink初始化.pngC:\Users\15544\Desktop\GATT初始化.png

深圳市 发表于 2023-11-24 18:27:19

学习
页: [1]
查看完整版本: GATT Server 搭建