@ovok/native 1.16.1-dev.2163 → 1.16.1-dev.2165

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -28,6 +28,7 @@ const ATT_WRITE_HEADER_BYTES = 3;
28
28
  class BTCommandWriter {
29
29
  pendingWrites = Promise.resolve();
30
30
  mtu = DEFAULT_ATT_MTU;
31
+ writeOnlyWithoutResponse = new Map();
31
32
  constructor(device, onError, isNormalDisconnect, retryAfterPairing = _btPairingRetry.runOnce) {
32
33
  this.device = device;
33
34
  this.onError = onError;
@@ -101,16 +102,43 @@ class BTCommandWriter {
101
102
  * Writes one chunk the way the characteristic accepts writes.
102
103
  *
103
104
  * A with-response write to a characteristic that only supports write-without-response
104
- * fails outright, so the command says which it is rather than the transport guessing.
105
+ * fails outright, and some devices drop the link on it. A command can say which it is;
106
+ * otherwise the characteristic's own properties decide.
105
107
  */
106
108
  writeTo = async (command, value) => {
107
- if (command.withoutResponse) {
109
+ if (command.withoutResponse || (await this.acceptsOnlyWithoutResponse(command))) {
108
110
  await this.device.writeCharacteristicWithoutResponseForService(command.serviceUuid, command.characteristicUuid, value);
109
111
  return;
110
112
  }
111
113
  await this.device.writeCharacteristicWithResponseForService(command.serviceUuid, command.characteristicUuid, value);
112
114
  };
113
115
 
116
+ /** Reads once per characteristic whether it refuses with-response writes. */
117
+ acceptsOnlyWithoutResponse = command => {
118
+ const key = `${command.serviceUuid}|${command.characteristicUuid}`.toLowerCase();
119
+ const known = this.writeOnlyWithoutResponse.get(key);
120
+ if (known) {
121
+ return known;
122
+ }
123
+ const lookup = this.readAcceptsOnlyWithoutResponse(command);
124
+ this.writeOnlyWithoutResponse.set(key, lookup);
125
+ return lookup;
126
+ };
127
+ readAcceptsOnlyWithoutResponse = async ({
128
+ serviceUuid,
129
+ characteristicUuid
130
+ }) => {
131
+ try {
132
+ const characteristics = await this.device.characteristicsForService(serviceUuid);
133
+ const characteristic = characteristics.find(({
134
+ uuid
135
+ }) => uuid.toLowerCase() === characteristicUuid.toLowerCase());
136
+ return Boolean(characteristic?.isWritableWithoutResponse && !characteristic.isWritableWithResponse);
137
+ } catch {
138
+ return false;
139
+ }
140
+ };
141
+
114
142
  /**
115
143
  * Splits a frame into writes the link will carry whole.
116
144
  *
@@ -1 +1 @@
1
- {"version":3,"names":["_sentryLogger","require","_bluetoothError","_hexToBase","_btPairingRetry","MAX_WRITE_ATTEMPTS","DEFAULT_ATT_MTU","ATT_WRITE_HEADER_BYTES","BTCommandWriter","pendingWrites","Promise","resolve","mtu","constructor","device","onError","isNormalDisconnect","retryAfterPairing","runOnce","useNegotiatedMtu","Number","isInteger","reset","send","commands","then","writeInOrder","catch","error","command","writeCommand","delayBeforeWriteMs","setTimeout","chunk","chunksOf","frame","written","writeChunk","writeTo","value","withoutResponse","writeCharacteristicWithoutResponseForService","serviceUuid","characteristicUuid","writeCharacteristicWithResponseForService","size","Math","max","chunks","start","length","push","slice","attempt","isConnected","sentryLogger","hexToBase64","join","message","toBluetoothError","expectedEnd","test","errorCode","code","exports"],"sourceRoot":"../../../../../../src","sources":["modules/bt-management/services/devices/bt-command-writer.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_sentryLogger","require","_bluetoothError","_hexToBase","_btPairingRetry","MAX_WRITE_ATTEMPTS","DEFAULT_ATT_MTU","ATT_WRITE_HEADER_BYTES","BTCommandWriter","pendingWrites","Promise","resolve","mtu","writeOnlyWithoutResponse","Map","constructor","device","onError","isNormalDisconnect","retryAfterPairing","runOnce","useNegotiatedMtu","Number","isInteger","reset","send","commands","then","writeInOrder","catch","error","command","writeCommand","delayBeforeWriteMs","setTimeout","chunk","chunksOf","frame","written","writeChunk","writeTo","value","withoutResponse","acceptsOnlyWithoutResponse","writeCharacteristicWithoutResponseForService","serviceUuid","characteristicUuid","writeCharacteristicWithResponseForService","key","toLowerCase","known","get","lookup","readAcceptsOnlyWithoutResponse","set","characteristics","characteristicsForService","characteristic","find","uuid","Boolean","isWritableWithoutResponse","isWritableWithResponse","size","Math","max","chunks","start","length","push","slice","attempt","isConnected","sentryLogger","hexToBase64","join","message","toBluetoothError","expectedEnd","test","errorCode","code","exports"],"sourceRoot":"../../../../../../src","sources":["modules/bt-management/services/devices/bt-command-writer.ts"],"mappings":"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","ignoreList":[]}
@@ -24,6 +24,7 @@ const ATT_WRITE_HEADER_BYTES = 3;
24
24
  export class BTCommandWriter {
25
25
  pendingWrites = Promise.resolve();
26
26
  mtu = DEFAULT_ATT_MTU;
27
+ writeOnlyWithoutResponse = new Map();
27
28
  constructor(device, onError, isNormalDisconnect, retryAfterPairing = runOnce) {
28
29
  this.device = device;
29
30
  this.onError = onError;
@@ -97,16 +98,43 @@ export class BTCommandWriter {
97
98
  * Writes one chunk the way the characteristic accepts writes.
98
99
  *
99
100
  * A with-response write to a characteristic that only supports write-without-response
100
- * fails outright, so the command says which it is rather than the transport guessing.
101
+ * fails outright, and some devices drop the link on it. A command can say which it is;
102
+ * otherwise the characteristic's own properties decide.
101
103
  */
102
104
  writeTo = async (command, value) => {
103
- if (command.withoutResponse) {
105
+ if (command.withoutResponse || (await this.acceptsOnlyWithoutResponse(command))) {
104
106
  await this.device.writeCharacteristicWithoutResponseForService(command.serviceUuid, command.characteristicUuid, value);
105
107
  return;
106
108
  }
107
109
  await this.device.writeCharacteristicWithResponseForService(command.serviceUuid, command.characteristicUuid, value);
108
110
  };
109
111
 
112
+ /** Reads once per characteristic whether it refuses with-response writes. */
113
+ acceptsOnlyWithoutResponse = command => {
114
+ const key = `${command.serviceUuid}|${command.characteristicUuid}`.toLowerCase();
115
+ const known = this.writeOnlyWithoutResponse.get(key);
116
+ if (known) {
117
+ return known;
118
+ }
119
+ const lookup = this.readAcceptsOnlyWithoutResponse(command);
120
+ this.writeOnlyWithoutResponse.set(key, lookup);
121
+ return lookup;
122
+ };
123
+ readAcceptsOnlyWithoutResponse = async ({
124
+ serviceUuid,
125
+ characteristicUuid
126
+ }) => {
127
+ try {
128
+ const characteristics = await this.device.characteristicsForService(serviceUuid);
129
+ const characteristic = characteristics.find(({
130
+ uuid
131
+ }) => uuid.toLowerCase() === characteristicUuid.toLowerCase());
132
+ return Boolean(characteristic?.isWritableWithoutResponse && !characteristic.isWritableWithResponse);
133
+ } catch {
134
+ return false;
135
+ }
136
+ };
137
+
110
138
  /**
111
139
  * Splits a frame into writes the link will carry whole.
112
140
  *
@@ -1 +1 @@
1
- {"version":3,"names":["sentryLogger","toBluetoothError","hexToBase64","runOnce","MAX_WRITE_ATTEMPTS","DEFAULT_ATT_MTU","ATT_WRITE_HEADER_BYTES","BTCommandWriter","pendingWrites","Promise","resolve","mtu","constructor","device","onError","isNormalDisconnect","retryAfterPairing","useNegotiatedMtu","Number","isInteger","reset","send","commands","then","writeInOrder","catch","error","command","writeCommand","delayBeforeWriteMs","setTimeout","chunk","chunksOf","frame","written","writeChunk","writeTo","value","withoutResponse","writeCharacteristicWithoutResponseForService","serviceUuid","characteristicUuid","writeCharacteristicWithResponseForService","size","Math","max","chunks","start","length","push","slice","attempt","isConnected","join","message","expectedEnd","test","errorCode","code"],"sourceRoot":"../../../../../../src","sources":["modules/bt-management/services/devices/bt-command-writer.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["sentryLogger","toBluetoothError","hexToBase64","runOnce","MAX_WRITE_ATTEMPTS","DEFAULT_ATT_MTU","ATT_WRITE_HEADER_BYTES","BTCommandWriter","pendingWrites","Promise","resolve","mtu","writeOnlyWithoutResponse","Map","constructor","device","onError","isNormalDisconnect","retryAfterPairing","useNegotiatedMtu","Number","isInteger","reset","send","commands","then","writeInOrder","catch","error","command","writeCommand","delayBeforeWriteMs","setTimeout","chunk","chunksOf","frame","written","writeChunk","writeTo","value","withoutResponse","acceptsOnlyWithoutResponse","writeCharacteristicWithoutResponseForService","serviceUuid","characteristicUuid","writeCharacteristicWithResponseForService","key","toLowerCase","known","get","lookup","readAcceptsOnlyWithoutResponse","set","characteristics","characteristicsForService","characteristic","find","uuid","Boolean","isWritableWithoutResponse","isWritableWithResponse","size","Math","max","chunks","start","length","push","slice","attempt","isConnected","join","message","expectedEnd","test","errorCode","code"],"sourceRoot":"../../../../../../src","sources":["modules/bt-management/services/devices/bt-command-writer.ts"],"mappings":"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","ignoreList":[]}
@@ -17,6 +17,7 @@ export declare class BTCommandWriter {
17
17
  private readonly retryAfterPairing;
18
18
  private pendingWrites;
19
19
  private mtu;
20
+ private readonly writeOnlyWithoutResponse;
20
21
  constructor(device: Device, onError?: ((error: BleError | Error) => void) | undefined, isNormalDisconnect?: (() => boolean) | undefined, retryAfterPairing?: PairingRetry);
21
22
  /**
22
23
  * Records what the link actually negotiated.
@@ -55,9 +56,13 @@ export declare class BTCommandWriter {
55
56
  * Writes one chunk the way the characteristic accepts writes.
56
57
  *
57
58
  * A with-response write to a characteristic that only supports write-without-response
58
- * fails outright, so the command says which it is rather than the transport guessing.
59
+ * fails outright, and some devices drop the link on it. A command can say which it is;
60
+ * otherwise the characteristic's own properties decide.
59
61
  */
60
62
  private writeTo;
63
+ /** Reads once per characteristic whether it refuses with-response writes. */
64
+ private acceptsOnlyWithoutResponse;
65
+ private readAcceptsOnlyWithoutResponse;
61
66
  /**
62
67
  * Splits a frame into writes the link will carry whole.
63
68
  *
@@ -1 +1 @@
1
- {"version":3,"file":"bt-command-writer.d.ts","sourceRoot":"","sources":["../../../../../../../../src/modules/bt-management/services/devices/bt-command-writer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAIxD,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAG3D,OAAO,EAAE,YAAY,EAAW,MAAM,oBAAoB,CAAC;AAU3D;;;;;;;;GAQG;AACH,qBAAa,eAAe;IAKxB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;IACzB,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAC;IACpC,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAPpC,OAAO,CAAC,aAAa,CAAoC;IACzD,OAAO,CAAC,GAAG,CAAmB;gBAGX,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,GAAE,CAAC,KAAK,EAAE,QAAQ,GAAG,KAAK,KAAK,IAAI,aAAA,EAC3C,kBAAkB,CAAC,GAAE,MAAM,OAAO,aAAA,EAClC,iBAAiB,GAAE,YAAsB;IAG5D;;;;;;OAMG;IACI,gBAAgB,GAAI,MAAM,MAAM,KAAG,IAAI,CAI5C;IAEF,kEAAkE;IAC3D,KAAK,QAAO,IAAI,CAErB;IAEF;;;;;;;OAOG;IACI,IAAI,GAAI,UAAU,SAAS,aAAa,EAAE,KAAG,OAAO,CAAC,IAAI,CAAC,CAQ/D;IAEF,OAAO,CAAC,YAAY,CAMlB;IAEF;;;;;;;;;;;OAWG;IACH,OAAO,CAAC,YAAY,CAclB;IAEF;;;;;OAKG;IACH,OAAO,CAAC,OAAO,CAmBb;IAEF;;;;;OAKG;IACH,OAAO,CAAC,QAAQ,CASd;IAEF;;;;;;OAMG;IACH,OAAO,CAAC,UAAU,CAkChB;CACH"}
1
+ {"version":3,"file":"bt-command-writer.d.ts","sourceRoot":"","sources":["../../../../../../../../src/modules/bt-management/services/devices/bt-command-writer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAIxD,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAG3D,OAAO,EAAE,YAAY,EAAW,MAAM,oBAAoB,CAAC;AAU3D;;;;;;;;GAQG;AACH,qBAAa,eAAe;IAMxB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;IACzB,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAC;IACpC,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IARpC,OAAO,CAAC,aAAa,CAAoC;IACzD,OAAO,CAAC,GAAG,CAAmB;IAC9B,OAAO,CAAC,QAAQ,CAAC,wBAAwB,CAAuC;gBAG7D,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,GAAE,CAAC,KAAK,EAAE,QAAQ,GAAG,KAAK,KAAK,IAAI,aAAA,EAC3C,kBAAkB,CAAC,GAAE,MAAM,OAAO,aAAA,EAClC,iBAAiB,GAAE,YAAsB;IAG5D;;;;;;OAMG;IACI,gBAAgB,GAAI,MAAM,MAAM,KAAG,IAAI,CAI5C;IAEF,kEAAkE;IAC3D,KAAK,QAAO,IAAI,CAErB;IAEF;;;;;;;OAOG;IACI,IAAI,GAAI,UAAU,SAAS,aAAa,EAAE,KAAG,OAAO,CAAC,IAAI,CAAC,CAQ/D;IAEF,OAAO,CAAC,YAAY,CAMlB;IAEF;;;;;;;;;;;OAWG;IACH,OAAO,CAAC,YAAY,CAclB;IAEF;;;;;;OAMG;IACH,OAAO,CAAC,OAAO,CAmBb;IAEF,6EAA6E;IAC7E,OAAO,CAAC,0BAA0B,CAahC;IAEF,OAAO,CAAC,8BAA8B,CAiBpC;IAEF;;;;;OAKG;IACH,OAAO,CAAC,QAAQ,CASd;IAEF;;;;;;OAMG;IACH,OAAO,CAAC,UAAU,CAkChB;CACH"}
@@ -17,6 +17,7 @@ export declare class BTCommandWriter {
17
17
  private readonly retryAfterPairing;
18
18
  private pendingWrites;
19
19
  private mtu;
20
+ private readonly writeOnlyWithoutResponse;
20
21
  constructor(device: Device, onError?: ((error: BleError | Error) => void) | undefined, isNormalDisconnect?: (() => boolean) | undefined, retryAfterPairing?: PairingRetry);
21
22
  /**
22
23
  * Records what the link actually negotiated.
@@ -55,9 +56,13 @@ export declare class BTCommandWriter {
55
56
  * Writes one chunk the way the characteristic accepts writes.
56
57
  *
57
58
  * A with-response write to a characteristic that only supports write-without-response
58
- * fails outright, so the command says which it is rather than the transport guessing.
59
+ * fails outright, and some devices drop the link on it. A command can say which it is;
60
+ * otherwise the characteristic's own properties decide.
59
61
  */
60
62
  private writeTo;
63
+ /** Reads once per characteristic whether it refuses with-response writes. */
64
+ private acceptsOnlyWithoutResponse;
65
+ private readAcceptsOnlyWithoutResponse;
61
66
  /**
62
67
  * Splits a frame into writes the link will carry whole.
63
68
  *
@@ -1 +1 @@
1
- {"version":3,"file":"bt-command-writer.d.ts","sourceRoot":"","sources":["../../../../../../../../src/modules/bt-management/services/devices/bt-command-writer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAIxD,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAG3D,OAAO,EAAE,YAAY,EAAW,MAAM,oBAAoB,CAAC;AAU3D;;;;;;;;GAQG;AACH,qBAAa,eAAe;IAKxB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;IACzB,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAC;IACpC,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAPpC,OAAO,CAAC,aAAa,CAAoC;IACzD,OAAO,CAAC,GAAG,CAAmB;gBAGX,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,GAAE,CAAC,KAAK,EAAE,QAAQ,GAAG,KAAK,KAAK,IAAI,aAAA,EAC3C,kBAAkB,CAAC,GAAE,MAAM,OAAO,aAAA,EAClC,iBAAiB,GAAE,YAAsB;IAG5D;;;;;;OAMG;IACI,gBAAgB,GAAI,MAAM,MAAM,KAAG,IAAI,CAI5C;IAEF,kEAAkE;IAC3D,KAAK,QAAO,IAAI,CAErB;IAEF;;;;;;;OAOG;IACI,IAAI,GAAI,UAAU,SAAS,aAAa,EAAE,KAAG,OAAO,CAAC,IAAI,CAAC,CAQ/D;IAEF,OAAO,CAAC,YAAY,CAMlB;IAEF;;;;;;;;;;;OAWG;IACH,OAAO,CAAC,YAAY,CAclB;IAEF;;;;;OAKG;IACH,OAAO,CAAC,OAAO,CAmBb;IAEF;;;;;OAKG;IACH,OAAO,CAAC,QAAQ,CASd;IAEF;;;;;;OAMG;IACH,OAAO,CAAC,UAAU,CAkChB;CACH"}
1
+ {"version":3,"file":"bt-command-writer.d.ts","sourceRoot":"","sources":["../../../../../../../../src/modules/bt-management/services/devices/bt-command-writer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAIxD,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAG3D,OAAO,EAAE,YAAY,EAAW,MAAM,oBAAoB,CAAC;AAU3D;;;;;;;;GAQG;AACH,qBAAa,eAAe;IAMxB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;IACzB,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAC;IACpC,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IARpC,OAAO,CAAC,aAAa,CAAoC;IACzD,OAAO,CAAC,GAAG,CAAmB;IAC9B,OAAO,CAAC,QAAQ,CAAC,wBAAwB,CAAuC;gBAG7D,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,GAAE,CAAC,KAAK,EAAE,QAAQ,GAAG,KAAK,KAAK,IAAI,aAAA,EAC3C,kBAAkB,CAAC,GAAE,MAAM,OAAO,aAAA,EAClC,iBAAiB,GAAE,YAAsB;IAG5D;;;;;;OAMG;IACI,gBAAgB,GAAI,MAAM,MAAM,KAAG,IAAI,CAI5C;IAEF,kEAAkE;IAC3D,KAAK,QAAO,IAAI,CAErB;IAEF;;;;;;;OAOG;IACI,IAAI,GAAI,UAAU,SAAS,aAAa,EAAE,KAAG,OAAO,CAAC,IAAI,CAAC,CAQ/D;IAEF,OAAO,CAAC,YAAY,CAMlB;IAEF;;;;;;;;;;;OAWG;IACH,OAAO,CAAC,YAAY,CAclB;IAEF;;;;;;OAMG;IACH,OAAO,CAAC,OAAO,CAmBb;IAEF,6EAA6E;IAC7E,OAAO,CAAC,0BAA0B,CAahC;IAEF,OAAO,CAAC,8BAA8B,CAiBpC;IAEF;;;;;OAKG;IACH,OAAO,CAAC,QAAQ,CASd;IAEF;;;;;;OAMG;IACH,OAAO,CAAC,UAAU,CAkChB;CACH"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ovok/native",
3
- "version": "1.16.1-dev.2163+f26ae35",
3
+ "version": "1.16.1-dev.2165+ef06020",
4
4
  "description": "React native component sdk for OVOK",
5
5
  "source": "./src/index.tsx",
6
6
  "main": "./lib/commonjs/index.js",