关于写Notify使能问题

你好. 我这边在看bass_task.c源码时, 发现他gattc_write_cmd_ind_handler函数里要去操作notify的东西. (BAS_IDX_BATT_LVL_NTF_CFG)
这个使能Notify是由手机端传来的, 但是 我这边测试时, 发现在上层已经使能Nofity的时候, 他不会回调gattc_write_cmd_ind_handler函数.
我一开始以为是GATTC_WRITE_CMD_IND这个命令的过, 我换成了其他的WRITE CMD 也是不行. 这个是怎么回事呢?
GATTC_WRITE_CMD 和 GATTC_WRITE_CMD_IND 有啥差别的呢?

另外, sdk好像也无法获取read 回调函数. 这个是因为sdk不支持read的吗?

Parents
  • 这个BAS_IDX_BATT_LVL_NTF_CFG是用于使能notify的配置属性 --- 我单独请教你这个吧.

    1. 在sdk5.0的文件bass_task.c的343行的gattc_write_cmd_ind_handler,
    从代码可以看出, 他必须要对BAS_IDX_BATT_LVL_NTF_CFG进行写, 才能使 bass_env.features[i] |= BASS_FLAG_NTF_CFG_BIT;
    然后在电池定时轮询中, 也是在bass_task.c的276行的bass_batt_level_upd_req_handler中, 他会去" Check if notifications are enabled" , 代码如下:
    // Check if notifications are enabled
    if((bass_env.features[param->bas_instance] & BASS_FLAG_NTF_CFG_BIT)
    == BASS_FLAG_NTF_CFG_BIT)
    {
    // Send notification through GATT
    prf_server_send_event((prf_env_struct *)&bass_env, false,
    bass_env.shdl[param->bas_instance] + BAS_IDX_BATT_LVL_VAL);
    }

    2. 所以他必须要收到 GATTC_WRITE_CMD_IND, 并且是对BAS_IDX_BATT_LVL_NTF_CFG的写.
    我就是在测试的时候, 发现他无法收到GATTC_WRITE_CMD_IND.
    测试方式是: 用TI Sensortag apk在android机上测试, 和用LightBlue app在苹果机上测试, 但是他都没有收到GATTC_WRITE_CMD_IND.

Reply
  • 这个BAS_IDX_BATT_LVL_NTF_CFG是用于使能notify的配置属性 --- 我单独请教你这个吧.

    1. 在sdk5.0的文件bass_task.c的343行的gattc_write_cmd_ind_handler,
    从代码可以看出, 他必须要对BAS_IDX_BATT_LVL_NTF_CFG进行写, 才能使 bass_env.features[i] |= BASS_FLAG_NTF_CFG_BIT;
    然后在电池定时轮询中, 也是在bass_task.c的276行的bass_batt_level_upd_req_handler中, 他会去" Check if notifications are enabled" , 代码如下:
    // Check if notifications are enabled
    if((bass_env.features[param->bas_instance] & BASS_FLAG_NTF_CFG_BIT)
    == BASS_FLAG_NTF_CFG_BIT)
    {
    // Send notification through GATT
    prf_server_send_event((prf_env_struct *)&bass_env, false,
    bass_env.shdl[param->bas_instance] + BAS_IDX_BATT_LVL_VAL);
    }

    2. 所以他必须要收到 GATTC_WRITE_CMD_IND, 并且是对BAS_IDX_BATT_LVL_NTF_CFG的写.
    我就是在测试的时候, 发现他无法收到GATTC_WRITE_CMD_IND.
    测试方式是: 用TI Sensortag apk在android机上测试, 和用LightBlue app在苹果机上测试, 但是他都没有收到GATTC_WRITE_CMD_IND.

Children
No Data