UNPKG

nativescript-akylas-bluetooth

Version:

Connect to and interact with Bluetooth LE peripherals

155 lines 6.32 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var android_main_1 = require("./android_main"); var common_1 = require("../common"); var TNS_ScanCallback = (function (_super) { __extends(TNS_ScanCallback, _super); function TNS_ScanCallback() { var _this = _super.call(this) || this; return global.__native(_this); } TNS_ScanCallback.prototype.onInit = function (owner) { this.owner = owner; common_1.CLog(common_1.CLogTypes.info, "TNS_ScanCallback.onInit ---- this.owner: " + this.owner); }; TNS_ScanCallback.prototype.onBatchScanResults = function (results) { common_1.CLog(common_1.CLogTypes.info, "TNS_ScanCallback.onBatchScanResults ---- results: " + results); }; TNS_ScanCallback.prototype.onScanFailed = function (errorCode) { common_1.CLog(common_1.CLogTypes.info, "TNS_ScanCallback.onScanFailed ---- errorCode: " + errorCode); var errorMessage; if (errorCode === android.bluetooth.le.ScanCallback.SCAN_FAILED_ALREADY_STARTED) { errorMessage = 'Scan already started'; } else if (errorCode === android.bluetooth.le.ScanCallback.SCAN_FAILED_APPLICATION_REGISTRATION_FAILED) { errorMessage = 'Application registration failed'; } else if (errorCode === android.bluetooth.le.ScanCallback.SCAN_FAILED_FEATURE_UNSUPPORTED) { errorMessage = 'Feature unsupported'; } else if (errorCode === android.bluetooth.le.ScanCallback.SCAN_FAILED_INTERNAL_ERROR) { errorMessage = 'Internal error'; } else { errorMessage = 'Scan failed to start'; } common_1.CLog(common_1.CLogTypes.info, "TNS_ScanCallback.onScanFailed errorMessage: " + errorMessage); }; TNS_ScanCallback.prototype.onScanResult = function (callbackType, result) { common_1.CLog(common_1.CLogTypes.info, "TNS_ScanCallback.onScanResult ---- callbackType: " + callbackType + ", result: " + result); var stateObject = this.owner.get().connections[result.getDevice().getAddress()]; if (!stateObject) { stateObject = this.owner.get().connections[result.getDevice().getAddress()] = { state: 'disconnected' }; } var advertismentData = new ScanAdvertisment(result.getScanRecord()); var payload = { type: 'scanResult', UUID: result.getDevice().getAddress(), name: result.getDevice().getName(), RSSI: result.getRssi(), localName: advertismentData.localName, state: 'disconnected', manufacturerId: advertismentData.manufacturerId, advertismentData: advertismentData }; this.onPeripheralDiscovered && this.onPeripheralDiscovered(payload); this.owner.get().sendEvent(android_main_1.Bluetooth.device_discovered_event, payload); }; TNS_ScanCallback = __decorate([ JavaProxy('com.nativescript.TNS_ScanCallback'), __metadata("design:paramtypes", []) ], TNS_ScanCallback); return TNS_ScanCallback; }(android.bluetooth.le.ScanCallback)); exports.TNS_ScanCallback = TNS_ScanCallback; var ScanAdvertisment = (function () { function ScanAdvertisment(scanRecord) { this.scanRecord = scanRecord; } Object.defineProperty(ScanAdvertisment.prototype, "manufacturerData", { get: function () { var data = this.scanRecord.getManufacturerSpecificData(); var size = data.size(); if (size > 0) { var mKey = data.keyAt(0); return android_main_1.byteArrayToBuffer(data.get(mKey)); } return undefined; }, enumerable: true, configurable: true }); Object.defineProperty(ScanAdvertisment.prototype, "data", { get: function () { return android_main_1.byteArrayToBuffer(this.scanRecord.getBytes()); }, enumerable: true, configurable: true }); Object.defineProperty(ScanAdvertisment.prototype, "manufacturerId", { get: function () { var data = this.scanRecord.getManufacturerSpecificData(); var size = data.size(); if (size > 0) { return data.keyAt(0); } return -1; }, enumerable: true, configurable: true }); Object.defineProperty(ScanAdvertisment.prototype, "txPowerLevel", { get: function () { return this.scanRecord.getTxPowerLevel(); }, enumerable: true, configurable: true }); Object.defineProperty(ScanAdvertisment.prototype, "localName", { get: function () { return this.scanRecord.getDeviceName(); }, enumerable: true, configurable: true }); Object.defineProperty(ScanAdvertisment.prototype, "flags", { get: function () { return this.scanRecord.getAdvertiseFlags(); }, enumerable: true, configurable: true }); Object.defineProperty(ScanAdvertisment.prototype, "uuids", { get: function () { var result = []; var serviceUuids = this.scanRecord.getServiceUuids(); for (var i = 0; i < serviceUuids.size(); i++) { result.push(android_main_1.uuidToString(serviceUuids[i])); } return result; }, enumerable: true, configurable: true }); Object.defineProperty(ScanAdvertisment.prototype, "serviceData", { get: function () { var result = {}; var serviceData = this.scanRecord.getServiceData(); if (serviceData.size() > 0) { var entries = serviceData.entrySet().iterator(); while (entries.hasNext()) { var entry = entries.next(); result[android_main_1.uuidToString(entry.getKey())] = android_main_1.byteArrayToBuffer(entry.getValue()); } } return result; }, enumerable: true, configurable: true }); return ScanAdvertisment; }()); exports.ScanAdvertisment = ScanAdvertisment; //# sourceMappingURL=TNS_ScanCallback.js.map