Просмотр исходного кода

update: airlink,ble,提前处理req数据的释放

Wendal Chen 9 месяцев назад
Родитель
Сommit
41e4981a0e
1 измененных файлов с 8 добавлено и 0 удалено
  1. 8 0
      components/airlink/src/exec/luat_airlink_cmd_exec_bluetooth.c

+ 8 - 0
components/airlink/src/exec/luat_airlink_cmd_exec_bluetooth.c

@@ -9,6 +9,9 @@
 #define LUAT_LOG_TAG "airlink.bt"
 #include "luat_log.h"
 
+#undef LLOGD
+#define LLOGD(...)
+
 #if defined(LUAT_USE_AIRLINK_EXEC_BLUETOOTH) || defined(LUAT_USE_AIRLINK_EXEC_BLUETOOTH_RESP)
 #include "luat_airlink.h"
 #include "luat_bluetooth.h"
@@ -66,6 +69,7 @@ int luat_airlink_cmd_exec_bt_resp_cb(luat_airlink_cmd_t *cmd, void *userdata) {
         // LLOGD("收到bt event %d %d", event, cmd->len - sizeof(luat_drv_ble_msg_t));
         param->write_req.value = NULL;
         param->adv_req.data = NULL;
+        param->read_req.value = NULL;
 
         // 把能处理的先尝试处理一下
         if (event == LUAT_BLE_EVENT_WRITE && param->write_req.value_len) {
@@ -80,6 +84,10 @@ int luat_airlink_cmd_exec_bt_resp_cb(luat_airlink_cmd_t *cmd, void *userdata) {
             param->adv_req.data = luat_heap_malloc(param->adv_req.data_len);
             memcpy(param->adv_req.data, msg->data + 4 + sizeof(luat_ble_param_t), param->adv_req.data_len);
         }
+        else if (event == LUAT_BLE_EVENT_READ_VALUE && param->read_req.value_len) {
+            param->read_req.value = luat_heap_malloc(param->read_req.value_len);
+            memcpy(param->read_req.value, msg->data + 4 + sizeof(luat_ble_param_t), param->read_req.value_len);
+        }
         g_drv_ble_cb(NULL, event, param);
         return 0;
     }