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.
@@ -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', '~> 5.9.0'
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 {1, __hostFunction_NativePolarBridgeSpecJSI_fetchHrData};
141
- methodMap_["fetchAccData"] = MethodMetadata {1, __hostFunction_NativePolarBridgeSpecJSI_fetchAccData};
142
- methodMap_["fetchGyrData"] = MethodMetadata {1, __hostFunction_NativePolarBridgeSpecJSI_fetchGyrData};
143
- methodMap_["fetchPpgData"] = MethodMetadata {1, __hostFunction_NativePolarBridgeSpecJSI_fetchPpgData};
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 {1, __hostFunction_NativePolarBridgeCxxSpecJSI_fetchHrData};
182
- methodMap_["fetchAccData"] = MethodMetadata {1, __hostFunction_NativePolarBridgeCxxSpecJSI_fetchAccData};
183
- methodMap_["fetchGyrData"] = MethodMetadata {1, __hostFunction_NativePolarBridgeCxxSpecJSI_fetchGyrData};
184
- methodMap_["fetchPpgData"] = MethodMetadata {1, __hostFunction_NativePolarBridgeCxxSpecJSI_fetchPpgData};
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) == 2,
104
- "Expected fetchHrData(...) to have 2 parameters");
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) == 2,
112
- "Expected fetchAccData(...) to have 2 parameters");
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) == 2,
120
- "Expected fetchGyrData(...) to have 2 parameters");
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) == 2,
128
- "Expected fetchPpgData(...) to have 2 parameters");
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 SENSOR_BUFFER_SECONDS = 10L
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(SENSOR_BUFFER_SECONDS, TimeUnit.SECONDS)
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(SENSOR_BUFFER_SECONDS, TimeUnit.SECONDS)
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(SENSOR_BUFFER_SECONDS, TimeUnit.SECONDS)
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(SENSOR_BUFFER_SECONDS, TimeUnit.SECONDS)
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
@@ -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 (seconds)
50
- private let sensorFlushInterval: TimeInterval = 10.0
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: self.sensorFlushInterval,
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: self.sensorFlushInterval,
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.samples {
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: self.sensorFlushInterval,
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.samples {
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: self.sensorFlushInterval,
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 {1, __hostFunction_NativePolarBridgeSpecJSI_fetchHrData};
137
+ methodMap_["fetchHrData"] = MethodMetadata {2, __hostFunction_NativePolarBridgeSpecJSI_fetchHrData};
138
138
 
139
139
 
140
- methodMap_["fetchAccData"] = MethodMetadata {1, __hostFunction_NativePolarBridgeSpecJSI_fetchAccData};
140
+ methodMap_["fetchAccData"] = MethodMetadata {2, __hostFunction_NativePolarBridgeSpecJSI_fetchAccData};
141
141
 
142
142
 
143
- methodMap_["fetchGyrData"] = MethodMetadata {1, __hostFunction_NativePolarBridgeSpecJSI_fetchGyrData};
143
+ methodMap_["fetchGyrData"] = MethodMetadata {2, __hostFunction_NativePolarBridgeSpecJSI_fetchGyrData};
144
144
 
145
145
 
146
- methodMap_["fetchPpgData"] = MethodMetadata {1, __hostFunction_NativePolarBridgeSpecJSI_fetchPpgData};
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
- - (void)fetchAccData:(NSString *)deviceId;
46
- - (void)fetchGyrData:(NSString *)deviceId;
47
- - (void)fetchPpgData:(NSString *)deviceId;
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 {1, __hostFunction_NativePolarBridgeCxxSpecJSI_fetchHrData};
182
- methodMap_["fetchAccData"] = MethodMetadata {1, __hostFunction_NativePolarBridgeCxxSpecJSI_fetchAccData};
183
- methodMap_["fetchGyrData"] = MethodMetadata {1, __hostFunction_NativePolarBridgeCxxSpecJSI_fetchGyrData};
184
- methodMap_["fetchPpgData"] = MethodMetadata {1, __hostFunction_NativePolarBridgeCxxSpecJSI_fetchPpgData};
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) == 2,
104
- "Expected fetchHrData(...) to have 2 parameters");
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) == 2,
112
- "Expected fetchAccData(...) to have 2 parameters");
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) == 2,
120
- "Expected fetchGyrData(...) to have 2 parameters");
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) == 2,
128
- "Expected fetchPpgData(...) to have 2 parameters");
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>;
@@ -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);
@@ -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":"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","ignoreList":[]}
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;IACpC,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,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"}
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,QAE3C;AAED,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,QAE5C;AAED,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,QAE5C;AAED,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,QAE5C;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"}
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-native-polar-bridge",
3
- "version": "0.2.2",
3
+ "version": "0.2.4",
4
4
  "description": "Polar SDK for React Native",
5
5
  "source": "./src/index.tsx",
6
6
  "main": "./lib/module/index.js",
@@ -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) {