summaryrefslogtreecommitdiffstats
path: root/src/js/bluetooth.js
diff options
context:
space:
mode:
Diffstat (limited to 'src/js/bluetooth.js')
-rw-r--r--src/js/bluetooth.js74
1 files changed, 62 insertions, 12 deletions
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