UNPKG

ttlock-sdk-js

Version:

JavaScript port of the TTLock Android SDK

78 lines (77 loc) 2.67 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.NobleService = void 0; const NobleCharacteristic_1 = require("./NobleCharacteristic"); class NobleService { constructor(device, service) { this.characteristics = new Map(); this.device = device; this.service = service; this.uuid = service.uuid; this.name = service.name; this.type = service.type; this.includedServiceUuids = service.includedServiceUuids; // also add characteristics if they exist if (service.characteristics && service.characteristics.length > 0) { this.characteristics = new Map(); service.characteristics.forEach((characteristic) => { const c = new NobleCharacteristic_1.NobleCharacteristic(this.device, characteristic); this.characteristics.set(c.getUUID(), c); }); } } getUUID() { if (this.uuid.length > 4) { return this.uuid.replace("-0000-1000-8000-00805f9b34fb", "").replace("0000", ""); } return this.uuid; } async discoverCharacteristics() { try { this.characteristics = new Map(); this.device.checkBusy(); const characteristics = await this.service.discoverCharacteristicsAsync(); this.device.resetBusy(); characteristics.forEach((characteristic) => { const c = new NobleCharacteristic_1.NobleCharacteristic(this.device, characteristic); this.characteristics.set(c.getUUID(), c); }); return this.characteristics; } catch (error) { console.error(error); this.device.resetBusy(); return new Map(); } } async readCharacteristics() { if (this.characteristics.size == 0) { await this.discoverCharacteristics(); } for (let [uuid, characteristic] of this.characteristics) { await characteristic.read(); } return this.characteristics; } toJSON(asObject) { let json = { uuid: this.uuid, name: this.name, type: this.type, characteristics: {} }; this.characteristics.forEach((characteristic) => { json.characteristics[characteristic.uuid] = characteristic.toJSON(true); }); if (asObject) { return json; } else { return JSON.stringify(json); } } toString() { return this.service.toString(); } } exports.NobleService = NobleService;