Skip to content
This repository was archived by the owner on Sep 15, 2021. It is now read-only.

$cordovaBLE improvements #1079

Merged
merged 3 commits into from
Dec 1, 2015
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
56 changes: 45 additions & 11 deletions src/mocks/ble.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
* A service for ble features
* in an app build with ngCordova.
**/
ngCordovaMocks.factory('$cordovaBLE', ['$q', '$timeout', function ($q, $timeout) {
ngCordovaMocks.factory('$cordovaBLE', ['$q', '$timeout', '$interval', '$log', function ($q, $timeout, $interval, $log) {
var deviceScan = {
name: 'Test Device',
id: 'AA:BB:CC:DD:EE:FF',
Expand Down Expand Up @@ -55,9 +55,31 @@ ngCordovaMocks.factory('$cordovaBLE', ['$q', '$timeout', function ($q, $timeout)

scan: function (services, seconds) {
var q = $q.defer();

// first notify about discovered device
$timeout(function () {
q.notify(deviceScan);
}, Math.round(seconds * 1000 * Math.random()));

// end scan
$timeout(function () {
q.resolve(deviceScan);
q.resolve();
}, seconds * 1000);

return q.promise;
},

startScan: function (services, callback, errorCallback) {
$timeout(function () {
callback(deviceScan);
}, Math.round(1000 * Math.random()));
},

stopScan: function () {
var q = $q.defer();
$timeout(function () {
q.resolve();
}, 500);
return q.promise;
},

Expand Down Expand Up @@ -93,26 +115,30 @@ ngCordovaMocks.factory('$cordovaBLE', ['$q', '$timeout', function ($q, $timeout)
return q.promise;
},

writeCommand: function (deviceID, serviceUUID, characteristicUUID, data) {
writeWithoutResponse: function (deviceID, serviceUUID, characteristicUUID, data) {
var q = $q.defer();
$timeout(function () {
q.resolve(true);
}, 100);
return q.promise;
},

notify: function (deviceID, serviceUUID, characteristicUUID) {
var q = $q.defer();
$timeout(function () {
q.resolve(true);
}, 100);
return q.promise;
writeCommand: function (deviceID, serviceUUID, characteristicUUID, data) {
$log.warning('writeCommand is deprecated, use writeWithoutResponse');
return this.writeWithoutResponse(deviceID, serviceUUID, characteristicUUID, data);
},

startNotification: function (deviceID, serviceUUID, characteristicUUID, callback, errorCallback) {
$interval(function () {
var data = new Uint8Array([Math.round(255 * Math.random())]); // one byte with random number
callback(data);
}, 200, 10); // repeat 10 times with 200 ms delay for each
},

indicate: function (deviceID, serviceUUID, characteristicUUID) {
stopNotification: function (deviceID, serviceUUID, characteristicUUID) {
var q = $q.defer();
$timeout(function () {
q.resolve(true);
q.resolve();
}, 100);
return q.promise;
},
Expand All @@ -123,6 +149,14 @@ ngCordovaMocks.factory('$cordovaBLE', ['$q', '$timeout', function ($q, $timeout)
return q.promise;
},

enable: function () {
var q = $q.defer();
$timeout(function () {
q.resolve();
}, 1500);
return q.promise;
},

isEnabled: function () {
var q = $q.defer();
q.resolve(true);
Expand Down
41 changes: 32 additions & 9 deletions src/plugins/ble.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
/* globals ble: true */
angular.module('ngCordova.plugins.ble', [])

.factory('$cordovaBLE', ['$q', '$timeout', function ($q, $timeout) {
.factory('$cordovaBLE', ['$q', '$timeout', '$log', function ($q, $timeout, $log) {

return {
scan: function (services, seconds) {
Expand All @@ -27,6 +27,20 @@ angular.module('ngCordova.plugins.ble', [])
return q.promise;
},

startScan: function (services, callback, errorCallback) {
return ble.startScan(services, callback, errorCallback);
},

stopScan: function () {
var q = $q.defer();
ble.stopScan(function () {
q.resolve();
}, function (error) {
q.reject(error);
});
return q.promise;
},

connect: function (deviceID) {
var q = $q.defer();
ble.connect(deviceID, function (result) {
Expand Down Expand Up @@ -67,39 +81,48 @@ angular.module('ngCordova.plugins.ble', [])
return q.promise;
},

writeCommand: function (deviceID, serviceUUID, characteristicUUID, data) {
writeWithoutResponse: function (deviceID, serviceUUID, characteristicUUID, data) {
var q = $q.defer();
ble.writeCommand(deviceID, serviceUUID, characteristicUUID, data, function (result) {
ble.writeWithoutResponse(deviceID, serviceUUID, characteristicUUID, data, function (result) {
q.resolve(result);
}, function (error) {
q.reject(error);
});
return q.promise;
},

startNotification: function (deviceID, serviceUUID, characteristicUUID) {
writeCommand: function (deviceID, serviceUUID, characteristicUUID, data) {
$log.warning('writeCommand is deprecated, use writeWithoutResponse');
return this.writeWithoutResponse(deviceID, serviceUUID, characteristicUUID, data);
},

startNotification: function (deviceID, serviceUUID, characteristicUUID, callback, errorCallback) {
return ble.startNotification(deviceID, serviceUUID, characteristicUUID, callback, errorCallback);
},

stopNotification: function (deviceID, serviceUUID, characteristicUUID) {
var q = $q.defer();
ble.startNotification(deviceID, serviceUUID, characteristicUUID, function (result) {
ble.stopNotification(deviceID, serviceUUID, characteristicUUID, function (result) {
q.resolve(result);
}, function (error) {
q.reject(error);
});
return q.promise;
},

stopNotification: function (deviceID, serviceUUID, characteristicUUID) {
isConnected: function (deviceID) {
var q = $q.defer();
ble.stopNotification(deviceID, serviceUUID, characteristicUUID, function (result) {
ble.isConnected(deviceID, function (result) {
q.resolve(result);
}, function (error) {
q.reject(error);
});
return q.promise;
},

isConnected: function (deviceID) {
enable: function () {
var q = $q.defer();
ble.isConnected(deviceID, function (result) {
ble.enable(function (result) {
q.resolve(result);
}, function (error) {
q.reject(error);
Expand Down