react-native-polar-bridge 0.2.2 → 0.2.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/PolarBridge.podspec +1 -1
- package/README.md +8 -0
- package/android/generated/java/com/polarbridge/NativePolarBridgeSpec.java +5 -4
- package/android/generated/jni/RNPolarBridgeSpec-generated.cpp +8 -8
- package/android/generated/jni/react/renderer/components/RNPolarBridgeSpec/RNPolarBridgeSpecJSI-generated.cpp +12 -8
- package/android/generated/jni/react/renderer/components/RNPolarBridgeSpec/RNPolarBridgeSpecJSI.h +20 -20
- package/android/src/main/java/com/polarbridge/PolarBridgeModule.kt +13 -9
- package/ios/PolarBridge.m +4 -4
- package/ios/PolarBridge.swift +46 -34
- package/ios/generated/RNPolarBridgeSpec/RNPolarBridgeSpec-generated.mm +8 -8
- package/ios/generated/RNPolarBridgeSpec/RNPolarBridgeSpec.h +8 -4
- package/ios/generated/RNPolarBridgeSpecJSI-generated.cpp +12 -8
- package/ios/generated/RNPolarBridgeSpecJSI.h +20 -20
- package/lib/module/NativePolarBridge.ts +4 -4
- package/lib/module/index.js +8 -8
- package/lib/module/index.js.map +1 -1
- package/lib/typescript/src/NativePolarBridge.d.ts +4 -4
- package/lib/typescript/src/NativePolarBridge.d.ts.map +1 -1
- package/lib/typescript/src/index.d.ts +4 -4
- package/lib/typescript/src/index.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/NativePolarBridge.ts +4 -4
- package/src/index.tsx +8 -8
package/PolarBridge.podspec
CHANGED
|
@@ -16,7 +16,7 @@ Pod::Spec.new do |s|
|
|
|
16
16
|
s.source_files = "ios/**/*.{h,m,mm,cpp,swift}"
|
|
17
17
|
s.private_header_files = "ios/**/*.h"
|
|
18
18
|
|
|
19
|
-
s.dependency 'PolarBleSdk', '~>
|
|
19
|
+
s.dependency 'PolarBleSdk', '~> 6.4.0'
|
|
20
20
|
|
|
21
21
|
# Use install_modules_dependencies helper to install the dependencies if React Native version >=0.71.0.
|
|
22
22
|
# See https://github.com/facebook/react-native/blob/febf6b7f33fdb4904669f99d795eba4c0f95d7bf/scripts/cocoapods/new_architecture.rb#L79.
|
package/README.md
CHANGED
|
@@ -113,6 +113,14 @@ Ensure that the `deviceId` of the Polar device is connected before calling the f
|
|
|
113
113
|
fetchHrData(connectedDeviceId);
|
|
114
114
|
```
|
|
115
115
|
|
|
116
|
+
By default, the package sends sensor data reports every 10 seconds. The interval
|
|
117
|
+
can be customized by specifying the frequency (in milliseconds) in the fetch request.
|
|
118
|
+
|
|
119
|
+
```js
|
|
120
|
+
const BUFFER_MS = 5_000;
|
|
121
|
+
fetchHrData(connectedDeviceId, BUFFER_MS);
|
|
122
|
+
```
|
|
123
|
+
|
|
116
124
|
Listen for emitted events of the HR data.
|
|
117
125
|
|
|
118
126
|
```js
|
|
@@ -20,6 +20,7 @@ import com.facebook.react.bridge.ReactMethod;
|
|
|
20
20
|
import com.facebook.react.bridge.ReadableArray;
|
|
21
21
|
import com.facebook.react.turbomodule.core.interfaces.TurboModule;
|
|
22
22
|
import javax.annotation.Nonnull;
|
|
23
|
+
import javax.annotation.Nullable;
|
|
23
24
|
|
|
24
25
|
public abstract class NativePolarBridgeSpec extends ReactContextBaseJavaModule implements TurboModule {
|
|
25
26
|
public static final String NAME = "PolarBridge";
|
|
@@ -47,19 +48,19 @@ public abstract class NativePolarBridgeSpec extends ReactContextBaseJavaModule i
|
|
|
47
48
|
|
|
48
49
|
@ReactMethod
|
|
49
50
|
@DoNotStrip
|
|
50
|
-
public abstract void fetchHrData(String deviceId);
|
|
51
|
+
public abstract void fetchHrData(String deviceId, @Nullable Double bufferMs);
|
|
51
52
|
|
|
52
53
|
@ReactMethod
|
|
53
54
|
@DoNotStrip
|
|
54
|
-
public abstract void fetchAccData(String deviceId);
|
|
55
|
+
public abstract void fetchAccData(String deviceId, @Nullable Double bufferMs);
|
|
55
56
|
|
|
56
57
|
@ReactMethod
|
|
57
58
|
@DoNotStrip
|
|
58
|
-
public abstract void fetchGyrData(String deviceId);
|
|
59
|
+
public abstract void fetchGyrData(String deviceId, @Nullable Double bufferMs);
|
|
59
60
|
|
|
60
61
|
@ReactMethod
|
|
61
62
|
@DoNotStrip
|
|
62
|
-
public abstract void fetchPpgData(String deviceId);
|
|
63
|
+
public abstract void fetchPpgData(String deviceId, @Nullable Double bufferMs);
|
|
63
64
|
|
|
64
65
|
@ReactMethod
|
|
65
66
|
@DoNotStrip
|
|
@@ -29,22 +29,22 @@ static facebook::jsi::Value __hostFunction_NativePolarBridgeSpecJSI_disconnectFr
|
|
|
29
29
|
|
|
30
30
|
static facebook::jsi::Value __hostFunction_NativePolarBridgeSpecJSI_fetchHrData(facebook::jsi::Runtime& rt, TurboModule &turboModule, const facebook::jsi::Value* args, size_t count) {
|
|
31
31
|
static jmethodID cachedMethodId = nullptr;
|
|
32
|
-
return static_cast<JavaTurboModule &>(turboModule).invokeJavaMethod(rt, VoidKind, "fetchHrData", "(Ljava/lang/String;)V", args, count, cachedMethodId);
|
|
32
|
+
return static_cast<JavaTurboModule &>(turboModule).invokeJavaMethod(rt, VoidKind, "fetchHrData", "(Ljava/lang/String;Ljava/lang/Double;)V", args, count, cachedMethodId);
|
|
33
33
|
}
|
|
34
34
|
|
|
35
35
|
static facebook::jsi::Value __hostFunction_NativePolarBridgeSpecJSI_fetchAccData(facebook::jsi::Runtime& rt, TurboModule &turboModule, const facebook::jsi::Value* args, size_t count) {
|
|
36
36
|
static jmethodID cachedMethodId = nullptr;
|
|
37
|
-
return static_cast<JavaTurboModule &>(turboModule).invokeJavaMethod(rt, VoidKind, "fetchAccData", "(Ljava/lang/String;)V", args, count, cachedMethodId);
|
|
37
|
+
return static_cast<JavaTurboModule &>(turboModule).invokeJavaMethod(rt, VoidKind, "fetchAccData", "(Ljava/lang/String;Ljava/lang/Double;)V", args, count, cachedMethodId);
|
|
38
38
|
}
|
|
39
39
|
|
|
40
40
|
static facebook::jsi::Value __hostFunction_NativePolarBridgeSpecJSI_fetchGyrData(facebook::jsi::Runtime& rt, TurboModule &turboModule, const facebook::jsi::Value* args, size_t count) {
|
|
41
41
|
static jmethodID cachedMethodId = nullptr;
|
|
42
|
-
return static_cast<JavaTurboModule &>(turboModule).invokeJavaMethod(rt, VoidKind, "fetchGyrData", "(Ljava/lang/String;)V", args, count, cachedMethodId);
|
|
42
|
+
return static_cast<JavaTurboModule &>(turboModule).invokeJavaMethod(rt, VoidKind, "fetchGyrData", "(Ljava/lang/String;Ljava/lang/Double;)V", args, count, cachedMethodId);
|
|
43
43
|
}
|
|
44
44
|
|
|
45
45
|
static facebook::jsi::Value __hostFunction_NativePolarBridgeSpecJSI_fetchPpgData(facebook::jsi::Runtime& rt, TurboModule &turboModule, const facebook::jsi::Value* args, size_t count) {
|
|
46
46
|
static jmethodID cachedMethodId = nullptr;
|
|
47
|
-
return static_cast<JavaTurboModule &>(turboModule).invokeJavaMethod(rt, VoidKind, "fetchPpgData", "(Ljava/lang/String;)V", args, count, cachedMethodId);
|
|
47
|
+
return static_cast<JavaTurboModule &>(turboModule).invokeJavaMethod(rt, VoidKind, "fetchPpgData", "(Ljava/lang/String;Ljava/lang/Double;)V", args, count, cachedMethodId);
|
|
48
48
|
}
|
|
49
49
|
|
|
50
50
|
static facebook::jsi::Value __hostFunction_NativePolarBridgeSpecJSI_enableSdkMode(facebook::jsi::Runtime& rt, TurboModule &turboModule, const facebook::jsi::Value* args, size_t count) {
|
|
@@ -137,10 +137,10 @@ NativePolarBridgeSpecJSI::NativePolarBridgeSpecJSI(const JavaTurboModule::InitPa
|
|
|
137
137
|
methodMap_["multiply"] = MethodMetadata {2, __hostFunction_NativePolarBridgeSpecJSI_multiply};
|
|
138
138
|
methodMap_["connectToDevice"] = MethodMetadata {1, __hostFunction_NativePolarBridgeSpecJSI_connectToDevice};
|
|
139
139
|
methodMap_["disconnectFromDevice"] = MethodMetadata {1, __hostFunction_NativePolarBridgeSpecJSI_disconnectFromDevice};
|
|
140
|
-
methodMap_["fetchHrData"] = MethodMetadata {
|
|
141
|
-
methodMap_["fetchAccData"] = MethodMetadata {
|
|
142
|
-
methodMap_["fetchGyrData"] = MethodMetadata {
|
|
143
|
-
methodMap_["fetchPpgData"] = MethodMetadata {
|
|
140
|
+
methodMap_["fetchHrData"] = MethodMetadata {2, __hostFunction_NativePolarBridgeSpecJSI_fetchHrData};
|
|
141
|
+
methodMap_["fetchAccData"] = MethodMetadata {2, __hostFunction_NativePolarBridgeSpecJSI_fetchAccData};
|
|
142
|
+
methodMap_["fetchGyrData"] = MethodMetadata {2, __hostFunction_NativePolarBridgeSpecJSI_fetchGyrData};
|
|
143
|
+
methodMap_["fetchPpgData"] = MethodMetadata {2, __hostFunction_NativePolarBridgeSpecJSI_fetchPpgData};
|
|
144
144
|
methodMap_["enableSdkMode"] = MethodMetadata {1, __hostFunction_NativePolarBridgeSpecJSI_enableSdkMode};
|
|
145
145
|
methodMap_["disableSdkMode"] = MethodMetadata {1, __hostFunction_NativePolarBridgeSpecJSI_disableSdkMode};
|
|
146
146
|
methodMap_["getDeviceTime"] = MethodMetadata {1, __hostFunction_NativePolarBridgeSpecJSI_getDeviceTime};
|
|
@@ -34,28 +34,32 @@ static jsi::Value __hostFunction_NativePolarBridgeCxxSpecJSI_disconnectFromDevic
|
|
|
34
34
|
static jsi::Value __hostFunction_NativePolarBridgeCxxSpecJSI_fetchHrData(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) {
|
|
35
35
|
static_cast<NativePolarBridgeCxxSpecJSI *>(&turboModule)->fetchHrData(
|
|
36
36
|
rt,
|
|
37
|
-
count <= 0 ? throw jsi::JSError(rt, "Expected argument in position 0 to be passed") : args[0].asString(rt)
|
|
37
|
+
count <= 0 ? throw jsi::JSError(rt, "Expected argument in position 0 to be passed") : args[0].asString(rt),
|
|
38
|
+
count <= 1 || args[1].isNull() || args[1].isUndefined() ? std::nullopt : std::make_optional(args[1].asNumber())
|
|
38
39
|
);
|
|
39
40
|
return jsi::Value::undefined();
|
|
40
41
|
}
|
|
41
42
|
static jsi::Value __hostFunction_NativePolarBridgeCxxSpecJSI_fetchAccData(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) {
|
|
42
43
|
static_cast<NativePolarBridgeCxxSpecJSI *>(&turboModule)->fetchAccData(
|
|
43
44
|
rt,
|
|
44
|
-
count <= 0 ? throw jsi::JSError(rt, "Expected argument in position 0 to be passed") : args[0].asString(rt)
|
|
45
|
+
count <= 0 ? throw jsi::JSError(rt, "Expected argument in position 0 to be passed") : args[0].asString(rt),
|
|
46
|
+
count <= 1 || args[1].isNull() || args[1].isUndefined() ? std::nullopt : std::make_optional(args[1].asNumber())
|
|
45
47
|
);
|
|
46
48
|
return jsi::Value::undefined();
|
|
47
49
|
}
|
|
48
50
|
static jsi::Value __hostFunction_NativePolarBridgeCxxSpecJSI_fetchGyrData(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) {
|
|
49
51
|
static_cast<NativePolarBridgeCxxSpecJSI *>(&turboModule)->fetchGyrData(
|
|
50
52
|
rt,
|
|
51
|
-
count <= 0 ? throw jsi::JSError(rt, "Expected argument in position 0 to be passed") : args[0].asString(rt)
|
|
53
|
+
count <= 0 ? throw jsi::JSError(rt, "Expected argument in position 0 to be passed") : args[0].asString(rt),
|
|
54
|
+
count <= 1 || args[1].isNull() || args[1].isUndefined() ? std::nullopt : std::make_optional(args[1].asNumber())
|
|
52
55
|
);
|
|
53
56
|
return jsi::Value::undefined();
|
|
54
57
|
}
|
|
55
58
|
static jsi::Value __hostFunction_NativePolarBridgeCxxSpecJSI_fetchPpgData(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) {
|
|
56
59
|
static_cast<NativePolarBridgeCxxSpecJSI *>(&turboModule)->fetchPpgData(
|
|
57
60
|
rt,
|
|
58
|
-
count <= 0 ? throw jsi::JSError(rt, "Expected argument in position 0 to be passed") : args[0].asString(rt)
|
|
61
|
+
count <= 0 ? throw jsi::JSError(rt, "Expected argument in position 0 to be passed") : args[0].asString(rt),
|
|
62
|
+
count <= 1 || args[1].isNull() || args[1].isUndefined() ? std::nullopt : std::make_optional(args[1].asNumber())
|
|
59
63
|
);
|
|
60
64
|
return jsi::Value::undefined();
|
|
61
65
|
}
|
|
@@ -178,10 +182,10 @@ NativePolarBridgeCxxSpecJSI::NativePolarBridgeCxxSpecJSI(std::shared_ptr<CallInv
|
|
|
178
182
|
methodMap_["multiply"] = MethodMetadata {2, __hostFunction_NativePolarBridgeCxxSpecJSI_multiply};
|
|
179
183
|
methodMap_["connectToDevice"] = MethodMetadata {1, __hostFunction_NativePolarBridgeCxxSpecJSI_connectToDevice};
|
|
180
184
|
methodMap_["disconnectFromDevice"] = MethodMetadata {1, __hostFunction_NativePolarBridgeCxxSpecJSI_disconnectFromDevice};
|
|
181
|
-
methodMap_["fetchHrData"] = MethodMetadata {
|
|
182
|
-
methodMap_["fetchAccData"] = MethodMetadata {
|
|
183
|
-
methodMap_["fetchGyrData"] = MethodMetadata {
|
|
184
|
-
methodMap_["fetchPpgData"] = MethodMetadata {
|
|
185
|
+
methodMap_["fetchHrData"] = MethodMetadata {2, __hostFunction_NativePolarBridgeCxxSpecJSI_fetchHrData};
|
|
186
|
+
methodMap_["fetchAccData"] = MethodMetadata {2, __hostFunction_NativePolarBridgeCxxSpecJSI_fetchAccData};
|
|
187
|
+
methodMap_["fetchGyrData"] = MethodMetadata {2, __hostFunction_NativePolarBridgeCxxSpecJSI_fetchGyrData};
|
|
188
|
+
methodMap_["fetchPpgData"] = MethodMetadata {2, __hostFunction_NativePolarBridgeCxxSpecJSI_fetchPpgData};
|
|
185
189
|
methodMap_["enableSdkMode"] = MethodMetadata {1, __hostFunction_NativePolarBridgeCxxSpecJSI_enableSdkMode};
|
|
186
190
|
methodMap_["disableSdkMode"] = MethodMetadata {1, __hostFunction_NativePolarBridgeCxxSpecJSI_disableSdkMode};
|
|
187
191
|
methodMap_["getDeviceTime"] = MethodMetadata {1, __hostFunction_NativePolarBridgeCxxSpecJSI_getDeviceTime};
|
package/android/generated/jni/react/renderer/components/RNPolarBridgeSpec/RNPolarBridgeSpecJSI.h
CHANGED
|
@@ -23,10 +23,10 @@ public:
|
|
|
23
23
|
virtual double multiply(jsi::Runtime &rt, double a, double b) = 0;
|
|
24
24
|
virtual jsi::Value connectToDevice(jsi::Runtime &rt, jsi::String deviceId) = 0;
|
|
25
25
|
virtual void disconnectFromDevice(jsi::Runtime &rt, jsi::String deviceId) = 0;
|
|
26
|
-
virtual void fetchHrData(jsi::Runtime &rt, jsi::String deviceId) = 0;
|
|
27
|
-
virtual void fetchAccData(jsi::Runtime &rt, jsi::String deviceId) = 0;
|
|
28
|
-
virtual void fetchGyrData(jsi::Runtime &rt, jsi::String deviceId) = 0;
|
|
29
|
-
virtual void fetchPpgData(jsi::Runtime &rt, jsi::String deviceId) = 0;
|
|
26
|
+
virtual void fetchHrData(jsi::Runtime &rt, jsi::String deviceId, std::optional<double> bufferMs) = 0;
|
|
27
|
+
virtual void fetchAccData(jsi::Runtime &rt, jsi::String deviceId, std::optional<double> bufferMs) = 0;
|
|
28
|
+
virtual void fetchGyrData(jsi::Runtime &rt, jsi::String deviceId, std::optional<double> bufferMs) = 0;
|
|
29
|
+
virtual void fetchPpgData(jsi::Runtime &rt, jsi::String deviceId, std::optional<double> bufferMs) = 0;
|
|
30
30
|
virtual void enableSdkMode(jsi::Runtime &rt, jsi::String deviceId) = 0;
|
|
31
31
|
virtual void disableSdkMode(jsi::Runtime &rt, jsi::String deviceId) = 0;
|
|
32
32
|
virtual jsi::Value getDeviceTime(jsi::Runtime &rt, jsi::String deviceId) = 0;
|
|
@@ -98,37 +98,37 @@ private:
|
|
|
98
98
|
return bridging::callFromJs<void>(
|
|
99
99
|
rt, &T::disconnectFromDevice, jsInvoker_, instance_, std::move(deviceId));
|
|
100
100
|
}
|
|
101
|
-
void fetchHrData(jsi::Runtime &rt, jsi::String deviceId) override {
|
|
101
|
+
void fetchHrData(jsi::Runtime &rt, jsi::String deviceId, std::optional<double> bufferMs) override {
|
|
102
102
|
static_assert(
|
|
103
|
-
bridging::getParameterCount(&T::fetchHrData) ==
|
|
104
|
-
"Expected fetchHrData(...) to have
|
|
103
|
+
bridging::getParameterCount(&T::fetchHrData) == 3,
|
|
104
|
+
"Expected fetchHrData(...) to have 3 parameters");
|
|
105
105
|
|
|
106
106
|
return bridging::callFromJs<void>(
|
|
107
|
-
rt, &T::fetchHrData, jsInvoker_, instance_, std::move(deviceId));
|
|
107
|
+
rt, &T::fetchHrData, jsInvoker_, instance_, std::move(deviceId), std::move(bufferMs));
|
|
108
108
|
}
|
|
109
|
-
void fetchAccData(jsi::Runtime &rt, jsi::String deviceId) override {
|
|
109
|
+
void fetchAccData(jsi::Runtime &rt, jsi::String deviceId, std::optional<double> bufferMs) override {
|
|
110
110
|
static_assert(
|
|
111
|
-
bridging::getParameterCount(&T::fetchAccData) ==
|
|
112
|
-
"Expected fetchAccData(...) to have
|
|
111
|
+
bridging::getParameterCount(&T::fetchAccData) == 3,
|
|
112
|
+
"Expected fetchAccData(...) to have 3 parameters");
|
|
113
113
|
|
|
114
114
|
return bridging::callFromJs<void>(
|
|
115
|
-
rt, &T::fetchAccData, jsInvoker_, instance_, std::move(deviceId));
|
|
115
|
+
rt, &T::fetchAccData, jsInvoker_, instance_, std::move(deviceId), std::move(bufferMs));
|
|
116
116
|
}
|
|
117
|
-
void fetchGyrData(jsi::Runtime &rt, jsi::String deviceId) override {
|
|
117
|
+
void fetchGyrData(jsi::Runtime &rt, jsi::String deviceId, std::optional<double> bufferMs) override {
|
|
118
118
|
static_assert(
|
|
119
|
-
bridging::getParameterCount(&T::fetchGyrData) ==
|
|
120
|
-
"Expected fetchGyrData(...) to have
|
|
119
|
+
bridging::getParameterCount(&T::fetchGyrData) == 3,
|
|
120
|
+
"Expected fetchGyrData(...) to have 3 parameters");
|
|
121
121
|
|
|
122
122
|
return bridging::callFromJs<void>(
|
|
123
|
-
rt, &T::fetchGyrData, jsInvoker_, instance_, std::move(deviceId));
|
|
123
|
+
rt, &T::fetchGyrData, jsInvoker_, instance_, std::move(deviceId), std::move(bufferMs));
|
|
124
124
|
}
|
|
125
|
-
void fetchPpgData(jsi::Runtime &rt, jsi::String deviceId) override {
|
|
125
|
+
void fetchPpgData(jsi::Runtime &rt, jsi::String deviceId, std::optional<double> bufferMs) override {
|
|
126
126
|
static_assert(
|
|
127
|
-
bridging::getParameterCount(&T::fetchPpgData) ==
|
|
128
|
-
"Expected fetchPpgData(...) to have
|
|
127
|
+
bridging::getParameterCount(&T::fetchPpgData) == 3,
|
|
128
|
+
"Expected fetchPpgData(...) to have 3 parameters");
|
|
129
129
|
|
|
130
130
|
return bridging::callFromJs<void>(
|
|
131
|
-
rt, &T::fetchPpgData, jsInvoker_, instance_, std::move(deviceId));
|
|
131
|
+
rt, &T::fetchPpgData, jsInvoker_, instance_, std::move(deviceId), std::move(bufferMs));
|
|
132
132
|
}
|
|
133
133
|
void enableSdkMode(jsi::Runtime &rt, jsi::String deviceId) override {
|
|
134
134
|
static_assert(
|
|
@@ -24,7 +24,7 @@ import java.time.Instant
|
|
|
24
24
|
class PolarBridgeModule(reactContext: ReactApplicationContext) :
|
|
25
25
|
NativePolarBridgeSpec(reactContext) {
|
|
26
26
|
private val reactContext: ReactApplicationContext = reactContext
|
|
27
|
-
private val
|
|
27
|
+
private val SENSOR_BUFFER_MS = 10_000L
|
|
28
28
|
|
|
29
29
|
override fun getName(): String {
|
|
30
30
|
return NAME
|
|
@@ -624,8 +624,9 @@ class PolarBridgeModule(reactContext: ReactApplicationContext) :
|
|
|
624
624
|
val timestampMs: Long
|
|
625
625
|
)
|
|
626
626
|
|
|
627
|
-
override fun fetchHrData(deviceId: String) {
|
|
627
|
+
override fun fetchHrData(deviceId: String, ms: Double?) {
|
|
628
628
|
Log.e(TAG, "Fetch Heart Data called on: $deviceId ")
|
|
629
|
+
val bufferMs = ms?.toLong()?.takeIf { it >= 0 } ?: SENSOR_BUFFER_MS
|
|
629
630
|
val isDisposed = hrDisposable?.isDisposed ?: true
|
|
630
631
|
try{
|
|
631
632
|
if (isDisposed) {
|
|
@@ -638,7 +639,7 @@ class PolarBridgeModule(reactContext: ReactApplicationContext) :
|
|
|
638
639
|
)
|
|
639
640
|
}
|
|
640
641
|
}
|
|
641
|
-
.buffer(
|
|
642
|
+
.buffer(bufferMs, TimeUnit.MILLISECONDS)
|
|
642
643
|
.observeOn(AndroidSchedulers.mainThread())
|
|
643
644
|
.subscribe(
|
|
644
645
|
{ samples ->
|
|
@@ -730,8 +731,9 @@ class PolarBridgeModule(reactContext: ReactApplicationContext) :
|
|
|
730
731
|
}
|
|
731
732
|
}
|
|
732
733
|
|
|
733
|
-
override fun fetchAccData(deviceId: String) {
|
|
734
|
+
override fun fetchAccData(deviceId: String, ms: Double?) {
|
|
734
735
|
Log.e(TAG, "Fetch Accelerometer Data called on: $deviceId ")
|
|
736
|
+
val bufferMs = ms?.toLong()?.takeIf { it >= 0 } ?: SENSOR_BUFFER_MS
|
|
735
737
|
val isDisposed = accDisposable?.isDisposed ?: true
|
|
736
738
|
try{
|
|
737
739
|
if (isDisposed) {
|
|
@@ -740,7 +742,7 @@ class PolarBridgeModule(reactContext: ReactApplicationContext) :
|
|
|
740
742
|
api.startAccStreaming(deviceId, settings)
|
|
741
743
|
}
|
|
742
744
|
.flatMapIterable { it.samples }
|
|
743
|
-
.buffer(
|
|
745
|
+
.buffer(bufferMs, TimeUnit.MILLISECONDS)
|
|
744
746
|
.observeOn(AndroidSchedulers.mainThread())
|
|
745
747
|
.subscribe(
|
|
746
748
|
{ samples ->
|
|
@@ -786,8 +788,9 @@ class PolarBridgeModule(reactContext: ReactApplicationContext) :
|
|
|
786
788
|
}
|
|
787
789
|
}
|
|
788
790
|
|
|
789
|
-
override fun fetchGyrData(deviceId: String) {
|
|
791
|
+
override fun fetchGyrData(deviceId: String, ms: Double?) {
|
|
790
792
|
Log.e(TAG, "Fetch Gyroscope Data called on: $deviceId ")
|
|
793
|
+
val bufferMs = ms?.toLong()?.takeIf { it >= 0 } ?: SENSOR_BUFFER_MS
|
|
791
794
|
val isDisposed = gyrDisposable?.isDisposed ?: true
|
|
792
795
|
try {
|
|
793
796
|
if (isDisposed) {
|
|
@@ -796,7 +799,7 @@ class PolarBridgeModule(reactContext: ReactApplicationContext) :
|
|
|
796
799
|
api.startGyroStreaming(deviceId, settings)
|
|
797
800
|
}
|
|
798
801
|
.flatMapIterable { it.samples }
|
|
799
|
-
.buffer(
|
|
802
|
+
.buffer(bufferMs, TimeUnit.MILLISECONDS)
|
|
800
803
|
.observeOn(AndroidSchedulers.mainThread())
|
|
801
804
|
.subscribe(
|
|
802
805
|
{ samples ->
|
|
@@ -844,8 +847,9 @@ class PolarBridgeModule(reactContext: ReactApplicationContext) :
|
|
|
844
847
|
}
|
|
845
848
|
}
|
|
846
849
|
|
|
847
|
-
override fun fetchPpgData(deviceId: String) {
|
|
850
|
+
override fun fetchPpgData(deviceId: String, ms: Double?) {
|
|
848
851
|
Log.e(TAG, "Fetch Photoplethysmograph Data called on: $deviceId ")
|
|
852
|
+
val bufferMs = ms?.toLong()?.takeIf { it >= 0 } ?: SENSOR_BUFFER_MS
|
|
849
853
|
val isDisposed = ppgDisposable?.isDisposed ?: true
|
|
850
854
|
try {
|
|
851
855
|
if (isDisposed) {
|
|
@@ -855,7 +859,7 @@ class PolarBridgeModule(reactContext: ReactApplicationContext) :
|
|
|
855
859
|
}
|
|
856
860
|
.filter { it.type == PolarPpgData.PpgDataType.PPG3_AMBIENT1 }
|
|
857
861
|
.flatMapIterable { it.samples }
|
|
858
|
-
.buffer(
|
|
862
|
+
.buffer(bufferMs, TimeUnit.MILLISECONDS)
|
|
859
863
|
.observeOn(AndroidSchedulers.mainThread())
|
|
860
864
|
.subscribe(
|
|
861
865
|
{ samples ->
|
package/ios/PolarBridge.m
CHANGED
|
@@ -11,13 +11,13 @@ RCT_EXTERN_METHOD(connectToDevice:(NSString *)deviceId
|
|
|
11
11
|
|
|
12
12
|
RCT_EXTERN_METHOD(disconnectFromDevice:(NSString *)deviceId)
|
|
13
13
|
RCT_EXTERN_METHOD(scanDevices)
|
|
14
|
-
RCT_EXTERN_METHOD(fetchHrData:(NSString *)deviceId)
|
|
14
|
+
RCT_EXTERN_METHOD(fetchHrData:(NSString *)deviceId bufferMs:(nullable NSNumber *)bufferMs)
|
|
15
15
|
RCT_EXTERN_METHOD(disposeHrStream)
|
|
16
|
-
RCT_EXTERN_METHOD(fetchAccData:(NSString *)deviceId)
|
|
16
|
+
RCT_EXTERN_METHOD(fetchAccData:(NSString *)deviceId bufferMs:(nullable NSNumber *)bufferMs)
|
|
17
17
|
RCT_EXTERN_METHOD(disposeAccStream)
|
|
18
|
-
RCT_EXTERN_METHOD(fetchGyrData:(NSString *)deviceId)
|
|
18
|
+
RCT_EXTERN_METHOD(fetchGyrData:(NSString *)deviceId bufferMs:(nullable NSNumber *)bufferMs)
|
|
19
19
|
RCT_EXTERN_METHOD(disposeGyrStream)
|
|
20
|
-
RCT_EXTERN_METHOD(fetchPpgData:(NSString *)deviceId)
|
|
20
|
+
RCT_EXTERN_METHOD(fetchPpgData:(NSString *)deviceId bufferMs:(nullable NSNumber *)bufferMs)
|
|
21
21
|
RCT_EXTERN_METHOD(disposePpgStream)
|
|
22
22
|
RCT_EXTERN_METHOD(setDeviceTime:(NSString *)deviceId)
|
|
23
23
|
RCT_EXTERN_METHOD(getDeviceTime:(NSString *)deviceId
|
package/ios/PolarBridge.swift
CHANGED
|
@@ -46,8 +46,8 @@ class PolarBridge: RCTEventEmitter, ObservableObject
|
|
|
46
46
|
private var isPpgStreaming = false
|
|
47
47
|
private let disposeBag = DisposeBag()
|
|
48
48
|
|
|
49
|
-
/// Flush interval for all sensor buffers (
|
|
50
|
-
private let
|
|
49
|
+
/// Flush interval for all sensor buffers (milliseconds)
|
|
50
|
+
private let SENSOR_BUFFER_MS: TimeInterval = 10_000
|
|
51
51
|
|
|
52
52
|
@objc
|
|
53
53
|
func multiply(_ a: NSNumber,withB b: NSNumber) -> NSNumber {
|
|
@@ -165,14 +165,13 @@ class PolarBridge: RCTEventEmitter, ObservableObject
|
|
|
165
165
|
private let hrBufferQueue = DispatchQueue(label: "com.polarbridge.hrBufferQueue")
|
|
166
166
|
private var hrFlushTimer: Timer?
|
|
167
167
|
|
|
168
|
-
private func startHrFlushTimer() {
|
|
168
|
+
private func startHrFlushTimer(bufferMs: TimeInterval) {
|
|
169
169
|
stopHrFlushTimer()
|
|
170
|
-
|
|
170
|
+
let intervalSeconds = bufferMs / 1000.0 // Timer always uses seconds,
|
|
171
171
|
DispatchQueue.main.async { [weak self] in
|
|
172
172
|
guard let self = self else { return }
|
|
173
|
-
|
|
174
173
|
self.hrFlushTimer = Timer(
|
|
175
|
-
timeInterval:
|
|
174
|
+
timeInterval: intervalSeconds,
|
|
176
175
|
repeats: true
|
|
177
176
|
) { [weak self] _ in
|
|
178
177
|
self?.flushHrBuffer()
|
|
@@ -208,10 +207,13 @@ class PolarBridge: RCTEventEmitter, ObservableObject
|
|
|
208
207
|
}
|
|
209
208
|
}
|
|
210
209
|
|
|
211
|
-
@objc(fetchHrData:)
|
|
212
|
-
func fetchHrData(_ deviceId: String) {
|
|
210
|
+
@objc(fetchHrData:bufferMs:)
|
|
211
|
+
func fetchHrData(_ deviceId: String, bufferMs: NSNumber?) {
|
|
213
212
|
NSLog("PolarBridge: Fetch HR Data called on: \(deviceId)")
|
|
214
|
-
|
|
213
|
+
// fallback
|
|
214
|
+
let resolvedBufferMs: TimeInterval = (bufferMs?.doubleValue ?? -1) >= 0
|
|
215
|
+
? bufferMs!.doubleValue
|
|
216
|
+
: SENSOR_BUFFER_MS
|
|
215
217
|
guard let api = api else {
|
|
216
218
|
NSLog("PolarBridge: Polar API not initialized")
|
|
217
219
|
return
|
|
@@ -230,7 +232,7 @@ class PolarBridge: RCTEventEmitter, ObservableObject
|
|
|
230
232
|
}
|
|
231
233
|
|
|
232
234
|
isHrStreaming = true
|
|
233
|
-
startHrFlushTimer()
|
|
235
|
+
startHrFlushTimer(bufferMs: resolvedBufferMs)
|
|
234
236
|
|
|
235
237
|
// Start HR streaming
|
|
236
238
|
hrDisposable = api.startHrStreaming(deviceId)
|
|
@@ -296,14 +298,14 @@ class PolarBridge: RCTEventEmitter, ObservableObject
|
|
|
296
298
|
private let ppgBufferQueue = DispatchQueue(label: "com.polarbridge.ppgBufferQueue")
|
|
297
299
|
private var ppgFlushTimer: Timer?
|
|
298
300
|
|
|
299
|
-
private func startAccFlushTimer() {
|
|
301
|
+
private func startAccFlushTimer(bufferMs: TimeInterval) {
|
|
300
302
|
stopAccFlushTimer()
|
|
301
|
-
|
|
303
|
+
let intervalSeconds = bufferMs / 1000.0
|
|
302
304
|
DispatchQueue.main.async { [weak self] in
|
|
303
305
|
guard let self = self else { return }
|
|
304
306
|
|
|
305
307
|
self.accFlushTimer = Timer(
|
|
306
|
-
timeInterval:
|
|
308
|
+
timeInterval: intervalSeconds,
|
|
307
309
|
repeats: true
|
|
308
310
|
) { [weak self] _ in
|
|
309
311
|
self?.flushAccBuffer()
|
|
@@ -339,10 +341,12 @@ class PolarBridge: RCTEventEmitter, ObservableObject
|
|
|
339
341
|
}
|
|
340
342
|
}
|
|
341
343
|
|
|
342
|
-
@objc(fetchAccData:)
|
|
343
|
-
func fetchAccData(_ deviceId: String) {
|
|
344
|
+
@objc(fetchAccData:bufferMs:)
|
|
345
|
+
func fetchAccData(_ deviceId: String, bufferMs: NSNumber?) {
|
|
344
346
|
NSLog("PolarBridge: Fetch ACC Data called on: \(deviceId)")
|
|
345
|
-
|
|
347
|
+
let resolvedBufferMs: TimeInterval = (bufferMs?.doubleValue ?? -1) >= 0
|
|
348
|
+
? bufferMs!.doubleValue
|
|
349
|
+
: SENSOR_BUFFER_MS
|
|
346
350
|
guard let api = api else {
|
|
347
351
|
NSLog("PolarBridge: Polar API not initialized")
|
|
348
352
|
return
|
|
@@ -361,11 +365,11 @@ class PolarBridge: RCTEventEmitter, ObservableObject
|
|
|
361
365
|
}
|
|
362
366
|
|
|
363
367
|
isAccStreaming = true
|
|
364
|
-
startAccFlushTimer()
|
|
368
|
+
startAccFlushTimer(bufferMs: resolvedBufferMs)
|
|
365
369
|
|
|
366
370
|
accDisposable = requestStreamSettings(deviceId, feature: .acc)
|
|
367
371
|
.flatMap { settings in
|
|
368
|
-
api.startAccStreaming(deviceId, settings: settings)
|
|
372
|
+
api.startAccStreaming(deviceId, settings: settings).asObservable()
|
|
369
373
|
}
|
|
370
374
|
.observe(on: MainScheduler.instance)
|
|
371
375
|
.subscribe(
|
|
@@ -373,7 +377,7 @@ class PolarBridge: RCTEventEmitter, ObservableObject
|
|
|
373
377
|
guard let self = self else { return }
|
|
374
378
|
|
|
375
379
|
self.accBufferQueue.async {
|
|
376
|
-
for sample in accData
|
|
380
|
+
for sample in accData {
|
|
377
381
|
NSLog("ACC x: \(sample.x) y: \(sample.y) z: \(sample.z) timestamp: \(sample.timeStamp)")
|
|
378
382
|
|
|
379
383
|
var event: [String: Any] = [:]
|
|
@@ -424,14 +428,14 @@ class PolarBridge: RCTEventEmitter, ObservableObject
|
|
|
424
428
|
accDisposable?.disposed(by: disposeBag)
|
|
425
429
|
}
|
|
426
430
|
|
|
427
|
-
private func startGyrFlushTimer() {
|
|
431
|
+
private func startGyrFlushTimer(bufferMs: TimeInterval) {
|
|
428
432
|
stopGyrFlushTimer()
|
|
429
|
-
|
|
433
|
+
let intervalSeconds = bufferMs / 1000.0
|
|
430
434
|
DispatchQueue.main.async { [weak self] in
|
|
431
435
|
guard let self = self else { return }
|
|
432
436
|
|
|
433
437
|
self.gyrFlushTimer = Timer(
|
|
434
|
-
timeInterval:
|
|
438
|
+
timeInterval: intervalSeconds,
|
|
435
439
|
repeats: true
|
|
436
440
|
) { [weak self] _ in
|
|
437
441
|
self?.flushGyrBuffer()
|
|
@@ -467,10 +471,12 @@ class PolarBridge: RCTEventEmitter, ObservableObject
|
|
|
467
471
|
}
|
|
468
472
|
}
|
|
469
473
|
|
|
470
|
-
@objc(fetchGyrData:)
|
|
471
|
-
func fetchGyrData(_ deviceId: String) {
|
|
474
|
+
@objc(fetchGyrData:bufferMs:)
|
|
475
|
+
func fetchGyrData(_ deviceId: String, bufferMs: NSNumber?) {
|
|
472
476
|
NSLog("PolarBridge: Fetch Gyroscope Data called on: \(deviceId)")
|
|
473
|
-
|
|
477
|
+
let resolvedBufferMs: TimeInterval = (bufferMs?.doubleValue ?? -1) >= 0
|
|
478
|
+
? bufferMs!.doubleValue
|
|
479
|
+
: SENSOR_BUFFER_MS
|
|
474
480
|
guard let api = api else {
|
|
475
481
|
NSLog("PolarBridge: Polar API not initialized")
|
|
476
482
|
return
|
|
@@ -488,7 +494,7 @@ class PolarBridge: RCTEventEmitter, ObservableObject
|
|
|
488
494
|
}
|
|
489
495
|
|
|
490
496
|
isGyrStreaming = true
|
|
491
|
-
startGyrFlushTimer()
|
|
497
|
+
startGyrFlushTimer(bufferMs: resolvedBufferMs)
|
|
492
498
|
|
|
493
499
|
gyrDisposable = requestStreamSettings(deviceId, feature: .gyro)
|
|
494
500
|
.flatMap { settings in
|
|
@@ -500,7 +506,7 @@ class PolarBridge: RCTEventEmitter, ObservableObject
|
|
|
500
506
|
guard let self = self else { return }
|
|
501
507
|
|
|
502
508
|
self.gyrBufferQueue.async {
|
|
503
|
-
for sample in gyrData
|
|
509
|
+
for sample in gyrData {
|
|
504
510
|
NSLog("GYR x: \(sample.x) y: \(sample.y) z: \(sample.z) timestamp: \(sample.timeStamp)")
|
|
505
511
|
|
|
506
512
|
var event: [String: Any] = [:]
|
|
@@ -558,14 +564,14 @@ class PolarBridge: RCTEventEmitter, ObservableObject
|
|
|
558
564
|
gyrDisposable?.disposed(by: disposeBag)
|
|
559
565
|
}
|
|
560
566
|
|
|
561
|
-
private func startPpgFlushTimer() {
|
|
567
|
+
private func startPpgFlushTimer(bufferMs: TimeInterval) {
|
|
562
568
|
stopPpgFlushTimer()
|
|
563
|
-
|
|
569
|
+
let intervalSeconds = bufferMs / 1000.0
|
|
564
570
|
DispatchQueue.main.async { [weak self] in
|
|
565
571
|
guard let self = self else { return }
|
|
566
572
|
|
|
567
573
|
self.ppgFlushTimer = Timer(
|
|
568
|
-
timeInterval:
|
|
574
|
+
timeInterval: intervalSeconds,
|
|
569
575
|
repeats: true
|
|
570
576
|
) { [weak self] _ in
|
|
571
577
|
self?.flushPpgBuffer()
|
|
@@ -601,10 +607,12 @@ class PolarBridge: RCTEventEmitter, ObservableObject
|
|
|
601
607
|
}
|
|
602
608
|
}
|
|
603
609
|
|
|
604
|
-
@objc(fetchPpgData:)
|
|
605
|
-
func fetchPpgData(_ deviceId: String) {
|
|
610
|
+
@objc(fetchPpgData:bufferMs:)
|
|
611
|
+
func fetchPpgData(_ deviceId: String, bufferMs: NSNumber?) {
|
|
606
612
|
NSLog("PolarBridge: Fetch PPG Data called on: \(deviceId)")
|
|
607
|
-
|
|
613
|
+
let resolvedBufferMs: TimeInterval = (bufferMs?.doubleValue ?? -1) >= 0
|
|
614
|
+
? bufferMs!.doubleValue
|
|
615
|
+
: SENSOR_BUFFER_MS
|
|
608
616
|
guard let api = api else {
|
|
609
617
|
NSLog("PolarBridge: Polar API not initialized")
|
|
610
618
|
return
|
|
@@ -622,7 +630,7 @@ class PolarBridge: RCTEventEmitter, ObservableObject
|
|
|
622
630
|
}
|
|
623
631
|
|
|
624
632
|
isPpgStreaming = true
|
|
625
|
-
startPpgFlushTimer()
|
|
633
|
+
startPpgFlushTimer(bufferMs: resolvedBufferMs)
|
|
626
634
|
|
|
627
635
|
ppgDisposable = requestStreamSettings(deviceId, feature: .ppg)
|
|
628
636
|
.flatMap { settings in
|
|
@@ -949,4 +957,8 @@ extension PolarBridge: PolarBleApiDeviceInfoObserver {
|
|
|
949
957
|
batteryReceived = true
|
|
950
958
|
maybeResolve()
|
|
951
959
|
}
|
|
960
|
+
|
|
961
|
+
func batteryChargingStatusReceived(_ identifier: String, chargingStatus: BleBasClient.ChargeState) {
|
|
962
|
+
NSLog("Polar: Battery Charging status for \(identifier): \(chargingStatus)")
|
|
963
|
+
}
|
|
952
964
|
}
|
|
@@ -39,19 +39,19 @@ namespace facebook::react {
|
|
|
39
39
|
}
|
|
40
40
|
|
|
41
41
|
static facebook::jsi::Value __hostFunction_NativePolarBridgeSpecJSI_fetchHrData(facebook::jsi::Runtime& rt, TurboModule &turboModule, const facebook::jsi::Value* args, size_t count) {
|
|
42
|
-
return static_cast<ObjCTurboModule&>(turboModule).invokeObjCMethod(rt, VoidKind, "fetchHrData", @selector(fetchHrData:), args, count);
|
|
42
|
+
return static_cast<ObjCTurboModule&>(turboModule).invokeObjCMethod(rt, VoidKind, "fetchHrData", @selector(fetchHrData:bufferMs:), args, count);
|
|
43
43
|
}
|
|
44
44
|
|
|
45
45
|
static facebook::jsi::Value __hostFunction_NativePolarBridgeSpecJSI_fetchAccData(facebook::jsi::Runtime& rt, TurboModule &turboModule, const facebook::jsi::Value* args, size_t count) {
|
|
46
|
-
return static_cast<ObjCTurboModule&>(turboModule).invokeObjCMethod(rt, VoidKind, "fetchAccData", @selector(fetchAccData:), args, count);
|
|
46
|
+
return static_cast<ObjCTurboModule&>(turboModule).invokeObjCMethod(rt, VoidKind, "fetchAccData", @selector(fetchAccData:bufferMs:), args, count);
|
|
47
47
|
}
|
|
48
48
|
|
|
49
49
|
static facebook::jsi::Value __hostFunction_NativePolarBridgeSpecJSI_fetchGyrData(facebook::jsi::Runtime& rt, TurboModule &turboModule, const facebook::jsi::Value* args, size_t count) {
|
|
50
|
-
return static_cast<ObjCTurboModule&>(turboModule).invokeObjCMethod(rt, VoidKind, "fetchGyrData", @selector(fetchGyrData:), args, count);
|
|
50
|
+
return static_cast<ObjCTurboModule&>(turboModule).invokeObjCMethod(rt, VoidKind, "fetchGyrData", @selector(fetchGyrData:bufferMs:), args, count);
|
|
51
51
|
}
|
|
52
52
|
|
|
53
53
|
static facebook::jsi::Value __hostFunction_NativePolarBridgeSpecJSI_fetchPpgData(facebook::jsi::Runtime& rt, TurboModule &turboModule, const facebook::jsi::Value* args, size_t count) {
|
|
54
|
-
return static_cast<ObjCTurboModule&>(turboModule).invokeObjCMethod(rt, VoidKind, "fetchPpgData", @selector(fetchPpgData:), args, count);
|
|
54
|
+
return static_cast<ObjCTurboModule&>(turboModule).invokeObjCMethod(rt, VoidKind, "fetchPpgData", @selector(fetchPpgData:bufferMs:), args, count);
|
|
55
55
|
}
|
|
56
56
|
|
|
57
57
|
static facebook::jsi::Value __hostFunction_NativePolarBridgeSpecJSI_enableSdkMode(facebook::jsi::Runtime& rt, TurboModule &turboModule, const facebook::jsi::Value* args, size_t count) {
|
|
@@ -134,16 +134,16 @@ namespace facebook::react {
|
|
|
134
134
|
methodMap_["disconnectFromDevice"] = MethodMetadata {1, __hostFunction_NativePolarBridgeSpecJSI_disconnectFromDevice};
|
|
135
135
|
|
|
136
136
|
|
|
137
|
-
methodMap_["fetchHrData"] = MethodMetadata {
|
|
137
|
+
methodMap_["fetchHrData"] = MethodMetadata {2, __hostFunction_NativePolarBridgeSpecJSI_fetchHrData};
|
|
138
138
|
|
|
139
139
|
|
|
140
|
-
methodMap_["fetchAccData"] = MethodMetadata {
|
|
140
|
+
methodMap_["fetchAccData"] = MethodMetadata {2, __hostFunction_NativePolarBridgeSpecJSI_fetchAccData};
|
|
141
141
|
|
|
142
142
|
|
|
143
|
-
methodMap_["fetchGyrData"] = MethodMetadata {
|
|
143
|
+
methodMap_["fetchGyrData"] = MethodMetadata {2, __hostFunction_NativePolarBridgeSpecJSI_fetchGyrData};
|
|
144
144
|
|
|
145
145
|
|
|
146
|
-
methodMap_["fetchPpgData"] = MethodMetadata {
|
|
146
|
+
methodMap_["fetchPpgData"] = MethodMetadata {2, __hostFunction_NativePolarBridgeSpecJSI_fetchPpgData};
|
|
147
147
|
|
|
148
148
|
|
|
149
149
|
methodMap_["enableSdkMode"] = MethodMetadata {1, __hostFunction_NativePolarBridgeSpecJSI_enableSdkMode};
|
|
@@ -41,10 +41,14 @@ NS_ASSUME_NONNULL_BEGIN
|
|
|
41
41
|
resolve:(RCTPromiseResolveBlock)resolve
|
|
42
42
|
reject:(RCTPromiseRejectBlock)reject;
|
|
43
43
|
- (void)disconnectFromDevice:(NSString *)deviceId;
|
|
44
|
-
- (void)fetchHrData:(NSString *)deviceId
|
|
45
|
-
|
|
46
|
-
- (void)
|
|
47
|
-
|
|
44
|
+
- (void)fetchHrData:(NSString *)deviceId
|
|
45
|
+
bufferMs:(NSNumber *)bufferMs;
|
|
46
|
+
- (void)fetchAccData:(NSString *)deviceId
|
|
47
|
+
bufferMs:(NSNumber *)bufferMs;
|
|
48
|
+
- (void)fetchGyrData:(NSString *)deviceId
|
|
49
|
+
bufferMs:(NSNumber *)bufferMs;
|
|
50
|
+
- (void)fetchPpgData:(NSString *)deviceId
|
|
51
|
+
bufferMs:(NSNumber *)bufferMs;
|
|
48
52
|
- (void)enableSdkMode:(NSString *)deviceId;
|
|
49
53
|
- (void)disableSdkMode:(NSString *)deviceId;
|
|
50
54
|
- (void)getDeviceTime:(NSString *)deviceId
|
|
@@ -34,28 +34,32 @@ static jsi::Value __hostFunction_NativePolarBridgeCxxSpecJSI_disconnectFromDevic
|
|
|
34
34
|
static jsi::Value __hostFunction_NativePolarBridgeCxxSpecJSI_fetchHrData(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) {
|
|
35
35
|
static_cast<NativePolarBridgeCxxSpecJSI *>(&turboModule)->fetchHrData(
|
|
36
36
|
rt,
|
|
37
|
-
count <= 0 ? throw jsi::JSError(rt, "Expected argument in position 0 to be passed") : args[0].asString(rt)
|
|
37
|
+
count <= 0 ? throw jsi::JSError(rt, "Expected argument in position 0 to be passed") : args[0].asString(rt),
|
|
38
|
+
count <= 1 || args[1].isNull() || args[1].isUndefined() ? std::nullopt : std::make_optional(args[1].asNumber())
|
|
38
39
|
);
|
|
39
40
|
return jsi::Value::undefined();
|
|
40
41
|
}
|
|
41
42
|
static jsi::Value __hostFunction_NativePolarBridgeCxxSpecJSI_fetchAccData(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) {
|
|
42
43
|
static_cast<NativePolarBridgeCxxSpecJSI *>(&turboModule)->fetchAccData(
|
|
43
44
|
rt,
|
|
44
|
-
count <= 0 ? throw jsi::JSError(rt, "Expected argument in position 0 to be passed") : args[0].asString(rt)
|
|
45
|
+
count <= 0 ? throw jsi::JSError(rt, "Expected argument in position 0 to be passed") : args[0].asString(rt),
|
|
46
|
+
count <= 1 || args[1].isNull() || args[1].isUndefined() ? std::nullopt : std::make_optional(args[1].asNumber())
|
|
45
47
|
);
|
|
46
48
|
return jsi::Value::undefined();
|
|
47
49
|
}
|
|
48
50
|
static jsi::Value __hostFunction_NativePolarBridgeCxxSpecJSI_fetchGyrData(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) {
|
|
49
51
|
static_cast<NativePolarBridgeCxxSpecJSI *>(&turboModule)->fetchGyrData(
|
|
50
52
|
rt,
|
|
51
|
-
count <= 0 ? throw jsi::JSError(rt, "Expected argument in position 0 to be passed") : args[0].asString(rt)
|
|
53
|
+
count <= 0 ? throw jsi::JSError(rt, "Expected argument in position 0 to be passed") : args[0].asString(rt),
|
|
54
|
+
count <= 1 || args[1].isNull() || args[1].isUndefined() ? std::nullopt : std::make_optional(args[1].asNumber())
|
|
52
55
|
);
|
|
53
56
|
return jsi::Value::undefined();
|
|
54
57
|
}
|
|
55
58
|
static jsi::Value __hostFunction_NativePolarBridgeCxxSpecJSI_fetchPpgData(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) {
|
|
56
59
|
static_cast<NativePolarBridgeCxxSpecJSI *>(&turboModule)->fetchPpgData(
|
|
57
60
|
rt,
|
|
58
|
-
count <= 0 ? throw jsi::JSError(rt, "Expected argument in position 0 to be passed") : args[0].asString(rt)
|
|
61
|
+
count <= 0 ? throw jsi::JSError(rt, "Expected argument in position 0 to be passed") : args[0].asString(rt),
|
|
62
|
+
count <= 1 || args[1].isNull() || args[1].isUndefined() ? std::nullopt : std::make_optional(args[1].asNumber())
|
|
59
63
|
);
|
|
60
64
|
return jsi::Value::undefined();
|
|
61
65
|
}
|
|
@@ -178,10 +182,10 @@ NativePolarBridgeCxxSpecJSI::NativePolarBridgeCxxSpecJSI(std::shared_ptr<CallInv
|
|
|
178
182
|
methodMap_["multiply"] = MethodMetadata {2, __hostFunction_NativePolarBridgeCxxSpecJSI_multiply};
|
|
179
183
|
methodMap_["connectToDevice"] = MethodMetadata {1, __hostFunction_NativePolarBridgeCxxSpecJSI_connectToDevice};
|
|
180
184
|
methodMap_["disconnectFromDevice"] = MethodMetadata {1, __hostFunction_NativePolarBridgeCxxSpecJSI_disconnectFromDevice};
|
|
181
|
-
methodMap_["fetchHrData"] = MethodMetadata {
|
|
182
|
-
methodMap_["fetchAccData"] = MethodMetadata {
|
|
183
|
-
methodMap_["fetchGyrData"] = MethodMetadata {
|
|
184
|
-
methodMap_["fetchPpgData"] = MethodMetadata {
|
|
185
|
+
methodMap_["fetchHrData"] = MethodMetadata {2, __hostFunction_NativePolarBridgeCxxSpecJSI_fetchHrData};
|
|
186
|
+
methodMap_["fetchAccData"] = MethodMetadata {2, __hostFunction_NativePolarBridgeCxxSpecJSI_fetchAccData};
|
|
187
|
+
methodMap_["fetchGyrData"] = MethodMetadata {2, __hostFunction_NativePolarBridgeCxxSpecJSI_fetchGyrData};
|
|
188
|
+
methodMap_["fetchPpgData"] = MethodMetadata {2, __hostFunction_NativePolarBridgeCxxSpecJSI_fetchPpgData};
|
|
185
189
|
methodMap_["enableSdkMode"] = MethodMetadata {1, __hostFunction_NativePolarBridgeCxxSpecJSI_enableSdkMode};
|
|
186
190
|
methodMap_["disableSdkMode"] = MethodMetadata {1, __hostFunction_NativePolarBridgeCxxSpecJSI_disableSdkMode};
|
|
187
191
|
methodMap_["getDeviceTime"] = MethodMetadata {1, __hostFunction_NativePolarBridgeCxxSpecJSI_getDeviceTime};
|
|
@@ -23,10 +23,10 @@ public:
|
|
|
23
23
|
virtual double multiply(jsi::Runtime &rt, double a, double b) = 0;
|
|
24
24
|
virtual jsi::Value connectToDevice(jsi::Runtime &rt, jsi::String deviceId) = 0;
|
|
25
25
|
virtual void disconnectFromDevice(jsi::Runtime &rt, jsi::String deviceId) = 0;
|
|
26
|
-
virtual void fetchHrData(jsi::Runtime &rt, jsi::String deviceId) = 0;
|
|
27
|
-
virtual void fetchAccData(jsi::Runtime &rt, jsi::String deviceId) = 0;
|
|
28
|
-
virtual void fetchGyrData(jsi::Runtime &rt, jsi::String deviceId) = 0;
|
|
29
|
-
virtual void fetchPpgData(jsi::Runtime &rt, jsi::String deviceId) = 0;
|
|
26
|
+
virtual void fetchHrData(jsi::Runtime &rt, jsi::String deviceId, std::optional<double> bufferMs) = 0;
|
|
27
|
+
virtual void fetchAccData(jsi::Runtime &rt, jsi::String deviceId, std::optional<double> bufferMs) = 0;
|
|
28
|
+
virtual void fetchGyrData(jsi::Runtime &rt, jsi::String deviceId, std::optional<double> bufferMs) = 0;
|
|
29
|
+
virtual void fetchPpgData(jsi::Runtime &rt, jsi::String deviceId, std::optional<double> bufferMs) = 0;
|
|
30
30
|
virtual void enableSdkMode(jsi::Runtime &rt, jsi::String deviceId) = 0;
|
|
31
31
|
virtual void disableSdkMode(jsi::Runtime &rt, jsi::String deviceId) = 0;
|
|
32
32
|
virtual jsi::Value getDeviceTime(jsi::Runtime &rt, jsi::String deviceId) = 0;
|
|
@@ -98,37 +98,37 @@ private:
|
|
|
98
98
|
return bridging::callFromJs<void>(
|
|
99
99
|
rt, &T::disconnectFromDevice, jsInvoker_, instance_, std::move(deviceId));
|
|
100
100
|
}
|
|
101
|
-
void fetchHrData(jsi::Runtime &rt, jsi::String deviceId) override {
|
|
101
|
+
void fetchHrData(jsi::Runtime &rt, jsi::String deviceId, std::optional<double> bufferMs) override {
|
|
102
102
|
static_assert(
|
|
103
|
-
bridging::getParameterCount(&T::fetchHrData) ==
|
|
104
|
-
"Expected fetchHrData(...) to have
|
|
103
|
+
bridging::getParameterCount(&T::fetchHrData) == 3,
|
|
104
|
+
"Expected fetchHrData(...) to have 3 parameters");
|
|
105
105
|
|
|
106
106
|
return bridging::callFromJs<void>(
|
|
107
|
-
rt, &T::fetchHrData, jsInvoker_, instance_, std::move(deviceId));
|
|
107
|
+
rt, &T::fetchHrData, jsInvoker_, instance_, std::move(deviceId), std::move(bufferMs));
|
|
108
108
|
}
|
|
109
|
-
void fetchAccData(jsi::Runtime &rt, jsi::String deviceId) override {
|
|
109
|
+
void fetchAccData(jsi::Runtime &rt, jsi::String deviceId, std::optional<double> bufferMs) override {
|
|
110
110
|
static_assert(
|
|
111
|
-
bridging::getParameterCount(&T::fetchAccData) ==
|
|
112
|
-
"Expected fetchAccData(...) to have
|
|
111
|
+
bridging::getParameterCount(&T::fetchAccData) == 3,
|
|
112
|
+
"Expected fetchAccData(...) to have 3 parameters");
|
|
113
113
|
|
|
114
114
|
return bridging::callFromJs<void>(
|
|
115
|
-
rt, &T::fetchAccData, jsInvoker_, instance_, std::move(deviceId));
|
|
115
|
+
rt, &T::fetchAccData, jsInvoker_, instance_, std::move(deviceId), std::move(bufferMs));
|
|
116
116
|
}
|
|
117
|
-
void fetchGyrData(jsi::Runtime &rt, jsi::String deviceId) override {
|
|
117
|
+
void fetchGyrData(jsi::Runtime &rt, jsi::String deviceId, std::optional<double> bufferMs) override {
|
|
118
118
|
static_assert(
|
|
119
|
-
bridging::getParameterCount(&T::fetchGyrData) ==
|
|
120
|
-
"Expected fetchGyrData(...) to have
|
|
119
|
+
bridging::getParameterCount(&T::fetchGyrData) == 3,
|
|
120
|
+
"Expected fetchGyrData(...) to have 3 parameters");
|
|
121
121
|
|
|
122
122
|
return bridging::callFromJs<void>(
|
|
123
|
-
rt, &T::fetchGyrData, jsInvoker_, instance_, std::move(deviceId));
|
|
123
|
+
rt, &T::fetchGyrData, jsInvoker_, instance_, std::move(deviceId), std::move(bufferMs));
|
|
124
124
|
}
|
|
125
|
-
void fetchPpgData(jsi::Runtime &rt, jsi::String deviceId) override {
|
|
125
|
+
void fetchPpgData(jsi::Runtime &rt, jsi::String deviceId, std::optional<double> bufferMs) override {
|
|
126
126
|
static_assert(
|
|
127
|
-
bridging::getParameterCount(&T::fetchPpgData) ==
|
|
128
|
-
"Expected fetchPpgData(...) to have
|
|
127
|
+
bridging::getParameterCount(&T::fetchPpgData) == 3,
|
|
128
|
+
"Expected fetchPpgData(...) to have 3 parameters");
|
|
129
129
|
|
|
130
130
|
return bridging::callFromJs<void>(
|
|
131
|
-
rt, &T::fetchPpgData, jsInvoker_, instance_, std::move(deviceId));
|
|
131
|
+
rt, &T::fetchPpgData, jsInvoker_, instance_, std::move(deviceId), std::move(bufferMs));
|
|
132
132
|
}
|
|
133
133
|
void enableSdkMode(jsi::Runtime &rt, jsi::String deviceId) override {
|
|
134
134
|
static_assert(
|
|
@@ -6,10 +6,10 @@ export interface Spec extends TurboModule {
|
|
|
6
6
|
multiply(a: number, b: number): number;
|
|
7
7
|
connectToDevice(deviceId: string): Promise<DeviceConnected>;
|
|
8
8
|
disconnectFromDevice(deviceId: string): void;
|
|
9
|
-
fetchHrData(deviceId: string): void;
|
|
10
|
-
fetchAccData(deviceId: string): void;
|
|
11
|
-
fetchGyrData(deviceId: string): void;
|
|
12
|
-
fetchPpgData(deviceId: string): void;
|
|
9
|
+
fetchHrData(deviceId: string, bufferMs: number | null): void;
|
|
10
|
+
fetchAccData(deviceId: string, bufferMs: number | null): void;
|
|
11
|
+
fetchGyrData(deviceId: string, bufferMs: number | null): void;
|
|
12
|
+
fetchPpgData(deviceId: string, bufferMs: number | null): void;
|
|
13
13
|
enableSdkMode(deviceId: string): void;
|
|
14
14
|
disableSdkMode(deviceId: string): void;
|
|
15
15
|
getDeviceTime(deviceId: string): Promise<DeviceTime>;
|
package/lib/module/index.js
CHANGED
|
@@ -13,17 +13,17 @@ export function disconnectFromDevice(deviceId) {
|
|
|
13
13
|
export function scanDevices() {
|
|
14
14
|
return PolarBridge.scanDevices();
|
|
15
15
|
}
|
|
16
|
-
export function fetchHrData(deviceId) {
|
|
17
|
-
return PolarBridge.fetchHrData(deviceId);
|
|
16
|
+
export function fetchHrData(deviceId, bufferMs = null) {
|
|
17
|
+
return PolarBridge.fetchHrData(deviceId, bufferMs);
|
|
18
18
|
}
|
|
19
|
-
export function fetchAccData(deviceId) {
|
|
20
|
-
return PolarBridge.fetchAccData(deviceId);
|
|
19
|
+
export function fetchAccData(deviceId, bufferMs = null) {
|
|
20
|
+
return PolarBridge.fetchAccData(deviceId, bufferMs);
|
|
21
21
|
}
|
|
22
|
-
export function fetchGyrData(deviceId) {
|
|
23
|
-
return PolarBridge.fetchGyrData(deviceId);
|
|
22
|
+
export function fetchGyrData(deviceId, bufferMs = null) {
|
|
23
|
+
return PolarBridge.fetchGyrData(deviceId, bufferMs);
|
|
24
24
|
}
|
|
25
|
-
export function fetchPpgData(deviceId) {
|
|
26
|
-
return PolarBridge.fetchPpgData(deviceId);
|
|
25
|
+
export function fetchPpgData(deviceId, bufferMs = null) {
|
|
26
|
+
return PolarBridge.fetchPpgData(deviceId, bufferMs);
|
|
27
27
|
}
|
|
28
28
|
export function enableSdkMode(deviceId) {
|
|
29
29
|
return PolarBridge.enableSdkMode(deviceId);
|
package/lib/module/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["PolarBridge","multiply","a","b","connectToDevice","deviceId","disconnectFromDevice","scanDevices","fetchHrData","fetchAccData","fetchGyrData","fetchPpgData","enableSdkMode","disableSdkMode","setDeviceTime","getDeviceTime","getDiskSpace","doFactoryReset","startOfflineRecording","features","stopOfflineRecording","setPolarRecordingTrigger","recordingMode","fetchOfflineRecordings","downloadOfflineRecordings","deleteAllOfflineRecordings","disposeHrStream","disposeAccStream","disposeGyrStream","disposePpgStream","emittedEventId","Object","freeze","SCAN_DEVICE_FOUND","SCAN_DEVICE_ERROR","SCAN_DEVICE_COMPLETE","POLAR_DEVICE_TIME","POLAR_HR_DATA","POLAR_HR_ERROR","POLAR_HR_COMPLETE","POLAR_ACC_DATA","POLAR_ACC_ERROR","POLAR_ACC_COMPLETE","POLAR_GYR_DATA","POLAR_GYR_ERROR","POLAR_GYR_COMPLETE","POLAR_PPG_DATA","POLAR_PPG_ERROR","POLAR_PPG_COMPLETE","POLAR_DISK_SPACE","POLAR_OFFLINE_RECORDING","OfflineRecordingFeature","OFFLINE_HR","OFFLINE_ACC","OFFLINE_GYR","OFFLINE_PPG","OFFLINE_MAG","OFFLINE_PPI","OfflineRecordingTriggerMode","TRIGGER_DISABLED","TRIGGER_SYSTEM_START","TRIGGER_EXERCISE_START"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":";;AAAA,OAAOA,WAAW,MAAM,qBAAqB;AAE7C,OAAO,SAASC,QAAQA,CAACC,CAAS,EAAEC,CAAS,EAAU;EACrD,OAAOH,WAAW,CAACC,QAAQ,CAACC,CAAC,EAAEC,CAAC,CAAC;AACnC;AAEA,OAAO,SAASC,eAAeA,CAACC,QAAgB,EAAE;EAChD,OAAOL,WAAW,CAACI,eAAe,CAACC,QAAQ,CAAC;AAC9C;AAEA,OAAO,SAASC,oBAAoBA,CAACD,QAAgB,EAAE;EACrD,OAAOL,WAAW,CAACM,oBAAoB,CAACD,QAAQ,CAAC;AACnD;AAEA,OAAO,SAASE,WAAWA,CAAA,EAAG;EAC5B,OAAOP,WAAW,CAACO,WAAW,CAAC,CAAC;AAClC;AAEA,OAAO,SAASC,WAAWA,CAACH,QAAgB,EAAE;
|
|
1
|
+
{"version":3,"names":["PolarBridge","multiply","a","b","connectToDevice","deviceId","disconnectFromDevice","scanDevices","fetchHrData","bufferMs","fetchAccData","fetchGyrData","fetchPpgData","enableSdkMode","disableSdkMode","setDeviceTime","getDeviceTime","getDiskSpace","doFactoryReset","startOfflineRecording","features","stopOfflineRecording","setPolarRecordingTrigger","recordingMode","fetchOfflineRecordings","downloadOfflineRecordings","deleteAllOfflineRecordings","disposeHrStream","disposeAccStream","disposeGyrStream","disposePpgStream","emittedEventId","Object","freeze","SCAN_DEVICE_FOUND","SCAN_DEVICE_ERROR","SCAN_DEVICE_COMPLETE","POLAR_DEVICE_TIME","POLAR_HR_DATA","POLAR_HR_ERROR","POLAR_HR_COMPLETE","POLAR_ACC_DATA","POLAR_ACC_ERROR","POLAR_ACC_COMPLETE","POLAR_GYR_DATA","POLAR_GYR_ERROR","POLAR_GYR_COMPLETE","POLAR_PPG_DATA","POLAR_PPG_ERROR","POLAR_PPG_COMPLETE","POLAR_DISK_SPACE","POLAR_OFFLINE_RECORDING","OfflineRecordingFeature","OFFLINE_HR","OFFLINE_ACC","OFFLINE_GYR","OFFLINE_PPG","OFFLINE_MAG","OFFLINE_PPI","OfflineRecordingTriggerMode","TRIGGER_DISABLED","TRIGGER_SYSTEM_START","TRIGGER_EXERCISE_START"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -4,10 +4,10 @@ export interface Spec extends TurboModule {
|
|
|
4
4
|
multiply(a: number, b: number): number;
|
|
5
5
|
connectToDevice(deviceId: string): Promise<DeviceConnected>;
|
|
6
6
|
disconnectFromDevice(deviceId: string): void;
|
|
7
|
-
fetchHrData(deviceId: string): void;
|
|
8
|
-
fetchAccData(deviceId: string): void;
|
|
9
|
-
fetchGyrData(deviceId: string): void;
|
|
10
|
-
fetchPpgData(deviceId: string): void;
|
|
7
|
+
fetchHrData(deviceId: string, bufferMs: number | null): void;
|
|
8
|
+
fetchAccData(deviceId: string, bufferMs: number | null): void;
|
|
9
|
+
fetchGyrData(deviceId: string, bufferMs: number | null): void;
|
|
10
|
+
fetchPpgData(deviceId: string, bufferMs: number | null): void;
|
|
11
11
|
enableSdkMode(deviceId: string): void;
|
|
12
12
|
disableSdkMode(deviceId: string): void;
|
|
13
13
|
getDeviceTime(deviceId: string): Promise<DeviceTime>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NativePolarBridge.d.ts","sourceRoot":"","sources":["../../../src/NativePolarBridge.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAEhD,OAAO,KAAK,EAAE,eAAe,EAAE,UAAU,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEjG,MAAM,WAAW,IAAK,SAAQ,WAAW;IACvC,QAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACvC,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;IAC5D,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7C,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"NativePolarBridge.d.ts","sourceRoot":"","sources":["../../../src/NativePolarBridge.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAEhD,OAAO,KAAK,EAAE,eAAe,EAAE,UAAU,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEjG,MAAM,WAAW,IAAK,SAAQ,WAAW;IACvC,QAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACvC,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;IAC5D,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7C,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC;IAC7D,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC;IAC9D,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC;IAC9D,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC;IAC9D,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACtC,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACvC,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IACrD,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACtC,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;IACnD,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACvC,qBAAqB,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IAC1E,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IACzE,wBAAwB,CAAC,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAC5F,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAC;IACtE,yBAAyB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IAClD,0BAA0B,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACnD,WAAW,IAAI,IAAI,CAAC;IACpB,eAAe,IAAI,IAAI,CAAC;IACxB,gBAAgB,IAAI,IAAI,CAAC;IACzB,gBAAgB,IAAI,IAAI,CAAC;IACzB,gBAAgB,IAAI,IAAI,CAAC;CAC1B;;AAED,wBAAqE"}
|
|
@@ -2,10 +2,10 @@ export declare function multiply(a: number, b: number): number;
|
|
|
2
2
|
export declare function connectToDevice(deviceId: string): Promise<import("./PolarDataModel").DeviceConnected>;
|
|
3
3
|
export declare function disconnectFromDevice(deviceId: string): void;
|
|
4
4
|
export declare function scanDevices(): void;
|
|
5
|
-
export declare function fetchHrData(deviceId: string): void;
|
|
6
|
-
export declare function fetchAccData(deviceId: string): void;
|
|
7
|
-
export declare function fetchGyrData(deviceId: string): void;
|
|
8
|
-
export declare function fetchPpgData(deviceId: string): void;
|
|
5
|
+
export declare function fetchHrData(deviceId: string, bufferMs?: number | null): void;
|
|
6
|
+
export declare function fetchAccData(deviceId: string, bufferMs?: number | null): void;
|
|
7
|
+
export declare function fetchGyrData(deviceId: string, bufferMs?: number | null): void;
|
|
8
|
+
export declare function fetchPpgData(deviceId: string, bufferMs?: number | null): void;
|
|
9
9
|
export declare function enableSdkMode(deviceId: string): void;
|
|
10
10
|
export declare function disableSdkMode(deviceId: string): void;
|
|
11
11
|
export declare function setDeviceTime(deviceId: string): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.tsx"],"names":[],"mappings":"AAEA,wBAAgB,QAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAErD;AAED,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,uDAE/C;AAED,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,QAEpD;AAED,wBAAgB,WAAW,SAE1B;AAED,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.tsx"],"names":[],"mappings":"AAEA,wBAAgB,QAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAErD;AAED,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,uDAE/C;AAED,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,QAEpD;AAED,wBAAgB,WAAW,SAE1B;AAED,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,GAAE,MAAM,GAAG,IAAW,QAE3E;AAED,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,GAAE,MAAM,GAAG,IAAW,QAE5E;AAED,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,GAAE,MAAM,GAAG,IAAW,QAE5E;AAED,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,GAAE,MAAM,GAAG,IAAW,QAE5E;AAED,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,QAE7C;AAED,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,QAE9C;AAED,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,QAE7C;AAED,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,kDAE7C;AAED,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,iDAE5C;AAED,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,QAE9C;AAED,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,gBAEzE;AAED,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,gBAExE;AAED,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAEnG;AAED,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,0DAEtD;AAED,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,MAAM,QAEzD;AAED,wBAAgB,0BAA0B,CAAC,QAAQ,EAAE,MAAM,QAE1D;AAED,wBAAgB,eAAe,SAE9B;AAED,wBAAgB,gBAAgB,SAE/B;AAED,wBAAgB,gBAAgB,SAE/B;AAED,wBAAgB,gBAAgB,SAE/B;AAED,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;EAmBzB,CAAC;AAEH,eAAO,MAAM,uBAAuB;;;;;;;EAOlC,CAAC;AAEH,eAAO,MAAM,2BAA2B;;;;EAItC,CAAC"}
|
package/package.json
CHANGED
package/src/NativePolarBridge.ts
CHANGED
|
@@ -6,10 +6,10 @@ export interface Spec extends TurboModule {
|
|
|
6
6
|
multiply(a: number, b: number): number;
|
|
7
7
|
connectToDevice(deviceId: string): Promise<DeviceConnected>;
|
|
8
8
|
disconnectFromDevice(deviceId: string): void;
|
|
9
|
-
fetchHrData(deviceId: string): void;
|
|
10
|
-
fetchAccData(deviceId: string): void;
|
|
11
|
-
fetchGyrData(deviceId: string): void;
|
|
12
|
-
fetchPpgData(deviceId: string): void;
|
|
9
|
+
fetchHrData(deviceId: string, bufferMs: number | null): void;
|
|
10
|
+
fetchAccData(deviceId: string, bufferMs: number | null): void;
|
|
11
|
+
fetchGyrData(deviceId: string, bufferMs: number | null): void;
|
|
12
|
+
fetchPpgData(deviceId: string, bufferMs: number | null): void;
|
|
13
13
|
enableSdkMode(deviceId: string): void;
|
|
14
14
|
disableSdkMode(deviceId: string): void;
|
|
15
15
|
getDeviceTime(deviceId: string): Promise<DeviceTime>;
|
package/src/index.tsx
CHANGED
|
@@ -16,20 +16,20 @@ export function scanDevices() {
|
|
|
16
16
|
return PolarBridge.scanDevices();
|
|
17
17
|
}
|
|
18
18
|
|
|
19
|
-
export function fetchHrData(deviceId: string) {
|
|
20
|
-
return PolarBridge.fetchHrData(deviceId);
|
|
19
|
+
export function fetchHrData(deviceId: string, bufferMs: number | null = null) {
|
|
20
|
+
return PolarBridge.fetchHrData(deviceId, bufferMs);
|
|
21
21
|
}
|
|
22
22
|
|
|
23
|
-
export function fetchAccData(deviceId: string) {
|
|
24
|
-
return PolarBridge.fetchAccData(deviceId);
|
|
23
|
+
export function fetchAccData(deviceId: string, bufferMs: number | null = null) {
|
|
24
|
+
return PolarBridge.fetchAccData(deviceId, bufferMs);
|
|
25
25
|
}
|
|
26
26
|
|
|
27
|
-
export function fetchGyrData(deviceId: string) {
|
|
28
|
-
return PolarBridge.fetchGyrData(deviceId);
|
|
27
|
+
export function fetchGyrData(deviceId: string, bufferMs: number | null = null) {
|
|
28
|
+
return PolarBridge.fetchGyrData(deviceId, bufferMs);
|
|
29
29
|
}
|
|
30
30
|
|
|
31
|
-
export function fetchPpgData(deviceId: string) {
|
|
32
|
-
return PolarBridge.fetchPpgData(deviceId);
|
|
31
|
+
export function fetchPpgData(deviceId: string, bufferMs: number | null = null) {
|
|
32
|
+
return PolarBridge.fetchPpgData(deviceId, bufferMs);
|
|
33
33
|
}
|
|
34
34
|
|
|
35
35
|
export function enableSdkMode(deviceId: string) {
|