From 062feb3134b5c02587c9fddcd208e2f23e2037a7 Mon Sep 17 00:00:00 2001 From: seizu Date: Fri, 13 Sep 2024 13:29:58 +0200 Subject: [PATCH 1/3] GattServer.getUUIDbyHandle added --- src/GattServer.js | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/src/GattServer.js b/src/GattServer.js index 47dc160..ee30af3 100644 --- a/src/GattServer.js +++ b/src/GattServer.js @@ -54,6 +54,38 @@ class GattServer { throw new Error('Service not available') } + + /** + * Find the service UUID and characteristic UUID based on a characteristic handle + * @param {number} charHandle + * @returns {} + */ + async getUUIDbyHandle(charHandle) { + const handle = charHandle - 1; + const handleStr = 'char' + handle.toString(16).padStart(4, '0'); + + for (const key in this.dbus._matchRules) { + if (key.includes(handleStr)) { + const match = key.match(/service[0-9a-fA-F]+/); + if (match) { + const service = match[0]; + const services = this._services; + for (const skey in services) { + if (services[skey].service === service) { + const characteristics = services[skey]._characteristics; + for (const ckey in characteristics) { + if (characteristics[ckey].characteristic === handleStr) { + return { 'service': skey, 'char': ckey }; + } + } + return null; + } + } + } + } + } + return null; + } } module.exports = GattServer From 435be4a492f84ff95d1c0b728aa4a025ad2a3a33 Mon Sep 17 00:00:00 2001 From: seizu Date: Mon, 7 Oct 2024 23:45:35 +0200 Subject: [PATCH 2/3] jsdoc fixed --- src/GattServer.js | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/src/GattServer.js b/src/GattServer.js index ee30af3..e940812 100644 --- a/src/GattServer.js +++ b/src/GattServer.js @@ -54,38 +54,38 @@ class GattServer { throw new Error('Service not available') } - + /** * Find the service UUID and characteristic UUID based on a characteristic handle * @param {number} charHandle - * @returns {} + * @returns {Object|null} */ - async getUUIDbyHandle(charHandle) { - const handle = charHandle - 1; - const handleStr = 'char' + handle.toString(16).padStart(4, '0'); + async getUUIDbyHandle (charHandle) { + const handle = charHandle - 1 + const handleStr = 'char' + handle.toString(16).padStart(4, '0') for (const key in this.dbus._matchRules) { if (key.includes(handleStr)) { - const match = key.match(/service[0-9a-fA-F]+/); + const match = key.match(/service[0-9a-fA-F]+/) if (match) { - const service = match[0]; - const services = this._services; + const service = match[0] + const services = this._services for (const skey in services) { if (services[skey].service === service) { - const characteristics = services[skey]._characteristics; + const characteristics = services[skey]._characteristics for (const ckey in characteristics) { if (characteristics[ckey].characteristic === handleStr) { - return { 'service': skey, 'char': ckey }; + return { service: skey, char: ckey } } } - return null; + return null } } } } } - return null; - } + return null + } } module.exports = GattServer From f12c96e03231af08cbec3aaa298cc7d491f53864 Mon Sep 17 00:00:00 2001 From: seizu Date: Fri, 30 Jan 2026 03:38:43 +0100 Subject: [PATCH 3/3] ble node added --- node-red-contrib-ble-rw.zip | Bin 0 -> 3685 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 node-red-contrib-ble-rw.zip diff --git a/node-red-contrib-ble-rw.zip b/node-red-contrib-ble-rw.zip new file mode 100644 index 0000000000000000000000000000000000000000..b923e6808a1ec863795f38a27ca6d13888fff581 GIT binary patch literal 3685 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