react-native-polar-bridge 0.2.2 → 0.2.4
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 +45 -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,12 @@ 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
|
+
let resolvedBufferMs: TimeInterval = ((bufferMs as? NSNumber)?.doubleValue ?? -1) >= 0
|
|
214
|
+
? bufferMs!.doubleValue
|
|
215
|
+
: SENSOR_BUFFER_MS
|
|
215
216
|
guard let api = api else {
|
|
216
217
|
NSLog("PolarBridge: Polar API not initialized")
|
|
217
218
|
return
|
|
@@ -230,7 +231,7 @@ class PolarBridge: RCTEventEmitter, ObservableObject
|
|
|
230
231
|
}
|
|
231
232
|
|
|
232
233
|
isHrStreaming = true
|
|
233
|
-
startHrFlushTimer()
|
|
234
|
+
startHrFlushTimer(bufferMs: resolvedBufferMs)
|
|
234
235
|
|
|
235
236
|
// Start HR streaming
|
|
236
237
|
hrDisposable = api.startHrStreaming(deviceId)
|
|
@@ -296,14 +297,14 @@ class PolarBridge: RCTEventEmitter, ObservableObject
|
|
|
296
297
|
private let ppgBufferQueue = DispatchQueue(label: "com.polarbridge.ppgBufferQueue")
|
|
297
298
|
private var ppgFlushTimer: Timer?
|
|
298
299
|
|
|
299
|
-
private func startAccFlushTimer() {
|
|
300
|
+
private func startAccFlushTimer(bufferMs: TimeInterval) {
|
|
300
301
|
stopAccFlushTimer()
|
|
301
|
-
|
|
302
|
+
let intervalSeconds = bufferMs / 1000.0
|
|
302
303
|
DispatchQueue.main.async { [weak self] in
|
|
303
304
|
guard let self = self else { return }
|
|
304
305
|
|
|
305
306
|
self.accFlushTimer = Timer(
|
|
306
|
-
timeInterval:
|
|
307
|
+
timeInterval: intervalSeconds,
|
|
307
308
|
repeats: true
|
|
308
309
|
) { [weak self] _ in
|
|
309
310
|
self?.flushAccBuffer()
|
|
@@ -339,10 +340,12 @@ class PolarBridge: RCTEventEmitter, ObservableObject
|
|
|
339
340
|
}
|
|
340
341
|
}
|
|
341
342
|
|
|
342
|
-
@objc(fetchAccData:)
|
|
343
|
-
func fetchAccData(_ deviceId: String) {
|
|
343
|
+
@objc(fetchAccData:bufferMs:)
|
|
344
|
+
func fetchAccData(_ deviceId: String, bufferMs: NSNumber?) {
|
|
344
345
|
NSLog("PolarBridge: Fetch ACC Data called on: \(deviceId)")
|
|
345
|
-
|
|
346
|
+
let resolvedBufferMs: TimeInterval = ((bufferMs as? NSNumber)?.doubleValue ?? -1) >= 0
|
|
347
|
+
? bufferMs!.doubleValue
|
|
348
|
+
: SENSOR_BUFFER_MS
|
|
346
349
|
guard let api = api else {
|
|
347
350
|
NSLog("PolarBridge: Polar API not initialized")
|
|
348
351
|
return
|
|
@@ -361,11 +364,11 @@ class PolarBridge: RCTEventEmitter, ObservableObject
|
|
|
361
364
|
}
|
|
362
365
|
|
|
363
366
|
isAccStreaming = true
|
|
364
|
-
startAccFlushTimer()
|
|
367
|
+
startAccFlushTimer(bufferMs: resolvedBufferMs)
|
|
365
368
|
|
|
366
369
|
accDisposable = requestStreamSettings(deviceId, feature: .acc)
|
|
367
370
|
.flatMap { settings in
|
|
368
|
-
api.startAccStreaming(deviceId, settings: settings)
|
|
371
|
+
api.startAccStreaming(deviceId, settings: settings).asObservable()
|
|
369
372
|
}
|
|
370
373
|
.observe(on: MainScheduler.instance)
|
|
371
374
|
.subscribe(
|
|
@@ -373,7 +376,7 @@ class PolarBridge: RCTEventEmitter, ObservableObject
|
|
|
373
376
|
guard let self = self else { return }
|
|
374
377
|
|
|
375
378
|
self.accBufferQueue.async {
|
|
376
|
-
for sample in accData
|
|
379
|
+
for sample in accData {
|
|
377
380
|
NSLog("ACC x: \(sample.x) y: \(sample.y) z: \(sample.z) timestamp: \(sample.timeStamp)")
|
|
378
381
|
|
|
379
382
|
var event: [String: Any] = [:]
|
|
@@ -424,14 +427,14 @@ class PolarBridge: RCTEventEmitter, ObservableObject
|
|
|
424
427
|
accDisposable?.disposed(by: disposeBag)
|
|
425
428
|
}
|
|
426
429
|
|
|
427
|
-
private func startGyrFlushTimer() {
|
|
430
|
+
private func startGyrFlushTimer(bufferMs: TimeInterval) {
|
|
428
431
|
stopGyrFlushTimer()
|
|
429
|
-
|
|
432
|
+
let intervalSeconds = bufferMs / 1000.0
|
|
430
433
|
DispatchQueue.main.async { [weak self] in
|
|
431
434
|
guard let self = self else { return }
|
|
432
435
|
|
|
433
436
|
self.gyrFlushTimer = Timer(
|
|
434
|
-
timeInterval:
|
|
437
|
+
timeInterval: intervalSeconds,
|
|
435
438
|
repeats: true
|
|
436
439
|
) { [weak self] _ in
|
|
437
440
|
self?.flushGyrBuffer()
|
|
@@ -467,10 +470,12 @@ class PolarBridge: RCTEventEmitter, ObservableObject
|
|
|
467
470
|
}
|
|
468
471
|
}
|
|
469
472
|
|
|
470
|
-
@objc(fetchGyrData:)
|
|
471
|
-
func fetchGyrData(_ deviceId: String) {
|
|
473
|
+
@objc(fetchGyrData:bufferMs:)
|
|
474
|
+
func fetchGyrData(_ deviceId: String, bufferMs: NSNumber?) {
|
|
472
475
|
NSLog("PolarBridge: Fetch Gyroscope Data called on: \(deviceId)")
|
|
473
|
-
|
|
476
|
+
let resolvedBufferMs: TimeInterval = ((bufferMs as? NSNumber)?.doubleValue ?? -1) >= 0
|
|
477
|
+
? bufferMs!.doubleValue
|
|
478
|
+
: SENSOR_BUFFER_MS
|
|
474
479
|
guard let api = api else {
|
|
475
480
|
NSLog("PolarBridge: Polar API not initialized")
|
|
476
481
|
return
|
|
@@ -488,7 +493,7 @@ class PolarBridge: RCTEventEmitter, ObservableObject
|
|
|
488
493
|
}
|
|
489
494
|
|
|
490
495
|
isGyrStreaming = true
|
|
491
|
-
startGyrFlushTimer()
|
|
496
|
+
startGyrFlushTimer(bufferMs: resolvedBufferMs)
|
|
492
497
|
|
|
493
498
|
gyrDisposable = requestStreamSettings(deviceId, feature: .gyro)
|
|
494
499
|
.flatMap { settings in
|
|
@@ -500,7 +505,7 @@ class PolarBridge: RCTEventEmitter, ObservableObject
|
|
|
500
505
|
guard let self = self else { return }
|
|
501
506
|
|
|
502
507
|
self.gyrBufferQueue.async {
|
|
503
|
-
for sample in gyrData
|
|
508
|
+
for sample in gyrData {
|
|
504
509
|
NSLog("GYR x: \(sample.x) y: \(sample.y) z: \(sample.z) timestamp: \(sample.timeStamp)")
|
|
505
510
|
|
|
506
511
|
var event: [String: Any] = [:]
|
|
@@ -558,14 +563,14 @@ class PolarBridge: RCTEventEmitter, ObservableObject
|
|
|
558
563
|
gyrDisposable?.disposed(by: disposeBag)
|
|
559
564
|
}
|
|
560
565
|
|
|
561
|
-
private func startPpgFlushTimer() {
|
|
566
|
+
private func startPpgFlushTimer(bufferMs: TimeInterval) {
|
|
562
567
|
stopPpgFlushTimer()
|
|
563
|
-
|
|
568
|
+
let intervalSeconds = bufferMs / 1000.0
|
|
564
569
|
DispatchQueue.main.async { [weak self] in
|
|
565
570
|
guard let self = self else { return }
|
|
566
571
|
|
|
567
572
|
self.ppgFlushTimer = Timer(
|
|
568
|
-
timeInterval:
|
|
573
|
+
timeInterval: intervalSeconds,
|
|
569
574
|
repeats: true
|
|
570
575
|
) { [weak self] _ in
|
|
571
576
|
self?.flushPpgBuffer()
|
|
@@ -601,10 +606,12 @@ class PolarBridge: RCTEventEmitter, ObservableObject
|
|
|
601
606
|
}
|
|
602
607
|
}
|
|
603
608
|
|
|
604
|
-
@objc(fetchPpgData:)
|
|
605
|
-
func fetchPpgData(_ deviceId: String) {
|
|
609
|
+
@objc(fetchPpgData:bufferMs:)
|
|
610
|
+
func fetchPpgData(_ deviceId: String, bufferMs: NSNumber?) {
|
|
606
611
|
NSLog("PolarBridge: Fetch PPG Data called on: \(deviceId)")
|
|
607
|
-
|
|
612
|
+
let resolvedBufferMs: TimeInterval = ((bufferMs as? NSNumber)?.doubleValue ?? -1) >= 0
|
|
613
|
+
? bufferMs!.doubleValue
|
|
614
|
+
: SENSOR_BUFFER_MS
|
|
608
615
|
guard let api = api else {
|
|
609
616
|
NSLog("PolarBridge: Polar API not initialized")
|
|
610
617
|
return
|
|
@@ -622,7 +629,7 @@ class PolarBridge: RCTEventEmitter, ObservableObject
|
|
|
622
629
|
}
|
|
623
630
|
|
|
624
631
|
isPpgStreaming = true
|
|
625
|
-
startPpgFlushTimer()
|
|
632
|
+
startPpgFlushTimer(bufferMs: resolvedBufferMs)
|
|
626
633
|
|
|
627
634
|
ppgDisposable = requestStreamSettings(deviceId, feature: .ppg)
|
|
628
635
|
.flatMap { settings in
|
|
@@ -949,4 +956,8 @@ extension PolarBridge: PolarBleApiDeviceInfoObserver {
|
|
|
949
956
|
batteryReceived = true
|
|
950
957
|
maybeResolve()
|
|
951
958
|
}
|
|
959
|
+
|
|
960
|
+
func batteryChargingStatusReceived(_ identifier: String, chargingStatus: BleBasClient.ChargeState) {
|
|
961
|
+
NSLog("Polar: Battery Charging status for \(identifier): \(chargingStatus)")
|
|
962
|
+
}
|
|
952
963
|
}
|
|
@@ -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) {
|