nativescript-akylas-bluetooth
Version:
Connect to and interact with Bluetooth LE peripherals
155 lines • 6.32 kB
JavaScript
;
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