diff options
Diffstat (limited to 'src/js')
-rw-r--r-- | src/js/app.js | 6 | ||||
-rw-r--r-- | src/js/bluetooth.js | 74 | ||||
-rw-r--r-- | src/js/wifi.js | 34 |
3 files changed, 101 insertions, 13 deletions
diff --git a/src/js/app.js b/src/js/app.js index 8e80039..ed7b028 100644 --- a/src/js/app.js +++ b/src/js/app.js @@ -1,8 +1,12 @@ import { init as init_bluetooth } from './bluetooth'; +import { init as init_wifi } from './wifi'; import { api } from 'agl-js-api'; export function init() { api.init(); init_bluetooth(); -}
\ No newline at end of file + // init_wifi(); +} + +window.api = api;
\ No newline at end of file diff --git a/src/js/bluetooth.js b/src/js/bluetooth.js index 679ef0b..30c2d82 100644 --- a/src/js/bluetooth.js +++ b/src/js/bluetooth.js @@ -1,8 +1,10 @@ import { bluetooth } from 'agl-js-api'; import Mustache from 'mustache'; -var isPowered = false; +window.bluetooth = bluetooth; + var template; +var filterBy = 'available'; function update_state(state) { var control = document.getElementById('BluetoothControl'); @@ -14,12 +16,27 @@ function update_state(state) { } function update_devices(devices) { - console.log('update_devices', devices); var deviceList = document.getElementById('BluetoothContainer'); deviceList.innerHTML = ''; devices.forEach(function(device) { - deviceList.innerHTML += Mustache.render(template, device); + if ( filterBy === 'connected' && device.properties.connected ) { + deviceList.innerHTML += Mustache.render(template, device); + } else if ( filterBy === 'paired' && + device.properties.paired && + !device.properties.connected ) { + deviceList.innerHTML += Mustache.render(template, device); + } else if ( filterBy === 'available' & + !device.properties.connected && + !device.properties.paired) { + deviceList.innerHTML += Mustache.render(template, device); + } + }); +} + +function refresh_devices() { + bluetooth.managed_objects().then(function(result){ + update_devices(result.devices); }); } @@ -34,17 +51,50 @@ export function toggle() { export function init() { template = document.getElementById('bluetooth-device-template').innerHTML; Mustache.parse(template); - bluetooth.adapter_state().then(update_state); + bluetooth.adapter_state({ + discovery: true + }).then(update_state); + refresh_devices(); - bluetooth.managed_objects().then(function(result){ - update_devices(result.devices); + // This code has been commented to improve performance + // bluetooth.on_device_changes(function(data) { + // bluetooth.managed_objects().then(function(result){ + // update_devices(result.devices); + // }); + // }).then(function(result) { + // console.log('SUBSCRIBED TO DEVICE CHANGES'); + // }); +} + +export function filter(filter) { + filterBy = filter; + refresh_devices(); +} + +export function getFilter() { + return filterBy; +} + +export function remove(deviceId) { + bluetooth.remove_device(deviceId).then(function() { + refresh_devices(); + }); +} + +export function pair(deviceId) { + bluetooth.pair(deviceId).then(function() { + refresh_devices(); }); +} + +export function connect(deviceId) { + bluetooth.connect(deviceId).then(function() { + refresh_devices(); + }); +} - bluetooth.on_device_changes(function(data) { - bluetooth.managed_objects().then(function(result){ - update_devices(result.devices); - }); - }).then(function(result) { - console.log('SUBSCRIBED TO DEVICE CHANGES'); +export function disconnect(deviceId) { + bluetooth.disconnect(deviceId).then(function() { + refresh_devices(); }); }
\ No newline at end of file diff --git a/src/js/wifi.js b/src/js/wifi.js new file mode 100644 index 0000000..35e7235 --- /dev/null +++ b/src/js/wifi.js @@ -0,0 +1,34 @@ +import { network } from 'agl-js-api'; +import Mustache from 'mustache'; + +var template; + + +function update_devices(devices) { + console.log('update_devices', devices); + var deviceList = document.getElementById('WifiContainer'); + deviceList.innerHTML = ''; + + devices.forEach(function(device) { + if( device.properties.type === 'wifi' ) { + deviceList.innerHTML += Mustache.render(template, device); + } + }); +} + +export function init() { + template = document.getElementById('wifi-device-template').innerHTML; + Mustache.parse(template); + + setInterval(function() { + network.services().then(function(result) { + update_devices(result.values); + }) + }, 10000); + + network.on_global_state(function(result) { + console.log('on_global_state', result); + }).then(function(){ + console.log('SUBSCRIBED', 'on_global_state'); + }); +}
\ No newline at end of file |