VulpesOS/assets/webapps/uitest.gaiamobile.org/js/HW/bluetooth.js
OverSu b38dea0597 Publish Vulpes Preview 15 sources for desktop, Android and Tundra
Share Gaia assets and adapters, keep private profiles and development documents local, and update both public READMEs.
2026-09-30 23:13:03 +02:00

99 lines
3 KiB
JavaScript

'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);