From ac748abf789d2732a9a335f8fb2ba7c64f661fc3 Mon Sep 17 00:00:00 2001 From: Megan Kearl Date: Fri, 20 Jan 2017 15:16:12 -0600 Subject: [PATCH] feat(serial): add Serial plugin (#952) * style: fix whitespace lint issue * feat(serial): add serial plugin * docs(serial): remove unnecessary comments --- src/index.ts | 3 ++ src/plugins/serial.ts | 111 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 114 insertions(+) create mode 100644 src/plugins/serial.ts diff --git a/src/index.ts b/src/index.ts index c0fdeff2a..f22e8c711 100644 --- a/src/index.ts +++ b/src/index.ts @@ -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'; @@ -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'; @@ -339,6 +341,7 @@ window['IonicNative'] = { SafariViewController, Screenshot, SecureStorage, + Serial, Shake, Sim, SMS, diff --git a/src/plugins/serial.ts b/src/plugins/serial.ts new file mode 100644 index 000000000..4d548faf7 --- /dev/null +++ b/src/plugins/serial.ts @@ -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} Returns a promise that resolves when permissions are granted + */ + @Cordova() + static requestPermission(options: SerialPermissionOptions): Promise { return; } + + /** + * Open connection to a serial device + * + * @param options {SerialOpenOptions} Options used to open serial connection + * @return {Promise} Returns a promise that resolves when the serial connection is opened + */ + @Cordova() + static open(options: SerialOpenOptions): Promise { return; } + + /** + * Write to a serial connection + * + * @param data {any} data to write to the serial connection + * @return {Promise} Returns a promise that resolves when the write is complete + */ + @Cordova() + static write(data: any): Promise { return; } + + /** + * Write hex to a serial connection + * + * @param data {any} data to write to the serial connection + * @return {Promise} Returns a promise that resolves when the write is complete + */ + @Cordova() + static writeHex(data: any): Promise { return; } + + /** + * Read from a serial connection + * + * @return {Promise} Returns a promise that resolves with data read from the serial connection + */ + @Cordova() + static read(): Promise { return; } + + /** + * Watch the incoming data from the serial connection. Clear the watch by unsubscribing from the observable + * + * @returns {Observable} Observable returns an observable that you can subscribe to + */ + @Cordova({ + observable: true + }) + static registerReadCallback(): Observable { return; } + + /** + * Close the serial connection + * + * @return {Promise} Returns a promise that resolves when the serial connection is closed + */ + @Cordova() + static close(): Promise { return; } + +}