@iotize/device-com-ble.cordova 3.2.1 → 3.3.2

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.
Files changed (49) hide show
  1. package/README.md +174 -177
  2. package/bundles/iotize-device-com-ble.cordova.umd.js +102 -69
  3. package/bundles/iotize-device-com-ble.cordova.umd.js.map +1 -1
  4. package/bundles/iotize-device-com-ble.cordova.umd.min.js +16 -0
  5. package/bundles/iotize-device-com-ble.cordova.umd.min.js.map +1 -0
  6. package/esm2015/lib/ble-com-protocol.js +10 -10
  7. package/esm2015/lib/ble-com-protocol.js.map +1 -1
  8. package/esm2015/lib/cordova-ble-error.js +11 -2
  9. package/esm2015/lib/cordova-ble-error.js.map +1 -1
  10. package/esm2015/lib/cordova-interface.js.map +1 -1
  11. package/esm2015/lib/cordova-service-adapter.js +15 -14
  12. package/esm2015/lib/cordova-service-adapter.js.map +1 -1
  13. package/esm2015/lib/cordova-service-adapter.metadata.json +1 -1
  14. package/esm2015/lib/definitions.js +0 -2
  15. package/esm2015/lib/definitions.js.map +1 -1
  16. package/esm2015/lib/iotize-ble-cordova-plugin.js +59 -51
  17. package/esm2015/lib/iotize-ble-cordova-plugin.js.map +1 -1
  18. package/esm2015/lib/iotize-ble-cordova-plugin.metadata.json +1 -1
  19. package/esm2015/lib/iotize-ble-cordova-plugin.ngsummary.json +1 -1
  20. package/esm2015/lib/logger.js +1 -1
  21. package/esm2015/lib/logger.js.map +1 -1
  22. package/esm2015/lib/scanner.js +14 -12
  23. package/esm2015/lib/scanner.js.map +1 -1
  24. package/esm2015/lib/scanner.metadata.json +1 -1
  25. package/esm2015/lib/utility.js +1 -1
  26. package/esm2015/lib/utility.js.map +1 -1
  27. package/esm2015/public_api.js +4 -4
  28. package/esm2015/public_api.js.map +1 -1
  29. package/fesm2015/iotize-device-com-ble.cordova.js +93 -74
  30. package/fesm2015/iotize-device-com-ble.cordova.js.map +1 -1
  31. package/iotize-device-com-ble.cordova.metadata.json +1 -1
  32. package/lib/ble-com-protocol.d.ts +4 -4
  33. package/lib/cordova-ble-error.d.ts +12 -3
  34. package/lib/cordova-service-adapter.d.ts +1 -1
  35. package/lib/definitions.d.ts +1 -1
  36. package/lib/iotize-ble-cordova-plugin.d.ts +4 -3
  37. package/lib/scanner.d.ts +4 -4
  38. package/package.json +1 -1
  39. package/plugin.xml +66 -63
  40. package/public_api.d.ts +5 -5
  41. package/src/android/.gradle/4.8.1/fileHashes/fileHashes.bin +0 -0
  42. package/src/android/.gradle/4.8.1/fileHashes/fileHashes.lock +0 -0
  43. package/src/android/build.gradle +1 -0
  44. package/src/android/src/ble/BLECom.java +559 -558
  45. package/src/ios/BLECom.swift +732 -732
  46. package/src/windows/IoTizeBLE.pdb +0 -0
  47. package/src/windows/IoTizeBLE.pri +0 -0
  48. package/src/windows/iotize-ble-com.js +159 -179
  49. package/www/plugin.js +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"ble-com-protocol.js","sourceRoot":"","sources":["../../../../../src/lib/ble-com-protocol.ts"],"names":[],"mappings":";;;;;;;;;AAAA,EAAE;AACF,mEAAmE;AACnE,EAAE;AACF,uBAAuB;AACvB,6CAA6C;AAC7C,EAAE;AACF,OAAO,EAKL,eAAe,GAChB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAAE,KAAK,EAAc,MAAM,MAAM,CAAC;AACzC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AAEpD,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AACjC,OAAO,EAAE,yBAAyB,EAAE,MAAM,WAAW,CAAC;AAEtD,MAAM,OAAO,cAAe,SAAQ,gBAAgB;IAUlD,YACU,QAAgB,EACxB,kBAAuC,EACvB,yBAAkD;QAElE,KAAK,EAAE,CAAC;QAJA,aAAQ,GAAR,QAAQ,CAAQ;QAER,8BAAyB,GAAzB,yBAAyB,CAAyB;QAGlE,IAAI,kBAAkB,EAAE;YACtB,IAAI,CAAC,OAAO,GAAG,kBAAkB,CAAC;SACnC;aAAM;YACL,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,GAAG,KAAK,CAAC;SACtC;IACH,CAAC;IApBD;;;;OAIG;IACH,IAAY,eAAe;QACzB,OAAO,IAAI,CAAC,yBAAyB,IAAI,yBAAyB,EAAE,CAAC;IACvE,CAAC;IAeD,QAAQ,CAAC,OAAmC;QAC1C,KAAK,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QAC3B,OAAO,IAAI,CAAC,eAAe;aACxB,6BAA6B,CAAC,IAAI,CAAC,QAAQ,CAAC;aAC5C,IAAI,CACH,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;YACZ,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;QACjC,CAAC,CAAC,EACF,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,eAAe,CAAC,SAAS,CAAC,EACtD,KAAK,EAAE,CACR,CAAC;IACN,CAAC;IAED,WAAW,CAAC,OAAsC;QAChD,KAAK,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;QAC9B,OAAO,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;IACrE,CAAC;IAEK,KAAK,CAAC,IAAgB;;YAC1B,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;QAC7C,CAAC;KAAA;IAEK,IAAI;;YACR,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;QAC7C,CAAC;KAAA;IAED,IAAI,CACF,IAAgB,EAChB,OAAgC;QAEhC,OAAO,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC;IACrE,CAAC;CACF","sourcesContent":["//\r\n// Copyright 2018 IoTize SAS Inc. Licensed under the MIT license.\r\n//\r\n// ble-com-protocol.ts\r\n// device-com-ble.cordova BLE Cordova Plugin\r\n//\r\nimport {\r\n ComProtocolConnectOptions,\r\n ComProtocolDisconnectOptions,\r\n ComProtocolOptions,\r\n ComProtocolSendOptions,\r\n ConnectionState,\r\n} from '@iotize/tap/protocol/api';\r\nimport { QueueComProtocol } from '@iotize/tap/protocol/core';\r\nimport { defer, Observable } from 'rxjs';\r\nimport { filter, first, tap } from 'rxjs/operators';\r\nimport { IoTizeBleCordovaPlugin } from './iotize-ble-cordova-plugin';\r\nimport { debug } from './logger';\r\nimport { getIoTizeBleCordovaPlugin } from './utility';\r\n\r\nexport class BLEComProtocol extends QueueComProtocol {\r\n /**\r\n * Lazy reference to iotizeBLE.\r\n * We don't want to reference iotizeBLE in constructor as it may be referenced\r\n * before cordova plugin is loaded\r\n */\r\n private get pluginInterface(): IoTizeBleCordovaPlugin {\r\n return this.cordovaInterfaceOverwrite || getIoTizeBleCordovaPlugin();\r\n }\r\n\r\n constructor(\r\n private deviceId: string,\r\n comProtocolOptions?: ComProtocolOptions,\r\n public readonly cordovaInterfaceOverwrite?: IoTizeBleCordovaPlugin\r\n ) {\r\n super();\r\n if (comProtocolOptions) {\r\n this.options = comProtocolOptions;\r\n } else {\r\n this.options.connect.timeout = 60000;\r\n }\r\n }\r\n\r\n _connect(options?: ComProtocolConnectOptions): Observable<any> {\r\n debug('_connect', options);\r\n return this.pluginInterface\r\n .connectAndDiscoverTapServices(this.deviceId)\r\n .pipe(\r\n tap((state) => {\r\n this.setConnectionState(state);\r\n }),\r\n filter((state) => state === ConnectionState.CONNECTED),\r\n first()\r\n );\r\n }\r\n\r\n _disconnect(options?: ComProtocolDisconnectOptions): Observable<any> {\r\n debug('_disconnect', options);\r\n return defer(() => this.pluginInterface.disConnect(this.deviceId));\r\n }\r\n\r\n async write(data: Uint8Array): Promise<any> {\r\n throw new Error('Method not implemented.');\r\n }\r\n\r\n async read(): Promise<Uint8Array> {\r\n throw new Error('Method not implemented.');\r\n }\r\n\r\n send(\r\n data: Uint8Array,\r\n options?: ComProtocolSendOptions\r\n ): Observable<Uint8Array> {\r\n return defer(() => this.pluginInterface.send(this.deviceId, data));\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"ble-com-protocol.js","sourceRoot":"","sources":["../../../../../src/lib/ble-com-protocol.ts"],"names":[],"mappings":";;;;;;;;;AAAA,EAAE;AACF,mEAAmE;AACnE,EAAE;AACF,uBAAuB;AACvB,6CAA6C;AAC7C,EAAE;AACF,OAAO,EAKL,eAAe,GAChB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAAE,KAAK,EAAc,MAAM,MAAM,CAAC;AACzC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AAEpD,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AACjC,OAAO,EAAE,yBAAyB,EAAE,MAAM,WAAW,CAAC;AAEtD,MAAM,OAAO,cAAe,SAAQ,gBAAgB;IAUlD,YACU,QAAgB,EACxB,kBAAuC,EACvB,yBAAkD;QAElE,KAAK,EAAE,CAAC;QAJA,aAAQ,GAAR,QAAQ,CAAQ;QAER,8BAAyB,GAAzB,yBAAyB,CAAyB;QAGlE,IAAI,kBAAkB,EAAE;YACtB,IAAI,CAAC,OAAO,GAAG,kBAAkB,CAAC;SACnC;aAAM;YACL,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,GAAG,KAAK,CAAC;SACtC;IACH,CAAC;IApBD;;;;OAIG;IACH,IAAY,eAAe;QACzB,OAAO,IAAI,CAAC,yBAAyB,IAAI,yBAAyB,EAAE,CAAC;IACvE,CAAC;IAeD,QAAQ,CAAC,OAAmC;QAC1C,KAAK,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QAC3B,OAAO,IAAI,CAAC,eAAe;aACxB,6BAA6B,CAAC,IAAI,CAAC,QAAQ,CAAC;aAC5C,IAAI,CACH,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;YACZ,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;QACjC,CAAC,CAAC,EACF,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,eAAe,CAAC,SAAS,CAAC,EACtD,KAAK,EAAE,CACR,CAAC;IACN,CAAC;IAED,WAAW,CAAC,OAAsC;QAChD,KAAK,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;QAC9B,OAAO,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;IACrE,CAAC;IAEK,KAAK,CAAC,IAAgB;;YAC1B,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;QAC7C,CAAC;KAAA;IAEK,IAAI;;YACR,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;QAC7C,CAAC;KAAA;IAED,IAAI,CACF,IAAgB,EAChB,OAAgC;QAEhC,OAAO,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC;IACrE,CAAC;CACF","sourcesContent":["//\n// Copyright 2018 IoTize SAS Inc. Licensed under the MIT license.\n//\n// ble-com-protocol.ts\n// device-com-ble.cordova BLE Cordova Plugin\n//\nimport {\n ComProtocolConnectOptions,\n ComProtocolDisconnectOptions,\n ComProtocolOptions,\n ComProtocolSendOptions,\n ConnectionState,\n} from \"@iotize/tap/protocol/api\";\nimport { QueueComProtocol } from \"@iotize/tap/protocol/core\";\nimport { defer, Observable } from \"rxjs\";\nimport { filter, first, tap } from \"rxjs/operators\";\nimport { IoTizeBleCordovaPlugin } from \"./iotize-ble-cordova-plugin\";\nimport { debug } from \"./logger\";\nimport { getIoTizeBleCordovaPlugin } from \"./utility\";\n\nexport class BLEComProtocol extends QueueComProtocol {\n /**\n * Lazy reference to iotizeBLE.\n * We don't want to reference iotizeBLE in constructor as it may be referenced\n * before cordova plugin is loaded\n */\n private get pluginInterface(): IoTizeBleCordovaPlugin {\n return this.cordovaInterfaceOverwrite || getIoTizeBleCordovaPlugin();\n }\n\n constructor(\n private deviceId: string,\n comProtocolOptions?: ComProtocolOptions,\n public readonly cordovaInterfaceOverwrite?: IoTizeBleCordovaPlugin\n ) {\n super();\n if (comProtocolOptions) {\n this.options = comProtocolOptions;\n } else {\n this.options.connect.timeout = 60000;\n }\n }\n\n _connect(options?: ComProtocolConnectOptions): Observable<any> {\n debug(\"_connect\", options);\n return this.pluginInterface\n .connectAndDiscoverTapServices(this.deviceId)\n .pipe(\n tap((state) => {\n this.setConnectionState(state);\n }),\n filter((state) => state === ConnectionState.CONNECTED),\n first()\n );\n }\n\n _disconnect(options?: ComProtocolDisconnectOptions): Observable<any> {\n debug(\"_disconnect\", options);\n return defer(() => this.pluginInterface.disConnect(this.deviceId));\n }\n\n async write(data: Uint8Array): Promise<any> {\n throw new Error(\"Method not implemented.\");\n }\n\n async read(): Promise<Uint8Array> {\n throw new Error(\"Method not implemented.\");\n }\n\n send(\n data: Uint8Array,\n options?: ComProtocolSendOptions\n ): Observable<Uint8Array> {\n return defer(() => this.pluginInterface.send(this.deviceId, data));\n }\n}\n"]}
@@ -1,4 +1,4 @@
1
- import { CodeError } from "@iotize/common/error";
1
+ import { CodeError } from '@iotize/common/error';
2
2
  export class CordovaBLEError extends CodeError {
3
3
  static invalidErrorResult(errObject) {
4
4
  return new CordovaBLEError(`Internal error: ble cordova plugin returned an unexpected error object`, CordovaBLEError.Code.InternalError);
@@ -10,7 +10,7 @@ export class CordovaBLEError extends CodeError {
10
10
  return new CordovaBLEError(`Internal error: native call returned an invalid data type. ${cause.message}`, CordovaBLEError.Code.InternalError);
11
11
  }
12
12
  static isValidErrorCode(code) {
13
- return (code in CordovaBLEError.Code);
13
+ return code in CordovaBLEError.Code;
14
14
  }
15
15
  static iotizeBLEMissing() {
16
16
  return new CordovaBLEError(`iotizeBLE global variable does not exist. Are you sure app is running inside a Cordova application ?`, CordovaBLEError.Code.InternalError);
@@ -22,6 +22,15 @@ export class CordovaBLEError extends CodeError {
22
22
  (function (Code) {
23
23
  Code["InternalError"] = "CordovaBLEErrorInternalError";
24
24
  Code["IllegalArgument"] = "CordovaBLEErrorIllegalArgument";
25
+ Code["BLENotAvailable"] = "CordovaBLEErrorBLENotAvailable";
26
+ Code["InvalidMacAddress"] = "InvalidMacAddressInvalidMacAddress";
27
+ Code["ConnectionError"] = "CordovaBLEErrorConnectionError";
28
+ Code["RequestError"] = "CordovaBLEErrorRequestError";
29
+ Code["LocationServiceDisabled"] = "CordovaBLEErrorLocationServiceDisabled";
30
+ Code["DisconnectError"] = "CordovaBLEErrorDisconnectError";
31
+ Code["IllegalAction"] = "CordovaBLEErrorIllegalAction";
32
+ Code["NotConnectedError"] = "CordovaBLEErrorNotConnectedError";
33
+ Code["StatusCodeError"] = "CordovaBLEErrorStatusCodeError";
25
34
  })(Code = CordovaBLEError.Code || (CordovaBLEError.Code = {}));
26
35
  })(CordovaBLEError || (CordovaBLEError = {}));
27
36
  //# sourceMappingURL=cordova-ble-error.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"cordova-ble-error.js","sourceRoot":"","sources":["../../../../../src/lib/cordova-ble-error.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEjD,MAAM,OAAO,eAAgB,SAAQ,SAAS;IAC1C,MAAM,CAAC,kBAAkB,CAAC,SAAuE;QAC7F,OAAO,IAAI,eAAe,CACtB,wEAAwE,EACxE,eAAe,CAAC,IAAI,CAAC,aAAa,CACrC,CAAA;IACL,CAAC;IAED,MAAM,CAAC,gBAAgB,CAAC,SAAuE;QAC3F,OAAO,IAAI,eAAe,CACtB,qEAAqE,SAAS,CAAC,IAAI,iBAAiB,SAAS,CAAC,OAAO,EAAE,EACvH,eAAe,CAAC,IAAI,CAAC,aAAa,CACrC,CAAA;IACL,CAAC;IAED,MAAM,CAAC,uBAAuB,CAAC,MAAW,EAAE,KAAY;QACpD,OAAO,IAAI,eAAe,CACtB,8DAA8D,KAAK,CAAC,OAAO,EAAE,EAC7E,eAAe,CAAC,IAAI,CAAC,aAAa,CACrC,CAAA;IACL,CAAC;IAED,MAAM,CAAC,gBAAgB,CAAC,IAAY;QAChC,OAAO,CAAC,IAAI,IAAI,eAAe,CAAC,IAAI,CAAC,CAAC;IAC1C,CAAC;IAGD,MAAM,CAAC,gBAAgB;QACnB,OAAO,IAAI,eAAe,CACtB,sGAAsG,EACtG,eAAe,CAAC,IAAI,CAAC,aAAa,CACrC,CAAC;IACN,CAAC;CAEJ;AAED,0BAA0B;AAC1B,WAAiB,eAAe;IAC5B,IAAY,IAGX;IAHD,WAAY,IAAI;QACZ,sDAA8C,CAAA;QAC9C,0DAAkD,CAAA;IACtD,CAAC,EAHW,IAAI,GAAJ,oBAAI,KAAJ,oBAAI,QAGf;AACL,CAAC,EALgB,eAAe,KAAf,eAAe,QAK/B","sourcesContent":["import { CodeError } from \"@iotize/common/error\";\r\n\r\nexport class CordovaBLEError extends CodeError {\r\n static invalidErrorResult(errObject: { code?: string | undefined; message?: string | undefined; }): CordovaBLEError {\r\n return new CordovaBLEError(\r\n `Internal error: ble cordova plugin returned an unexpected error object`,\r\n CordovaBLEError.Code.InternalError\r\n )\r\n }\r\n\r\n static invalidErrorCode(errObject: { code?: string | undefined; message?: string | undefined; }): CordovaBLEError {\r\n return new CordovaBLEError(\r\n `Internal error: ble cordova plugin returned an invalid error code ${errObject.code} with message ${errObject.message}`,\r\n CordovaBLEError.Code.InternalError\r\n )\r\n }\r\n\r\n static invalidNativeCallResult(result: any, cause: Error): CordovaBLEError {\r\n return new CordovaBLEError(\r\n `Internal error: native call returned an invalid data type. ${cause.message}`,\r\n CordovaBLEError.Code.InternalError\r\n )\r\n }\r\n\r\n static isValidErrorCode(code: string): code is (keyof typeof CordovaBLEError.Code) {\r\n return (code in CordovaBLEError.Code);\r\n }\r\n\r\n\r\n static iotizeBLEMissing() {\r\n return new CordovaBLEError(\r\n `iotizeBLE global variable does not exist. Are you sure app is running inside a Cordova application ?`,\r\n CordovaBLEError.Code.InternalError\r\n );\r\n }\r\n\r\n}\r\n\r\n/* istanbul ignore next */\r\nexport namespace CordovaBLEError {\r\n export enum Code {\r\n InternalError = 'CordovaBLEErrorInternalError',\r\n IllegalArgument = \"CordovaBLEErrorIllegalArgument\"\r\n }\r\n}"]}
1
+ {"version":3,"file":"cordova-ble-error.js","sourceRoot":"","sources":["../../../../../src/lib/cordova-ble-error.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEjD,MAAM,OAAO,eAAgB,SAAQ,SAAS;IAC5C,MAAM,CAAC,kBAAkB,CAAC,SAGzB;QACC,OAAO,IAAI,eAAe,CACxB,wEAAwE,EACxE,eAAe,CAAC,IAAI,CAAC,aAAa,CACnC,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,gBAAgB,CAAC,SAGvB;QACC,OAAO,IAAI,eAAe,CACxB,qEAAqE,SAAS,CAAC,IAAI,iBAAiB,SAAS,CAAC,OAAO,EAAE,EACvH,eAAe,CAAC,IAAI,CAAC,aAAa,CACnC,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,uBAAuB,CAAC,MAAW,EAAE,KAAY;QACtD,OAAO,IAAI,eAAe,CACxB,8DAA8D,KAAK,CAAC,OAAO,EAAE,EAC7E,eAAe,CAAC,IAAI,CAAC,aAAa,CACnC,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,gBAAgB,CACrB,IAAY;QAEZ,OAAO,IAAI,IAAI,eAAe,CAAC,IAAI,CAAC;IACtC,CAAC;IAED,MAAM,CAAC,gBAAgB;QACrB,OAAO,IAAI,eAAe,CACxB,sGAAsG,EACtG,eAAe,CAAC,IAAI,CAAC,aAAa,CACnC,CAAC;IACJ,CAAC;CACF;AAED,0BAA0B;AAC1B,WAAiB,eAAe;IAC9B,IAAY,IAYX;IAZD,WAAY,IAAI;QACd,sDAA8C,CAAA;QAC9C,0DAAkD,CAAA;QAClD,0DAAkD,CAAA;QAClD,gEAAwD,CAAA;QACxD,0DAAkD,CAAA;QAClD,oDAA4C,CAAA;QAC5C,0EAAkE,CAAA;QAClE,0DAAkD,CAAA;QAClD,sDAA8C,CAAA;QAC9C,8DAAsD,CAAA;QACtD,0DAAkD,CAAA;IACpD,CAAC,EAZW,IAAI,GAAJ,oBAAI,KAAJ,oBAAI,QAYf;AACH,CAAC,EAdgB,eAAe,KAAf,eAAe,QAc/B","sourcesContent":["import { CodeError } from '@iotize/common/error';\n\nexport class CordovaBLEError extends CodeError {\n static invalidErrorResult(errObject: {\n code?: string | undefined;\n message?: string | undefined;\n }): CordovaBLEError {\n return new CordovaBLEError(\n `Internal error: ble cordova plugin returned an unexpected error object`,\n CordovaBLEError.Code.InternalError\n );\n }\n\n static invalidErrorCode(errObject: {\n code?: string | undefined;\n message?: string | undefined;\n }): CordovaBLEError {\n return new CordovaBLEError(\n `Internal error: ble cordova plugin returned an invalid error code ${errObject.code} with message ${errObject.message}`,\n CordovaBLEError.Code.InternalError\n );\n }\n\n static invalidNativeCallResult(result: any, cause: Error): CordovaBLEError {\n return new CordovaBLEError(\n `Internal error: native call returned an invalid data type. ${cause.message}`,\n CordovaBLEError.Code.InternalError\n );\n }\n\n static isValidErrorCode(\n code: string\n ): code is keyof typeof CordovaBLEError.Code {\n return code in CordovaBLEError.Code;\n }\n\n static iotizeBLEMissing() {\n return new CordovaBLEError(\n `iotizeBLE global variable does not exist. Are you sure app is running inside a Cordova application ?`,\n CordovaBLEError.Code.InternalError\n );\n }\n}\n\n/* istanbul ignore next */\nexport namespace CordovaBLEError {\n export enum Code {\n InternalError = 'CordovaBLEErrorInternalError',\n IllegalArgument = 'CordovaBLEErrorIllegalArgument',\n BLENotAvailable = 'CordovaBLEErrorBLENotAvailable',\n InvalidMacAddress = 'InvalidMacAddressInvalidMacAddress',\n ConnectionError = 'CordovaBLEErrorConnectionError',\n RequestError = 'CordovaBLEErrorRequestError',\n LocationServiceDisabled = 'CordovaBLEErrorLocationServiceDisabled',\n DisconnectError = 'CordovaBLEErrorDisconnectError',\n IllegalAction = 'CordovaBLEErrorIllegalAction',\n NotConnectedError = 'CordovaBLEErrorNotConnectedError',\n StatusCodeError = 'CordovaBLEErrorStatusCodeError',\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"cordova-interface.js","sourceRoot":"","sources":["../../../../../src/lib/cordova-interface.ts"],"names":[],"mappings":"","sourcesContent":["export interface CordovaInterface {\r\n\r\n exec<T>(success: SuccessCallback<T>, error: ErrorCallback, className: string, action: string, ...args: any[]): void;\r\n\r\n}\r\n\r\nexport type ErrorCallback = (err: Error) => void;\r\n\r\nexport type SuccessCallback<T> = (data: T) => void;"]}
1
+ {"version":3,"file":"cordova-interface.js","sourceRoot":"","sources":["../../../../../src/lib/cordova-interface.ts"],"names":[],"mappings":"","sourcesContent":["export interface CordovaInterface {\n exec<T>(\n success: SuccessCallback<T>,\n error: ErrorCallback,\n className: string,\n action: string,\n ...args: any[]\n ): void;\n}\n\nexport type ErrorCallback = (err: Error) => void;\n\nexport type SuccessCallback<T> = (data: T) => void;\n"]}
@@ -8,9 +8,9 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
8
8
  });
9
9
  };
10
10
  import { ConnectionState } from "@iotize/tap/protocol/api";
11
- import { BleComError } from "@iotize/tap/protocol/ble/common";
11
+ import { BleComError, } from "@iotize/tap/protocol/ble/common";
12
12
  import { BehaviorSubject } from "rxjs";
13
- import { distinctUntilChanged, filter, first, map, shareReplay } from "rxjs/operators";
13
+ import { distinctUntilChanged, filter, first, map, shareReplay, } from "rxjs/operators";
14
14
  import { getIoTizeBleCordovaPlugin } from "./utility";
15
15
  export class CordovaPeripheralAdapter {
16
16
  constructor(deviceId, cordovaPlugin = getIoTizeBleCordovaPlugin()) {
@@ -22,7 +22,7 @@ export class CordovaPeripheralAdapter {
22
22
  return this._stateChange.asObservable().pipe(distinctUntilChanged());
23
23
  }
24
24
  get name() {
25
- // TODO device name ?
25
+ // TODO device name ?
26
26
  return this.id;
27
27
  }
28
28
  get id() {
@@ -37,7 +37,7 @@ export class CordovaPeripheralAdapter {
37
37
  const result = {};
38
38
  if (serviceUUIDs) {
39
39
  for (const uuid of serviceUUIDs) {
40
- const servicDefinition = this.serviceListCache.find(def => def.uuid === uuid);
40
+ const servicDefinition = this.serviceListCache.find((def) => def.uuid === uuid);
41
41
  if (servicDefinition) {
42
42
  result[uuid] = new CordovaServiceAdapter(servicDefinition, this);
43
43
  }
@@ -55,13 +55,14 @@ export class CordovaPeripheralAdapter {
55
55
  var _a;
56
56
  return __awaiter(this, void 0, void 0, function* () {
57
57
  (_a = this.connectionStateSubscription) === null || _a === void 0 ? void 0 : _a.unsubscribe();
58
- const connectObservable = this.cordovaPlugin.connect(this.deviceId).pipe(shareReplay());
59
- this.connectionStateSubscription = connectObservable
60
- .subscribe(state => {
58
+ const connectObservable = this.cordovaPlugin
59
+ .connect(this.deviceId)
60
+ .pipe(shareReplay());
61
+ this.connectionStateSubscription = connectObservable.subscribe((state) => {
61
62
  this._stateChange.next(state);
62
63
  });
63
64
  yield connectObservable
64
- .pipe(filter(state => state === ConnectionState.CONNECTED), first())
65
+ .pipe(filter((state) => state === ConnectionState.CONNECTED), first())
65
66
  .toPromise();
66
67
  });
67
68
  }
@@ -86,7 +87,7 @@ export class CordovaPeripheralAdapter {
86
87
  if (!this.serviceListCache) {
87
88
  yield this.discoverServices([uuid]);
88
89
  }
89
- const serviceDefinition = this.serviceListCache.find(s => s.uuid === uuid);
90
+ const serviceDefinition = this.serviceListCache.find((s) => s.uuid === uuid);
90
91
  if (!serviceDefinition) {
91
92
  throw BleComError.serviceNotFound(uuid);
92
93
  }
@@ -105,7 +106,7 @@ export class CordovaServiceAdapter {
105
106
  getCharacteristic(charcUUID) {
106
107
  var _a;
107
108
  return __awaiter(this, void 0, void 0, function* () {
108
- const characteristicDescription = (_a = this.config.characteristics) === null || _a === void 0 ? void 0 : _a.find(c => c.uuid === charcUUID);
109
+ const characteristicDescription = (_a = this.config.characteristics) === null || _a === void 0 ? void 0 : _a.find((c) => c.uuid === charcUUID);
109
110
  if (!characteristicDescription) {
110
111
  throw BleComError.charcacteristicNotFound(charcUUID);
111
112
  }
@@ -117,7 +118,7 @@ export class CordovaServiceAdapter {
117
118
  if (!this.config.characteristics) {
118
119
  return [];
119
120
  }
120
- return this.config.characteristics.map(c => new CordovaCharacteristicAdapter(this, c));
121
+ return this.config.characteristics.map((c) => new CordovaCharacteristicAdapter(this, c));
121
122
  });
122
123
  }
123
124
  }
@@ -133,9 +134,9 @@ export class CordovaCharacteristicAdapter {
133
134
  return this.config.properties;
134
135
  }
135
136
  get data() {
136
- return this.setupDataStreamIfRequired().pipe(map(data => ({
137
+ return this.setupDataStreamIfRequired().pipe(map((data) => ({
137
138
  data,
138
- isNotification: true
139
+ isNotification: true,
139
140
  })));
140
141
  }
141
142
  get deviceId() {
@@ -159,7 +160,7 @@ export class CordovaCharacteristicAdapter {
159
160
  if (!this.config.descriptors) {
160
161
  return [];
161
162
  }
162
- return this.config.descriptors.map(descriptor => new CordovaDescriptorAdapter(descriptor, this));
163
+ return this.config.descriptors.map((descriptor) => new CordovaDescriptorAdapter(descriptor, this));
163
164
  });
164
165
  }
165
166
  write(data, writeWithoutResponse) {
@@ -1 +1 @@
1
- {"version":3,"file":"cordova-service-adapter.js","sourceRoot":"","sources":["../../../../../src/lib/cordova-service-adapter.ts"],"names":[],"mappings":"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","sourcesContent":["import { ConnectionState } from \"@iotize/tap/protocol/api\";\r\nimport { CharacteristicAdapterInterface, PeripheralAdapterInterface, ServiceAdapterInterface, DescriptorAdapterInterface, BleComError, CharacteristicProperties } from \"@iotize/tap/protocol/ble/common\";\r\nimport { BehaviorSubject, Observable, Subscription } from \"rxjs\";\r\nimport { distinctUntilChanged, filter, first, map, shareReplay } from \"rxjs/operators\";\r\nimport { CharacteristicDescription, DescriptorDescription, ServiceDescription, ServiceList } from \"./definitions\";\r\nimport { IoTizeBleCordovaPlugin } from './iotize-ble-cordova-plugin';\r\nimport { getIoTizeBleCordovaPlugin } from \"./utility\";\r\n\r\nexport class CordovaPeripheralAdapter implements PeripheralAdapterInterface<CordovaServiceAdapter> {\r\n\r\n private _stateChange = new BehaviorSubject<ConnectionState>(ConnectionState.DISCONNECTED);\r\n private connectionStateSubscription?: Subscription;\r\n private serviceListCache?: ServiceList;\r\n\r\n get stateChange() {\r\n return this._stateChange.asObservable().pipe(distinctUntilChanged());\r\n }\r\n\r\n get name() {\r\n // TODO device name ? \r\n return this.id;\r\n }\r\n\r\n get id() {\r\n return this.deviceId;\r\n }\r\n\r\n constructor(\r\n public readonly deviceId: string,\r\n public readonly cordovaPlugin: IoTizeBleCordovaPlugin = getIoTizeBleCordovaPlugin()) {\r\n\r\n }\r\n\r\n get state(): string {\r\n return ConnectionState[this._stateChange.value];\r\n }\r\n\r\n async discoverServices<Key extends string = string>(serviceUUIDs?: Key[]): Promise<Partial<Record<Key, CordovaServiceAdapter>>> {\r\n this.serviceListCache = await this.cordovaPlugin.discoverServices(this.deviceId);\r\n const result: Partial<Record<Key, CordovaServiceAdapter>> = {};\r\n if (serviceUUIDs) {\r\n for (const uuid of serviceUUIDs) {\r\n const servicDefinition = this.serviceListCache.find(def => def.uuid === uuid);\r\n if (servicDefinition) {\r\n result[uuid] = new CordovaServiceAdapter(servicDefinition, this);\r\n }\r\n }\r\n }\r\n else {\r\n for (const serviceDefinition of this.serviceListCache) {\r\n result[serviceDefinition.uuid as Key] = new CordovaServiceAdapter(serviceDefinition, this);\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n async connect(): Promise<void> {\r\n this.connectionStateSubscription?.unsubscribe();\r\n const connectObservable = this.cordovaPlugin.connect(this.deviceId).pipe(shareReplay());\r\n this.connectionStateSubscription = connectObservable\r\n .subscribe(state => {\r\n this._stateChange.next(state);\r\n });\r\n await connectObservable\r\n .pipe(\r\n filter(state => state === ConnectionState.CONNECTED),\r\n first()\r\n )\r\n .toPromise();\r\n }\r\n\r\n async disconnect(): Promise<void> {\r\n await this.cordovaPlugin.disConnect(this.deviceId);\r\n this._stateChange.next(ConnectionState.DISCONNECTED);\r\n this.connectionStateSubscription?.unsubscribe();\r\n }\r\n\r\n async close(): Promise<void> {\r\n await this.cordovaPlugin.close(this.deviceId);\r\n this._stateChange.next(ConnectionState.DISCONNECTED);\r\n this.connectionStateSubscription?.unsubscribe();\r\n }\r\n\r\n async getService(uuid: string): Promise<CordovaServiceAdapter> {\r\n if (!this.serviceListCache) {\r\n await this.discoverServices([uuid]);\r\n }\r\n const serviceDefinition = this.serviceListCache!.find(s => s.uuid === uuid);\r\n if (!serviceDefinition) {\r\n throw BleComError.serviceNotFound(uuid);\r\n }\r\n return new CordovaServiceAdapter(serviceDefinition, this);\r\n }\r\n\r\n}\r\n\r\n\r\nexport class CordovaServiceAdapter implements ServiceAdapterInterface {\r\n\r\n get uuid() {\r\n return this.config.uuid;\r\n }\r\n\r\n constructor(private readonly config: ServiceDescription, public readonly peripheral: CordovaPeripheralAdapter) {\r\n\r\n }\r\n\r\n async getCharacteristic(charcUUID: string): Promise<CordovaCharacteristicAdapter> {\r\n const characteristicDescription = this.config.characteristics?.find(c => c.uuid === charcUUID);\r\n if (!characteristicDescription) {\r\n throw BleComError.charcacteristicNotFound(charcUUID);\r\n }\r\n return new CordovaCharacteristicAdapter(this, characteristicDescription);\r\n }\r\n\r\n async getCharacteristics(): Promise<CordovaCharacteristicAdapter[]> {\r\n if (!this.config.characteristics) {\r\n return [];\r\n }\r\n return this.config.characteristics.map(c => new CordovaCharacteristicAdapter(this, c));\r\n }\r\n\r\n}\r\n\r\nexport class CordovaCharacteristicAdapter implements CharacteristicAdapterInterface {\r\n private _dataStream?: Observable<Uint8Array>;\r\n\r\n get uuid() {\r\n return this.config.uuid;\r\n }\r\n\r\n constructor(public readonly service: CordovaServiceAdapter, public readonly config: CharacteristicDescription) {\r\n }\r\n \r\n get properties(): CharacteristicProperties {\r\n return this.config.properties;\r\n }\r\n\r\n get data(): Observable<{ data: Uint8Array; isNotification: boolean; }> {\r\n return this.setupDataStreamIfRequired().pipe(\r\n map(data => ({\r\n data,\r\n isNotification: true\r\n }))\r\n )\r\n }\r\n\r\n protected get deviceId() {\r\n return this.service.peripheral.deviceId;\r\n }\r\n\r\n protected get pluginInterface() {\r\n return this.service.peripheral.cordovaPlugin;\r\n }\r\n\r\n async read(): Promise<Uint8Array> {\r\n return this.pluginInterface.characteristicReadValue(\r\n this.deviceId,\r\n this.service.uuid,\r\n this.uuid\r\n );\r\n }\r\n\r\n async getDescriptor(): Promise<CordovaDescriptorAdapter> {\r\n throw new Error(`Not implemented yet`);\r\n }\r\n\r\n async getDescriptors(): Promise<DescriptorAdapterInterface[]> {\r\n if (!this.config.descriptors) {\r\n return [];\r\n }\r\n return this.config.descriptors.map(descriptor => new CordovaDescriptorAdapter(descriptor, this));\r\n }\r\n\r\n async write(data: Uint8Array, writeWithoutResponse: boolean): Promise<Uint8Array> {\r\n if (writeWithoutResponse) {\r\n await this.pluginInterface.characteristicWriteWithoutResponse(\r\n this.deviceId,\r\n this.service.uuid,\r\n this.uuid,\r\n data\r\n );\r\n }\r\n else {\r\n await this.pluginInterface.characteristicWrite(\r\n this.deviceId,\r\n this.service.uuid,\r\n this.uuid,\r\n data\r\n )\r\n }\r\n return data;\r\n }\r\n\r\n async enableNotifications(enabled?: boolean): Promise<void> {\r\n if (enabled) {\r\n this.setupDataStreamIfRequired();\r\n await this.pluginInterface.characteristicStartNotification(\r\n this.deviceId,\r\n this.service.uuid,\r\n this.uuid\r\n );\r\n }\r\n else {\r\n await this.pluginInterface.characteristicStopNotification(\r\n this.deviceId,\r\n this.service.uuid,\r\n this.uuid\r\n )\r\n }\r\n }\r\n\r\n setupDataStreamIfRequired() {\r\n if (!this._dataStream) {\r\n this._dataStream = this.pluginInterface.characteristicChanged(\r\n this.deviceId,\r\n this.service.uuid,\r\n this.uuid\r\n );\r\n }\r\n return this._dataStream;\r\n }\r\n\r\n}\r\n\r\nexport class CordovaDescriptorAdapter implements DescriptorAdapterInterface {\r\n\r\n get uuid() {\r\n return this.config.uuid;\r\n }\r\n\r\n constructor(public readonly config: DescriptorDescription, public readonly characteristic: CordovaCharacteristicAdapter) { }\r\n\r\n async readValue(): Promise<Uint8Array> {\r\n throw new Error(`Reading descriptor value is not implemented yet`);\r\n }\r\n\r\n async writeValue(data: Uint8Array): Promise<void> {\r\n throw new Error(`Writing descriptor value is not implemented yet`);\r\n }\r\n\r\n}"]}
1
+ {"version":3,"file":"cordova-service-adapter.js","sourceRoot":"","sources":["../../../../../src/lib/cordova-service-adapter.ts"],"names":[],"mappings":"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","sourcesContent":["import { ConnectionState } from \"@iotize/tap/protocol/api\";\nimport {\n CharacteristicAdapterInterface,\n PeripheralAdapterInterface,\n ServiceAdapterInterface,\n DescriptorAdapterInterface,\n BleComError,\n CharacteristicProperties,\n} from \"@iotize/tap/protocol/ble/common\";\nimport { BehaviorSubject, Observable, Subscription } from \"rxjs\";\nimport {\n distinctUntilChanged,\n filter,\n first,\n map,\n shareReplay,\n} from \"rxjs/operators\";\nimport {\n CharacteristicDescription,\n DescriptorDescription,\n ServiceDescription,\n ServiceList,\n} from \"./definitions\";\nimport { IoTizeBleCordovaPlugin } from \"./iotize-ble-cordova-plugin\";\nimport { getIoTizeBleCordovaPlugin } from \"./utility\";\n\nexport class CordovaPeripheralAdapter\n implements PeripheralAdapterInterface<CordovaServiceAdapter>\n{\n private _stateChange = new BehaviorSubject<ConnectionState>(\n ConnectionState.DISCONNECTED\n );\n private connectionStateSubscription?: Subscription;\n private serviceListCache?: ServiceList;\n\n get stateChange() {\n return this._stateChange.asObservable().pipe(distinctUntilChanged());\n }\n\n get name() {\n // TODO device name ?\n return this.id;\n }\n\n get id() {\n return this.deviceId;\n }\n\n constructor(\n public readonly deviceId: string,\n public readonly cordovaPlugin: IoTizeBleCordovaPlugin = getIoTizeBleCordovaPlugin()\n ) {}\n\n get state(): string {\n return ConnectionState[this._stateChange.value];\n }\n\n async discoverServices<Key extends string = string>(\n serviceUUIDs?: Key[]\n ): Promise<Partial<Record<Key, CordovaServiceAdapter>>> {\n this.serviceListCache = await this.cordovaPlugin.discoverServices(\n this.deviceId\n );\n const result: Partial<Record<Key, CordovaServiceAdapter>> = {};\n if (serviceUUIDs) {\n for (const uuid of serviceUUIDs) {\n const servicDefinition = this.serviceListCache.find(\n (def) => def.uuid === uuid\n );\n if (servicDefinition) {\n result[uuid] = new CordovaServiceAdapter(servicDefinition, this);\n }\n }\n } else {\n for (const serviceDefinition of this.serviceListCache) {\n result[serviceDefinition.uuid as Key] = new CordovaServiceAdapter(\n serviceDefinition,\n this\n );\n }\n }\n return result;\n }\n\n async connect(): Promise<void> {\n this.connectionStateSubscription?.unsubscribe();\n const connectObservable = this.cordovaPlugin\n .connect(this.deviceId)\n .pipe(shareReplay());\n this.connectionStateSubscription = connectObservable.subscribe((state) => {\n this._stateChange.next(state);\n });\n await connectObservable\n .pipe(\n filter((state) => state === ConnectionState.CONNECTED),\n first()\n )\n .toPromise();\n }\n\n async disconnect(): Promise<void> {\n await this.cordovaPlugin.disConnect(this.deviceId);\n this._stateChange.next(ConnectionState.DISCONNECTED);\n this.connectionStateSubscription?.unsubscribe();\n }\n\n async close(): Promise<void> {\n await this.cordovaPlugin.close(this.deviceId);\n this._stateChange.next(ConnectionState.DISCONNECTED);\n this.connectionStateSubscription?.unsubscribe();\n }\n\n async getService(uuid: string): Promise<CordovaServiceAdapter> {\n if (!this.serviceListCache) {\n await this.discoverServices([uuid]);\n }\n const serviceDefinition = this.serviceListCache!.find(\n (s) => s.uuid === uuid\n );\n if (!serviceDefinition) {\n throw BleComError.serviceNotFound(uuid);\n }\n return new CordovaServiceAdapter(serviceDefinition, this);\n }\n}\n\nexport class CordovaServiceAdapter implements ServiceAdapterInterface {\n get uuid() {\n return this.config.uuid;\n }\n\n constructor(\n private readonly config: ServiceDescription,\n public readonly peripheral: CordovaPeripheralAdapter\n ) {}\n\n async getCharacteristic(\n charcUUID: string\n ): Promise<CordovaCharacteristicAdapter> {\n const characteristicDescription = this.config.characteristics?.find(\n (c) => c.uuid === charcUUID\n );\n if (!characteristicDescription) {\n throw BleComError.charcacteristicNotFound(charcUUID);\n }\n return new CordovaCharacteristicAdapter(this, characteristicDescription);\n }\n\n async getCharacteristics(): Promise<CordovaCharacteristicAdapter[]> {\n if (!this.config.characteristics) {\n return [];\n }\n return this.config.characteristics.map(\n (c) => new CordovaCharacteristicAdapter(this, c)\n );\n }\n}\n\nexport class CordovaCharacteristicAdapter\n implements CharacteristicAdapterInterface\n{\n private _dataStream?: Observable<Uint8Array>;\n\n get uuid() {\n return this.config.uuid;\n }\n\n constructor(\n public readonly service: CordovaServiceAdapter,\n public readonly config: CharacteristicDescription\n ) {}\n\n get properties(): CharacteristicProperties {\n return this.config.properties;\n }\n\n get data(): Observable<{ data: Uint8Array; isNotification: boolean }> {\n return this.setupDataStreamIfRequired().pipe(\n map((data) => ({\n data,\n isNotification: true,\n }))\n );\n }\n\n protected get deviceId() {\n return this.service.peripheral.deviceId;\n }\n\n protected get pluginInterface() {\n return this.service.peripheral.cordovaPlugin;\n }\n\n async read(): Promise<Uint8Array> {\n return this.pluginInterface.characteristicReadValue(\n this.deviceId,\n this.service.uuid,\n this.uuid\n );\n }\n\n async getDescriptor(): Promise<CordovaDescriptorAdapter> {\n throw new Error(`Not implemented yet`);\n }\n\n async getDescriptors(): Promise<DescriptorAdapterInterface[]> {\n if (!this.config.descriptors) {\n return [];\n }\n return this.config.descriptors.map(\n (descriptor) => new CordovaDescriptorAdapter(descriptor, this)\n );\n }\n\n async write(\n data: Uint8Array,\n writeWithoutResponse: boolean\n ): Promise<Uint8Array> {\n if (writeWithoutResponse) {\n await this.pluginInterface.characteristicWriteWithoutResponse(\n this.deviceId,\n this.service.uuid,\n this.uuid,\n data\n );\n } else {\n await this.pluginInterface.characteristicWrite(\n this.deviceId,\n this.service.uuid,\n this.uuid,\n data\n );\n }\n return data;\n }\n\n async enableNotifications(enabled?: boolean): Promise<void> {\n if (enabled) {\n this.setupDataStreamIfRequired();\n await this.pluginInterface.characteristicStartNotification(\n this.deviceId,\n this.service.uuid,\n this.uuid\n );\n } else {\n await this.pluginInterface.characteristicStopNotification(\n this.deviceId,\n this.service.uuid,\n this.uuid\n );\n }\n }\n\n setupDataStreamIfRequired() {\n if (!this._dataStream) {\n this._dataStream = this.pluginInterface.characteristicChanged(\n this.deviceId,\n this.service.uuid,\n this.uuid\n );\n }\n return this._dataStream;\n }\n}\n\nexport class CordovaDescriptorAdapter implements DescriptorAdapterInterface {\n get uuid() {\n return this.config.uuid;\n }\n\n constructor(\n public readonly config: DescriptorDescription,\n public readonly characteristic: CordovaCharacteristicAdapter\n ) {}\n\n async readValue(): Promise<Uint8Array> {\n throw new Error(`Reading descriptor value is not implemented yet`);\n }\n\n async writeValue(data: Uint8Array): Promise<void> {\n throw new Error(`Writing descriptor value is not implemented yet`);\n }\n}\n"]}
@@ -1 +1 @@
1
- [{"__symbolic":"module","version":4,"metadata":{"CordovaPeripheralAdapter":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"string"},{"__symbolic":"reference","module":"./iotize-ble-cordova-plugin","name":"IoTizeBleCordovaPlugin","line":29,"character":39}]}],"discoverServices":[{"__symbolic":"method"}],"connect":[{"__symbolic":"method"}],"disconnect":[{"__symbolic":"method"}],"close":[{"__symbolic":"method"}],"getService":[{"__symbolic":"method"}]}},"CordovaServiceAdapter":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"./definitions","name":"ServiceDescription","line":103,"character":41},{"__symbolic":"reference","name":"CordovaPeripheralAdapter"}]}],"getCharacteristic":[{"__symbolic":"method"}],"getCharacteristics":[{"__symbolic":"method"}]}},"CordovaCharacteristicAdapter":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"CordovaServiceAdapter"},{"__symbolic":"reference","module":"./definitions","name":"CharacteristicDescription","line":131,"character":88}]}],"read":[{"__symbolic":"method"}],"getDescriptor":[{"__symbolic":"method"}],"getDescriptors":[{"__symbolic":"method"}],"write":[{"__symbolic":"method"}],"enableNotifications":[{"__symbolic":"method"}],"setupDataStreamIfRequired":[{"__symbolic":"method"}]}},"CordovaDescriptorAdapter":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"./definitions","name":"DescriptorDescription","line":231,"character":40},{"__symbolic":"reference","name":"CordovaCharacteristicAdapter"}]}],"readValue":[{"__symbolic":"method"}],"writeValue":[{"__symbolic":"method"}]}}}}]
1
+ [{"__symbolic":"module","version":4,"metadata":{"CordovaPeripheralAdapter":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"string"},{"__symbolic":"reference","module":"./iotize-ble-cordova-plugin","name":"IoTizeBleCordovaPlugin","line":50,"character":35}]}],"discoverServices":[{"__symbolic":"method"}],"connect":[{"__symbolic":"method"}],"disconnect":[{"__symbolic":"method"}],"close":[{"__symbolic":"method"}],"getService":[{"__symbolic":"method"}]}},"CordovaServiceAdapter":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"./definitions","name":"ServiceDescription","line":132,"character":29},{"__symbolic":"reference","name":"CordovaPeripheralAdapter"}]}],"getCharacteristic":[{"__symbolic":"method"}],"getCharacteristics":[{"__symbolic":"method"}]}},"CordovaCharacteristicAdapter":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"CordovaServiceAdapter"},{"__symbolic":"reference","module":"./definitions","name":"CharacteristicDescription","line":169,"character":28}]}],"read":[{"__symbolic":"method"}],"getDescriptor":[{"__symbolic":"method"}],"getDescriptors":[{"__symbolic":"method"}],"write":[{"__symbolic":"method"}],"enableNotifications":[{"__symbolic":"method"}],"setupDataStreamIfRequired":[{"__symbolic":"method"}]}},"CordovaDescriptorAdapter":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"./definitions","name":"DescriptorDescription","line":271,"character":28},{"__symbolic":"reference","name":"CordovaCharacteristicAdapter"}]}],"readValue":[{"__symbolic":"method"}],"writeValue":[{"__symbolic":"method"}]}}}}]
@@ -1,4 +1,2 @@
1
- ;
2
- ;
3
1
  export {};
