diff --git a/src/@ionic-native/plugins/dfu-update/index.ts b/src/@ionic-native/plugins/dfu-update/index.ts new file mode 100644 index 0000000000..f7450e52a0 --- /dev/null +++ b/src/@ionic-native/plugins/dfu-update/index.ts @@ -0,0 +1,66 @@ +import { Injectable } from '@angular/core'; +import { Plugin, Cordova, IonicNativePlugin } from '@ionic-native/core'; +import { Observable } from 'rxjs'; + +export interface UpdateOptions { + /** + * A string that contains the identifier for the Bluetooth LE device to update. It will either be a MAC address (on Android) or a UUID (on iOS). + */ + deviceId: string; + + /** + * A string that is the path to the file to use in the update. It can be either in either `cdvfile://` or `file://` format. + */ + fileUrl: string; + + /** + * The PacketReceiptNotificationsValue (Default to 10) + */ + packetReceiptNotificationsValue?: number; +} + +/** + * @name Dfu Update + * @description + * This plugin is a Wrapper to use Nordic Semiconductor's Device Firmware Update (DFU) service to update a Bluetooth LE device. + * + * @usage + * ```typescript + * import { DfuUpdate } from '@ionic-native/dfu-update/ngx'; + * + * + * constructor(private dfuUpdate: DfuUpdate) { } + * + * ... + * + * + * this.dfuUpdate.updateFirmware('fileURL', 'deviceIdentifier') + * .then((res: any) => console.log(res)) + * .catch((error: any) => console.error(error)); + * + * ``` + */ +@Plugin({ + pluginName: 'DfuUpdate', + plugin: 'cordova-plugin-dfu-update', + pluginRef: 'window.DfuUpdate', + repo: 'https://github.com/EinfachHans/cordova-plugin-dfu-update', + install: 'ionic cordova plugin add cordova-plugin-dfu-update --variable ANDROID_NORDIC_VERSION="1.11.0"', + installVariables: ['ANDROID_NORDIC_VERSION'], + platforms: ['Android', 'iOS'], +}) +@Injectable() +export class DfuUpdate extends IonicNativePlugin { + /** + * Start the Firmware-Update-Process + * @param options - Options for the process + * @return {Observable} Returns a Observable that emits when something happens + */ + @Cordova({ + observable: true, + callbackOrder: 'reverse', + }) + updateFirmware(options: UpdateOptions): Observable { + return; + } +}