From 49e65b0e1deeb4e6f544a38f2062d3ba979c43ce Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Samuli=20M=C3=A4=C3=A4tt=C3=A4?= Date: Thu, 30 Mar 2023 09:59:23 +0300 Subject: [PATCH] SDK release 5.0.2 --- polar-sdk-ios/docs/Classes.html | 54 +- .../docs/Classes/PolarBleApiDefaultImpl.html | 112 +++- polar-sdk-ios/docs/Enums.html | 167 ++++- .../docs/Enums/PolarBleSdkFeature.html | 145 ++++- .../docs/Enums/PolarDeviceDataType.html | 133 +++- polar-sdk-ios/docs/Enums/PolarErrors.html | 205 ++++-- .../docs/Enums/PolarOfflineRecordingData.html | 121 +++- .../PolarOfflineRecordingTriggerMode.html | 85 ++- polar-sdk-ios/docs/Enums/PpgDataType.html | 73 ++- .../docs/Enums/RecordingInterval.html | 73 ++- polar-sdk-ios/docs/Enums/SampleType.html | 73 ++- polar-sdk-ios/docs/Extensions.html | 62 +- .../docs/Extensions/PrimitiveSequence.html | 70 +- polar-sdk-ios/docs/Protocols.html | 196 ++++-- polar-sdk-ios/docs/Protocols/PolarBleApi.html | 610 ++++++++++++++++-- .../PolarBleApiDeviceFeaturesObserver.html | 184 +++++- .../PolarBleApiDeviceInfoObserver.html | 104 ++- .../docs/Protocols/PolarBleApiLogger.html | 80 ++- .../docs/Protocols/PolarBleApiObserver.html | 142 +++- .../PolarBleApiPowerStateObserver.html | 73 ++- .../Protocols/PolarH10OfflineExerciseApi.html | 351 +++++++++- .../Protocols/PolarOfflineRecordingApi.html | 535 +++++++++++++-- .../Protocols/PolarOnlineStreamingApi.html | 530 +++++++++++++-- .../docs/Protocols/PolarSdkModeApi.html | 171 ++++- polar-sdk-ios/docs/Structs.html | 86 ++- .../Structs/PolarOfflineRecordingEntry.html | 109 +++- .../Structs/PolarOfflineRecordingTrigger.html | 89 ++- .../docs/Structs/PolarRecordingSecret.html | 61 +- .../docs/Structs/PolarSensorSetting.html | 129 +++- .../PolarSensorSetting/SettingType.html | 121 +++- polar-sdk-ios/docs/Typealiases.html | 220 +++++-- polar-sdk-ios/docs/badge.svg | 16 +- .../Contents/Resources/Documents/Classes.html | 54 +- .../Classes/PolarBleApiDefaultImpl.html | 112 +++- .../Contents/Resources/Documents/Enums.html | 167 ++++- .../Documents/Enums/PolarBleSdkFeature.html | 145 ++++- .../Documents/Enums/PolarDeviceDataType.html | 133 +++- .../Documents/Enums/PolarErrors.html | 205 ++++-- .../Enums/PolarOfflineRecordingData.html | 121 +++- .../PolarOfflineRecordingTriggerMode.html | 85 ++- .../Documents/Enums/PpgDataType.html | 73 ++- .../Documents/Enums/RecordingInterval.html | 73 ++- .../Resources/Documents/Enums/SampleType.html | 73 ++- .../Resources/Documents/Extensions.html | 62 +- .../Extensions/PrimitiveSequence.html | 70 +- .../Resources/Documents/Protocols.html | 196 ++++-- .../Documents/Protocols/PolarBleApi.html | 610 ++++++++++++++++-- .../PolarBleApiDeviceFeaturesObserver.html | 184 +++++- .../PolarBleApiDeviceInfoObserver.html | 104 ++- .../Protocols/PolarBleApiLogger.html | 80 ++- .../Protocols/PolarBleApiObserver.html | 142 +++- .../PolarBleApiPowerStateObserver.html | 73 ++- .../Protocols/PolarH10OfflineExerciseApi.html | 351 +++++++++- .../Protocols/PolarOfflineRecordingApi.html | 535 +++++++++++++-- .../Protocols/PolarOnlineStreamingApi.html | 530 +++++++++++++-- .../Documents/Protocols/PolarSdkModeApi.html | 171 ++++- .../Contents/Resources/Documents/Structs.html | 86 ++- .../Structs/PolarOfflineRecordingEntry.html | 109 +++- .../Structs/PolarOfflineRecordingTrigger.html | 89 ++- .../Structs/PolarRecordingSecret.html | 61 +- .../Documents/Structs/PolarSensorSetting.html | 129 +++- .../PolarSensorSetting/SettingType.html | 121 +++- .../Resources/Documents/Typealiases.html | 220 +++++-- .../Contents/Resources/Documents/index.html | 42 +- .../Resources/Documents/js/jquery.min.js | 4 +- .../Contents/Resources/Documents/search.json | 2 +- .../.docset/Contents/Resources/docSet.dsidx | Bin 49152 -> 73728 bytes polar-sdk-ios/docs/docsets/.tgz | Bin 99604 -> 120750 bytes polar-sdk-ios/docs/index.html | 42 +- polar-sdk-ios/docs/js/jquery.min.js | 4 +- polar-sdk-ios/docs/search.json | 2 +- polar-sdk-ios/docs/undocumented.json | 2 +- .../polar/sdk/api/PolarBleApiDefaultImpl.kt | 2 +- sources/iOS/ios-communications/Podfile.lock | 2 +- .../sdk/api/PolarBleApiDefaultImpl.swift | 2 +- .../sdk/impl/PolarBleApiImpl.swift | 2 + 76 files changed, 8606 insertions(+), 1844 deletions(-) diff --git a/polar-sdk-ios/docs/Classes.html b/polar-sdk-ios/docs/Classes.html index 8d843fe3..6bceb99e 100644 --- a/polar-sdk-ios/docs/Classes.html +++ b/polar-sdk-ios/docs/Classes.html @@ -17,7 +17,7 @@
-

Docs (0% documented)

+

Docs (100% documented)

@@ -222,8 +236,8 @@

Classes

diff --git a/polar-sdk-ios/docs/Classes/PolarBleApiDefaultImpl.html b/polar-sdk-ios/docs/Classes/PolarBleApiDefaultImpl.html index 1c5cb78e..7af3657c 100644 --- a/polar-sdk-ios/docs/Classes/PolarBleApiDefaultImpl.html +++ b/polar-sdk-ios/docs/Classes/PolarBleApiDefaultImpl.html @@ -17,7 +17,7 @@
-

Docs (0% documented)

+

Docs (100% documented)

@@ -46,6 +46,9 @@
  • @@ -232,6 +288,18 @@

    PolarBleApiDefaultImpl

    Return current version

    +
    +

    Declaration

    +
    +

    Swift

    +
    public static func versionInfo() -> String
    + +
    +
    +
    +

    Return Value

    +

    version in format major.minor.patch

    +
  • @@ -240,8 +308,8 @@

    PolarBleApiDefaultImpl

    diff --git a/polar-sdk-ios/docs/Enums.html b/polar-sdk-ios/docs/Enums.html index 938cb3ad..70f4f8e3 100644 --- a/polar-sdk-ios/docs/Enums.html +++ b/polar-sdk-ios/docs/Enums.html @@ -17,7 +17,7 @@
  • - + + + OhrDataType + +
    +
    +
    +
    +
    +
    +

    OHR data source enum

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    @available(*, deprecated, renamed: "PpgDataType")
    +public enum OhrDataType : Int, CaseIterable
    + +
    +
    +
    +
    +
  • +
  • +
    @@ -254,15 +305,23 @@

    Enumerations

    See more
    +
    +

    Declaration

    +
    +

    Swift

    +
    public enum PpgDataType : Int, CaseIterable
    + +
    +
  • @@ -274,15 +333,23 @@

    Enumerations

    See more
    +
    +

    Declaration

    +
    +

    Swift

    +
    public enum RecordingInterval : Int
    + +
    +
  • @@ -294,15 +361,23 @@

    Enumerations

    See more
    +
    +

    Declaration

    +
    +

    Swift

    +
    public enum SampleType : Int
    + +
    +
  • @@ -314,15 +389,23 @@

    Enumerations

    See more
    +
    +

    Declaration

    +
    +

    Swift

    +
    public enum PolarErrors : Error
    + +
    +
  • @@ -333,15 +416,23 @@

    Enumerations

    See more
    +
    +

    Declaration

    +
    +

    Swift

    +
    public enum PolarOfflineRecordingData
    + +
    +
  • @@ -353,6 +444,14 @@

    Enumerations

    See more
    +
    +

    Declaration

    +
    +

    Swift

    +
    public enum PolarOfflineRecordingTriggerMode
    + +
    +
  • @@ -361,8 +460,8 @@

    Enumerations

    diff --git a/polar-sdk-ios/docs/Enums/PolarBleSdkFeature.html b/polar-sdk-ios/docs/Enums/PolarBleSdkFeature.html index 2b417c9f..15e02783 100644 --- a/polar-sdk-ios/docs/Enums/PolarBleSdkFeature.html +++ b/polar-sdk-ios/docs/Enums/PolarBleSdkFeature.html @@ -17,7 +17,7 @@
    -

    Docs (0% documented)

    +

    Docs (100% documented)

    @@ -46,6 +46,9 @@
  • @@ -232,15 +253,23 @@

    PolarBleSdkFeature

    Device information feature to receive sw information from Polar or any other BLE device

    +
    +

    Declaration

    +
    +

    Swift

    +
    case feature_device_info
    + +
    +
  • @@ -251,15 +280,23 @@

    PolarBleSdkFeature

    Feature to receive battery level info from Polar or any other BLE device

    +
    +

    Declaration

    +
    +

    Swift

    +
    case feature_battery_info
    + +
    +
  • @@ -270,15 +307,23 @@

    PolarBleSdkFeature

    Polar sensor streaming feature to stream live online data. For example hr, ecg, acc, ppg, ppi, etc…

    +
    +

    Declaration

    +
    +

    Swift

    +
    case feature_polar_online_streaming
    + +
    +
  • @@ -289,15 +334,23 @@

    PolarBleSdkFeature

    Polar offline recording feature to record offline data to Polar device without continuous BLE connection.

    +
    +

    Declaration

    +
    +

    Swift

    +
    case feature_polar_offline_recording
    + +
    +
  • @@ -308,15 +361,23 @@

    PolarBleSdkFeature

    H10 exercise recording feature to record exercise data to Polar H10 device without continuous BLE connection.

    +
    +

    Declaration

    +
    +

    Swift

    +
    case feature_polar_h10_exercise_recording
    + +
    +
  • @@ -327,15 +388,23 @@

    PolarBleSdkFeature

    Feature to read and set device time in Polar device

    +
    +

    Declaration

    +
    +

    Swift

    +
    case feature_polar_device_time_setup
    + +
    +
  • @@ -346,6 +415,14 @@

    PolarBleSdkFeature

    In SDK mode the wider range of capabilities are available for the online stream or offline recoding than in normal operation mode.

    +
    +

    Declaration

    +
    +

    Swift

    +
    case feature_polar_sdk_mode
    + +
    +
  • @@ -354,8 +431,8 @@

    PolarBleSdkFeature

    diff --git a/polar-sdk-ios/docs/Enums/PolarDeviceDataType.html b/polar-sdk-ios/docs/Enums/PolarDeviceDataType.html index 70191e06..d4a9ea8c 100644 --- a/polar-sdk-ios/docs/Enums/PolarDeviceDataType.html +++ b/polar-sdk-ios/docs/Enums/PolarDeviceDataType.html @@ -17,7 +17,7 @@
    -

    Docs (0% documented)

    +

    Docs (100% documented)

    @@ -46,6 +46,9 @@
  • - + - acc + acc
    @@ -230,15 +251,23 @@

    PolarDeviceDataType

    +
    +

    Declaration

    +
    +

    Swift

    +
    case acc
    + +
    +
  • - + - ppg + ppg
    @@ -248,15 +277,23 @@

    PolarDeviceDataType

    +
    +

    Declaration

    +
    +

    Swift

    +
    case ppg
    + +
    +
  • - + - ppi + ppi
    @@ -266,15 +303,23 @@

    PolarDeviceDataType

    +
    +

    Declaration

    +
    +

    Swift

    +
    case ppi
    + +
    +
  • - + - gyro + gyro
    @@ -284,15 +329,23 @@

    PolarDeviceDataType

    +
    +

    Declaration

    +
    +

    Swift

    +
    case gyro
    + +
    +
  • @@ -302,15 +355,23 @@

    PolarDeviceDataType

    +
    +

    Declaration

    +
    +

    Swift

    +
    case magnetometer
    + +
    +
  • - + - hr + hr
    @@ -320,6 +381,14 @@

    PolarDeviceDataType

    +
    +

    Declaration

    +
    +

    Swift

    +
    case hr
    + +
    +
  • @@ -328,8 +397,8 @@

    PolarDeviceDataType

    diff --git a/polar-sdk-ios/docs/Enums/PolarErrors.html b/polar-sdk-ios/docs/Enums/PolarErrors.html index 7dbfffea..76d527aa 100644 --- a/polar-sdk-ios/docs/Enums/PolarErrors.html +++ b/polar-sdk-ios/docs/Enums/PolarErrors.html @@ -17,7 +17,7 @@
    -

    Docs (0% documented)

    +

    Docs (100% documented)

  • @@ -232,15 +253,23 @@

    PolarErrors

    GATT service not found

    +
    +

    Declaration

    +
    +

    Swift

    +
    case serviceNotFound
    + +
    +
  • @@ -251,15 +280,23 @@

    PolarErrors

    Device state != Connected

    +
    +

    Declaration

    +
    +

    Swift

    +
    case deviceNotConnected
    + +
    +
  • @@ -270,15 +307,23 @@

    PolarErrors

    Device not found

    +
    +

    Declaration

    +
    +

    Swift

    +
    case deviceNotFound
    + +
    +
  • @@ -289,15 +334,23 @@

    PolarErrors

    Requested operation is not supported

    +
    +

    Declaration

    +
    +

    Swift

    +
    case operationNotSupported
    + +
    +
  • @@ -308,15 +361,23 @@

    PolarErrors

    Google protocol buffers encode failed

    +
    +

    Declaration

    +
    +

    Swift

    +
    case messageEncodeFailed
    + +
    +
  • @@ -327,15 +388,23 @@

    PolarErrors

    Google protocol buffers decode failed

    +
    +

    Declaration

    +
    +

    Swift

    +
    case messageDecodeFailed
    + +
    +
  • @@ -346,15 +415,23 @@

    PolarErrors

    String to date time formatting failed

    +
    +

    Declaration

    +
    +

    Swift

    +
    case dateTimeFormatFailed(description: String = "")
    + +
    +
  • @@ -365,15 +442,23 @@

    PolarErrors

    Failed to start streaming

    +
    +

    Declaration

    +
    +

    Swift

    +
    case unableToStartStreaming
    + +
    +
  • @@ -384,15 +469,23 @@

    PolarErrors

    invalid argument

    +
    +

    Declaration

    +
    +

    Swift

    +
    case invalidArgument(description: String = "")
    + +
    +
  • @@ -403,15 +496,23 @@

    PolarErrors

    Polar BLE SDK internal exception indicating something went wrong in SDK internal logic

    +
    +

    Declaration

    +
    +

    Swift

    +
    case polarBleSdkInternalException(description: String)
    + +
    +
  • @@ -422,15 +523,23 @@

    PolarErrors

    Error on device operation

    +
    +

    Declaration

    +
    +

    Swift

    +
    case deviceError(description: String)
    + +
    +
  • @@ -441,6 +550,14 @@

    PolarErrors

    Error related to offline recording

    +
    +

    Declaration

    +
    +

    Swift

    +
    case polarOfflineRecordingError(description: String)
    + +
    +
  • @@ -449,8 +566,8 @@

    PolarErrors

    diff --git a/polar-sdk-ios/docs/Enums/PolarOfflineRecordingData.html b/polar-sdk-ios/docs/Enums/PolarOfflineRecordingData.html index 39bce391..e4b74ea8 100644 --- a/polar-sdk-ios/docs/Enums/PolarOfflineRecordingData.html +++ b/polar-sdk-ios/docs/Enums/PolarOfflineRecordingData.html @@ -17,7 +17,7 @@
    -

    Docs (0% documented)

    +

    Docs (100% documented)

  • @@ -229,15 +250,23 @@

    PolarOfflineRecordingData

    +
    +

    Declaration

    +
    +

    Swift

    +
    case gyroOfflineRecordingData(PolarGyroData, startTime: Date, settings: PolarSensorSetting)
    + +
    +
  • @@ -247,15 +276,23 @@

    PolarOfflineRecordingData

    +
    +

    Declaration

    +
    +

    Swift

    +
    case magOfflineRecordingData(PolarMagnetometerData, startTime: Date, settings: PolarSensorSetting)
    + +
    +
  • @@ -265,15 +302,23 @@

    PolarOfflineRecordingData

    +
    +

    Declaration

    +
    +

    Swift

    +
    case ppgOfflineRecordingData(PolarPpgData, startTime: Date, settings: PolarSensorSetting)
    + +
    +
  • @@ -283,15 +328,23 @@

    PolarOfflineRecordingData

    +
    +

    Declaration

    +
    +

    Swift

    +
    case ppiOfflineRecordingData(PolarPpiData, startTime: Date)
    + +
    +
  • @@ -301,6 +354,14 @@

    PolarOfflineRecordingData

    +
    +

    Declaration

    +
    +

    Swift

    +
    case hrOfflineRecordingData(PolarHrData, startTime: Date)
    + +
    +
  • @@ -309,8 +370,8 @@

    PolarOfflineRecordingData

    diff --git a/polar-sdk-ios/docs/Enums/PolarOfflineRecordingTriggerMode.html b/polar-sdk-ios/docs/Enums/PolarOfflineRecordingTriggerMode.html index 1d3c2140..a04cc3ff 100644 --- a/polar-sdk-ios/docs/Enums/PolarOfflineRecordingTriggerMode.html +++ b/polar-sdk-ios/docs/Enums/PolarOfflineRecordingTriggerMode.html @@ -17,7 +17,7 @@
    -

    Docs (0% documented)

    +

    Docs (100% documented)

    @@ -46,6 +46,9 @@
  • @@ -230,15 +251,23 @@

    PolarOfflineRecordingTriggerMode

    +
    +

    Declaration

    +
    +

    Swift

    +
    case triggerSystemStart
    + +
    +
  • @@ -248,6 +277,14 @@

    PolarOfflineRecordingTriggerMode

    +
    +

    Declaration

    +
    +

    Swift

    +
    case triggerExerciseStart
    + +
    +
  • @@ -256,8 +293,8 @@

    PolarOfflineRecordingTriggerMode

    diff --git a/polar-sdk-ios/docs/Enums/PpgDataType.html b/polar-sdk-ios/docs/Enums/PpgDataType.html index cc87af39..850f8f92 100644 --- a/polar-sdk-ios/docs/Enums/PpgDataType.html +++ b/polar-sdk-ios/docs/Enums/PpgDataType.html @@ -17,7 +17,7 @@
    -

    Docs (0% documented)

    +

    Docs (100% documented)

  • - + - unknown + unknown
    @@ -231,6 +252,14 @@

    PpgDataType

    +
    +

    Declaration

    +
    +

    Swift

    +
    case unknown = 18
    + +
    +
  • @@ -239,8 +268,8 @@

    PpgDataType

    diff --git a/polar-sdk-ios/docs/Enums/RecordingInterval.html b/polar-sdk-ios/docs/Enums/RecordingInterval.html index 761d3d2b..37f7a1cb 100644 --- a/polar-sdk-ios/docs/Enums/RecordingInterval.html +++ b/polar-sdk-ios/docs/Enums/RecordingInterval.html @@ -17,7 +17,7 @@
    -

    Docs (0% documented)

    +

    Docs (100% documented)

  • @@ -230,6 +251,14 @@

    RecordingInterval

    +
    +

    Declaration

    +
    +

    Swift

    +
    case interval_5s = 5
    + +
    +
  • @@ -238,8 +267,8 @@

    RecordingInterval

    diff --git a/polar-sdk-ios/docs/Enums/SampleType.html b/polar-sdk-ios/docs/Enums/SampleType.html index 2f32b52f..377ecdc6 100644 --- a/polar-sdk-ios/docs/Enums/SampleType.html +++ b/polar-sdk-ios/docs/Enums/SampleType.html @@ -17,7 +17,7 @@
    -

    Docs (0% documented)

    +

    Docs (100% documented)

  • - + - rr + rr
    @@ -232,6 +253,14 @@

    SampleType

    recording type to use is rr interval

    +
    +

    Declaration

    +
    +

    Swift

    +
    case rr
    + +
    +
  • @@ -240,8 +269,8 @@

    SampleType

    diff --git a/polar-sdk-ios/docs/Extensions.html b/polar-sdk-ios/docs/Extensions.html index 5e4ec921..cf9edb6b 100644 --- a/polar-sdk-ios/docs/Extensions.html +++ b/polar-sdk-ios/docs/Extensions.html @@ -17,7 +17,7 @@
    -

    Docs (0% documented)

    +

    Docs (100% documented)

    @@ -46,6 +46,9 @@
    @@ -246,8 +262,8 @@

    Declaration

    diff --git a/polar-sdk-ios/docs/Extensions/PrimitiveSequence.html b/polar-sdk-ios/docs/Extensions/PrimitiveSequence.html index ecccbc59..11492005 100644 --- a/polar-sdk-ios/docs/Extensions/PrimitiveSequence.html +++ b/polar-sdk-ios/docs/Extensions/PrimitiveSequence.html @@ -17,7 +17,7 @@
    -

    Docs (0% documented)

    +

    Docs (100% documented)

    @@ -46,6 +46,9 @@
    @@ -219,8 +249,8 @@

    PrimitiveSequence

    diff --git a/polar-sdk-ios/docs/Protocols.html b/polar-sdk-ios/docs/Protocols.html index 01bde98f..5014d5be 100644 --- a/polar-sdk-ios/docs/Protocols.html +++ b/polar-sdk-ios/docs/Protocols.html @@ -17,7 +17,7 @@
  • @@ -254,15 +276,23 @@

    Protocols

    See more
    +
    +

    Declaration

    +
    +

    Swift

    +
    public protocol PolarBleApiPowerStateObserver : AnyObject
    + +
    +
  • @@ -274,15 +304,23 @@

    Protocols

    See more
    +
    +

    Declaration

    +
    +

    Swift

    +
    public protocol PolarBleApiDeviceInfoObserver : AnyObject
    + +
    +
  • @@ -292,6 +330,15 @@

    Protocols

    Heart rate observer

    + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public protocol PolarBleApiDeviceHrObserver : AnyObject
    + +
    @@ -299,9 +346,9 @@

    Protocols

  • @@ -313,15 +360,23 @@

    Protocols

    See more
    +
    +

    Declaration

    +
    +

    Swift

    +
    public protocol PolarBleApiDeviceFeaturesObserver : AnyObject
    + +
    +
  • @@ -331,6 +386,15 @@

    Protocols

    SDK Mode observer

    + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public protocol PolarBleApiSdkModeFeatureObserver : AnyObject
    + +
    @@ -338,9 +402,9 @@

    Protocols

  • @@ -352,15 +416,23 @@

    Protocols

    See more
    +
    +

    Declaration

    +
    +

    Swift

    +
    public protocol PolarBleApiLogger : AnyObject
    + +
    +
  • @@ -374,21 +446,29 @@

    Protocols

    With H10 Exercise recording the H10 and phone don’t need to be connected all the time, as H10 exercise recording continues in Polar device even the BLE disconnects.

    -

    Requires features PolarBleSdkFeature.feature_polar_h10_exercise_recording

    +

    Requires features PolarBleSdkFeature.feature_polar_h10_exercise_recording

    Note, API is working only with Polar H10 device

    See more
    +
    +

    Declaration

    +
    +

    Swift

    +
    public protocol PolarH10OfflineExerciseApi
    + +
    +
  • @@ -406,21 +486,29 @@

    Protocols

    The PolarRecordingSecret with same key must be provided in getOfflineRecord to correctly decrypt the data in the device.

    -

    Requires feature PolarBleSdkFeature.feature_polar_offline_recording

    +

    Requires feature PolarBleSdkFeature.feature_polar_offline_recording

    Note, offline recording is supported in Polar Verity Sense device (starting from firmware version 2.1.0)

    See more
    +
    +

    Declaration

    +
    +

    Swift

    +
    public protocol PolarOfflineRecordingApi
    + +
    +
  • @@ -432,21 +520,29 @@

    Protocols

    Online streaming makes it possible to stream live online data from Polar device.

    -

    Requires features PolarBleSdkFeature.feature_polar_online_streaming

    +

    Requires features PolarBleSdkFeature.feature_polar_online_streaming

    Note, online streaming is supported by VeritySense, H10 and OH1 devices

    See more
    +
    +

    Declaration

    +
    +

    Swift

    +
    public protocol PolarOnlineStreamingApi
    + +
    +
  • @@ -461,12 +557,20 @@

    Protocols

    asked from device using PolarOnlineStreamingApi.requestFullStreamSettings or PolarOfflineRecordingApi.requestFullOfflineRecordingSettings

    -

    Requires features PolarBleSdkFeature.feature_polar_sdk_mode

    +

    Requires features PolarBleSdkFeature.feature_polar_sdk_mode

    Note, SDK mode supported by VeritySense starting from firmware 1.1.5

    See more
    +
    +

    Declaration

    +
    +

    Swift

    +
    public protocol PolarSdkModeApi
    + +
    +
  • @@ -475,8 +579,8 @@

    Protocols

    diff --git a/polar-sdk-ios/docs/Protocols/PolarBleApi.html b/polar-sdk-ios/docs/Protocols/PolarBleApi.html index 90bb6e0b..553e5bc1 100644 --- a/polar-sdk-ios/docs/Protocols/PolarBleApi.html +++ b/polar-sdk-ios/docs/Protocols/PolarBleApi.html @@ -17,7 +17,7 @@
    -

    Docs (0% documented)

    +

    Docs (100% documented)

  • @@ -232,15 +253,42 @@

    PolarBleApi

    Enable or disable polar filter.

    +
    +

    Declaration

    +
    +

    Swift

    +
    func polarFilter(_ enable: Bool)
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + enable + + +
    +

    false disable polar filter

    +
    +
    +
  • @@ -252,15 +300,70 @@

    PolarBleApi

    invoked when a connection is established.

    +
    +

    Declaration

    +
    +

    Swift

    +
    func startAutoConnectToDevice(_ rssi: Int, service: CBUUID?, polarDeviceType: String?) -> Completable
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + + + + + +
    + + rssi + + +
    +

    (Received Signal Strength Indicator) value is typically between -40 to -55 dBm.

    +
    +
    + + service + + +
    +

    optional service to contain in device advertisement prior to connection attempt

    +
    +
    + + polarDeviceType + + +
    +

    like H10, OH1 etc… or nil for any polar device

    +
    +
    +
    +
    +

    Return Value

    +

    Completable. Complete called when scan for nearby device has ended and connection attempt is started and deviceConnecting callback will be invoked.

    +
  • @@ -276,15 +379,42 @@

    PolarBleApi

    +
    +

    Declaration

    +
    +

    Swift

    +
    func connectToDevice(_ identifier: String) throws
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + identifier + + +
    +

    Polar device id printed on the sensor/device or UUID.

    +
    +
    +
  • @@ -300,15 +430,42 @@

    PolarBleApi

    +
    +

    Declaration

    +
    +

    Swift

    +
    func disconnectFromDevice(_ identifier: String) throws
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + identifier + + +
    +

    Polar device id

    +
    +
    +
  • @@ -319,15 +476,50 @@

    PolarBleApi

    Start searching for Polar device(s)

    +
    +

    Declaration

    +
    +

    Swift

    +
    func searchForDevice() -> Observable<PolarDeviceInfo>
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + onNext + + +
    +

    for every new polar device found

    +
    +
    +
    +
    +

    Return Value

    +

    Observable stream + +

      +
    • onNext: for every new polar device found
    • +

    +
  • @@ -341,15 +533,46 @@

    PolarBleApi

    from the BLE advertisement

    +
    +

    Declaration

    +
    +

    Swift

    +
    func startListenForPolarHrBroadcasts(_ identifiers: Set<String>?) -> Observable<PolarHrBroadcastData>
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + identifiers + + +
    +

    set of Polar device ids to filter or null for a any Polar device

    +
    +
    +
    +
    +

    Return Value

    +

    Observable stream

    +
  • @@ -360,15 +583,58 @@

    PolarBleApi

    Check if the feature is ready.

    +
    +

    Declaration

    +
    +

    Swift

    +
    func isFeatureReady(_ identifier: String, feature: PolarBleSdkFeature) -> Bool
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + +
    + + identifier + + +
    +

    the identifier of the device to check.

    +
    +
    + + feature + + +
    +

    the feature to check for readiness.

    +
    +
    +
    +
    +

    Return Value

    +

    a boolean indicating whether a specific feature is ready for use on a given device.

    +
  • @@ -378,8 +644,68 @@

    PolarBleApi

    Set local time to device.

    -

    Requires feature PolarBleSdkFeature.feature_polar_device_time_setup.

    +

    Requires feature PolarBleSdkFeature.feature_polar_device_time_setup.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    func setLocalTime(_ identifier: String, time: Date, zone: TimeZone) -> Completable
    +
    +
    +
    +

    Parameters

    + + + + + + + + + + + + + + + +
    + + identifier + + +
    +

    polar device id or UUID

    +
    +
    + + time + + +
    +

    time to set

    +
    +
    + + zone + + +
    +

    time zone to set

    +
    +
    +
    +
    +

    Return Value

    +

    Completable stream + +

      +
    • success: when time has been set to device
    • +
    • onError: see PolarErrors for possible errors invoked
    • +

    @@ -387,9 +713,9 @@

    PolarBleApi

  • @@ -399,18 +725,78 @@

    PolarBleApi

    Get current time in device. Note, the H10 is not supporting time read.

    -

    Requires feature PolarBleSdkFeature.feature_polar_device_time_setup

    +

    Requires feature PolarBleSdkFeature.feature_polar_device_time_setup

    +
    +

    Declaration

    +
    +

    Swift

    +
    func getLocalTime(_ identifier: String) -> Single<Date>
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + + + + + +
    + + identifier + + +
    +

    polar device id or UUID

    +
    +
    + + time + + +
    +

    time to set

    +
    +
    + + zone + + +
    +

    time zone to set

    +
    +
    +
    +
    +

    Return Value

    +

    Single stream + +

      +
    • success: once after settings received from device
    • +
    • onError: see PolarErrors for possible errors invoked
    • +

    +
  • - + - observer + observer
    @@ -421,15 +807,23 @@

    PolarBleApi

    Common GAP (Generic access profile) observer

    +
    +

    Declaration

    +
    +

    Swift

    +
    var observer: PolarBleApiObserver? { get set }
    + +
    +
  • @@ -440,15 +834,51 @@

    PolarBleApi

    Device info observer for DIS (Device information service) and BAS (Battery service) GATT (Generic attributes) client

    +
    +

    Declaration

    +
    +

    Swift

    +
    var deviceInfoObserver: PolarBleApiDeviceInfoObserver? { get set }
    + +
    +
  • - + + + deviceHrObserver + +
    +
    +
    +
    +
    +
    +

    Device observer for HR GATT client

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    @available(*, deprecated, message: "The functionality has changed. Please use the startHrStreaming API to get the heart rate data ")
    +var deviceHrObserver: PolarBleApiDeviceHrObserver? { get set }
    + +
    +
    +
    +
    +
  • +
  • +
    @@ -459,15 +889,23 @@

    PolarBleApi

    Bluetooth power state observer

    +
    +

    Declaration

    +
    +

    Swift

    +
    var powerStateObserver: PolarBleApiPowerStateObserver? { get set }
    + +
    +
  • @@ -478,15 +916,51 @@

    PolarBleApi

    Device features ready observer

    +
    +

    Declaration

    +
    +

    Swift

    +
    var deviceFeaturesObserver: PolarBleApiDeviceFeaturesObserver? { get set }
    + +
    +
    + + +
  • +
  • + +
    +
    +
    +
    +
    +

    SDK mode feature available in the device and ready observer

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    @available(*, deprecated, message: "The functionality has changed. Please use the bleSdkFeatureReady to know if sdkModeFeature is available")
    +var sdkModeFeatureObserver: PolarBleApiSdkModeFeatureObserver? { get set }
    + +
    +
  • @@ -497,15 +971,27 @@

    PolarBleApi

    Helper to check if Ble is currently powered

    +
    +

    Declaration

    +
    +

    Swift

    +
    var isBlePowered: Bool { get }
    + +
    +
    +
    +

    Return Value

    +

    current power state

    +
  • - + - logger + logger
    @@ -516,15 +1002,23 @@

    PolarBleApi

    optional logger set to get traces from sdk

    +
    +

    Declaration

    +
    +

    Swift

    +
    var logger: PolarBleApiLogger? { get set }
    + +
    +
  • @@ -535,6 +1029,14 @@

    PolarBleApi

    optional disable or enable automatic reconnection, by default it is enabled

    +
    +

    Declaration

    +
    +

    Swift

    +
    var automaticReconnection: Bool { get set }
    + +
    +
  • @@ -543,8 +1045,8 @@

    PolarBleApi

    diff --git a/polar-sdk-ios/docs/Protocols/PolarBleApiDeviceFeaturesObserver.html b/polar-sdk-ios/docs/Protocols/PolarBleApiDeviceFeaturesObserver.html index 76ef83a7..fabf7a6a 100644 --- a/polar-sdk-ios/docs/Protocols/PolarBleApiDeviceFeaturesObserver.html +++ b/polar-sdk-ios/docs/Protocols/PolarBleApiDeviceFeaturesObserver.html @@ -17,7 +17,7 @@
    -

    Docs (0% documented)

    +

    Docs (100% documented)

    @@ -46,6 +46,9 @@
    @@ -222,8 +366,8 @@

    PolarBleApiDeviceFeaturesObserver

    diff --git a/polar-sdk-ios/docs/Protocols/PolarBleApiDeviceInfoObserver.html b/polar-sdk-ios/docs/Protocols/PolarBleApiDeviceInfoObserver.html index bb99461d..2c8e0fbd 100644 --- a/polar-sdk-ios/docs/Protocols/PolarBleApiDeviceInfoObserver.html +++ b/polar-sdk-ios/docs/Protocols/PolarBleApiDeviceInfoObserver.html @@ -17,7 +17,7 @@
    -

    Docs (0% documented)

    +

    Docs (100% documented)

    @@ -46,6 +46,9 @@
  • @@ -232,6 +284,14 @@

    PolarBleApiDeviceInfoObserver

    Received DIS info.

    +
    +

    Declaration

    +
    +

    Swift

    +
    func disInformationReceived(_ identifier: String, uuid: CBUUID, value: String)
    + +
    +
  • @@ -240,8 +300,8 @@

    PolarBleApiDeviceInfoObserver

    diff --git a/polar-sdk-ios/docs/Protocols/PolarBleApiLogger.html b/polar-sdk-ios/docs/Protocols/PolarBleApiLogger.html index 726eb3bc..ec9a9959 100644 --- a/polar-sdk-ios/docs/Protocols/PolarBleApiLogger.html +++ b/polar-sdk-ios/docs/Protocols/PolarBleApiLogger.html @@ -17,7 +17,7 @@
    -

    Docs (0% documented)

    +

    Docs (100% documented)

    @@ -46,6 +46,9 @@
    @@ -221,8 +261,8 @@

    PolarBleApiLogger

    diff --git a/polar-sdk-ios/docs/Protocols/PolarBleApiObserver.html b/polar-sdk-ios/docs/Protocols/PolarBleApiObserver.html index bde7697c..abfe271d 100644 --- a/polar-sdk-ios/docs/Protocols/PolarBleApiObserver.html +++ b/polar-sdk-ios/docs/Protocols/PolarBleApiObserver.html @@ -17,7 +17,7 @@
    -

    Docs (0% documented)

    +

    Docs (100% documented)

    @@ -46,6 +46,9 @@
  • @@ -232,15 +272,42 @@

    PolarBleApiObserver

    Device connnection has been established.

    +
    +

    Declaration

    +
    +

    Swift

    +
    func deviceConnected(_ identifier: PolarDeviceInfo)
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + identifier + + +
    +

    Polar device info

    +
    +
    +
  • @@ -252,6 +319,33 @@

    PolarBleApiObserver

    If PolarBleApi#disconnectFromPolarDevice is not called, a new connection attempt is dispatched automatically.

    +
    +

    Declaration

    +
    +

    Swift

    +
    func deviceDisconnected(_ identifier: PolarDeviceInfo)
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + identifier + + +
    +

    Polar device info

    +
    +
    +
  • @@ -260,8 +354,8 @@

    PolarBleApiObserver

    diff --git a/polar-sdk-ios/docs/Protocols/PolarBleApiPowerStateObserver.html b/polar-sdk-ios/docs/Protocols/PolarBleApiPowerStateObserver.html index d9927216..45a069e5 100644 --- a/polar-sdk-ios/docs/Protocols/PolarBleApiPowerStateObserver.html +++ b/polar-sdk-ios/docs/Protocols/PolarBleApiPowerStateObserver.html @@ -17,7 +17,7 @@
    -

    Docs (0% documented)

    +

    Docs (100% documented)

    @@ -46,6 +46,9 @@
  • @@ -232,6 +253,14 @@

    PolarBleApiPowerStateObserver

    Ble powered off event, no further actions are needed from the application.

    +
    +

    Declaration

    +
    +

    Swift

    +
    func blePowerOff()
    + +
    +
  • @@ -240,8 +269,8 @@

    PolarBleApiPowerStateObserver

    diff --git a/polar-sdk-ios/docs/Protocols/PolarH10OfflineExerciseApi.html b/polar-sdk-ios/docs/Protocols/PolarH10OfflineExerciseApi.html index 94f2580a..4560fe86 100644 --- a/polar-sdk-ios/docs/Protocols/PolarH10OfflineExerciseApi.html +++ b/polar-sdk-ios/docs/Protocols/PolarH10OfflineExerciseApi.html @@ -17,7 +17,7 @@
    -

    Docs (0% documented)

    +

    Docs (100% documented)

    @@ -46,6 +46,9 @@
  • @@ -240,15 +325,51 @@

    PolarH10OfflineExerciseApi

    Request stop for current recording. Supported only by Polar H10. Requires polarFileTransfer feature.

    +
    +

    Declaration

    +
    +

    Swift

    +
    func stopRecording(_ identifier: String) -> Completable
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + identifier + + +
    +

    Polar device id or UUID

    +
    +
    +
    +
    +

    Return Value

    +

    Completable stream + +

      +
    • success: recording stopped
    • +
    • onError: see PolarErrors for possible errors invoked
    • +

    +
  • @@ -259,15 +380,51 @@

    PolarH10OfflineExerciseApi

    Request current recording status. Supported only by Polar H10. Requires polarFileTransfer feature.

    +
    +

    Declaration

    +
    +

    Swift

    +
    func requestRecordingStatus(_ identifier: String) -> Single<PolarRecordingStatus>
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + identifier + + +
    +

    Polar device id

    +
    +
    +
    +
    +

    Return Value

    +

    Single stream + +

    +
  • @@ -278,15 +435,51 @@

    PolarH10OfflineExerciseApi

    Api for fetching stored exercises list from Polar H10 device. Requires polarFileTransfer feature. This API is working for Polar OH1 and Polar Verity Sense devices too, however in those devices recording of exercise requires that sensor is registered to Polar Flow account.

    +
    +

    Declaration

    +
    +

    Swift

    +
    func fetchStoredExerciseList(_ identifier: String) -> Observable<PolarExerciseEntry>
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + identifier + + +
    +

    Polar device id or device address

    +
    +
    +
    +
    +

    Return Value

    +

    Observable stream + +

    +
  • @@ -297,15 +490,63 @@

    PolarH10OfflineExerciseApi

    Api for fetching a single exercise from Polar H10 device. Requires polarFileTransfer feature. This API is working for Polar OH1 and Polar Verity Sense devices too, however in those devices recording of exercise requires that sensor is registered to Polar Flow account.

    +
    +

    Declaration

    +
    +

    Swift

    +
    func fetchExercise(_ identifier: String, entry: PolarExerciseEntry) -> Single<PolarExerciseData>
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + +
    + + identifier + + +
    +

    Polar device id or device address

    +
    +
    + + entry + + +
    +

    single exercise entry to be fetched

    +
    +
    +
    +
    +

    Return Value

    +

    Single stream + +

      +
    • success: invoked after exercise data has been fetched from the device. see PolarExerciseEntry
    • +
    • onError: see PolarErrors for possible errors invoked
    • +

    +
  • @@ -316,6 +557,54 @@

    PolarH10OfflineExerciseApi

    Api for removing single exercise from Polar H10 device. Requires polarFileTransfer feature. This API is working for Polar OH1 and Polar Verity Sense devices too, however in those devices recording of exercise requires that sensor is registered to Polar Flow account.

    +
    +

    Declaration

    +
    +

    Swift

    +
    func removeExercise(_ identifier: String, entry: PolarExerciseEntry) -> Completable
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + +
    + + identifier + + +
    +

    Polar device id or device address

    +
    +
    + + entry + + +
    +

    single exercise entry to be removed

    +
    +
    +
    +
    +

    Return Value

    +

    Completable stream + +

      +
    • complete: entry successfully removed
    • +
    • onError: see PolarErrors for possible errors invoked
    • +

    +
  • @@ -324,8 +613,8 @@

    PolarH10OfflineExerciseApi

    diff --git a/polar-sdk-ios/docs/Protocols/PolarOfflineRecordingApi.html b/polar-sdk-ios/docs/Protocols/PolarOfflineRecordingApi.html index 5c002153..fa2a657b 100644 --- a/polar-sdk-ios/docs/Protocols/PolarOfflineRecordingApi.html +++ b/polar-sdk-ios/docs/Protocols/PolarOfflineRecordingApi.html @@ -17,7 +17,7 @@
    -

    Docs (0% documented)

    +

    Docs (100% documented)

    @@ -46,6 +46,9 @@
  • @@ -245,15 +275,32 @@

    PolarOfflineRecordingApi

    to decide currently available settings. The available settings depend on the state of the device.

    +
    +

    Declaration

    +
    +

    Swift

    +
    func requestOfflineRecordingSettings(_ identifier: String, feature: PolarDeviceDataType) -> Single<PolarSensorSetting>
    + +
    +
    +
    +

    Return Value

    +

    Single stream + +

      +
    • success: once after settings received from device
    • +
    • onError: see PolarErrors for possible errors invoked
    • +

    +
  • @@ -264,15 +311,32 @@

    PolarOfflineRecordingApi

    Request all the settings available in the device. The request returns the all capabilities of the requested streaming feature not limited by the current operation mode.

    +
    +

    Declaration

    +
    +

    Swift

    +
    func requestFullOfflineRecordingSettings(_ identifier: String, feature: PolarDeviceDataType) -> Single<PolarSensorSetting>
    + +
    +
    +
    +

    Return Value

    +

    Single stream + +

      +
    • success: once after settings received from device
    • +
    • onError: see PolarErrors for possible errors invoked
    • +

    +
  • @@ -283,15 +347,51 @@

    PolarOfflineRecordingApi

    Get status of offline recordings.

    +
    +

    Declaration

    +
    +

    Swift

    +
    func getOfflineRecordingStatus(_ identifier: String) -> Single<[PolarDeviceDataType : Bool]>
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + identifier + + +
    +

    polar device id

    +
    +
    +
    +
    +

    Return Value

    +

    Single stream + +

      +
    • success: the dictionary indicating the offline recording status, if the value in dictionary is true the offline recording is currently recording
    • +
    • error: see PolarErrors for possible errors invoked
    • +

    +
  • @@ -302,15 +402,52 @@

    PolarOfflineRecordingApi

    List offline recordings stored in the device.

    +
    +

    Declaration

    +
    +

    Swift

    +
    func listOfflineRecordings(_ identifier: String) -> Observable<PolarOfflineRecordingEntry>
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + identifier + + +
    +

    polar device id

    +
    +
    +
    +
    +

    Return Value

    +

    Completable + +

      +
    • next : the found offline recording entry
    • +
    • completed: the listing completed
    • +
    • error: see PolarErrors for possible errors invoked
    • +

    +
  • @@ -323,15 +460,75 @@

    PolarOfflineRecordingApi

    Note, the fetching of the recording may take several seconds if the recording is big.

    +
    +

    Declaration

    +
    +

    Swift

    +
    func getOfflineRecord(_ identifier: String, entry: PolarOfflineRecordingEntry, secret: PolarRecordingSecret?) -> Single<PolarOfflineRecordingData>
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + + + + + +
    + + identifier + + +
    +

    polar device id

    +
    +
    + + entry + + +
    +

    The offline recording to be fetched

    +
    +
    + + secret + + +
    +

    If the secret is provided in startOfflineRecording or setOfflineRecordingTrigger then the same secret must be provided when fetching the offline record

    +
    +
    +
    +
    +

    Return Value

    +

    Single + +

      +
    • success : the offline recording data
    • +
    • error: fetch recording request failed. see PolarErrors for possible errors invoked
    • +

    +
  • @@ -342,15 +539,63 @@

    PolarOfflineRecordingApi

    Removes offline recording from the device

    +
    +

    Declaration

    +
    +

    Swift

    +
    func removeOfflineRecord(_ identifier: String, entry: PolarOfflineRecordingEntry) -> Completable
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + +
    + + identifier + + +
    +

    polar device id

    +
    +
    + + entry + + +
    +

    entry to be removed

    +
    +
    +
    +
    +

    Return Value

    +

    Completable + +

      +
    • completed : offline record is removed
    • +
    • error: offline record removal failed, see PolarErrors for possible errors invoked
    • +

    +
  • @@ -361,15 +606,75 @@

    PolarOfflineRecordingApi

    Start offline recording.

    +
    +

    Declaration

    +
    +

    Swift

    +
    func startOfflineRecording(_ identifier: String, feature: PolarDeviceDataType, settings: PolarSensorSetting?, secret: PolarRecordingSecret?) -> Completable
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + + + + + +
    + + identifier + + +
    +

    polar device id

    +
    +
    + + feature + + +
    +

    the feature to be started

    +
    +
    + + settings + + +
    +

    optional settings used for offline recording. PolarDeviceDataType.hr and PolarDeviceDataType.ppi do not require settings

    +
    +
    +
    +
    +

    Return Value

    +

    Completable + +

      +
    • completed : offline recording is started successfully
    • +
    • error: see PolarErrors for possible errors invoked
    • +

    +
  • @@ -380,15 +685,63 @@

    PolarOfflineRecordingApi

    Request to stop offline recording.

    +
    +

    Declaration

    +
    +

    Swift

    +
    func stopOfflineRecording(_ identifier: String, feature: PolarDeviceDataType) -> Completable
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + +
    + + identifier + + +
    +

    polar device id

    +
    +
    + + feature + + +
    +

    the feature to be stopped

    +
    +
    +
    +
    +

    Return Value

    +

    Completable + +

      +
    • completed : offline recording is stop successfully
    • +
    • error: offline recording stop failed. see PolarErrors for possible errors invoked
    • +

    +
  • @@ -406,15 +759,79 @@

    PolarOfflineRecordingApi

    recording is not stopped by disable.

    +
    +

    Declaration

    +
    +

    Swift

    +
    func setOfflineRecordingTrigger(
    +    _ identifier: String,
    +    trigger: PolarOfflineRecordingTrigger,
    +    secret: PolarRecordingSecret?
    +) -> Completable
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + + + + + +
    + + identifier + + +
    +

    Polar device ID

    +
    +
    + + trigger + + +
    +

    type of trigger to set

    +
    +
    + + secret + + +
    +

    optional secret; if provided, the offline recordings are encrypted in the device

    +
    +
    +
    +
    +

    Return Value

    +

    Completable + +

      +
    • completed : the offline recording trigger was set successfully
    • +
    • error: the offline recording trigger was not set successfully; see PolarErrors for possible errors that may be invoked.
    • +

    +
  • @@ -425,6 +842,42 @@

    PolarOfflineRecordingApi

    Retrieves the current offline recording trigger setup in the device.

    +
    +

    Declaration

    +
    +

    Swift

    +
    func getOfflineRecordingTriggerSetup(_ identifier: String) -> Single<PolarOfflineRecordingTrigger>
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + identifier + + +
    +

    polar device id

    +
    +
    +
    +
    +

    Return Value

    +

    Completable + +

      +
    • success : the offline recording trigger setup in the device
    • +
    • error: fetching recording trigger setup failed, see PolarErrors for possible errors invoked
    • +

    +
  • @@ -433,8 +886,8 @@

    PolarOfflineRecordingApi

    diff --git a/polar-sdk-ios/docs/Protocols/PolarOnlineStreamingApi.html b/polar-sdk-ios/docs/Protocols/PolarOnlineStreamingApi.html index 289485ba..b7f07b89 100644 --- a/polar-sdk-ios/docs/Protocols/PolarOnlineStreamingApi.html +++ b/polar-sdk-ios/docs/Protocols/PolarOnlineStreamingApi.html @@ -17,7 +17,7 @@
    -

    Docs (0% documented)

    +

    Docs (100% documented)

    @@ -46,6 +46,9 @@
  • @@ -241,15 +271,32 @@

    PolarOnlineStreamingApi

    Requires polarSensorStreaming feature.

    +
    +

    Declaration

    +
    +

    Swift

    +
    func requestStreamSettings(_ identifier: String, feature: PolarDeviceDataType) -> Single<PolarSensorSetting>
    + +
    +
    +
    +

    Return Value

    +

    Single stream + +

      +
    • success: once after settings received from device
    • +
    • onError: see PolarErrors for possible errors invoked
    • +

    +
  • @@ -261,15 +308,63 @@

    PolarOnlineStreamingApi

    Requires polarSensorStreaming feature. This request is supported only by Polar Verity Sense firmware 1.1.5

    +
    +

    Declaration

    +
    +

    Swift

    +
    func requestFullStreamSettings(_ identifier: String, feature: PolarDeviceDataType) -> Single<PolarSensorSetting>
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + +
    + + identifier + + +
    +

    polar device id

    +
    +
    + + feature + + +
    +

    selected feature fromPolarDeviceDataType

    +
    +
    +
    +
    +

    Return Value

    +

    Single stream + +

      +
    • success: once after full settings received from device
    • +
    • onError: see PolarErrors for possible errors invoked
    • +

    +
  • @@ -281,15 +376,51 @@

    PolarOnlineStreamingApi

    error occurs or stream is disposed.

    +
    +

    Declaration

    +
    +

    Swift

    +
    func startHrStreaming(_ identifier: String) -> Observable<PolarHrData>
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + identifier + + +
    +

    Polar device id or device address

    +
    +
    +
    +
    +

    Return Value

    +

    Observable stream + +

      +
    • onNext: for every air packet received. see PolarHrData
    • +
    • onError: see PolarErrors for possible errors invoked
    • +

    +
  • @@ -300,15 +431,63 @@

    PolarOnlineStreamingApi

    Start the ECG (Electrocardiography) stream. ECG stream is stopped if the connection is closed, error occurs or stream is disposed.

    +
    +

    Declaration

    +
    +

    Swift

    +
    func startEcgStreaming(_ identifier: String, settings: PolarSensorSetting) -> Observable<PolarEcgData>
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + +
    + + identifier + + +
    +

    Polar device id or device address

    +
    +
    + + settings + + +
    +

    selected settings to start the stream

    +
    +
    +
    +
    +

    Return Value

    +

    Observable stream + +

    +
  • @@ -319,15 +498,32 @@

    PolarOnlineStreamingApi

    Start ACC (Accelerometer) stream. ACC stream is stopped if the connection is closed, error occurs or stream is disposed.

    +
    +

    Declaration

    +
    +

    Swift

    +
    func startAccStreaming(_ identifier: String, settings: PolarSensorSetting) -> Observable<PolarAccData>
    + +
    +
    +
    +

    Return Value

    +

    Observable stream + +

    +
  • @@ -338,15 +534,54 @@

    PolarOnlineStreamingApi

    Start Gyro stream. Gyro stream is stopped if the connection is closed, error occurs during start or stream is disposed.

    +
    +

    Declaration

    +
    +

    Swift

    +
    func startGyroStreaming(_ identifier: String, settings: PolarSensorSetting) -> Observable<PolarGyroData>
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + +
    + + identifier + + +
    +

    Polar device id or device address

    +
    +
    + + settings + + +
    +

    selected settings to start the stream

    +
    +
    +
  • @@ -357,15 +592,122 @@

    PolarOnlineStreamingApi

    Start magnetometer stream. Magnetometer stream is stopped if the connection is closed, error occurs or stream is disposed.

    +
    +

    Declaration

    +
    +

    Swift

    +
    func startMagnetometerStreaming(_ identifier: String, settings: PolarSensorSetting) -> Observable<PolarMagnetometerData>
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + +
    + + identifier + + +
    +

    Polar device id or device address

    +
    +
    + + settings + + +
    +

    selected settings to start the stream

    +
    +
    +
    + + +
  • +
  • + +
    +
    +
    +
    +
    +

    Start OHR (Optical heart rate) PPG (Photoplethysmography) stream. PPG stream is stopped if the connection is closed, error occurs or stream is disposed.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    @available(*, deprecated, renamed: "startPpgStreaming")
    +func startOhrStreaming(_ identifier: String, settings: PolarSensorSetting) -> Observable<PolarOhrData>
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + +
    + + identifier + + +
    +

    Polar device id or device address

    +
    +
    + + settings + + +
    +

    selected settings to start the stream

    +
    +
    +
    +
    +

    Return Value

    +

    Observable stream + +

    +
  • @@ -376,15 +718,63 @@

    PolarOnlineStreamingApi

    Start optical sensor PPG (Photoplethysmography) stream. PPG stream is stopped if the connection is closed, error occurs or stream is disposed.

    +
    +

    Declaration

    +
    +

    Swift

    +
    func startPpgStreaming(_ identifier: String, settings: PolarSensorSetting) -> Observable<PolarPpgData>
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + +
    + + identifier + + +
    +

    Polar device id or device address

    +
    +
    + + settings + + +
    +

    selected settings to start the stream

    +
    +
    +
    +
    +

    Return Value

    +

    Observable stream + +

    +
  • @@ -397,6 +787,68 @@

    PolarOnlineStreamingApi

    Notice that there is a delay before PPI data stream starts.

    +
    +

    Declaration

    +
    +

    Swift

    +
    func startPpiStreaming(_ identifier: String) -> Observable<PolarPpiData>
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + identifier + + +
    +

    Polar device id or device address

    +
    +
    +
    +
    +

    Return Value

    +

    Observable stream + +

    +
    + + +
  • +
  • + +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    func startOhrPPIStreaming(_ identifier: String) -> Observable<PolarPpiData>
    + +
    +
  • @@ -405,8 +857,8 @@

    PolarOnlineStreamingApi

    diff --git a/polar-sdk-ios/docs/Protocols/PolarSdkModeApi.html b/polar-sdk-ios/docs/Protocols/PolarSdkModeApi.html index a3a18f84..aaeca8f1 100644 --- a/polar-sdk-ios/docs/Protocols/PolarSdkModeApi.html +++ b/polar-sdk-ios/docs/Protocols/PolarSdkModeApi.html @@ -17,7 +17,7 @@
    -

    Docs (0% documented)

    +

    Docs (100% documented)

    @@ -46,6 +46,9 @@
  • @@ -241,15 +290,51 @@

    PolarSdkModeApi

    Disables SDK mode.

    +
    +

    Declaration

    +
    +

    Swift

    +
    func disableSDKMode(_ identifier: String) -> Completable
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + identifier + + +
    +

    Polar device id or device address

    +
    +
    +
    +
    +

    Return Value

    +

    Completable stream + +

      +
    • success: if SDK mode is disabled or SDK mode was already disabled
    • +
    • onError: if SDK mode disable failed
    • +

    +
  • @@ -262,6 +347,42 @@

    PolarSdkModeApi

    Note, SDK status check is supported by VeritySense starting from firmware 2.1.0

    +
    +

    Declaration

    +
    +

    Swift

    +
    func isSDKModeEnabled(_ identifier: String) -> Single<Bool>
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + identifier + + +
    +

    Polar device id or device address

    +
    +
    +
    +
    +

    Return Value

    +

    Single stream + +

      +
    • success: emits true, if the SDK mode is currently enabled
    • +
    • onError: see PolarErrors for possible errors invoked
    • +

    +
  • @@ -270,8 +391,8 @@

    PolarSdkModeApi

    diff --git a/polar-sdk-ios/docs/Structs.html b/polar-sdk-ios/docs/Structs.html index ceabbb6d..55c8f072 100644 --- a/polar-sdk-ios/docs/Structs.html +++ b/polar-sdk-ios/docs/Structs.html @@ -17,7 +17,7 @@
  • @@ -254,15 +276,23 @@

    Structures

    See more
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct PolarRecordingSecret
    + +
    +
  • @@ -278,7 +308,9 @@

    Structures

    Declaration

    Swift

    - +
    public struct PolarSensorSetting
    +
    extension PolarSensorSetting: CustomStringConvertible
    +
    @@ -289,8 +321,8 @@

    Declaration

    diff --git a/polar-sdk-ios/docs/Structs/PolarOfflineRecordingEntry.html b/polar-sdk-ios/docs/Structs/PolarOfflineRecordingEntry.html index 9e085a3f..40cc92a9 100644 --- a/polar-sdk-ios/docs/Structs/PolarOfflineRecordingEntry.html +++ b/polar-sdk-ios/docs/Structs/PolarOfflineRecordingEntry.html @@ -17,7 +17,7 @@
    -

    Docs (0% documented)

    +

    Docs (100% documented)

    @@ -46,6 +46,9 @@
  • - + - size + size
    @@ -232,15 +253,23 @@

    PolarOfflineRecordingEntry

    Recording size in bytes.

    +
    +

    Declaration

    +
    +

    Swift

    +
    public let size: UInt
    + +
    +
  • - + - date + date
    @@ -251,15 +280,23 @@

    PolarOfflineRecordingEntry

    The date and time of the recording entry i.e. the moment recording is started

    +
    +

    Declaration

    +
    +

    Swift

    +
    public let date: Date
    + +
    +
  • - + - type + type
    @@ -270,15 +307,23 @@

    PolarOfflineRecordingEntry

    data type of the recording

    +
    +

    Declaration

    +
    +

    Swift

    +
    public let type: PolarDeviceDataType
    + +
    +
  • @@ -288,6 +333,14 @@

    PolarOfflineRecordingEntry

    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(path: String, size: UInt, date: Date, type: PolarDeviceDataType)
    + +
    +
  • @@ -296,8 +349,8 @@

    PolarOfflineRecordingEntry

    diff --git a/polar-sdk-ios/docs/Structs/PolarOfflineRecordingTrigger.html b/polar-sdk-ios/docs/Structs/PolarOfflineRecordingTrigger.html index b73ea754..cf28fcfa 100644 --- a/polar-sdk-ios/docs/Structs/PolarOfflineRecordingTrigger.html +++ b/polar-sdk-ios/docs/Structs/PolarOfflineRecordingTrigger.html @@ -17,7 +17,7 @@
    -

    Docs (0% documented)

    +

    Docs (100% documented)

    @@ -46,6 +46,9 @@
  • @@ -230,9 +251,17 @@

    PolarOfflineRecordingTrigger

    Dictionary containing the PolarDeviceDataType keys for enabled triggers. Dictionary -is empty if triggerMode is PolarOfflineRecordingTriggerMode.triggerDisabled. -In case of the PolarDeviceDataType.ppi or PolarDeviceDataType.hr the settings is nil

    +is empty if triggerMode is PolarOfflineRecordingTriggerMode.triggerDisabled. +In case of the PolarDeviceDataType.ppi or PolarDeviceDataType.hr the settings is nil

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public let triggerFeatures: [PolarDeviceDataType : PolarSensorSetting?]
    +
    @@ -240,9 +269,9 @@

    PolarOfflineRecordingTrigger

  • @@ -252,6 +281,14 @@

    PolarOfflineRecordingTrigger

    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(triggerMode: PolarOfflineRecordingTriggerMode, triggerFeatures: [PolarDeviceDataType : PolarSensorSetting?])
    + +
    +
  • @@ -260,8 +297,8 @@

    PolarOfflineRecordingTrigger

    diff --git a/polar-sdk-ios/docs/Structs/PolarRecordingSecret.html b/polar-sdk-ios/docs/Structs/PolarRecordingSecret.html index d48ae397..a86080a2 100644 --- a/polar-sdk-ios/docs/Structs/PolarRecordingSecret.html +++ b/polar-sdk-ios/docs/Structs/PolarRecordingSecret.html @@ -17,7 +17,7 @@
    -

    Docs (0% documented)

    +

    Docs (100% documented)

    @@ -46,6 +46,9 @@
    @@ -220,8 +241,8 @@

    PolarRecordingSecret

    diff --git a/polar-sdk-ios/docs/Structs/PolarSensorSetting.html b/polar-sdk-ios/docs/Structs/PolarSensorSetting.html index 0e51f5ee..9f017de5 100644 --- a/polar-sdk-ios/docs/Structs/PolarSensorSetting.html +++ b/polar-sdk-ios/docs/Structs/PolarSensorSetting.html @@ -17,7 +17,7 @@
    -

    Docs (0% documented)

    +

    Docs (100% documented)

    @@ -46,6 +46,9 @@
  • - + - settings + settings
    @@ -239,15 +255,23 @@

    PolarSensorSetting

    current settings available / set

    +
    +

    Declaration

    +
    +

    Swift

    +
    public let settings: [SettingType : Set<UInt32>]
    + +
    +
  • - + - init(_:) + init(_:)
    @@ -258,15 +282,42 @@

    PolarSensorSetting

    constructor with desired settings

    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(_ settings: [SettingType : UInt32])
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + settings + + +
    +

    single key value pairs to start stream

    +
    +
    +
  • @@ -277,15 +328,27 @@

    PolarSensorSetting

    helper to retrieve max settings available

    +
    +

    Declaration

    +
    +

    Swift

    +
    public func maxSettings() -> PolarSensorSetting
    + +
    +
    +
    +

    Return Value

    +

    PolarSensorSetting with max settings

    +
  • @@ -295,6 +358,14 @@

    PolarSensorSetting

    +
    +

    Declaration

    +
    +

    Swift

    +
    public var description: String { get }
    + +
    +
  • @@ -303,8 +374,8 @@

    PolarSensorSetting

    diff --git a/polar-sdk-ios/docs/Structs/PolarSensorSetting/SettingType.html b/polar-sdk-ios/docs/Structs/PolarSensorSetting/SettingType.html index 1747e034..e595777c 100644 --- a/polar-sdk-ios/docs/Structs/PolarSensorSetting/SettingType.html +++ b/polar-sdk-ios/docs/Structs/PolarSensorSetting/SettingType.html @@ -17,7 +17,7 @@
    -

    Docs (0% documented)

    +

    Docs (100% documented)

  • @@ -232,15 +253,23 @@

    SettingType

    resolution in bits

    +
    +

    Declaration

    +
    +

    Swift

    +
    case resolution = 1
    + +
    +
  • - + - range + range
    @@ -251,15 +280,23 @@

    SettingType

    range

    +
    +

    Declaration

    +
    +

    Swift

    +
    case range = 2
    + +
    +
  • @@ -270,15 +307,23 @@

    SettingType

    range with min and max allowed values

    +
    +

    Declaration

    +
    +

    Swift

    +
    case rangeMilliunit = 3
    + +
    +
  • - + - channels + channels
    @@ -289,15 +334,23 @@

    SettingType

    amount of channels available

    +
    +

    Declaration

    +
    +

    Swift

    +
    case channels = 4
    + +
    +
  • - + - unknown + unknown
    @@ -308,6 +361,14 @@

    SettingType

    type is unknown

    +
    +

    Declaration

    +
    +

    Swift

    +
    case unknown = 0xff
    + +
    +
  • @@ -316,8 +377,8 @@

    SettingType

    diff --git a/polar-sdk-ios/docs/Typealiases.html b/polar-sdk-ios/docs/Typealiases.html index 5ac75724..6995b4b4 100644 --- a/polar-sdk-ios/docs/Typealiases.html +++ b/polar-sdk-ios/docs/Typealiases.html @@ -17,7 +17,7 @@
    -

    Docs (0% documented)

    +

    Docs (100% documented)

  • @@ -240,15 +254,23 @@

    Type Aliases

    +
    +

    Declaration

    +
    +

    Swift

    +
    public typealias PolarHrBroadcastData = (deviceInfo: PolarDeviceInfo, hr: UInt8, batteryStatus: Bool)
    + +
    +
  • @@ -265,15 +287,23 @@

    Type Aliases

    +
    +

    Declaration

    +
    +

    Swift

    +
    public typealias PolarHrData = [(hr: UInt8, rrsMs: [Int], rrAvailable: Bool, contactStatus: Bool, contactStatusSupported: Bool)]
    + +
    +
  • @@ -289,15 +319,23 @@

    Type Aliases

    +
    +

    Declaration

    +
    +

    Swift

    +
    public typealias PolarEcgData = (timeStamp: UInt64, samples: [(timeStamp: UInt64, voltage: Int32)])
    + +
    +
  • @@ -315,15 +353,23 @@

    Type Aliases

    +
    +

    Declaration

    +
    +

    Swift

    +
    public typealias PolarAccData = (timeStamp: UInt64, samples: [(timeStamp: UInt64, x: Int32, y: Int32, z: Int32)])
    + +
    +
  • @@ -341,15 +387,23 @@

    Type Aliases

    +
    +

    Declaration

    +
    +

    Swift

    +
    public typealias PolarGyroData = (timeStamp: UInt64, samples: [(timeStamp: UInt64, x: Float, y: Float, z: Float)])
    + +
    +
  • @@ -367,15 +421,57 @@

    Type Aliases

    +
    +

    Declaration

    +
    +

    Swift

    +
    public typealias PolarMagnetometerData = (timeStamp: UInt64, samples: [(timeStamp: UInt64, x: Float, y: Float, z: Float)])
    + +
    +
    + + +
  • +
  • +
    + + + + PolarOhrData + +
    +
    +
    +
    +
    +
    +

    Polar Ohr data

    +
    - Deprecated: Timestamp: Last sample timestamp in nanoseconds. The epoch of timestamp is 1.1.2000
    +- type: type of data, which varies based on what is type of optical sensor used in the device
    +- samples: Photoplethysmography samples
    +    - timeStamp: moment sample is taken in nanoseconds. The epoch of timestamp is 1.1.2000
    +    - channelSamples is the PPG (Photoplethysmography) raw value received from the optical sensor. Based on [OhrDataType] the amount of channels varies. Typically ppg(n) channel + n ambient(s).
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    @available(*, deprecated, renamed: "PolarPpgData")
    +public typealias PolarOhrData = (timeStamp: UInt64, type: OhrDataType, samples: [(timeStamp: UInt64, channelSamples: [Int32])])
    + +
    +
  • @@ -391,15 +487,23 @@

    Type Aliases

    +
    +

    Declaration

    +
    +

    Swift

    +
    public typealias PolarPpgData = (type: PpgDataType, samples: [(timeStamp: UInt64, channelSamples: [Int32])])
    + +
    +
  • @@ -419,15 +523,23 @@

    Type Aliases

    +
    +

    Declaration

    +
    +

    Swift

    +
    public typealias PolarPpiData = (timeStamp: UInt64, samples: [(hr: Int, ppInMs: UInt16, ppErrorEstimate: UInt16, blockerBit: Int, skinContactStatus: Int, skinContactSupported: Int)])
    + +
    +
  • @@ -442,15 +554,23 @@

    Type Aliases

    +
    +

    Declaration

    +
    +

    Swift

    +
    public typealias PolarExerciseEntry = (path: String, date: Date, entryId: String)
    + +
    +
  • @@ -464,15 +584,23 @@

    Type Aliases

    +
    +

    Declaration

    +
    +

    Swift

    +
    public typealias PolarExerciseData = (interval: UInt32, samples: [UInt32])
    + +
    +
  • @@ -486,6 +614,14 @@

    Type Aliases

    +
    +

    Declaration

    +
    +

    Swift

    +
    public typealias PolarRecordingStatus = (ongoing: Bool, entryId: String)
    + +
    +
  • @@ -494,8 +630,8 @@

    Type Aliases

    diff --git a/polar-sdk-ios/docs/badge.svg b/polar-sdk-ios/docs/badge.svg index a5d7e554..a096feca 100644 --- a/polar-sdk-ios/docs/badge.svg +++ b/polar-sdk-ios/docs/badge.svg @@ -1,15 +1,15 @@ - + - + - - + + @@ -18,11 +18,11 @@ documentation - - 0% + + 100% - - 0% + + 100% diff --git a/polar-sdk-ios/docs/docsets/.docset/Contents/Resources/Documents/Classes.html b/polar-sdk-ios/docs/docsets/.docset/Contents/Resources/Documents/Classes.html index 8d843fe3..6bceb99e 100644 --- a/polar-sdk-ios/docs/docsets/.docset/Contents/Resources/Documents/Classes.html +++ b/polar-sdk-ios/docs/docsets/.docset/Contents/Resources/Documents/Classes.html @@ -17,7 +17,7 @@
    -

    Docs (0% documented)

    +

    Docs (100% documented)

    @@ -222,8 +236,8 @@

    Classes

    diff --git a/polar-sdk-ios/docs/docsets/.docset/Contents/Resources/Documents/Classes/PolarBleApiDefaultImpl.html b/polar-sdk-ios/docs/docsets/.docset/Contents/Resources/Documents/Classes/PolarBleApiDefaultImpl.html index 1c5cb78e..7af3657c 100644 --- a/polar-sdk-ios/docs/docsets/.docset/Contents/Resources/Documents/Classes/PolarBleApiDefaultImpl.html +++ b/polar-sdk-ios/docs/docsets/.docset/Contents/Resources/Documents/Classes/PolarBleApiDefaultImpl.html @@ -17,7 +17,7 @@
    -

    Docs (0% documented)

    +

    Docs (100% documented)

    @@ -46,6 +46,9 @@
  • @@ -232,6 +288,18 @@

    PolarBleApiDefaultImpl

    Return current version

    +
    +

    Declaration

    +
    +

    Swift

    +
    public static func versionInfo() -> String
    + +
    +
    +
    +

    Return Value

    +

    version in format major.minor.patch

    +
  • @@ -240,8 +308,8 @@

    PolarBleApiDefaultImpl

    diff --git a/polar-sdk-ios/docs/docsets/.docset/Contents/Resources/Documents/Enums.html b/polar-sdk-ios/docs/docsets/.docset/Contents/Resources/Documents/Enums.html index 938cb3ad..70f4f8e3 100644 --- a/polar-sdk-ios/docs/docsets/.docset/Contents/Resources/Documents/Enums.html +++ b/polar-sdk-ios/docs/docsets/.docset/Contents/Resources/Documents/Enums.html @@ -17,7 +17,7 @@
  • - + + + OhrDataType + +
    +
    +
    +
    +
    +
    +

    OHR data source enum

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    @available(*, deprecated, renamed: "PpgDataType")
    +public enum OhrDataType : Int, CaseIterable
    + +
    +
    +
    +
    +
  • +
  • +
    @@ -254,15 +305,23 @@

    Enumerations

    See more
    +
    +

    Declaration

    +
    +

    Swift

    +
    public enum PpgDataType : Int, CaseIterable
    + +
    +
  • @@ -274,15 +333,23 @@

    Enumerations

    See more
    +
    +

    Declaration

    +
    +

    Swift

    +
    public enum RecordingInterval : Int
    + +
    +
  • @@ -294,15 +361,23 @@

    Enumerations

    See more
    +
    +

    Declaration

    +
    +

    Swift

    +
    public enum SampleType : Int
    + +
    +
  • @@ -314,15 +389,23 @@

    Enumerations

    See more
    +
    +

    Declaration

    +
    +

    Swift

    +
    public enum PolarErrors : Error
    + +
    +
  • @@ -333,15 +416,23 @@

    Enumerations

    See more
    +
    +

    Declaration

    +
    +

    Swift

    +
    public enum PolarOfflineRecordingData
    + +
    +
  • @@ -353,6 +444,14 @@

    Enumerations

    See more
    +
    +

    Declaration

    +
    +

    Swift

    +
    public enum PolarOfflineRecordingTriggerMode
    + +
    +
  • @@ -361,8 +460,8 @@

    Enumerations

    diff --git a/polar-sdk-ios/docs/docsets/.docset/Contents/Resources/Documents/Enums/PolarBleSdkFeature.html b/polar-sdk-ios/docs/docsets/.docset/Contents/Resources/Documents/Enums/PolarBleSdkFeature.html index 2b417c9f..15e02783 100644 --- a/polar-sdk-ios/docs/docsets/.docset/Contents/Resources/Documents/Enums/PolarBleSdkFeature.html +++ b/polar-sdk-ios/docs/docsets/.docset/Contents/Resources/Documents/Enums/PolarBleSdkFeature.html @@ -17,7 +17,7 @@
    -

    Docs (0% documented)

    +

    Docs (100% documented)

    @@ -46,6 +46,9 @@
  • @@ -232,15 +253,23 @@

    PolarBleSdkFeature

    Device information feature to receive sw information from Polar or any other BLE device

    +
    +

    Declaration

    +
    +

    Swift

    +
    case feature_device_info
    + +
    +
  • @@ -251,15 +280,23 @@

    PolarBleSdkFeature

    Feature to receive battery level info from Polar or any other BLE device

    +
    +

    Declaration

    +
    +

    Swift

    +
    case feature_battery_info
    + +
    +
  • @@ -270,15 +307,23 @@

    PolarBleSdkFeature

    Polar sensor streaming feature to stream live online data. For example hr, ecg, acc, ppg, ppi, etc…

    +
    +

    Declaration

    +
    +

    Swift

    +
    case feature_polar_online_streaming
    + +
    +
  • @@ -289,15 +334,23 @@

    PolarBleSdkFeature

    Polar offline recording feature to record offline data to Polar device without continuous BLE connection.

    +
    +

    Declaration

    +
    +

    Swift

    +
    case feature_polar_offline_recording
    + +
    +
  • @@ -308,15 +361,23 @@

    PolarBleSdkFeature

    H10 exercise recording feature to record exercise data to Polar H10 device without continuous BLE connection.

    +
    +

    Declaration

    +
    +

    Swift

    +
    case feature_polar_h10_exercise_recording
    + +
    +
  • @@ -327,15 +388,23 @@

    PolarBleSdkFeature

    Feature to read and set device time in Polar device

    +
    +

    Declaration

    +
    +

    Swift

    +
    case feature_polar_device_time_setup
    + +
    +
  • @@ -346,6 +415,14 @@

    PolarBleSdkFeature

    In SDK mode the wider range of capabilities are available for the online stream or offline recoding than in normal operation mode.

    +
    +

    Declaration

    +
    +

    Swift

    +
    case feature_polar_sdk_mode
    + +
    +
  • @@ -354,8 +431,8 @@

    PolarBleSdkFeature

    diff --git a/polar-sdk-ios/docs/docsets/.docset/Contents/Resources/Documents/Enums/PolarDeviceDataType.html b/polar-sdk-ios/docs/docsets/.docset/Contents/Resources/Documents/Enums/PolarDeviceDataType.html index 70191e06..d4a9ea8c 100644 --- a/polar-sdk-ios/docs/docsets/.docset/Contents/Resources/Documents/Enums/PolarDeviceDataType.html +++ b/polar-sdk-ios/docs/docsets/.docset/Contents/Resources/Documents/Enums/PolarDeviceDataType.html @@ -17,7 +17,7 @@
    -

    Docs (0% documented)

    +

    Docs (100% documented)

    @@ -46,6 +46,9 @@
  • - + - acc + acc
    @@ -230,15 +251,23 @@

    PolarDeviceDataType

    +
    +

    Declaration

    +
    +

    Swift

    +
    case acc
    + +
    +
  • - + - ppg + ppg
    @@ -248,15 +277,23 @@

    PolarDeviceDataType

    +
    +

    Declaration

    +
    +

    Swift

    +
    case ppg
    + +
    +
  • - + - ppi + ppi
    @@ -266,15 +303,23 @@

    PolarDeviceDataType

    +
    +

    Declaration

    +
    +

    Swift

    +
    case ppi
    + +
    +
  • - + - gyro + gyro
    @@ -284,15 +329,23 @@

    PolarDeviceDataType

    +
    +

    Declaration

    +
    +

    Swift

    +
    case gyro
    + +
    +
  • @@ -302,15 +355,23 @@

    PolarDeviceDataType

    +
    +

    Declaration

    +
    +

    Swift

    +
    case magnetometer
    + +
    +
  • - + - hr + hr
    @@ -320,6 +381,14 @@

    PolarDeviceDataType

    +
    +

    Declaration

    +
    +

    Swift

    +
    case hr
    + +
    +
  • @@ -328,8 +397,8 @@

    PolarDeviceDataType

    diff --git a/polar-sdk-ios/docs/docsets/.docset/Contents/Resources/Documents/Enums/PolarErrors.html b/polar-sdk-ios/docs/docsets/.docset/Contents/Resources/Documents/Enums/PolarErrors.html index 7dbfffea..76d527aa 100644 --- a/polar-sdk-ios/docs/docsets/.docset/Contents/Resources/Documents/Enums/PolarErrors.html +++ b/polar-sdk-ios/docs/docsets/.docset/Contents/Resources/Documents/Enums/PolarErrors.html @@ -17,7 +17,7 @@
    -

    Docs (0% documented)

    +

    Docs (100% documented)

  • @@ -232,15 +253,23 @@

    PolarErrors

    GATT service not found

    +
    +

    Declaration

    +
    +

    Swift

    +
    case serviceNotFound
    + +
    +
  • @@ -251,15 +280,23 @@

    PolarErrors

    Device state != Connected

    +
    +

    Declaration

    +
    +

    Swift

    +
    case deviceNotConnected
    + +
    +
  • @@ -270,15 +307,23 @@

    PolarErrors

    Device not found

    +
    +

    Declaration

    +
    +

    Swift

    +
    case deviceNotFound
    + +
    +
  • @@ -289,15 +334,23 @@

    PolarErrors

    Requested operation is not supported

    +
    +

    Declaration

    +
    +

    Swift

    +
    case operationNotSupported
    + +
    +
  • @@ -308,15 +361,23 @@

    PolarErrors

    Google protocol buffers encode failed

    +
    +

    Declaration

    +
    +

    Swift

    +
    case messageEncodeFailed
    + +
    +
  • @@ -327,15 +388,23 @@

    PolarErrors

    Google protocol buffers decode failed

    +
    +

    Declaration

    +
    +

    Swift

    +
    case messageDecodeFailed
    + +
    +
  • @@ -346,15 +415,23 @@

    PolarErrors

    String to date time formatting failed

    +
    +

    Declaration

    +
    +

    Swift

    +
    case dateTimeFormatFailed(description: String = "")
    + +
    +
  • @@ -365,15 +442,23 @@

    PolarErrors

    Failed to start streaming

    +
    +

    Declaration

    +
    +

    Swift

    +
    case unableToStartStreaming
    + +
    +
  • @@ -384,15 +469,23 @@

    PolarErrors

    invalid argument

    +
    +

    Declaration

    +
    +

    Swift

    +
    case invalidArgument(description: String = "")
    + +
    +
  • @@ -403,15 +496,23 @@

    PolarErrors

    Polar BLE SDK internal exception indicating something went wrong in SDK internal logic

    +
    +

    Declaration

    +
    +

    Swift

    +
    case polarBleSdkInternalException(description: String)
    + +
    +
  • @@ -422,15 +523,23 @@

    PolarErrors

    Error on device operation

    +
    +

    Declaration

    +
    +

    Swift

    +
    case deviceError(description: String)
    + +
    +
  • @@ -441,6 +550,14 @@

    PolarErrors

    Error related to offline recording

    +
    +

    Declaration

    +
    +

    Swift

    +
    case polarOfflineRecordingError(description: String)
    + +
    +
  • @@ -449,8 +566,8 @@

    PolarErrors

    diff --git a/polar-sdk-ios/docs/docsets/.docset/Contents/Resources/Documents/Enums/PolarOfflineRecordingData.html b/polar-sdk-ios/docs/docsets/.docset/Contents/Resources/Documents/Enums/PolarOfflineRecordingData.html index 39bce391..e4b74ea8 100644 --- a/polar-sdk-ios/docs/docsets/.docset/Contents/Resources/Documents/Enums/PolarOfflineRecordingData.html +++ b/polar-sdk-ios/docs/docsets/.docset/Contents/Resources/Documents/Enums/PolarOfflineRecordingData.html @@ -17,7 +17,7 @@
    -

    Docs (0% documented)

    +

    Docs (100% documented)

  • @@ -229,15 +250,23 @@

    PolarOfflineRecordingData

    +
    +

    Declaration

    +
    +

    Swift

    +
    case gyroOfflineRecordingData(PolarGyroData, startTime: Date, settings: PolarSensorSetting)
    + +
    +
  • @@ -247,15 +276,23 @@

    PolarOfflineRecordingData

    +
    +

    Declaration

    +
    +

    Swift

    +
    case magOfflineRecordingData(PolarMagnetometerData, startTime: Date, settings: PolarSensorSetting)
    + +
    +
  • @@ -265,15 +302,23 @@

    PolarOfflineRecordingData

    +
    +

    Declaration

    +
    +

    Swift

    +
    case ppgOfflineRecordingData(PolarPpgData, startTime: Date, settings: PolarSensorSetting)
    + +
    +
  • @@ -283,15 +328,23 @@

    PolarOfflineRecordingData

    +
    +

    Declaration

    +
    +

    Swift

    +
    case ppiOfflineRecordingData(PolarPpiData, startTime: Date)
    + +
    +
  • @@ -301,6 +354,14 @@

    PolarOfflineRecordingData

    +
    +

    Declaration

    +
    +

    Swift

    +
    case hrOfflineRecordingData(PolarHrData, startTime: Date)
    + +
    +
  • @@ -309,8 +370,8 @@

    PolarOfflineRecordingData

    diff --git a/polar-sdk-ios/docs/docsets/.docset/Contents/Resources/Documents/Enums/PolarOfflineRecordingTriggerMode.html b/polar-sdk-ios/docs/docsets/.docset/Contents/Resources/Documents/Enums/PolarOfflineRecordingTriggerMode.html index 1d3c2140..a04cc3ff 100644 --- a/polar-sdk-ios/docs/docsets/.docset/Contents/Resources/Documents/Enums/PolarOfflineRecordingTriggerMode.html +++ b/polar-sdk-ios/docs/docsets/.docset/Contents/Resources/Documents/Enums/PolarOfflineRecordingTriggerMode.html @@ -17,7 +17,7 @@
    -

    Docs (0% documented)

    +

    Docs (100% documented)

    @@ -46,6 +46,9 @@
  • @@ -230,15 +251,23 @@

    PolarOfflineRecordingTriggerMode

    +
    +

    Declaration

    +
    +

    Swift

    +
    case triggerSystemStart
    + +
    +
  • @@ -248,6 +277,14 @@

    PolarOfflineRecordingTriggerMode

    +
    +

    Declaration

    +
    +

    Swift

    +
    case triggerExerciseStart
    + +
    +
  • @@ -256,8 +293,8 @@

    PolarOfflineRecordingTriggerMode

    diff --git a/polar-sdk-ios/docs/docsets/.docset/Contents/Resources/Documents/Enums/PpgDataType.html b/polar-sdk-ios/docs/docsets/.docset/Contents/Resources/Documents/Enums/PpgDataType.html index cc87af39..850f8f92 100644 --- a/polar-sdk-ios/docs/docsets/.docset/Contents/Resources/Documents/Enums/PpgDataType.html +++ b/polar-sdk-ios/docs/docsets/.docset/Contents/Resources/Documents/Enums/PpgDataType.html @@ -17,7 +17,7 @@
    -

    Docs (0% documented)

    +

    Docs (100% documented)

  • - + - unknown + unknown
    @@ -231,6 +252,14 @@

    PpgDataType

    +
    +

    Declaration

    +
    +

    Swift

    +
    case unknown = 18
    + +
    +
  • @@ -239,8 +268,8 @@

    PpgDataType

    diff --git a/polar-sdk-ios/docs/docsets/.docset/Contents/Resources/Documents/Enums/RecordingInterval.html b/polar-sdk-ios/docs/docsets/.docset/Contents/Resources/Documents/Enums/RecordingInterval.html index 761d3d2b..37f7a1cb 100644 --- a/polar-sdk-ios/docs/docsets/.docset/Contents/Resources/Documents/Enums/RecordingInterval.html +++ b/polar-sdk-ios/docs/docsets/.docset/Contents/Resources/Documents/Enums/RecordingInterval.html @@ -17,7 +17,7 @@
    -

    Docs (0% documented)

    +

    Docs (100% documented)

  • @@ -230,6 +251,14 @@

    RecordingInterval

    +
    +

    Declaration

    +
    +

    Swift

    +
    case interval_5s = 5
    + +
    +
  • @@ -238,8 +267,8 @@

    RecordingInterval

    diff --git a/polar-sdk-ios/docs/docsets/.docset/Contents/Resources/Documents/Enums/SampleType.html b/polar-sdk-ios/docs/docsets/.docset/Contents/Resources/Documents/Enums/SampleType.html index 2f32b52f..377ecdc6 100644 --- a/polar-sdk-ios/docs/docsets/.docset/Contents/Resources/Documents/Enums/SampleType.html +++ b/polar-sdk-ios/docs/docsets/.docset/Contents/Resources/Documents/Enums/SampleType.html @@ -17,7 +17,7 @@
    -

    Docs (0% documented)

    +

    Docs (100% documented)

  • - + - rr + rr
    @@ -232,6 +253,14 @@

    SampleType

    recording type to use is rr interval

    +
    +

    Declaration

    +
    +

    Swift

    +
    case rr
    + +
    +
  • @@ -240,8 +269,8 @@

    SampleType

    diff --git a/polar-sdk-ios/docs/docsets/.docset/Contents/Resources/Documents/Extensions.html b/polar-sdk-ios/docs/docsets/.docset/Contents/Resources/Documents/Extensions.html index 5e4ec921..cf9edb6b 100644 --- a/polar-sdk-ios/docs/docsets/.docset/Contents/Resources/Documents/Extensions.html +++ b/polar-sdk-ios/docs/docsets/.docset/Contents/Resources/Documents/Extensions.html @@ -17,7 +17,7 @@
    -

    Docs (0% documented)

    +

    Docs (100% documented)

    @@ -46,6 +46,9 @@
    @@ -246,8 +262,8 @@

    Declaration

    diff --git a/polar-sdk-ios/docs/docsets/.docset/Contents/Resources/Documents/Extensions/PrimitiveSequence.html b/polar-sdk-ios/docs/docsets/.docset/Contents/Resources/Documents/Extensions/PrimitiveSequence.html index ecccbc59..11492005 100644 --- a/polar-sdk-ios/docs/docsets/.docset/Contents/Resources/Documents/Extensions/PrimitiveSequence.html +++ b/polar-sdk-ios/docs/docsets/.docset/Contents/Resources/Documents/Extensions/PrimitiveSequence.html @@ -17,7 +17,7 @@
    -

    Docs (0% documented)

    +

    Docs (100% documented)

    @@ -46,6 +46,9 @@
    @@ -219,8 +249,8 @@

    PrimitiveSequence

    diff --git a/polar-sdk-ios/docs/docsets/.docset/Contents/Resources/Documents/Protocols.html b/polar-sdk-ios/docs/docsets/.docset/Contents/Resources/Documents/Protocols.html index 01bde98f..5014d5be 100644 --- a/polar-sdk-ios/docs/docsets/.docset/Contents/Resources/Documents/Protocols.html +++ b/polar-sdk-ios/docs/docsets/.docset/Contents/Resources/Documents/Protocols.html @@ -17,7 +17,7 @@
  • @@ -254,15 +276,23 @@

    Protocols

    See more
    +
    +

    Declaration

    +
    +

    Swift

    +
    public protocol PolarBleApiPowerStateObserver : AnyObject
    + +
    +
  • @@ -274,15 +304,23 @@

    Protocols

    See more
    +
    +

    Declaration

    +
    +

    Swift

    +
    public protocol PolarBleApiDeviceInfoObserver : AnyObject
    + +
    +
  • @@ -292,6 +330,15 @@

    Protocols

    Heart rate observer

    + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public protocol PolarBleApiDeviceHrObserver : AnyObject
    + +
    @@ -299,9 +346,9 @@

    Protocols

  • @@ -313,15 +360,23 @@

    Protocols

    See more
    +
    +

    Declaration

    +
    +

    Swift

    +
    public protocol PolarBleApiDeviceFeaturesObserver : AnyObject
    + +
    +
  • @@ -331,6 +386,15 @@

    Protocols

    SDK Mode observer

    + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public protocol PolarBleApiSdkModeFeatureObserver : AnyObject
    + +
    @@ -338,9 +402,9 @@

    Protocols

  • @@ -352,15 +416,23 @@

    Protocols

    See more
    +
    +

    Declaration

    +
    +

    Swift

    +
    public protocol PolarBleApiLogger : AnyObject
    + +
    +
  • @@ -374,21 +446,29 @@

    Protocols

    With H10 Exercise recording the H10 and phone don’t need to be connected all the time, as H10 exercise recording continues in Polar device even the BLE disconnects.

    -

    Requires features PolarBleSdkFeature.feature_polar_h10_exercise_recording

    +

    Requires features PolarBleSdkFeature.feature_polar_h10_exercise_recording

    Note, API is working only with Polar H10 device

    See more
    +
    +

    Declaration

    +
    +

    Swift

    +
    public protocol PolarH10OfflineExerciseApi
    + +
    +
  • @@ -406,21 +486,29 @@

    Protocols

    The PolarRecordingSecret with same key must be provided in getOfflineRecord to correctly decrypt the data in the device.

    -

    Requires feature PolarBleSdkFeature.feature_polar_offline_recording

    +

    Requires feature PolarBleSdkFeature.feature_polar_offline_recording

    Note, offline recording is supported in Polar Verity Sense device (starting from firmware version 2.1.0)

    See more
    +
    +

    Declaration

    +
    +

    Swift

    +
    public protocol PolarOfflineRecordingApi
    + +
    +
  • @@ -432,21 +520,29 @@

    Protocols

    Online streaming makes it possible to stream live online data from Polar device.

    -

    Requires features PolarBleSdkFeature.feature_polar_online_streaming

    +

    Requires features PolarBleSdkFeature.feature_polar_online_streaming

    Note, online streaming is supported by VeritySense, H10 and OH1 devices

    See more
    +
    +

    Declaration

    +
    +

    Swift

    +
    public protocol PolarOnlineStreamingApi
    + +
    +
  • @@ -461,12 +557,20 @@

    Protocols

    asked from device using PolarOnlineStreamingApi.requestFullStreamSettings or PolarOfflineRecordingApi.requestFullOfflineRecordingSettings

    -

    Requires features PolarBleSdkFeature.feature_polar_sdk_mode

    +

    Requires features PolarBleSdkFeature.feature_polar_sdk_mode

    Note, SDK mode supported by VeritySense starting from firmware 1.1.5

    See more
    +
    +

    Declaration

    +
    +

    Swift

    +
    public protocol PolarSdkModeApi
    + +
    +
  • @@ -475,8 +579,8 @@

    Protocols

    diff --git a/polar-sdk-ios/docs/docsets/.docset/Contents/Resources/Documents/Protocols/PolarBleApi.html b/polar-sdk-ios/docs/docsets/.docset/Contents/Resources/Documents/Protocols/PolarBleApi.html index 90bb6e0b..553e5bc1 100644 --- a/polar-sdk-ios/docs/docsets/.docset/Contents/Resources/Documents/Protocols/PolarBleApi.html +++ b/polar-sdk-ios/docs/docsets/.docset/Contents/Resources/Documents/Protocols/PolarBleApi.html @@ -17,7 +17,7 @@
    -

    Docs (0% documented)

    +

    Docs (100% documented)

  • @@ -232,15 +253,42 @@

    PolarBleApi

    Enable or disable polar filter.

    +
    +

    Declaration

    +
    +

    Swift

    +
    func polarFilter(_ enable: Bool)
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + enable + + +
    +

    false disable polar filter

    +
    +
    +
  • @@ -252,15 +300,70 @@

    PolarBleApi

    invoked when a connection is established.

    +
    +

    Declaration

    +
    +

    Swift

    +
    func startAutoConnectToDevice(_ rssi: Int, service: CBUUID?, polarDeviceType: String?) -> Completable
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + + + + + +
    + + rssi + + +
    +

    (Received Signal Strength Indicator) value is typically between -40 to -55 dBm.

    +
    +
    + + service + + +
    +

    optional service to contain in device advertisement prior to connection attempt

    +
    +
    + + polarDeviceType + + +
    +

    like H10, OH1 etc… or nil for any polar device

    +
    +
    +
    +
    +

    Return Value

    +

    Completable. Complete called when scan for nearby device has ended and connection attempt is started and deviceConnecting callback will be invoked.

    +
  • @@ -276,15 +379,42 @@

    PolarBleApi

    +
    +

    Declaration

    +
    +

    Swift

    +
    func connectToDevice(_ identifier: String) throws
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + identifier + + +
    +

    Polar device id printed on the sensor/device or UUID.

    +
    +
    +
  • @@ -300,15 +430,42 @@

    PolarBleApi

    +
    +

    Declaration

    +
    +

    Swift

    +
    func disconnectFromDevice(_ identifier: String) throws
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + identifier + + +
    +

    Polar device id

    +
    +
    +
  • @@ -319,15 +476,50 @@

    PolarBleApi

    Start searching for Polar device(s)

    +
    +

    Declaration

    +
    +

    Swift

    +
    func searchForDevice() -> Observable<PolarDeviceInfo>
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + onNext + + +
    +

    for every new polar device found

    +
    +
    +
    +
    +

    Return Value

    +

    Observable stream + +

      +
    • onNext: for every new polar device found
    • +

    +
  • @@ -341,15 +533,46 @@

    PolarBleApi

    from the BLE advertisement

    +
    +

    Declaration

    +
    +

    Swift

    +
    func startListenForPolarHrBroadcasts(_ identifiers: Set<String>?) -> Observable<PolarHrBroadcastData>
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + identifiers + + +
    +

    set of Polar device ids to filter or null for a any Polar device

    +
    +
    +
    +
    +

    Return Value

    +

    Observable stream

    +
  • @@ -360,15 +583,58 @@

    PolarBleApi

    Check if the feature is ready.

    +
    +

    Declaration

    +
    +

    Swift

    +
    func isFeatureReady(_ identifier: String, feature: PolarBleSdkFeature) -> Bool
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + +
    + + identifier + + +
    +

    the identifier of the device to check.

    +
    +
    + + feature + + +
    +

    the feature to check for readiness.

    +
    +
    +
    +
    +

    Return Value

    +

    a boolean indicating whether a specific feature is ready for use on a given device.

    +
  • @@ -378,8 +644,68 @@

    PolarBleApi

    Set local time to device.

    -

    Requires feature PolarBleSdkFeature.feature_polar_device_time_setup.

    +

    Requires feature PolarBleSdkFeature.feature_polar_device_time_setup.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    func setLocalTime(_ identifier: String, time: Date, zone: TimeZone) -> Completable
    +
    +
    +
    +

    Parameters

    + + + + + + + + + + + + + + + +
    + + identifier + + +
    +

    polar device id or UUID

    +
    +
    + + time + + +
    +

    time to set

    +
    +
    + + zone + + +
    +

    time zone to set

    +
    +
    +
    +
    +

    Return Value

    +

    Completable stream + +

      +
    • success: when time has been set to device
    • +
    • onError: see PolarErrors for possible errors invoked
    • +

    @@ -387,9 +713,9 @@

    PolarBleApi

  • @@ -399,18 +725,78 @@

    PolarBleApi

    Get current time in device. Note, the H10 is not supporting time read.

    -

    Requires feature PolarBleSdkFeature.feature_polar_device_time_setup

    +

    Requires feature PolarBleSdkFeature.feature_polar_device_time_setup

    +
    +

    Declaration

    +
    +

    Swift

    +
    func getLocalTime(_ identifier: String) -> Single<Date>
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + + + + + +
    + + identifier + + +
    +

    polar device id or UUID

    +
    +
    + + time + + +
    +

    time to set

    +
    +
    + + zone + + +
    +

    time zone to set

    +
    +
    +
    +
    +

    Return Value

    +

    Single stream + +

      +
    • success: once after settings received from device
    • +
    • onError: see PolarErrors for possible errors invoked
    • +

    +
  • - + - observer + observer
    @@ -421,15 +807,23 @@

    PolarBleApi

    Common GAP (Generic access profile) observer

    +
    +

    Declaration

    +
    +

    Swift

    +
    var observer: PolarBleApiObserver? { get set }
    + +
    +
  • @@ -440,15 +834,51 @@

    PolarBleApi

    Device info observer for DIS (Device information service) and BAS (Battery service) GATT (Generic attributes) client

    +
    +

    Declaration

    +
    +

    Swift

    +
    var deviceInfoObserver: PolarBleApiDeviceInfoObserver? { get set }
    + +
    +
  • - + + + deviceHrObserver + +
    +
    +
    +
    +
    +
    +

    Device observer for HR GATT client

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    @available(*, deprecated, message: "The functionality has changed. Please use the startHrStreaming API to get the heart rate data ")
    +var deviceHrObserver: PolarBleApiDeviceHrObserver? { get set }
    + +
    +
    +
    +
    +
  • +
  • +
    @@ -459,15 +889,23 @@

    PolarBleApi

    Bluetooth power state observer

    +
    +

    Declaration

    +
    +

    Swift

    +
    var powerStateObserver: PolarBleApiPowerStateObserver? { get set }
    + +
    +
  • @@ -478,15 +916,51 @@

    PolarBleApi

    Device features ready observer

    +
    +

    Declaration

    +
    +

    Swift

    +
    var deviceFeaturesObserver: PolarBleApiDeviceFeaturesObserver? { get set }
    + +
    +
    + + +
  • +
  • + +
    +
    +
    +
    +
    +

    SDK mode feature available in the device and ready observer

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    @available(*, deprecated, message: "The functionality has changed. Please use the bleSdkFeatureReady to know if sdkModeFeature is available")
    +var sdkModeFeatureObserver: PolarBleApiSdkModeFeatureObserver? { get set }
    + +
    +
  • @@ -497,15 +971,27 @@

    PolarBleApi

    Helper to check if Ble is currently powered

    +
    +

    Declaration

    +
    +

    Swift

    +
    var isBlePowered: Bool { get }
    + +
    +
    +
    +

    Return Value

    +

    current power state

    +
  • - + - logger + logger
    @@ -516,15 +1002,23 @@

    PolarBleApi

    optional logger set to get traces from sdk

    +
    +

    Declaration

    +
    +

    Swift

    +
    var logger: PolarBleApiLogger? { get set }
    + +
    +
  • @@ -535,6 +1029,14 @@

    PolarBleApi

    optional disable or enable automatic reconnection, by default it is enabled

    +
    +

    Declaration

    +
    +

    Swift

    +
    var automaticReconnection: Bool { get set }
    + +
    +
  • @@ -543,8 +1045,8 @@

    PolarBleApi

    diff --git a/polar-sdk-ios/docs/docsets/.docset/Contents/Resources/Documents/Protocols/PolarBleApiDeviceFeaturesObserver.html b/polar-sdk-ios/docs/docsets/.docset/Contents/Resources/Documents/Protocols/PolarBleApiDeviceFeaturesObserver.html index 76ef83a7..fabf7a6a 100644 --- a/polar-sdk-ios/docs/docsets/.docset/Contents/Resources/Documents/Protocols/PolarBleApiDeviceFeaturesObserver.html +++ b/polar-sdk-ios/docs/docsets/.docset/Contents/Resources/Documents/Protocols/PolarBleApiDeviceFeaturesObserver.html @@ -17,7 +17,7 @@
    -

    Docs (0% documented)

    +

    Docs (100% documented)

    @@ -46,6 +46,9 @@
    @@ -222,8 +366,8 @@

    PolarBleApiDeviceFeaturesObserver

    diff --git a/polar-sdk-ios/docs/docsets/.docset/Contents/Resources/Documents/Protocols/PolarBleApiDeviceInfoObserver.html b/polar-sdk-ios/docs/docsets/.docset/Contents/Resources/Documents/Protocols/PolarBleApiDeviceInfoObserver.html index bb99461d..2c8e0fbd 100644 --- a/polar-sdk-ios/docs/docsets/.docset/Contents/Resources/Documents/Protocols/PolarBleApiDeviceInfoObserver.html +++ b/polar-sdk-ios/docs/docsets/.docset/Contents/Resources/Documents/Protocols/PolarBleApiDeviceInfoObserver.html @@ -17,7 +17,7 @@
    -

    Docs (0% documented)

    +

    Docs (100% documented)

    @@ -46,6 +46,9 @@
  • @@ -232,6 +284,14 @@

    PolarBleApiDeviceInfoObserver

    Received DIS info.

    +
    +

    Declaration

    +
    +

    Swift

    +
    func disInformationReceived(_ identifier: String, uuid: CBUUID, value: String)
    + +
    +
  • @@ -240,8 +300,8 @@

    PolarBleApiDeviceInfoObserver

    diff --git a/polar-sdk-ios/docs/docsets/.docset/Contents/Resources/Documents/Protocols/PolarBleApiLogger.html b/polar-sdk-ios/docs/docsets/.docset/Contents/Resources/Documents/Protocols/PolarBleApiLogger.html index 726eb3bc..ec9a9959 100644 --- a/polar-sdk-ios/docs/docsets/.docset/Contents/Resources/Documents/Protocols/PolarBleApiLogger.html +++ b/polar-sdk-ios/docs/docsets/.docset/Contents/Resources/Documents/Protocols/PolarBleApiLogger.html @@ -17,7 +17,7 @@
    -

    Docs (0% documented)

    +

    Docs (100% documented)

    @@ -46,6 +46,9 @@
    @@ -221,8 +261,8 @@

    PolarBleApiLogger

    diff --git a/polar-sdk-ios/docs/docsets/.docset/Contents/Resources/Documents/Protocols/PolarBleApiObserver.html b/polar-sdk-ios/docs/docsets/.docset/Contents/Resources/Documents/Protocols/PolarBleApiObserver.html index bde7697c..abfe271d 100644 --- a/polar-sdk-ios/docs/docsets/.docset/Contents/Resources/Documents/Protocols/PolarBleApiObserver.html +++ b/polar-sdk-ios/docs/docsets/.docset/Contents/Resources/Documents/Protocols/PolarBleApiObserver.html @@ -17,7 +17,7 @@
    -

    Docs (0% documented)

    +

    Docs (100% documented)

    @@ -46,6 +46,9 @@
  • @@ -232,15 +272,42 @@

    PolarBleApiObserver

    Device connnection has been established.

    +
    +

    Declaration

    +
    +

    Swift

    +
    func deviceConnected(_ identifier: PolarDeviceInfo)
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + identifier + + +
    +

    Polar device info

    +
    +
    +
  • @@ -252,6 +319,33 @@

    PolarBleApiObserver

    If PolarBleApi#disconnectFromPolarDevice is not called, a new connection attempt is dispatched automatically.

    +
    +

    Declaration

    +
    +

    Swift

    +
    func deviceDisconnected(_ identifier: PolarDeviceInfo)
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + identifier + + +
    +

    Polar device info

    +
    +
    +
  • @@ -260,8 +354,8 @@

    PolarBleApiObserver

    diff --git a/polar-sdk-ios/docs/docsets/.docset/Contents/Resources/Documents/Protocols/PolarBleApiPowerStateObserver.html b/polar-sdk-ios/docs/docsets/.docset/Contents/Resources/Documents/Protocols/PolarBleApiPowerStateObserver.html index d9927216..45a069e5 100644 --- a/polar-sdk-ios/docs/docsets/.docset/Contents/Resources/Documents/Protocols/PolarBleApiPowerStateObserver.html +++ b/polar-sdk-ios/docs/docsets/.docset/Contents/Resources/Documents/Protocols/PolarBleApiPowerStateObserver.html @@ -17,7 +17,7 @@
    -

    Docs (0% documented)

    +

    Docs (100% documented)

    @@ -46,6 +46,9 @@
  • @@ -232,6 +253,14 @@

    PolarBleApiPowerStateObserver

    Ble powered off event, no further actions are needed from the application.

    +
    +

    Declaration

    +
    +

    Swift

    +
    func blePowerOff()
    + +
    +
  • @@ -240,8 +269,8 @@

    PolarBleApiPowerStateObserver

    diff --git a/polar-sdk-ios/docs/docsets/.docset/Contents/Resources/Documents/Protocols/PolarH10OfflineExerciseApi.html b/polar-sdk-ios/docs/docsets/.docset/Contents/Resources/Documents/Protocols/PolarH10OfflineExerciseApi.html index 94f2580a..4560fe86 100644 --- a/polar-sdk-ios/docs/docsets/.docset/Contents/Resources/Documents/Protocols/PolarH10OfflineExerciseApi.html +++ b/polar-sdk-ios/docs/docsets/.docset/Contents/Resources/Documents/Protocols/PolarH10OfflineExerciseApi.html @@ -17,7 +17,7 @@
    -

    Docs (0% documented)

    +

    Docs (100% documented)

    @@ -46,6 +46,9 @@
  • @@ -240,15 +325,51 @@

    PolarH10OfflineExerciseApi

    Request stop for current recording. Supported only by Polar H10. Requires polarFileTransfer feature.

    +
    +

    Declaration

    +
    +

    Swift

    +
    func stopRecording(_ identifier: String) -> Completable
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + identifier + + +
    +

    Polar device id or UUID

    +
    +
    +
    +
    +

    Return Value

    +

    Completable stream + +

      +
    • success: recording stopped
    • +
    • onError: see PolarErrors for possible errors invoked
    • +

    +
  • @@ -259,15 +380,51 @@

    PolarH10OfflineExerciseApi

    Request current recording status. Supported only by Polar H10. Requires polarFileTransfer feature.

    +
    +

    Declaration

    +
    +

    Swift

    +
    func requestRecordingStatus(_ identifier: String) -> Single<PolarRecordingStatus>
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + identifier + + +
    +

    Polar device id

    +
    +
    +
    +
    +

    Return Value

    +

    Single stream + +

    +
  • @@ -278,15 +435,51 @@

    PolarH10OfflineExerciseApi

    Api for fetching stored exercises list from Polar H10 device. Requires polarFileTransfer feature. This API is working for Polar OH1 and Polar Verity Sense devices too, however in those devices recording of exercise requires that sensor is registered to Polar Flow account.

    +
    +

    Declaration

    +
    +

    Swift

    +
    func fetchStoredExerciseList(_ identifier: String) -> Observable<PolarExerciseEntry>
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + identifier + + +
    +

    Polar device id or device address

    +
    +
    +
    +
    +

    Return Value

    +

    Observable stream + +

    +
  • @@ -297,15 +490,63 @@

    PolarH10OfflineExerciseApi

    Api for fetching a single exercise from Polar H10 device. Requires polarFileTransfer feature. This API is working for Polar OH1 and Polar Verity Sense devices too, however in those devices recording of exercise requires that sensor is registered to Polar Flow account.

    +
    +

    Declaration

    +
    +

    Swift

    +
    func fetchExercise(_ identifier: String, entry: PolarExerciseEntry) -> Single<PolarExerciseData>
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + +
    + + identifier + + +
    +

    Polar device id or device address

    +
    +
    + + entry + + +
    +

    single exercise entry to be fetched

    +
    +
    +
    +
    +

    Return Value

    +

    Single stream + +

      +
    • success: invoked after exercise data has been fetched from the device. see PolarExerciseEntry
    • +
    • onError: see PolarErrors for possible errors invoked
    • +

    +
  • @@ -316,6 +557,54 @@

    PolarH10OfflineExerciseApi

    Api for removing single exercise from Polar H10 device. Requires polarFileTransfer feature. This API is working for Polar OH1 and Polar Verity Sense devices too, however in those devices recording of exercise requires that sensor is registered to Polar Flow account.

    +
    +

    Declaration

    +
    +

    Swift

    +
    func removeExercise(_ identifier: String, entry: PolarExerciseEntry) -> Completable
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + +
    + + identifier + + +
    +

    Polar device id or device address

    +
    +
    + + entry + + +
    +

    single exercise entry to be removed

    +
    +
    +
    +
    +

    Return Value

    +

    Completable stream + +

      +
    • complete: entry successfully removed
    • +
    • onError: see PolarErrors for possible errors invoked
    • +

    +
  • @@ -324,8 +613,8 @@

    PolarH10OfflineExerciseApi

    diff --git a/polar-sdk-ios/docs/docsets/.docset/Contents/Resources/Documents/Protocols/PolarOfflineRecordingApi.html b/polar-sdk-ios/docs/docsets/.docset/Contents/Resources/Documents/Protocols/PolarOfflineRecordingApi.html index 5c002153..fa2a657b 100644 --- a/polar-sdk-ios/docs/docsets/.docset/Contents/Resources/Documents/Protocols/PolarOfflineRecordingApi.html +++ b/polar-sdk-ios/docs/docsets/.docset/Contents/Resources/Documents/Protocols/PolarOfflineRecordingApi.html @@ -17,7 +17,7 @@
    -

    Docs (0% documented)

    +

    Docs (100% documented)

    @@ -46,6 +46,9 @@
  • @@ -245,15 +275,32 @@

    PolarOfflineRecordingApi

    to decide currently available settings. The available settings depend on the state of the device.

    +
    +

    Declaration

    +
    +

    Swift

    +
    func requestOfflineRecordingSettings(_ identifier: String, feature: PolarDeviceDataType) -> Single<PolarSensorSetting>
    + +
    +
    +
    +

    Return Value

    +

    Single stream + +

      +
    • success: once after settings received from device
    • +
    • onError: see PolarErrors for possible errors invoked
    • +

    +
  • @@ -264,15 +311,32 @@

    PolarOfflineRecordingApi

    Request all the settings available in the device. The request returns the all capabilities of the requested streaming feature not limited by the current operation mode.

    +
    +

    Declaration

    +
    +

    Swift

    +
    func requestFullOfflineRecordingSettings(_ identifier: String, feature: PolarDeviceDataType) -> Single<PolarSensorSetting>
    + +
    +
    +
    +

    Return Value

    +

    Single stream + +

      +
    • success: once after settings received from device
    • +
    • onError: see PolarErrors for possible errors invoked
    • +

    +
  • @@ -283,15 +347,51 @@

    PolarOfflineRecordingApi

    Get status of offline recordings.

    +
    +

    Declaration

    +
    +

    Swift

    +
    func getOfflineRecordingStatus(_ identifier: String) -> Single<[PolarDeviceDataType : Bool]>
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + identifier + + +
    +

    polar device id

    +
    +
    +
    +
    +

    Return Value

    +

    Single stream + +

      +
    • success: the dictionary indicating the offline recording status, if the value in dictionary is true the offline recording is currently recording
    • +
    • error: see PolarErrors for possible errors invoked
    • +

    +
  • @@ -302,15 +402,52 @@

    PolarOfflineRecordingApi

    List offline recordings stored in the device.

    +
    +

    Declaration

    +
    +

    Swift

    +
    func listOfflineRecordings(_ identifier: String) -> Observable<PolarOfflineRecordingEntry>
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + identifier + + +
    +

    polar device id

    +
    +
    +
    +
    +

    Return Value

    +

    Completable + +

      +
    • next : the found offline recording entry
    • +
    • completed: the listing completed
    • +
    • error: see PolarErrors for possible errors invoked
    • +

    +
  • @@ -323,15 +460,75 @@

    PolarOfflineRecordingApi

    Note, the fetching of the recording may take several seconds if the recording is big.

    +
    +

    Declaration

    +
    +

    Swift

    +
    func getOfflineRecord(_ identifier: String, entry: PolarOfflineRecordingEntry, secret: PolarRecordingSecret?) -> Single<PolarOfflineRecordingData>
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + + + + + +
    + + identifier + + +
    +

    polar device id

    +
    +
    + + entry + + +
    +

    The offline recording to be fetched

    +
    +
    + + secret + + +
    +

    If the secret is provided in startOfflineRecording or setOfflineRecordingTrigger then the same secret must be provided when fetching the offline record

    +
    +
    +
    +
    +

    Return Value

    +

    Single + +

      +
    • success : the offline recording data
    • +
    • error: fetch recording request failed. see PolarErrors for possible errors invoked
    • +

    +
  • @@ -342,15 +539,63 @@

    PolarOfflineRecordingApi

    Removes offline recording from the device

    +
    +

    Declaration

    +
    +

    Swift

    +
    func removeOfflineRecord(_ identifier: String, entry: PolarOfflineRecordingEntry) -> Completable
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + +
    + + identifier + + +
    +

    polar device id

    +
    +
    + + entry + + +
    +

    entry to be removed

    +
    +
    +
    +
    +

    Return Value

    +

    Completable + +

      +
    • completed : offline record is removed
    • +
    • error: offline record removal failed, see PolarErrors for possible errors invoked
    • +

    +
  • @@ -361,15 +606,75 @@

    PolarOfflineRecordingApi

    Start offline recording.

    +
    +

    Declaration

    +
    +

    Swift

    +
    func startOfflineRecording(_ identifier: String, feature: PolarDeviceDataType, settings: PolarSensorSetting?, secret: PolarRecordingSecret?) -> Completable
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + + + + + +
    + + identifier + + +
    +

    polar device id

    +
    +
    + + feature + + +
    +

    the feature to be started

    +
    +
    + + settings + + +
    +

    optional settings used for offline recording. PolarDeviceDataType.hr and PolarDeviceDataType.ppi do not require settings

    +
    +
    +
    +
    +

    Return Value

    +

    Completable + +

      +
    • completed : offline recording is started successfully
    • +
    • error: see PolarErrors for possible errors invoked
    • +

    +
  • @@ -380,15 +685,63 @@

    PolarOfflineRecordingApi

    Request to stop offline recording.

    +
    +

    Declaration

    +
    +

    Swift

    +
    func stopOfflineRecording(_ identifier: String, feature: PolarDeviceDataType) -> Completable
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + +
    + + identifier + + +
    +

    polar device id

    +
    +
    + + feature + + +
    +

    the feature to be stopped

    +
    +
    +
    +
    +

    Return Value

    +

    Completable + +

      +
    • completed : offline recording is stop successfully
    • +
    • error: offline recording stop failed. see PolarErrors for possible errors invoked
    • +

    +
  • @@ -406,15 +759,79 @@

    PolarOfflineRecordingApi

    recording is not stopped by disable.

    +
    +

    Declaration

    +
    +

    Swift

    +
    func setOfflineRecordingTrigger(
    +    _ identifier: String,
    +    trigger: PolarOfflineRecordingTrigger,
    +    secret: PolarRecordingSecret?
    +) -> Completable
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + + + + + +
    + + identifier + + +
    +

    Polar device ID

    +
    +
    + + trigger + + +
    +

    type of trigger to set

    +
    +
    + + secret + + +
    +

    optional secret; if provided, the offline recordings are encrypted in the device

    +
    +
    +
    +
    +

    Return Value

    +

    Completable + +

      +
    • completed : the offline recording trigger was set successfully
    • +
    • error: the offline recording trigger was not set successfully; see PolarErrors for possible errors that may be invoked.
    • +

    +
  • @@ -425,6 +842,42 @@

    PolarOfflineRecordingApi

    Retrieves the current offline recording trigger setup in the device.

    +
    +

    Declaration

    +
    +

    Swift

    +
    func getOfflineRecordingTriggerSetup(_ identifier: String) -> Single<PolarOfflineRecordingTrigger>
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + identifier + + +
    +

    polar device id

    +
    +
    +
    +
    +

    Return Value

    +

    Completable + +

      +
    • success : the offline recording trigger setup in the device
    • +
    • error: fetching recording trigger setup failed, see PolarErrors for possible errors invoked
    • +

    +
  • @@ -433,8 +886,8 @@

    PolarOfflineRecordingApi

    diff --git a/polar-sdk-ios/docs/docsets/.docset/Contents/Resources/Documents/Protocols/PolarOnlineStreamingApi.html b/polar-sdk-ios/docs/docsets/.docset/Contents/Resources/Documents/Protocols/PolarOnlineStreamingApi.html index 289485ba..b7f07b89 100644 --- a/polar-sdk-ios/docs/docsets/.docset/Contents/Resources/Documents/Protocols/PolarOnlineStreamingApi.html +++ b/polar-sdk-ios/docs/docsets/.docset/Contents/Resources/Documents/Protocols/PolarOnlineStreamingApi.html @@ -17,7 +17,7 @@
    -

    Docs (0% documented)

    +

    Docs (100% documented)

    @@ -46,6 +46,9 @@
  • @@ -241,15 +271,32 @@

    PolarOnlineStreamingApi

    Requires polarSensorStreaming feature.

    +
    +

    Declaration

    +
    +

    Swift

    +
    func requestStreamSettings(_ identifier: String, feature: PolarDeviceDataType) -> Single<PolarSensorSetting>
    + +
    +
    +
    +

    Return Value

    +

    Single stream + +

      +
    • success: once after settings received from device
    • +
    • onError: see PolarErrors for possible errors invoked
    • +

    +
  • @@ -261,15 +308,63 @@

    PolarOnlineStreamingApi

    Requires polarSensorStreaming feature. This request is supported only by Polar Verity Sense firmware 1.1.5

    +
    +

    Declaration

    +
    +

    Swift

    +
    func requestFullStreamSettings(_ identifier: String, feature: PolarDeviceDataType) -> Single<PolarSensorSetting>
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + +
    + + identifier + + +
    +

    polar device id

    +
    +
    + + feature + + +
    +

    selected feature fromPolarDeviceDataType

    +
    +
    +
    +
    +

    Return Value

    +

    Single stream + +

      +
    • success: once after full settings received from device
    • +
    • onError: see PolarErrors for possible errors invoked
    • +

    +
  • @@ -281,15 +376,51 @@

    PolarOnlineStreamingApi

    error occurs or stream is disposed.

    +
    +

    Declaration

    +
    +

    Swift

    +
    func startHrStreaming(_ identifier: String) -> Observable<PolarHrData>
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + identifier + + +
    +

    Polar device id or device address

    +
    +
    +
    +
    +

    Return Value

    +

    Observable stream + +

      +
    • onNext: for every air packet received. see PolarHrData
    • +
    • onError: see PolarErrors for possible errors invoked
    • +

    +
  • @@ -300,15 +431,63 @@

    PolarOnlineStreamingApi

    Start the ECG (Electrocardiography) stream. ECG stream is stopped if the connection is closed, error occurs or stream is disposed.

    +
    +

    Declaration

    +
    +

    Swift

    +
    func startEcgStreaming(_ identifier: String, settings: PolarSensorSetting) -> Observable<PolarEcgData>
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + +
    + + identifier + + +
    +

    Polar device id or device address

    +
    +
    + + settings + + +
    +

    selected settings to start the stream

    +
    +
    +
    +
    +

    Return Value

    +

    Observable stream + +

    +
  • @@ -319,15 +498,32 @@

    PolarOnlineStreamingApi

    Start ACC (Accelerometer) stream. ACC stream is stopped if the connection is closed, error occurs or stream is disposed.

    +
    +

    Declaration

    +
    +

    Swift

    +
    func startAccStreaming(_ identifier: String, settings: PolarSensorSetting) -> Observable<PolarAccData>
    + +
    +
    +
    +

    Return Value

    +

    Observable stream + +

    +
  • @@ -338,15 +534,54 @@

    PolarOnlineStreamingApi

    Start Gyro stream. Gyro stream is stopped if the connection is closed, error occurs during start or stream is disposed.

    +
    +

    Declaration

    +
    +

    Swift

    +
    func startGyroStreaming(_ identifier: String, settings: PolarSensorSetting) -> Observable<PolarGyroData>
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + +
    + + identifier + + +
    +

    Polar device id or device address

    +
    +
    + + settings + + +
    +

    selected settings to start the stream

    +
    +
    +
  • @@ -357,15 +592,122 @@

    PolarOnlineStreamingApi

    Start magnetometer stream. Magnetometer stream is stopped if the connection is closed, error occurs or stream is disposed.

    +
    +

    Declaration

    +
    +

    Swift

    +
    func startMagnetometerStreaming(_ identifier: String, settings: PolarSensorSetting) -> Observable<PolarMagnetometerData>
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + +
    + + identifier + + +
    +

    Polar device id or device address

    +
    +
    + + settings + + +
    +

    selected settings to start the stream

    +
    +
    +
    + + +
  • +
  • + +
    +
    +
    +
    +
    +

    Start OHR (Optical heart rate) PPG (Photoplethysmography) stream. PPG stream is stopped if the connection is closed, error occurs or stream is disposed.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    @available(*, deprecated, renamed: "startPpgStreaming")
    +func startOhrStreaming(_ identifier: String, settings: PolarSensorSetting) -> Observable<PolarOhrData>
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + +
    + + identifier + + +
    +

    Polar device id or device address

    +
    +
    + + settings + + +
    +

    selected settings to start the stream

    +
    +
    +
    +
    +

    Return Value

    +

    Observable stream + +

    +
  • @@ -376,15 +718,63 @@

    PolarOnlineStreamingApi

    Start optical sensor PPG (Photoplethysmography) stream. PPG stream is stopped if the connection is closed, error occurs or stream is disposed.

    +
    +

    Declaration

    +
    +

    Swift

    +
    func startPpgStreaming(_ identifier: String, settings: PolarSensorSetting) -> Observable<PolarPpgData>
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + +
    + + identifier + + +
    +

    Polar device id or device address

    +
    +
    + + settings + + +
    +

    selected settings to start the stream

    +
    +
    +
    +
    +

    Return Value

    +

    Observable stream + +

    +
  • @@ -397,6 +787,68 @@

    PolarOnlineStreamingApi

    Notice that there is a delay before PPI data stream starts.

    +
    +

    Declaration

    +
    +

    Swift

    +
    func startPpiStreaming(_ identifier: String) -> Observable<PolarPpiData>
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + identifier + + +
    +

    Polar device id or device address

    +
    +
    +
    +
    +

    Return Value

    +

    Observable stream + +

    +
    + + +
  • +
  • + +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    func startOhrPPIStreaming(_ identifier: String) -> Observable<PolarPpiData>
    + +
    +
  • @@ -405,8 +857,8 @@

    PolarOnlineStreamingApi

    diff --git a/polar-sdk-ios/docs/docsets/.docset/Contents/Resources/Documents/Protocols/PolarSdkModeApi.html b/polar-sdk-ios/docs/docsets/.docset/Contents/Resources/Documents/Protocols/PolarSdkModeApi.html index a3a18f84..aaeca8f1 100644 --- a/polar-sdk-ios/docs/docsets/.docset/Contents/Resources/Documents/Protocols/PolarSdkModeApi.html +++ b/polar-sdk-ios/docs/docsets/.docset/Contents/Resources/Documents/Protocols/PolarSdkModeApi.html @@ -17,7 +17,7 @@
    -

    Docs (0% documented)

    +

    Docs (100% documented)

    @@ -46,6 +46,9 @@
  • @@ -241,15 +290,51 @@

    PolarSdkModeApi

    Disables SDK mode.

    +
    +

    Declaration

    +
    +

    Swift

    +
    func disableSDKMode(_ identifier: String) -> Completable
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + identifier + + +
    +

    Polar device id or device address

    +
    +
    +
    +
    +

    Return Value

    +

    Completable stream + +

      +
    • success: if SDK mode is disabled or SDK mode was already disabled
    • +
    • onError: if SDK mode disable failed
    • +

    +
  • @@ -262,6 +347,42 @@

    PolarSdkModeApi

    Note, SDK status check is supported by VeritySense starting from firmware 2.1.0

    +
    +

    Declaration

    +
    +

    Swift

    +
    func isSDKModeEnabled(_ identifier: String) -> Single<Bool>
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + identifier + + +
    +

    Polar device id or device address

    +
    +
    +
    +
    +

    Return Value

    +

    Single stream + +

      +
    • success: emits true, if the SDK mode is currently enabled
    • +
    • onError: see PolarErrors for possible errors invoked
    • +

    +
  • @@ -270,8 +391,8 @@

    PolarSdkModeApi

    diff --git a/polar-sdk-ios/docs/docsets/.docset/Contents/Resources/Documents/Structs.html b/polar-sdk-ios/docs/docsets/.docset/Contents/Resources/Documents/Structs.html index ceabbb6d..55c8f072 100644 --- a/polar-sdk-ios/docs/docsets/.docset/Contents/Resources/Documents/Structs.html +++ b/polar-sdk-ios/docs/docsets/.docset/Contents/Resources/Documents/Structs.html @@ -17,7 +17,7 @@
  • @@ -254,15 +276,23 @@

    Structures

    See more
    +
    +

    Declaration

    +
    +

    Swift

    +
    public struct PolarRecordingSecret
    + +
    +
  • @@ -278,7 +308,9 @@

    Structures

    Declaration

    Swift

    - +
    public struct PolarSensorSetting
    +
    extension PolarSensorSetting: CustomStringConvertible
    +
    @@ -289,8 +321,8 @@

    Declaration

    diff --git a/polar-sdk-ios/docs/docsets/.docset/Contents/Resources/Documents/Structs/PolarOfflineRecordingEntry.html b/polar-sdk-ios/docs/docsets/.docset/Contents/Resources/Documents/Structs/PolarOfflineRecordingEntry.html index 9e085a3f..40cc92a9 100644 --- a/polar-sdk-ios/docs/docsets/.docset/Contents/Resources/Documents/Structs/PolarOfflineRecordingEntry.html +++ b/polar-sdk-ios/docs/docsets/.docset/Contents/Resources/Documents/Structs/PolarOfflineRecordingEntry.html @@ -17,7 +17,7 @@
    -

    Docs (0% documented)

    +

    Docs (100% documented)

    @@ -46,6 +46,9 @@
  • - + - size + size
    @@ -232,15 +253,23 @@

    PolarOfflineRecordingEntry

    Recording size in bytes.

    +
    +

    Declaration

    +
    +

    Swift

    +
    public let size: UInt
    + +
    +
  • - + - date + date
    @@ -251,15 +280,23 @@

    PolarOfflineRecordingEntry

    The date and time of the recording entry i.e. the moment recording is started

    +
    +

    Declaration

    +
    +

    Swift

    +
    public let date: Date
    + +
    +
  • - + - type + type
    @@ -270,15 +307,23 @@

    PolarOfflineRecordingEntry

    data type of the recording

    +
    +

    Declaration

    +
    +

    Swift

    +
    public let type: PolarDeviceDataType
    + +
    +
  • @@ -288,6 +333,14 @@

    PolarOfflineRecordingEntry

    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(path: String, size: UInt, date: Date, type: PolarDeviceDataType)
    + +
    +
  • @@ -296,8 +349,8 @@

    PolarOfflineRecordingEntry

    diff --git a/polar-sdk-ios/docs/docsets/.docset/Contents/Resources/Documents/Structs/PolarOfflineRecordingTrigger.html b/polar-sdk-ios/docs/docsets/.docset/Contents/Resources/Documents/Structs/PolarOfflineRecordingTrigger.html index b73ea754..cf28fcfa 100644 --- a/polar-sdk-ios/docs/docsets/.docset/Contents/Resources/Documents/Structs/PolarOfflineRecordingTrigger.html +++ b/polar-sdk-ios/docs/docsets/.docset/Contents/Resources/Documents/Structs/PolarOfflineRecordingTrigger.html @@ -17,7 +17,7 @@
    -

    Docs (0% documented)

    +

    Docs (100% documented)

    @@ -46,6 +46,9 @@
  • @@ -230,9 +251,17 @@

    PolarOfflineRecordingTrigger

    Dictionary containing the PolarDeviceDataType keys for enabled triggers. Dictionary -is empty if triggerMode is PolarOfflineRecordingTriggerMode.triggerDisabled. -In case of the PolarDeviceDataType.ppi or PolarDeviceDataType.hr the settings is nil

    +is empty if triggerMode is PolarOfflineRecordingTriggerMode.triggerDisabled. +In case of the PolarDeviceDataType.ppi or PolarDeviceDataType.hr the settings is nil

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public let triggerFeatures: [PolarDeviceDataType : PolarSensorSetting?]
    +
    @@ -240,9 +269,9 @@

    PolarOfflineRecordingTrigger

  • @@ -252,6 +281,14 @@

    PolarOfflineRecordingTrigger

    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(triggerMode: PolarOfflineRecordingTriggerMode, triggerFeatures: [PolarDeviceDataType : PolarSensorSetting?])
    + +
    +
  • @@ -260,8 +297,8 @@

    PolarOfflineRecordingTrigger

    diff --git a/polar-sdk-ios/docs/docsets/.docset/Contents/Resources/Documents/Structs/PolarRecordingSecret.html b/polar-sdk-ios/docs/docsets/.docset/Contents/Resources/Documents/Structs/PolarRecordingSecret.html index d48ae397..a86080a2 100644 --- a/polar-sdk-ios/docs/docsets/.docset/Contents/Resources/Documents/Structs/PolarRecordingSecret.html +++ b/polar-sdk-ios/docs/docsets/.docset/Contents/Resources/Documents/Structs/PolarRecordingSecret.html @@ -17,7 +17,7 @@
    -

    Docs (0% documented)

    +

    Docs (100% documented)

    @@ -46,6 +46,9 @@
    @@ -220,8 +241,8 @@

    PolarRecordingSecret

    diff --git a/polar-sdk-ios/docs/docsets/.docset/Contents/Resources/Documents/Structs/PolarSensorSetting.html b/polar-sdk-ios/docs/docsets/.docset/Contents/Resources/Documents/Structs/PolarSensorSetting.html index 0e51f5ee..9f017de5 100644 --- a/polar-sdk-ios/docs/docsets/.docset/Contents/Resources/Documents/Structs/PolarSensorSetting.html +++ b/polar-sdk-ios/docs/docsets/.docset/Contents/Resources/Documents/Structs/PolarSensorSetting.html @@ -17,7 +17,7 @@
    -

    Docs (0% documented)

    +

    Docs (100% documented)

    @@ -46,6 +46,9 @@
  • - + - settings + settings
    @@ -239,15 +255,23 @@

    PolarSensorSetting

    current settings available / set

    +
    +

    Declaration

    +
    +

    Swift

    +
    public let settings: [SettingType : Set<UInt32>]
    + +
    +
  • - + - init(_:) + init(_:)
    @@ -258,15 +282,42 @@

    PolarSensorSetting

    constructor with desired settings

    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(_ settings: [SettingType : UInt32])
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + settings + + +
    +

    single key value pairs to start stream

    +
    +
    +
  • @@ -277,15 +328,27 @@

    PolarSensorSetting

    helper to retrieve max settings available

    +
    +

    Declaration

    +
    +

    Swift

    +
    public func maxSettings() -> PolarSensorSetting
    + +
    +
    +
    +

    Return Value

    +

    PolarSensorSetting with max settings

    +
  • @@ -295,6 +358,14 @@

    PolarSensorSetting

    +
    +

    Declaration

    +
    +

    Swift

    +
    public var description: String { get }
    + +
    +
  • @@ -303,8 +374,8 @@

    PolarSensorSetting

    diff --git a/polar-sdk-ios/docs/docsets/.docset/Contents/Resources/Documents/Structs/PolarSensorSetting/SettingType.html b/polar-sdk-ios/docs/docsets/.docset/Contents/Resources/Documents/Structs/PolarSensorSetting/SettingType.html index 1747e034..e595777c 100644 --- a/polar-sdk-ios/docs/docsets/.docset/Contents/Resources/Documents/Structs/PolarSensorSetting/SettingType.html +++ b/polar-sdk-ios/docs/docsets/.docset/Contents/Resources/Documents/Structs/PolarSensorSetting/SettingType.html @@ -17,7 +17,7 @@
    -

    Docs (0% documented)

    +

    Docs (100% documented)

  • @@ -232,15 +253,23 @@

    SettingType

    resolution in bits

    +
    +

    Declaration

    +
    +

    Swift

    +
    case resolution = 1
    + +
    +
  • - + - range + range
    @@ -251,15 +280,23 @@

    SettingType

    range

    +
    +

    Declaration

    +
    +

    Swift

    +
    case range = 2
    + +
    +
  • @@ -270,15 +307,23 @@

    SettingType

    range with min and max allowed values

    +
    +

    Declaration

    +
    +

    Swift

    +
    case rangeMilliunit = 3
    + +
    +
  • - + - channels + channels
    @@ -289,15 +334,23 @@

    SettingType

    amount of channels available

    +
    +

    Declaration

    +
    +

    Swift

    +
    case channels = 4
    + +
    +
  • - + - unknown + unknown
    @@ -308,6 +361,14 @@

    SettingType

    type is unknown

    +
    +

    Declaration

    +
    +

    Swift

    +
    case unknown = 0xff
    + +
    +
  • @@ -316,8 +377,8 @@

    SettingType

    diff --git a/polar-sdk-ios/docs/docsets/.docset/Contents/Resources/Documents/Typealiases.html b/polar-sdk-ios/docs/docsets/.docset/Contents/Resources/Documents/Typealiases.html index 5ac75724..6995b4b4 100644 --- a/polar-sdk-ios/docs/docsets/.docset/Contents/Resources/Documents/Typealiases.html +++ b/polar-sdk-ios/docs/docsets/.docset/Contents/Resources/Documents/Typealiases.html @@ -17,7 +17,7 @@
    -

    Docs (0% documented)

    +

    Docs (100% documented)

  • @@ -240,15 +254,23 @@

    Type Aliases

    +
    +

    Declaration

    +
    +

    Swift

    +
    public typealias PolarHrBroadcastData = (deviceInfo: PolarDeviceInfo, hr: UInt8, batteryStatus: Bool)
    + +
    +
  • @@ -265,15 +287,23 @@

    Type Aliases

    +
    +

    Declaration

    +
    +

    Swift

    +
    public typealias PolarHrData = [(hr: UInt8, rrsMs: [Int], rrAvailable: Bool, contactStatus: Bool, contactStatusSupported: Bool)]
    + +
    +
  • @@ -289,15 +319,23 @@

    Type Aliases

    +
    +

    Declaration

    +
    +

    Swift

    +
    public typealias PolarEcgData = (timeStamp: UInt64, samples: [(timeStamp: UInt64, voltage: Int32)])
    + +
    +
  • @@ -315,15 +353,23 @@

    Type Aliases

    +
    +

    Declaration

    +
    +

    Swift

    +
    public typealias PolarAccData = (timeStamp: UInt64, samples: [(timeStamp: UInt64, x: Int32, y: Int32, z: Int32)])
    + +
    +
  • @@ -341,15 +387,23 @@

    Type Aliases

    +
    +

    Declaration

    +
    +

    Swift

    +
    public typealias PolarGyroData = (timeStamp: UInt64, samples: [(timeStamp: UInt64, x: Float, y: Float, z: Float)])
    + +
    +
  • @@ -367,15 +421,57 @@

    Type Aliases

    +
    +

    Declaration

    +
    +

    Swift

    +
    public typealias PolarMagnetometerData = (timeStamp: UInt64, samples: [(timeStamp: UInt64, x: Float, y: Float, z: Float)])
    + +
    +
    + + +
  • +
  • +
    + + + + PolarOhrData + +
    +
    +
    +
    +
    +
    +

    Polar Ohr data

    +
    - Deprecated: Timestamp: Last sample timestamp in nanoseconds. The epoch of timestamp is 1.1.2000
    +- type: type of data, which varies based on what is type of optical sensor used in the device
    +- samples: Photoplethysmography samples
    +    - timeStamp: moment sample is taken in nanoseconds. The epoch of timestamp is 1.1.2000
    +    - channelSamples is the PPG (Photoplethysmography) raw value received from the optical sensor. Based on [OhrDataType] the amount of channels varies. Typically ppg(n) channel + n ambient(s).
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    @available(*, deprecated, renamed: "PolarPpgData")
    +public typealias PolarOhrData = (timeStamp: UInt64, type: OhrDataType, samples: [(timeStamp: UInt64, channelSamples: [Int32])])
    + +
    +
  • @@ -391,15 +487,23 @@

    Type Aliases

    +
    +

    Declaration

    +
    +

    Swift

    +
    public typealias PolarPpgData = (type: PpgDataType, samples: [(timeStamp: UInt64, channelSamples: [Int32])])
    + +
    +
  • @@ -419,15 +523,23 @@

    Type Aliases

    +
    +

    Declaration

    +
    +

    Swift

    +
    public typealias PolarPpiData = (timeStamp: UInt64, samples: [(hr: Int, ppInMs: UInt16, ppErrorEstimate: UInt16, blockerBit: Int, skinContactStatus: Int, skinContactSupported: Int)])
    + +
    +
  • @@ -442,15 +554,23 @@

    Type Aliases

    +
    +

    Declaration

    +
    +

    Swift

    +
    public typealias PolarExerciseEntry = (path: String, date: Date, entryId: String)
    + +
    +
  • @@ -464,15 +584,23 @@

    Type Aliases

    +
    +

    Declaration

    +
    +

    Swift

    +
    public typealias PolarExerciseData = (interval: UInt32, samples: [UInt32])
    + +
    +
  • @@ -486,6 +614,14 @@

    Type Aliases

    +
    +

    Declaration

    +
    +

    Swift

    +
    public typealias PolarRecordingStatus = (ongoing: Bool, entryId: String)
    + +
    +
  • @@ -494,8 +630,8 @@

    Type Aliases

    diff --git a/polar-sdk-ios/docs/docsets/.docset/Contents/Resources/Documents/index.html b/polar-sdk-ios/docs/docsets/.docset/Contents/Resources/Documents/index.html index 0f8c677d..246f7903 100644 --- a/polar-sdk-ios/docs/docsets/.docset/Contents/Resources/Documents/index.html +++ b/polar-sdk-ios/docs/docsets/.docset/Contents/Resources/Documents/index.html @@ -16,7 +16,7 @@
    -

    Docs (0% documented)

    +

    Docs (100% documented)

    diff --git a/polar-sdk-ios/docs/docsets/.docset/Contents/Resources/Documents/js/jquery.min.js b/polar-sdk-ios/docs/docsets/.docset/Contents/Resources/Documents/js/jquery.min.js index c4c6022f..2c69bc90 100644 --- a/polar-sdk-ios/docs/docsets/.docset/Contents/Resources/Documents/js/jquery.min.js +++ b/polar-sdk-ios/docs/docsets/.docset/Contents/Resources/Documents/js/jquery.min.js @@ -1,2 +1,2 @@ -/*! jQuery v3.6.0 | (c) OpenJS Foundation and other contributors | jquery.org/license */ -!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.6.0",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,D=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",y.option=!!ce.lastChild;var ge={thead:[1,"","
    "],col:[2,"","
    "],tr:[2,"","
    "],td:[3,"","
    "],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var _t,zt=[],Ut=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=zt.pop()||S.expando+"_"+wt.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Ut.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Ut.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Ut,"$1"+r):!1!==e.jsonp&&(e.url+=(Tt.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,zt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((_t=E.implementation.createHTMLDocument("").body).innerHTML="
    ",2===_t.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=Fe(y.pixelPosition,function(e,t){if(t)return t=We(e,n),Pe.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&v(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!y||!y.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ve(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace(B,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ye(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ve(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],y=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&y.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||y.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||y.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||y.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||y.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||y.push(".#.+[+~]"),e.querySelectorAll("\\\f"),y.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&y.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&y.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&y.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),y.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),y=y.length&&new RegExp(y.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),v=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&v(p,e)?-1:t==C||t.ownerDocument==p&&v(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!y||!y.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,D=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),v.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",v.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",v.option=!!ce.lastChild;var ge={thead:[1,"","
    "],col:[2,"","
    "],tr:[2,"","
    "],td:[3,"","
    "],_default:[0,"",""]};function ye(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ve(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Ut,Xt=[],Vt=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Xt.pop()||S.expando+"_"+Ct.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Vt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Vt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Vt,"$1"+r):!1!==e.jsonp&&(e.url+=(Et.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Xt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),v.createHTMLDocument=((Ut=E.implementation.createHTMLDocument("").body).innerHTML="
    ",2===Ut.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(v.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return B(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=_e(v.pixelPosition,function(e,t){if(t)return t=Be(e,n),Pe.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return B(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0Polar device info

    "},"Typealiases.html#/PolarHrBroadcastData":{"name":"PolarHrBroadcastData","abstract":"

    deviceInfo: see #PolarDeviceInfo ,

    "},"Typealiases.html#/PolarHrData":{"name":"PolarHrData","abstract":"

    Polar hr data

    "},"Typealiases.html#/PolarEcgData":{"name":"PolarEcgData","abstract":"

    Polar Ecg data

    "},"Typealiases.html#/PolarAccData":{"name":"PolarAccData","abstract":"

    Polar acc data

    "},"Typealiases.html#/PolarGyroData":{"name":"PolarGyroData","abstract":"

    Polar gyro data

    "},"Typealiases.html#/PolarMagnetometerData":{"name":"PolarMagnetometerData","abstract":"

    Polar magnetometer data

    "},"Typealiases.html#/PolarPpgData":{"name":"PolarPpgData","abstract":"

    Polar PPG data

    "},"Typealiases.html#/PolarPpiData":{"name":"PolarPpiData","abstract":"

    Polar ppi data

    "},"Typealiases.html#/PolarExerciseEntry":{"name":"PolarExerciseEntry","abstract":"

    Polar exercise entry

    "},"Typealiases.html#/PolarExerciseData":{"name":"PolarExerciseData","abstract":"

    Polar Exercise Data

    "},"Typealiases.html#/PolarRecordingStatus":{"name":"PolarRecordingStatus","abstract":"

    Polar Recording status

    "},"Structs/PolarSensorSetting/SettingType.html#/sampleRate":{"name":"sampleRate","abstract":"

    sample rate in hz

    ","parent_name":"SettingType"},"Structs/PolarSensorSetting/SettingType.html#/resolution":{"name":"resolution","abstract":"

    resolution in bits

    ","parent_name":"SettingType"},"Structs/PolarSensorSetting/SettingType.html#/range":{"name":"range","abstract":"

    range

    ","parent_name":"SettingType"},"Structs/PolarSensorSetting/SettingType.html#/rangeMilliunit":{"name":"rangeMilliunit","abstract":"

    range with min and max allowed values

    ","parent_name":"SettingType"},"Structs/PolarSensorSetting/SettingType.html#/channels":{"name":"channels","abstract":"

    amount of channels available

    ","parent_name":"SettingType"},"Structs/PolarSensorSetting/SettingType.html#/unknown":{"name":"unknown","abstract":"

    type is unknown

    ","parent_name":"SettingType"},"Structs/PolarSensorSetting/SettingType.html":{"name":"SettingType","abstract":"

    settings type

    ","parent_name":"PolarSensorSetting"},"Structs/PolarSensorSetting.html#/settings":{"name":"settings","abstract":"

    current settings available / set

    ","parent_name":"PolarSensorSetting"},"Structs/PolarSensorSetting.html#/init(_:)":{"name":"init(_:)","abstract":"

    constructor with desired settings

    ","parent_name":"PolarSensorSetting"},"Structs/PolarSensorSetting.html#/maxSettings()":{"name":"maxSettings()","abstract":"

    helper to retrieve max settings available

    ","parent_name":"PolarSensorSetting"},"Structs/PolarSensorSetting.html#/description":{"name":"description","parent_name":"PolarSensorSetting"},"Structs/PolarRecordingSecret.html#/init(key:)":{"name":"init(key:)","parent_name":"PolarRecordingSecret"},"Structs/PolarOfflineRecordingTrigger.html#/triggerMode":{"name":"triggerMode","abstract":"

    The mode of the trigger

    ","parent_name":"PolarOfflineRecordingTrigger"},"Structs/PolarOfflineRecordingTrigger.html#/triggerFeatures":{"name":"triggerFeatures","abstract":"

    Dictionary containing the PolarDeviceDataType keys for enabled triggers. Dictionary","parent_name":"PolarOfflineRecordingTrigger"},"Structs/PolarOfflineRecordingTrigger.html#/init(triggerMode:triggerFeatures:)":{"name":"init(triggerMode:triggerFeatures:)","parent_name":"PolarOfflineRecordingTrigger"},"Structs/PolarOfflineRecordingEntry.html#/path":{"name":"path","abstract":"

    Recording entry path in device.

    ","parent_name":"PolarOfflineRecordingEntry"},"Structs/PolarOfflineRecordingEntry.html#/size":{"name":"size","abstract":"

    Recording size in bytes.

    ","parent_name":"PolarOfflineRecordingEntry"},"Structs/PolarOfflineRecordingEntry.html#/date":{"name":"date","abstract":"

    The date and time of the recording entry i.e. the moment recording is started

    ","parent_name":"PolarOfflineRecordingEntry"},"Structs/PolarOfflineRecordingEntry.html#/type":{"name":"type","abstract":"

    data type of the recording

    ","parent_name":"PolarOfflineRecordingEntry"},"Structs/PolarOfflineRecordingEntry.html#/init(path:size:date:type:)":{"name":"init(path:size:date:type:)","parent_name":"PolarOfflineRecordingEntry"},"Structs/PolarOfflineRecordingEntry.html":{"name":"PolarOfflineRecordingEntry","abstract":"

    Polar offline recording entry container.

    "},"Structs/PolarOfflineRecordingTrigger.html":{"name":"PolarOfflineRecordingTrigger","abstract":"

    Polar offline recording trigger

    "},"Structs/PolarRecordingSecret.html":{"name":"PolarRecordingSecret","abstract":"

    Polar recording secret is used to encrypt the recording.

    "},"Structs/PolarSensorSetting.html":{"name":"PolarSensorSetting","abstract":"

    polar sensor settings class

    "},"Protocols/PolarSdkModeApi.html#/enableSDKMode(_:)":{"name":"enableSDKMode(_:)","abstract":"

    Enables SDK mode.

    ","parent_name":"PolarSdkModeApi"},"Protocols/PolarSdkModeApi.html#/disableSDKMode(_:)":{"name":"disableSDKMode(_:)","abstract":"

    Disables SDK mode.

    ","parent_name":"PolarSdkModeApi"},"Protocols/PolarSdkModeApi.html#/isSDKModeEnabled(_:)":{"name":"isSDKModeEnabled(_:)","abstract":"

    Check if SDK mode currently enabled.

    ","parent_name":"PolarSdkModeApi"},"Protocols/PolarOnlineStreamingApi.html#/getAvailableOnlineStreamDataTypes(_:)":{"name":"getAvailableOnlineStreamDataTypes(_:)","abstract":"

    Get the data types available in this device for online streaming

    ","parent_name":"PolarOnlineStreamingApi"},"Protocols/PolarOnlineStreamingApi.html#/requestStreamSettings(_:feature:)":{"name":"requestStreamSettings(_:feature:)","abstract":"

    Request the stream settings available in current operation mode. This request shall be used before the stream is started","parent_name":"PolarOnlineStreamingApi"},"Protocols/PolarOnlineStreamingApi.html#/requestFullStreamSettings(_:feature:)":{"name":"requestFullStreamSettings(_:feature:)","abstract":"

    Request full steam settings capabilities. The request returns the all capabilities of the requested streaming feature not limited by the current operation mode.","parent_name":"PolarOnlineStreamingApi"},"Protocols/PolarOnlineStreamingApi.html#/startHrStreaming(_:)":{"name":"startHrStreaming(_:)","abstract":"

    Start heart rate stream. Heart rate stream is stopped if the connection is closed,","parent_name":"PolarOnlineStreamingApi"},"Protocols/PolarOnlineStreamingApi.html#/startEcgStreaming(_:settings:)":{"name":"startEcgStreaming(_:settings:)","abstract":"

    Start the ECG (Electrocardiography) stream. ECG stream is stopped if the connection is closed, error occurs or stream is disposed.

    ","parent_name":"PolarOnlineStreamingApi"},"Protocols/PolarOnlineStreamingApi.html#/startAccStreaming(_:settings:)":{"name":"startAccStreaming(_:settings:)","abstract":"

    Start ACC (Accelerometer) stream. ACC stream is stopped if the connection is closed, error occurs or stream is disposed.

    ","parent_name":"PolarOnlineStreamingApi"},"Protocols/PolarOnlineStreamingApi.html#/startGyroStreaming(_:settings:)":{"name":"startGyroStreaming(_:settings:)","abstract":"

    Start Gyro stream. Gyro stream is stopped if the connection is closed, error occurs during start or stream is disposed.

    ","parent_name":"PolarOnlineStreamingApi"},"Protocols/PolarOnlineStreamingApi.html#/startMagnetometerStreaming(_:settings:)":{"name":"startMagnetometerStreaming(_:settings:)","abstract":"

    Start magnetometer stream. Magnetometer stream is stopped if the connection is closed, error occurs or stream is disposed.

    ","parent_name":"PolarOnlineStreamingApi"},"Protocols/PolarOnlineStreamingApi.html#/startPpgStreaming(_:settings:)":{"name":"startPpgStreaming(_:settings:)","abstract":"

    Start optical sensor PPG (Photoplethysmography) stream. PPG stream is stopped if the connection is closed, error occurs or stream is disposed.

    ","parent_name":"PolarOnlineStreamingApi"},"Protocols/PolarOnlineStreamingApi.html#/startPpiStreaming(_:)":{"name":"startPpiStreaming(_:)","abstract":"

    Start PPI (Pulse to Pulse interval) stream.","parent_name":"PolarOnlineStreamingApi"},"Protocols/PolarOfflineRecordingApi.html#/getAvailableOfflineRecordingDataTypes(_:)":{"name":"getAvailableOfflineRecordingDataTypes(_:)","abstract":"

    Get the data types available in this device for offline recording

    ","parent_name":"PolarOfflineRecordingApi"},"Protocols/PolarOfflineRecordingApi.html#/requestOfflineRecordingSettings(_:feature:)":{"name":"requestOfflineRecordingSettings(_:feature:)","abstract":"

    Request the offline recording settings available in current operation mode. This request shall be used before the offline recording is started","parent_name":"PolarOfflineRecordingApi"},"Protocols/PolarOfflineRecordingApi.html#/requestFullOfflineRecordingSettings(_:feature:)":{"name":"requestFullOfflineRecordingSettings(_:feature:)","abstract":"

    Request all the settings available in the device. The request returns the all capabilities of the requested streaming feature not limited by the current operation mode.

    ","parent_name":"PolarOfflineRecordingApi"},"Protocols/PolarOfflineRecordingApi.html#/getOfflineRecordingStatus(_:)":{"name":"getOfflineRecordingStatus(_:)","abstract":"

    Get status of offline recordings.

    ","parent_name":"PolarOfflineRecordingApi"},"Protocols/PolarOfflineRecordingApi.html#/listOfflineRecordings(_:)":{"name":"listOfflineRecordings(_:)","abstract":"

    List offline recordings stored in the device.

    ","parent_name":"PolarOfflineRecordingApi"},"Protocols/PolarOfflineRecordingApi.html#/getOfflineRecord(_:entry:secret:)":{"name":"getOfflineRecord(_:entry:secret:)","abstract":"

    Fetch recording from the device.

    ","parent_name":"PolarOfflineRecordingApi"},"Protocols/PolarOfflineRecordingApi.html#/removeOfflineRecord(_:entry:)":{"name":"removeOfflineRecord(_:entry:)","abstract":"

    Removes offline recording from the device

    ","parent_name":"PolarOfflineRecordingApi"},"Protocols/PolarOfflineRecordingApi.html#/startOfflineRecording(_:feature:settings:secret:)":{"name":"startOfflineRecording(_:feature:settings:secret:)","abstract":"

    Start offline recording.

    ","parent_name":"PolarOfflineRecordingApi"},"Protocols/PolarOfflineRecordingApi.html#/stopOfflineRecording(_:feature:)":{"name":"stopOfflineRecording(_:feature:)","abstract":"

    Request to stop offline recording.

    ","parent_name":"PolarOfflineRecordingApi"},"Protocols/PolarOfflineRecordingApi.html#/setOfflineRecordingTrigger(_:trigger:secret:)":{"name":"setOfflineRecordingTrigger(_:trigger:secret:)","abstract":"

    Sets the offline recording triggers for a given Polar device. The offline recording can be started automatically in the device by setting the triggers.","parent_name":"PolarOfflineRecordingApi"},"Protocols/PolarOfflineRecordingApi.html#/getOfflineRecordingTriggerSetup(_:)":{"name":"getOfflineRecordingTriggerSetup(_:)","abstract":"

    Retrieves the current offline recording trigger setup in the device.

    ","parent_name":"PolarOfflineRecordingApi"},"Protocols/PolarH10OfflineExerciseApi.html#/startRecording(_:exerciseId:interval:sampleType:)":{"name":"startRecording(_:exerciseId:interval:sampleType:)","abstract":"

    Request start recording. Supported only by Polar H10. Requires polarFileTransfer feature.

    ","parent_name":"PolarH10OfflineExerciseApi"},"Protocols/PolarH10OfflineExerciseApi.html#/stopRecording(_:)":{"name":"stopRecording(_:)","abstract":"

    Request stop for current recording. Supported only by Polar H10. Requires polarFileTransfer feature.

    ","parent_name":"PolarH10OfflineExerciseApi"},"Protocols/PolarH10OfflineExerciseApi.html#/requestRecordingStatus(_:)":{"name":"requestRecordingStatus(_:)","abstract":"

    Request current recording status. Supported only by Polar H10. Requires polarFileTransfer feature.

    ","parent_name":"PolarH10OfflineExerciseApi"},"Protocols/PolarH10OfflineExerciseApi.html#/fetchStoredExerciseList(_:)":{"name":"fetchStoredExerciseList(_:)","abstract":"

    Api for fetching stored exercises list from Polar H10 device. Requires polarFileTransfer feature. This API is working for Polar OH1 and Polar Verity Sense devices too, however in those devices recording of exercise requires that sensor is registered to Polar Flow account.

    ","parent_name":"PolarH10OfflineExerciseApi"},"Protocols/PolarH10OfflineExerciseApi.html#/fetchExercise(_:entry:)":{"name":"fetchExercise(_:entry:)","abstract":"

    Api for fetching a single exercise from Polar H10 device. Requires polarFileTransfer feature. This API is working for Polar OH1 and Polar Verity Sense devices too, however in those devices recording of exercise requires that sensor is registered to Polar Flow account.

    ","parent_name":"PolarH10OfflineExerciseApi"},"Protocols/PolarH10OfflineExerciseApi.html#/removeExercise(_:entry:)":{"name":"removeExercise(_:entry:)","abstract":"

    Api for removing single exercise from Polar H10 device. Requires polarFileTransfer feature. This API is working for Polar OH1 and Polar Verity Sense devices too, however in those devices recording of exercise requires that sensor is registered to Polar Flow account.

    ","parent_name":"PolarH10OfflineExerciseApi"},"Protocols/PolarBleApiLogger.html#/message(_:)":{"name":"message(_:)","abstract":"

    log message from sdk

    ","parent_name":"PolarBleApiLogger"},"Protocols/PolarBleApiDeviceFeaturesObserver.html#/bleSdkFeatureReady(_:feature:)":{"name":"bleSdkFeatureReady(_:feature:)","abstract":"

    The feature is available in this device and it is ready. Called only for the features which are specified in [PolarBleApi] construction.","parent_name":"PolarBleApiDeviceFeaturesObserver"},"Protocols/PolarBleApiDeviceInfoObserver.html#/batteryLevelReceived(_:batteryLevel:)":{"name":"batteryLevelReceived(_:batteryLevel:)","abstract":"

    Battery level received from device.

    ","parent_name":"PolarBleApiDeviceInfoObserver"},"Protocols/PolarBleApiDeviceInfoObserver.html#/disInformationReceived(_:uuid:value:)":{"name":"disInformationReceived(_:uuid:value:)","abstract":"

    Received DIS info.

    ","parent_name":"PolarBleApiDeviceInfoObserver"},"Protocols/PolarBleApiPowerStateObserver.html#/blePowerOn()":{"name":"blePowerOn()","abstract":"

    Ble powered on event.

    ","parent_name":"PolarBleApiPowerStateObserver"},"Protocols/PolarBleApiPowerStateObserver.html#/blePowerOff()":{"name":"blePowerOff()","abstract":"

    Ble powered off event, no further actions are needed from the application.

    ","parent_name":"PolarBleApiPowerStateObserver"},"Protocols/PolarBleApiObserver.html#/deviceConnecting(_:)":{"name":"deviceConnecting(_:)","abstract":"

    Callback when connection attempt is started to device

    ","parent_name":"PolarBleApiObserver"},"Protocols/PolarBleApiObserver.html#/deviceConnected(_:)":{"name":"deviceConnected(_:)","abstract":"

    Device connnection has been established.

    ","parent_name":"PolarBleApiObserver"},"Protocols/PolarBleApiObserver.html#/deviceDisconnected(_:)":{"name":"deviceDisconnected(_:)","abstract":"

    Connection lost to device.","parent_name":"PolarBleApiObserver"},"Protocols/PolarBleApi.html#/cleanup()":{"name":"cleanup()","abstract":"

    remove all known devices, which are not in use

    ","parent_name":"PolarBleApi"},"Protocols/PolarBleApi.html#/polarFilter(_:)":{"name":"polarFilter(_:)","abstract":"

    Enable or disable polar filter.

    ","parent_name":"PolarBleApi"},"Protocols/PolarBleApi.html#/startAutoConnectToDevice(_:service:polarDeviceType:)":{"name":"startAutoConnectToDevice(_:service:polarDeviceType:)","abstract":"

    Start connecting to a nearby device. PolarBleApiObservers polarDeviceConnected is","parent_name":"PolarBleApi"},"Protocols/PolarBleApi.html#/connectToDevice(_:)":{"name":"connectToDevice(_:)","abstract":"

    Request a connection to a Polar device. Invokes PolarBleApiObservers polarDeviceConnected.

    ","parent_name":"PolarBleApi"},"Protocols/PolarBleApi.html#/disconnectFromDevice(_:)":{"name":"disconnectFromDevice(_:)","abstract":"

    Disconnect from the current Polar device.

    ","parent_name":"PolarBleApi"},"Protocols/PolarBleApi.html#/searchForDevice()":{"name":"searchForDevice()","abstract":"

    Start searching for Polar device(s)

    ","parent_name":"PolarBleApi"},"Protocols/PolarBleApi.html#/startListenForPolarHrBroadcasts(_:)":{"name":"startListenForPolarHrBroadcasts(_:)","abstract":"

    Start listening the heart rate from Polar devices when subscribed.","parent_name":"PolarBleApi"},"Protocols/PolarBleApi.html#/isFeatureReady(_:feature:)":{"name":"isFeatureReady(_:feature:)","abstract":"

    Check if the feature is ready.

    ","parent_name":"PolarBleApi"},"Protocols/PolarBleApi.html#/setLocalTime(_:time:zone:)":{"name":"setLocalTime(_:time:zone:)","abstract":"

    Set local time to device.

    ","parent_name":"PolarBleApi"},"Protocols/PolarBleApi.html#/getLocalTime(_:)":{"name":"getLocalTime(_:)","abstract":"

    Get current time in device. Note, the H10 is not supporting time read.

    ","parent_name":"PolarBleApi"},"Protocols/PolarBleApi.html#/observer":{"name":"observer","abstract":"

    Common GAP (Generic access profile) observer

    ","parent_name":"PolarBleApi"},"Protocols/PolarBleApi.html#/deviceInfoObserver":{"name":"deviceInfoObserver","abstract":"

    Device info observer for DIS (Device information service) and BAS (Battery service) GATT (Generic attributes) client

    ","parent_name":"PolarBleApi"},"Protocols/PolarBleApi.html#/powerStateObserver":{"name":"powerStateObserver","abstract":"

    Bluetooth power state observer

    ","parent_name":"PolarBleApi"},"Protocols/PolarBleApi.html#/deviceFeaturesObserver":{"name":"deviceFeaturesObserver","abstract":"

    Device features ready observer

    ","parent_name":"PolarBleApi"},"Protocols/PolarBleApi.html#/isBlePowered":{"name":"isBlePowered","abstract":"

    Helper to check if Ble is currently powered

    ","parent_name":"PolarBleApi"},"Protocols/PolarBleApi.html#/logger":{"name":"logger","abstract":"

    optional logger set to get traces from sdk

    ","parent_name":"PolarBleApi"},"Protocols/PolarBleApi.html#/automaticReconnection":{"name":"automaticReconnection","abstract":"

    optional disable or enable automatic reconnection, by default it is enabled

    ","parent_name":"PolarBleApi"},"Protocols/PolarBleApi.html":{"name":"PolarBleApi","abstract":"

    API.

    "},"Protocols/PolarBleApiObserver.html":{"name":"PolarBleApiObserver","abstract":"

    Polar Ble API connection observer.

    "},"Protocols/PolarBleApiPowerStateObserver.html":{"name":"PolarBleApiPowerStateObserver","abstract":"

    Bluetooth state observer.

    "},"Protocols/PolarBleApiDeviceInfoObserver.html":{"name":"PolarBleApiDeviceInfoObserver","abstract":"

    Device info observer.

    "},"Protocols.html#/PolarBleApiDeviceHrObserver":{"name":"PolarBleApiDeviceHrObserver","abstract":"

    Heart rate observer

    "},"Protocols/PolarBleApiDeviceFeaturesObserver.html":{"name":"PolarBleApiDeviceFeaturesObserver","abstract":"

    Data client observer

    "},"Protocols.html#/PolarBleApiSdkModeFeatureObserver":{"name":"PolarBleApiSdkModeFeatureObserver","abstract":"

    SDK Mode observer

    "},"Protocols/PolarBleApiLogger.html":{"name":"PolarBleApiLogger","abstract":"

    logger observer

    "},"Protocols/PolarH10OfflineExerciseApi.html":{"name":"PolarH10OfflineExerciseApi","abstract":"

    H10 Exercise recording API.

    "},"Protocols/PolarOfflineRecordingApi.html":{"name":"PolarOfflineRecordingApi","abstract":"

    Offline recording API.

    "},"Protocols/PolarOnlineStreamingApi.html":{"name":"PolarOnlineStreamingApi","abstract":"

    Online steaming API.

    "},"Protocols/PolarSdkModeApi.html":{"name":"PolarSdkModeApi","abstract":"

    Polar SDK mode API

    "},"Extensions/PrimitiveSequence.html#/asCompletable()":{"name":"asCompletable()","parent_name":"PrimitiveSequence"},"Extensions.html#/PolarBleApiImpl":{"name":"PolarBleApiImpl"},"Extensions/PrimitiveSequence.html":{"name":"PrimitiveSequence"},"Enums/PolarOfflineRecordingTriggerMode.html#/triggerDisabled":{"name":"triggerDisabled","parent_name":"PolarOfflineRecordingTriggerMode"},"Enums/PolarOfflineRecordingTriggerMode.html#/triggerSystemStart":{"name":"triggerSystemStart","parent_name":"PolarOfflineRecordingTriggerMode"},"Enums/PolarOfflineRecordingTriggerMode.html#/triggerExerciseStart":{"name":"triggerExerciseStart","parent_name":"PolarOfflineRecordingTriggerMode"},"Enums/PolarOfflineRecordingData.html#/accOfflineRecordingData(_:startTime:settings:)":{"name":"accOfflineRecordingData(_:startTime:settings:)","parent_name":"PolarOfflineRecordingData"},"Enums/PolarOfflineRecordingData.html#/gyroOfflineRecordingData(_:startTime:settings:)":{"name":"gyroOfflineRecordingData(_:startTime:settings:)","parent_name":"PolarOfflineRecordingData"},"Enums/PolarOfflineRecordingData.html#/magOfflineRecordingData(_:startTime:settings:)":{"name":"magOfflineRecordingData(_:startTime:settings:)","parent_name":"PolarOfflineRecordingData"},"Enums/PolarOfflineRecordingData.html#/ppgOfflineRecordingData(_:startTime:settings:)":{"name":"ppgOfflineRecordingData(_:startTime:settings:)","parent_name":"PolarOfflineRecordingData"},"Enums/PolarOfflineRecordingData.html#/ppiOfflineRecordingData(_:startTime:)":{"name":"ppiOfflineRecordingData(_:startTime:)","parent_name":"PolarOfflineRecordingData"},"Enums/PolarOfflineRecordingData.html#/hrOfflineRecordingData(_:startTime:)":{"name":"hrOfflineRecordingData(_:startTime:)","parent_name":"PolarOfflineRecordingData"},"Enums/PolarErrors.html#/notificationNotEnabled":{"name":"notificationNotEnabled","abstract":"

    GATT characteristic notification not enabled

    ","parent_name":"PolarErrors"},"Enums/PolarErrors.html#/serviceNotFound":{"name":"serviceNotFound","abstract":"

    GATT service not found

    ","parent_name":"PolarErrors"},"Enums/PolarErrors.html#/deviceNotConnected":{"name":"deviceNotConnected","abstract":"

    Device state != Connected

    ","parent_name":"PolarErrors"},"Enums/PolarErrors.html#/deviceNotFound":{"name":"deviceNotFound","abstract":"

    Device not found

    ","parent_name":"PolarErrors"},"Enums/PolarErrors.html#/operationNotSupported":{"name":"operationNotSupported","abstract":"

    Requested operation is not supported

    ","parent_name":"PolarErrors"},"Enums/PolarErrors.html#/messageEncodeFailed":{"name":"messageEncodeFailed","abstract":"

    Google protocol buffers encode failed

    ","parent_name":"PolarErrors"},"Enums/PolarErrors.html#/messageDecodeFailed":{"name":"messageDecodeFailed","abstract":"

    Google protocol buffers decode failed

    ","parent_name":"PolarErrors"},"Enums/PolarErrors.html#/dateTimeFormatFailed(description:)":{"name":"dateTimeFormatFailed(description:)","abstract":"

    String to date time formatting failed

    ","parent_name":"PolarErrors"},"Enums/PolarErrors.html#/unableToStartStreaming":{"name":"unableToStartStreaming","abstract":"

    Failed to start streaming

    ","parent_name":"PolarErrors"},"Enums/PolarErrors.html#/invalidArgument(description:)":{"name":"invalidArgument(description:)","abstract":"

    invalid argument

    ","parent_name":"PolarErrors"},"Enums/PolarErrors.html#/polarBleSdkInternalException(description:)":{"name":"polarBleSdkInternalException(description:)","abstract":"

    Polar BLE SDK internal exception indicating something went wrong in SDK internal logic

    ","parent_name":"PolarErrors"},"Enums/PolarErrors.html#/deviceError(description:)":{"name":"deviceError(description:)","abstract":"

    Error on device operation

    ","parent_name":"PolarErrors"},"Enums/PolarErrors.html#/polarOfflineRecordingError(description:)":{"name":"polarOfflineRecordingError(description:)","abstract":"

    Error related to offline recording

    ","parent_name":"PolarErrors"},"Enums/SampleType.html#/hr":{"name":"hr","abstract":"

    recording type to use is hr in BPM

    ","parent_name":"SampleType"},"Enums/SampleType.html#/rr":{"name":"rr","abstract":"

    recording type to use is rr interval

    ","parent_name":"SampleType"},"Enums/RecordingInterval.html#/interval_1s":{"name":"interval_1s","parent_name":"RecordingInterval"},"Enums/RecordingInterval.html#/interval_5s":{"name":"interval_5s","parent_name":"RecordingInterval"},"Enums/PpgDataType.html#/ppg3_ambient1":{"name":"ppg3_ambient1","abstract":"

    3 ppg + 1 ambient

    ","parent_name":"PpgDataType"},"Enums/PpgDataType.html#/unknown":{"name":"unknown","parent_name":"PpgDataType"},"Enums/PolarBleSdkFeature.html#/feature_hr":{"name":"feature_hr","abstract":"

    Hr feature to receive hr and rr data from Polar or any other BLE device via standard HR BLE service

    ","parent_name":"PolarBleSdkFeature"},"Enums/PolarBleSdkFeature.html#/feature_device_info":{"name":"feature_device_info","abstract":"

    Device information feature to receive sw information from Polar or any other BLE device

    ","parent_name":"PolarBleSdkFeature"},"Enums/PolarBleSdkFeature.html#/feature_battery_info":{"name":"feature_battery_info","abstract":"

    Feature to receive battery level info from Polar or any other BLE device

    ","parent_name":"PolarBleSdkFeature"},"Enums/PolarBleSdkFeature.html#/feature_polar_online_streaming":{"name":"feature_polar_online_streaming","abstract":"

    Polar sensor streaming feature to stream live online data. For example hr, ecg, acc, ppg, ppi, etc…

    ","parent_name":"PolarBleSdkFeature"},"Enums/PolarBleSdkFeature.html#/feature_polar_offline_recording":{"name":"feature_polar_offline_recording","abstract":"

    Polar offline recording feature to record offline data to Polar device without continuous BLE connection.

    ","parent_name":"PolarBleSdkFeature"},"Enums/PolarBleSdkFeature.html#/feature_polar_h10_exercise_recording":{"name":"feature_polar_h10_exercise_recording","abstract":"

    H10 exercise recording feature to record exercise data to Polar H10 device without continuous BLE connection.

    ","parent_name":"PolarBleSdkFeature"},"Enums/PolarBleSdkFeature.html#/feature_polar_device_time_setup":{"name":"feature_polar_device_time_setup","abstract":"

    Feature to read and set device time in Polar device

    ","parent_name":"PolarBleSdkFeature"},"Enums/PolarBleSdkFeature.html#/feature_polar_sdk_mode":{"name":"feature_polar_sdk_mode","abstract":"

    In SDK mode the wider range of capabilities are available for the online stream or offline recoding than in normal operation mode.

    ","parent_name":"PolarBleSdkFeature"},"Enums/PolarDeviceDataType.html#/ecg":{"name":"ecg","parent_name":"PolarDeviceDataType"},"Enums/PolarDeviceDataType.html#/acc":{"name":"acc","parent_name":"PolarDeviceDataType"},"Enums/PolarDeviceDataType.html#/ppg":{"name":"ppg","parent_name":"PolarDeviceDataType"},"Enums/PolarDeviceDataType.html#/ppi":{"name":"ppi","parent_name":"PolarDeviceDataType"},"Enums/PolarDeviceDataType.html#/gyro":{"name":"gyro","parent_name":"PolarDeviceDataType"},"Enums/PolarDeviceDataType.html#/magnetometer":{"name":"magnetometer","parent_name":"PolarDeviceDataType"},"Enums/PolarDeviceDataType.html#/hr":{"name":"hr","parent_name":"PolarDeviceDataType"},"Enums/PolarDeviceDataType.html":{"name":"PolarDeviceDataType","abstract":"

    Data types available in Polar devices for online streaming or offline recording.

    "},"Enums/PolarBleSdkFeature.html":{"name":"PolarBleSdkFeature","abstract":"

    Features available in Polar BLE SDK library

    "},"Enums/PpgDataType.html":{"name":"PpgDataType","abstract":"

    PPG data source enum

    "},"Enums/RecordingInterval.html":{"name":"RecordingInterval","abstract":"

    Recoding intervals for H10 recording start

    "},"Enums/SampleType.html":{"name":"SampleType","abstract":"

    Sample types for H10 recording start

    "},"Enums/PolarErrors.html":{"name":"PolarErrors","abstract":"

    Polar SDK errors

    "},"Enums/PolarOfflineRecordingData.html":{"name":"PolarOfflineRecordingData"},"Enums/PolarOfflineRecordingTriggerMode.html":{"name":"PolarOfflineRecordingTriggerMode","abstract":"

    Polar offline recording trigger mode. Offline recording trigger can be used to start the offline recording automatically in device, based on selected trigger mode.

    "},"Classes/PolarBleApiDefaultImpl.html#/polarImplementation(_:features:)":{"name":"polarImplementation(_:features:)","abstract":"

    New instance of Polar Ble API implementation

    ","parent_name":"PolarBleApiDefaultImpl"},"Classes/PolarBleApiDefaultImpl.html#/versionInfo()":{"name":"versionInfo()","abstract":"

    Return current version

    ","parent_name":"PolarBleApiDefaultImpl"},"Classes/PolarBleApiDefaultImpl.html":{"name":"PolarBleApiDefaultImpl","abstract":"

    Class to provide the default implementation of the Polar Ble API

    "},"Classes.html":{"name":"Classes","abstract":"

    The following classes are available globally.

    "},"Enums.html":{"name":"Enumerations","abstract":"

    The following enumerations are available globally.

    "},"Extensions.html":{"name":"Extensions","abstract":"

    The following extensions are available globally.

    "},"Protocols.html":{"name":"Protocols","abstract":"

    The following protocols are available globally.

    "},"Structs.html":{"name":"Structures","abstract":"

    The following structures are available globally.

    "},"Typealiases.html":{"name":"Type Aliases","abstract":"

    The following type aliases are available globally.

    "}} \ No newline at end of file +{"Typealiases.html#/s:11PolarBleSdk0A10DeviceInfoa":{"name":"PolarDeviceInfo","abstract":"

    Polar device info

    "},"Typealiases.html#/s:11PolarBleSdk0A15HrBroadcastDataa":{"name":"PolarHrBroadcastData","abstract":"

    deviceInfo: see #PolarDeviceInfo ,

    "},"Typealiases.html#/s:11PolarBleSdk0A6HrDataa":{"name":"PolarHrData","abstract":"

    Polar hr data

    "},"Typealiases.html#/s:11PolarBleSdk0A7EcgDataa":{"name":"PolarEcgData","abstract":"

    Polar Ecg data

    "},"Typealiases.html#/s:11PolarBleSdk0A7AccDataa":{"name":"PolarAccData","abstract":"

    Polar acc data

    "},"Typealiases.html#/s:11PolarBleSdk0A8GyroDataa":{"name":"PolarGyroData","abstract":"

    Polar gyro data

    "},"Typealiases.html#/s:11PolarBleSdk0A16MagnetometerDataa":{"name":"PolarMagnetometerData","abstract":"

    Polar magnetometer data

    "},"Typealiases.html#/s:11PolarBleSdk0A7OhrDataa":{"name":"PolarOhrData","abstract":"

    Polar Ohr data

    "},"Typealiases.html#/s:11PolarBleSdk0A7PpgDataa":{"name":"PolarPpgData","abstract":"

    Polar PPG data

    "},"Typealiases.html#/s:11PolarBleSdk0A7PpiDataa":{"name":"PolarPpiData","abstract":"

    Polar ppi data

    "},"Typealiases.html#/s:11PolarBleSdk0A13ExerciseEntrya":{"name":"PolarExerciseEntry","abstract":"

    Polar exercise entry

    "},"Typealiases.html#/s:11PolarBleSdk0A12ExerciseDataa":{"name":"PolarExerciseData","abstract":"

    Polar Exercise Data

    "},"Typealiases.html#/s:11PolarBleSdk0A15RecordingStatusa":{"name":"PolarRecordingStatus","abstract":"

    Polar Recording status

    "},"Structs/PolarSensorSetting/SettingType.html#/s:11PolarBleSdk0A13SensorSettingV0E4TypeO10sampleRateyA2EmF":{"name":"sampleRate","abstract":"

    sample rate in hz

    ","parent_name":"SettingType"},"Structs/PolarSensorSetting/SettingType.html#/s:11PolarBleSdk0A13SensorSettingV0E4TypeO10resolutionyA2EmF":{"name":"resolution","abstract":"

    resolution in bits

    ","parent_name":"SettingType"},"Structs/PolarSensorSetting/SettingType.html#/s:11PolarBleSdk0A13SensorSettingV0E4TypeO5rangeyA2EmF":{"name":"range","abstract":"

    range

    ","parent_name":"SettingType"},"Structs/PolarSensorSetting/SettingType.html#/s:11PolarBleSdk0A13SensorSettingV0E4TypeO14rangeMilliunityA2EmF":{"name":"rangeMilliunit","abstract":"

    range with min and max allowed values

    ","parent_name":"SettingType"},"Structs/PolarSensorSetting/SettingType.html#/s:11PolarBleSdk0A13SensorSettingV0E4TypeO8channelsyA2EmF":{"name":"channels","abstract":"

    amount of channels available

    ","parent_name":"SettingType"},"Structs/PolarSensorSetting/SettingType.html#/s:11PolarBleSdk0A13SensorSettingV0E4TypeO7unknownyA2EmF":{"name":"unknown","abstract":"

    type is unknown

    ","parent_name":"SettingType"},"Structs/PolarSensorSetting/SettingType.html":{"name":"SettingType","abstract":"

    settings type

    ","parent_name":"PolarSensorSetting"},"Structs/PolarSensorSetting.html#/s:11PolarBleSdk0A13SensorSettingV8settingsSDyAC0E4TypeOShys6UInt32VGGvp":{"name":"settings","abstract":"

    current settings available / set

    ","parent_name":"PolarSensorSetting"},"Structs/PolarSensorSetting.html#/s:11PolarBleSdk0A13SensorSettingVyACSDyAC0E4TypeOs6UInt32VGcfc":{"name":"init(_:)","abstract":"

    constructor with desired settings

    ","parent_name":"PolarSensorSetting"},"Structs/PolarSensorSetting.html#/s:11PolarBleSdk0A13SensorSettingV11maxSettingsACyF":{"name":"maxSettings()","abstract":"

    helper to retrieve max settings available

    ","parent_name":"PolarSensorSetting"},"Structs/PolarSensorSetting.html#/s:s23CustomStringConvertibleP11descriptionSSvp":{"name":"description","parent_name":"PolarSensorSetting"},"Structs/PolarRecordingSecret.html#/s:11PolarBleSdk0A15RecordingSecretV3keyAC10Foundation4DataV_tKcfc":{"name":"init(key:)","parent_name":"PolarRecordingSecret"},"Structs/PolarOfflineRecordingTrigger.html#/s:11PolarBleSdk0A23OfflineRecordingTriggerV11triggerModeAA0adefH0Ovp":{"name":"triggerMode","abstract":"

    The mode of the trigger

    ","parent_name":"PolarOfflineRecordingTrigger"},"Structs/PolarOfflineRecordingTrigger.html#/s:11PolarBleSdk0A23OfflineRecordingTriggerV15triggerFeaturesSDyAA0A14DeviceDataTypeOAA0A13SensorSettingVSgGvp":{"name":"triggerFeatures","abstract":"

    Dictionary containing the PolarDeviceDataType keys for enabled triggers. Dictionary","parent_name":"PolarOfflineRecordingTrigger"},"Structs/PolarOfflineRecordingTrigger.html#/s:11PolarBleSdk0A23OfflineRecordingTriggerV11triggerMode0G8FeaturesAcA0adefH0O_SDyAA0A14DeviceDataTypeOAA0A13SensorSettingVSgGtcfc":{"name":"init(triggerMode:triggerFeatures:)","parent_name":"PolarOfflineRecordingTrigger"},"Structs/PolarOfflineRecordingEntry.html#/s:11PolarBleSdk0A21OfflineRecordingEntryV4pathSSvp":{"name":"path","abstract":"

    Recording entry path in device.

    ","parent_name":"PolarOfflineRecordingEntry"},"Structs/PolarOfflineRecordingEntry.html#/s:11PolarBleSdk0A21OfflineRecordingEntryV4sizeSuvp":{"name":"size","abstract":"

    Recording size in bytes.

    ","parent_name":"PolarOfflineRecordingEntry"},"Structs/PolarOfflineRecordingEntry.html#/s:11PolarBleSdk0A21OfflineRecordingEntryV4date10Foundation4DateVvp":{"name":"date","abstract":"

    The date and time of the recording entry i.e. the moment recording is started

    ","parent_name":"PolarOfflineRecordingEntry"},"Structs/PolarOfflineRecordingEntry.html#/s:11PolarBleSdk0A21OfflineRecordingEntryV4typeAA0A14DeviceDataTypeOvp":{"name":"type","abstract":"

    data type of the recording

    ","parent_name":"PolarOfflineRecordingEntry"},"Structs/PolarOfflineRecordingEntry.html#/s:11PolarBleSdk0A21OfflineRecordingEntryV4path4size4date4typeACSS_Su10Foundation4DateVAA0A14DeviceDataTypeOtcfc":{"name":"init(path:size:date:type:)","parent_name":"PolarOfflineRecordingEntry"},"Structs/PolarOfflineRecordingEntry.html":{"name":"PolarOfflineRecordingEntry","abstract":"

    Polar offline recording entry container.

    "},"Structs/PolarOfflineRecordingTrigger.html":{"name":"PolarOfflineRecordingTrigger","abstract":"

    Polar offline recording trigger

    "},"Structs/PolarRecordingSecret.html":{"name":"PolarRecordingSecret","abstract":"

    Polar recording secret is used to encrypt the recording.

    "},"Structs/PolarSensorSetting.html":{"name":"PolarSensorSetting","abstract":"

    polar sensor settings class

    "},"Protocols/PolarSdkModeApi.html#/s:11PolarBleSdk0aC7ModeApiP13enableSDKModey7RxSwift17PrimitiveSequenceVyAE16CompletableTraitOs5NeverOGSSF":{"name":"enableSDKMode(_:)","abstract":"

    Enables SDK mode.

    ","parent_name":"PolarSdkModeApi"},"Protocols/PolarSdkModeApi.html#/s:11PolarBleSdk0aC7ModeApiP14disableSDKModey7RxSwift17PrimitiveSequenceVyAE16CompletableTraitOs5NeverOGSSF":{"name":"disableSDKMode(_:)","abstract":"

    Disables SDK mode.

    ","parent_name":"PolarSdkModeApi"},"Protocols/PolarSdkModeApi.html#/s:11PolarBleSdk0aC7ModeApiP16isSDKModeEnabledy7RxSwift17PrimitiveSequenceVyAE11SingleTraitOSbGSSF":{"name":"isSDKModeEnabled(_:)","abstract":"

    Check if SDK mode currently enabled.

    ","parent_name":"PolarSdkModeApi"},"Protocols/PolarOnlineStreamingApi.html#/s:11PolarBleSdk0A18OnlineStreamingApiP012getAvailableD15StreamDataTypesy7RxSwift17PrimitiveSequenceVyAE11SingleTraitOShyAA0a6DeviceJ4TypeOGGSSF":{"name":"getAvailableOnlineStreamDataTypes(_:)","abstract":"

    Get the data types available in this device for online streaming

    ","parent_name":"PolarOnlineStreamingApi"},"Protocols/PolarOnlineStreamingApi.html#/s:11PolarBleSdk0A18OnlineStreamingApiP21requestStreamSettings_7feature7RxSwift17PrimitiveSequenceVyAF11SingleTraitOAA0A13SensorSettingVGSS_AA0A14DeviceDataTypeOtF":{"name":"requestStreamSettings(_:feature:)","abstract":"

    Request the stream settings available in current operation mode. This request shall be used before the stream is started","parent_name":"PolarOnlineStreamingApi"},"Protocols/PolarOnlineStreamingApi.html#/s:11PolarBleSdk0A18OnlineStreamingApiP25requestFullStreamSettings_7feature7RxSwift17PrimitiveSequenceVyAF11SingleTraitOAA0A13SensorSettingVGSS_AA0A14DeviceDataTypeOtF":{"name":"requestFullStreamSettings(_:feature:)","abstract":"

    Request full steam settings capabilities. The request returns the all capabilities of the requested streaming feature not limited by the current operation mode.","parent_name":"PolarOnlineStreamingApi"},"Protocols/PolarOnlineStreamingApi.html#/s:11PolarBleSdk0A18OnlineStreamingApiP07startHrE0y7RxSwift10ObservableCySays5UInt8V2hr_SaySiG5rrsMsSb11rrAvailableSb13contactStatusSb0rS9SupportedtGGSSF":{"name":"startHrStreaming(_:)","abstract":"

    Start heart rate stream. Heart rate stream is stopped if the connection is closed,","parent_name":"PolarOnlineStreamingApi"},"Protocols/PolarOnlineStreamingApi.html#/s:11PolarBleSdk0A18OnlineStreamingApiP08startEcgE0_8settings7RxSwift10ObservableCys6UInt64V9timeStamp_SayAjK_s5Int32V7voltagetG7samplestGSS_AA0A13SensorSettingVtF":{"name":"startEcgStreaming(_:settings:)","abstract":"

    Start the ECG (Electrocardiography) stream. ECG stream is stopped if the connection is closed, error occurs or stream is disposed.

    ","parent_name":"PolarOnlineStreamingApi"},"Protocols/PolarOnlineStreamingApi.html#/s:11PolarBleSdk0A18OnlineStreamingApiP08startAccE0_8settings7RxSwift10ObservableCys6UInt64V9timeStamp_SayAjK_s5Int32V1xAM1yAM1ztG7samplestGSS_AA0A13SensorSettingVtF":{"name":"startAccStreaming(_:settings:)","abstract":"

    Start ACC (Accelerometer) stream. ACC stream is stopped if the connection is closed, error occurs or stream is disposed.

    ","parent_name":"PolarOnlineStreamingApi"},"Protocols/PolarOnlineStreamingApi.html#/s:11PolarBleSdk0A18OnlineStreamingApiP09startGyroE0_8settings7RxSwift10ObservableCys6UInt64V9timeStamp_SayAjK_Sf1xSf1ySf1ztG7samplestGSS_AA0A13SensorSettingVtF":{"name":"startGyroStreaming(_:settings:)","abstract":"

    Start Gyro stream. Gyro stream is stopped if the connection is closed, error occurs during start or stream is disposed.

    ","parent_name":"PolarOnlineStreamingApi"},"Protocols/PolarOnlineStreamingApi.html#/s:11PolarBleSdk0A18OnlineStreamingApiP017startMagnetometerE0_8settings7RxSwift10ObservableCys6UInt64V9timeStamp_SayAjK_Sf1xSf1ySf1ztG7samplestGSS_AA0A13SensorSettingVtF":{"name":"startMagnetometerStreaming(_:settings:)","abstract":"

    Start magnetometer stream. Magnetometer stream is stopped if the connection is closed, error occurs or stream is disposed.

    ","parent_name":"PolarOnlineStreamingApi"},"Protocols/PolarOnlineStreamingApi.html#/s:11PolarBleSdk0A18OnlineStreamingApiP08startOhrE0_8settings7RxSwift10ObservableCys6UInt64V9timeStamp_AA0H8DataTypeO4typeSayAjK_Says5Int32VG14channelSamplestG7samplestGSS_AA0A13SensorSettingVtF":{"name":"startOhrStreaming(_:settings:)","abstract":"

    Start OHR (Optical heart rate) PPG (Photoplethysmography) stream. PPG stream is stopped if the connection is closed, error occurs or stream is disposed.

    ","parent_name":"PolarOnlineStreamingApi"},"Protocols/PolarOnlineStreamingApi.html#/s:11PolarBleSdk0A18OnlineStreamingApiP08startPpgE0_8settings7RxSwift10ObservableCyAA0H8DataTypeO4type_Says6UInt64V9timeStamp_Says5Int32VG14channelSamplestG7samplestGSS_AA0A13SensorSettingVtF":{"name":"startPpgStreaming(_:settings:)","abstract":"

    Start optical sensor PPG (Photoplethysmography) stream. PPG stream is stopped if the connection is closed, error occurs or stream is disposed.

    ","parent_name":"PolarOnlineStreamingApi"},"Protocols/PolarOnlineStreamingApi.html#/s:11PolarBleSdk0A18OnlineStreamingApiP08startPpiE0y7RxSwift10ObservableCys6UInt64V9timeStamp_SaySi2hr_s6UInt16V6ppInMsAM0Q13ErrorEstimateSi10blockerBitSi17skinContactStatusSi0xY9SupportedtG7samplestGSSF":{"name":"startPpiStreaming(_:)","abstract":"

    Start PPI (Pulse to Pulse interval) stream.","parent_name":"PolarOnlineStreamingApi"},"Protocols/PolarOnlineStreamingApi.html#/s:11PolarBleSdk0A18OnlineStreamingApiP20startOhrPPIStreamingy7RxSwift10ObservableCys6UInt64V9timeStamp_SaySi2hr_s6UInt16V6ppInMsAM0R13ErrorEstimateSi10blockerBitSi17skinContactStatusSi0yZ9SupportedtG7samplestGSSF":{"name":"startOhrPPIStreaming(_:)","parent_name":"PolarOnlineStreamingApi"},"Protocols/PolarOfflineRecordingApi.html#/s:11PolarBleSdk0A19OfflineRecordingApiP012getAvailabledE9DataTypesy7RxSwift17PrimitiveSequenceVyAE11SingleTraitOShyAA0a6DeviceI4TypeOGGSSF":{"name":"getAvailableOfflineRecordingDataTypes(_:)","abstract":"

    Get the data types available in this device for offline recording

    ","parent_name":"PolarOfflineRecordingApi"},"Protocols/PolarOfflineRecordingApi.html#/s:11PolarBleSdk0A19OfflineRecordingApiP07requestdE8Settings_7feature7RxSwift17PrimitiveSequenceVyAF11SingleTraitOAA0A13SensorSettingVGSS_AA0A14DeviceDataTypeOtF":{"name":"requestOfflineRecordingSettings(_:feature:)","abstract":"

    Request the offline recording settings available in current operation mode. This request shall be used before the offline recording is started","parent_name":"PolarOfflineRecordingApi"},"Protocols/PolarOfflineRecordingApi.html#/s:11PolarBleSdk0A19OfflineRecordingApiP011requestFulldE8Settings_7feature7RxSwift17PrimitiveSequenceVyAF11SingleTraitOAA0A13SensorSettingVGSS_AA0A14DeviceDataTypeOtF":{"name":"requestFullOfflineRecordingSettings(_:feature:)","abstract":"

    Request all the settings available in the device. The request returns the all capabilities of the requested streaming feature not limited by the current operation mode.

    ","parent_name":"PolarOfflineRecordingApi"},"Protocols/PolarOfflineRecordingApi.html#/s:11PolarBleSdk0A19OfflineRecordingApiP03getdE6Statusy7RxSwift17PrimitiveSequenceVyAE11SingleTraitOSDyAA0A14DeviceDataTypeOSbGGSSF":{"name":"getOfflineRecordingStatus(_:)","abstract":"

    Get status of offline recordings.

    ","parent_name":"PolarOfflineRecordingApi"},"Protocols/PolarOfflineRecordingApi.html#/s:11PolarBleSdk0A19OfflineRecordingApiP04listD10Recordingsy7RxSwift10ObservableCyAA0adE5EntryVGSSF":{"name":"listOfflineRecordings(_:)","abstract":"

    List offline recordings stored in the device.

    ","parent_name":"PolarOfflineRecordingApi"},"Protocols/PolarOfflineRecordingApi.html#/s:11PolarBleSdk0A19OfflineRecordingApiP03getD6Record_5entry6secret7RxSwift17PrimitiveSequenceVyAG11SingleTraitOAA0adE4DataOGSS_AA0adE5EntryVAA0aE6SecretVSgtF":{"name":"getOfflineRecord(_:entry:secret:)","abstract":"

    Fetch recording from the device.

    ","parent_name":"PolarOfflineRecordingApi"},"Protocols/PolarOfflineRecordingApi.html#/s:11PolarBleSdk0A19OfflineRecordingApiP06removeD6Record_5entry7RxSwift17PrimitiveSequenceVyAF16CompletableTraitOs5NeverOGSS_AA0adE5EntryVtF":{"name":"removeOfflineRecord(_:entry:)","abstract":"

    Removes offline recording from the device

    ","parent_name":"PolarOfflineRecordingApi"},"Protocols/PolarOfflineRecordingApi.html#/s:11PolarBleSdk0A19OfflineRecordingApiP05startdE0_7feature8settings6secret7RxSwift17PrimitiveSequenceVyAH16CompletableTraitOs5NeverOGSS_AA0A14DeviceDataTypeOAA0A13SensorSettingVSgAA0aE6SecretVSgtF":{"name":"startOfflineRecording(_:feature:settings:secret:)","abstract":"

    Start offline recording.

    ","parent_name":"PolarOfflineRecordingApi"},"Protocols/PolarOfflineRecordingApi.html#/s:11PolarBleSdk0A19OfflineRecordingApiP04stopdE0_7feature7RxSwift17PrimitiveSequenceVyAF16CompletableTraitOs5NeverOGSS_AA0A14DeviceDataTypeOtF":{"name":"stopOfflineRecording(_:feature:)","abstract":"

    Request to stop offline recording.

    ","parent_name":"PolarOfflineRecordingApi"},"Protocols/PolarOfflineRecordingApi.html#/s:11PolarBleSdk0A19OfflineRecordingApiP03setdE7Trigger_7trigger6secret7RxSwift17PrimitiveSequenceVyAG16CompletableTraitOs5NeverOGSS_AA0adeH0VAA0aE6SecretVSgtF":{"name":"setOfflineRecordingTrigger(_:trigger:secret:)","abstract":"

    Sets the offline recording triggers for a given Polar device. The offline recording can be started automatically in the device by setting the triggers.","parent_name":"PolarOfflineRecordingApi"},"Protocols/PolarOfflineRecordingApi.html#/s:11PolarBleSdk0A19OfflineRecordingApiP03getdE12TriggerSetupy7RxSwift17PrimitiveSequenceVyAE11SingleTraitOAA0adeH0VGSSF":{"name":"getOfflineRecordingTriggerSetup(_:)","abstract":"

    Retrieves the current offline recording trigger setup in the device.

    ","parent_name":"PolarOfflineRecordingApi"},"Protocols/PolarH10OfflineExerciseApi.html#/s:11PolarBleSdk0A21H10OfflineExerciseApiP14startRecording_10exerciseId8interval10sampleType7RxSwift17PrimitiveSequenceVyAH16CompletableTraitOs5NeverOGSS_SSAA0I8IntervalOAA06SampleN0OtF":{"name":"startRecording(_:exerciseId:interval:sampleType:)","abstract":"

    Request start recording. Supported only by Polar H10. Requires polarFileTransfer feature.

    ","parent_name":"PolarH10OfflineExerciseApi"},"Protocols/PolarH10OfflineExerciseApi.html#/s:11PolarBleSdk0A21H10OfflineExerciseApiP13stopRecordingy7RxSwift17PrimitiveSequenceVyAE16CompletableTraitOs5NeverOGSSF":{"name":"stopRecording(_:)","abstract":"

    Request stop for current recording. Supported only by Polar H10. Requires polarFileTransfer feature.

    ","parent_name":"PolarH10OfflineExerciseApi"},"Protocols/PolarH10OfflineExerciseApi.html#/s:11PolarBleSdk0A21H10OfflineExerciseApiP22requestRecordingStatusy7RxSwift17PrimitiveSequenceVyAE11SingleTraitOSb7ongoing_SS7entryIdtGSSF":{"name":"requestRecordingStatus(_:)","abstract":"

    Request current recording status. Supported only by Polar H10. Requires polarFileTransfer feature.

    ","parent_name":"PolarH10OfflineExerciseApi"},"Protocols/PolarH10OfflineExerciseApi.html#/s:11PolarBleSdk0A21H10OfflineExerciseApiP011fetchStoredF4Listy7RxSwift10ObservableCySS4path_10Foundation4DateV4dateSS7entryIdtGSSF":{"name":"fetchStoredExerciseList(_:)","abstract":"

    Api for fetching stored exercises list from Polar H10 device. Requires polarFileTransfer feature. This API is working for Polar OH1 and Polar Verity Sense devices too, however in those devices recording of exercise requires that sensor is registered to Polar Flow account.

    ","parent_name":"PolarH10OfflineExerciseApi"},"Protocols/PolarH10OfflineExerciseApi.html#/s:11PolarBleSdk0A21H10OfflineExerciseApiP05fetchF0_5entry7RxSwift17PrimitiveSequenceVyAF11SingleTraitOs6UInt32V8interval_SayALG7samplestGSS_SS4path_10Foundation4DateV4dateSS0I2IdttF":{"name":"fetchExercise(_:entry:)","abstract":"

    Api for fetching a single exercise from Polar H10 device. Requires polarFileTransfer feature. This API is working for Polar OH1 and Polar Verity Sense devices too, however in those devices recording of exercise requires that sensor is registered to Polar Flow account.

    ","parent_name":"PolarH10OfflineExerciseApi"},"Protocols/PolarH10OfflineExerciseApi.html#/s:11PolarBleSdk0A21H10OfflineExerciseApiP06removeF0_5entry7RxSwift17PrimitiveSequenceVyAF16CompletableTraitOs5NeverOGSS_SS4path_10Foundation4DateV4dateSS0I2IdttF":{"name":"removeExercise(_:entry:)","abstract":"

    Api for removing single exercise from Polar H10 device. Requires polarFileTransfer feature. This API is working for Polar OH1 and Polar Verity Sense devices too, however in those devices recording of exercise requires that sensor is registered to Polar Flow account.

    ","parent_name":"PolarH10OfflineExerciseApi"},"Protocols/PolarBleApiLogger.html#/s:11PolarBleSdk0aB9ApiLoggerP7messageyySSF":{"name":"message(_:)","abstract":"

    log message from sdk

    ","parent_name":"PolarBleApiLogger"},"Protocols/PolarBleApiSdkModeFeatureObserver.html#/s:11PolarBleSdk0ab3ApiC19ModeFeatureObserverP03sdkeF9AvailableyySSF":{"name":"sdkModeFeatureAvailable(_:)","abstract":"

    sdk mode feature available in this device and ready for usage callback

    ","parent_name":"PolarBleApiSdkModeFeatureObserver"},"Protocols/PolarBleApiDeviceFeaturesObserver.html#/s:11PolarBleSdk0aB25ApiDeviceFeaturesObserverP14hrFeatureReadyyySSF":{"name":"hrFeatureReady(_:)","abstract":"

    Device HR feature is ready. HR transmission is starting in a short while.

    ","parent_name":"PolarBleApiDeviceFeaturesObserver"},"Protocols/PolarBleApiDeviceFeaturesObserver.html#/s:11PolarBleSdk0aB25ApiDeviceFeaturesObserverP15ftpFeatureReadyyySSF":{"name":"ftpFeatureReady(_:)","abstract":"

    Device file transfer protocol is ready.","parent_name":"PolarBleApiDeviceFeaturesObserver"},"Protocols/PolarBleApiDeviceFeaturesObserver.html#/s:11PolarBleSdk0aB25ApiDeviceFeaturesObserverP09streamingF5Ready_0hF0ySS_ShyAA0aE8DataTypeOGtF":{"name":"streamingFeaturesReady(_:streamingFeatures:)","abstract":"

    feature ready callback

    ","parent_name":"PolarBleApiDeviceFeaturesObserver"},"Protocols/PolarBleApiDeviceFeaturesObserver.html#/s:11PolarBleSdk0aB25ApiDeviceFeaturesObserverP03bleC12FeatureReady_7featureySS_AA0abcI0OtF":{"name":"bleSdkFeatureReady(_:feature:)","abstract":"

    The feature is available in this device and it is ready. Called only for the features which are specified in [PolarBleApi] construction.","parent_name":"PolarBleApiDeviceFeaturesObserver"},"Protocols/PolarBleApiDeviceHrObserver.html#/s:11PolarBleSdk0aB19ApiDeviceHrObserverP15hrValueReceived_4dataySS_s5UInt8V0H0_SaySiG3rrsAI0M2MsSb7contactSb0O9SupportedttF":{"name":"hrValueReceived(_:data:)","abstract":"

    HR notification received. Notice when using OH1 and PPI stream is started this callback will produce 0 hr.

    ","parent_name":"PolarBleApiDeviceHrObserver"},"Protocols/PolarBleApiDeviceInfoObserver.html#/s:11PolarBleSdk0aB21ApiDeviceInfoObserverP20batteryLevelReceived_0hI0ySS_SutF":{"name":"batteryLevelReceived(_:batteryLevel:)","abstract":"

    Battery level received from device.

    ","parent_name":"PolarBleApiDeviceInfoObserver"},"Protocols/PolarBleApiDeviceInfoObserver.html#/s:11PolarBleSdk0aB21ApiDeviceInfoObserverP22disInformationReceived_4uuid5valueySS_So6CBUUIDCSStF":{"name":"disInformationReceived(_:uuid:value:)","abstract":"

    Received DIS info.

    ","parent_name":"PolarBleApiDeviceInfoObserver"},"Protocols/PolarBleApiPowerStateObserver.html#/s:11PolarBleSdk0aB21ApiPowerStateObserverP03bleE2OnyyF":{"name":"blePowerOn()","abstract":"

    Ble powered on event.

    ","parent_name":"PolarBleApiPowerStateObserver"},"Protocols/PolarBleApiPowerStateObserver.html#/s:11PolarBleSdk0aB21ApiPowerStateObserverP03bleE3OffyyF":{"name":"blePowerOff()","abstract":"

    Ble powered off event, no further actions are needed from the application.

    ","parent_name":"PolarBleApiPowerStateObserver"},"Protocols/PolarBleApiObserver.html#/s:11PolarBleSdk0aB11ApiObserverP16deviceConnectingyySS0F2Id_10Foundation4UUIDV7addressSi4rssiSS4nameSb11connectablet_tF":{"name":"deviceConnecting(_:)","abstract":"

    Callback when connection attempt is started to device

    ","parent_name":"PolarBleApiObserver"},"Protocols/PolarBleApiObserver.html#/s:11PolarBleSdk0aB11ApiObserverP15deviceConnectedyySS0F2Id_10Foundation4UUIDV7addressSi4rssiSS4nameSb11connectablet_tF":{"name":"deviceConnected(_:)","abstract":"

    Device connnection has been established.

    ","parent_name":"PolarBleApiObserver"},"Protocols/PolarBleApiObserver.html#/s:11PolarBleSdk0aB11ApiObserverP18deviceDisconnectedyySS0F2Id_10Foundation4UUIDV7addressSi4rssiSS4nameSb11connectablet_tF":{"name":"deviceDisconnected(_:)","abstract":"

    Connection lost to device.","parent_name":"PolarBleApiObserver"},"Protocols/PolarBleApi.html#/s:11PolarBleSdk0aB3ApiP7cleanupyyF":{"name":"cleanup()","abstract":"

    remove all known devices, which are not in use

    ","parent_name":"PolarBleApi"},"Protocols/PolarBleApi.html#/s:11PolarBleSdk0aB3ApiP11polarFilteryySbF":{"name":"polarFilter(_:)","abstract":"

    Enable or disable polar filter.

    ","parent_name":"PolarBleApi"},"Protocols/PolarBleApi.html#/s:11PolarBleSdk0aB3ApiP24startAutoConnectToDevice_7service05polarI4Type7RxSwift17PrimitiveSequenceVyAG16CompletableTraitOs5NeverOGSi_So6CBUUIDCSgSSSgtF":{"name":"startAutoConnectToDevice(_:service:polarDeviceType:)","abstract":"

    Start connecting to a nearby device. PolarBleApiObservers polarDeviceConnected is","parent_name":"PolarBleApi"},"Protocols/PolarBleApi.html#/s:11PolarBleSdk0aB3ApiP15connectToDeviceyySSKF":{"name":"connectToDevice(_:)","abstract":"

    Request a connection to a Polar device. Invokes PolarBleApiObservers polarDeviceConnected.

    ","parent_name":"PolarBleApi"},"Protocols/PolarBleApi.html#/s:11PolarBleSdk0aB3ApiP20disconnectFromDeviceyySSKF":{"name":"disconnectFromDevice(_:)","abstract":"

    Disconnect from the current Polar device.

    ","parent_name":"PolarBleApi"},"Protocols/PolarBleApi.html#/s:11PolarBleSdk0aB3ApiP15searchForDevice7RxSwift10ObservableCySS8deviceId_10Foundation4UUIDV7addressSi4rssiSS4nameSb11connectabletGyF":{"name":"searchForDevice()","abstract":"

    Start searching for Polar device(s)

    ","parent_name":"PolarBleApi"},"Protocols/PolarBleApi.html#/s:11PolarBleSdk0aB3ApiP014startListenForA12HrBroadcastsy7RxSwift10ObservableCySS8deviceId_10Foundation4UUIDV7addressSi4rssiSS4nameSb11connectablet0M4Info_s5UInt8V2hrSb13batteryStatustGShySSGSgF":{"name":"startListenForPolarHrBroadcasts(_:)","abstract":"

    Start listening the heart rate from Polar devices when subscribed.","parent_name":"PolarBleApi"},"Protocols/PolarBleApi.html#/s:11PolarBleSdk0aB3ApiP14isFeatureReady_7featureSbSS_AA0abcF0OtF":{"name":"isFeatureReady(_:feature:)","abstract":"

    Check if the feature is ready.

    ","parent_name":"PolarBleApi"},"Protocols/PolarBleApi.html#/s:11PolarBleSdk0aB3ApiP12setLocalTime_4time4zone7RxSwift17PrimitiveSequenceVyAG16CompletableTraitOs5NeverOGSS_10Foundation4DateVAO0G4ZoneVtF":{"name":"setLocalTime(_:time:zone:)","abstract":"

    Set local time to device.

    ","parent_name":"PolarBleApi"},"Protocols/PolarBleApi.html#/s:11PolarBleSdk0aB3ApiP12getLocalTimey7RxSwift17PrimitiveSequenceVyAE11SingleTraitO10Foundation4DateVGSSF":{"name":"getLocalTime(_:)","abstract":"

    Get current time in device. Note, the H10 is not supporting time read.

    ","parent_name":"PolarBleApi"},"Protocols/PolarBleApi.html#/s:11PolarBleSdk0aB3ApiP8observerAA0abD8Observer_pSgvp":{"name":"observer","abstract":"

    Common GAP (Generic access profile) observer

    ","parent_name":"PolarBleApi"},"Protocols/PolarBleApi.html#/s:11PolarBleSdk0aB3ApiP18deviceInfoObserverAA0abd6DevicefG0_pSgvp":{"name":"deviceInfoObserver","abstract":"

    Device info observer for DIS (Device information service) and BAS (Battery service) GATT (Generic attributes) client

    ","parent_name":"PolarBleApi"},"Protocols/PolarBleApi.html#/s:11PolarBleSdk0aB3ApiP16deviceHrObserverAA0abd6DevicefG0_pSgvp":{"name":"deviceHrObserver","abstract":"

    Device observer for HR GATT client

    ","parent_name":"PolarBleApi"},"Protocols/PolarBleApi.html#/s:11PolarBleSdk0aB3ApiP18powerStateObserverAA0abd5PowerfG0_pSgvp":{"name":"powerStateObserver","abstract":"

    Bluetooth power state observer

    ","parent_name":"PolarBleApi"},"Protocols/PolarBleApi.html#/s:11PolarBleSdk0aB3ApiP22deviceFeaturesObserverAA0abd6DevicefG0_pSgvp":{"name":"deviceFeaturesObserver","abstract":"

    Device features ready observer

    ","parent_name":"PolarBleApi"},"Protocols/PolarBleApi.html#/s:11PolarBleSdk0aB3ApiP22sdkModeFeatureObserverAA0abdcfgH0_pSgvp":{"name":"sdkModeFeatureObserver","abstract":"

    SDK mode feature available in the device and ready observer

    ","parent_name":"PolarBleApi"},"Protocols/PolarBleApi.html#/s:11PolarBleSdk0aB3ApiP02isB7PoweredSbvp":{"name":"isBlePowered","abstract":"

    Helper to check if Ble is currently powered

    ","parent_name":"PolarBleApi"},"Protocols/PolarBleApi.html#/s:11PolarBleSdk0aB3ApiP6loggerAA0abD6Logger_pSgvp":{"name":"logger","abstract":"

    optional logger set to get traces from sdk

    ","parent_name":"PolarBleApi"},"Protocols/PolarBleApi.html#/s:11PolarBleSdk0aB3ApiP21automaticReconnectionSbvp":{"name":"automaticReconnection","abstract":"

    optional disable or enable automatic reconnection, by default it is enabled

    ","parent_name":"PolarBleApi"},"Protocols/PolarBleApi.html":{"name":"PolarBleApi","abstract":"

    API.

    "},"Protocols/PolarBleApiObserver.html":{"name":"PolarBleApiObserver","abstract":"

    Polar Ble API connection observer.

    "},"Protocols/PolarBleApiPowerStateObserver.html":{"name":"PolarBleApiPowerStateObserver","abstract":"

    Bluetooth state observer.

    "},"Protocols/PolarBleApiDeviceInfoObserver.html":{"name":"PolarBleApiDeviceInfoObserver","abstract":"

    Device info observer.

    "},"Protocols/PolarBleApiDeviceHrObserver.html":{"name":"PolarBleApiDeviceHrObserver","abstract":"

    Heart rate observer

    "},"Protocols/PolarBleApiDeviceFeaturesObserver.html":{"name":"PolarBleApiDeviceFeaturesObserver","abstract":"

    Data client observer

    "},"Protocols/PolarBleApiSdkModeFeatureObserver.html":{"name":"PolarBleApiSdkModeFeatureObserver","abstract":"

    SDK Mode observer

    "},"Protocols/PolarBleApiLogger.html":{"name":"PolarBleApiLogger","abstract":"

    logger observer

    "},"Protocols/PolarH10OfflineExerciseApi.html":{"name":"PolarH10OfflineExerciseApi","abstract":"

    H10 Exercise recording API.

    "},"Protocols/PolarOfflineRecordingApi.html":{"name":"PolarOfflineRecordingApi","abstract":"

    Offline recording API.

    "},"Protocols/PolarOnlineStreamingApi.html":{"name":"PolarOnlineStreamingApi","abstract":"

    Online steaming API.

    "},"Protocols/PolarSdkModeApi.html":{"name":"PolarSdkModeApi","abstract":"

    Polar SDK mode API

    "},"Extensions/PrimitiveSequence.html#/s:7RxSwift17PrimitiveSequenceV11PolarBleSdkAA11SingleTraitORszrlE13asCompletableACyAA0kI0Os5NeverOGyF":{"name":"asCompletable()","parent_name":"PrimitiveSequence"},"Extensions.html#/c:@M@PolarBleSdk@objc(cs)PolarBleApiImpl":{"name":"PolarBleApiImpl"},"Extensions/PrimitiveSequence.html":{"name":"PrimitiveSequence"},"Enums/PolarOfflineRecordingTriggerMode.html#/s:11PolarBleSdk0A27OfflineRecordingTriggerModeO15triggerDisabledyA2CmF":{"name":"triggerDisabled","parent_name":"PolarOfflineRecordingTriggerMode"},"Enums/PolarOfflineRecordingTriggerMode.html#/s:11PolarBleSdk0A27OfflineRecordingTriggerModeO18triggerSystemStartyA2CmF":{"name":"triggerSystemStart","parent_name":"PolarOfflineRecordingTriggerMode"},"Enums/PolarOfflineRecordingTriggerMode.html#/s:11PolarBleSdk0A27OfflineRecordingTriggerModeO20triggerExerciseStartyA2CmF":{"name":"triggerExerciseStart","parent_name":"PolarOfflineRecordingTriggerMode"},"Enums/PolarOfflineRecordingData.html#/s:11PolarBleSdk0A20OfflineRecordingDataO03accdeF0yACs6UInt64V9timeStamp_SayAfG_s5Int32V1xAI1yAI1ztG7samplest_10Foundation4DateVAA0A13SensorSettingVtcACmF":{"name":"accOfflineRecordingData(_:startTime:settings:)","parent_name":"PolarOfflineRecordingData"},"Enums/PolarOfflineRecordingData.html#/s:11PolarBleSdk0A20OfflineRecordingDataO04gyrodeF0yACs6UInt64V9timeStamp_SayAfG_Sf1xSf1ySf1ztG7samplest_10Foundation4DateVAA0A13SensorSettingVtcACmF":{"name":"gyroOfflineRecordingData(_:startTime:settings:)","parent_name":"PolarOfflineRecordingData"},"Enums/PolarOfflineRecordingData.html#/s:11PolarBleSdk0A20OfflineRecordingDataO03magdeF0yACs6UInt64V9timeStamp_SayAfG_Sf1xSf1ySf1ztG7samplest_10Foundation4DateVAA0A13SensorSettingVtcACmF":{"name":"magOfflineRecordingData(_:startTime:settings:)","parent_name":"PolarOfflineRecordingData"},"Enums/PolarOfflineRecordingData.html#/s:11PolarBleSdk0A20OfflineRecordingDataO03ppgdeF0yAcA03PpgF4TypeO4type_Says6UInt64V9timeStamp_Says5Int32VG14channelSamplestG7samplest_10Foundation4DateVAA0A13SensorSettingVtcACmF":{"name":"ppgOfflineRecordingData(_:startTime:settings:)","parent_name":"PolarOfflineRecordingData"},"Enums/PolarOfflineRecordingData.html#/s:11PolarBleSdk0A20OfflineRecordingDataO03ppideF0yACs6UInt64V9timeStamp_SaySi2hr_s6UInt16V6ppInMsAJ0M13ErrorEstimateSi10blockerBitSi17skinContactStatusSi0tU9SupportedtG7samplest_10Foundation4DateVtcACmF":{"name":"ppiOfflineRecordingData(_:startTime:)","parent_name":"PolarOfflineRecordingData"},"Enums/PolarOfflineRecordingData.html#/s:11PolarBleSdk0A20OfflineRecordingDataO02hrdeF0yACSays5UInt8V0G0_SaySiG5rrsMsSb11rrAvailableSb13contactStatusSb0mN9SupportedtG_10Foundation4DateVtcACmF":{"name":"hrOfflineRecordingData(_:startTime:)","parent_name":"PolarOfflineRecordingData"},"Enums/PolarErrors.html#/s:11PolarBleSdk0A6ErrorsO22notificationNotEnabledyA2CmF":{"name":"notificationNotEnabled","abstract":"

    GATT characteristic notification not enabled

    ","parent_name":"PolarErrors"},"Enums/PolarErrors.html#/s:11PolarBleSdk0A6ErrorsO15serviceNotFoundyA2CmF":{"name":"serviceNotFound","abstract":"

    GATT service not found

    ","parent_name":"PolarErrors"},"Enums/PolarErrors.html#/s:11PolarBleSdk0A6ErrorsO18deviceNotConnectedyA2CmF":{"name":"deviceNotConnected","abstract":"

    Device state != Connected

    ","parent_name":"PolarErrors"},"Enums/PolarErrors.html#/s:11PolarBleSdk0A6ErrorsO14deviceNotFoundyA2CmF":{"name":"deviceNotFound","abstract":"

    Device not found

    ","parent_name":"PolarErrors"},"Enums/PolarErrors.html#/s:11PolarBleSdk0A6ErrorsO21operationNotSupportedyA2CmF":{"name":"operationNotSupported","abstract":"

    Requested operation is not supported

    ","parent_name":"PolarErrors"},"Enums/PolarErrors.html#/s:11PolarBleSdk0A6ErrorsO19messageEncodeFailedyA2CmF":{"name":"messageEncodeFailed","abstract":"

    Google protocol buffers encode failed

    ","parent_name":"PolarErrors"},"Enums/PolarErrors.html#/s:11PolarBleSdk0A6ErrorsO19messageDecodeFailedyA2CmF":{"name":"messageDecodeFailed","abstract":"

    Google protocol buffers decode failed

    ","parent_name":"PolarErrors"},"Enums/PolarErrors.html#/s:11PolarBleSdk0A6ErrorsO20dateTimeFormatFailedyACSS_tcACmF":{"name":"dateTimeFormatFailed(description:)","abstract":"

    String to date time formatting failed

    ","parent_name":"PolarErrors"},"Enums/PolarErrors.html#/s:11PolarBleSdk0A6ErrorsO22unableToStartStreamingyA2CmF":{"name":"unableToStartStreaming","abstract":"

    Failed to start streaming

    ","parent_name":"PolarErrors"},"Enums/PolarErrors.html#/s:11PolarBleSdk0A6ErrorsO15invalidArgumentyACSS_tcACmF":{"name":"invalidArgument(description:)","abstract":"

    invalid argument

    ","parent_name":"PolarErrors"},"Enums/PolarErrors.html#/s:11PolarBleSdk0A6ErrorsO05polarbC17InternalExceptionyACSS_tcACmF":{"name":"polarBleSdkInternalException(description:)","abstract":"

    Polar BLE SDK internal exception indicating something went wrong in SDK internal logic

    ","parent_name":"PolarErrors"},"Enums/PolarErrors.html#/s:11PolarBleSdk0A6ErrorsO11deviceErroryACSS_tcACmF":{"name":"deviceError(description:)","abstract":"

    Error on device operation

    ","parent_name":"PolarErrors"},"Enums/PolarErrors.html#/s:11PolarBleSdk0A6ErrorsO26polarOfflineRecordingErroryACSS_tcACmF":{"name":"polarOfflineRecordingError(description:)","abstract":"

    Error related to offline recording

    ","parent_name":"PolarErrors"},"Enums/SampleType.html#/s:11PolarBleSdk10SampleTypeO2hryA2CmF":{"name":"hr","abstract":"

    recording type to use is hr in BPM

    ","parent_name":"SampleType"},"Enums/SampleType.html#/s:11PolarBleSdk10SampleTypeO2rryA2CmF":{"name":"rr","abstract":"

    recording type to use is rr interval

    ","parent_name":"SampleType"},"Enums/RecordingInterval.html#/s:11PolarBleSdk17RecordingIntervalO11interval_1syA2CmF":{"name":"interval_1s","parent_name":"RecordingInterval"},"Enums/RecordingInterval.html#/s:11PolarBleSdk17RecordingIntervalO11interval_5syA2CmF":{"name":"interval_5s","parent_name":"RecordingInterval"},"Enums/PpgDataType.html#/s:11PolarBleSdk11PpgDataTypeO13ppg3_ambient1yA2CmF":{"name":"ppg3_ambient1","abstract":"

    3 ppg + 1 ambient

    ","parent_name":"PpgDataType"},"Enums/PpgDataType.html#/s:11PolarBleSdk11PpgDataTypeO7unknownyA2CmF":{"name":"unknown","parent_name":"PpgDataType"},"Enums/OhrDataType.html#/s:11PolarBleSdk11OhrDataTypeO13ppg3_ambient1yA2CmF":{"name":"ppg3_ambient1","abstract":"

    3 ppg + 1 ambient

    ","parent_name":"OhrDataType"},"Enums/OhrDataType.html#/s:11PolarBleSdk11OhrDataTypeO7unknownyA2CmF":{"name":"unknown","parent_name":"OhrDataType"},"Enums/PolarBleSdkFeature.html#/s:11PolarBleSdk0abC7FeatureO10feature_hryA2CmF":{"name":"feature_hr","abstract":"

    Hr feature to receive hr and rr data from Polar or any other BLE device via standard HR BLE service

    ","parent_name":"PolarBleSdkFeature"},"Enums/PolarBleSdkFeature.html#/s:11PolarBleSdk0abC7FeatureO19feature_device_infoyA2CmF":{"name":"feature_device_info","abstract":"

    Device information feature to receive sw information from Polar or any other BLE device

    ","parent_name":"PolarBleSdkFeature"},"Enums/PolarBleSdkFeature.html#/s:11PolarBleSdk0abC7FeatureO20feature_battery_infoyA2CmF":{"name":"feature_battery_info","abstract":"

    Feature to receive battery level info from Polar or any other BLE device

    ","parent_name":"PolarBleSdkFeature"},"Enums/PolarBleSdkFeature.html#/s:11PolarBleSdk0abC7FeatureO30feature_polar_online_streamingyA2CmF":{"name":"feature_polar_online_streaming","abstract":"

    Polar sensor streaming feature to stream live online data. For example hr, ecg, acc, ppg, ppi, etc…

    ","parent_name":"PolarBleSdkFeature"},"Enums/PolarBleSdkFeature.html#/s:11PolarBleSdk0abC7FeatureO31feature_polar_offline_recordingyA2CmF":{"name":"feature_polar_offline_recording","abstract":"

    Polar offline recording feature to record offline data to Polar device without continuous BLE connection.

    ","parent_name":"PolarBleSdkFeature"},"Enums/PolarBleSdkFeature.html#/s:11PolarBleSdk0abC7FeatureO36feature_polar_h10_exercise_recordingyA2CmF":{"name":"feature_polar_h10_exercise_recording","abstract":"

    H10 exercise recording feature to record exercise data to Polar H10 device without continuous BLE connection.

    ","parent_name":"PolarBleSdkFeature"},"Enums/PolarBleSdkFeature.html#/s:11PolarBleSdk0abC7FeatureO31feature_polar_device_time_setupyA2CmF":{"name":"feature_polar_device_time_setup","abstract":"

    Feature to read and set device time in Polar device

    ","parent_name":"PolarBleSdkFeature"},"Enums/PolarBleSdkFeature.html#/s:11PolarBleSdk0abC7FeatureO22feature_polar_sdk_modeyA2CmF":{"name":"feature_polar_sdk_mode","abstract":"

    In SDK mode the wider range of capabilities are available for the online stream or offline recoding than in normal operation mode.

    ","parent_name":"PolarBleSdkFeature"},"Enums/PolarDeviceDataType.html#/s:11PolarBleSdk0A14DeviceDataTypeO3ecgyA2CmF":{"name":"ecg","parent_name":"PolarDeviceDataType"},"Enums/PolarDeviceDataType.html#/s:11PolarBleSdk0A14DeviceDataTypeO3accyA2CmF":{"name":"acc","parent_name":"PolarDeviceDataType"},"Enums/PolarDeviceDataType.html#/s:11PolarBleSdk0A14DeviceDataTypeO3ppgyA2CmF":{"name":"ppg","parent_name":"PolarDeviceDataType"},"Enums/PolarDeviceDataType.html#/s:11PolarBleSdk0A14DeviceDataTypeO3ppiyA2CmF":{"name":"ppi","parent_name":"PolarDeviceDataType"},"Enums/PolarDeviceDataType.html#/s:11PolarBleSdk0A14DeviceDataTypeO4gyroyA2CmF":{"name":"gyro","parent_name":"PolarDeviceDataType"},"Enums/PolarDeviceDataType.html#/s:11PolarBleSdk0A14DeviceDataTypeO12magnetometeryA2CmF":{"name":"magnetometer","parent_name":"PolarDeviceDataType"},"Enums/PolarDeviceDataType.html#/s:11PolarBleSdk0A14DeviceDataTypeO2hryA2CmF":{"name":"hr","parent_name":"PolarDeviceDataType"},"Enums/PolarDeviceDataType.html":{"name":"PolarDeviceDataType","abstract":"

    Data types available in Polar devices for online streaming or offline recording.

    "},"Enums/PolarBleSdkFeature.html":{"name":"PolarBleSdkFeature","abstract":"

    Features available in Polar BLE SDK library

    "},"Enums/OhrDataType.html":{"name":"OhrDataType","abstract":"

    OHR data source enum

    "},"Enums/PpgDataType.html":{"name":"PpgDataType","abstract":"

    PPG data source enum

    "},"Enums/RecordingInterval.html":{"name":"RecordingInterval","abstract":"

    Recoding intervals for H10 recording start

    "},"Enums/SampleType.html":{"name":"SampleType","abstract":"

    Sample types for H10 recording start

    "},"Enums/PolarErrors.html":{"name":"PolarErrors","abstract":"

    Polar SDK errors

    "},"Enums/PolarOfflineRecordingData.html":{"name":"PolarOfflineRecordingData"},"Enums/PolarOfflineRecordingTriggerMode.html":{"name":"PolarOfflineRecordingTriggerMode","abstract":"

    Polar offline recording trigger mode. Offline recording trigger can be used to start the offline recording automatically in device, based on selected trigger mode.

    "},"Classes/PolarBleApiDefaultImpl.html#/s:11PolarBleSdk0aB14ApiDefaultImplC19polarImplementation_8featuresAA0abD0_pSo17OS_dispatch_queueC_ShyAA0abC7FeatureOGtFZ":{"name":"polarImplementation(_:features:)","abstract":"

    New instance of Polar Ble API implementation

    ","parent_name":"PolarBleApiDefaultImpl"},"Classes/PolarBleApiDefaultImpl.html#/s:11PolarBleSdk0aB14ApiDefaultImplC11versionInfoSSyFZ":{"name":"versionInfo()","abstract":"

    Return current version

    ","parent_name":"PolarBleApiDefaultImpl"},"Classes/PolarBleApiDefaultImpl.html":{"name":"PolarBleApiDefaultImpl","abstract":"

    Class to provide the default implementation of the Polar Ble API

    "},"Classes.html":{"name":"Classes","abstract":"

    The following classes are available globally.

    "},"Enums.html":{"name":"Enumerations","abstract":"

    The following enumerations are available globally.

    "},"Extensions.html":{"name":"Extensions","abstract":"

    The following extensions are available globally.

    "},"Protocols.html":{"name":"Protocols","abstract":"

    The following protocols are available globally.

    "},"Structs.html":{"name":"Structures","abstract":"

    The following structures are available globally.

    "},"Typealiases.html":{"name":"Type Aliases","abstract":"

    The following type aliases are available globally.

    "}} \ No newline at end of file diff --git a/polar-sdk-ios/docs/docsets/.docset/Contents/Resources/docSet.dsidx b/polar-sdk-ios/docs/docsets/.docset/Contents/Resources/docSet.dsidx index f07e67387717f0d570d74663cc4b5567d2e163e2..e50849296ad852a2b14d4183c7556f75e4311e4a 100644 GIT binary patch literal 73728 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 SNC3rkziWnR07IiT-2V?^=mf$5 literal 49152 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 literal 99604 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%0A#ot$*-PNet4IIWq27|3z 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 O&;JMW$Z&iB<_rL9eEJ;# diff --git a/polar-sdk-ios/docs/index.html b/polar-sdk-ios/docs/index.html index 0f8c677d..246f7903 100644 --- a/polar-sdk-ios/docs/index.html +++ b/polar-sdk-ios/docs/index.html @@ -16,7 +16,7 @@
    -

    Docs (0% documented)

    +

    Docs (100% documented)

    diff --git a/polar-sdk-ios/docs/js/jquery.min.js b/polar-sdk-ios/docs/js/jquery.min.js index c4c6022f..2c69bc90 100644 --- a/polar-sdk-ios/docs/js/jquery.min.js +++ b/polar-sdk-ios/docs/js/jquery.min.js @@ -1,2 +1,2 @@ -/*! jQuery v3.6.0 | (c) OpenJS Foundation and other contributors | jquery.org/license */ -!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.6.0",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,D=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",y.option=!!ce.lastChild;var ge={thead:[1,"","
    "],col:[2,"","
    "],tr:[2,"","
    "],td:[3,"","
    "],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var _t,zt=[],Ut=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=zt.pop()||S.expando+"_"+wt.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Ut.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Ut.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Ut,"$1"+r):!1!==e.jsonp&&(e.url+=(Tt.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,zt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((_t=E.implementation.createHTMLDocument("").body).innerHTML="
    ",2===_t.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=Fe(y.pixelPosition,function(e,t){if(t)return t=We(e,n),Pe.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&v(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!y||!y.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ve(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace(B,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ye(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ve(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],y=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&y.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||y.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||y.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||y.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||y.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||y.push(".#.+[+~]"),e.querySelectorAll("\\\f"),y.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&y.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&y.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&y.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),y.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),y=y.length&&new RegExp(y.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),v=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&v(p,e)?-1:t==C||t.ownerDocument==p&&v(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!y||!y.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,D=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),v.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",v.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",v.option=!!ce.lastChild;var ge={thead:[1,"","
    "],col:[2,"","
    "],tr:[2,"","
    "],td:[3,"","
    "],_default:[0,"",""]};function ye(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ve(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Ut,Xt=[],Vt=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Xt.pop()||S.expando+"_"+Ct.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Vt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Vt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Vt,"$1"+r):!1!==e.jsonp&&(e.url+=(Et.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Xt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),v.createHTMLDocument=((Ut=E.implementation.createHTMLDocument("").body).innerHTML="
    ",2===Ut.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(v.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return B(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=_e(v.pixelPosition,function(e,t){if(t)return t=Be(e,n),Pe.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return B(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0Polar device info

    "},"Typealiases.html#/PolarHrBroadcastData":{"name":"PolarHrBroadcastData","abstract":"

    deviceInfo: see #PolarDeviceInfo ,

    "},"Typealiases.html#/PolarHrData":{"name":"PolarHrData","abstract":"

    Polar hr data

    "},"Typealiases.html#/PolarEcgData":{"name":"PolarEcgData","abstract":"

    Polar Ecg data

    "},"Typealiases.html#/PolarAccData":{"name":"PolarAccData","abstract":"

    Polar acc data

    "},"Typealiases.html#/PolarGyroData":{"name":"PolarGyroData","abstract":"

    Polar gyro data

    "},"Typealiases.html#/PolarMagnetometerData":{"name":"PolarMagnetometerData","abstract":"

    Polar magnetometer data

    "},"Typealiases.html#/PolarPpgData":{"name":"PolarPpgData","abstract":"

    Polar PPG data

    "},"Typealiases.html#/PolarPpiData":{"name":"PolarPpiData","abstract":"

    Polar ppi data

    "},"Typealiases.html#/PolarExerciseEntry":{"name":"PolarExerciseEntry","abstract":"

    Polar exercise entry

    "},"Typealiases.html#/PolarExerciseData":{"name":"PolarExerciseData","abstract":"

    Polar Exercise Data

    "},"Typealiases.html#/PolarRecordingStatus":{"name":"PolarRecordingStatus","abstract":"

    Polar Recording status

    "},"Structs/PolarSensorSetting/SettingType.html#/sampleRate":{"name":"sampleRate","abstract":"

    sample rate in hz

    ","parent_name":"SettingType"},"Structs/PolarSensorSetting/SettingType.html#/resolution":{"name":"resolution","abstract":"

    resolution in bits

    ","parent_name":"SettingType"},"Structs/PolarSensorSetting/SettingType.html#/range":{"name":"range","abstract":"

    range

    ","parent_name":"SettingType"},"Structs/PolarSensorSetting/SettingType.html#/rangeMilliunit":{"name":"rangeMilliunit","abstract":"

    range with min and max allowed values

    ","parent_name":"SettingType"},"Structs/PolarSensorSetting/SettingType.html#/channels":{"name":"channels","abstract":"

    amount of channels available

    ","parent_name":"SettingType"},"Structs/PolarSensorSetting/SettingType.html#/unknown":{"name":"unknown","abstract":"

    type is unknown

    ","parent_name":"SettingType"},"Structs/PolarSensorSetting/SettingType.html":{"name":"SettingType","abstract":"

    settings type

    ","parent_name":"PolarSensorSetting"},"Structs/PolarSensorSetting.html#/settings":{"name":"settings","abstract":"

    current settings available / set

    ","parent_name":"PolarSensorSetting"},"Structs/PolarSensorSetting.html#/init(_:)":{"name":"init(_:)","abstract":"

    constructor with desired settings

    ","parent_name":"PolarSensorSetting"},"Structs/PolarSensorSetting.html#/maxSettings()":{"name":"maxSettings()","abstract":"

    helper to retrieve max settings available

    ","parent_name":"PolarSensorSetting"},"Structs/PolarSensorSetting.html#/description":{"name":"description","parent_name":"PolarSensorSetting"},"Structs/PolarRecordingSecret.html#/init(key:)":{"name":"init(key:)","parent_name":"PolarRecordingSecret"},"Structs/PolarOfflineRecordingTrigger.html#/triggerMode":{"name":"triggerMode","abstract":"

    The mode of the trigger

    ","parent_name":"PolarOfflineRecordingTrigger"},"Structs/PolarOfflineRecordingTrigger.html#/triggerFeatures":{"name":"triggerFeatures","abstract":"

    Dictionary containing the PolarDeviceDataType keys for enabled triggers. Dictionary","parent_name":"PolarOfflineRecordingTrigger"},"Structs/PolarOfflineRecordingTrigger.html#/init(triggerMode:triggerFeatures:)":{"name":"init(triggerMode:triggerFeatures:)","parent_name":"PolarOfflineRecordingTrigger"},"Structs/PolarOfflineRecordingEntry.html#/path":{"name":"path","abstract":"

    Recording entry path in device.

    ","parent_name":"PolarOfflineRecordingEntry"},"Structs/PolarOfflineRecordingEntry.html#/size":{"name":"size","abstract":"

    Recording size in bytes.

    ","parent_name":"PolarOfflineRecordingEntry"},"Structs/PolarOfflineRecordingEntry.html#/date":{"name":"date","abstract":"

    The date and time of the recording entry i.e. the moment recording is started

    ","parent_name":"PolarOfflineRecordingEntry"},"Structs/PolarOfflineRecordingEntry.html#/type":{"name":"type","abstract":"

    data type of the recording

    ","parent_name":"PolarOfflineRecordingEntry"},"Structs/PolarOfflineRecordingEntry.html#/init(path:size:date:type:)":{"name":"init(path:size:date:type:)","parent_name":"PolarOfflineRecordingEntry"},"Structs/PolarOfflineRecordingEntry.html":{"name":"PolarOfflineRecordingEntry","abstract":"

    Polar offline recording entry container.

    "},"Structs/PolarOfflineRecordingTrigger.html":{"name":"PolarOfflineRecordingTrigger","abstract":"

    Polar offline recording trigger

    "},"Structs/PolarRecordingSecret.html":{"name":"PolarRecordingSecret","abstract":"

    Polar recording secret is used to encrypt the recording.

    "},"Structs/PolarSensorSetting.html":{"name":"PolarSensorSetting","abstract":"

    polar sensor settings class

    "},"Protocols/PolarSdkModeApi.html#/enableSDKMode(_:)":{"name":"enableSDKMode(_:)","abstract":"

    Enables SDK mode.

    ","parent_name":"PolarSdkModeApi"},"Protocols/PolarSdkModeApi.html#/disableSDKMode(_:)":{"name":"disableSDKMode(_:)","abstract":"

    Disables SDK mode.

    ","parent_name":"PolarSdkModeApi"},"Protocols/PolarSdkModeApi.html#/isSDKModeEnabled(_:)":{"name":"isSDKModeEnabled(_:)","abstract":"

    Check if SDK mode currently enabled.

    ","parent_name":"PolarSdkModeApi"},"Protocols/PolarOnlineStreamingApi.html#/getAvailableOnlineStreamDataTypes(_:)":{"name":"getAvailableOnlineStreamDataTypes(_:)","abstract":"

    Get the data types available in this device for online streaming

    ","parent_name":"PolarOnlineStreamingApi"},"Protocols/PolarOnlineStreamingApi.html#/requestStreamSettings(_:feature:)":{"name":"requestStreamSettings(_:feature:)","abstract":"

    Request the stream settings available in current operation mode. This request shall be used before the stream is started","parent_name":"PolarOnlineStreamingApi"},"Protocols/PolarOnlineStreamingApi.html#/requestFullStreamSettings(_:feature:)":{"name":"requestFullStreamSettings(_:feature:)","abstract":"

    Request full steam settings capabilities. The request returns the all capabilities of the requested streaming feature not limited by the current operation mode.","parent_name":"PolarOnlineStreamingApi"},"Protocols/PolarOnlineStreamingApi.html#/startHrStreaming(_:)":{"name":"startHrStreaming(_:)","abstract":"

    Start heart rate stream. Heart rate stream is stopped if the connection is closed,","parent_name":"PolarOnlineStreamingApi"},"Protocols/PolarOnlineStreamingApi.html#/startEcgStreaming(_:settings:)":{"name":"startEcgStreaming(_:settings:)","abstract":"

    Start the ECG (Electrocardiography) stream. ECG stream is stopped if the connection is closed, error occurs or stream is disposed.

    ","parent_name":"PolarOnlineStreamingApi"},"Protocols/PolarOnlineStreamingApi.html#/startAccStreaming(_:settings:)":{"name":"startAccStreaming(_:settings:)","abstract":"

    Start ACC (Accelerometer) stream. ACC stream is stopped if the connection is closed, error occurs or stream is disposed.

    ","parent_name":"PolarOnlineStreamingApi"},"Protocols/PolarOnlineStreamingApi.html#/startGyroStreaming(_:settings:)":{"name":"startGyroStreaming(_:settings:)","abstract":"

    Start Gyro stream. Gyro stream is stopped if the connection is closed, error occurs during start or stream is disposed.

    ","parent_name":"PolarOnlineStreamingApi"},"Protocols/PolarOnlineStreamingApi.html#/startMagnetometerStreaming(_:settings:)":{"name":"startMagnetometerStreaming(_:settings:)","abstract":"

    Start magnetometer stream. Magnetometer stream is stopped if the connection is closed, error occurs or stream is disposed.

    ","parent_name":"PolarOnlineStreamingApi"},"Protocols/PolarOnlineStreamingApi.html#/startPpgStreaming(_:settings:)":{"name":"startPpgStreaming(_:settings:)","abstract":"

    Start optical sensor PPG (Photoplethysmography) stream. PPG stream is stopped if the connection is closed, error occurs or stream is disposed.

    ","parent_name":"PolarOnlineStreamingApi"},"Protocols/PolarOnlineStreamingApi.html#/startPpiStreaming(_:)":{"name":"startPpiStreaming(_:)","abstract":"

    Start PPI (Pulse to Pulse interval) stream.","parent_name":"PolarOnlineStreamingApi"},"Protocols/PolarOfflineRecordingApi.html#/getAvailableOfflineRecordingDataTypes(_:)":{"name":"getAvailableOfflineRecordingDataTypes(_:)","abstract":"

    Get the data types available in this device for offline recording

    ","parent_name":"PolarOfflineRecordingApi"},"Protocols/PolarOfflineRecordingApi.html#/requestOfflineRecordingSettings(_:feature:)":{"name":"requestOfflineRecordingSettings(_:feature:)","abstract":"

    Request the offline recording settings available in current operation mode. This request shall be used before the offline recording is started","parent_name":"PolarOfflineRecordingApi"},"Protocols/PolarOfflineRecordingApi.html#/requestFullOfflineRecordingSettings(_:feature:)":{"name":"requestFullOfflineRecordingSettings(_:feature:)","abstract":"

    Request all the settings available in the device. The request returns the all capabilities of the requested streaming feature not limited by the current operation mode.

    ","parent_name":"PolarOfflineRecordingApi"},"Protocols/PolarOfflineRecordingApi.html#/getOfflineRecordingStatus(_:)":{"name":"getOfflineRecordingStatus(_:)","abstract":"

    Get status of offline recordings.

    ","parent_name":"PolarOfflineRecordingApi"},"Protocols/PolarOfflineRecordingApi.html#/listOfflineRecordings(_:)":{"name":"listOfflineRecordings(_:)","abstract":"

    List offline recordings stored in the device.

    ","parent_name":"PolarOfflineRecordingApi"},"Protocols/PolarOfflineRecordingApi.html#/getOfflineRecord(_:entry:secret:)":{"name":"getOfflineRecord(_:entry:secret:)","abstract":"

    Fetch recording from the device.

    ","parent_name":"PolarOfflineRecordingApi"},"Protocols/PolarOfflineRecordingApi.html#/removeOfflineRecord(_:entry:)":{"name":"removeOfflineRecord(_:entry:)","abstract":"

    Removes offline recording from the device

    ","parent_name":"PolarOfflineRecordingApi"},"Protocols/PolarOfflineRecordingApi.html#/startOfflineRecording(_:feature:settings:secret:)":{"name":"startOfflineRecording(_:feature:settings:secret:)","abstract":"

    Start offline recording.

    ","parent_name":"PolarOfflineRecordingApi"},"Protocols/PolarOfflineRecordingApi.html#/stopOfflineRecording(_:feature:)":{"name":"stopOfflineRecording(_:feature:)","abstract":"

    Request to stop offline recording.

    ","parent_name":"PolarOfflineRecordingApi"},"Protocols/PolarOfflineRecordingApi.html#/setOfflineRecordingTrigger(_:trigger:secret:)":{"name":"setOfflineRecordingTrigger(_:trigger:secret:)","abstract":"

    Sets the offline recording triggers for a given Polar device. The offline recording can be started automatically in the device by setting the triggers.","parent_name":"PolarOfflineRecordingApi"},"Protocols/PolarOfflineRecordingApi.html#/getOfflineRecordingTriggerSetup(_:)":{"name":"getOfflineRecordingTriggerSetup(_:)","abstract":"

    Retrieves the current offline recording trigger setup in the device.

    ","parent_name":"PolarOfflineRecordingApi"},"Protocols/PolarH10OfflineExerciseApi.html#/startRecording(_:exerciseId:interval:sampleType:)":{"name":"startRecording(_:exerciseId:interval:sampleType:)","abstract":"

    Request start recording. Supported only by Polar H10. Requires polarFileTransfer feature.

    ","parent_name":"PolarH10OfflineExerciseApi"},"Protocols/PolarH10OfflineExerciseApi.html#/stopRecording(_:)":{"name":"stopRecording(_:)","abstract":"

    Request stop for current recording. Supported only by Polar H10. Requires polarFileTransfer feature.

    ","parent_name":"PolarH10OfflineExerciseApi"},"Protocols/PolarH10OfflineExerciseApi.html#/requestRecordingStatus(_:)":{"name":"requestRecordingStatus(_:)","abstract":"

    Request current recording status. Supported only by Polar H10. Requires polarFileTransfer feature.

    ","parent_name":"PolarH10OfflineExerciseApi"},"Protocols/PolarH10OfflineExerciseApi.html#/fetchStoredExerciseList(_:)":{"name":"fetchStoredExerciseList(_:)","abstract":"

    Api for fetching stored exercises list from Polar H10 device. Requires polarFileTransfer feature. This API is working for Polar OH1 and Polar Verity Sense devices too, however in those devices recording of exercise requires that sensor is registered to Polar Flow account.

    ","parent_name":"PolarH10OfflineExerciseApi"},"Protocols/PolarH10OfflineExerciseApi.html#/fetchExercise(_:entry:)":{"name":"fetchExercise(_:entry:)","abstract":"

    Api for fetching a single exercise from Polar H10 device. Requires polarFileTransfer feature. This API is working for Polar OH1 and Polar Verity Sense devices too, however in those devices recording of exercise requires that sensor is registered to Polar Flow account.

    ","parent_name":"PolarH10OfflineExerciseApi"},"Protocols/PolarH10OfflineExerciseApi.html#/removeExercise(_:entry:)":{"name":"removeExercise(_:entry:)","abstract":"

    Api for removing single exercise from Polar H10 device. Requires polarFileTransfer feature. This API is working for Polar OH1 and Polar Verity Sense devices too, however in those devices recording of exercise requires that sensor is registered to Polar Flow account.

    ","parent_name":"PolarH10OfflineExerciseApi"},"Protocols/PolarBleApiLogger.html#/message(_:)":{"name":"message(_:)","abstract":"

    log message from sdk

    ","parent_name":"PolarBleApiLogger"},"Protocols/PolarBleApiDeviceFeaturesObserver.html#/bleSdkFeatureReady(_:feature:)":{"name":"bleSdkFeatureReady(_:feature:)","abstract":"

    The feature is available in this device and it is ready. Called only for the features which are specified in [PolarBleApi] construction.","parent_name":"PolarBleApiDeviceFeaturesObserver"},"Protocols/PolarBleApiDeviceInfoObserver.html#/batteryLevelReceived(_:batteryLevel:)":{"name":"batteryLevelReceived(_:batteryLevel:)","abstract":"

    Battery level received from device.

    ","parent_name":"PolarBleApiDeviceInfoObserver"},"Protocols/PolarBleApiDeviceInfoObserver.html#/disInformationReceived(_:uuid:value:)":{"name":"disInformationReceived(_:uuid:value:)","abstract":"

    Received DIS info.

    ","parent_name":"PolarBleApiDeviceInfoObserver"},"Protocols/PolarBleApiPowerStateObserver.html#/blePowerOn()":{"name":"blePowerOn()","abstract":"

    Ble powered on event.

    ","parent_name":"PolarBleApiPowerStateObserver"},"Protocols/PolarBleApiPowerStateObserver.html#/blePowerOff()":{"name":"blePowerOff()","abstract":"

    Ble powered off event, no further actions are needed from the application.

    ","parent_name":"PolarBleApiPowerStateObserver"},"Protocols/PolarBleApiObserver.html#/deviceConnecting(_:)":{"name":"deviceConnecting(_:)","abstract":"

    Callback when connection attempt is started to device

    ","parent_name":"PolarBleApiObserver"},"Protocols/PolarBleApiObserver.html#/deviceConnected(_:)":{"name":"deviceConnected(_:)","abstract":"

    Device connnection has been established.

    ","parent_name":"PolarBleApiObserver"},"Protocols/PolarBleApiObserver.html#/deviceDisconnected(_:)":{"name":"deviceDisconnected(_:)","abstract":"

    Connection lost to device.","parent_name":"PolarBleApiObserver"},"Protocols/PolarBleApi.html#/cleanup()":{"name":"cleanup()","abstract":"

    remove all known devices, which are not in use

    ","parent_name":"PolarBleApi"},"Protocols/PolarBleApi.html#/polarFilter(_:)":{"name":"polarFilter(_:)","abstract":"

    Enable or disable polar filter.

    ","parent_name":"PolarBleApi"},"Protocols/PolarBleApi.html#/startAutoConnectToDevice(_:service:polarDeviceType:)":{"name":"startAutoConnectToDevice(_:service:polarDeviceType:)","abstract":"

    Start connecting to a nearby device. PolarBleApiObservers polarDeviceConnected is","parent_name":"PolarBleApi"},"Protocols/PolarBleApi.html#/connectToDevice(_:)":{"name":"connectToDevice(_:)","abstract":"

    Request a connection to a Polar device. Invokes PolarBleApiObservers polarDeviceConnected.

    ","parent_name":"PolarBleApi"},"Protocols/PolarBleApi.html#/disconnectFromDevice(_:)":{"name":"disconnectFromDevice(_:)","abstract":"

    Disconnect from the current Polar device.

    ","parent_name":"PolarBleApi"},"Protocols/PolarBleApi.html#/searchForDevice()":{"name":"searchForDevice()","abstract":"

    Start searching for Polar device(s)

    ","parent_name":"PolarBleApi"},"Protocols/PolarBleApi.html#/startListenForPolarHrBroadcasts(_:)":{"name":"startListenForPolarHrBroadcasts(_:)","abstract":"

    Start listening the heart rate from Polar devices when subscribed.","parent_name":"PolarBleApi"},"Protocols/PolarBleApi.html#/isFeatureReady(_:feature:)":{"name":"isFeatureReady(_:feature:)","abstract":"

    Check if the feature is ready.

    ","parent_name":"PolarBleApi"},"Protocols/PolarBleApi.html#/setLocalTime(_:time:zone:)":{"name":"setLocalTime(_:time:zone:)","abstract":"

    Set local time to device.

    ","parent_name":"PolarBleApi"},"Protocols/PolarBleApi.html#/getLocalTime(_:)":{"name":"getLocalTime(_:)","abstract":"

    Get current time in device. Note, the H10 is not supporting time read.

    ","parent_name":"PolarBleApi"},"Protocols/PolarBleApi.html#/observer":{"name":"observer","abstract":"

    Common GAP (Generic access profile) observer

    ","parent_name":"PolarBleApi"},"Protocols/PolarBleApi.html#/deviceInfoObserver":{"name":"deviceInfoObserver","abstract":"

    Device info observer for DIS (Device information service) and BAS (Battery service) GATT (Generic attributes) client

    ","parent_name":"PolarBleApi"},"Protocols/PolarBleApi.html#/powerStateObserver":{"name":"powerStateObserver","abstract":"

    Bluetooth power state observer

    ","parent_name":"PolarBleApi"},"Protocols/PolarBleApi.html#/deviceFeaturesObserver":{"name":"deviceFeaturesObserver","abstract":"

    Device features ready observer

    ","parent_name":"PolarBleApi"},"Protocols/PolarBleApi.html#/isBlePowered":{"name":"isBlePowered","abstract":"

    Helper to check if Ble is currently powered

    ","parent_name":"PolarBleApi"},"Protocols/PolarBleApi.html#/logger":{"name":"logger","abstract":"

    optional logger set to get traces from sdk

    ","parent_name":"PolarBleApi"},"Protocols/PolarBleApi.html#/automaticReconnection":{"name":"automaticReconnection","abstract":"

    optional disable or enable automatic reconnection, by default it is enabled

    ","parent_name":"PolarBleApi"},"Protocols/PolarBleApi.html":{"name":"PolarBleApi","abstract":"

    API.

    "},"Protocols/PolarBleApiObserver.html":{"name":"PolarBleApiObserver","abstract":"

    Polar Ble API connection observer.

    "},"Protocols/PolarBleApiPowerStateObserver.html":{"name":"PolarBleApiPowerStateObserver","abstract":"

    Bluetooth state observer.

    "},"Protocols/PolarBleApiDeviceInfoObserver.html":{"name":"PolarBleApiDeviceInfoObserver","abstract":"

    Device info observer.

    "},"Protocols.html#/PolarBleApiDeviceHrObserver":{"name":"PolarBleApiDeviceHrObserver","abstract":"

    Heart rate observer

    "},"Protocols/PolarBleApiDeviceFeaturesObserver.html":{"name":"PolarBleApiDeviceFeaturesObserver","abstract":"

    Data client observer

    "},"Protocols.html#/PolarBleApiSdkModeFeatureObserver":{"name":"PolarBleApiSdkModeFeatureObserver","abstract":"

    SDK Mode observer

    "},"Protocols/PolarBleApiLogger.html":{"name":"PolarBleApiLogger","abstract":"

    logger observer

    "},"Protocols/PolarH10OfflineExerciseApi.html":{"name":"PolarH10OfflineExerciseApi","abstract":"

    H10 Exercise recording API.

    "},"Protocols/PolarOfflineRecordingApi.html":{"name":"PolarOfflineRecordingApi","abstract":"

    Offline recording API.

    "},"Protocols/PolarOnlineStreamingApi.html":{"name":"PolarOnlineStreamingApi","abstract":"

    Online steaming API.

    "},"Protocols/PolarSdkModeApi.html":{"name":"PolarSdkModeApi","abstract":"

    Polar SDK mode API

    "},"Extensions/PrimitiveSequence.html#/asCompletable()":{"name":"asCompletable()","parent_name":"PrimitiveSequence"},"Extensions.html#/PolarBleApiImpl":{"name":"PolarBleApiImpl"},"Extensions/PrimitiveSequence.html":{"name":"PrimitiveSequence"},"Enums/PolarOfflineRecordingTriggerMode.html#/triggerDisabled":{"name":"triggerDisabled","parent_name":"PolarOfflineRecordingTriggerMode"},"Enums/PolarOfflineRecordingTriggerMode.html#/triggerSystemStart":{"name":"triggerSystemStart","parent_name":"PolarOfflineRecordingTriggerMode"},"Enums/PolarOfflineRecordingTriggerMode.html#/triggerExerciseStart":{"name":"triggerExerciseStart","parent_name":"PolarOfflineRecordingTriggerMode"},"Enums/PolarOfflineRecordingData.html#/accOfflineRecordingData(_:startTime:settings:)":{"name":"accOfflineRecordingData(_:startTime:settings:)","parent_name":"PolarOfflineRecordingData"},"Enums/PolarOfflineRecordingData.html#/gyroOfflineRecordingData(_:startTime:settings:)":{"name":"gyroOfflineRecordingData(_:startTime:settings:)","parent_name":"PolarOfflineRecordingData"},"Enums/PolarOfflineRecordingData.html#/magOfflineRecordingData(_:startTime:settings:)":{"name":"magOfflineRecordingData(_:startTime:settings:)","parent_name":"PolarOfflineRecordingData"},"Enums/PolarOfflineRecordingData.html#/ppgOfflineRecordingData(_:startTime:settings:)":{"name":"ppgOfflineRecordingData(_:startTime:settings:)","parent_name":"PolarOfflineRecordingData"},"Enums/PolarOfflineRecordingData.html#/ppiOfflineRecordingData(_:startTime:)":{"name":"ppiOfflineRecordingData(_:startTime:)","parent_name":"PolarOfflineRecordingData"},"Enums/PolarOfflineRecordingData.html#/hrOfflineRecordingData(_:startTime:)":{"name":"hrOfflineRecordingData(_:startTime:)","parent_name":"PolarOfflineRecordingData"},"Enums/PolarErrors.html#/notificationNotEnabled":{"name":"notificationNotEnabled","abstract":"

    GATT characteristic notification not enabled

    ","parent_name":"PolarErrors"},"Enums/PolarErrors.html#/serviceNotFound":{"name":"serviceNotFound","abstract":"

    GATT service not found

    ","parent_name":"PolarErrors"},"Enums/PolarErrors.html#/deviceNotConnected":{"name":"deviceNotConnected","abstract":"

    Device state != Connected

    ","parent_name":"PolarErrors"},"Enums/PolarErrors.html#/deviceNotFound":{"name":"deviceNotFound","abstract":"

    Device not found

    ","parent_name":"PolarErrors"},"Enums/PolarErrors.html#/operationNotSupported":{"name":"operationNotSupported","abstract":"

    Requested operation is not supported

    ","parent_name":"PolarErrors"},"Enums/PolarErrors.html#/messageEncodeFailed":{"name":"messageEncodeFailed","abstract":"

    Google protocol buffers encode failed

    ","parent_name":"PolarErrors"},"Enums/PolarErrors.html#/messageDecodeFailed":{"name":"messageDecodeFailed","abstract":"

    Google protocol buffers decode failed

    ","parent_name":"PolarErrors"},"Enums/PolarErrors.html#/dateTimeFormatFailed(description:)":{"name":"dateTimeFormatFailed(description:)","abstract":"

    String to date time formatting failed

    ","parent_name":"PolarErrors"},"Enums/PolarErrors.html#/unableToStartStreaming":{"name":"unableToStartStreaming","abstract":"

    Failed to start streaming

    ","parent_name":"PolarErrors"},"Enums/PolarErrors.html#/invalidArgument(description:)":{"name":"invalidArgument(description:)","abstract":"

    invalid argument

    ","parent_name":"PolarErrors"},"Enums/PolarErrors.html#/polarBleSdkInternalException(description:)":{"name":"polarBleSdkInternalException(description:)","abstract":"

    Polar BLE SDK internal exception indicating something went wrong in SDK internal logic

    ","parent_name":"PolarErrors"},"Enums/PolarErrors.html#/deviceError(description:)":{"name":"deviceError(description:)","abstract":"

    Error on device operation

    ","parent_name":"PolarErrors"},"Enums/PolarErrors.html#/polarOfflineRecordingError(description:)":{"name":"polarOfflineRecordingError(description:)","abstract":"

    Error related to offline recording

    ","parent_name":"PolarErrors"},"Enums/SampleType.html#/hr":{"name":"hr","abstract":"

    recording type to use is hr in BPM

    ","parent_name":"SampleType"},"Enums/SampleType.html#/rr":{"name":"rr","abstract":"

    recording type to use is rr interval

    ","parent_name":"SampleType"},"Enums/RecordingInterval.html#/interval_1s":{"name":"interval_1s","parent_name":"RecordingInterval"},"Enums/RecordingInterval.html#/interval_5s":{"name":"interval_5s","parent_name":"RecordingInterval"},"Enums/PpgDataType.html#/ppg3_ambient1":{"name":"ppg3_ambient1","abstract":"

    3 ppg + 1 ambient

    ","parent_name":"PpgDataType"},"Enums/PpgDataType.html#/unknown":{"name":"unknown","parent_name":"PpgDataType"},"Enums/PolarBleSdkFeature.html#/feature_hr":{"name":"feature_hr","abstract":"

    Hr feature to receive hr and rr data from Polar or any other BLE device via standard HR BLE service

    ","parent_name":"PolarBleSdkFeature"},"Enums/PolarBleSdkFeature.html#/feature_device_info":{"name":"feature_device_info","abstract":"

    Device information feature to receive sw information from Polar or any other BLE device

    ","parent_name":"PolarBleSdkFeature"},"Enums/PolarBleSdkFeature.html#/feature_battery_info":{"name":"feature_battery_info","abstract":"

    Feature to receive battery level info from Polar or any other BLE device

    ","parent_name":"PolarBleSdkFeature"},"Enums/PolarBleSdkFeature.html#/feature_polar_online_streaming":{"name":"feature_polar_online_streaming","abstract":"

    Polar sensor streaming feature to stream live online data. For example hr, ecg, acc, ppg, ppi, etc…

    ","parent_name":"PolarBleSdkFeature"},"Enums/PolarBleSdkFeature.html#/feature_polar_offline_recording":{"name":"feature_polar_offline_recording","abstract":"

    Polar offline recording feature to record offline data to Polar device without continuous BLE connection.

    ","parent_name":"PolarBleSdkFeature"},"Enums/PolarBleSdkFeature.html#/feature_polar_h10_exercise_recording":{"name":"feature_polar_h10_exercise_recording","abstract":"

    H10 exercise recording feature to record exercise data to Polar H10 device without continuous BLE connection.

    ","parent_name":"PolarBleSdkFeature"},"Enums/PolarBleSdkFeature.html#/feature_polar_device_time_setup":{"name":"feature_polar_device_time_setup","abstract":"

    Feature to read and set device time in Polar device

    ","parent_name":"PolarBleSdkFeature"},"Enums/PolarBleSdkFeature.html#/feature_polar_sdk_mode":{"name":"feature_polar_sdk_mode","abstract":"

    In SDK mode the wider range of capabilities are available for the online stream or offline recoding than in normal operation mode.

    ","parent_name":"PolarBleSdkFeature"},"Enums/PolarDeviceDataType.html#/ecg":{"name":"ecg","parent_name":"PolarDeviceDataType"},"Enums/PolarDeviceDataType.html#/acc":{"name":"acc","parent_name":"PolarDeviceDataType"},"Enums/PolarDeviceDataType.html#/ppg":{"name":"ppg","parent_name":"PolarDeviceDataType"},"Enums/PolarDeviceDataType.html#/ppi":{"name":"ppi","parent_name":"PolarDeviceDataType"},"Enums/PolarDeviceDataType.html#/gyro":{"name":"gyro","parent_name":"PolarDeviceDataType"},"Enums/PolarDeviceDataType.html#/magnetometer":{"name":"magnetometer","parent_name":"PolarDeviceDataType"},"Enums/PolarDeviceDataType.html#/hr":{"name":"hr","parent_name":"PolarDeviceDataType"},"Enums/PolarDeviceDataType.html":{"name":"PolarDeviceDataType","abstract":"

    Data types available in Polar devices for online streaming or offline recording.

    "},"Enums/PolarBleSdkFeature.html":{"name":"PolarBleSdkFeature","abstract":"

    Features available in Polar BLE SDK library

    "},"Enums/PpgDataType.html":{"name":"PpgDataType","abstract":"

    PPG data source enum

    "},"Enums/RecordingInterval.html":{"name":"RecordingInterval","abstract":"

    Recoding intervals for H10 recording start

    "},"Enums/SampleType.html":{"name":"SampleType","abstract":"

    Sample types for H10 recording start

    "},"Enums/PolarErrors.html":{"name":"PolarErrors","abstract":"

    Polar SDK errors

    "},"Enums/PolarOfflineRecordingData.html":{"name":"PolarOfflineRecordingData"},"Enums/PolarOfflineRecordingTriggerMode.html":{"name":"PolarOfflineRecordingTriggerMode","abstract":"

    Polar offline recording trigger mode. Offline recording trigger can be used to start the offline recording automatically in device, based on selected trigger mode.

    "},"Classes/PolarBleApiDefaultImpl.html#/polarImplementation(_:features:)":{"name":"polarImplementation(_:features:)","abstract":"

    New instance of Polar Ble API implementation

    ","parent_name":"PolarBleApiDefaultImpl"},"Classes/PolarBleApiDefaultImpl.html#/versionInfo()":{"name":"versionInfo()","abstract":"

    Return current version

    ","parent_name":"PolarBleApiDefaultImpl"},"Classes/PolarBleApiDefaultImpl.html":{"name":"PolarBleApiDefaultImpl","abstract":"

    Class to provide the default implementation of the Polar Ble API

    "},"Classes.html":{"name":"Classes","abstract":"

    The following classes are available globally.

    "},"Enums.html":{"name":"Enumerations","abstract":"

    The following enumerations are available globally.

    "},"Extensions.html":{"name":"Extensions","abstract":"

    The following extensions are available globally.

    "},"Protocols.html":{"name":"Protocols","abstract":"

    The following protocols are available globally.

    "},"Structs.html":{"name":"Structures","abstract":"

    The following structures are available globally.

    "},"Typealiases.html":{"name":"Type Aliases","abstract":"

    The following type aliases are available globally.

    "}} \ No newline at end of file +{"Typealiases.html#/s:11PolarBleSdk0A10DeviceInfoa":{"name":"PolarDeviceInfo","abstract":"

    Polar device info

    "},"Typealiases.html#/s:11PolarBleSdk0A15HrBroadcastDataa":{"name":"PolarHrBroadcastData","abstract":"

    deviceInfo: see #PolarDeviceInfo ,

    "},"Typealiases.html#/s:11PolarBleSdk0A6HrDataa":{"name":"PolarHrData","abstract":"

    Polar hr data

    "},"Typealiases.html#/s:11PolarBleSdk0A7EcgDataa":{"name":"PolarEcgData","abstract":"

    Polar Ecg data

    "},"Typealiases.html#/s:11PolarBleSdk0A7AccDataa":{"name":"PolarAccData","abstract":"

    Polar acc data

    "},"Typealiases.html#/s:11PolarBleSdk0A8GyroDataa":{"name":"PolarGyroData","abstract":"

    Polar gyro data

    "},"Typealiases.html#/s:11PolarBleSdk0A16MagnetometerDataa":{"name":"PolarMagnetometerData","abstract":"

    Polar magnetometer data

    "},"Typealiases.html#/s:11PolarBleSdk0A7OhrDataa":{"name":"PolarOhrData","abstract":"

    Polar Ohr data

    "},"Typealiases.html#/s:11PolarBleSdk0A7PpgDataa":{"name":"PolarPpgData","abstract":"

    Polar PPG data

    "},"Typealiases.html#/s:11PolarBleSdk0A7PpiDataa":{"name":"PolarPpiData","abstract":"

    Polar ppi data

    "},"Typealiases.html#/s:11PolarBleSdk0A13ExerciseEntrya":{"name":"PolarExerciseEntry","abstract":"

    Polar exercise entry

    "},"Typealiases.html#/s:11PolarBleSdk0A12ExerciseDataa":{"name":"PolarExerciseData","abstract":"

    Polar Exercise Data

    "},"Typealiases.html#/s:11PolarBleSdk0A15RecordingStatusa":{"name":"PolarRecordingStatus","abstract":"

    Polar Recording status

    "},"Structs/PolarSensorSetting/SettingType.html#/s:11PolarBleSdk0A13SensorSettingV0E4TypeO10sampleRateyA2EmF":{"name":"sampleRate","abstract":"

    sample rate in hz

    ","parent_name":"SettingType"},"Structs/PolarSensorSetting/SettingType.html#/s:11PolarBleSdk0A13SensorSettingV0E4TypeO10resolutionyA2EmF":{"name":"resolution","abstract":"

    resolution in bits

    ","parent_name":"SettingType"},"Structs/PolarSensorSetting/SettingType.html#/s:11PolarBleSdk0A13SensorSettingV0E4TypeO5rangeyA2EmF":{"name":"range","abstract":"

    range

    ","parent_name":"SettingType"},"Structs/PolarSensorSetting/SettingType.html#/s:11PolarBleSdk0A13SensorSettingV0E4TypeO14rangeMilliunityA2EmF":{"name":"rangeMilliunit","abstract":"

    range with min and max allowed values

    ","parent_name":"SettingType"},"Structs/PolarSensorSetting/SettingType.html#/s:11PolarBleSdk0A13SensorSettingV0E4TypeO8channelsyA2EmF":{"name":"channels","abstract":"

    amount of channels available

    ","parent_name":"SettingType"},"Structs/PolarSensorSetting/SettingType.html#/s:11PolarBleSdk0A13SensorSettingV0E4TypeO7unknownyA2EmF":{"name":"unknown","abstract":"

    type is unknown

    ","parent_name":"SettingType"},"Structs/PolarSensorSetting/SettingType.html":{"name":"SettingType","abstract":"

    settings type

    ","parent_name":"PolarSensorSetting"},"Structs/PolarSensorSetting.html#/s:11PolarBleSdk0A13SensorSettingV8settingsSDyAC0E4TypeOShys6UInt32VGGvp":{"name":"settings","abstract":"

    current settings available / set

    ","parent_name":"PolarSensorSetting"},"Structs/PolarSensorSetting.html#/s:11PolarBleSdk0A13SensorSettingVyACSDyAC0E4TypeOs6UInt32VGcfc":{"name":"init(_:)","abstract":"

    constructor with desired settings

    ","parent_name":"PolarSensorSetting"},"Structs/PolarSensorSetting.html#/s:11PolarBleSdk0A13SensorSettingV11maxSettingsACyF":{"name":"maxSettings()","abstract":"

    helper to retrieve max settings available

    ","parent_name":"PolarSensorSetting"},"Structs/PolarSensorSetting.html#/s:s23CustomStringConvertibleP11descriptionSSvp":{"name":"description","parent_name":"PolarSensorSetting"},"Structs/PolarRecordingSecret.html#/s:11PolarBleSdk0A15RecordingSecretV3keyAC10Foundation4DataV_tKcfc":{"name":"init(key:)","parent_name":"PolarRecordingSecret"},"Structs/PolarOfflineRecordingTrigger.html#/s:11PolarBleSdk0A23OfflineRecordingTriggerV11triggerModeAA0adefH0Ovp":{"name":"triggerMode","abstract":"

    The mode of the trigger

    ","parent_name":"PolarOfflineRecordingTrigger"},"Structs/PolarOfflineRecordingTrigger.html#/s:11PolarBleSdk0A23OfflineRecordingTriggerV15triggerFeaturesSDyAA0A14DeviceDataTypeOAA0A13SensorSettingVSgGvp":{"name":"triggerFeatures","abstract":"

    Dictionary containing the PolarDeviceDataType keys for enabled triggers. Dictionary","parent_name":"PolarOfflineRecordingTrigger"},"Structs/PolarOfflineRecordingTrigger.html#/s:11PolarBleSdk0A23OfflineRecordingTriggerV11triggerMode0G8FeaturesAcA0adefH0O_SDyAA0A14DeviceDataTypeOAA0A13SensorSettingVSgGtcfc":{"name":"init(triggerMode:triggerFeatures:)","parent_name":"PolarOfflineRecordingTrigger"},"Structs/PolarOfflineRecordingEntry.html#/s:11PolarBleSdk0A21OfflineRecordingEntryV4pathSSvp":{"name":"path","abstract":"

    Recording entry path in device.

    ","parent_name":"PolarOfflineRecordingEntry"},"Structs/PolarOfflineRecordingEntry.html#/s:11PolarBleSdk0A21OfflineRecordingEntryV4sizeSuvp":{"name":"size","abstract":"

    Recording size in bytes.

    ","parent_name":"PolarOfflineRecordingEntry"},"Structs/PolarOfflineRecordingEntry.html#/s:11PolarBleSdk0A21OfflineRecordingEntryV4date10Foundation4DateVvp":{"name":"date","abstract":"

    The date and time of the recording entry i.e. the moment recording is started

    ","parent_name":"PolarOfflineRecordingEntry"},"Structs/PolarOfflineRecordingEntry.html#/s:11PolarBleSdk0A21OfflineRecordingEntryV4typeAA0A14DeviceDataTypeOvp":{"name":"type","abstract":"

    data type of the recording

    ","parent_name":"PolarOfflineRecordingEntry"},"Structs/PolarOfflineRecordingEntry.html#/s:11PolarBleSdk0A21OfflineRecordingEntryV4path4size4date4typeACSS_Su10Foundation4DateVAA0A14DeviceDataTypeOtcfc":{"name":"init(path:size:date:type:)","parent_name":"PolarOfflineRecordingEntry"},"Structs/PolarOfflineRecordingEntry.html":{"name":"PolarOfflineRecordingEntry","abstract":"

    Polar offline recording entry container.

    "},"Structs/PolarOfflineRecordingTrigger.html":{"name":"PolarOfflineRecordingTrigger","abstract":"

    Polar offline recording trigger

    "},"Structs/PolarRecordingSecret.html":{"name":"PolarRecordingSecret","abstract":"

    Polar recording secret is used to encrypt the recording.

    "},"Structs/PolarSensorSetting.html":{"name":"PolarSensorSetting","abstract":"

    polar sensor settings class

    "},"Protocols/PolarSdkModeApi.html#/s:11PolarBleSdk0aC7ModeApiP13enableSDKModey7RxSwift17PrimitiveSequenceVyAE16CompletableTraitOs5NeverOGSSF":{"name":"enableSDKMode(_:)","abstract":"

    Enables SDK mode.

    ","parent_name":"PolarSdkModeApi"},"Protocols/PolarSdkModeApi.html#/s:11PolarBleSdk0aC7ModeApiP14disableSDKModey7RxSwift17PrimitiveSequenceVyAE16CompletableTraitOs5NeverOGSSF":{"name":"disableSDKMode(_:)","abstract":"

    Disables SDK mode.

    ","parent_name":"PolarSdkModeApi"},"Protocols/PolarSdkModeApi.html#/s:11PolarBleSdk0aC7ModeApiP16isSDKModeEnabledy7RxSwift17PrimitiveSequenceVyAE11SingleTraitOSbGSSF":{"name":"isSDKModeEnabled(_:)","abstract":"

    Check if SDK mode currently enabled.

    ","parent_name":"PolarSdkModeApi"},"Protocols/PolarOnlineStreamingApi.html#/s:11PolarBleSdk0A18OnlineStreamingApiP012getAvailableD15StreamDataTypesy7RxSwift17PrimitiveSequenceVyAE11SingleTraitOShyAA0a6DeviceJ4TypeOGGSSF":{"name":"getAvailableOnlineStreamDataTypes(_:)","abstract":"

    Get the data types available in this device for online streaming

    ","parent_name":"PolarOnlineStreamingApi"},"Protocols/PolarOnlineStreamingApi.html#/s:11PolarBleSdk0A18OnlineStreamingApiP21requestStreamSettings_7feature7RxSwift17PrimitiveSequenceVyAF11SingleTraitOAA0A13SensorSettingVGSS_AA0A14DeviceDataTypeOtF":{"name":"requestStreamSettings(_:feature:)","abstract":"

    Request the stream settings available in current operation mode. This request shall be used before the stream is started","parent_name":"PolarOnlineStreamingApi"},"Protocols/PolarOnlineStreamingApi.html#/s:11PolarBleSdk0A18OnlineStreamingApiP25requestFullStreamSettings_7feature7RxSwift17PrimitiveSequenceVyAF11SingleTraitOAA0A13SensorSettingVGSS_AA0A14DeviceDataTypeOtF":{"name":"requestFullStreamSettings(_:feature:)","abstract":"

    Request full steam settings capabilities. The request returns the all capabilities of the requested streaming feature not limited by the current operation mode.","parent_name":"PolarOnlineStreamingApi"},"Protocols/PolarOnlineStreamingApi.html#/s:11PolarBleSdk0A18OnlineStreamingApiP07startHrE0y7RxSwift10ObservableCySays5UInt8V2hr_SaySiG5rrsMsSb11rrAvailableSb13contactStatusSb0rS9SupportedtGGSSF":{"name":"startHrStreaming(_:)","abstract":"

    Start heart rate stream. Heart rate stream is stopped if the connection is closed,","parent_name":"PolarOnlineStreamingApi"},"Protocols/PolarOnlineStreamingApi.html#/s:11PolarBleSdk0A18OnlineStreamingApiP08startEcgE0_8settings7RxSwift10ObservableCys6UInt64V9timeStamp_SayAjK_s5Int32V7voltagetG7samplestGSS_AA0A13SensorSettingVtF":{"name":"startEcgStreaming(_:settings:)","abstract":"

    Start the ECG (Electrocardiography) stream. ECG stream is stopped if the connection is closed, error occurs or stream is disposed.

    ","parent_name":"PolarOnlineStreamingApi"},"Protocols/PolarOnlineStreamingApi.html#/s:11PolarBleSdk0A18OnlineStreamingApiP08startAccE0_8settings7RxSwift10ObservableCys6UInt64V9timeStamp_SayAjK_s5Int32V1xAM1yAM1ztG7samplestGSS_AA0A13SensorSettingVtF":{"name":"startAccStreaming(_:settings:)","abstract":"

    Start ACC (Accelerometer) stream. ACC stream is stopped if the connection is closed, error occurs or stream is disposed.

    ","parent_name":"PolarOnlineStreamingApi"},"Protocols/PolarOnlineStreamingApi.html#/s:11PolarBleSdk0A18OnlineStreamingApiP09startGyroE0_8settings7RxSwift10ObservableCys6UInt64V9timeStamp_SayAjK_Sf1xSf1ySf1ztG7samplestGSS_AA0A13SensorSettingVtF":{"name":"startGyroStreaming(_:settings:)","abstract":"

    Start Gyro stream. Gyro stream is stopped if the connection is closed, error occurs during start or stream is disposed.

    ","parent_name":"PolarOnlineStreamingApi"},"Protocols/PolarOnlineStreamingApi.html#/s:11PolarBleSdk0A18OnlineStreamingApiP017startMagnetometerE0_8settings7RxSwift10ObservableCys6UInt64V9timeStamp_SayAjK_Sf1xSf1ySf1ztG7samplestGSS_AA0A13SensorSettingVtF":{"name":"startMagnetometerStreaming(_:settings:)","abstract":"

    Start magnetometer stream. Magnetometer stream is stopped if the connection is closed, error occurs or stream is disposed.

    ","parent_name":"PolarOnlineStreamingApi"},"Protocols/PolarOnlineStreamingApi.html#/s:11PolarBleSdk0A18OnlineStreamingApiP08startOhrE0_8settings7RxSwift10ObservableCys6UInt64V9timeStamp_AA0H8DataTypeO4typeSayAjK_Says5Int32VG14channelSamplestG7samplestGSS_AA0A13SensorSettingVtF":{"name":"startOhrStreaming(_:settings:)","abstract":"

    Start OHR (Optical heart rate) PPG (Photoplethysmography) stream. PPG stream is stopped if the connection is closed, error occurs or stream is disposed.

    ","parent_name":"PolarOnlineStreamingApi"},"Protocols/PolarOnlineStreamingApi.html#/s:11PolarBleSdk0A18OnlineStreamingApiP08startPpgE0_8settings7RxSwift10ObservableCyAA0H8DataTypeO4type_Says6UInt64V9timeStamp_Says5Int32VG14channelSamplestG7samplestGSS_AA0A13SensorSettingVtF":{"name":"startPpgStreaming(_:settings:)","abstract":"

    Start optical sensor PPG (Photoplethysmography) stream. PPG stream is stopped if the connection is closed, error occurs or stream is disposed.

    ","parent_name":"PolarOnlineStreamingApi"},"Protocols/PolarOnlineStreamingApi.html#/s:11PolarBleSdk0A18OnlineStreamingApiP08startPpiE0y7RxSwift10ObservableCys6UInt64V9timeStamp_SaySi2hr_s6UInt16V6ppInMsAM0Q13ErrorEstimateSi10blockerBitSi17skinContactStatusSi0xY9SupportedtG7samplestGSSF":{"name":"startPpiStreaming(_:)","abstract":"

    Start PPI (Pulse to Pulse interval) stream.","parent_name":"PolarOnlineStreamingApi"},"Protocols/PolarOnlineStreamingApi.html#/s:11PolarBleSdk0A18OnlineStreamingApiP20startOhrPPIStreamingy7RxSwift10ObservableCys6UInt64V9timeStamp_SaySi2hr_s6UInt16V6ppInMsAM0R13ErrorEstimateSi10blockerBitSi17skinContactStatusSi0yZ9SupportedtG7samplestGSSF":{"name":"startOhrPPIStreaming(_:)","parent_name":"PolarOnlineStreamingApi"},"Protocols/PolarOfflineRecordingApi.html#/s:11PolarBleSdk0A19OfflineRecordingApiP012getAvailabledE9DataTypesy7RxSwift17PrimitiveSequenceVyAE11SingleTraitOShyAA0a6DeviceI4TypeOGGSSF":{"name":"getAvailableOfflineRecordingDataTypes(_:)","abstract":"

    Get the data types available in this device for offline recording

    ","parent_name":"PolarOfflineRecordingApi"},"Protocols/PolarOfflineRecordingApi.html#/s:11PolarBleSdk0A19OfflineRecordingApiP07requestdE8Settings_7feature7RxSwift17PrimitiveSequenceVyAF11SingleTraitOAA0A13SensorSettingVGSS_AA0A14DeviceDataTypeOtF":{"name":"requestOfflineRecordingSettings(_:feature:)","abstract":"

    Request the offline recording settings available in current operation mode. This request shall be used before the offline recording is started","parent_name":"PolarOfflineRecordingApi"},"Protocols/PolarOfflineRecordingApi.html#/s:11PolarBleSdk0A19OfflineRecordingApiP011requestFulldE8Settings_7feature7RxSwift17PrimitiveSequenceVyAF11SingleTraitOAA0A13SensorSettingVGSS_AA0A14DeviceDataTypeOtF":{"name":"requestFullOfflineRecordingSettings(_:feature:)","abstract":"

    Request all the settings available in the device. The request returns the all capabilities of the requested streaming feature not limited by the current operation mode.

    ","parent_name":"PolarOfflineRecordingApi"},"Protocols/PolarOfflineRecordingApi.html#/s:11PolarBleSdk0A19OfflineRecordingApiP03getdE6Statusy7RxSwift17PrimitiveSequenceVyAE11SingleTraitOSDyAA0A14DeviceDataTypeOSbGGSSF":{"name":"getOfflineRecordingStatus(_:)","abstract":"

    Get status of offline recordings.

    ","parent_name":"PolarOfflineRecordingApi"},"Protocols/PolarOfflineRecordingApi.html#/s:11PolarBleSdk0A19OfflineRecordingApiP04listD10Recordingsy7RxSwift10ObservableCyAA0adE5EntryVGSSF":{"name":"listOfflineRecordings(_:)","abstract":"

    List offline recordings stored in the device.

    ","parent_name":"PolarOfflineRecordingApi"},"Protocols/PolarOfflineRecordingApi.html#/s:11PolarBleSdk0A19OfflineRecordingApiP03getD6Record_5entry6secret7RxSwift17PrimitiveSequenceVyAG11SingleTraitOAA0adE4DataOGSS_AA0adE5EntryVAA0aE6SecretVSgtF":{"name":"getOfflineRecord(_:entry:secret:)","abstract":"

    Fetch recording from the device.

    ","parent_name":"PolarOfflineRecordingApi"},"Protocols/PolarOfflineRecordingApi.html#/s:11PolarBleSdk0A19OfflineRecordingApiP06removeD6Record_5entry7RxSwift17PrimitiveSequenceVyAF16CompletableTraitOs5NeverOGSS_AA0adE5EntryVtF":{"name":"removeOfflineRecord(_:entry:)","abstract":"

    Removes offline recording from the device

    ","parent_name":"PolarOfflineRecordingApi"},"Protocols/PolarOfflineRecordingApi.html#/s:11PolarBleSdk0A19OfflineRecordingApiP05startdE0_7feature8settings6secret7RxSwift17PrimitiveSequenceVyAH16CompletableTraitOs5NeverOGSS_AA0A14DeviceDataTypeOAA0A13SensorSettingVSgAA0aE6SecretVSgtF":{"name":"startOfflineRecording(_:feature:settings:secret:)","abstract":"

    Start offline recording.

    ","parent_name":"PolarOfflineRecordingApi"},"Protocols/PolarOfflineRecordingApi.html#/s:11PolarBleSdk0A19OfflineRecordingApiP04stopdE0_7feature7RxSwift17PrimitiveSequenceVyAF16CompletableTraitOs5NeverOGSS_AA0A14DeviceDataTypeOtF":{"name":"stopOfflineRecording(_:feature:)","abstract":"

    Request to stop offline recording.

    ","parent_name":"PolarOfflineRecordingApi"},"Protocols/PolarOfflineRecordingApi.html#/s:11PolarBleSdk0A19OfflineRecordingApiP03setdE7Trigger_7trigger6secret7RxSwift17PrimitiveSequenceVyAG16CompletableTraitOs5NeverOGSS_AA0adeH0VAA0aE6SecretVSgtF":{"name":"setOfflineRecordingTrigger(_:trigger:secret:)","abstract":"

    Sets the offline recording triggers for a given Polar device. The offline recording can be started automatically in the device by setting the triggers.","parent_name":"PolarOfflineRecordingApi"},"Protocols/PolarOfflineRecordingApi.html#/s:11PolarBleSdk0A19OfflineRecordingApiP03getdE12TriggerSetupy7RxSwift17PrimitiveSequenceVyAE11SingleTraitOAA0adeH0VGSSF":{"name":"getOfflineRecordingTriggerSetup(_:)","abstract":"

    Retrieves the current offline recording trigger setup in the device.

    ","parent_name":"PolarOfflineRecordingApi"},"Protocols/PolarH10OfflineExerciseApi.html#/s:11PolarBleSdk0A21H10OfflineExerciseApiP14startRecording_10exerciseId8interval10sampleType7RxSwift17PrimitiveSequenceVyAH16CompletableTraitOs5NeverOGSS_SSAA0I8IntervalOAA06SampleN0OtF":{"name":"startRecording(_:exerciseId:interval:sampleType:)","abstract":"

    Request start recording. Supported only by Polar H10. Requires polarFileTransfer feature.

    ","parent_name":"PolarH10OfflineExerciseApi"},"Protocols/PolarH10OfflineExerciseApi.html#/s:11PolarBleSdk0A21H10OfflineExerciseApiP13stopRecordingy7RxSwift17PrimitiveSequenceVyAE16CompletableTraitOs5NeverOGSSF":{"name":"stopRecording(_:)","abstract":"

    Request stop for current recording. Supported only by Polar H10. Requires polarFileTransfer feature.

    ","parent_name":"PolarH10OfflineExerciseApi"},"Protocols/PolarH10OfflineExerciseApi.html#/s:11PolarBleSdk0A21H10OfflineExerciseApiP22requestRecordingStatusy7RxSwift17PrimitiveSequenceVyAE11SingleTraitOSb7ongoing_SS7entryIdtGSSF":{"name":"requestRecordingStatus(_:)","abstract":"

    Request current recording status. Supported only by Polar H10. Requires polarFileTransfer feature.

    ","parent_name":"PolarH10OfflineExerciseApi"},"Protocols/PolarH10OfflineExerciseApi.html#/s:11PolarBleSdk0A21H10OfflineExerciseApiP011fetchStoredF4Listy7RxSwift10ObservableCySS4path_10Foundation4DateV4dateSS7entryIdtGSSF":{"name":"fetchStoredExerciseList(_:)","abstract":"

    Api for fetching stored exercises list from Polar H10 device. Requires polarFileTransfer feature. This API is working for Polar OH1 and Polar Verity Sense devices too, however in those devices recording of exercise requires that sensor is registered to Polar Flow account.

    ","parent_name":"PolarH10OfflineExerciseApi"},"Protocols/PolarH10OfflineExerciseApi.html#/s:11PolarBleSdk0A21H10OfflineExerciseApiP05fetchF0_5entry7RxSwift17PrimitiveSequenceVyAF11SingleTraitOs6UInt32V8interval_SayALG7samplestGSS_SS4path_10Foundation4DateV4dateSS0I2IdttF":{"name":"fetchExercise(_:entry:)","abstract":"

    Api for fetching a single exercise from Polar H10 device. Requires polarFileTransfer feature. This API is working for Polar OH1 and Polar Verity Sense devices too, however in those devices recording of exercise requires that sensor is registered to Polar Flow account.

    ","parent_name":"PolarH10OfflineExerciseApi"},"Protocols/PolarH10OfflineExerciseApi.html#/s:11PolarBleSdk0A21H10OfflineExerciseApiP06removeF0_5entry7RxSwift17PrimitiveSequenceVyAF16CompletableTraitOs5NeverOGSS_SS4path_10Foundation4DateV4dateSS0I2IdttF":{"name":"removeExercise(_:entry:)","abstract":"

    Api for removing single exercise from Polar H10 device. Requires polarFileTransfer feature. This API is working for Polar OH1 and Polar Verity Sense devices too, however in those devices recording of exercise requires that sensor is registered to Polar Flow account.

    ","parent_name":"PolarH10OfflineExerciseApi"},"Protocols/PolarBleApiLogger.html#/s:11PolarBleSdk0aB9ApiLoggerP7messageyySSF":{"name":"message(_:)","abstract":"

    log message from sdk

    ","parent_name":"PolarBleApiLogger"},"Protocols/PolarBleApiSdkModeFeatureObserver.html#/s:11PolarBleSdk0ab3ApiC19ModeFeatureObserverP03sdkeF9AvailableyySSF":{"name":"sdkModeFeatureAvailable(_:)","abstract":"

    sdk mode feature available in this device and ready for usage callback

    ","parent_name":"PolarBleApiSdkModeFeatureObserver"},"Protocols/PolarBleApiDeviceFeaturesObserver.html#/s:11PolarBleSdk0aB25ApiDeviceFeaturesObserverP14hrFeatureReadyyySSF":{"name":"hrFeatureReady(_:)","abstract":"

    Device HR feature is ready. HR transmission is starting in a short while.

    ","parent_name":"PolarBleApiDeviceFeaturesObserver"},"Protocols/PolarBleApiDeviceFeaturesObserver.html#/s:11PolarBleSdk0aB25ApiDeviceFeaturesObserverP15ftpFeatureReadyyySSF":{"name":"ftpFeatureReady(_:)","abstract":"

    Device file transfer protocol is ready.","parent_name":"PolarBleApiDeviceFeaturesObserver"},"Protocols/PolarBleApiDeviceFeaturesObserver.html#/s:11PolarBleSdk0aB25ApiDeviceFeaturesObserverP09streamingF5Ready_0hF0ySS_ShyAA0aE8DataTypeOGtF":{"name":"streamingFeaturesReady(_:streamingFeatures:)","abstract":"

    feature ready callback

    ","parent_name":"PolarBleApiDeviceFeaturesObserver"},"Protocols/PolarBleApiDeviceFeaturesObserver.html#/s:11PolarBleSdk0aB25ApiDeviceFeaturesObserverP03bleC12FeatureReady_7featureySS_AA0abcI0OtF":{"name":"bleSdkFeatureReady(_:feature:)","abstract":"

    The feature is available in this device and it is ready. Called only for the features which are specified in [PolarBleApi] construction.","parent_name":"PolarBleApiDeviceFeaturesObserver"},"Protocols/PolarBleApiDeviceHrObserver.html#/s:11PolarBleSdk0aB19ApiDeviceHrObserverP15hrValueReceived_4dataySS_s5UInt8V0H0_SaySiG3rrsAI0M2MsSb7contactSb0O9SupportedttF":{"name":"hrValueReceived(_:data:)","abstract":"

    HR notification received. Notice when using OH1 and PPI stream is started this callback will produce 0 hr.

    ","parent_name":"PolarBleApiDeviceHrObserver"},"Protocols/PolarBleApiDeviceInfoObserver.html#/s:11PolarBleSdk0aB21ApiDeviceInfoObserverP20batteryLevelReceived_0hI0ySS_SutF":{"name":"batteryLevelReceived(_:batteryLevel:)","abstract":"

    Battery level received from device.

    ","parent_name":"PolarBleApiDeviceInfoObserver"},"Protocols/PolarBleApiDeviceInfoObserver.html#/s:11PolarBleSdk0aB21ApiDeviceInfoObserverP22disInformationReceived_4uuid5valueySS_So6CBUUIDCSStF":{"name":"disInformationReceived(_:uuid:value:)","abstract":"

    Received DIS info.

    ","parent_name":"PolarBleApiDeviceInfoObserver"},"Protocols/PolarBleApiPowerStateObserver.html#/s:11PolarBleSdk0aB21ApiPowerStateObserverP03bleE2OnyyF":{"name":"blePowerOn()","abstract":"

    Ble powered on event.

    ","parent_name":"PolarBleApiPowerStateObserver"},"Protocols/PolarBleApiPowerStateObserver.html#/s:11PolarBleSdk0aB21ApiPowerStateObserverP03bleE3OffyyF":{"name":"blePowerOff()","abstract":"

    Ble powered off event, no further actions are needed from the application.

    ","parent_name":"PolarBleApiPowerStateObserver"},"Protocols/PolarBleApiObserver.html#/s:11PolarBleSdk0aB11ApiObserverP16deviceConnectingyySS0F2Id_10Foundation4UUIDV7addressSi4rssiSS4nameSb11connectablet_tF":{"name":"deviceConnecting(_:)","abstract":"

    Callback when connection attempt is started to device

    ","parent_name":"PolarBleApiObserver"},"Protocols/PolarBleApiObserver.html#/s:11PolarBleSdk0aB11ApiObserverP15deviceConnectedyySS0F2Id_10Foundation4UUIDV7addressSi4rssiSS4nameSb11connectablet_tF":{"name":"deviceConnected(_:)","abstract":"

    Device connnection has been established.

    ","parent_name":"PolarBleApiObserver"},"Protocols/PolarBleApiObserver.html#/s:11PolarBleSdk0aB11ApiObserverP18deviceDisconnectedyySS0F2Id_10Foundation4UUIDV7addressSi4rssiSS4nameSb11connectablet_tF":{"name":"deviceDisconnected(_:)","abstract":"

    Connection lost to device.","parent_name":"PolarBleApiObserver"},"Protocols/PolarBleApi.html#/s:11PolarBleSdk0aB3ApiP7cleanupyyF":{"name":"cleanup()","abstract":"

    remove all known devices, which are not in use

    ","parent_name":"PolarBleApi"},"Protocols/PolarBleApi.html#/s:11PolarBleSdk0aB3ApiP11polarFilteryySbF":{"name":"polarFilter(_:)","abstract":"

    Enable or disable polar filter.

    ","parent_name":"PolarBleApi"},"Protocols/PolarBleApi.html#/s:11PolarBleSdk0aB3ApiP24startAutoConnectToDevice_7service05polarI4Type7RxSwift17PrimitiveSequenceVyAG16CompletableTraitOs5NeverOGSi_So6CBUUIDCSgSSSgtF":{"name":"startAutoConnectToDevice(_:service:polarDeviceType:)","abstract":"

    Start connecting to a nearby device. PolarBleApiObservers polarDeviceConnected is","parent_name":"PolarBleApi"},"Protocols/PolarBleApi.html#/s:11PolarBleSdk0aB3ApiP15connectToDeviceyySSKF":{"name":"connectToDevice(_:)","abstract":"

    Request a connection to a Polar device. Invokes PolarBleApiObservers polarDeviceConnected.

    ","parent_name":"PolarBleApi"},"Protocols/PolarBleApi.html#/s:11PolarBleSdk0aB3ApiP20disconnectFromDeviceyySSKF":{"name":"disconnectFromDevice(_:)","abstract":"

    Disconnect from the current Polar device.

    ","parent_name":"PolarBleApi"},"Protocols/PolarBleApi.html#/s:11PolarBleSdk0aB3ApiP15searchForDevice7RxSwift10ObservableCySS8deviceId_10Foundation4UUIDV7addressSi4rssiSS4nameSb11connectabletGyF":{"name":"searchForDevice()","abstract":"

    Start searching for Polar device(s)

    ","parent_name":"PolarBleApi"},"Protocols/PolarBleApi.html#/s:11PolarBleSdk0aB3ApiP014startListenForA12HrBroadcastsy7RxSwift10ObservableCySS8deviceId_10Foundation4UUIDV7addressSi4rssiSS4nameSb11connectablet0M4Info_s5UInt8V2hrSb13batteryStatustGShySSGSgF":{"name":"startListenForPolarHrBroadcasts(_:)","abstract":"

    Start listening the heart rate from Polar devices when subscribed.","parent_name":"PolarBleApi"},"Protocols/PolarBleApi.html#/s:11PolarBleSdk0aB3ApiP14isFeatureReady_7featureSbSS_AA0abcF0OtF":{"name":"isFeatureReady(_:feature:)","abstract":"

    Check if the feature is ready.

    ","parent_name":"PolarBleApi"},"Protocols/PolarBleApi.html#/s:11PolarBleSdk0aB3ApiP12setLocalTime_4time4zone7RxSwift17PrimitiveSequenceVyAG16CompletableTraitOs5NeverOGSS_10Foundation4DateVAO0G4ZoneVtF":{"name":"setLocalTime(_:time:zone:)","abstract":"

    Set local time to device.

    ","parent_name":"PolarBleApi"},"Protocols/PolarBleApi.html#/s:11PolarBleSdk0aB3ApiP12getLocalTimey7RxSwift17PrimitiveSequenceVyAE11SingleTraitO10Foundation4DateVGSSF":{"name":"getLocalTime(_:)","abstract":"

    Get current time in device. Note, the H10 is not supporting time read.

    ","parent_name":"PolarBleApi"},"Protocols/PolarBleApi.html#/s:11PolarBleSdk0aB3ApiP8observerAA0abD8Observer_pSgvp":{"name":"observer","abstract":"

    Common GAP (Generic access profile) observer

    ","parent_name":"PolarBleApi"},"Protocols/PolarBleApi.html#/s:11PolarBleSdk0aB3ApiP18deviceInfoObserverAA0abd6DevicefG0_pSgvp":{"name":"deviceInfoObserver","abstract":"

    Device info observer for DIS (Device information service) and BAS (Battery service) GATT (Generic attributes) client

    ","parent_name":"PolarBleApi"},"Protocols/PolarBleApi.html#/s:11PolarBleSdk0aB3ApiP16deviceHrObserverAA0abd6DevicefG0_pSgvp":{"name":"deviceHrObserver","abstract":"

    Device observer for HR GATT client

    ","parent_name":"PolarBleApi"},"Protocols/PolarBleApi.html#/s:11PolarBleSdk0aB3ApiP18powerStateObserverAA0abd5PowerfG0_pSgvp":{"name":"powerStateObserver","abstract":"

    Bluetooth power state observer

    ","parent_name":"PolarBleApi"},"Protocols/PolarBleApi.html#/s:11PolarBleSdk0aB3ApiP22deviceFeaturesObserverAA0abd6DevicefG0_pSgvp":{"name":"deviceFeaturesObserver","abstract":"

    Device features ready observer

    ","parent_name":"PolarBleApi"},"Protocols/PolarBleApi.html#/s:11PolarBleSdk0aB3ApiP22sdkModeFeatureObserverAA0abdcfgH0_pSgvp":{"name":"sdkModeFeatureObserver","abstract":"

    SDK mode feature available in the device and ready observer

    ","parent_name":"PolarBleApi"},"Protocols/PolarBleApi.html#/s:11PolarBleSdk0aB3ApiP02isB7PoweredSbvp":{"name":"isBlePowered","abstract":"

    Helper to check if Ble is currently powered

    ","parent_name":"PolarBleApi"},"Protocols/PolarBleApi.html#/s:11PolarBleSdk0aB3ApiP6loggerAA0abD6Logger_pSgvp":{"name":"logger","abstract":"

    optional logger set to get traces from sdk

    ","parent_name":"PolarBleApi"},"Protocols/PolarBleApi.html#/s:11PolarBleSdk0aB3ApiP21automaticReconnectionSbvp":{"name":"automaticReconnection","abstract":"

    optional disable or enable automatic reconnection, by default it is enabled

    ","parent_name":"PolarBleApi"},"Protocols/PolarBleApi.html":{"name":"PolarBleApi","abstract":"

    API.

    "},"Protocols/PolarBleApiObserver.html":{"name":"PolarBleApiObserver","abstract":"

    Polar Ble API connection observer.

    "},"Protocols/PolarBleApiPowerStateObserver.html":{"name":"PolarBleApiPowerStateObserver","abstract":"

    Bluetooth state observer.

    "},"Protocols/PolarBleApiDeviceInfoObserver.html":{"name":"PolarBleApiDeviceInfoObserver","abstract":"

    Device info observer.

    "},"Protocols/PolarBleApiDeviceHrObserver.html":{"name":"PolarBleApiDeviceHrObserver","abstract":"

    Heart rate observer

    "},"Protocols/PolarBleApiDeviceFeaturesObserver.html":{"name":"PolarBleApiDeviceFeaturesObserver","abstract":"

    Data client observer

    "},"Protocols/PolarBleApiSdkModeFeatureObserver.html":{"name":"PolarBleApiSdkModeFeatureObserver","abstract":"

    SDK Mode observer

    "},"Protocols/PolarBleApiLogger.html":{"name":"PolarBleApiLogger","abstract":"

    logger observer

    "},"Protocols/PolarH10OfflineExerciseApi.html":{"name":"PolarH10OfflineExerciseApi","abstract":"

    H10 Exercise recording API.

    "},"Protocols/PolarOfflineRecordingApi.html":{"name":"PolarOfflineRecordingApi","abstract":"

    Offline recording API.

    "},"Protocols/PolarOnlineStreamingApi.html":{"name":"PolarOnlineStreamingApi","abstract":"

    Online steaming API.

    "},"Protocols/PolarSdkModeApi.html":{"name":"PolarSdkModeApi","abstract":"

    Polar SDK mode API

    "},"Extensions/PrimitiveSequence.html#/s:7RxSwift17PrimitiveSequenceV11PolarBleSdkAA11SingleTraitORszrlE13asCompletableACyAA0kI0Os5NeverOGyF":{"name":"asCompletable()","parent_name":"PrimitiveSequence"},"Extensions.html#/c:@M@PolarBleSdk@objc(cs)PolarBleApiImpl":{"name":"PolarBleApiImpl"},"Extensions/PrimitiveSequence.html":{"name":"PrimitiveSequence"},"Enums/PolarOfflineRecordingTriggerMode.html#/s:11PolarBleSdk0A27OfflineRecordingTriggerModeO15triggerDisabledyA2CmF":{"name":"triggerDisabled","parent_name":"PolarOfflineRecordingTriggerMode"},"Enums/PolarOfflineRecordingTriggerMode.html#/s:11PolarBleSdk0A27OfflineRecordingTriggerModeO18triggerSystemStartyA2CmF":{"name":"triggerSystemStart","parent_name":"PolarOfflineRecordingTriggerMode"},"Enums/PolarOfflineRecordingTriggerMode.html#/s:11PolarBleSdk0A27OfflineRecordingTriggerModeO20triggerExerciseStartyA2CmF":{"name":"triggerExerciseStart","parent_name":"PolarOfflineRecordingTriggerMode"},"Enums/PolarOfflineRecordingData.html#/s:11PolarBleSdk0A20OfflineRecordingDataO03accdeF0yACs6UInt64V9timeStamp_SayAfG_s5Int32V1xAI1yAI1ztG7samplest_10Foundation4DateVAA0A13SensorSettingVtcACmF":{"name":"accOfflineRecordingData(_:startTime:settings:)","parent_name":"PolarOfflineRecordingData"},"Enums/PolarOfflineRecordingData.html#/s:11PolarBleSdk0A20OfflineRecordingDataO04gyrodeF0yACs6UInt64V9timeStamp_SayAfG_Sf1xSf1ySf1ztG7samplest_10Foundation4DateVAA0A13SensorSettingVtcACmF":{"name":"gyroOfflineRecordingData(_:startTime:settings:)","parent_name":"PolarOfflineRecordingData"},"Enums/PolarOfflineRecordingData.html#/s:11PolarBleSdk0A20OfflineRecordingDataO03magdeF0yACs6UInt64V9timeStamp_SayAfG_Sf1xSf1ySf1ztG7samplest_10Foundation4DateVAA0A13SensorSettingVtcACmF":{"name":"magOfflineRecordingData(_:startTime:settings:)","parent_name":"PolarOfflineRecordingData"},"Enums/PolarOfflineRecordingData.html#/s:11PolarBleSdk0A20OfflineRecordingDataO03ppgdeF0yAcA03PpgF4TypeO4type_Says6UInt64V9timeStamp_Says5Int32VG14channelSamplestG7samplest_10Foundation4DateVAA0A13SensorSettingVtcACmF":{"name":"ppgOfflineRecordingData(_:startTime:settings:)","parent_name":"PolarOfflineRecordingData"},"Enums/PolarOfflineRecordingData.html#/s:11PolarBleSdk0A20OfflineRecordingDataO03ppideF0yACs6UInt64V9timeStamp_SaySi2hr_s6UInt16V6ppInMsAJ0M13ErrorEstimateSi10blockerBitSi17skinContactStatusSi0tU9SupportedtG7samplest_10Foundation4DateVtcACmF":{"name":"ppiOfflineRecordingData(_:startTime:)","parent_name":"PolarOfflineRecordingData"},"Enums/PolarOfflineRecordingData.html#/s:11PolarBleSdk0A20OfflineRecordingDataO02hrdeF0yACSays5UInt8V0G0_SaySiG5rrsMsSb11rrAvailableSb13contactStatusSb0mN9SupportedtG_10Foundation4DateVtcACmF":{"name":"hrOfflineRecordingData(_:startTime:)","parent_name":"PolarOfflineRecordingData"},"Enums/PolarErrors.html#/s:11PolarBleSdk0A6ErrorsO22notificationNotEnabledyA2CmF":{"name":"notificationNotEnabled","abstract":"

    GATT characteristic notification not enabled

    ","parent_name":"PolarErrors"},"Enums/PolarErrors.html#/s:11PolarBleSdk0A6ErrorsO15serviceNotFoundyA2CmF":{"name":"serviceNotFound","abstract":"

    GATT service not found

    ","parent_name":"PolarErrors"},"Enums/PolarErrors.html#/s:11PolarBleSdk0A6ErrorsO18deviceNotConnectedyA2CmF":{"name":"deviceNotConnected","abstract":"

    Device state != Connected

    ","parent_name":"PolarErrors"},"Enums/PolarErrors.html#/s:11PolarBleSdk0A6ErrorsO14deviceNotFoundyA2CmF":{"name":"deviceNotFound","abstract":"

    Device not found

    ","parent_name":"PolarErrors"},"Enums/PolarErrors.html#/s:11PolarBleSdk0A6ErrorsO21operationNotSupportedyA2CmF":{"name":"operationNotSupported","abstract":"

    Requested operation is not supported

    ","parent_name":"PolarErrors"},"Enums/PolarErrors.html#/s:11PolarBleSdk0A6ErrorsO19messageEncodeFailedyA2CmF":{"name":"messageEncodeFailed","abstract":"

    Google protocol buffers encode failed

    ","parent_name":"PolarErrors"},"Enums/PolarErrors.html#/s:11PolarBleSdk0A6ErrorsO19messageDecodeFailedyA2CmF":{"name":"messageDecodeFailed","abstract":"

    Google protocol buffers decode failed

    ","parent_name":"PolarErrors"},"Enums/PolarErrors.html#/s:11PolarBleSdk0A6ErrorsO20dateTimeFormatFailedyACSS_tcACmF":{"name":"dateTimeFormatFailed(description:)","abstract":"

    String to date time formatting failed

    ","parent_name":"PolarErrors"},"Enums/PolarErrors.html#/s:11PolarBleSdk0A6ErrorsO22unableToStartStreamingyA2CmF":{"name":"unableToStartStreaming","abstract":"

    Failed to start streaming

    ","parent_name":"PolarErrors"},"Enums/PolarErrors.html#/s:11PolarBleSdk0A6ErrorsO15invalidArgumentyACSS_tcACmF":{"name":"invalidArgument(description:)","abstract":"

    invalid argument

    ","parent_name":"PolarErrors"},"Enums/PolarErrors.html#/s:11PolarBleSdk0A6ErrorsO05polarbC17InternalExceptionyACSS_tcACmF":{"name":"polarBleSdkInternalException(description:)","abstract":"

    Polar BLE SDK internal exception indicating something went wrong in SDK internal logic

    ","parent_name":"PolarErrors"},"Enums/PolarErrors.html#/s:11PolarBleSdk0A6ErrorsO11deviceErroryACSS_tcACmF":{"name":"deviceError(description:)","abstract":"

    Error on device operation

    ","parent_name":"PolarErrors"},"Enums/PolarErrors.html#/s:11PolarBleSdk0A6ErrorsO26polarOfflineRecordingErroryACSS_tcACmF":{"name":"polarOfflineRecordingError(description:)","abstract":"

    Error related to offline recording

    ","parent_name":"PolarErrors"},"Enums/SampleType.html#/s:11PolarBleSdk10SampleTypeO2hryA2CmF":{"name":"hr","abstract":"

    recording type to use is hr in BPM

    ","parent_name":"SampleType"},"Enums/SampleType.html#/s:11PolarBleSdk10SampleTypeO2rryA2CmF":{"name":"rr","abstract":"

    recording type to use is rr interval

    ","parent_name":"SampleType"},"Enums/RecordingInterval.html#/s:11PolarBleSdk17RecordingIntervalO11interval_1syA2CmF":{"name":"interval_1s","parent_name":"RecordingInterval"},"Enums/RecordingInterval.html#/s:11PolarBleSdk17RecordingIntervalO11interval_5syA2CmF":{"name":"interval_5s","parent_name":"RecordingInterval"},"Enums/PpgDataType.html#/s:11PolarBleSdk11PpgDataTypeO13ppg3_ambient1yA2CmF":{"name":"ppg3_ambient1","abstract":"

    3 ppg + 1 ambient

    ","parent_name":"PpgDataType"},"Enums/PpgDataType.html#/s:11PolarBleSdk11PpgDataTypeO7unknownyA2CmF":{"name":"unknown","parent_name":"PpgDataType"},"Enums/OhrDataType.html#/s:11PolarBleSdk11OhrDataTypeO13ppg3_ambient1yA2CmF":{"name":"ppg3_ambient1","abstract":"

    3 ppg + 1 ambient

    ","parent_name":"OhrDataType"},"Enums/OhrDataType.html#/s:11PolarBleSdk11OhrDataTypeO7unknownyA2CmF":{"name":"unknown","parent_name":"OhrDataType"},"Enums/PolarBleSdkFeature.html#/s:11PolarBleSdk0abC7FeatureO10feature_hryA2CmF":{"name":"feature_hr","abstract":"

    Hr feature to receive hr and rr data from Polar or any other BLE device via standard HR BLE service

    ","parent_name":"PolarBleSdkFeature"},"Enums/PolarBleSdkFeature.html#/s:11PolarBleSdk0abC7FeatureO19feature_device_infoyA2CmF":{"name":"feature_device_info","abstract":"

    Device information feature to receive sw information from Polar or any other BLE device

    ","parent_name":"PolarBleSdkFeature"},"Enums/PolarBleSdkFeature.html#/s:11PolarBleSdk0abC7FeatureO20feature_battery_infoyA2CmF":{"name":"feature_battery_info","abstract":"

    Feature to receive battery level info from Polar or any other BLE device

    ","parent_name":"PolarBleSdkFeature"},"Enums/PolarBleSdkFeature.html#/s:11PolarBleSdk0abC7FeatureO30feature_polar_online_streamingyA2CmF":{"name":"feature_polar_online_streaming","abstract":"

    Polar sensor streaming feature to stream live online data. For example hr, ecg, acc, ppg, ppi, etc…

    ","parent_name":"PolarBleSdkFeature"},"Enums/PolarBleSdkFeature.html#/s:11PolarBleSdk0abC7FeatureO31feature_polar_offline_recordingyA2CmF":{"name":"feature_polar_offline_recording","abstract":"

    Polar offline recording feature to record offline data to Polar device without continuous BLE connection.

    ","parent_name":"PolarBleSdkFeature"},"Enums/PolarBleSdkFeature.html#/s:11PolarBleSdk0abC7FeatureO36feature_polar_h10_exercise_recordingyA2CmF":{"name":"feature_polar_h10_exercise_recording","abstract":"

    H10 exercise recording feature to record exercise data to Polar H10 device without continuous BLE connection.

    ","parent_name":"PolarBleSdkFeature"},"Enums/PolarBleSdkFeature.html#/s:11PolarBleSdk0abC7FeatureO31feature_polar_device_time_setupyA2CmF":{"name":"feature_polar_device_time_setup","abstract":"

    Feature to read and set device time in Polar device

    ","parent_name":"PolarBleSdkFeature"},"Enums/PolarBleSdkFeature.html#/s:11PolarBleSdk0abC7FeatureO22feature_polar_sdk_modeyA2CmF":{"name":"feature_polar_sdk_mode","abstract":"

    In SDK mode the wider range of capabilities are available for the online stream or offline recoding than in normal operation mode.

    ","parent_name":"PolarBleSdkFeature"},"Enums/PolarDeviceDataType.html#/s:11PolarBleSdk0A14DeviceDataTypeO3ecgyA2CmF":{"name":"ecg","parent_name":"PolarDeviceDataType"},"Enums/PolarDeviceDataType.html#/s:11PolarBleSdk0A14DeviceDataTypeO3accyA2CmF":{"name":"acc","parent_name":"PolarDeviceDataType"},"Enums/PolarDeviceDataType.html#/s:11PolarBleSdk0A14DeviceDataTypeO3ppgyA2CmF":{"name":"ppg","parent_name":"PolarDeviceDataType"},"Enums/PolarDeviceDataType.html#/s:11PolarBleSdk0A14DeviceDataTypeO3ppiyA2CmF":{"name":"ppi","parent_name":"PolarDeviceDataType"},"Enums/PolarDeviceDataType.html#/s:11PolarBleSdk0A14DeviceDataTypeO4gyroyA2CmF":{"name":"gyro","parent_name":"PolarDeviceDataType"},"Enums/PolarDeviceDataType.html#/s:11PolarBleSdk0A14DeviceDataTypeO12magnetometeryA2CmF":{"name":"magnetometer","parent_name":"PolarDeviceDataType"},"Enums/PolarDeviceDataType.html#/s:11PolarBleSdk0A14DeviceDataTypeO2hryA2CmF":{"name":"hr","parent_name":"PolarDeviceDataType"},"Enums/PolarDeviceDataType.html":{"name":"PolarDeviceDataType","abstract":"

    Data types available in Polar devices for online streaming or offline recording.

    "},"Enums/PolarBleSdkFeature.html":{"name":"PolarBleSdkFeature","abstract":"

    Features available in Polar BLE SDK library

    "},"Enums/OhrDataType.html":{"name":"OhrDataType","abstract":"

    OHR data source enum

    "},"Enums/PpgDataType.html":{"name":"PpgDataType","abstract":"

    PPG data source enum

    "},"Enums/RecordingInterval.html":{"name":"RecordingInterval","abstract":"

    Recoding intervals for H10 recording start

    "},"Enums/SampleType.html":{"name":"SampleType","abstract":"

    Sample types for H10 recording start

    "},"Enums/PolarErrors.html":{"name":"PolarErrors","abstract":"

    Polar SDK errors

    "},"Enums/PolarOfflineRecordingData.html":{"name":"PolarOfflineRecordingData"},"Enums/PolarOfflineRecordingTriggerMode.html":{"name":"PolarOfflineRecordingTriggerMode","abstract":"

    Polar offline recording trigger mode. Offline recording trigger can be used to start the offline recording automatically in device, based on selected trigger mode.

    "},"Classes/PolarBleApiDefaultImpl.html#/s:11PolarBleSdk0aB14ApiDefaultImplC19polarImplementation_8featuresAA0abD0_pSo17OS_dispatch_queueC_ShyAA0abC7FeatureOGtFZ":{"name":"polarImplementation(_:features:)","abstract":"

    New instance of Polar Ble API implementation

    ","parent_name":"PolarBleApiDefaultImpl"},"Classes/PolarBleApiDefaultImpl.html#/s:11PolarBleSdk0aB14ApiDefaultImplC11versionInfoSSyFZ":{"name":"versionInfo()","abstract":"

    Return current version

    ","parent_name":"PolarBleApiDefaultImpl"},"Classes/PolarBleApiDefaultImpl.html":{"name":"PolarBleApiDefaultImpl","abstract":"

    Class to provide the default implementation of the Polar Ble API

    "},"Classes.html":{"name":"Classes","abstract":"

    The following classes are available globally.

    "},"Enums.html":{"name":"Enumerations","abstract":"

    The following enumerations are available globally.

    "},"Extensions.html":{"name":"Extensions","abstract":"

    The following extensions are available globally.

    "},"Protocols.html":{"name":"Protocols","abstract":"

    The following protocols are available globally.

    "},"Structs.html":{"name":"Structures","abstract":"

    The following structures are available globally.

    "},"Typealiases.html":{"name":"Type Aliases","abstract":"

    The following type aliases are available globally.

    "}} \ No newline at end of file diff --git a/polar-sdk-ios/docs/undocumented.json b/polar-sdk-ios/docs/undocumented.json index 442cf0d5..a596ff97 100644 --- a/polar-sdk-ios/docs/undocumented.json +++ b/polar-sdk-ios/docs/undocumented.json @@ -2,5 +2,5 @@ "warnings": [ ], - "source_directory": "/Users/joikarin/Projects/polar-ble-sdk/sources/iOS/ios-communications" + "source_directory": "/Users/samulimaatta/repos/polarofficial/polar-ble-sdk/sources/iOS/ios-communications" } \ No newline at end of file diff --git a/sources/Android/android-communications/library/src/sdk/java/com/polar/sdk/api/PolarBleApiDefaultImpl.kt b/sources/Android/android-communications/library/src/sdk/java/com/polar/sdk/api/PolarBleApiDefaultImpl.kt index 9bfa17c8..d4d5f502 100644 --- a/sources/Android/android-communications/library/src/sdk/java/com/polar/sdk/api/PolarBleApiDefaultImpl.kt +++ b/sources/Android/android-communications/library/src/sdk/java/com/polar/sdk/api/PolarBleApiDefaultImpl.kt @@ -25,6 +25,6 @@ object PolarBleApiDefaultImpl { */ @JvmStatic fun versionInfo(): String { - return "5.0.1" + return "5.0.2" } } \ No newline at end of file diff --git a/sources/iOS/ios-communications/Podfile.lock b/sources/iOS/ios-communications/Podfile.lock index 206bd5f9..15cd2c58 100644 --- a/sources/iOS/ios-communications/Podfile.lock +++ b/sources/iOS/ios-communications/Podfile.lock @@ -27,4 +27,4 @@ SPEC CHECKSUMS: PODFILE CHECKSUM: 0774f22ce4d7eca1829c3367ca5f19715014d107 -COCOAPODS: 1.11.3 +COCOAPODS: 1.12.0 diff --git a/sources/iOS/ios-communications/Sources/PolarBleSdk/sdk/api/PolarBleApiDefaultImpl.swift b/sources/iOS/ios-communications/Sources/PolarBleSdk/sdk/api/PolarBleApiDefaultImpl.swift index d3ea85e7..d76011a3 100644 --- a/sources/iOS/ios-communications/Sources/PolarBleSdk/sdk/api/PolarBleApiDefaultImpl.swift +++ b/sources/iOS/ios-communications/Sources/PolarBleSdk/sdk/api/PolarBleApiDefaultImpl.swift @@ -18,6 +18,6 @@ public class PolarBleApiDefaultImpl { /// /// - Returns: version in format major.minor.patch public static func versionInfo() -> String { - return "5.0.1" + return "5.0.2" } } diff --git a/sources/iOS/ios-communications/Sources/PolarBleSdk/sdk/impl/PolarBleApiImpl.swift b/sources/iOS/ios-communications/Sources/PolarBleSdk/sdk/impl/PolarBleApiImpl.swift index f67b74c4..64bff56d 100644 --- a/sources/iOS/ios-communications/Sources/PolarBleSdk/sdk/impl/PolarBleApiImpl.swift +++ b/sources/iOS/ios-communications/Sources/PolarBleSdk/sdk/impl/PolarBleApiImpl.swift @@ -1080,6 +1080,7 @@ extension PolarBleApiImpl: PolarBleApi { .map { (entry) -> PolarOfflineRecordingEntry in let components = entry.name.split(separator: "/") let dateFormatter = DateFormatter() + dateFormatter.locale = Locale(identifier: "en_US_POSIX") dateFormatter.dateFormat = "yyyyMMddHHmmss" guard let date = dateFormatter.date(from: String(components[2] + components[4])) else { @@ -1508,6 +1509,7 @@ extension PolarBleApiImpl: PolarBleApi { .map { (entry) -> (path: String, date: Date, entryId: String) in let components = entry.name.split(separator: "/") let dateFormatter = DateFormatter() + dateFormatter.locale = Locale(identifier: "en_US_POSIX") dateFormatter.dateFormat = "yyyyMMddHHmmss" if let date = dateFormatter.date(from: String(components[2] + components[4])) { return (entry.name, date: date, entryId: String(components[2] + components[4]))