@@ -377,8 +377,6 @@ static void on_ble_evt(ble_evt_t * p_ble_evt)
377
377
jsvObjectSetChild (execInfo .root , BLE_HID_SENT_EVENT , 0 ); // fire only once
378
378
jshHadEvent ();
379
379
}
380
- if (bleInTask (BLETASK_CHARACTERISTIC_WRITE ))
381
- bleCompleteTaskSuccess (BLETASK_CHARACTERISTIC_WRITE , 0 );
382
380
break ;
383
381
384
382
case BLE_GAP_EVT_ADV_REPORT : {
@@ -536,6 +534,17 @@ static void on_ble_evt(ble_evt_t * p_ble_evt)
536
534
jsvUnLock (data );
537
535
break ;
538
536
}
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
+ }
539
548
#endif
540
549
541
550
default :
@@ -1311,7 +1320,9 @@ void jsble_central_getCharacteristics(JsVar *service, ble_uuid_t uuid) {
1311
1320
void jsble_central_characteristicWrite (JsVar * characteristic , char * dataPtr , size_t dataLen ) {
1312
1321
ble_gattc_write_params_t write_params ;
1313
1322
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)
1315
1326
write_params .flags = BLE_GATT_EXEC_WRITE_FLAG_PREPARED_WRITE ;
1316
1327
write_params .handle = jsvGetIntegerAndUnLock (jsvObjectGetChild (characteristic , "handle_value" , 0 ));
1317
1328
write_params .offset = 0 ;
0 commit comments