Skip to content

Commit

Permalink
feat(serial): add Serial plugin (#952)
Browse files Browse the repository at this point in the history
* style: fix whitespace lint issue

* feat(serial): add serial plugin

* docs(serial): remove unnecessary comments
  • Loading branch information
makearl authored and ihadeed committed Jan 20, 2017
1 parent 1279114 commit ac748ab
Show file tree
Hide file tree
Showing 2 changed files with 114 additions and 0 deletions.
3 changes: 3 additions & 0 deletions src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -98,6 +98,7 @@ import { Rollbar } from './plugins/rollbar';
import { SafariViewController } from './plugins/safari-view-controller';
import { Screenshot } from './plugins/screenshot';
import { SecureStorage } from './plugins/securestorage';
import { Serial } from './plugins/serial';
import { Shake } from './plugins/shake';
import { Sim } from './plugins/sim';
import { SMS } from './plugins/sms';
Expand Down Expand Up @@ -219,6 +220,7 @@ export * from './plugins/safari-view-controller';
export * from './plugins/screen-orientation';
export * from './plugins/screenshot';
export * from './plugins/securestorage';
export * from './plugins/serial';
export * from './plugins/shake';
export * from './plugins/sim';
export * from './plugins/sms';
Expand Down Expand Up @@ -339,6 +341,7 @@ window['IonicNative'] = {
SafariViewController,
Screenshot,
SecureStorage,
Serial,
Shake,
Sim,
SMS,
Expand Down
111 changes: 111 additions & 0 deletions src/plugins/serial.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,111 @@
import { Plugin, Cordova } from './plugin';
import { Observable } from 'rxjs/Observable';

declare var serial: any;

export interface SerialPermissionOptions {
vid: string;
pid: string;
driver: string;
}

export interface SerialOpenOptions {
baudRate: number;
}

/**
* @name Serial
* @description
* This plugin provides functions for working with Serial connections
*
* @usage
*
* ```
* import { Serial } from 'ionic-native';
*
* Serial.requestPermission({
* vid: '0403',
* pid: '6001',
* driver: 'FtdiSerialDriver'
* }).then(() => {
* Serial.open({
* baudRate: 38400
* }).then(() => {
* console.log('Serial connection opened');
* });
* }).catch((error: any) => console.log(error));
*
* ```
*/
@Plugin({
pluginName: 'Serial',
plugin: 'cordovarduino',
pluginRef: 'serial',
repo: 'https://github.com/xseignard/cordovarduino',
platforms: ['Android']
})
export class Serial {

/**
* Request permission to connect to a serial device
*
* @param options {SerialPermissionOptions} Options used to request serial permissions
* @return {Promise<any>} Returns a promise that resolves when permissions are granted
*/
@Cordova()
static requestPermission(options: SerialPermissionOptions): Promise<any> { return; }

/**
* Open connection to a serial device
*
* @param options {SerialOpenOptions} Options used to open serial connection
* @return {Promise<any>} Returns a promise that resolves when the serial connection is opened
*/
@Cordova()
static open(options: SerialOpenOptions): Promise<any> { return; }

/**
* Write to a serial connection
*
* @param data {any} data to write to the serial connection
* @return {Promise<any>} Returns a promise that resolves when the write is complete
*/
@Cordova()
static write(data: any): Promise<any> { return; }

/**
* Write hex to a serial connection
*
* @param data {any} data to write to the serial connection
* @return {Promise<any>} Returns a promise that resolves when the write is complete
*/
@Cordova()
static writeHex(data: any): Promise<any> { return; }

/**
* Read from a serial connection
*
* @return {Promise<any>} Returns a promise that resolves with data read from the serial connection
*/
@Cordova()
static read(): Promise<any> { return; }

/**
* Watch the incoming data from the serial connection. Clear the watch by unsubscribing from the observable
*
* @returns {Observable<any>} Observable returns an observable that you can subscribe to
*/
@Cordova({
observable: true
})
static registerReadCallback(): Observable<any> { return; }

/**
* Close the serial connection
*
* @return {Promise<any>} Returns a promise that resolves when the serial connection is closed
*/
@Cordova()
static close(): Promise<any> { return; }

}

0 comments on commit ac748ab

Please sign in to comment.