4
2
  //# sourceMappingURL=definitions.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"definitions.js","sourceRoot":"","sources":["../../../../../src/lib/definitions.ts"],"names":[],"mappings":"AAuCC,CAAC;AASD,CAAC","sourcesContent":["import { CharacteristicProperties } from '@iotize/tap/protocol/ble/common';\r\n\r\nexport interface CordovaBLEScanResult {\r\n name: string;\r\n address: string;\r\n rssi?: number;\r\n}\r\n\r\n/**\r\n * @deprecated\r\n * use CordovaBLEScanResult instead\r\n */\r\nexport type DiscoveredDeviceType = CordovaBLEScanResult;\r\n\r\n\r\nexport interface RequestDeviceOptions {\r\n filters: BluetoothLEScanFilter[];\r\n // optionalServices?: BluetoothServiceUUID[] | undefined;\r\n // optionalManufacturerData?: number[] | undefined;\r\n}\r\n\r\ninterface BluetoothLEScanFilter {\r\n // readonly name?: string | undefined;\r\n // readonly namePrefix?: string | undefined;\r\n readonly services?: BluetoothServiceUUID[] | undefined;\r\n // readonly manufacturerData?: BluetoothManufacturerDataFilter[] | undefined;\r\n // readonly serviceData?: BluetoothServiceDataFilter[] | undefined;\r\n}\r\n\r\ntype BluetoothServiceUUID = string;\r\n\r\ntype BluetoothCharacteristicUUID = string;\r\n\r\ntype BluetoothDescriptorUUID = string;\r\n\r\nexport interface ServiceDescription { \r\n uuid: BluetoothServiceUUID; \r\n characteristics?: CharacteristicList; \r\n [key: string]: any; \r\n};\r\n\r\nexport type ServiceList = ServiceDescription[];\r\n\r\nexport interface CharacteristicDescription { \r\n uuid: BluetoothCharacteristicUUID; \r\n descriptors?: DescriptorList; \r\n properties: CharacteristicProperties;\r\n [key: string]: any; \r\n};\r\n\r\nexport type CharacteristicList = CharacteristicDescription[];\r\n\r\nexport interface DescriptorDescription { \r\n uuid: BluetoothDescriptorUUID; \r\n [key: string]: any; \r\n}\r\n\r\nexport type DescriptorList = DescriptorDescription[];"]}
