diff --git a/package-lock.json b/package-lock.json index 36f8bf5..18a0428 100644 --- a/package-lock.json +++ b/package-lock.json @@ -43,6 +43,7 @@ "expo-symbols": "~1.0.8", "expo-system-ui": "~6.0.9", "expo-web-browser": "~15.0.10", + "mqtt": "^5.14.1", "react": "19.1.0", "react-dom": "19.1.0", "react-native": "0.81.5", @@ -65,6 +66,7 @@ "@types/react": "~19.1.0", "eslint": "^9.25.0", "eslint-config-expo": "~10.0.0", + "patch-package": "^8.0.1", "playwright": "^1.57.0", "sharp": "^0.34.5", "typescript": "~5.9.2" @@ -1489,9 +1491,9 @@ } }, "node_modules/@babel/runtime": { - "version": "7.28.4", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.28.4.tgz", - "integrity": "sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.28.6.tgz", + "integrity": "sha512-05WQkdpL9COIMz4LjTxGpPNCdlpyimKppYNoJ5Di5EUObifl8t4tuLuUBBZEpoLYOmfvIWrsp9fCl0HoPRVTdA==", "license": "MIT", "engines": { "node": ">=6.9.0" @@ -4419,12 +4421,30 @@ "csstype": "^3.0.2" } }, + "node_modules/@types/readable-stream": { + "version": "4.0.23", + "resolved": "https://registry.npmjs.org/@types/readable-stream/-/readable-stream-4.0.23.tgz", + "integrity": "sha512-wwXrtQvbMHxCbBgjHaMGEmImFTQxxpfMOR/ZoQnXxB1woqkUbdLGFDgauo00Py9IudiaqSeiBiulSV9i6XIPig==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, "node_modules/@types/stack-utils": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz", "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==", "license": "MIT" }, + "node_modules/@types/ws": { + "version": "8.18.1", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.18.1.tgz", + "integrity": "sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, "node_modules/@types/yargs": { "version": "17.0.35", "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.35.tgz", @@ -5016,6 +5036,13 @@ "node": ">=10.0.0" } }, + "node_modules/@yarnpkg/lockfile": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz", + "integrity": "sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==", + "dev": true, + "license": "BSD-2-Clause" + }, "node_modules/abort-controller": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", @@ -5710,6 +5737,42 @@ "node": ">=0.6" } }, + "node_modules/bl": { + "version": "6.1.6", + "resolved": "https://registry.npmjs.org/bl/-/bl-6.1.6.tgz", + "integrity": "sha512-jLsPgN/YSvPUg9UX0Kd73CXpm2Psg9FxMeCSXnk3WBO3CMT10JMwijubhGfHCnFu6TPn1ei3b975dxv7K2pWVg==", + "license": "MIT", + "dependencies": { + "@types/readable-stream": "^4.0.0", + "buffer": "^6.0.3", + "inherits": "^2.0.4", + "readable-stream": "^4.2.0" + } + }, + "node_modules/bl/node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, "node_modules/bplist-creator": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/bplist-creator/-/bplist-creator-0.1.0.tgz", @@ -5753,6 +5816,18 @@ "node": ">=8" } }, + "node_modules/broker-factory": { + "version": "3.1.13", + "resolved": "https://registry.npmjs.org/broker-factory/-/broker-factory-3.1.13.tgz", + "integrity": "sha512-H2VALe31mEtO/SRcNp4cUU5BAm1biwhc/JaF77AigUuni/1YT0FLCJfbUxwIEs9y6Kssjk2fmXgf+Y9ALvmKlw==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.28.6", + "fast-unique-numbers": "^9.0.26", + "tslib": "^2.8.1", + "worker-factory": "^7.0.48" + } + }, "node_modules/browserslist": { "version": "4.28.1", "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.1.tgz", @@ -6098,6 +6173,12 @@ "node": ">= 10" } }, + "node_modules/commist": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/commist/-/commist-3.2.0.tgz", + "integrity": "sha512-4PIMoPniho+LqXmpS5d3NuGYncG6XWlkBSVGiWycL22dd42OYdUGil2CWuzklaJoNxyxUSpO4MKIBU94viWNAw==", + "license": "MIT" + }, "node_modules/compressible": { "version": "2.0.18", "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", @@ -6158,6 +6239,35 @@ "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", "license": "MIT" }, + "node_modules/concat-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-2.0.0.tgz", + "integrity": "sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==", + "engines": [ + "node >= 6.0" + ], + "license": "MIT", + "dependencies": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.0.2", + "typedarray": "^0.0.6" + } + }, + "node_modules/concat-stream/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/connect": { "version": "3.7.0", "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz", @@ -8247,6 +8357,19 @@ "dev": true, "license": "MIT" }, + "node_modules/fast-unique-numbers": { + "version": "9.0.26", + "resolved": "https://registry.npmjs.org/fast-unique-numbers/-/fast-unique-numbers-9.0.26.tgz", + "integrity": "sha512-3Mtq8p1zQinjGyWfKeuBunbuFoixG72AUkk4VvzbX4ykCW9Q4FzRaNyIlfQhUjnKw2ARVP+/CKnoyr6wfHftig==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.28.6", + "tslib": "^2.8.1" + }, + "engines": { + "node": ">=18.2.0" + } + }, "node_modules/fast-uri": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.0.tgz", @@ -8385,6 +8508,16 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/find-yarn-workspace-root": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/find-yarn-workspace-root/-/find-yarn-workspace-root-2.0.0.tgz", + "integrity": "sha512-1IMnbjt4KzsQfnhnzNd8wUEgXZ44IzZaZmnLYx7D5FZlaHt2gW20Cri8Q+E/t5tIj4+epTBub+2Zxu/vNILzqQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "micromatch": "^4.0.2" + } + }, "node_modules/flat-cache": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", @@ -8451,6 +8584,21 @@ "node": ">= 0.6" } }, + "node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", @@ -8821,6 +8969,12 @@ "node": ">= 0.4" } }, + "node_modules/help-me": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/help-me/-/help-me-5.0.0.tgz", + "integrity": "sha512-7xgomUX6ADmcYzFik0HzAxh/73YlKR9bmFzf51CZwR+b6YtzU2m0u49hQCqV6SvlqIqsaxovfwdvbnsw3b/zpg==", + "license": "MIT" + }, "node_modules/hermes-estree": { "version": "0.29.1", "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.29.1.tgz", @@ -9062,6 +9216,15 @@ "loose-envify": "^1.0.0" } }, + "node_modules/ip-address": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.1.0.tgz", + "integrity": "sha512-XXADHxXmvT9+CRxhXg56LJovE+bmWnEWB78LB83VZTprKTmaC5QfruXocxzTZ2Kl0DNwKuBdlIhjL8LeY8Sf8Q==", + "license": "MIT", + "engines": { + "node": ">= 12" + } + }, "node_modules/is-arguments": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.2.0.tgz", @@ -9777,6 +9940,16 @@ "url": "https://github.com/sponsors/panva" } }, + "node_modules/js-sdsl": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.3.0.tgz", + "integrity": "sha512-mifzlm2+5nZ+lEcLJMoBK0/IH/bDg8XnJfd/Wq6IP+xoCjLZsTOnV2QpxlVbX9bMnkl5PdEjNtBJ9Cj1NjifhQ==", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/js-sdsl" + } + }, "node_modules/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", @@ -9827,6 +10000,26 @@ "dev": true, "license": "MIT" }, + "node_modules/json-stable-stringify": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.3.0.tgz", + "integrity": "sha512-qtYiSSFlwot9XHtF9bD9c7rwKjr+RecWT//ZnPvSmEjpV5mmPOCN4j8UjY5hbjNkOwZ/jQv3J6R1/pL7RwgMsg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "isarray": "^2.0.5", + "jsonify": "^0.0.1", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/json-stable-stringify-without-jsonify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", @@ -9846,6 +10039,29 @@ "node": ">=6" } }, + "node_modules/jsonfile": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.0.tgz", + "integrity": "sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==", + "dev": true, + "license": "MIT", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/jsonify": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.1.tgz", + "integrity": "sha512-2/Ki0GcmuqSrgFyelQq9M05y7PS0mEwuIzrf3f1fPqkVDVRvZrPZtVSMHxdgo8Aq0sxAOb/cr2aqqA3LeWHVPg==", + "dev": true, + "license": "Public Domain", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/jsx-ast-utils": { "version": "3.3.5", "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz", @@ -9872,6 +10088,16 @@ "json-buffer": "3.0.1" } }, + "node_modules/klaw-sync": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/klaw-sync/-/klaw-sync-6.0.0.tgz", + "integrity": "sha512-nIeuVSzdCCs6TDPTqI8w1Yre34sSq7AkZ4B3sfOBbI2CgVSB4Du4aLQijFU2+lhAFCwt9+42Hel6lQNIv6AntQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.1.11" + } + }, "node_modules/kleur": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", @@ -10830,6 +11056,76 @@ "node": ">=10" } }, + "node_modules/mqtt": { + "version": "5.14.1", + "resolved": "https://registry.npmjs.org/mqtt/-/mqtt-5.14.1.tgz", + "integrity": "sha512-NxkPxE70Uq3Ph7goefQa7ggSsVzHrayCD0OyxlJgITN/EbzlZN+JEPmaAZdxP1LsIT5FamDyILoQTF72W7Nnbw==", + "license": "MIT", + "dependencies": { + "@types/readable-stream": "^4.0.21", + "@types/ws": "^8.18.1", + "commist": "^3.2.0", + "concat-stream": "^2.0.0", + "debug": "^4.4.1", + "help-me": "^5.0.0", + "lru-cache": "^10.4.3", + "minimist": "^1.2.8", + "mqtt-packet": "^9.0.2", + "number-allocator": "^1.0.14", + "readable-stream": "^4.7.0", + "rfdc": "^1.4.1", + "socks": "^2.8.6", + "split2": "^4.2.0", + "worker-timers": "^8.0.23", + "ws": "^8.18.3" + }, + "bin": { + "mqtt": "build/bin/mqtt.js", + "mqtt_pub": "build/bin/pub.js", + "mqtt_sub": "build/bin/sub.js" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/mqtt-packet": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/mqtt-packet/-/mqtt-packet-9.0.2.tgz", + "integrity": "sha512-MvIY0B8/qjq7bKxdN1eD+nrljoeaai+qjLJgfRn3TiMuz0pamsIWY2bFODPZMSNmabsLANXsLl4EMoWvlaTZWA==", + "license": "MIT", + "dependencies": { + "bl": "^6.0.8", + "debug": "^4.3.4", + "process-nextick-args": "^2.0.1" + } + }, + "node_modules/mqtt/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "license": "ISC" + }, + "node_modules/mqtt/node_modules/ws": { + "version": "8.19.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.19.0.tgz", + "integrity": "sha512-blAT2mjOEIi0ZzruJfIhb3nps74PRWTCz1IjglWEEpQl5XS/UNama6u2/rjFkDDouqr4L67ry+1aGIALViWjDg==", + "license": "MIT", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, "node_modules/ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", @@ -10986,6 +11282,16 @@ "integrity": "sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==", "license": "MIT" }, + "node_modules/number-allocator": { + "version": "1.0.14", + "resolved": "https://registry.npmjs.org/number-allocator/-/number-allocator-1.0.14.tgz", + "integrity": "sha512-OrL44UTVAvkKdOdRQZIJpLkAdjXGTRda052sN4sO77bKEzYYqWKMBjQvrJFzqygI99gL6Z4u2xctPW1tB8ErvA==", + "license": "MIT", + "dependencies": { + "debug": "^4.3.1", + "js-sdsl": "4.3.0" + } + }, "node_modules/ob1": { "version": "0.83.2", "resolved": "https://registry.npmjs.org/ob1/-/ob1-0.83.2.tgz", @@ -11392,6 +11698,75 @@ "node": ">= 0.8" } }, + "node_modules/patch-package": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/patch-package/-/patch-package-8.0.1.tgz", + "integrity": "sha512-VsKRIA8f5uqHQ7NGhwIna6Bx6D9s/1iXlA1hthBVBEbkq+t4kXD0HHt+rJhf/Z+Ci0F/HCB2hvn0qLdLG+Qxlw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@yarnpkg/lockfile": "^1.1.0", + "chalk": "^4.1.2", + "ci-info": "^3.7.0", + "cross-spawn": "^7.0.3", + "find-yarn-workspace-root": "^2.0.0", + "fs-extra": "^10.0.0", + "json-stable-stringify": "^1.0.2", + "klaw-sync": "^6.0.0", + "minimist": "^1.2.6", + "open": "^7.4.2", + "semver": "^7.5.3", + "slash": "^2.0.0", + "tmp": "^0.2.4", + "yaml": "^2.2.2" + }, + "bin": { + "patch-package": "index.js" + }, + "engines": { + "node": ">=14", + "npm": ">5" + } + }, + "node_modules/patch-package/node_modules/ci-info": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", + "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/patch-package/node_modules/semver": { + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/patch-package/node_modules/slash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, "node_modules/path-exists": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", @@ -11653,6 +12028,21 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, + "node_modules/process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", + "license": "MIT", + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "license": "MIT" + }, "node_modules/progress": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", @@ -12315,6 +12705,46 @@ } } }, + "node_modules/readable-stream": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.7.0.tgz", + "integrity": "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==", + "license": "MIT", + "dependencies": { + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10", + "string_decoder": "^1.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/readable-stream/node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, "node_modules/reflect.getprototypeof": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz", @@ -12535,6 +12965,12 @@ "node": ">=4" } }, + "node_modules/rfdc": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.4.1.tgz", + "integrity": "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==", + "license": "MIT" + }, "node_modules/rimraf": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", @@ -13082,6 +13518,30 @@ "node": ">=8.0.0" } }, + "node_modules/smart-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + "license": "MIT", + "engines": { + "node": ">= 6.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks": { + "version": "2.8.7", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.7.tgz", + "integrity": "sha512-HLpt+uLy/pxB+bum/9DzAgiKS8CX1EvbWxI4zlmgGCExImLdiad2iCwXT5Z4c9c3Eq8rP2318mPW2c+QbtjK8A==", + "license": "MIT", + "dependencies": { + "ip-address": "^10.0.1", + "smart-buffer": "^4.2.0" + }, + "engines": { + "node": ">= 10.0.0", + "npm": ">= 3.0.0" + } + }, "node_modules/source-map": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", @@ -13128,6 +13588,15 @@ "node": ">=6" } }, + "node_modules/split2": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz", + "integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==", + "license": "ISC", + "engines": { + "node": ">= 10.x" + } + }, "node_modules/sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", @@ -13220,6 +13689,15 @@ "node": ">=4" } }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, "node_modules/string-width": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", @@ -13625,6 +14103,16 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, + "node_modules/tmp": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.5.tgz", + "integrity": "sha512-voyz6MApa1rQGUxT3E+BK7/ROe8itEx7vD8/HEvt4xwXucvQ5G5oeEiHkmHZJuBO21RpOf+YYm9MOivj709jow==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.14" + } + }, "node_modules/tmpl": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", @@ -13829,6 +14317,12 @@ "rxjs": "*" } }, + "node_modules/typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==", + "license": "MIT" + }, "node_modules/typescript": { "version": "5.9.3", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", @@ -13972,6 +14466,16 @@ "node": ">=8" } }, + "node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 10.0.0" + } + }, "node_modules/unpipe": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", @@ -14138,6 +14642,12 @@ "integrity": "sha512-E8VjFIQ/TyQgp+TZfS6l8yp/xWppSAHzidGiRrqe4bK4XP9pTRyKFgGJpO3SN7zdX4DeomTrwaseCHovfpFcqQ==", "license": "MIT" }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "license": "MIT" + }, "node_modules/utils-merge": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", @@ -14581,6 +15091,53 @@ "node": ">=0.10.0" } }, + "node_modules/worker-factory": { + "version": "7.0.48", + "resolved": "https://registry.npmjs.org/worker-factory/-/worker-factory-7.0.48.tgz", + "integrity": "sha512-CGmBy3tJvpBPjUvb0t4PrpKubUsfkI1Ohg0/GGFU2RvA9j/tiVYwKU8O7yu7gH06YtzbeJLzdUR29lmZKn5pag==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.28.6", + "fast-unique-numbers": "^9.0.26", + "tslib": "^2.8.1" + } + }, + "node_modules/worker-timers": { + "version": "8.0.29", + "resolved": "https://registry.npmjs.org/worker-timers/-/worker-timers-8.0.29.tgz", + "integrity": "sha512-9jk0MWHhWAZ2xlJPXr45oe5UF/opdpfZrY0HtyPizWuJ+ce1M3IYk/4IIdGct3kn9Ncfs+tkZt3w1tU6KW2Fsg==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.28.6", + "tslib": "^2.8.1", + "worker-timers-broker": "^8.0.15", + "worker-timers-worker": "^9.0.13" + } + }, + "node_modules/worker-timers-broker": { + "version": "8.0.15", + "resolved": "https://registry.npmjs.org/worker-timers-broker/-/worker-timers-broker-8.0.15.tgz", + "integrity": "sha512-Te+EiVUMzG5TtHdmaBZvBrZSFNauym6ImDaCAnzQUxvjnw+oGjMT2idmAOgDy30vOZMLejd0bcsc90Axu6XPWA==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.28.6", + "broker-factory": "^3.1.13", + "fast-unique-numbers": "^9.0.26", + "tslib": "^2.8.1", + "worker-timers-worker": "^9.0.13" + } + }, + "node_modules/worker-timers-worker": { + "version": "9.0.13", + "resolved": "https://registry.npmjs.org/worker-timers-worker/-/worker-timers-worker-9.0.13.tgz", + "integrity": "sha512-qjn18szGb1kjcmh2traAdki1eiIS5ikFo+L90nfMOvSRpuDw1hAcR1nzkP2+Hkdqz5thIRnfuWx7QSpsEUsA6Q==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.28.6", + "tslib": "^2.8.1", + "worker-factory": "^7.0.48" + } + }, "node_modules/wrap-ansi": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", diff --git a/package.json b/package.json index 8e00322..e3d4891 100644 --- a/package.json +++ b/package.json @@ -8,7 +8,8 @@ "android": "expo run:android", "ios": "expo run:ios", "web": "expo start --web", - "lint": "expo lint" + "lint": "expo lint", + "postinstall": "patch-package" }, "dependencies": { "@config-plugins/react-native-webrtc": "^13.0.0", @@ -46,6 +47,7 @@ "expo-symbols": "~1.0.8", "expo-system-ui": "~6.0.9", "expo-web-browser": "~15.0.10", + "mqtt": "^5.14.1", "react": "19.1.0", "react-dom": "19.1.0", "react-native": "0.81.5", @@ -68,6 +70,7 @@ "@types/react": "~19.1.0", "eslint": "^9.25.0", "eslint-config-expo": "~10.0.0", + "patch-package": "^8.0.1", "playwright": "^1.57.0", "sharp": "^0.34.5", "typescript": "~5.9.2" diff --git a/patches/react-native-ble-plx+3.5.0.patch b/patches/react-native-ble-plx+3.5.0.patch new file mode 100644 index 0000000..97fce25 --- /dev/null +++ b/patches/react-native-ble-plx+3.5.0.patch @@ -0,0 +1,1262 @@ +diff --git a/node_modules/react-native-ble-plx/android/build/.transforms/985dc6ce1958625a68fcac9cb6e3a7df/results.bin b/node_modules/react-native-ble-plx/android/build/.transforms/985dc6ce1958625a68fcac9cb6e3a7df/results.bin +new file mode 100644 +index 0000000..0d259dd +--- /dev/null ++++ b/node_modules/react-native-ble-plx/android/build/.transforms/985dc6ce1958625a68fcac9cb6e3a7df/results.bin +@@ -0,0 +1 @@ ++o/classes +diff --git a/node_modules/react-native-ble-plx/android/build/.transforms/985dc6ce1958625a68fcac9cb6e3a7df/transformed/classes/classes_dex/classes.dex b/node_modules/react-native-ble-plx/android/build/.transforms/985dc6ce1958625a68fcac9cb6e3a7df/transformed/classes/classes_dex/classes.dex +new file mode 100644 +index 0000000..bea9bce +Binary files /dev/null and b/node_modules/react-native-ble-plx/android/build/.transforms/985dc6ce1958625a68fcac9cb6e3a7df/transformed/classes/classes_dex/classes.dex differ +diff --git a/node_modules/react-native-ble-plx/android/build/generated/source/buildConfig/debug/com/bleplx/BuildConfig.java b/node_modules/react-native-ble-plx/android/build/generated/source/buildConfig/debug/com/bleplx/BuildConfig.java +new file mode 100644 +index 0000000..0836dab +--- /dev/null ++++ b/node_modules/react-native-ble-plx/android/build/generated/source/buildConfig/debug/com/bleplx/BuildConfig.java +@@ -0,0 +1,12 @@ ++/** ++ * Automatically generated file. DO NOT MODIFY ++ */ ++package com.bleplx; ++ ++public final class BuildConfig { ++ public static final boolean DEBUG = Boolean.parseBoolean("true"); ++ public static final String LIBRARY_PACKAGE_NAME = "com.bleplx"; ++ public static final String BUILD_TYPE = "debug"; ++ // Field from default config. ++ public static final boolean IS_NEW_ARCHITECTURE_ENABLED = true; ++} +diff --git a/node_modules/react-native-ble-plx/android/build/generated/source/codegen/jni/BlePlx-generated.cpp b/node_modules/react-native-ble-plx/android/build/generated/source/codegen/jni/BlePlx-generated.cpp +new file mode 100644 +index 0000000..5cf0349 +--- /dev/null ++++ b/node_modules/react-native-ble-plx/android/build/generated/source/codegen/jni/BlePlx-generated.cpp +@@ -0,0 +1,22 @@ ++ ++/** ++ * This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen). ++ * ++ * Do not edit this file as changes may cause incorrect behavior and will be lost ++ * once the code is regenerated. ++ * ++ * @generated by codegen project: GenerateModuleJniCpp.js ++ */ ++ ++#include "BlePlx.h" ++ ++namespace facebook::react { ++ ++ ++ ++std::shared_ptr BlePlx_ModuleProvider(const std::string &moduleName, const JavaTurboModule::InitParams ¶ms) { ++ ++ return nullptr; ++} ++ ++} // namespace facebook::react +diff --git a/node_modules/react-native-ble-plx/android/build/generated/source/codegen/jni/BlePlx.h b/node_modules/react-native-ble-plx/android/build/generated/source/codegen/jni/BlePlx.h +new file mode 100644 +index 0000000..72e6138 +--- /dev/null ++++ b/node_modules/react-native-ble-plx/android/build/generated/source/codegen/jni/BlePlx.h +@@ -0,0 +1,24 @@ ++ ++/** ++ * This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen). ++ * ++ * Do not edit this file as changes may cause incorrect behavior and will be lost ++ * once the code is regenerated. ++ * ++ * @generated by codegen project: GenerateModuleJniH.js ++ */ ++ ++#pragma once ++ ++#include ++#include ++#include ++ ++namespace facebook::react { ++ ++ ++ ++JSI_EXPORT ++std::shared_ptr BlePlx_ModuleProvider(const std::string &moduleName, const JavaTurboModule::InitParams ¶ms); ++ ++} // namespace facebook::react +diff --git a/node_modules/react-native-ble-plx/android/build/generated/source/codegen/jni/CMakeLists.txt b/node_modules/react-native-ble-plx/android/build/generated/source/codegen/jni/CMakeLists.txt +new file mode 100644 +index 0000000..be8d95e +--- /dev/null ++++ b/node_modules/react-native-ble-plx/android/build/generated/source/codegen/jni/CMakeLists.txt +@@ -0,0 +1,28 @@ ++# Copyright (c) Meta Platforms, Inc. and affiliates. ++# ++# This source code is licensed under the MIT license found in the ++# LICENSE file in the root directory of this source tree. ++ ++cmake_minimum_required(VERSION 3.13) ++set(CMAKE_VERBOSE_MAKEFILE on) ++ ++file(GLOB react_codegen_SRCS CONFIGURE_DEPENDS *.cpp react/renderer/components/BlePlx/*.cpp) ++ ++add_library( ++ react_codegen_BlePlx ++ OBJECT ++ ${react_codegen_SRCS} ++) ++ ++target_include_directories(react_codegen_BlePlx PUBLIC . react/renderer/components/BlePlx) ++ ++target_link_libraries( ++ react_codegen_BlePlx ++ fbjni ++ jsi ++ # We need to link different libraries based on whether we are building rncore or not, that's necessary ++ # because we want to break a circular dependency between react_codegen_rncore and reactnative ++ reactnative ++) ++ ++target_compile_reactnative_options(react_codegen_BlePlx PRIVATE) +diff --git a/node_modules/react-native-ble-plx/android/build/generated/source/codegen/jni/react/renderer/components/BlePlx/BlePlxJSI-generated.cpp b/node_modules/react-native-ble-plx/android/build/generated/source/codegen/jni/react/renderer/components/BlePlx/BlePlxJSI-generated.cpp +new file mode 100644 +index 0000000..c02d545 +--- /dev/null ++++ b/node_modules/react-native-ble-plx/android/build/generated/source/codegen/jni/react/renderer/components/BlePlx/BlePlxJSI-generated.cpp +@@ -0,0 +1,17 @@ ++/** ++ * This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen). ++ * ++ * Do not edit this file as changes may cause incorrect behavior and will be lost ++ * once the code is regenerated. ++ * ++ * @generated by codegen project: GenerateModuleCpp.js ++ */ ++ ++#include "BlePlxJSI.h" ++ ++namespace facebook::react { ++ ++ ++ ++ ++} // namespace facebook::react +diff --git a/node_modules/react-native-ble-plx/android/build/generated/source/codegen/jni/react/renderer/components/BlePlx/BlePlxJSI.h b/node_modules/react-native-ble-plx/android/build/generated/source/codegen/jni/react/renderer/components/BlePlx/BlePlxJSI.h +new file mode 100644 +index 0000000..ec16260 +--- /dev/null ++++ b/node_modules/react-native-ble-plx/android/build/generated/source/codegen/jni/react/renderer/components/BlePlx/BlePlxJSI.h +@@ -0,0 +1,19 @@ ++/** ++ * This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen). ++ * ++ * Do not edit this file as changes may cause incorrect behavior and will be lost ++ * once the code is regenerated. ++ * ++ * @generated by codegen project: GenerateModuleH.js ++ */ ++ ++#pragma once ++ ++#include ++#include ++ ++namespace facebook::react { ++ ++ ++ ++} // namespace facebook::react +diff --git a/node_modules/react-native-ble-plx/android/build/generated/source/codegen/jni/react/renderer/components/BlePlx/ComponentDescriptors.cpp b/node_modules/react-native-ble-plx/android/build/generated/source/codegen/jni/react/renderer/components/BlePlx/ComponentDescriptors.cpp +new file mode 100644 +index 0000000..b97251f +--- /dev/null ++++ b/node_modules/react-native-ble-plx/android/build/generated/source/codegen/jni/react/renderer/components/BlePlx/ComponentDescriptors.cpp +@@ -0,0 +1,22 @@ ++ ++/** ++ * This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen). ++ * ++ * Do not edit this file as changes may cause incorrect behavior and will be lost ++ * once the code is regenerated. ++ * ++ * @generated by codegen project: GenerateComponentDescriptorCpp.js ++ */ ++ ++#include ++#include ++#include ++ ++namespace facebook::react { ++ ++void BlePlx_registerComponentDescriptorsFromCodegen( ++ std::shared_ptr registry) { ++ ++} ++ ++} // namespace facebook::react +diff --git a/node_modules/react-native-ble-plx/android/build/generated/source/codegen/jni/react/renderer/components/BlePlx/ComponentDescriptors.h b/node_modules/react-native-ble-plx/android/build/generated/source/codegen/jni/react/renderer/components/BlePlx/ComponentDescriptors.h +new file mode 100644 +index 0000000..9d40f55 +--- /dev/null ++++ b/node_modules/react-native-ble-plx/android/build/generated/source/codegen/jni/react/renderer/components/BlePlx/ComponentDescriptors.h +@@ -0,0 +1,24 @@ ++ ++/** ++ * This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen). ++ * ++ * Do not edit this file as changes may cause incorrect behavior and will be lost ++ * once the code is regenerated. ++ * ++ * @generated by codegen project: GenerateComponentDescriptorH.js ++ */ ++ ++#pragma once ++ ++#include ++#include ++#include ++ ++namespace facebook::react { ++ ++ ++ ++void BlePlx_registerComponentDescriptorsFromCodegen( ++ std::shared_ptr registry); ++ ++} // namespace facebook::react +diff --git a/node_modules/react-native-ble-plx/android/build/generated/source/codegen/jni/react/renderer/components/BlePlx/EventEmitters.cpp b/node_modules/react-native-ble-plx/android/build/generated/source/codegen/jni/react/renderer/components/BlePlx/EventEmitters.cpp +new file mode 100644 +index 0000000..02a5242 +--- /dev/null ++++ b/node_modules/react-native-ble-plx/android/build/generated/source/codegen/jni/react/renderer/components/BlePlx/EventEmitters.cpp +@@ -0,0 +1,16 @@ ++ ++/** ++ * This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen). ++ * ++ * Do not edit this file as changes may cause incorrect behavior and will be lost ++ * once the code is regenerated. ++ * ++ * @generated by codegen project: GenerateEventEmitterCpp.js ++ */ ++ ++#include ++ ++ ++namespace facebook::react { ++ ++} // namespace facebook::react +diff --git a/node_modules/react-native-ble-plx/android/build/generated/source/codegen/jni/react/renderer/components/BlePlx/EventEmitters.h b/node_modules/react-native-ble-plx/android/build/generated/source/codegen/jni/react/renderer/components/BlePlx/EventEmitters.h +new file mode 100644 +index 0000000..2845a63 +--- /dev/null ++++ b/node_modules/react-native-ble-plx/android/build/generated/source/codegen/jni/react/renderer/components/BlePlx/EventEmitters.h +@@ -0,0 +1,17 @@ ++ ++/** ++ * This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen). ++ * ++ * Do not edit this file as changes may cause incorrect behavior and will be lost ++ * once the code is regenerated. ++ * ++ * @generated by codegen project: GenerateEventEmitterH.js ++ */ ++#pragma once ++ ++#include ++ ++ ++namespace facebook::react { ++ ++} // namespace facebook::react +diff --git a/node_modules/react-native-ble-plx/android/build/generated/source/codegen/jni/react/renderer/components/BlePlx/Props.cpp b/node_modules/react-native-ble-plx/android/build/generated/source/codegen/jni/react/renderer/components/BlePlx/Props.cpp +new file mode 100644 +index 0000000..0a2c941 +--- /dev/null ++++ b/node_modules/react-native-ble-plx/android/build/generated/source/codegen/jni/react/renderer/components/BlePlx/Props.cpp +@@ -0,0 +1,19 @@ ++ ++/** ++ * This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen). ++ * ++ * Do not edit this file as changes may cause incorrect behavior and will be lost ++ * once the code is regenerated. ++ * ++ * @generated by codegen project: GeneratePropsCpp.js ++ */ ++ ++#include ++#include ++#include ++ ++namespace facebook::react { ++ ++ ++ ++} // namespace facebook::react +diff --git a/node_modules/react-native-ble-plx/android/build/generated/source/codegen/jni/react/renderer/components/BlePlx/Props.h b/node_modules/react-native-ble-plx/android/build/generated/source/codegen/jni/react/renderer/components/BlePlx/Props.h +new file mode 100644 +index 0000000..870864b +--- /dev/null ++++ b/node_modules/react-native-ble-plx/android/build/generated/source/codegen/jni/react/renderer/components/BlePlx/Props.h +@@ -0,0 +1,18 @@ ++ ++/** ++ * This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen). ++ * ++ * Do not edit this file as changes may cause incorrect behavior and will be lost ++ * once the code is regenerated. ++ * ++ * @generated by codegen project: GeneratePropsH.js ++ */ ++#pragma once ++ ++ ++ ++namespace facebook::react { ++ ++ ++ ++} // namespace facebook::react +diff --git a/node_modules/react-native-ble-plx/android/build/generated/source/codegen/jni/react/renderer/components/BlePlx/ShadowNodes.cpp b/node_modules/react-native-ble-plx/android/build/generated/source/codegen/jni/react/renderer/components/BlePlx/ShadowNodes.cpp +new file mode 100644 +index 0000000..c15c0dd +--- /dev/null ++++ b/node_modules/react-native-ble-plx/android/build/generated/source/codegen/jni/react/renderer/components/BlePlx/ShadowNodes.cpp +@@ -0,0 +1,17 @@ ++ ++/** ++ * This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen). ++ * ++ * Do not edit this file as changes may cause incorrect behavior and will be lost ++ * once the code is regenerated. ++ * ++ * @generated by codegen project: GenerateShadowNodeCpp.js ++ */ ++ ++#include ++ ++namespace facebook::react { ++ ++ ++ ++} // namespace facebook::react +diff --git a/node_modules/react-native-ble-plx/android/build/generated/source/codegen/jni/react/renderer/components/BlePlx/ShadowNodes.h b/node_modules/react-native-ble-plx/android/build/generated/source/codegen/jni/react/renderer/components/BlePlx/ShadowNodes.h +new file mode 100644 +index 0000000..5a454d2 +--- /dev/null ++++ b/node_modules/react-native-ble-plx/android/build/generated/source/codegen/jni/react/renderer/components/BlePlx/ShadowNodes.h +@@ -0,0 +1,23 @@ ++ ++/** ++ * This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen). ++ * ++ * Do not edit this file as changes may cause incorrect behavior and will be lost ++ * once the code is regenerated. ++ * ++ * @generated by codegen project: GenerateShadowNodeH.js ++ */ ++ ++#pragma once ++ ++#include ++#include ++#include ++#include ++#include ++ ++namespace facebook::react { ++ ++ ++ ++} // namespace facebook::react +diff --git a/node_modules/react-native-ble-plx/android/build/generated/source/codegen/jni/react/renderer/components/BlePlx/States.cpp b/node_modules/react-native-ble-plx/android/build/generated/source/codegen/jni/react/renderer/components/BlePlx/States.cpp +new file mode 100644 +index 0000000..afcdf9a +--- /dev/null ++++ b/node_modules/react-native-ble-plx/android/build/generated/source/codegen/jni/react/renderer/components/BlePlx/States.cpp +@@ -0,0 +1,16 @@ ++ ++/** ++ * This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen). ++ * ++ * Do not edit this file as changes may cause incorrect behavior and will be lost ++ * once the code is regenerated. ++ * ++ * @generated by codegen project: GenerateStateCpp.js ++ */ ++#include ++ ++namespace facebook::react { ++ ++ ++ ++} // namespace facebook::react +diff --git a/node_modules/react-native-ble-plx/android/build/generated/source/codegen/jni/react/renderer/components/BlePlx/States.h b/node_modules/react-native-ble-plx/android/build/generated/source/codegen/jni/react/renderer/components/BlePlx/States.h +new file mode 100644 +index 0000000..2e55bce +--- /dev/null ++++ b/node_modules/react-native-ble-plx/android/build/generated/source/codegen/jni/react/renderer/components/BlePlx/States.h +@@ -0,0 +1,20 @@ ++/** ++ * This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen). ++ * ++ * Do not edit this file as changes may cause incorrect behavior and will be lost ++ * once the code is regenerated. ++ * ++ * @generated by codegen project: GenerateStateH.js ++ */ ++#pragma once ++ ++#include ++#ifdef RN_SERIALIZABLE_STATE ++#include ++#endif ++ ++namespace facebook::react { ++ ++ ++ ++} // namespace facebook::react +\ No newline at end of file +diff --git a/node_modules/react-native-ble-plx/android/build/generated/source/codegen/schema.json b/node_modules/react-native-ble-plx/android/build/generated/source/codegen/schema.json +new file mode 100644 +index 0000000..c845b54 +--- /dev/null ++++ b/node_modules/react-native-ble-plx/android/build/generated/source/codegen/schema.json +@@ -0,0 +1 @@ ++{"libraryName":"","modules":{}} +\ No newline at end of file +diff --git a/node_modules/react-native-ble-plx/android/build/intermediates/aapt_friendly_merged_manifests/debug/processDebugManifest/aapt/AndroidManifest.xml b/node_modules/react-native-ble-plx/android/build/intermediates/aapt_friendly_merged_manifests/debug/processDebugManifest/aapt/AndroidManifest.xml +new file mode 100644 +index 0000000..7396233 +--- /dev/null ++++ b/node_modules/react-native-ble-plx/android/build/intermediates/aapt_friendly_merged_manifests/debug/processDebugManifest/aapt/AndroidManifest.xml +@@ -0,0 +1,7 @@ ++ ++ ++ ++ ++ ++ +\ No newline at end of file +diff --git a/node_modules/react-native-ble-plx/android/build/intermediates/aapt_friendly_merged_manifests/debug/processDebugManifest/aapt/output-metadata.json b/node_modules/react-native-ble-plx/android/build/intermediates/aapt_friendly_merged_manifests/debug/processDebugManifest/aapt/output-metadata.json +new file mode 100644 +index 0000000..43e8b54 +--- /dev/null ++++ b/node_modules/react-native-ble-plx/android/build/intermediates/aapt_friendly_merged_manifests/debug/processDebugManifest/aapt/output-metadata.json +@@ -0,0 +1,18 @@ ++{ ++ "version": 3, ++ "artifactType": { ++ "type": "AAPT_FRIENDLY_MERGED_MANIFESTS", ++ "kind": "Directory" ++ }, ++ "applicationId": "com.bleplx", ++ "variantName": "debug", ++ "elements": [ ++ { ++ "type": "SINGLE", ++ "filters": [], ++ "attributes": [], ++ "outputFile": "AndroidManifest.xml" ++ } ++ ], ++ "elementType": "File" ++} +\ No newline at end of file +diff --git a/node_modules/react-native-ble-plx/android/build/intermediates/aar_metadata/debug/writeDebugAarMetadata/aar-metadata.properties b/node_modules/react-native-ble-plx/android/build/intermediates/aar_metadata/debug/writeDebugAarMetadata/aar-metadata.properties +new file mode 100644 +index 0000000..1211b1e +--- /dev/null ++++ b/node_modules/react-native-ble-plx/android/build/intermediates/aar_metadata/debug/writeDebugAarMetadata/aar-metadata.properties +@@ -0,0 +1,6 @@ ++aarFormatVersion=1.0 ++aarMetadataVersion=1.0 ++minCompileSdk=1 ++minCompileSdkExtension=0 ++minAndroidGradlePluginVersion=1.0.0 ++coreLibraryDesugaringEnabled=false +diff --git a/node_modules/react-native-ble-plx/android/build/intermediates/annotation_processor_list/debug/javaPreCompileDebug/annotationProcessors.json b/node_modules/react-native-ble-plx/android/build/intermediates/annotation_processor_list/debug/javaPreCompileDebug/annotationProcessors.json +new file mode 100644 +index 0000000..9e26dfe +--- /dev/null ++++ b/node_modules/react-native-ble-plx/android/build/intermediates/annotation_processor_list/debug/javaPreCompileDebug/annotationProcessors.json +@@ -0,0 +1 @@ ++{} +\ No newline at end of file +diff --git a/node_modules/react-native-ble-plx/android/build/intermediates/compile_library_classes_jar/debug/bundleLibCompileToJarDebug/classes.jar b/node_modules/react-native-ble-plx/android/build/intermediates/compile_library_classes_jar/debug/bundleLibCompileToJarDebug/classes.jar +new file mode 100644 +index 0000000..71188e7 +Binary files /dev/null and b/node_modules/react-native-ble-plx/android/build/intermediates/compile_library_classes_jar/debug/bundleLibCompileToJarDebug/classes.jar differ +diff --git a/node_modules/react-native-ble-plx/android/build/intermediates/compile_r_class_jar/debug/generateDebugRFile/R.jar b/node_modules/react-native-ble-plx/android/build/intermediates/compile_r_class_jar/debug/generateDebugRFile/R.jar +new file mode 100644 +index 0000000..54efd5f +Binary files /dev/null and b/node_modules/react-native-ble-plx/android/build/intermediates/compile_r_class_jar/debug/generateDebugRFile/R.jar differ +diff --git a/node_modules/react-native-ble-plx/android/build/intermediates/compile_symbol_list/debug/generateDebugRFile/R.txt b/node_modules/react-native-ble-plx/android/build/intermediates/compile_symbol_list/debug/generateDebugRFile/R.txt +new file mode 100644 +index 0000000..e69de29 +diff --git a/node_modules/react-native-ble-plx/android/build/intermediates/incremental/debug/packageDebugResources/compile-file-map.properties b/node_modules/react-native-ble-plx/android/build/intermediates/incremental/debug/packageDebugResources/compile-file-map.properties +new file mode 100644 +index 0000000..4820597 +--- /dev/null ++++ b/node_modules/react-native-ble-plx/android/build/intermediates/incremental/debug/packageDebugResources/compile-file-map.properties +@@ -0,0 +1 @@ ++#Mon Jan 26 14:13:33 PST 2026 +diff --git a/node_modules/react-native-ble-plx/android/build/intermediates/incremental/debug/packageDebugResources/merger.xml b/node_modules/react-native-ble-plx/android/build/intermediates/incremental/debug/packageDebugResources/merger.xml +new file mode 100644 +index 0000000..1943735 +--- /dev/null ++++ b/node_modules/react-native-ble-plx/android/build/intermediates/incremental/debug/packageDebugResources/merger.xml +@@ -0,0 +1,2 @@ ++ ++ +\ No newline at end of file +diff --git a/node_modules/react-native-ble-plx/android/build/intermediates/incremental/mergeDebugAssets/merger.xml b/node_modules/react-native-ble-plx/android/build/intermediates/incremental/mergeDebugAssets/merger.xml +new file mode 100644 +index 0000000..cf6be9a +--- /dev/null ++++ b/node_modules/react-native-ble-plx/android/build/intermediates/incremental/mergeDebugAssets/merger.xml +@@ -0,0 +1,2 @@ ++ ++ +\ No newline at end of file +diff --git a/node_modules/react-native-ble-plx/android/build/intermediates/incremental/mergeDebugJniLibFolders/merger.xml b/node_modules/react-native-ble-plx/android/build/intermediates/incremental/mergeDebugJniLibFolders/merger.xml +new file mode 100644 +index 0000000..8bcf34b +--- /dev/null ++++ b/node_modules/react-native-ble-plx/android/build/intermediates/incremental/mergeDebugJniLibFolders/merger.xml +@@ -0,0 +1,2 @@ ++ ++ +\ No newline at end of file +diff --git a/node_modules/react-native-ble-plx/android/build/intermediates/incremental/mergeDebugShaders/merger.xml b/node_modules/react-native-ble-plx/android/build/intermediates/incremental/mergeDebugShaders/merger.xml +new file mode 100644 +index 0000000..ebc5f59 +--- /dev/null ++++ b/node_modules/react-native-ble-plx/android/build/intermediates/incremental/mergeDebugShaders/merger.xml +@@ -0,0 +1,2 @@ ++ ++ +\ No newline at end of file +diff --git a/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule$1.class b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule$1.class +new file mode 100644 +index 0000000..c36945d +Binary files /dev/null and b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule$1.class differ +diff --git a/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule$10.class b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule$10.class +new file mode 100644 +index 0000000..4ebbc42 +Binary files /dev/null and b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule$10.class differ +diff --git a/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule$11.class b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule$11.class +new file mode 100644 +index 0000000..8386aa6 +Binary files /dev/null and b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule$11.class differ +diff --git a/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule$12.class b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule$12.class +new file mode 100644 +index 0000000..595dea3 +Binary files /dev/null and b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule$12.class differ +diff --git a/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule$13.class b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule$13.class +new file mode 100644 +index 0000000..36259ce +Binary files /dev/null and b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule$13.class differ +diff --git a/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule$14.class b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule$14.class +new file mode 100644 +index 0000000..21f7609 +Binary files /dev/null and b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule$14.class differ +diff --git a/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule$15.class b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule$15.class +new file mode 100644 +index 0000000..1ee4242 +Binary files /dev/null and b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule$15.class differ +diff --git a/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule$16.class b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule$16.class +new file mode 100644 +index 0000000..1a8e7c6 +Binary files /dev/null and b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule$16.class differ +diff --git a/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule$17.class b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule$17.class +new file mode 100644 +index 0000000..d5a3452 +Binary files /dev/null and b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule$17.class differ +diff --git a/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule$18.class b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule$18.class +new file mode 100644 +index 0000000..fbdfa68 +Binary files /dev/null and b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule$18.class differ +diff --git a/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule$19.class b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule$19.class +new file mode 100644 +index 0000000..501263b +Binary files /dev/null and b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule$19.class differ +diff --git a/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule$2.class b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule$2.class +new file mode 100644 +index 0000000..9900c7f +Binary files /dev/null and b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule$2.class differ +diff --git a/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule$20.class b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule$20.class +new file mode 100644 +index 0000000..bb19cac +Binary files /dev/null and b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule$20.class differ +diff --git a/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule$21.class b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule$21.class +new file mode 100644 +index 0000000..a2161ec +Binary files /dev/null and b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule$21.class differ +diff --git a/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule$22.class b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule$22.class +new file mode 100644 +index 0000000..70a6195 +Binary files /dev/null and b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule$22.class differ +diff --git a/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule$23.class b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule$23.class +new file mode 100644 +index 0000000..6b236ec +Binary files /dev/null and b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule$23.class differ +diff --git a/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule$24.class b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule$24.class +new file mode 100644 +index 0000000..18b7305 +Binary files /dev/null and b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule$24.class differ +diff --git a/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule$25.class b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule$25.class +new file mode 100644 +index 0000000..e80974b +Binary files /dev/null and b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule$25.class differ +diff --git a/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule$26.class b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule$26.class +new file mode 100644 +index 0000000..ac4fe88 +Binary files /dev/null and b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule$26.class differ +diff --git a/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule$27.class b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule$27.class +new file mode 100644 +index 0000000..a674583 +Binary files /dev/null and b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule$27.class differ +diff --git a/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule$28.class b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule$28.class +new file mode 100644 +index 0000000..13b3c7b +Binary files /dev/null and b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule$28.class differ +diff --git a/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule$29.class b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule$29.class +new file mode 100644 +index 0000000..54ae159 +Binary files /dev/null and b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule$29.class differ +diff --git a/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule$3.class b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule$3.class +new file mode 100644 +index 0000000..38b2c94 +Binary files /dev/null and b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule$3.class differ +diff --git a/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule$30.class b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule$30.class +new file mode 100644 +index 0000000..c991897 +Binary files /dev/null and b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule$30.class differ +diff --git a/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule$31.class b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule$31.class +new file mode 100644 +index 0000000..59092a7 +Binary files /dev/null and b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule$31.class differ +diff --git a/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule$32.class b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule$32.class +new file mode 100644 +index 0000000..6dae61f +Binary files /dev/null and b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule$32.class differ +diff --git a/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule$33.class b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule$33.class +new file mode 100644 +index 0000000..4a96af6 +Binary files /dev/null and b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule$33.class differ +diff --git a/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule$34.class b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule$34.class +new file mode 100644 +index 0000000..b0878dc +Binary files /dev/null and b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule$34.class differ +diff --git a/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule$35.class b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule$35.class +new file mode 100644 +index 0000000..2ed1a2b +Binary files /dev/null and b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule$35.class differ +diff --git a/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule$36.class b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule$36.class +new file mode 100644 +index 0000000..c2ea7ee +Binary files /dev/null and b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule$36.class differ +diff --git a/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule$37.class b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule$37.class +new file mode 100644 +index 0000000..accc3dc +Binary files /dev/null and b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule$37.class differ +diff --git a/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule$38.class b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule$38.class +new file mode 100644 +index 0000000..554ffd9 +Binary files /dev/null and b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule$38.class differ +diff --git a/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule$39.class b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule$39.class +new file mode 100644 +index 0000000..68a7a7b +Binary files /dev/null and b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule$39.class differ +diff --git a/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule$4.class b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule$4.class +new file mode 100644 +index 0000000..e746dcd +Binary files /dev/null and b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule$4.class differ +diff --git a/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule$40.class b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule$40.class +new file mode 100644 +index 0000000..761674b +Binary files /dev/null and b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule$40.class differ +diff --git a/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule$41.class b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule$41.class +new file mode 100644 +index 0000000..1950d5a +Binary files /dev/null and b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule$41.class differ +diff --git a/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule$42.class b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule$42.class +new file mode 100644 +index 0000000..2d1b24d +Binary files /dev/null and b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule$42.class differ +diff --git a/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule$43.class b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule$43.class +new file mode 100644 +index 0000000..96ad337 +Binary files /dev/null and b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule$43.class differ +diff --git a/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule$44.class b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule$44.class +new file mode 100644 +index 0000000..a2c7fda +Binary files /dev/null and b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule$44.class differ +diff --git a/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule$45.class b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule$45.class +new file mode 100644 +index 0000000..f752d26 +Binary files /dev/null and b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule$45.class differ +diff --git a/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule$46.class b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule$46.class +new file mode 100644 +index 0000000..47dede5 +Binary files /dev/null and b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule$46.class differ +diff --git a/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule$47.class b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule$47.class +new file mode 100644 +index 0000000..0a01382 +Binary files /dev/null and b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule$47.class differ +diff --git a/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule$48.class b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule$48.class +new file mode 100644 +index 0000000..c9eabec +Binary files /dev/null and b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule$48.class differ +diff --git a/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule$49.class b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule$49.class +new file mode 100644 +index 0000000..31cbd1c +Binary files /dev/null and b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule$49.class differ +diff --git a/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule$5.class b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule$5.class +new file mode 100644 +index 0000000..f130c6f +Binary files /dev/null and b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule$5.class differ +diff --git a/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule$50.class b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule$50.class +new file mode 100644 +index 0000000..54989fd +Binary files /dev/null and b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule$50.class differ +diff --git a/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule$51.class b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule$51.class +new file mode 100644 +index 0000000..d5e8b4a +Binary files /dev/null and b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule$51.class differ +diff --git a/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule$52.class b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule$52.class +new file mode 100644 +index 0000000..eb8f3c4 +Binary files /dev/null and b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule$52.class differ +diff --git a/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule$53.class b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule$53.class +new file mode 100644 +index 0000000..84a3014 +Binary files /dev/null and b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule$53.class differ +diff --git a/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule$54.class b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule$54.class +new file mode 100644 +index 0000000..a741698 +Binary files /dev/null and b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule$54.class differ +diff --git a/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule$55.class b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule$55.class +new file mode 100644 +index 0000000..4686aae +Binary files /dev/null and b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule$55.class differ +diff --git a/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule$56.class b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule$56.class +new file mode 100644 +index 0000000..2eb3978 +Binary files /dev/null and b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule$56.class differ +diff --git a/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule$57.class b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule$57.class +new file mode 100644 +index 0000000..9c1c839 +Binary files /dev/null and b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule$57.class differ +diff --git a/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule$58.class b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule$58.class +new file mode 100644 +index 0000000..8e4644c +Binary files /dev/null and b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule$58.class differ +diff --git a/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule$59.class b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule$59.class +new file mode 100644 +index 0000000..99eca86 +Binary files /dev/null and b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule$59.class differ +diff --git a/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule$6.class b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule$6.class +new file mode 100644 +index 0000000..ff5d4e8 +Binary files /dev/null and b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule$6.class differ +diff --git a/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule$60.class b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule$60.class +new file mode 100644 +index 0000000..30294dd +Binary files /dev/null and b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule$60.class differ +diff --git a/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule$61.class b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule$61.class +new file mode 100644 +index 0000000..dd5e8cd +Binary files /dev/null and b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule$61.class differ +diff --git a/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule$7.class b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule$7.class +new file mode 100644 +index 0000000..f2c56d8 +Binary files /dev/null and b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule$7.class differ +diff --git a/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule$8.class b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule$8.class +new file mode 100644 +index 0000000..01762d4 +Binary files /dev/null and b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule$8.class differ +diff --git a/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule$9.class b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule$9.class +new file mode 100644 +index 0000000..1a5d578 +Binary files /dev/null and b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule$9.class differ +diff --git a/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule.class b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule.class +new file mode 100644 +index 0000000..220897d +Binary files /dev/null and b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxModule.class differ +diff --git a/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxPackage.class b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxPackage.class +new file mode 100644 +index 0000000..c602852 +Binary files /dev/null and b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BlePlxPackage.class differ +diff --git a/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BuildConfig.class b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BuildConfig.class +new file mode 100644 +index 0000000..a4e374e +Binary files /dev/null and b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/BuildConfig.class differ +diff --git a/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/Event.class b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/Event.class +new file mode 100644 +index 0000000..240e88d +Binary files /dev/null and b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/Event.class differ +diff --git a/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/adapter/AdvertisementData.class b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/adapter/AdvertisementData.class +new file mode 100644 +index 0000000..b7434d0 +Binary files /dev/null and b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/adapter/AdvertisementData.class differ +diff --git a/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/adapter/BleAdapter.class b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/adapter/BleAdapter.class +new file mode 100644 +index 0000000..ac57727 +Binary files /dev/null and b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/adapter/BleAdapter.class differ +diff --git a/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/adapter/BleAdapterCreator.class b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/adapter/BleAdapterCreator.class +new file mode 100644 +index 0000000..9458ba1 +Binary files /dev/null and b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/adapter/BleAdapterCreator.class differ +diff --git a/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/adapter/BleAdapterFactory$1.class b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/adapter/BleAdapterFactory$1.class +new file mode 100644 +index 0000000..cc4ef39 +Binary files /dev/null and b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/adapter/BleAdapterFactory$1.class differ +diff --git a/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/adapter/BleAdapterFactory.class b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/adapter/BleAdapterFactory.class +new file mode 100644 +index 0000000..3bf327d +Binary files /dev/null and b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/adapter/BleAdapterFactory.class differ +diff --git a/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/adapter/BleModule.class b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/adapter/BleModule.class +new file mode 100644 +index 0000000..cbd1ef6 +Binary files /dev/null and b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/adapter/BleModule.class differ +diff --git a/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/adapter/Characteristic.class b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/adapter/Characteristic.class +new file mode 100644 +index 0000000..abe2fbd +Binary files /dev/null and b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/adapter/Characteristic.class differ +diff --git a/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/adapter/ConnectionOptions.class b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/adapter/ConnectionOptions.class +new file mode 100644 +index 0000000..bbcbb1d +Binary files /dev/null and b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/adapter/ConnectionOptions.class differ +diff --git a/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/adapter/ConnectionState.class b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/adapter/ConnectionState.class +new file mode 100644 +index 0000000..a8b2b71 +Binary files /dev/null and b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/adapter/ConnectionState.class differ +diff --git a/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/adapter/Descriptor.class b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/adapter/Descriptor.class +new file mode 100644 +index 0000000..a8306a6 +Binary files /dev/null and b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/adapter/Descriptor.class differ +diff --git a/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/adapter/Device.class b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/adapter/Device.class +new file mode 100644 +index 0000000..b2d349e +Binary files /dev/null and b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/adapter/Device.class differ +diff --git a/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/adapter/OnErrorCallback.class b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/adapter/OnErrorCallback.class +new file mode 100644 +index 0000000..581f3f5 +Binary files /dev/null and b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/adapter/OnErrorCallback.class differ +diff --git a/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/adapter/OnEventCallback.class b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/adapter/OnEventCallback.class +new file mode 100644 +index 0000000..86ef6ac +Binary files /dev/null and b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/adapter/OnEventCallback.class differ +diff --git a/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/adapter/OnSuccessCallback.class b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/adapter/OnSuccessCallback.class +new file mode 100644 +index 0000000..2383ae6 +Binary files /dev/null and b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/adapter/OnSuccessCallback.class differ +diff --git a/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/adapter/RefreshGattMoment.class b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/adapter/RefreshGattMoment.class +new file mode 100644 +index 0000000..6bf812f +Binary files /dev/null and b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/adapter/RefreshGattMoment.class differ +diff --git a/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/adapter/ScanResult.class b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/adapter/ScanResult.class +new file mode 100644 +index 0000000..665e905 +Binary files /dev/null and b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/adapter/ScanResult.class differ +diff --git a/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/adapter/Service.class b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/adapter/Service.class +new file mode 100644 +index 0000000..aa5c143 +Binary files /dev/null and b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/adapter/Service.class differ +diff --git a/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/adapter/errors/BleError.class b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/adapter/errors/BleError.class +new file mode 100644 +index 0000000..368aa55 +Binary files /dev/null and b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/adapter/errors/BleError.class differ +diff --git a/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/adapter/errors/BleErrorCode.class b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/adapter/errors/BleErrorCode.class +new file mode 100644 +index 0000000..c4f19b2 +Binary files /dev/null and b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/adapter/errors/BleErrorCode.class differ +diff --git a/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/adapter/errors/BleErrorUtils.class b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/adapter/errors/BleErrorUtils.class +new file mode 100644 +index 0000000..f917ec6 +Binary files /dev/null and b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/adapter/errors/BleErrorUtils.class differ +diff --git a/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/adapter/errors/ErrorConverter.class b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/adapter/errors/ErrorConverter.class +new file mode 100644 +index 0000000..1d7ed6f +Binary files /dev/null and b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/adapter/errors/ErrorConverter.class differ +diff --git a/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/adapter/exceptions/CannotMonitorCharacteristicException.class b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/adapter/exceptions/CannotMonitorCharacteristicException.class +new file mode 100644 +index 0000000..e0cab4b +Binary files /dev/null and b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/adapter/exceptions/CannotMonitorCharacteristicException.class differ +diff --git a/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/adapter/utils/Base64Converter.class b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/adapter/utils/Base64Converter.class +new file mode 100644 +index 0000000..97ca5f0 +Binary files /dev/null and b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/adapter/utils/Base64Converter.class differ +diff --git a/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/adapter/utils/ByteUtils.class b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/adapter/utils/ByteUtils.class +new file mode 100644 +index 0000000..b04beab +Binary files /dev/null and b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/adapter/utils/ByteUtils.class differ +diff --git a/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/adapter/utils/Constants$BluetoothLogLevel.class b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/adapter/utils/Constants$BluetoothLogLevel.class +new file mode 100644 +index 0000000..4919b72 +Binary files /dev/null and b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/adapter/utils/Constants$BluetoothLogLevel.class differ +diff --git a/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/adapter/utils/Constants$BluetoothState.class b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/adapter/utils/Constants$BluetoothState.class +new file mode 100644 +index 0000000..2c6ae71 +Binary files /dev/null and b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/adapter/utils/Constants$BluetoothState.class differ +diff --git a/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/adapter/utils/Constants$ConnectionPriority.class b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/adapter/utils/Constants$ConnectionPriority.class +new file mode 100644 +index 0000000..120579e +Binary files /dev/null and b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/adapter/utils/Constants$ConnectionPriority.class differ +diff --git a/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/adapter/utils/Constants.class b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/adapter/utils/Constants.class +new file mode 100644 +index 0000000..ab2e7fa +Binary files /dev/null and b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/adapter/utils/Constants.class differ +diff --git a/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/adapter/utils/DisposableMap.class b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/adapter/utils/DisposableMap.class +new file mode 100644 +index 0000000..20018f6 +Binary files /dev/null and b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/adapter/utils/DisposableMap.class differ +diff --git a/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/adapter/utils/IdGenerator.class b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/adapter/utils/IdGenerator.class +new file mode 100644 +index 0000000..3619ee5 +Binary files /dev/null and b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/adapter/utils/IdGenerator.class differ +diff --git a/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/adapter/utils/IdGeneratorKey.class b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/adapter/utils/IdGeneratorKey.class +new file mode 100644 +index 0000000..1f1f0a5 +Binary files /dev/null and b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/adapter/utils/IdGeneratorKey.class differ +diff --git a/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/adapter/utils/LogLevel.class b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/adapter/utils/LogLevel.class +new file mode 100644 +index 0000000..dc42169 +Binary files /dev/null and b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/adapter/utils/LogLevel.class differ +diff --git a/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/adapter/utils/RefreshGattCustomOperation.class b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/adapter/utils/RefreshGattCustomOperation.class +new file mode 100644 +index 0000000..d501095 +Binary files /dev/null and b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/adapter/utils/RefreshGattCustomOperation.class differ +diff --git a/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/adapter/utils/SafeExecutor.class b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/adapter/utils/SafeExecutor.class +new file mode 100644 +index 0000000..45751c7 +Binary files /dev/null and b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/adapter/utils/SafeExecutor.class differ +diff --git a/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/adapter/utils/ServiceFactory.class b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/adapter/utils/ServiceFactory.class +new file mode 100644 +index 0000000..74bd2d3 +Binary files /dev/null and b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/adapter/utils/ServiceFactory.class differ +diff --git a/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/adapter/utils/UUIDConverter.class b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/adapter/utils/UUIDConverter.class +new file mode 100644 +index 0000000..62385eb +Binary files /dev/null and b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/adapter/utils/UUIDConverter.class differ +diff --git a/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/adapter/utils/mapper/RxBleDeviceToDeviceMapper.class b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/adapter/utils/mapper/RxBleDeviceToDeviceMapper.class +new file mode 100644 +index 0000000..9118df4 +Binary files /dev/null and b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/adapter/utils/mapper/RxBleDeviceToDeviceMapper.class differ +diff --git a/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/adapter/utils/mapper/RxScanResultToScanResultMapper.class b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/adapter/utils/mapper/RxScanResultToScanResultMapper.class +new file mode 100644 +index 0000000..b8d3b5f +Binary files /dev/null and b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/adapter/utils/mapper/RxScanResultToScanResultMapper.class differ +diff --git a/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/converter/BleErrorToJsObjectConverter.class b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/converter/BleErrorToJsObjectConverter.class +new file mode 100644 +index 0000000..b8200fb +Binary files /dev/null and b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/converter/BleErrorToJsObjectConverter.class differ +diff --git a/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/converter/CharacteristicToJsObjectConverter$Metadata.class b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/converter/CharacteristicToJsObjectConverter$Metadata.class +new file mode 100644 +index 0000000..f5fa0a4 +Binary files /dev/null and b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/converter/CharacteristicToJsObjectConverter$Metadata.class differ +diff --git a/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/converter/CharacteristicToJsObjectConverter.class b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/converter/CharacteristicToJsObjectConverter.class +new file mode 100644 +index 0000000..f02e08c +Binary files /dev/null and b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/converter/CharacteristicToJsObjectConverter.class differ +diff --git a/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/converter/DescriptorToJsObjectConverter$Metadata.class b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/converter/DescriptorToJsObjectConverter$Metadata.class +new file mode 100644 +index 0000000..5edfea4 +Binary files /dev/null and b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/converter/DescriptorToJsObjectConverter$Metadata.class differ +diff --git a/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/converter/DescriptorToJsObjectConverter.class b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/converter/DescriptorToJsObjectConverter.class +new file mode 100644 +index 0000000..77c25ef +Binary files /dev/null and b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/converter/DescriptorToJsObjectConverter.class differ +diff --git a/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/converter/DeviceToJsObjectConverter$Metadata.class b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/converter/DeviceToJsObjectConverter$Metadata.class +new file mode 100644 +index 0000000..5648506 +Binary files /dev/null and b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/converter/DeviceToJsObjectConverter$Metadata.class differ +diff --git a/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/converter/DeviceToJsObjectConverter.class b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/converter/DeviceToJsObjectConverter.class +new file mode 100644 +index 0000000..60c64ab +Binary files /dev/null and b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/converter/DeviceToJsObjectConverter.class differ +diff --git a/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/converter/JSObjectConverter.class b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/converter/JSObjectConverter.class +new file mode 100644 +index 0000000..4b8787f +Binary files /dev/null and b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/converter/JSObjectConverter.class differ +diff --git a/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/converter/ScanResultToJsObjectConverter$Metadata.class b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/converter/ScanResultToJsObjectConverter$Metadata.class +new file mode 100644 +index 0000000..33387dc +Binary files /dev/null and b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/converter/ScanResultToJsObjectConverter$Metadata.class differ +diff --git a/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/converter/ScanResultToJsObjectConverter.class b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/converter/ScanResultToJsObjectConverter.class +new file mode 100644 +index 0000000..d47b051 +Binary files /dev/null and b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/converter/ScanResultToJsObjectConverter.class differ +diff --git a/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/converter/ServiceToJsObjectConverter$Metadata.class b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/converter/ServiceToJsObjectConverter$Metadata.class +new file mode 100644 +index 0000000..89df072 +Binary files /dev/null and b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/converter/ServiceToJsObjectConverter$Metadata.class differ +diff --git a/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/converter/ServiceToJsObjectConverter.class b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/converter/ServiceToJsObjectConverter.class +new file mode 100644 +index 0000000..82c762e +Binary files /dev/null and b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/converter/ServiceToJsObjectConverter.class differ +diff --git a/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/utils/Base64Converter.class b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/utils/Base64Converter.class +new file mode 100644 +index 0000000..3dfd974 +Binary files /dev/null and b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/utils/Base64Converter.class differ +diff --git a/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/utils/ReadableArrayConverter.class b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/utils/ReadableArrayConverter.class +new file mode 100644 +index 0000000..f320b0f +Binary files /dev/null and b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/utils/ReadableArrayConverter.class differ +diff --git a/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/utils/SafePromise.class b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/utils/SafePromise.class +new file mode 100644 +index 0000000..084da60 +Binary files /dev/null and b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/utils/SafePromise.class differ +diff --git a/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/utils/UUIDConverter.class b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/utils/UUIDConverter.class +new file mode 100644 +index 0000000..27bffde +Binary files /dev/null and b/node_modules/react-native-ble-plx/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/bleplx/utils/UUIDConverter.class differ +diff --git a/node_modules/react-native-ble-plx/android/build/intermediates/local_only_symbol_list/debug/parseDebugLocalResources/R-def.txt b/node_modules/react-native-ble-plx/android/build/intermediates/local_only_symbol_list/debug/parseDebugLocalResources/R-def.txt +new file mode 100644 +index 0000000..78ac5b8 +--- /dev/null ++++ b/node_modules/react-native-ble-plx/android/build/intermediates/local_only_symbol_list/debug/parseDebugLocalResources/R-def.txt +@@ -0,0 +1,2 @@ ++R_DEF: Internal format may change without notice ++local +diff --git a/node_modules/react-native-ble-plx/android/build/intermediates/manifest_merge_blame_file/debug/processDebugManifest/manifest-merger-blame-debug-report.txt b/node_modules/react-native-ble-plx/android/build/intermediates/manifest_merge_blame_file/debug/processDebugManifest/manifest-merger-blame-debug-report.txt +new file mode 100644 +index 0000000..30472d7 +--- /dev/null ++++ b/node_modules/react-native-ble-plx/android/build/intermediates/manifest_merge_blame_file/debug/processDebugManifest/manifest-merger-blame-debug-report.txt +@@ -0,0 +1,7 @@ ++1 ++2 ++4 ++5 ++6 ++7 +diff --git a/node_modules/react-native-ble-plx/android/build/intermediates/merged_manifest/debug/processDebugManifest/AndroidManifest.xml b/node_modules/react-native-ble-plx/android/build/intermediates/merged_manifest/debug/processDebugManifest/AndroidManifest.xml +new file mode 100644 +index 0000000..7396233 +--- /dev/null ++++ b/node_modules/react-native-ble-plx/android/build/intermediates/merged_manifest/debug/processDebugManifest/AndroidManifest.xml +@@ -0,0 +1,7 @@ ++ ++ ++ ++ ++ ++ +\ No newline at end of file +diff --git a/node_modules/react-native-ble-plx/android/build/intermediates/navigation_json/debug/extractDeepLinksDebug/navigation.json b/node_modules/react-native-ble-plx/android/build/intermediates/navigation_json/debug/extractDeepLinksDebug/navigation.json +new file mode 100644 +index 0000000..0637a08 +--- /dev/null ++++ b/node_modules/react-native-ble-plx/android/build/intermediates/navigation_json/debug/extractDeepLinksDebug/navigation.json +@@ -0,0 +1 @@ ++[] +\ No newline at end of file +diff --git a/node_modules/react-native-ble-plx/android/build/intermediates/nested_resources_validation_report/debug/generateDebugResources/nestedResourcesValidationReport.txt b/node_modules/react-native-ble-plx/android/build/intermediates/nested_resources_validation_report/debug/generateDebugResources/nestedResourcesValidationReport.txt +new file mode 100644 +index 0000000..08f4ebe +--- /dev/null ++++ b/node_modules/react-native-ble-plx/android/build/intermediates/nested_resources_validation_report/debug/generateDebugResources/nestedResourcesValidationReport.txt +@@ -0,0 +1 @@ ++0 Warning/Error +\ No newline at end of file +diff --git a/node_modules/react-native-ble-plx/android/build/intermediates/runtime_library_classes_jar/debug/bundleLibRuntimeToJarDebug/classes.jar b/node_modules/react-native-ble-plx/android/build/intermediates/runtime_library_classes_jar/debug/bundleLibRuntimeToJarDebug/classes.jar +new file mode 100644 +index 0000000..54f781b +Binary files /dev/null and b/node_modules/react-native-ble-plx/android/build/intermediates/runtime_library_classes_jar/debug/bundleLibRuntimeToJarDebug/classes.jar differ +diff --git a/node_modules/react-native-ble-plx/android/build/intermediates/symbol_list_with_package_name/debug/generateDebugRFile/package-aware-r.txt b/node_modules/react-native-ble-plx/android/build/intermediates/symbol_list_with_package_name/debug/generateDebugRFile/package-aware-r.txt +new file mode 100644 +index 0000000..e7a7350 +--- /dev/null ++++ b/node_modules/react-native-ble-plx/android/build/intermediates/symbol_list_with_package_name/debug/generateDebugRFile/package-aware-r.txt +@@ -0,0 +1 @@ ++com.bleplx +diff --git a/node_modules/react-native-ble-plx/android/build/outputs/logs/manifest-merger-debug-report.txt b/node_modules/react-native-ble-plx/android/build/outputs/logs/manifest-merger-debug-report.txt +new file mode 100644 +index 0000000..381aa10 +--- /dev/null ++++ b/node_modules/react-native-ble-plx/android/build/outputs/logs/manifest-merger-debug-report.txt +@@ -0,0 +1,14 @@ ++-- Merging decision tree log --- ++manifest ++ADDED from /Users/sergei/Desktop/WellNuo/node_modules/react-native-ble-plx/android/src/main/AndroidManifestNew.xml:1:1-22 ++INJECTED from /Users/sergei/Desktop/WellNuo/node_modules/react-native-ble-plx/android/src/main/AndroidManifestNew.xml:1:1-22 ++ package ++ INJECTED from /Users/sergei/Desktop/WellNuo/node_modules/react-native-ble-plx/android/src/main/AndroidManifestNew.xml ++uses-sdk ++INJECTED from /Users/sergei/Desktop/WellNuo/node_modules/react-native-ble-plx/android/src/main/AndroidManifestNew.xml reason: use-sdk injection requested ++INJECTED from /Users/sergei/Desktop/WellNuo/node_modules/react-native-ble-plx/android/src/main/AndroidManifestNew.xml ++INJECTED from /Users/sergei/Desktop/WellNuo/node_modules/react-native-ble-plx/android/src/main/AndroidManifestNew.xml ++ android:targetSdkVersion ++ INJECTED from /Users/sergei/Desktop/WellNuo/node_modules/react-native-ble-plx/android/src/main/AndroidManifestNew.xml ++ android:minSdkVersion ++ INJECTED from /Users/sergei/Desktop/WellNuo/node_modules/react-native-ble-plx/android/src/main/AndroidManifestNew.xml +diff --git a/node_modules/react-native-ble-plx/android/build/tmp/compileDebugJavaWithJavac/previous-compilation-data.bin b/node_modules/react-native-ble-plx/android/build/tmp/compileDebugJavaWithJavac/previous-compilation-data.bin +new file mode 100644 +index 0000000..8d5fdb4 +Binary files /dev/null and b/node_modules/react-native-ble-plx/android/build/tmp/compileDebugJavaWithJavac/previous-compilation-data.bin differ +diff --git a/node_modules/react-native-ble-plx/android/src/main/java/com/bleplx/BlePlxModule.java b/node_modules/react-native-ble-plx/android/src/main/java/com/bleplx/BlePlxModule.java +index c731640..8a98a9a 100644 +--- a/node_modules/react-native-ble-plx/android/src/main/java/com/bleplx/BlePlxModule.java ++++ b/node_modules/react-native-ble-plx/android/src/main/java/com/bleplx/BlePlxModule.java +@@ -168,7 +168,7 @@ public class BlePlxModule extends ReactContextBaseJavaModule { + }, new OnErrorCallback() { + @Override + public void onError(BleError error) { +- safePromise.reject(null, errorConverter.toJs(error)); ++ safePromise.reject(error.errorCode.name(), errorConverter.toJs(error)); + } + }); + } +@@ -187,7 +187,7 @@ public class BlePlxModule extends ReactContextBaseJavaModule { + }, new OnErrorCallback() { + @Override + public void onError(BleError error) { +- safePromise.reject(null, errorConverter.toJs(error)); ++ safePromise.reject(error.errorCode.name(), errorConverter.toJs(error)); + } + }); + } +@@ -318,7 +318,7 @@ public class BlePlxModule extends ReactContextBaseJavaModule { + }, new OnErrorCallback() { + @Override + public void onError(BleError error) { +- safePromise.reject(null, errorConverter.toJs(error)); ++ safePromise.reject(error.errorCode.name(), errorConverter.toJs(error)); + } + }); + } +@@ -338,7 +338,7 @@ public class BlePlxModule extends ReactContextBaseJavaModule { + }, new OnErrorCallback() { + @Override + public void onError(BleError error) { +- safePromise.reject(null, errorConverter.toJs(error)); ++ safePromise.reject(error.errorCode.name(), errorConverter.toJs(error)); + } + }); + } +@@ -358,7 +358,7 @@ public class BlePlxModule extends ReactContextBaseJavaModule { + }, new OnErrorCallback() { + @Override + public void onError(BleError error) { +- safePromise.reject(null, errorConverter.toJs(error)); ++ safePromise.reject(error.errorCode.name(), errorConverter.toJs(error)); + } + }); + } +@@ -422,7 +422,7 @@ public class BlePlxModule extends ReactContextBaseJavaModule { + new OnErrorCallback() { + @Override + public void onError(BleError error) { +- safePromise.reject(null, errorConverter.toJs(error)); ++ safePromise.reject(error.errorCode.name(), errorConverter.toJs(error)); + } + }); + } +@@ -442,7 +442,7 @@ public class BlePlxModule extends ReactContextBaseJavaModule { + }, new OnErrorCallback() { + @Override + public void onError(BleError error) { +- safePromise.reject(null, errorConverter.toJs(error)); ++ safePromise.reject(error.errorCode.name(), errorConverter.toJs(error)); + } + }); + } +@@ -483,7 +483,7 @@ public class BlePlxModule extends ReactContextBaseJavaModule { + }, new OnErrorCallback() { + @Override + public void onError(BleError error) { +- safePromise.reject(null, errorConverter.toJs(error)); ++ safePromise.reject(error.errorCode.name(), errorConverter.toJs(error)); + } + }); + } +@@ -627,7 +627,7 @@ public class BlePlxModule extends ReactContextBaseJavaModule { + }, new OnErrorCallback() { + @Override + public void onError(BleError error) { +- safePromise.reject(null, errorConverter.toJs(error)); ++ safePromise.reject(error.errorCode.name(), errorConverter.toJs(error)); + } + } + ); +@@ -654,7 +654,7 @@ public class BlePlxModule extends ReactContextBaseJavaModule { + }, new OnErrorCallback() { + @Override + public void onError(BleError error) { +- safePromise.reject(null, errorConverter.toJs(error)); ++ safePromise.reject(error.errorCode.name(), errorConverter.toJs(error)); + } + } + ); +@@ -680,7 +680,7 @@ public class BlePlxModule extends ReactContextBaseJavaModule { + }, new OnErrorCallback() { + @Override + public void onError(BleError error) { +- safePromise.reject(null, errorConverter.toJs(error)); ++ safePromise.reject(error.errorCode.name(), errorConverter.toJs(error)); + } + }); + } +@@ -706,7 +706,7 @@ public class BlePlxModule extends ReactContextBaseJavaModule { + }, new OnErrorCallback() { + @Override + public void onError(BleError error) { +- safePromise.reject(null, errorConverter.toJs(error)); ++ safePromise.reject(error.errorCode.name(), errorConverter.toJs(error)); + } + } + ); +@@ -732,7 +732,7 @@ public class BlePlxModule extends ReactContextBaseJavaModule { + }, new OnErrorCallback() { + @Override + public void onError(BleError error) { +- safePromise.reject(null, errorConverter.toJs(error)); ++ safePromise.reject(error.errorCode.name(), errorConverter.toJs(error)); + } + } + ); +@@ -757,7 +757,7 @@ public class BlePlxModule extends ReactContextBaseJavaModule { + }, new OnErrorCallback() { + @Override + public void onError(BleError error) { +- safePromise.reject(null, errorConverter.toJs(error)); ++ safePromise.reject(error.errorCode.name(), errorConverter.toJs(error)); + } + } + ); +@@ -788,7 +788,7 @@ public class BlePlxModule extends ReactContextBaseJavaModule { + }, new OnErrorCallback() { + @Override + public void onError(BleError error) { +- safePromise.reject(null, errorConverter.toJs(error)); ++ safePromise.reject(error.errorCode.name(), errorConverter.toJs(error)); + } + } + ); +@@ -818,7 +818,7 @@ public class BlePlxModule extends ReactContextBaseJavaModule { + }, new OnErrorCallback() { + @Override + public void onError(BleError error) { +- safePromise.reject(null, errorConverter.toJs(error)); ++ safePromise.reject(error.errorCode.name(), errorConverter.toJs(error)); + } + } + ); +@@ -848,7 +848,7 @@ public class BlePlxModule extends ReactContextBaseJavaModule { + }, new OnErrorCallback() { + @Override + public void onError(BleError error) { +- safePromise.reject(null, errorConverter.toJs(error)); ++ safePromise.reject(error.errorCode.name(), errorConverter.toJs(error)); + } + } + ); diff --git a/services/ble/BLEManager.ts b/services/ble/BLEManager.ts index 7910f63..407eaa3 100644 --- a/services/ble/BLEManager.ts +++ b/services/ble/BLEManager.ts @@ -6,12 +6,22 @@ import { IBLEManager, WPDevice, WiFiNetwork, WiFiStatus, BLE_CONFIG, BLE_COMMAND import base64 from 'react-native-base64'; export class RealBLEManager implements IBLEManager { - private manager: BleManager; + private _manager: BleManager | null = null; private connectedDevices = new Map(); private scanning = false; + // Lazy initialization to prevent crash on app startup + private get manager(): BleManager { + if (!this._manager) { + console.log('[BLE] Initializing BleManager (lazy)...'); + this._manager = new BleManager(); + } + return this._manager; + } + constructor() { - this.manager = new BleManager(); + // Don't initialize BleManager here - use lazy initialization + console.log('[BLE] RealBLEManager created (BleManager will be initialized on first use)'); } // Check and request permissions @@ -113,12 +123,69 @@ export class RealBLEManager implements IBLEManager { } async connectDevice(deviceId: string): Promise { + console.log('[BLE] connectDevice started:', deviceId); try { - const device = await this.manager.connectToDevice(deviceId); + // Step 0: Check permissions (required for Android 12+) + console.log('[BLE] Step 0: Checking permissions...'); + const hasPermission = await this.requestPermissions(); + if (!hasPermission) { + console.error('[BLE] Permissions not granted!'); + throw new Error('Bluetooth permissions not granted'); + } + console.log('[BLE] Permissions OK'); + + // Step 0.5: Check Bluetooth is enabled + console.log('[BLE] Checking Bluetooth state...'); + const isEnabled = await this.isBluetoothEnabled(); + if (!isEnabled) { + console.error('[BLE] Bluetooth is disabled!'); + throw new Error('Bluetooth is disabled. Please enable it in settings.'); + } + console.log('[BLE] Bluetooth is ON'); + + // Check if already connected + const existingDevice = this.connectedDevices.get(deviceId); + if (existingDevice) { + console.log('[BLE] Checking existing connection...'); + const isConnected = await existingDevice.isConnected(); + if (isConnected) { + console.log('[BLE] Device already connected:', deviceId); + return true; + } + // Device was in map but disconnected, remove it + console.log('[BLE] Removing stale connection from map:', deviceId); + this.connectedDevices.delete(deviceId); + } + + console.log('[BLE] Calling manager.connectToDevice with 10s timeout...'); + const device = await this.manager.connectToDevice(deviceId, { + timeout: 10000, // 10 second timeout + }); + console.log('[BLE] Connected! Discovering services and characteristics...'); + await device.discoverAllServicesAndCharacteristics(); + console.log('[BLE] Services discovered'); + + // Request larger MTU for Android (default is 23 bytes which is too small) + if (Platform.OS === 'android') { + try { + const mtu = await device.requestMTU(512); + console.log('[BLE] MTU negotiated:', mtu); + } catch (mtuError) { + console.warn('[BLE] MTU negotiation failed (non-critical):', mtuError); + } + } + this.connectedDevices.set(deviceId, device); + console.log('[BLE] connectDevice SUCCESS:', deviceId); return true; - } catch (error) { + } catch (error: any) { + console.error('[BLE] connectDevice FAILED:', deviceId, { + message: error?.message, + errorCode: error?.errorCode, + reason: error?.reason, + stack: error?.stack?.substring(0, 200), + }); return false; } } @@ -126,8 +193,16 @@ export class RealBLEManager implements IBLEManager { async disconnectDevice(deviceId: string): Promise { const device = this.connectedDevices.get(deviceId); if (device) { - await device.cancelConnection(); - this.connectedDevices.delete(deviceId); + try { + // Cancel any pending operations before disconnecting + // This helps prevent Android NullPointerException in monitor callbacks + await device.cancelConnection(); + } catch (error: any) { + // Log but don't throw - device may already be disconnected + console.warn('[BLE] disconnectDevice error (ignored):', error?.message); + } finally { + this.connectedDevices.delete(deviceId); + } } } @@ -136,68 +211,144 @@ export class RealBLEManager implements IBLEManager { } async sendCommand(deviceId: string, command: string): Promise { + console.log('[BLE] sendCommand:', { deviceId, command }); + const device = this.connectedDevices.get(deviceId); if (!device) { + console.error('[BLE] sendCommand FAILED: Device not in connected map'); throw new Error('Device not connected'); } + // Verify device is still connected + try { + const isConnected = await device.isConnected(); + if (!isConnected) { + console.error('[BLE] sendCommand FAILED: Device disconnected'); + this.connectedDevices.delete(deviceId); + throw new Error('Device disconnected'); + } + } catch (checkError: any) { + console.error('[BLE] Failed to check connection status:', checkError?.message); + throw new Error('Failed to verify connection'); + } + + // Generate unique transaction ID to prevent Android null pointer issues + const transactionId = `cmd_${Date.now()}_${Math.random().toString(36).substring(2, 9)}`; + return new Promise(async (resolve, reject) => { let responseReceived = false; - let response = ''; + let subscription: any = null; + let timeoutId: ReturnType | null = null; + + const cleanup = () => { + if (timeoutId) { + clearTimeout(timeoutId); + timeoutId = null; + } + if (subscription) { + console.log('[BLE] Cleaning up notification subscription'); + try { + subscription.remove(); + } catch (removeError) { + // Ignore errors during cleanup - device may already be disconnected + console.log('[BLE] Subscription cleanup error (ignored):', removeError); + } + subscription = null; + } + }; + + // Safe reject wrapper to handle null error messages (Android BLE crash fix) + const safeReject = (error: any) => { + if (responseReceived) return; + responseReceived = true; + cleanup(); + + // Ensure error has a valid message (fixes Android NullPointerException) + const errorMessage = error?.message || error?.reason || 'BLE operation failed'; + const errorCode = error?.errorCode || error?.code || 'BLE_ERROR'; + + reject(new Error(`[${errorCode}] ${errorMessage}`)); + }; try { - // Subscribe to notifications - device.monitorCharacteristicForService( + // Subscribe to notifications with explicit transactionId + console.log('[BLE] Setting up notification listener with transactionId:', transactionId); + subscription = device.monitorCharacteristicForService( BLE_CONFIG.SERVICE_UUID, BLE_CONFIG.CHAR_UUID, (error, characteristic) => { - if (error) { - if (!responseReceived) { - responseReceived = true; - reject(error); + // Wrap callback in try-catch to prevent crashes + try { + if (error) { + console.error('[BLE] Notification error:', { + message: error?.message || 'null', + errorCode: (error as any)?.errorCode || 'null', + reason: (error as any)?.reason || 'null', + }); + safeReject(error); + return; } - return; - } - if (characteristic?.value) { - const decoded = base64.decode(characteristic.value); - response = decoded; - responseReceived = true; - resolve(decoded); + if (characteristic?.value) { + const decoded = base64.decode(characteristic.value); + console.log('[BLE] Response received:', decoded.substring(0, 100)); + if (!responseReceived) { + responseReceived = true; + cleanup(); + resolve(decoded); + } + } + } catch (callbackError: any) { + console.error('[BLE] Callback exception:', callbackError?.message); + safeReject(callbackError); } - } + }, + transactionId // Explicit transaction ID prevents Android null pointer ); // Send command const encoded = base64.encode(command); + console.log('[BLE] Writing command to characteristic...'); await device.writeCharacteristicWithResponseForService( BLE_CONFIG.SERVICE_UUID, BLE_CONFIG.CHAR_UUID, encoded ); + console.log('[BLE] Command written successfully'); // Timeout - setTimeout(() => { + timeoutId = setTimeout(() => { if (!responseReceived) { - responseReceived = true; - reject(new Error('Command timeout')); + console.error('[BLE] Command timeout after', BLE_CONFIG.COMMAND_TIMEOUT, 'ms'); + safeReject(new Error('Command timeout')); } }, BLE_CONFIG.COMMAND_TIMEOUT); - } catch (error) { - reject(error); + } catch (error: any) { + console.error('[BLE] sendCommand exception:', { + message: error?.message, + errorCode: error?.errorCode, + }); + safeReject(error); } }); } async getWiFiList(deviceId: string): Promise { + console.log('[BLE] getWiFiList started for:', deviceId); + // Step 1: Unlock device + console.log('[BLE] Step 1: Unlocking device...'); const unlockResponse = await this.sendCommand(deviceId, BLE_COMMANDS.PIN_UNLOCK); + console.log('[BLE] Unlock response:', unlockResponse); if (!unlockResponse.includes('ok')) { + console.error('[BLE] Unlock FAILED - response does not contain "ok"'); throw new Error('Failed to unlock device'); } // Step 2: Get WiFi list + console.log('[BLE] Step 2: Getting WiFi list...'); const listResponse = await this.sendCommand(deviceId, BLE_COMMANDS.GET_WIFI_LIST); + console.log('[BLE] WiFi list response:', listResponse); // Parse response: "mac,XXXXXX|w|COUNT|SSID1,RSSI1|SSID2,RSSI2|..." const parts = listResponse.split('|'); diff --git a/services/ble/index.ts b/services/ble/index.ts index da8794c..2cb5ce1 100644 --- a/services/ble/index.ts +++ b/services/ble/index.ts @@ -1,17 +1,42 @@ // BLE Service entry point import * as Device from 'expo-device'; -import { RealBLEManager } from './BLEManager'; -import { MockBLEManager } from './MockBLEManager'; import { IBLEManager } from './types'; // Determine if BLE is available (real device vs simulator) export const isBLEAvailable = Device.isDevice; -// Export singleton instance -export const bleManager: IBLEManager = isBLEAvailable - ? new RealBLEManager() - : new MockBLEManager(); +// Lazy singleton - only create BLEManager when first accessed +let _bleManager: IBLEManager | null = null; + +function getBLEManager(): IBLEManager { + if (!_bleManager) { + console.log('[BLE] Creating BLEManager instance (lazy)...'); + // Dynamic import to prevent crash on Android startup + if (isBLEAvailable) { + const { RealBLEManager } = require('./BLEManager'); + _bleManager = new RealBLEManager(); + } else { + const { MockBLEManager } = require('./MockBLEManager'); + _bleManager = new MockBLEManager(); + } + } + return _bleManager!; // Non-null assertion - we just assigned it above +} + +// Proxy object that lazily initializes the real manager +export const bleManager: IBLEManager = { + scanDevices: () => getBLEManager().scanDevices(), + stopScan: () => getBLEManager().stopScan(), + connectDevice: (deviceId: string) => getBLEManager().connectDevice(deviceId), + disconnectDevice: (deviceId: string) => getBLEManager().disconnectDevice(deviceId), + isDeviceConnected: (deviceId: string) => getBLEManager().isDeviceConnected(deviceId), + sendCommand: (deviceId: string, command: string) => getBLEManager().sendCommand(deviceId, command), + getWiFiList: (deviceId: string) => getBLEManager().getWiFiList(deviceId), + setWiFi: (deviceId: string, ssid: string, password: string) => getBLEManager().setWiFi(deviceId, ssid, password), + getCurrentWiFi: (deviceId: string) => getBLEManager().getCurrentWiFi(deviceId), + rebootDevice: (deviceId: string) => getBLEManager().rebootDevice(deviceId), +}; // Re-export types export * from './types';