forked from Aerobotics/react-native-dji-mobile
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.js
91 lines (76 loc) · 2.69 KB
/
index.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
// @flow strict
import {
Platform,
NativeModules,
} from 'react-native';
import {
filter,
} from 'rxjs/operators';
import DJIMissionControl from './lib/DJIMissionControl';
import {
DJIEventSubject,
} from './lib/utilities';
const {
DJIMobile,
} = NativeModules;
let SDKRegistered = false;
const DJIMobileWrapper = {
registerApp: async (bridgeIp?: string) => {
let registerSDKPromise;
if (bridgeIp !== undefined) {
registerSDKPromise = DJIMobile.registerAppAndUseBridge(bridgeIp);
} else {
registerSDKPromise = DJIMobile.registerApp();
}
registerSDKPromise.then(() => {
SDKRegistered = true;
}).catch(err => {
SDKRegistered = false;
});
return registerSDKPromise;
},
startProductConnectionListener: async () => {
await DJIMobile.startProductConnectionListener();
return DJIEventSubject.pipe(filter(evt => evt.type === 'connectionStatus')).asObservable();
},
stopProductConnectionListener: async () => {
// TODO: (Adam) this key could potentially be used for different types (product, gimbal, etc.) so how to differentiate?
await DJIMobile.stopKeyListener('DJIParamConnection');
},
startBatteryPercentChargeRemainingListener: async () => {
await DJIMobile.startBatteryPercentChargeRemainingListener();
return DJIEventSubject.pipe(filter(evt => evt.type === 'chargeRemaining')).asObservable();
},
stopBatteryPercentChargeRemainingListener: async () => {
await DJIMobile.stopKeyListener('DJIBatteryParamChargeRemainingInPercent');
},
startAircraftLocationListener: async () => {
await DJIMobile.startAircraftLocationListener();
return DJIEventSubject.pipe(filter(evt => evt.type === 'aircraftLocation')).asObservable();
},
stopAircraftLocationListener: async () => {
await DJIMobile.stopKeyListener('DJIFlightControllerParamAircraftLocation');
},
startAircraftVelocityListener: async () => {
await DJIMobile.startAircraftVelocityListener();
return DJIEventSubject.pipe(filter(evt => evt.type === 'aircraftVelocity')).asObservable();
},
stopAircraftVelocityListener: async () => {
if (Platform.OS === 'android') {
await DJIMobile.stopAircraftVelocityListener();
} else {
await DJIMobile.stopKeyListener('DJIFlightControllerParamVelocity');
}
},
startAircraftCompassHeadingListener: async () => {
await DJIMobile.startAircraftCompassHeadingListener();
return DJIEventSubject.pipe(filter(evt => evt.type === 'aircraftCompassHeading')).asObservable();
},
stopAircraftCompassHeadingListener: async () => {
await DJIMobile.stopKeyListener('DJIFlightControllerParamCompassHeading');
},
};
export default DJIMobileWrapper;
export {
DJIMissionControl,
};