@getquip/expo-nordic-dfu
Version:
Nordic DFU for Expo
74 lines (66 loc) • 2.18 kB
text/typescript
import { NativeModule, requireNativeModule } from 'expo'
import { ExpoSettingsModuleEvents, StartDFUParams } from './ExpoNordicDfu.types'
import { Platform } from 'react-native'
declare class ExpoNordicDfuModule extends NativeModule<ExpoSettingsModuleEvents> {
startAndroidDfu(
deviceAddress: string,
fileUri: string,
deviceName?: string,
keepBond?: boolean,
numberOfRetries?: number,
packetReceiptNotificationParameter?: number,
prepareDataObjectDelay?: number,
rebootTime?: number,
restoreBond?: boolean
): Promise<void>
abortAndroidDfu(): Promise<void>
startIosDfu(
deviceAddress: string,
fileUri: string,
connectionTimeout?: number,
disableResume?: boolean,
packetReceiptNotificationParameter?: number,
prepareDataObjectDelay?: number
): Promise<void>
abortIosDfu(): Promise<void>
}
const DfuModule = requireNativeModule<ExpoNordicDfuModule>('ExpoNordicDfuModule')
class CrossplatformWrapper {
constructor(private dfuModule: ExpoNordicDfuModule) {}
get module() {
return this.dfuModule
}
async startDfu(params: StartDFUParams): Promise<void> {
if (Platform.OS === 'ios') {
return await this.dfuModule.startIosDfu(
params.deviceAddress,
params.fileUri,
params.ios?.connectionTimeout,
params.ios?.disableResume,
params.packetReceiptNotificationParameter,
params.prepareDataObjectDelay
)
} else {
return await this.dfuModule.startAndroidDfu(
params.deviceAddress,
params.fileUri,
params.android?.deviceName,
params.android?.keepBond,
params.android?.numberOfRetries,
params.packetReceiptNotificationParameter,
params.prepareDataObjectDelay
// See android/src/main/java/com/getquip/nordic/ExpoNordicDfuModule.kt
// params.android?.rebootTime,
// params.android?.restoreBond,
)
}
}
async abortDfu(): Promise<void> {
if (Platform.OS === 'ios') {
return await this.dfuModule.abortIosDfu()
} else {
return await this.dfuModule.abortAndroidDfu()
}
}
}
export default new CrossplatformWrapper(DfuModule)