Add new UI.spinner and UI.overlay usage in intval.mobile.js.

Fix reset, restart and update process over BLE.
Hide disconnection errors and instead automatically reset BLE UI when disconnect occurs.
This commit is contained in:
mmcwilliams 2018-02-12 13:59:21 -05:00
parent fd0ad6f063
commit 7a98dc11ea
1 changed files with 56 additions and 15 deletions

View File

@ -24,11 +24,13 @@ mobile.wifi = {
};
mobile.ble.scan = function () {
spinnerShow();
UI.overlay.show();
UI.spinner.show();
ble.scan([], 5, mobile.ble.onDiscover, mobile.ble.onError);
mobile.ble.devices = [];
setTimeout(() => {
spinnerHide();
UI.spinner.hide();
UI.overlay.hide();
if (!mobile.ble.connected) {
alert('No INTVAL devices found.');
settingsPage();
@ -62,7 +64,8 @@ mobile.ble.onConnect = function (peripheral, device) {
const disconnect = document.getElementById('disconnect');
const scan = document.getElementById('scan');
spinnerHide();
UI.spinner.hide();
UI.overlay.hide();
console.log(`BLE - Connected to ${device.id}`);
console.log(peripheral);
console.dir(device);
@ -111,7 +114,21 @@ mobile.ble.onDisconnect = function (res) {
};
mobile.ble.onError = function (err) {
alert(JSON.stringify(err));
console.dir(err);
if (err.errorMessage && err.errorMessage === 'Peripheral Disconnected') {
console.log('Device disconnected');
mobile.ble.disconnect()
} else {
alert(JSON.stringify(err));
}
/*
Object
errorDescription: "The specified device has disconnected from us."
errorMessage: "Peripheral Disconnected"
id: "E8EF4B8B-0B5E-4E96-B337-E878DB1E3C4B"
name: "intval3_b827ebc7461d"
*/
};
mobile.init = function () {
@ -128,12 +145,15 @@ mobile.init = function () {
window.setDelay = mobile.setDelay;
window.setCounter = mobile.setCounter;
window.sequence = mobile.sequence;
window.reset = mobile.reset;
window.restart = mobile.restart;
window.update = mobile.update;
//show ble-specific fields in settings
for (let i of bleInputs) {
i.classList.add('active');
}
spinnerInit();
UI.spinner.init()
mobile.ble.scan();
mobile.cameraValues();
@ -315,7 +335,8 @@ mobile.sequenceSuccess = function () {
//retreive object with list of available Wifi APs,
//and state of current connection, if available
mobile.getWifi = function () {
spinnerShow();
UI.overlay.show();
UI.spinner.show();
ble.read(mobile.ble.device.id,
mobile.ble.SERVICE_ID,
mobile.ble.WIFI_ID,
@ -332,7 +353,8 @@ mobile.getWifiSuccess = function (data) {
let str = bytesToString(data);
let res = JSON.parse(str);
spinnerHide();
UI.spinner.hide();
UI.overlay.hide();
elem.innerHTML = ''
if (!res.available || res.available.length === 0) {
if (elem.classList.contains('active')) {
@ -407,7 +429,8 @@ mobile.setWifi = function () {
ssid : ssid,
pwd : pwd
}
spinnerShow();
UI.overlay.show();
UI.spinner.show();
if (ssid === '' || ssid === null || ssid === undefined) {
return alert('Cannot set wireless credentials with a blank SSID');
}
@ -426,7 +449,8 @@ mobile.setWifi = function () {
};
mobile.setWifiSuccess = function () {
spinnerHide();
UI.spinner.hide();
UI.overlay.hide();
console.log('Set new wifi credentials');
setTimeout(mobile.getWifi, 100);
};
@ -614,14 +638,16 @@ mobile.reset = function () {
mobile.resetSuccess = function () {
console.log('Reset to default settings');
mobile.getState();
setTimeout(() => {
mobile.getState();
}, 20)
};
mobile.update = function () {
const reset = confirm(`Check for updates? You will be disconnected from the INTVAL3 during this process.`);
if (!reset) return false;
const update = confirm(`Check for updates? You will be disconnected from the INTVAL3 during this process.`);
if (!update) return false;
let opts = {
type : 'reset'
type : 'update'
};
ble.write(mobile.ble.device.id,
mobile.ble.SERVICE_ID,
@ -632,10 +658,25 @@ mobile.update = function () {
};
mobile.updateSuccess = function () {
alert()
console.log('Finished updating firmware, restarting...');
};
mobile.restart = function () {}
mobile.restart = function () {
const restart = confirm(`Restart the INTVAL3? You will be disconnected from it during this process.`);
if (!restart) return false;
let opts = {
type : 'restart'
};
ble.write(mobile.ble.device.id,
mobile.ble.SERVICE_ID,
mobile.ble.CHAR_ID,
stringToBytes(JSON.stringify(opts)),
mobile.restartSuccess,
mobile.ble.onError);
};
mobile.restartSuccess = function () {
console.log('Restarting... ');
}
/**
* Mobile helper functions