randdusing / ng-cordova-bluetoothle

Angular 1.x wrapper for the PhoneGap/Cordova Bluetooth Low Energy Plugin
Other
47 stars 34 forks source link

ng-cordova-bluetoothle

This wraps the Bluetooth Low Energy Phonegap Plugin by Rand Dusing in AngularJS code so it can be used more easily in AngularJS mobile applications.

Issues

Please only create issues that are directly related to ng-cordova-bluetoothle! If it's not an Angular/Javascript issue, create the issue in the cordova-plugin-bluetoothle repo!

Installation

Example App

An example app has been created using the Ionic Framework to demonstrate the functionality. To install the example app, follow the steps below:

Example Usage

A few examples, but the example app is your best resource.

Initialize

  $cordovaBluetoothLE.initialize({request:true}).then(null,
    function(obj) {
      //Handle errors
    },
    function(obj) {
      //Handle successes
    }
  );

Initialize uses the notify callback to keep track of changes in the Bluetooth state (on/off).

Scan

  $cordovaBluetoothLE.startScan({services:[]}).then(null,
    function(obj) {
      //Handle errors
      console.log(obj.message);
    },
    function(obj) {
      if (obj.status == "scanResult")
      {
        //Device found
      }
      else if (obj.status == "scanStarted")
      {
        //Scan started
      }
    }
  );

Scan uses the notify callback as well since multiple scanned devices may be returned.

Connect

  $cordovaBluetoothLE.connect({address:"ABCDEFG"}).then(null,
    function(obj) {
      //Handle errors
      console.log(obj.message);
    },
    function(obj) {
      if (obj.status == "connected") {
        //Device connected
      } else {
        //Device disconnected, handle this unexpected disconnect
      }
    }
  );

Connect uses the notify callback as well since the connection state may change. See useResolve option below for resolve vs notify.

Available Functions

For details on each function, please visit https://github.com/randdusing/cordova-plugin-bluetoothle. A few methods require you wait for notify rather than resolve since the callback may be called multiple times: intialize, startScan, connect, reconnect, disconnect, subscribe. Enable and disable only wait for error since the "success" is returned to the initialize

Options

Examples

Some examples are provided to help demonstrate different common scenarios. Looking for more examples? Let me know!

Queueing Operations

Example of how you could queue up three read operations.

  $cordovaBluetoothLE.read(params1).then(function() { //Read 1
    return $cordovaBluetoothLE.read(params2); //Read 2
  }).then(function() {
    return $cordovaBluetoothLE.read(params3); //Read 3
  }).catch(function(err) {
    console.log(err); //Catch any errors
  });

Have a question or found a bug?

Open an issue.

Resources

AngularJS - http://www.angularjs.org

Apache Cordova - http://cordova.apache.org

License and Source

The code that powers the 'build generation' is a carbon copy (with minimal changes) of Nic Raboy's ngCordovaBeacon project. As of the Fork, it was licensed under the MIT license; The Cordova Wrapper was written by myself, and my employer and I retain the copyright for that; but this project is also licensed under the MIT License.

If you want to follow more of Nic's work, his blog is located here. If you want to know more about me or Jewelbots, you can follow Jewelbots on twitter, our Ink, or me.

Contributing

Rand Dusing - Primary author of the Cordova Bluetooth LE Plugin. You can contact me via: randdusing@gmail.com, Facebook, LinkedIn or Twitter.