Skip to content

Commit 3c6946e

Browse files
committed
Fix characteristic write on Bleno
1 parent dc32afe commit 3c6946e

File tree

1 file changed

+14
-3
lines changed

1 file changed

+14
-3
lines changed

targets/nrf5x/bluetooth.c

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -377,8 +377,6 @@ static void on_ble_evt(ble_evt_t * p_ble_evt)
377377
jsvObjectSetChild(execInfo.root, BLE_HID_SENT_EVENT, 0); // fire only once
378378
jshHadEvent();
379379
}
380-
if (bleInTask(BLETASK_CHARACTERISTIC_WRITE))
381-
bleCompleteTaskSuccess(BLETASK_CHARACTERISTIC_WRITE, 0);
382380
break;
383381

384382
case BLE_GAP_EVT_ADV_REPORT: {
@@ -536,6 +534,17 @@ static void on_ble_evt(ble_evt_t * p_ble_evt)
536534
jsvUnLock(data);
537535
break;
538536
}
537+
538+
case BLE_GATTC_EVT_WRITE_RSP: {
539+
if (bleInTask(BLETASK_CHARACTERISTIC_WRITE))
540+
bleCompleteTaskSuccess(BLETASK_CHARACTERISTIC_WRITE, 0);
541+
break;
542+
}
543+
544+
case BLE_GATTC_EVT_HVX: {
545+
ble_gattc_evt_hvx_t *p_hvx = &p_ble_evt->evt.gattc_evt.params.hvx;
546+
break;
547+
}
539548
#endif
540549

541550
default:
@@ -1311,7 +1320,9 @@ void jsble_central_getCharacteristics(JsVar *service, ble_uuid_t uuid) {
13111320
void jsble_central_characteristicWrite(JsVar *characteristic, char *dataPtr, size_t dataLen) {
13121321
ble_gattc_write_params_t write_params;
13131322
memset(&write_params, 0, sizeof(write_params));
1314-
write_params.write_op = BLE_GATT_OP_WRITE_CMD;
1323+
write_params.write_op = BLE_GATT_OP_WRITE_REQ;
1324+
// BLE_GATT_OP_WRITE_REQ ===> BLE_GATTC_EVT_WRITE_RSP (write with response)
1325+
// or BLE_GATT_OP_WRITE_CMD ===> BLE_EVT_TX_COMPLETE (simple write)
13151326
write_params.flags = BLE_GATT_EXEC_WRITE_FLAG_PREPARED_WRITE;
13161327
write_params.handle = jsvGetIntegerAndUnLock(jsvObjectGetChild(characteristic, "handle_value", 0));
13171328
write_params.offset = 0;

0 commit comments

Comments
 (0)