2 * Copyright (c) 2013, Intel Corporation.
4 * This program is licensed under the terms and conditions of the
5 * Apache License, version 2.0. The full text of the Apache License is at
6 * http://www.apache.org/licenses/LICENSE-2.0
11 var settings = settings || {};
12 settings.bluetooth = settings.bluetooth || {};
15 settings.bluetooth = (function() {
17 var default_adapter = null;
20 var BluetoothAdapter = function(adapter) {
21 this.bt_adapter = adapter;
22 this.name = adapter.name;
23 this.powered = adapter.powered;
24 this.visible = adapter.visible;
27 BluetoothAdapter.prototype.setPowered = function(powered, success_cb, error_cb) {
28 if (this.bt_adapter === undefined) return;
33 this.bt_adapter.setPowered(true, function() {
34 self.powered = self.bt_adapter.powered;
37 self.powered = self.bt_adapter.powered;
42 this.bt_adapter.setPowered(false, function() {
43 self.powered = self.bt_adapter.powered;
46 self.powered = self.bt_adapter.powered;
52 BluetoothAdapter.prototype.setVisible = function(visible, success_cb, error_cb) {
53 if (this.bt_adapter === undefined || !this.bt_adapter.powered) return;
55 console.log('settings.bluetooth - Failed to set bluetooth visibility - not supported');
58 BluetoothAdapter.prototype.startScanDevices = function(success_cb, error_cb) {
59 if (this.bt_adapter === undefined || !this.bt_adapter.powered) return;
61 this.bt_adapter.discoverDevices({
62 onstarted: success_cb.onstarted,
63 ondevicefound: function(device) {
64 success_cb.ondevicefound(new BluetoothDevice(device));
66 ondevicedisappeared: success_cb.ondevicedisappeared,
67 onfinished: function(devices) {
69 for (var i = 0; i < devices.length; i++) {
70 arr.push(new BluetoothDevice(devices[i]));
72 success_cb.onfinished(arr);
77 BluetoothAdapter.prototype.stopScanDevices = function(success_cb, error_cb) {
78 if (this.bt_adapter === undefined || !this.bt_adapter.powered) return;
80 this.bt_adapter.stopDiscovery(success_cb, error_cb);
83 BluetoothAdapter.prototype.pairDevice = function(device_address, success_cb, error_cb) {
84 if (this.bt_adapter === undefined || !this.bt_adapter.powered) return;
86 this.bt_adapter.createBonding(device_address, success_cb, error_cb);
89 BluetoothAdapter.prototype.unpairDevice = function(device_address, success_cb, error_cb) {
90 if (this.bt_adapter === undefined || !this.bt_adapter.powered) return;
92 this.bt_adapter.destroyBonding(device_address, success_cb, error_cb);
96 var BluetoothDevice = function(device) {
97 this.bt_device = device;
98 this.name = device.name;
99 this.address = device.address;
100 this.paired = device.isBonded;
101 this.connected = device.isConnected;
104 function enableBluetooth(success_cb, error_cb) {
105 wsAPI.sendRequest(WS_REQUEST_TYPE.BLUETOOTH, 'enable', true, success_cb, function(e) {
106 if (e.indexOf('Already enabled') >= 0) {
107 console.log('bluetooth subsystem already enabled');
115 function disableBluetooth(success_cb, error_cb) {
116 wsAPI.sendRequest(WS_REQUEST_TYPE.BLUETOOTH, 'enable', false, success_cb, function(e) {
117 if (e.indexOf('Already disabled') >= 0) {
118 console.log('bluetooth subsystem already disabled');
126 function getDefaultAdapter() {
128 if (tizen.bluetooth.getDefaultAdapter() == null) {
130 } else if (default_adapter == null) {
131 default_adapter = new BluetoothAdapter(tizen.bluetooth.getDefaultAdapter());
133 return default_adapter;
135 console.error('Tizen web api missing ' + e);
141 BluetoothAdapter: BluetoothAdapter,
142 BluetoothDevice: BluetoothDevice,
143 getDefaultAdapter: getDefaultAdapter