1
+ {"version":3,"file":"definitions.js","sourceRoot":"","sources":["../../../../../src/lib/definitions.ts"],"names":[],"mappings":"","sourcesContent":["import { CharacteristicProperties } from \"@iotize/tap/protocol/ble/common\";\n\nexport interface CordovaBLEScanResult {\n name: string;\n address: string;\n rssi?: number;\n}\n\n/**\n * @deprecated\n * use CordovaBLEScanResult instead\n */\nexport type DiscoveredDeviceType = CordovaBLEScanResult;\n\nexport interface RequestDeviceOptions {\n filters: BluetoothLEScanFilter[];\n // optionalServices?: BluetoothServiceUUID[] | undefined;\n // optionalManufacturerData?: number[] | undefined;\n}\n\ninterface BluetoothLEScanFilter {\n // readonly name?: string | undefined;\n // readonly namePrefix?: string | undefined;\n readonly services?: BluetoothServiceUUID[] | undefined;\n // readonly manufacturerData?: BluetoothManufacturerDataFilter[] | undefined;\n // readonly serviceData?: BluetoothServiceDataFilter[] | undefined;\n}\n\ntype BluetoothServiceUUID = string;\n\ntype BluetoothCharacteristicUUID = string;\n\ntype BluetoothDescriptorUUID = string;\n\nexport interface ServiceDescription {\n uuid: BluetoothServiceUUID;\n characteristics?: CharacteristicList;\n [key: string]: any;\n}\n\nexport type ServiceList = ServiceDescription[];\n\nexport interface CharacteristicDescription {\n uuid: BluetoothCharacteristicUUID;\n descriptors?: DescriptorList;\n properties: CharacteristicProperties;\n [key: string]: any;\n}\n\nexport type CharacteristicList = CharacteristicDescription[];\n\nexport interface DescriptorDescription {\n uuid: BluetoothDescriptorUUID;\n [key: string]: any;\n}\n\nexport type DescriptorList = DescriptorDescription[];\n"]}
@@ -7,12 +7,13 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
7
7
  step((generator = generator.apply(thisArg, _arguments || [])).next());
