关于蓝牙发送

我在gattc_write_req_ind_handler()写处理后,使用KE_MSG_SEND()发送消息,我该如何知道消息是否发送出去成功?

Parents
  • DA14531芯片,使用的是官方6.0.22的SDK

  • 您好,

    KE_MSG_SEND() 发送消息没有返回值的,内核会自动处理消息的

    目前是遇到什么问题了吗

  • 你好,我现在使用的是DA14531,使用的例程是\SDK_6.0.24.1464\DA145xx_SDK\6.0.24.1464\projects\target_apps\ble_examples\ble_app_profile\Keil_5

    我出现的问题是,我在进行蓝牙发送的时候,设备与DA14531远离后断开,再靠近后重新连接,但是再次连接后,运行了几秒钟没有数据发送,然后DA14531出现死机重启的状况
    我经过调试发现当我把蓝牙发送数据给屏蔽掉,没有再出现这种状况,
    这是我屏蔽的内容
    // 动态分配消息内存
    // struct custs1_val_ntf_ind_req *req_id = KE_MSG_ALLOC_DYN(
    // CUSTS1_VAL_NTF_REQ,
    // prf_get_task_from_id(TASK_ID_CUSTS1),
    // TASK_APP,
    // custs1_val_ntf_ind_req,
    // len );
    // // 填充消息的其他字段
    // req_id->handle = SVC1_IDX_LONG_VALUE_SW_VAL; //SVC1_LONG_VALUE_test_VAL;
    // req_id->length = len;
    // req_id->notification = true;
    // memcpy(req_id->value, send_data1, len); // 复制数组数据到消息体中的动态数组 `value[]`
    // ke_msg_send(req_id); // 发送消息

    然后我经过测试发现当单独把// ke_msg_send(req_id);屏蔽的时候,执行到分配内存几次就死机自动重启了
    1.请问这里的ke_msg_send()由内核自动释放空间,如果是我申请了没有发送出去的话,需要我自己手动释放吗?
    2.是否可能出现我的蓝牙连接上了,并且调用了ke_msg_send()发送,但是没有发送成功,是否会自动释放空间?
    3.如果需要我自己手动释放空间的话,我应该在什么时候释放,是否有判定发送完成和发送失败函数?

Reply
  • 你好,我现在使用的是DA14531,使用的例程是\SDK_6.0.24.1464\DA145xx_SDK\6.0.24.1464\projects\target_apps\ble_examples\ble_app_profile\Keil_5

    我出现的问题是,我在进行蓝牙发送的时候,设备与DA14531远离后断开,再靠近后重新连接,但是再次连接后,运行了几秒钟没有数据发送,然后DA14531出现死机重启的状况
    我经过调试发现当我把蓝牙发送数据给屏蔽掉,没有再出现这种状况,
    这是我屏蔽的内容
    // 动态分配消息内存
    // struct custs1_val_ntf_ind_req *req_id = KE_MSG_ALLOC_DYN(
    // CUSTS1_VAL_NTF_REQ,
    // prf_get_task_from_id(TASK_ID_CUSTS1),
    // TASK_APP,
    // custs1_val_ntf_ind_req,
    // len );
    // // 填充消息的其他字段
    // req_id->handle = SVC1_IDX_LONG_VALUE_SW_VAL; //SVC1_LONG_VALUE_test_VAL;
    // req_id->length = len;
    // req_id->notification = true;
    // memcpy(req_id->value, send_data1, len); // 复制数组数据到消息体中的动态数组 `value[]`
    // ke_msg_send(req_id); // 发送消息

    然后我经过测试发现当单独把// ke_msg_send(req_id);屏蔽的时候,执行到分配内存几次就死机自动重启了
    1.请问这里的ke_msg_send()由内核自动释放空间,如果是我申请了没有发送出去的话,需要我自己手动释放吗?
    2.是否可能出现我的蓝牙连接上了,并且调用了ke_msg_send()发送,但是没有发送成功,是否会自动释放空间?
    3.如果需要我自己手动释放空间的话,我应该在什么时候释放,是否有判定发送完成和发送失败函数?

Children