Share Gaia assets and adapters, keep private profiles and development documents local, and update both public READMEs.
99 lines
3 KiB
JavaScript
Executable file
99 lines
3 KiB
JavaScript
Executable file
'use strict';
|
|
|
|
function bluetoothTest() {
|
|
var bluetooth = window.navigator.mozBluetooth;
|
|
var settings = window.navigator.mozSettings;
|
|
var switchButton = document.getElementById('switch');
|
|
var state = document.getElementById('state');
|
|
var address = document.getElementById('address');
|
|
var version = document.getElementById('version');
|
|
var btHelper = new BluetoothHelper();
|
|
|
|
function update() {
|
|
var req = settings.createLock().get('bluetooth.enabled');
|
|
req.onsuccess = function() {
|
|
var isBluetoothEnabled = req.result['bluetooth.enabled'];
|
|
switchButton.checked = isBluetoothEnabled;
|
|
if (!isBluetoothEnabled) {
|
|
state.innerHTML = 'Off';
|
|
address.innerHTML = 'unknown';
|
|
}
|
|
else {
|
|
state.innerHTML = 'On';
|
|
if (!btHelper.v2) {
|
|
btHelper.getAddress(function bt_gotAddress(addr) {
|
|
if (isBluetoothEnabled) {
|
|
address.innerHTML = addr;
|
|
}
|
|
});
|
|
}
|
|
}
|
|
};
|
|
}
|
|
|
|
// Click on switch will only update settings and
|
|
// it takes some time for bluetooth hardware to turns on.
|
|
// That's why we should listen to 'enabled' event of bluetooth
|
|
function bluetoothSwitch() {
|
|
settings.createLock().set({'bluetooth.enabled': switchButton.checked});
|
|
// set enabled stat for BT APIv2
|
|
if (switchButton.checked) {
|
|
btHelper.enable();
|
|
} else {
|
|
btHelper.disable();
|
|
}
|
|
}
|
|
|
|
if (btHelper.v2) {
|
|
version.textContent = "v2";
|
|
bluetooth.addEventListener('attributechanged', (evt) => {
|
|
for (var i in evt.attrs) {
|
|
switch (evt.attrs[i]) {
|
|
case 'defaultAdapter':
|
|
var adapter = bluetooth.defaultAdapter;
|
|
if (adapter.address) { // for default On case
|
|
address.innerHTML = adapter.address;
|
|
}
|
|
adapter.addEventListener('attributechanged', (evt) => {
|
|
for (var i in evt.attrs) {
|
|
switch (evt.attrs[i]) {
|
|
case 'state':
|
|
if (adapter.state === 'enabled') {
|
|
switchButton.checked = true;
|
|
state.innerHTML = 'On';
|
|
} else if (adapter.state === 'disabled') {
|
|
switchButton.checked = false;
|
|
state.innerHTML = 'Off';
|
|
address.innerHTML = 'unknown';
|
|
}
|
|
break;
|
|
case 'address':
|
|
address.innerHTML = adapter.address;
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
});
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
});
|
|
} else {
|
|
version.textContent = "v1";
|
|
bluetooth.addEventListener('adapteradded', update);
|
|
bluetooth.addEventListener('enabled', update);
|
|
bluetooth.addEventListener('disabled', update);
|
|
}
|
|
|
|
// init
|
|
switchButton.addEventListener('click', bluetoothSwitch);
|
|
|
|
// Update bluetooth information in the first load
|
|
update();
|
|
}
|
|
|
|
window.addEventListener('load', bluetoothTest);
|
|
|