8
8
  });
9
9
  };
10
- import { bufferToHexString, hexStringToBuffer as hexStringToBufferCore } from "@iotize/common/byte-converter";
10
+ import { bufferToHexString, hexStringToBuffer as hexStringToBufferCore, } from "@iotize/common/byte-converter";
11
11
  import { safeEnumValue } from "@iotize/common/utility";
12
12
  import { ConnectionState } from "@iotize/tap/protocol/api";
13
- import { Subject } from "rxjs";
13
+ import { Subject, defer } from "rxjs";
14
+ import { switchMap } from "rxjs/operators";
14
15
  import { map } from "rxjs/operators";
15
- import { CordovaBLEError } from './cordova-ble-error';
16
+ import { CordovaBLEError } from "./cordova-ble-error";
16
17
  function hexStringToBuffer(str) {
17
18
  try {
18
19
  return hexStringToBufferCore(str);
@@ -23,113 +24,120 @@ function hexStringToBuffer(str) {
23
24
  }
24
25
  export class IoTizeBleCordovaPlugin {
25
26
  checkAvailable() {
26
- return this.execSingleResult('checkAvailable', []);
27
+ return this.execSingleResult("checkAvailable", []);
27
28
  }
28
29
  requestEnableBle() {
29
- return this.execSingleResult('enable', []);
30
+ return this.execSingleResult("enable", []);
30
31
  }
31
32
  startScan(requestDeviceOptions) {
32
- return this.execMultipleResult('startScan', [
33
- JSON.stringify(requestDeviceOptions)
33
+ return this.execMultipleResult("startScan", [
34
+ JSON.stringify(requestDeviceOptions),
34
35
  ]);
35
36
  }
36
37
  stopScan() {
37
- return this.execSingleResult('stopScan', []);
38
+ return this.execSingleResult("stopScan", []);
39
+ }
40
+ connect(deviceId, enableBleIfNot = true) {
41
+ return this.askBleEnable(enableBleIfNot).pipe(switchMap(() => {
42
+ return this.execMultipleResult("connect", [deviceId]).pipe(map((state) => {
43
+ if (!(state in ConnectionState)) {
44
+ console.warn(`Plugin native code returned an invalid connection state: "${state}".`);
45
+ }
46
+ return safeEnumValue(ConnectionState, state);
47
+ }));
48
+ }));
38
49
  }
39
- connect(deviceId) {
40
- return this.execMultipleResult('connect', [deviceId])
41
- .pipe(map(state => {
42
- if (!(state in ConnectionState)) {
43
- console.warn(`Plugin native code returned an invalid connection state: "${state}".`);
50
+ askBleEnable(askEnable) {
51
+ return defer(() => __awaiter(this, void 0, void 0, function* () {
52
+ if (askEnable) {
53
+ if (!(yield this.checkAvailable())) {
54
+ yield this.requestEnableBle();
55
+ }
44
56
  }
45
- return safeEnumValue(ConnectionState, state);
46
57
  }));
47
58
  }
48
59
  requestMTU(deviceId, mtu) {
49
- return this.execSingleResult('requestMTU', [deviceId, mtu]);
50
- }
51
- connectAndDiscoverTapServices(deviceId) {
52
- return this.execMultipleResult('connectAndDiscoverTapServices', [deviceId])
53
- .pipe(map(state => {
54
- if (!(state in ConnectionState)) {
55
- console.warn(`Plugin native code returned an invalid connection state: "${state}".`);
56
- }
57
- return safeEnumValue(ConnectionState, state);
60
+ return this.execSingleResult("requestMTU", [deviceId, mtu]);
61
+ }
62
+ connectAndDiscoverTapServices(deviceId, enableBleIfNot = true) {
63
+ return this.askBleEnable(enableBleIfNot).pipe(switchMap(() => {
64
+ return this.execMultipleResult("connectAndDiscoverTapServices", [deviceId]).pipe(map((state) => {
65
+ if (!(state in ConnectionState)) {
66
+ console.warn(`Plugin native code returned an invalid connection state: "${state}".`);
67
+ }
68
+ return safeEnumValue(ConnectionState, state);
69
+ }));
58
70
  }));
59
71
  }
60
72
  disConnect(deviceId) {
61
- return this.execSingleResult('disConnect', [deviceId]);
73
+ return this.execSingleResult("disConnect", [deviceId]);
62
74
  }
63
75
  close(deviceId) {
64
- return this.execSingleResult('close', [deviceId]);
76
+ return this.execSingleResult("close", [deviceId]);
65
77
  }
66
78
  isConnected(deviceId) {
67
- return this.execSingleResult('isConnected', [deviceId]);
79
+ return this.execSingleResult("isConnected", [deviceId]);
68
80
  }
69
81
  send(deviceId, data) {
70
82
  return __awaiter(this, void 0, void 0, function* () {
71
- const hexString = yield this.execSingleResult('sendRequest', [deviceId, bufferToHexString(data)]);
83
+ const hexString = yield this.execSingleResult("sendRequest", [
84
+ deviceId,
85
+ bufferToHexString(data),
86
+ ]);
72
87
  return hexStringToBuffer(hexString);
73
88
  });
74
89
  }
75
90
  getLastError() {
76
- return this.execSingleResult('getLastError', []);
91
+ return this.execSingleResult("getLastError", []);
77
92
  }
78
93
  characteristicStartNotification(deviceId, serviceId, characId) {
79
- return this.execSingleResult('characteristicStartNotification', [
94
+ return this.execSingleResult("characteristicStartNotification", [
80
95
  deviceId,
81
96
  serviceId,
82
- characId
97
+ characId,
83
98
  ]);
84
99
  }
85
100
  characteristicChanged(deviceId, serviceId, characId) {
86
- return this.execMultipleResult('characteristicChanged', [
101
+ return this.execMultipleResult("characteristicChanged", [
87
102
  deviceId,
88
103
  serviceId,
89
- characId
90
- ])
91
- .pipe(map(hexString => {
104
+ characId,
105
+ ]).pipe(map((hexString) => {
92
106
  return hexStringToBuffer(hexString);
93
107
  }));
94
108
  }
95
109
  characteristicStopNotification(deviceId, serviceId, characId) {
96
- return this.execSingleResult('characteristicStopNotification', [
110
+ return this.execSingleResult("characteristicStopNotification", [
97
111
  deviceId,
98
112
  serviceId,
99
- characId
113
+ characId,
100
114
  ]);
101
115
  }
102
116
  characteristicReadValue(deviceId, serviceId, characId) {
103
117
  return __awaiter(this, void 0, void 0, function* () {
104
- const hexString = yield this.execSingleResult('characteristicRead', [
105
- deviceId,
106
- serviceId,
107
- characId
108
- ]);
118
+ const hexString = yield this.execSingleResult("characteristicRead", [deviceId, serviceId, characId]);
109
119
  return hexStringToBuffer(hexString);
110
120
  });
111
121
  }
112
122
  characteristicWrite(deviceId, serviceId, characId, data) {
113
- return this.execSingleResult('characteristicWrite', [
123
+ return this.execSingleResult("characteristicWrite", [
114
124
  deviceId,
115
125
  serviceId,
116
126
  characId,
117
- bufferToHexString(data)
127
+ bufferToHexString(data),
118
128
  ]);
119
129
  }
120
130
  characteristicWriteWithoutResponse(deviceId, serviceId, characId, data) {
121
- return this.execSingleResult('characteristicWriteWithoutResponse', [
131
+ return this.execSingleResult("characteristicWriteWithoutResponse", [
122
132
  deviceId,
123
133
  serviceId,
124
134
  characId,
125
- bufferToHexString(data)
135
+ bufferToHexString(data),
126
136
  ]);
127
137
  }
128
138
  discoverServices(deviceId) {
129
139
  return __awaiter(this, void 0, void 0, function* () {
130
- const services = yield this.execSingleResult('discoverServices', [
131
- deviceId
132
- ]);
140
+ const services = yield this.execSingleResult("discoverServices", [deviceId]);
133
141
  return services;
134
142
  });
135
143
  }
@@ -137,7 +145,7 @@ export class IoTizeBleCordovaPlugin {
137
145
  return new Promise((resolve, reject) => {
138
146
  cordova.exec(resolve, (errObject) => {
139
147
  reject(objectErrorToError(errObject));
140
- }, 'BLECom', methodName, args);
148
+ }, "BLECom", methodName, args);
141
149
  });
142
150
  }
143
151
  execMultipleResult(methodName, args) {
@@ -146,12 +154,12 @@ export class IoTizeBleCordovaPlugin {
146
154
  subject.next(data);
147
155
  }, (err) => {
148
156
  subject.error(objectErrorToError(err));
149
- }, 'BLECom', methodName, args);
157
+ }, "BLECom", methodName, args);
150
158
  return subject.asObservable();
151
159
  }
152
160
  }
153
161
  function objectErrorToError(errObject) {
154
- if (typeof errObject !== 'object' || !errObject.code || !errObject.message) {
162
+ if (typeof errObject !== "object" || !errObject.code || !errObject.message) {
155
163
  return CordovaBLEError.invalidErrorResult(errObject);
156
164
  }
157
165
  if (!CordovaBLEError.isValidErrorCode(errObject.code)) {
@@ -1 +1 @@
1
- {"version":3,"file":"iotize-ble-cordova-plugin.js","sourceRoot":"","sources":["../../../../../src/lib/iotize-ble-cordova-plugin.ts"],"names":[],"mappings":"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","sourcesContent":["import { bufferToHexString, hexStringToBuffer as hexStringToBufferCore} from \"@iotize/common/byte-converter\";\r\nimport { safeEnumValue } from \"@iotize/common/utility\";\r\nimport { ConnectionState } from \"@iotize/tap/protocol/api\";\r\nimport { Observable, Subject } from \"rxjs\";\r\nimport { map } from \"rxjs/operators\";\r\nimport { CordovaInterface } from \"./cordova-interface\";\r\nimport { CordovaBLEScanResult, RequestDeviceOptions, ServiceList } from \"./definitions\";\r\nimport { CordovaBLEError } from './cordova-ble-error';\r\n\r\n\r\nfunction hexStringToBuffer(str: string): Uint8Array {\r\n try {\r\n return hexStringToBufferCore(str);\r\n }\r\n catch (err) {\r\n throw CordovaBLEError.invalidNativeCallResult(str, err as Error);\r\n }\r\n}\r\n\r\ndeclare var cordova: CordovaInterface;\r\n\r\nexport class IoTizeBleCordovaPlugin {\r\n\r\n checkAvailable(): Promise<boolean> {\r\n return this.execSingleResult<boolean>('checkAvailable', []);\r\n }\r\n\r\n requestEnableBle(): Promise<'OK'> {\r\n return this.execSingleResult<'OK'>('enable', []);\r\n }\r\n\r\n startScan(requestDeviceOptions: RequestDeviceOptions | undefined): Observable<CordovaBLEScanResult | \"Ok\"> {\r\n return this.execMultipleResult<CordovaBLEScanResult | \"Ok\">('startScan', [\r\n JSON.stringify(requestDeviceOptions)\r\n ]);\r\n }\r\n\r\n stopScan() {\r\n return this.execSingleResult<'OK'>('stopScan', []);\r\n }\r\n\r\n connect(deviceId: string): Observable<ConnectionState> {\r\n return this.execMultipleResult<string>('connect', [deviceId])\r\n .pipe(\r\n map(state => {\r\n if (!(state in ConnectionState)) {\r\n console.warn(`Plugin native code returned an invalid connection state: \"${state}\".`);\r\n }\r\n return safeEnumValue(ConnectionState, state);\r\n })\r\n );\r\n }\r\n\r\n requestMTU(deviceId: string, mtu: number) {\r\n return this.execSingleResult<'OK'>('requestMTU', [deviceId, mtu]);\r\n }\r\n \r\n connectAndDiscoverTapServices(deviceId: string): Observable<ConnectionState> {\r\n return this.execMultipleResult<string>('connectAndDiscoverTapServices', [deviceId])\r\n .pipe(\r\n map(state => {\r\n if (!(state in ConnectionState)) {\r\n console.warn(`Plugin native code returned an invalid connection state: \"${state}\".`);\r\n }\r\n return safeEnumValue(ConnectionState, state);\r\n })\r\n );\r\n }\r\n\r\n disConnect(deviceId: string) {\r\n return this.execSingleResult<'OK'>('disConnect', [deviceId]);\r\n }\r\n\r\n close(deviceId: string) {\r\n return this.execSingleResult<'OK'>('close', [deviceId]);\r\n }\r\n\r\n isConnected(deviceId: string) {\r\n return this.execSingleResult<boolean>('isConnected', [deviceId]);\r\n }\r\n\r\n async send(deviceId: string, data: Uint8Array) {\r\n const hexString = await this.execSingleResult<string>('sendRequest', [deviceId, bufferToHexString(data)]);\r\n return hexStringToBuffer(hexString);\r\n }\r\n\r\n getLastError() {\r\n return this.execSingleResult<string>('getLastError', []);\r\n }\r\n\r\n characteristicStartNotification(deviceId: string, serviceId: string, characId: string) {\r\n return this.execSingleResult<'OK'>('characteristicStartNotification', [\r\n deviceId,\r\n serviceId,\r\n characId\r\n ]);\r\n }\r\n\r\n characteristicChanged(deviceId: string, serviceId: string, characId: string): Observable<Uint8Array> {\r\n return this.execMultipleResult<string>('characteristicChanged', [\r\n deviceId,\r\n serviceId,\r\n characId\r\n ])\r\n .pipe(\r\n map(hexString => {\r\n return hexStringToBuffer(hexString)\r\n })\r\n );\r\n }\r\n\r\n characteristicStopNotification(deviceId: string, serviceId: string, characId: string) {\r\n return this.execSingleResult<'OK'>('characteristicStopNotification', [\r\n deviceId,\r\n serviceId,\r\n characId\r\n ]);\r\n }\r\n\r\n async characteristicReadValue(deviceId: string, serviceId: string, characId: string): Promise<Uint8Array> {\r\n const hexString = await this.execSingleResult<string>('characteristicRead', [\r\n deviceId,\r\n serviceId,\r\n characId\r\n ]);\r\n return hexStringToBuffer(hexString);\r\n }\r\n\r\n characteristicWrite(deviceId: string, serviceId: string, characId: string, data: Uint8Array) {\r\n return this.execSingleResult<'OK'>('characteristicWrite', [\r\n deviceId,\r\n serviceId,\r\n characId,\r\n bufferToHexString(data)\r\n ]);\r\n }\r\n\r\n characteristicWriteWithoutResponse(deviceId: string, serviceId: string, characId: string, data: Uint8Array) {\r\n return this.execSingleResult<'OK'>('characteristicWriteWithoutResponse', [\r\n deviceId,\r\n serviceId,\r\n characId,\r\n bufferToHexString(data)\r\n ]);\r\n }\r\n\r\n async discoverServices(deviceId: string): Promise<ServiceList> {\r\n const services = await this.execSingleResult<ServiceList>('discoverServices', [\r\n deviceId\r\n ]);\r\n return services;\r\n }\r\n\r\n private execSingleResult<T extends string | void | boolean | Object>(methodName: string, args: any[]): Promise<T> {\r\n return new Promise<T>((resolve, reject) => {\r\n cordova.exec(resolve, (errObject: { code?: string; message?: string }) => {\r\n reject(objectErrorToError(errObject));\r\n }, 'BLECom', methodName, args);\r\n });\r\n }\r\n\r\n\r\n private execMultipleResult<T>(methodName: string, args: any[]): Observable<T> {\r\n const subject = new Subject<T>();\r\n cordova.exec<T>((data) => {\r\n subject.next(data);\r\n }, (err) => {\r\n subject.error(objectErrorToError(err))\r\n }, 'BLECom', methodName, args);\r\n return subject.asObservable();\r\n }\r\n\r\n}\r\n\r\n\r\nfunction objectErrorToError(errObject: { code?: string; message?: string }) {\r\n if (typeof errObject !== 'object' || !errObject.code || !errObject.message) {\r\n return CordovaBLEError.invalidErrorResult(errObject);\r\n }\r\n if (!CordovaBLEError.isValidErrorCode(errObject.code)) {\r\n return CordovaBLEError.invalidErrorCode(errObject);\r\n }\r\n return new CordovaBLEError(\r\n errObject.message,\r\n CordovaBLEError.Code[errObject.code]\r\n );\r\n}"]}
1
+ {"version":3,"file":"iotize-ble-cordova-plugin.js","sourceRoot":"","sources":["../../../../../src/lib/iotize-ble-cordova-plugin.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n bufferToHexString,\n hexStringToBuffer as hexStringToBufferCore,\n} from \"@iotize/common/byte-converter\";\nimport { safeEnumValue } from \"@iotize/common/utility\";\nimport { ConnectionState } from \"@iotize/tap/protocol/api\";\nimport { Observable, Subject, defer } from \"rxjs\";\nimport { switchMap } from \"rxjs/operators\";\nimport { map } from \"rxjs/operators\";\nimport { CordovaInterface } from \"./cordova-interface\";\nimport {\n CordovaBLEScanResult,\n RequestDeviceOptions,\n ServiceList,\n} from \"./definitions\";\nimport { CordovaBLEError } from \"./cordova-ble-error\";\n\nfunction hexStringToBuffer(str: string): Uint8Array {\n try {\n return hexStringToBufferCore(str);\n } catch (err) {\n throw CordovaBLEError.invalidNativeCallResult(str, err as Error);\n }\n}\n\ndeclare var cordova: CordovaInterface;\n\nexport class IoTizeBleCordovaPlugin {\n checkAvailable(): Promise<boolean> {\n return this.execSingleResult<boolean>(\"checkAvailable\", []);\n }\n\n requestEnableBle(): Promise<\"OK\"> {\n return this.execSingleResult<\"OK\">(\"enable\", []);\n }\n\n startScan(\n requestDeviceOptions: RequestDeviceOptions | undefined\n ): Observable<CordovaBLEScanResult | \"Ok\"> {\n return this.execMultipleResult<CordovaBLEScanResult | \"Ok\">(\"startScan\", [\n JSON.stringify(requestDeviceOptions),\n ]);\n }\n\n stopScan() {\n return this.execSingleResult<\"OK\">(\"stopScan\", []);\n }\n\n connect(\n deviceId: string,\n enableBleIfNot: boolean = true\n ): Observable<ConnectionState> {\n return this.askBleEnable(enableBleIfNot).pipe(\n switchMap(() => {\n return this.execMultipleResult<string>(\"connect\", [deviceId]).pipe(\n map((state) => {\n if (!(state in ConnectionState)) {\n console.warn(\n `Plugin native code returned an invalid connection state: \"${state}\".`\n );\n }\n return safeEnumValue(ConnectionState, state);\n })\n );\n })\n );\n }\n\n askBleEnable(askEnable: boolean): Observable<void> {\n return defer(async () => {\n if (askEnable) {\n if (!(await this.checkAvailable())) {\n await this.requestEnableBle();\n }\n }\n });\n }\n\n requestMTU(deviceId: string, mtu: number) {\n return this.execSingleResult<\"OK\">(\"requestMTU\", [deviceId, mtu]);\n }\n\n connectAndDiscoverTapServices(\n deviceId: string,\n enableBleIfNot: boolean = true\n ): Observable<ConnectionState> {\n return this.askBleEnable(enableBleIfNot).pipe(\n switchMap(() => {\n return this.execMultipleResult<string>(\n \"connectAndDiscoverTapServices\",\n [deviceId]\n ).pipe(\n map((state) => {\n if (!(state in ConnectionState)) {\n console.warn(\n `Plugin native code returned an invalid connection state: \"${state}\".`\n );\n }\n return safeEnumValue(ConnectionState, state);\n })\n );\n })\n );\n }\n\n disConnect(deviceId: string) {\n return this.execSingleResult<\"OK\">(\"disConnect\", [deviceId]);\n }\n\n close(deviceId: string) {\n return this.execSingleResult<\"OK\">(\"close\", [deviceId]);\n }\n\n isConnected(deviceId: string) {\n return this.execSingleResult<boolean>(\"isConnected\", [deviceId]);\n }\n\n async send(deviceId: string, data: Uint8Array) {\n const hexString = await this.execSingleResult<string>(\"sendRequest\", [\n deviceId,\n bufferToHexString(data),\n ]);\n return hexStringToBuffer(hexString);\n }\n\n getLastError() {\n return this.execSingleResult<string>(\"getLastError\", []);\n }\n\n characteristicStartNotification(\n deviceId: string,\n serviceId: string,\n characId: string\n ) {\n return this.execSingleResult<\"OK\">(\"characteristicStartNotification\", [\n deviceId,\n serviceId,\n characId,\n ]);\n }\n\n characteristicChanged(\n deviceId: string,\n serviceId: string,\n characId: string\n ): Observable<Uint8Array> {\n return this.execMultipleResult<string>(\"characteristicChanged\", [\n deviceId,\n serviceId,\n characId,\n ]).pipe(\n map((hexString) => {\n return hexStringToBuffer(hexString);\n })\n );\n }\n\n characteristicStopNotification(\n deviceId: string,\n serviceId: string,\n characId: string\n ) {\n return this.execSingleResult<\"OK\">(\"characteristicStopNotification\", [\n deviceId,\n serviceId,\n characId,\n ]);\n }\n\n async characteristicReadValue(\n deviceId: string,\n serviceId: string,\n characId: string\n ): Promise<Uint8Array> {\n const hexString = await this.execSingleResult<string>(\n \"characteristicRead\",\n [deviceId, serviceId, characId]\n );\n return hexStringToBuffer(hexString);\n }\n\n characteristicWrite(\n deviceId: string,\n serviceId: string,\n characId: string,\n data: Uint8Array\n ) {\n return this.execSingleResult<\"OK\">(\"characteristicWrite\", [\n deviceId,\n serviceId,\n characId,\n bufferToHexString(data),\n ]);\n }\n\n characteristicWriteWithoutResponse(\n deviceId: string,\n serviceId: string,\n characId: string,\n data: Uint8Array\n ) {\n return this.execSingleResult<\"OK\">(\"characteristicWriteWithoutResponse\", [\n deviceId,\n serviceId,\n characId,\n bufferToHexString(data),\n ]);\n }\n\n async discoverServices(deviceId: string): Promise<ServiceList> {\n const services = await this.execSingleResult<ServiceList>(\n \"discoverServices\",\n [deviceId]\n );\n return services;\n }\n\n private execSingleResult<T extends string | void | boolean | Object>(\n methodName: string,\n args: any[]\n ): Promise<T> {\n return new Promise<T>((resolve, reject) => {\n cordova.exec(\n resolve,\n (errObject: { code?: string; message?: string }) => {\n reject(objectErrorToError(errObject));\n },\n \"BLECom\",\n methodName,\n args\n );\n });\n }\n\n private execMultipleResult<T>(\n methodName: string,\n args: any[]\n ): Observable<T> {\n const subject = new Subject<T>();\n cordova.exec<T>(\n (data) => {\n subject.next(data);\n },\n (err) => {\n subject.error(objectErrorToError(err));\n },\n \"BLECom\",\n methodName,\n args\n );\n return subject.asObservable();\n }\n}\n\nfunction objectErrorToError(errObject: { code?: string; message?: string }) {\n if (typeof errObject !== \"object\" || !errObject.code || !errObject.message) {\n return CordovaBLEError.invalidErrorResult(errObject);\n }\n if (!CordovaBLEError.isValidErrorCode(errObject.code)) {\n return CordovaBLEError.invalidErrorCode(errObject);\n }\n return new CordovaBLEError(\n errObject.message,\n CordovaBLEError.Code[errObject.code]\n );\n}\n"]}
@@ -1 +1 @@
1
- [{"__symbolic":"module","version":4,"metadata":{"IoTizeBleCordovaPlugin":{"__symbolic":"class","members":{"checkAvailable":[{"__symbolic":"method"}],"requestEnableBle":[{"__symbolic":"method"}],"startScan":[{"__symbolic":"method"}],"stopScan":[{"__symbolic":"method"}],"connect":[{"__symbolic":"method"}],"requestMTU":[{"__symbolic":"method"}],"connectAndDiscoverTapServices":[{"__symbolic":"method"}],"disConnect":[{"__symbolic":"method"}],"close":[{"__symbolic":"method"}],"isConnected":[{"__symbolic":"method"}],"send":[{"__symbolic":"method"}],"getLastError":[{"__symbolic":"method"}],"characteristicStartNotification":[{"__symbolic":"method"}],"characteristicChanged":[{"__symbolic":"method"}],"characteristicStopNotification":[{"__symbolic":"method"}],"characteristicReadValue":[{"__symbolic":"method"}],"characteristicWrite":[{"__symbolic":"method"}],"characteristicWriteWithoutResponse":[{"__symbolic":"method"}],"discoverServices":[{"__symbolic":"method"}],"execSingleResult":[{"__symbolic":"method"}],"execMultipleResult":[{"__symbolic":"method"}]}}}}]
1
+ [{"__symbolic":"module","version":4,"metadata":{"IoTizeBleCordovaPlugin":{"__symbolic":"class","members":{"checkAvailable":[{"__symbolic":"method"}],"requestEnableBle":[{"__symbolic":"method"}],"startScan":[{"__symbolic":"method"}],"stopScan":[{"__symbolic":"method"}],"connect":[{"__symbolic":"method"}],"askBleEnable":[{"__symbolic":"method"}],"requestMTU":[{"__symbolic":"method"}],"connectAndDiscoverTapServices":[{"__symbolic":"method"}],"disConnect":[{"__symbolic":"method"}],"close":[{"__symbolic":"method"}],"isConnected":[{"__symbolic":"method"}],"send":[{"__symbolic":"method"}],"getLastError":[{"__symbolic":"method"}],"characteristicStartNotification":[{"__symbolic":"method"}],"characteristicChanged":[{"__symbolic":"method"}],"characteristicStopNotification":[{"__symbolic":"method"}],"characteristicReadValue":[{"__symbolic":"method"}],"characteristicWrite":[{"__symbolic":"method"}],"characteristicWriteWithoutResponse":[{"__symbolic":"method"}],"discoverServices":[{"__symbolic":"method"}],"execSingleResult":[{"__symbolic":"method"}],"execMultipleResult":[{"__symbolic":"method"}]}}}}]
@@ -1 +1 @@
1
- {"moduleName":null,"summaries":[{"symbol":{"__symbol":0,"members":[]},"metadata":{"__symbolic":"class","members":{"checkAvailable":[{"__symbolic":"method"}],"requestEnableBle":[{"__symbolic":"method"}],"startScan":[{"__symbolic":"method"}],"stopScan":[{"__symbolic":"method"}],"connect":[{"__symbolic":"method"}],"requestMTU":[{"__symbolic":"method"}],"connectAndDiscoverTapServices":[{"__symbolic":"method"}],"disConnect":[{"__symbolic":"method"}],"close":[{"__symbolic":"method"}],"isConnected":[{"__symbolic":"method"}],"send":[{"__symbolic":"method"}],"getLastError":[{"__symbolic":"method"}],"characteristicStartNotification":[{"__symbolic":"method"}],"characteristicChanged":[{"__symbolic":"method"}],"characteristicStopNotification":[{"__symbolic":"method"}],"characteristicReadValue":[{"__symbolic":"method"}],"characteristicWrite":[{"__symbolic":"method"}],"characteristicWriteWithoutResponse":[{"__symbolic":"method"}],"discoverServices":[{"__symbolic":"method"}],"execSingleResult":[{"__symbolic":"method"}],"execMultipleResult":[{"__symbolic":"method"}]}}}],"symbols":[{"__symbol":0,"name":"IoTizeBleCordovaPlugin","filePath":"./iotize-ble-cordova-plugin"}]}
1
+ {"moduleName":null,"summaries":[{"symbol":{"__symbol":0,"members":[]},"metadata":{"__symbolic":"class","members":{"checkAvailable":[{"__symbolic":"method"}],"requestEnableBle":[{"__symbolic":"method"}],"startScan":[{"__symbolic":"method"}],"stopScan":[{"__symbolic":"method"}],"connect":[{"__symbolic":"method"}],"askBleEnable":[{"__symbolic":"method"}],"requestMTU":[{"__symbolic":"method"}],"connectAndDiscoverTapServices":[{"__symbolic":"method"}],"disConnect":[{"__symbolic":"method"}],"close":[{"__symbolic":"method"}],"isConnected":[{"__symbolic":"method"}],"send":[{"__symbolic":"method"}],"getLastError":[{"__symbolic":"method"}],"characteristicStartNotification":[{"__symbolic":"method"}],"characteristicChanged":[{"__symbolic":"method"}],"characteristicStopNotification":[{"__symbolic":"method"}],"characteristicReadValue":[{"__symbolic":"method"}],"characteristicWrite":[{"__symbolic":"method"}],"characteristicWriteWithoutResponse":[{"__symbolic":"method"}],"discoverServices":[{"__symbolic":"method"}],"execSingleResult":[{"__symbolic":"method"}],"execMultipleResult":[{"__symbolic":"method"}]}}}],"symbols":[{"__symbol":0,"name":"IoTizeBleCordovaPlugin","filePath":"./iotize-ble-cordova-plugin"}]}
@@ -1,3 +1,3 @@
1
- import { createDebugger } from '@iotize/common/debug';
1
+ import { createDebugger } from "@iotize/common/debug";
2
2
  export const debug = createDebugger(`@iotize/device-com-ble.cordova`);
3
3
  //# sourceMappingURL=logger.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../../../../src/lib/logger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD,MAAM,CAAC,MAAM,KAAK,GAAG,cAAc,CAAC,gCAAgC,CAAC,CAAC","sourcesContent":["import { createDebugger } from '@iotize/common/debug';\r\n\r\nexport const debug = createDebugger(`@iotize/device-com-ble.cordova`);"]}
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../../../../src/lib/logger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD,MAAM,CAAC,MAAM,KAAK,GAAG,cAAc,CAAC,gCAAgC,CAAC,CAAC","sourcesContent":["import { createDebugger } from \"@iotize/common/debug\";\n\nexport const debug = createDebugger(`@iotize/device-com-ble.cordova`);\n"]}