@garmin/fitsdk 21.126.0 → 21.141.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/src/profile.js CHANGED
@@ -1,19 +1,19 @@
1
1
  /////////////////////////////////////////////////////////////////////////////////////////////
2
- // Copyright 2023 Garmin International, Inc.
2
+ // Copyright 2024 Garmin International, Inc.
3
3
  // Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you
4
4
  // may not use this file except in compliance with the Flexible and Interoperable Data
5
5
  // Transfer (FIT) Protocol License.
6
6
  /////////////////////////////////////////////////////////////////////////////////////////////
7
7
  // ****WARNING**** This file is auto-generated! Do NOT edit this file.
8
- // Profile Version = 21.126.0Release
9
- // Tag = production/release/21.126.0-0-g0576dfe
8
+ // Profile Version = 21.141.0Release
9
+ // Tag = production/release/21.141.0-0-g2aa27e1
10
10
  /////////////////////////////////////////////////////////////////////////////////////////////
11
11
 
12
12
 
13
13
  const Profile = {
14
14
  version: {
15
15
  major: 21,
16
- minor: 126,
16
+ minor: 141,
17
17
  patch: 0,
18
18
  type: "Release"
19
19
  },
@@ -6485,6 +6485,34 @@ const Profile = {
6485
6485
  hasComponents: false,
6486
6486
  subFields: []
6487
6487
  },
6488
+ 192: {
6489
+ num: 192, // A 0-100 scale representing how a user felt while performing a workout. Low values are considered feeling bad, while high values are good.
6490
+ name: "workoutFeel",
6491
+ type: "uint8",
6492
+ array: "false",
6493
+ scale: 1,
6494
+ offset: 0,
6495
+ units: "",
6496
+ bits: [],
6497
+ components: [],
6498
+ isAccumulated: false,
6499
+ hasComponents: false,
6500
+ subFields: []
6501
+ },
6502
+ 193: {
6503
+ num: 193, // Common Borg CR10 / 0-10 RPE scale, multiplied 10x.. Aggregate score for all workouts in a single session.
6504
+ name: "workoutRpe",
6505
+ type: "uint8",
6506
+ array: "false",
6507
+ scale: 1,
6508
+ offset: 0,
6509
+ units: "",
6510
+ bits: [],
6511
+ components: [],
6512
+ isAccumulated: false,
6513
+ hasComponents: false,
6514
+ subFields: []
6515
+ },
6488
6516
  194: {
6489
6517
  num: 194, // Average SPO2 for the monitoring session
6490
6518
  name: "avgSpo2",
@@ -18835,19 +18863,19 @@ const Profile = {
18835
18863
  },
18836
18864
  },
18837
18865
  },
18838
- 145: {
18839
- num: 145,
18840
- name: "memoGlob",
18841
- messagesKey: "memoGlobMesgs",
18866
+ 314: {
18867
+ num: 314, // Body battery data used for HSA custom data logging
18868
+ name: "hsaBodyBatteryData",
18869
+ messagesKey: "hsaBodyBatteryDataMesgs",
18842
18870
  fields: {
18843
- 250: {
18844
- num: 250, // Sequence number of memo blocks
18845
- name: "partIndex",
18846
- type: "uint32",
18871
+ 253: {
18872
+ num: 253,
18873
+ name: "timestamp",
18874
+ type: "dateTime",
18847
18875
  array: "false",
18848
18876
  scale: 1,
18849
18877
  offset: 0,
18850
- units: "",
18878
+ units: "s",
18851
18879
  bits: [],
18852
18880
  components: [],
18853
18881
  isAccumulated: false,
@@ -18855,13 +18883,13 @@ const Profile = {
18855
18883
  subFields: []
18856
18884
  },
18857
18885
  0: {
18858
- num: 0, // Deprecated. Use data field.
18859
- name: "memo",
18860
- type: "byte",
18861
- array: "true",
18886
+ num: 0, // Processing interval length in seconds
18887
+ name: "processingInterval",
18888
+ type: "uint16",
18889
+ array: "false",
18862
18890
  scale: 1,
18863
18891
  offset: 0,
18864
- units: "",
18892
+ units: "s",
18865
18893
  bits: [],
18866
18894
  components: [],
18867
18895
  isAccumulated: false,
@@ -18869,13 +18897,13 @@ const Profile = {
18869
18897
  subFields: []
18870
18898
  },
18871
18899
  1: {
18872
- num: 1, // Message Number of the parent message
18873
- name: "mesgNum",
18874
- type: "mesgNum",
18875
- array: "false",
18900
+ num: 1, // Body battery level
18901
+ name: "level",
18902
+ type: "sint8",
18903
+ array: "true",
18876
18904
  scale: 1,
18877
18905
  offset: 0,
18878
- units: "",
18906
+ units: "percent",
18879
18907
  bits: [],
18880
18908
  components: [],
18881
18909
  isAccumulated: false,
@@ -18883,10 +18911,10 @@ const Profile = {
18883
18911
  subFields: []
18884
18912
  },
18885
18913
  2: {
18886
- num: 2, // Index of mesg that this glob is associated with.
18887
- name: "parentIndex",
18888
- type: "messageIndex",
18889
- array: "false",
18914
+ num: 2, // Body battery charged value
18915
+ name: "charged",
18916
+ type: "sint16",
18917
+ array: "true",
18890
18918
  scale: 1,
18891
18919
  offset: 0,
18892
18920
  units: "",
@@ -18897,23 +18925,9 @@ const Profile = {
18897
18925
  subFields: []
18898
18926
  },
18899
18927
  3: {
18900
- num: 3, // Field within the parent that this glob is associated with
18901
- name: "fieldNum",
18902
- type: "uint8",
18903
- array: "false",
18904
- scale: 1,
18905
- offset: 0,
18906
- units: "",
18907
- bits: [],
18908
- components: [],
18909
- isAccumulated: false,
18910
- hasComponents: false,
18911
- subFields: []
18912
- },
18913
- 4: {
18914
- num: 4, // Block of utf8 bytes. Note, mutltibyte characters may be split across adjoining memo_glob messages.
18915
- name: "data",
18916
- type: "uint8z",
18928
+ num: 3, // Body battery uncharged value
18929
+ name: "uncharged",
18930
+ type: "sint16",
18917
18931
  array: "true",
18918
18932
  scale: 1,
18919
18933
  offset: 0,
@@ -18926,10 +18940,10 @@ const Profile = {
18926
18940
  },
18927
18941
  },
18928
18942
  },
18929
- 275: {
18930
- num: 275,
18931
- name: "sleepLevel",
18932
- messagesKey: "sleepLevelMesgs",
18943
+ 315: {
18944
+ num: 315, // HSA events
18945
+ name: "hsaEvent",
18946
+ messagesKey: "hsaEventMesgs",
18933
18947
  fields: {
18934
18948
  253: {
18935
18949
  num: 253,
@@ -18946,9 +18960,9 @@ const Profile = {
18946
18960
  subFields: []
18947
18961
  },
18948
18962
  0: {
18949
- num: 0,
18950
- name: "sleepLevel",
18951
- type: "sleepLevel",
18963
+ num: 0, // Event ID
18964
+ name: "eventId",
18965
+ type: "uint8",
18952
18966
  array: "false",
18953
18967
  scale: 1,
18954
18968
  offset: 0,
@@ -18961,19 +18975,33 @@ const Profile = {
18961
18975
  },
18962
18976
  },
18963
18977
  },
18964
- 82: {
18965
- num: 82,
18966
- name: "antChannelId",
18967
- messagesKey: "antChannelIdMesgs",
18978
+ 302: {
18979
+ num: 302, // Raw accelerometer data used for HSA custom data logging
18980
+ name: "hsaAccelerometerData",
18981
+ messagesKey: "hsaAccelerometerDataMesgs",
18968
18982
  fields: {
18983
+ 253: {
18984
+ num: 253,
18985
+ name: "timestamp",
18986
+ type: "dateTime",
18987
+ array: "false",
18988
+ scale: 1,
18989
+ offset: 0,
18990
+ units: "s",
18991
+ bits: [],
18992
+ components: [],
18993
+ isAccumulated: false,
18994
+ hasComponents: false,
18995
+ subFields: []
18996
+ },
18969
18997
  0: {
18970
- num: 0,
18971
- name: "channelNumber",
18972
- type: "uint8",
18998
+ num: 0, // Millisecond resolution of the timestamp
18999
+ name: "timestampMs",
19000
+ type: "uint16",
18973
19001
  array: "false",
18974
19002
  scale: 1,
18975
19003
  offset: 0,
18976
- units: "",
19004
+ units: "ms",
18977
19005
  bits: [],
18978
19006
  components: [],
18979
19007
  isAccumulated: false,
@@ -18981,13 +19009,13 @@ const Profile = {
18981
19009
  subFields: []
18982
19010
  },
18983
19011
  1: {
18984
- num: 1,
18985
- name: "deviceType",
18986
- type: "uint8z",
19012
+ num: 1, // Sampling Interval in Milliseconds
19013
+ name: "samplingInterval",
19014
+ type: "uint16",
18987
19015
  array: "false",
18988
19016
  scale: 1,
18989
19017
  offset: 0,
18990
- units: "",
19018
+ units: "ms",
18991
19019
  bits: [],
18992
19020
  components: [],
18993
19021
  isAccumulated: false,
@@ -18995,13 +19023,13 @@ const Profile = {
18995
19023
  subFields: []
18996
19024
  },
18997
19025
  2: {
18998
- num: 2,
18999
- name: "deviceNumber",
19000
- type: "uint16z",
19001
- array: "false",
19002
- scale: 1,
19026
+ num: 2, // X-Axis Measurement
19027
+ name: "accelX",
19028
+ type: "sint16",
19029
+ array: "true",
19030
+ scale: 1.024,
19003
19031
  offset: 0,
19004
- units: "",
19032
+ units: "mG",
19005
19033
  bits: [],
19006
19034
  components: [],
19007
19035
  isAccumulated: false,
@@ -19009,13 +19037,13 @@ const Profile = {
19009
19037
  subFields: []
19010
19038
  },
19011
19039
  3: {
19012
- num: 3,
19013
- name: "transmissionType",
19014
- type: "uint8z",
19015
- array: "false",
19016
- scale: 1,
19040
+ num: 3, // Y-Axis Measurement
19041
+ name: "accelY",
19042
+ type: "sint16",
19043
+ array: "true",
19044
+ scale: 1.024,
19017
19045
  offset: 0,
19018
- units: "",
19046
+ units: "mG",
19019
19047
  bits: [],
19020
19048
  components: [],
19021
19049
  isAccumulated: false,
@@ -19023,9 +19051,23 @@ const Profile = {
19023
19051
  subFields: []
19024
19052
  },
19025
19053
  4: {
19026
- num: 4,
19027
- name: "deviceIndex",
19028
- type: "deviceIndex",
19054
+ num: 4, // Z-Axis Measurement
19055
+ name: "accelZ",
19056
+ type: "sint16",
19057
+ array: "true",
19058
+ scale: 1.024,
19059
+ offset: 0,
19060
+ units: "mG",
19061
+ bits: [],
19062
+ components: [],
19063
+ isAccumulated: false,
19064
+ hasComponents: false,
19065
+ subFields: []
19066
+ },
19067
+ 5: {
19068
+ num: 5, // 32 kHz timestamp
19069
+ name: "timestamp32k",
19070
+ type: "uint32",
19029
19071
  array: "false",
19030
19072
  scale: 1,
19031
19073
  offset: 0,
@@ -19038,10 +19080,10 @@ const Profile = {
19038
19080
  },
19039
19081
  },
19040
19082
  },
19041
- 80: {
19042
- num: 80,
19043
- name: "antRx",
19044
- messagesKey: "antRxMesgs",
19083
+ 376: {
19084
+ num: 376,
19085
+ name: "hsaGyroscopeData",
19086
+ messagesKey: "hsaGyroscopeDataMesgs",
19045
19087
  fields: {
19046
19088
  253: {
19047
19089
  num: 253,
@@ -19058,13 +19100,13 @@ const Profile = {
19058
19100
  subFields: []
19059
19101
  },
19060
19102
  0: {
19061
- num: 0,
19062
- name: "fractionalTimestamp",
19103
+ num: 0, // Millisecond resolution of the timestamp
19104
+ name: "timestampMs",
19063
19105
  type: "uint16",
19064
19106
  array: "false",
19065
- scale: 32768,
19107
+ scale: 1,
19066
19108
  offset: 0,
19067
- units: "s",
19109
+ units: "ms",
19068
19110
  bits: [],
19069
19111
  components: [],
19070
19112
  isAccumulated: false,
@@ -19072,13 +19114,13 @@ const Profile = {
19072
19114
  subFields: []
19073
19115
  },
19074
19116
  1: {
19075
- num: 1,
19076
- name: "mesgId",
19077
- type: "byte",
19117
+ num: 1, // Sampling Interval in 32 kHz timescale
19118
+ name: "samplingInterval",
19119
+ type: "uint16",
19078
19120
  array: "false",
19079
19121
  scale: 1,
19080
19122
  offset: 0,
19081
- units: "",
19123
+ units: "1/32768 s",
19082
19124
  bits: [],
19083
19125
  components: [],
19084
19126
  isAccumulated: false,
@@ -19086,27 +19128,27 @@ const Profile = {
19086
19128
  subFields: []
19087
19129
  },
19088
19130
  2: {
19089
- num: 2,
19090
- name: "mesgData",
19091
- type: "byte",
19131
+ num: 2, // X-Axis Measurement
19132
+ name: "gyroX",
19133
+ type: "sint16",
19092
19134
  array: "true",
19093
- scale: [1, 1, 1, 1, 1, 1, 1, 1, 1, ],
19094
- offset: [0, 0, 0, 0, 0, 0, 0, 0, 0, ],
19095
- units: ["", "", "", "", "", "", "", "", "", ],
19096
- bits: [8,8,8,8,8,8,8,8,8,],
19097
- components: ["3", "4", "4", "4", "4", "4", "4", "4", "4", ],
19135
+ scale: 28.57143,
19136
+ offset: 0,
19137
+ units: "deg/s",
19138
+ bits: [],
19139
+ components: [],
19098
19140
  isAccumulated: false,
19099
- hasComponents: true,
19141
+ hasComponents: false,
19100
19142
  subFields: []
19101
19143
  },
19102
19144
  3: {
19103
- num: 3,
19104
- name: "channelNumber",
19105
- type: "uint8",
19106
- array: "false",
19107
- scale: 1,
19145
+ num: 3, // Y-Axis Measurement
19146
+ name: "gyroY",
19147
+ type: "sint16",
19148
+ array: "true",
19149
+ scale: 28.57143,
19108
19150
  offset: 0,
19109
- units: "",
19151
+ units: "deg/s",
19110
19152
  bits: [],
19111
19153
  components: [],
19112
19154
  isAccumulated: false,
@@ -19114,13 +19156,27 @@ const Profile = {
19114
19156
  subFields: []
19115
19157
  },
19116
19158
  4: {
19117
- num: 4,
19118
- name: "data",
19119
- type: "byte",
19159
+ num: 4, // Z-Axis Measurement
19160
+ name: "gyroZ",
19161
+ type: "sint16",
19120
19162
  array: "true",
19163
+ scale: 28.57143,
19164
+ offset: 0,
19165
+ units: "deg/s",
19166
+ bits: [],
19167
+ components: [],
19168
+ isAccumulated: false,
19169
+ hasComponents: false,
19170
+ subFields: []
19171
+ },
19172
+ 5: {
19173
+ num: 5, // 32 kHz timestamp
19174
+ name: "timestamp32k",
19175
+ type: "uint32",
19176
+ array: "false",
19121
19177
  scale: 1,
19122
19178
  offset: 0,
19123
- units: "",
19179
+ units: "1/32768 s",
19124
19180
  bits: [],
19125
19181
  components: [],
19126
19182
  isAccumulated: false,
@@ -19129,10 +19185,10 @@ const Profile = {
19129
19185
  },
19130
19186
  },
19131
19187
  },
19132
- 81: {
19133
- num: 81,
19134
- name: "antTx",
19135
- messagesKey: "antTxMesgs",
19188
+ 304: {
19189
+ num: 304, // User's current daily step data used for HSA custom data logging
19190
+ name: "hsaStepData",
19191
+ messagesKey: "hsaStepDataMesgs",
19136
19192
  fields: {
19137
19193
  253: {
19138
19194
  num: 253,
@@ -19149,11 +19205,11 @@ const Profile = {
19149
19205
  subFields: []
19150
19206
  },
19151
19207
  0: {
19152
- num: 0,
19153
- name: "fractionalTimestamp",
19208
+ num: 0, // Processing interval length in seconds
19209
+ name: "processingInterval",
19154
19210
  type: "uint16",
19155
19211
  array: "false",
19156
- scale: 32768,
19212
+ scale: 1,
19157
19213
  offset: 0,
19158
19214
  units: "s",
19159
19215
  bits: [],
@@ -19163,76 +19219,48 @@ const Profile = {
19163
19219
  subFields: []
19164
19220
  },
19165
19221
  1: {
19166
- num: 1,
19167
- name: "mesgId",
19168
- type: "byte",
19169
- array: "false",
19222
+ num: 1, // Total step sum
19223
+ name: "steps",
19224
+ type: "uint32",
19225
+ array: "true",
19170
19226
  scale: 1,
19171
19227
  offset: 0,
19172
- units: "",
19228
+ units: "steps",
19173
19229
  bits: [],
19174
19230
  components: [],
19175
19231
  isAccumulated: false,
19176
19232
  hasComponents: false,
19177
19233
  subFields: []
19178
19234
  },
19179
- 2: {
19180
- num: 2,
19181
- name: "mesgData",
19182
- type: "byte",
19183
- array: "true",
19184
- scale: [1, 1, 1, 1, 1, 1, 1, 1, 1, ],
19185
- offset: [0, 0, 0, 0, 0, 0, 0, 0, 0, ],
19186
- units: ["", "", "", "", "", "", "", "", "", ],
19187
- bits: [8,8,8,8,8,8,8,8,8,],
19188
- components: ["3", "4", "4", "4", "4", "4", "4", "4", "4", ],
19189
- isAccumulated: false,
19190
- hasComponents: true,
19191
- subFields: []
19192
- },
19193
- 3: {
19194
- num: 3,
19195
- name: "channelNumber",
19196
- type: "uint8",
19235
+ },
19236
+ },
19237
+ 305: {
19238
+ num: 305, // User's current SpO2 data used for HSA custom data logging
19239
+ name: "hsaSpo2Data",
19240
+ messagesKey: "hsaSpo2DataMesgs",
19241
+ fields: {
19242
+ 253: {
19243
+ num: 253,
19244
+ name: "timestamp",
19245
+ type: "dateTime",
19197
19246
  array: "false",
19198
19247
  scale: 1,
19199
19248
  offset: 0,
19200
- units: "",
19249
+ units: "s",
19201
19250
  bits: [],
19202
19251
  components: [],
19203
19252
  isAccumulated: false,
19204
19253
  hasComponents: false,
19205
19254
  subFields: []
19206
19255
  },
19207
- 4: {
19208
- num: 4,
19209
- name: "data",
19210
- type: "byte",
19211
- array: "true",
19212
- scale: 1,
19213
- offset: 0,
19214
- units: "",
19215
- bits: [],
19216
- components: [],
19217
- isAccumulated: false,
19218
- hasComponents: false,
19219
- subFields: []
19220
- },
19221
- },
19222
- },
19223
- 200: {
19224
- num: 200,
19225
- name: "exdScreenConfiguration",
19226
- messagesKey: "exdScreenConfigurationMesgs",
19227
- fields: {
19228
19256
  0: {
19229
- num: 0,
19230
- name: "screenIndex",
19231
- type: "uint8",
19257
+ num: 0, // Processing interval length in seconds
19258
+ name: "processingInterval",
19259
+ type: "uint16",
19232
19260
  array: "false",
19233
19261
  scale: 1,
19234
19262
  offset: 0,
19235
- units: "",
19263
+ units: "s",
19236
19264
  bits: [],
19237
19265
  components: [],
19238
19266
  isAccumulated: false,
@@ -19240,13 +19268,13 @@ const Profile = {
19240
19268
  subFields: []
19241
19269
  },
19242
19270
  1: {
19243
- num: 1, // number of fields in screen
19244
- name: "fieldCount",
19271
+ num: 1, // SpO2 Reading
19272
+ name: "readingSpo2",
19245
19273
  type: "uint8",
19246
- array: "false",
19274
+ array: "true",
19247
19275
  scale: 1,
19248
19276
  offset: 0,
19249
- units: "",
19277
+ units: "percent",
19250
19278
  bits: [],
19251
19279
  components: [],
19252
19280
  isAccumulated: false,
@@ -19254,10 +19282,10 @@ const Profile = {
19254
19282
  subFields: []
19255
19283
  },
19256
19284
  2: {
19257
- num: 2,
19258
- name: "layout",
19259
- type: "exdLayout",
19260
- array: "false",
19285
+ num: 2, // SpO2 Confidence
19286
+ name: "confidence",
19287
+ type: "uint8",
19288
+ array: "true",
19261
19289
  scale: 1,
19262
19290
  offset: 0,
19263
19291
  units: "",
@@ -19267,10 +19295,17 @@ const Profile = {
19267
19295
  hasComponents: false,
19268
19296
  subFields: []
19269
19297
  },
19270
- 3: {
19271
- num: 3,
19272
- name: "screenEnabled",
19273
- type: "bool",
19298
+ },
19299
+ },
19300
+ 306: {
19301
+ num: 306, // User's current stress data used for HSA custom data logging
19302
+ name: "hsaStressData",
19303
+ messagesKey: "hsaStressDataMesgs",
19304
+ fields: {
19305
+ 253: {
19306
+ num: 253,
19307
+ name: "timestamp",
19308
+ type: "dateTime",
19274
19309
  array: "false",
19275
19310
  scale: 1,
19276
19311
  offset: 0,
@@ -19281,21 +19316,14 @@ const Profile = {
19281
19316
  hasComponents: false,
19282
19317
  subFields: []
19283
19318
  },
19284
- },
19285
- },
19286
- 201: {
19287
- num: 201,
19288
- name: "exdDataFieldConfiguration",
19289
- messagesKey: "exdDataFieldConfigurationMesgs",
19290
- fields: {
19291
19319
  0: {
19292
- num: 0,
19293
- name: "screenIndex",
19294
- type: "uint8",
19320
+ num: 0, // Processing interval length in seconds
19321
+ name: "processingInterval",
19322
+ type: "uint16",
19295
19323
  array: "false",
19296
19324
  scale: 1,
19297
19325
  offset: 0,
19298
- units: "",
19326
+ units: "s",
19299
19327
  bits: [],
19300
19328
  components: [],
19301
19329
  isAccumulated: false,
@@ -19303,69 +19331,62 @@ const Profile = {
19303
19331
  subFields: []
19304
19332
  },
19305
19333
  1: {
19306
- num: 1,
19307
- name: "conceptField",
19308
- type: "byte",
19309
- array: "false",
19310
- scale: [1, 1, ],
19311
- offset: [0, 0, ],
19312
- units: ["", "", ],
19313
- bits: [4,4,],
19314
- components: ["2", "3", ],
19315
- isAccumulated: false,
19316
- hasComponents: true,
19317
- subFields: []
19318
- },
19319
- 2: {
19320
- num: 2,
19321
- name: "fieldId",
19322
- type: "uint8",
19323
- array: "false",
19334
+ num: 1, // Stress Level ( 0 - 100 ) -300 indicates invalid -200 indicates large motion -100 indicates off wrist
19335
+ name: "stressLevel",
19336
+ type: "sint8",
19337
+ array: "true",
19324
19338
  scale: 1,
19325
19339
  offset: 0,
19326
- units: "",
19340
+ units: "s",
19327
19341
  bits: [],
19328
19342
  components: [],
19329
19343
  isAccumulated: false,
19330
19344
  hasComponents: false,
19331
19345
  subFields: []
19332
19346
  },
19333
- 3: {
19334
- num: 3,
19335
- name: "conceptCount",
19336
- type: "uint8",
19347
+ },
19348
+ },
19349
+ 307: {
19350
+ num: 307, // User's current respiration data used for HSA custom data logging
19351
+ name: "hsaRespirationData",
19352
+ messagesKey: "hsaRespirationDataMesgs",
19353
+ fields: {
19354
+ 253: {
19355
+ num: 253,
19356
+ name: "timestamp",
19357
+ type: "dateTime",
19337
19358
  array: "false",
19338
19359
  scale: 1,
19339
19360
  offset: 0,
19340
- units: "",
19361
+ units: "s",
19341
19362
  bits: [],
19342
19363
  components: [],
19343
19364
  isAccumulated: false,
19344
19365
  hasComponents: false,
19345
19366
  subFields: []
19346
19367
  },
19347
- 4: {
19348
- num: 4,
19349
- name: "displayType",
19350
- type: "exdDisplayType",
19368
+ 0: {
19369
+ num: 0, // Processing interval length in seconds
19370
+ name: "processingInterval",
19371
+ type: "uint16",
19351
19372
  array: "false",
19352
19373
  scale: 1,
19353
19374
  offset: 0,
19354
- units: "",
19375
+ units: "s",
19355
19376
  bits: [],
19356
19377
  components: [],
19357
19378
  isAccumulated: false,
19358
19379
  hasComponents: false,
19359
19380
  subFields: []
19360
19381
  },
19361
- 5: {
19362
- num: 5,
19363
- name: "title",
19364
- type: "string",
19382
+ 1: {
19383
+ num: 1, // Breaths * 100 /min -300 indicates invalid -200 indicates large motion -100 indicates off wrist
19384
+ name: "respirationRate",
19385
+ type: "sint16",
19365
19386
  array: "true",
19366
- scale: 1,
19387
+ scale: 100,
19367
19388
  offset: 0,
19368
- units: "",
19389
+ units: "breaths/min",
19369
19390
  bits: [],
19370
19391
  components: [],
19371
19392
  isAccumulated: false,
@@ -19374,56 +19395,42 @@ const Profile = {
19374
19395
  },
19375
19396
  },
19376
19397
  },
19377
- 202: {
19378
- num: 202,
19379
- name: "exdDataConceptConfiguration",
19380
- messagesKey: "exdDataConceptConfigurationMesgs",
19398
+ 308: {
19399
+ num: 308, // User's current heart rate data used for HSA custom data logging
19400
+ name: "hsaHeartRateData",
19401
+ messagesKey: "hsaHeartRateDataMesgs",
19381
19402
  fields: {
19382
- 0: {
19383
- num: 0,
19384
- name: "screenIndex",
19385
- type: "uint8",
19403
+ 253: {
19404
+ num: 253,
19405
+ name: "timestamp",
19406
+ type: "dateTime",
19386
19407
  array: "false",
19387
19408
  scale: 1,
19388
19409
  offset: 0,
19389
- units: "",
19410
+ units: "s",
19390
19411
  bits: [],
19391
19412
  components: [],
19392
19413
  isAccumulated: false,
19393
19414
  hasComponents: false,
19394
19415
  subFields: []
19395
19416
  },
19396
- 1: {
19397
- num: 1,
19398
- name: "conceptField",
19399
- type: "byte",
19400
- array: "false",
19401
- scale: [1, 1, ],
19402
- offset: [0, 0, ],
19403
- units: ["", "", ],
19404
- bits: [4,4,],
19405
- components: ["2", "3", ],
19406
- isAccumulated: false,
19407
- hasComponents: true,
19408
- subFields: []
19409
- },
19410
- 2: {
19411
- num: 2,
19412
- name: "fieldId",
19413
- type: "uint8",
19417
+ 0: {
19418
+ num: 0, // Processing interval length in seconds
19419
+ name: "processingInterval",
19420
+ type: "uint16",
19414
19421
  array: "false",
19415
19422
  scale: 1,
19416
19423
  offset: 0,
19417
- units: "",
19424
+ units: "s",
19418
19425
  bits: [],
19419
19426
  components: [],
19420
19427
  isAccumulated: false,
19421
19428
  hasComponents: false,
19422
19429
  subFields: []
19423
19430
  },
19424
- 3: {
19425
- num: 3,
19426
- name: "conceptIndex",
19431
+ 1: {
19432
+ num: 1, // Status of measurements in buffer - 0 indicates SEARCHING 1 indicates LOCKED
19433
+ name: "status",
19427
19434
  type: "uint8",
19428
19435
  array: "false",
19429
19436
  scale: 1,
@@ -19435,39 +19442,46 @@ const Profile = {
19435
19442
  hasComponents: false,
19436
19443
  subFields: []
19437
19444
  },
19438
- 4: {
19439
- num: 4,
19440
- name: "dataPage",
19445
+ 2: {
19446
+ num: 2, // Beats / min
19447
+ name: "heartRate",
19441
19448
  type: "uint8",
19442
- array: "false",
19449
+ array: "true",
19443
19450
  scale: 1,
19444
19451
  offset: 0,
19445
- units: "",
19452
+ units: "bpm",
19446
19453
  bits: [],
19447
19454
  components: [],
19448
19455
  isAccumulated: false,
19449
19456
  hasComponents: false,
19450
19457
  subFields: []
19451
19458
  },
19452
- 5: {
19453
- num: 5,
19454
- name: "conceptKey",
19455
- type: "uint8",
19459
+ },
19460
+ },
19461
+ 389: {
19462
+ num: 389, // Configuration data for HSA custom data logging
19463
+ name: "hsaConfigurationData",
19464
+ messagesKey: "hsaConfigurationDataMesgs",
19465
+ fields: {
19466
+ 253: {
19467
+ num: 253, // Encoded configuration data
19468
+ name: "timestamp",
19469
+ type: "dateTime",
19456
19470
  array: "false",
19457
19471
  scale: 1,
19458
19472
  offset: 0,
19459
- units: "",
19473
+ units: "s",
19460
19474
  bits: [],
19461
19475
  components: [],
19462
19476
  isAccumulated: false,
19463
19477
  hasComponents: false,
19464
19478
  subFields: []
19465
19479
  },
19466
- 6: {
19467
- num: 6,
19468
- name: "scaling",
19469
- type: "uint8",
19470
- array: "false",
19480
+ 0: {
19481
+ num: 0,
19482
+ name: "data",
19483
+ type: "byte",
19484
+ array: "true",
19471
19485
  scale: 1,
19472
19486
  offset: 0,
19473
19487
  units: "",
@@ -19477,10 +19491,10 @@ const Profile = {
19477
19491
  hasComponents: false,
19478
19492
  subFields: []
19479
19493
  },
19480
- 8: {
19481
- num: 8,
19482
- name: "dataUnits",
19483
- type: "exdDataUnits",
19494
+ 1: {
19495
+ num: 1, // Size in bytes of data field
19496
+ name: "dataSize",
19497
+ type: "uint8",
19484
19498
  array: "false",
19485
19499
  scale: 1,
19486
19500
  offset: 0,
@@ -19491,42 +19505,49 @@ const Profile = {
19491
19505
  hasComponents: false,
19492
19506
  subFields: []
19493
19507
  },
19494
- 9: {
19495
- num: 9,
19496
- name: "qualifier",
19497
- type: "exdQualifiers",
19508
+ },
19509
+ },
19510
+ 409: {
19511
+ num: 409, // Wrist temperature data used for HSA custom data logging
19512
+ name: "hsaWristTemperatureData",
19513
+ messagesKey: "hsaWristTemperatureDataMesgs",
19514
+ fields: {
19515
+ 253: {
19516
+ num: 253,
19517
+ name: "timestamp",
19518
+ type: "dateTime",
19498
19519
  array: "false",
19499
19520
  scale: 1,
19500
19521
  offset: 0,
19501
- units: "",
19522
+ units: "s",
19502
19523
  bits: [],
19503
19524
  components: [],
19504
19525
  isAccumulated: false,
19505
19526
  hasComponents: false,
19506
19527
  subFields: []
19507
19528
  },
19508
- 10: {
19509
- num: 10,
19510
- name: "descriptor",
19511
- type: "exdDescriptors",
19529
+ 0: {
19530
+ num: 0, // Processing interval length in seconds
19531
+ name: "processingInterval",
19532
+ type: "uint16",
19512
19533
  array: "false",
19513
19534
  scale: 1,
19514
19535
  offset: 0,
19515
- units: "",
19536
+ units: "s",
19516
19537
  bits: [],
19517
19538
  components: [],
19518
19539
  isAccumulated: false,
19519
19540
  hasComponents: false,
19520
19541
  subFields: []
19521
19542
  },
19522
- 11: {
19523
- num: 11,
19524
- name: "isSigned",
19525
- type: "bool",
19526
- array: "false",
19527
- scale: 1,
19543
+ 1: {
19544
+ num: 1, // Wrist temperature reading
19545
+ name: "value",
19546
+ type: "uint16",
19547
+ array: "true",
19548
+ scale: 1000,
19528
19549
  offset: 0,
19529
- units: "",
19550
+ units: "degC",
19530
19551
  bits: [],
19531
19552
  components: [],
19532
19553
  isAccumulated: false,
@@ -19535,19 +19556,19 @@ const Profile = {
19535
19556
  },
19536
19557
  },
19537
19558
  },
19538
- 268: {
19539
- num: 268,
19540
- name: "diveSummary",
19541
- messagesKey: "diveSummaryMesgs",
19559
+ 145: {
19560
+ num: 145,
19561
+ name: "memoGlob",
19562
+ messagesKey: "memoGlobMesgs",
19542
19563
  fields: {
19543
- 253: {
19544
- num: 253,
19545
- name: "timestamp",
19546
- type: "dateTime",
19564
+ 250: {
19565
+ num: 250, // Sequence number of memo blocks
19566
+ name: "partIndex",
19567
+ type: "uint32",
19547
19568
  array: "false",
19548
19569
  scale: 1,
19549
19570
  offset: 0,
19550
- units: "s",
19571
+ units: "",
19551
19572
  bits: [],
19552
19573
  components: [],
19553
19574
  isAccumulated: false,
@@ -19555,10 +19576,10 @@ const Profile = {
19555
19576
  subFields: []
19556
19577
  },
19557
19578
  0: {
19558
- num: 0,
19559
- name: "referenceMesg",
19560
- type: "mesgNum",
19561
- array: "false",
19579
+ num: 0, // Deprecated. Use data field.
19580
+ name: "memo",
19581
+ type: "byte",
19582
+ array: "true",
19562
19583
  scale: 1,
19563
19584
  offset: 0,
19564
19585
  units: "",
@@ -19569,293 +19590,1273 @@ const Profile = {
19569
19590
  subFields: []
19570
19591
  },
19571
19592
  1: {
19572
- num: 1,
19573
- name: "referenceIndex",
19574
- type: "messageIndex",
19575
- array: "false",
19593
+ num: 1, // Message Number of the parent message
19594
+ name: "mesgNum",
19595
+ type: "mesgNum",
19596
+ array: "false",
19597
+ scale: 1,
19598
+ offset: 0,
19599
+ units: "",
19600
+ bits: [],
19601
+ components: [],
19602
+ isAccumulated: false,
19603
+ hasComponents: false,
19604
+ subFields: []
19605
+ },
19606
+ 2: {
19607
+ num: 2, // Index of mesg that this glob is associated with.
19608
+ name: "parentIndex",
19609
+ type: "messageIndex",
19610
+ array: "false",
19611
+ scale: 1,
19612
+ offset: 0,
19613
+ units: "",
19614
+ bits: [],
19615
+ components: [],
19616
+ isAccumulated: false,
19617
+ hasComponents: false,
19618
+ subFields: []
19619
+ },
19620
+ 3: {
19621
+ num: 3, // Field within the parent that this glob is associated with
19622
+ name: "fieldNum",
19623
+ type: "uint8",
19624
+ array: "false",
19625
+ scale: 1,
19626
+ offset: 0,
19627
+ units: "",
19628
+ bits: [],
19629
+ components: [],
19630
+ isAccumulated: false,
19631
+ hasComponents: false,
19632
+ subFields: []
19633
+ },
19634
+ 4: {
19635
+ num: 4, // Block of utf8 bytes. Note, mutltibyte characters may be split across adjoining memo_glob messages.
19636
+ name: "data",
19637
+ type: "uint8z",
19638
+ array: "true",
19639
+ scale: 1,
19640
+ offset: 0,
19641
+ units: "",
19642
+ bits: [],
19643
+ components: [],
19644
+ isAccumulated: false,
19645
+ hasComponents: false,
19646
+ subFields: []
19647
+ },
19648
+ },
19649
+ },
19650
+ 275: {
19651
+ num: 275,
19652
+ name: "sleepLevel",
19653
+ messagesKey: "sleepLevelMesgs",
19654
+ fields: {
19655
+ 253: {
19656
+ num: 253,
19657
+ name: "timestamp",
19658
+ type: "dateTime",
19659
+ array: "false",
19660
+ scale: 1,
19661
+ offset: 0,
19662
+ units: "s",
19663
+ bits: [],
19664
+ components: [],
19665
+ isAccumulated: false,
19666
+ hasComponents: false,
19667
+ subFields: []
19668
+ },
19669
+ 0: {
19670
+ num: 0,
19671
+ name: "sleepLevel",
19672
+ type: "sleepLevel",
19673
+ array: "false",
19674
+ scale: 1,
19675
+ offset: 0,
19676
+ units: "",
19677
+ bits: [],
19678
+ components: [],
19679
+ isAccumulated: false,
19680
+ hasComponents: false,
19681
+ subFields: []
19682
+ },
19683
+ },
19684
+ },
19685
+ 82: {
19686
+ num: 82,
19687
+ name: "antChannelId",
19688
+ messagesKey: "antChannelIdMesgs",
19689
+ fields: {
19690
+ 0: {
19691
+ num: 0,
19692
+ name: "channelNumber",
19693
+ type: "uint8",
19694
+ array: "false",
19695
+ scale: 1,
19696
+ offset: 0,
19697
+ units: "",
19698
+ bits: [],
19699
+ components: [],
19700
+ isAccumulated: false,
19701
+ hasComponents: false,
19702
+ subFields: []
19703
+ },
19704
+ 1: {
19705
+ num: 1,
19706
+ name: "deviceType",
19707
+ type: "uint8z",
19708
+ array: "false",
19709
+ scale: 1,
19710
+ offset: 0,
19711
+ units: "",
19712
+ bits: [],
19713
+ components: [],
19714
+ isAccumulated: false,
19715
+ hasComponents: false,
19716
+ subFields: []
19717
+ },
19718
+ 2: {
19719
+ num: 2,
19720
+ name: "deviceNumber",
19721
+ type: "uint16z",
19722
+ array: "false",
19723
+ scale: 1,
19724
+ offset: 0,
19725
+ units: "",
19726
+ bits: [],
19727
+ components: [],
19728
+ isAccumulated: false,
19729
+ hasComponents: false,
19730
+ subFields: []
19731
+ },
19732
+ 3: {
19733
+ num: 3,
19734
+ name: "transmissionType",
19735
+ type: "uint8z",
19736
+ array: "false",
19737
+ scale: 1,
19738
+ offset: 0,
19739
+ units: "",
19740
+ bits: [],
19741
+ components: [],
19742
+ isAccumulated: false,
19743
+ hasComponents: false,
19744
+ subFields: []
19745
+ },
19746
+ 4: {
19747
+ num: 4,
19748
+ name: "deviceIndex",
19749
+ type: "deviceIndex",
19750
+ array: "false",
19751
+ scale: 1,
19752
+ offset: 0,
19753
+ units: "",
19754
+ bits: [],
19755
+ components: [],
19756
+ isAccumulated: false,
19757
+ hasComponents: false,
19758
+ subFields: []
19759
+ },
19760
+ },
19761
+ },
19762
+ 80: {
19763
+ num: 80,
19764
+ name: "antRx",
19765
+ messagesKey: "antRxMesgs",
19766
+ fields: {
19767
+ 253: {
19768
+ num: 253,
19769
+ name: "timestamp",
19770
+ type: "dateTime",
19771
+ array: "false",
19772
+ scale: 1,
19773
+ offset: 0,
19774
+ units: "s",
19775
+ bits: [],
19776
+ components: [],
19777
+ isAccumulated: false,
19778
+ hasComponents: false,
19779
+ subFields: []
19780
+ },
19781
+ 0: {
19782
+ num: 0,
19783
+ name: "fractionalTimestamp",
19784
+ type: "uint16",
19785
+ array: "false",
19786
+ scale: 32768,
19787
+ offset: 0,
19788
+ units: "s",
19789
+ bits: [],
19790
+ components: [],
19791
+ isAccumulated: false,
19792
+ hasComponents: false,
19793
+ subFields: []
19794
+ },
19795
+ 1: {
19796
+ num: 1,
19797
+ name: "mesgId",
19798
+ type: "byte",
19799
+ array: "false",
19800
+ scale: 1,
19801
+ offset: 0,
19802
+ units: "",
19803
+ bits: [],
19804
+ components: [],
19805
+ isAccumulated: false,
19806
+ hasComponents: false,
19807
+ subFields: []
19808
+ },
19809
+ 2: {
19810
+ num: 2,
19811
+ name: "mesgData",
19812
+ type: "byte",
19813
+ array: "true",
19814
+ scale: [1, 1, 1, 1, 1, 1, 1, 1, 1, ],
19815
+ offset: [0, 0, 0, 0, 0, 0, 0, 0, 0, ],
19816
+ units: ["", "", "", "", "", "", "", "", "", ],
19817
+ bits: [8,8,8,8,8,8,8,8,8,],
19818
+ components: ["3", "4", "4", "4", "4", "4", "4", "4", "4", ],
19819
+ isAccumulated: false,
19820
+ hasComponents: true,
19821
+ subFields: []
19822
+ },
19823
+ 3: {
19824
+ num: 3,
19825
+ name: "channelNumber",
19826
+ type: "uint8",
19827
+ array: "false",
19828
+ scale: 1,
19829
+ offset: 0,
19830
+ units: "",
19831
+ bits: [],
19832
+ components: [],
19833
+ isAccumulated: false,
19834
+ hasComponents: false,
19835
+ subFields: []
19836
+ },
19837
+ 4: {
19838
+ num: 4,
19839
+ name: "data",
19840
+ type: "byte",
19841
+ array: "true",
19842
+ scale: 1,
19843
+ offset: 0,
19844
+ units: "",
19845
+ bits: [],
19846
+ components: [],
19847
+ isAccumulated: false,
19848
+ hasComponents: false,
19849
+ subFields: []
19850
+ },
19851
+ },
19852
+ },
19853
+ 81: {
19854
+ num: 81,
19855
+ name: "antTx",
19856
+ messagesKey: "antTxMesgs",
19857
+ fields: {
19858
+ 253: {
19859
+ num: 253,
19860
+ name: "timestamp",
19861
+ type: "dateTime",
19862
+ array: "false",
19863
+ scale: 1,
19864
+ offset: 0,
19865
+ units: "s",
19866
+ bits: [],
19867
+ components: [],
19868
+ isAccumulated: false,
19869
+ hasComponents: false,
19870
+ subFields: []
19871
+ },
19872
+ 0: {
19873
+ num: 0,
19874
+ name: "fractionalTimestamp",
19875
+ type: "uint16",
19876
+ array: "false",
19877
+ scale: 32768,
19878
+ offset: 0,
19879
+ units: "s",
19880
+ bits: [],
19881
+ components: [],
19882
+ isAccumulated: false,
19883
+ hasComponents: false,
19884
+ subFields: []
19885
+ },
19886
+ 1: {
19887
+ num: 1,
19888
+ name: "mesgId",
19889
+ type: "byte",
19890
+ array: "false",
19891
+ scale: 1,
19892
+ offset: 0,
19893
+ units: "",
19894
+ bits: [],
19895
+ components: [],
19896
+ isAccumulated: false,
19897
+ hasComponents: false,
19898
+ subFields: []
19899
+ },
19900
+ 2: {
19901
+ num: 2,
19902
+ name: "mesgData",
19903
+ type: "byte",
19904
+ array: "true",
19905
+ scale: [1, 1, 1, 1, 1, 1, 1, 1, 1, ],
19906
+ offset: [0, 0, 0, 0, 0, 0, 0, 0, 0, ],
19907
+ units: ["", "", "", "", "", "", "", "", "", ],
19908
+ bits: [8,8,8,8,8,8,8,8,8,],
19909
+ components: ["3", "4", "4", "4", "4", "4", "4", "4", "4", ],
19910
+ isAccumulated: false,
19911
+ hasComponents: true,
19912
+ subFields: []
19913
+ },
19914
+ 3: {
19915
+ num: 3,
19916
+ name: "channelNumber",
19917
+ type: "uint8",
19918
+ array: "false",
19919
+ scale: 1,
19920
+ offset: 0,
19921
+ units: "",
19922
+ bits: [],
19923
+ components: [],
19924
+ isAccumulated: false,
19925
+ hasComponents: false,
19926
+ subFields: []
19927
+ },
19928
+ 4: {
19929
+ num: 4,
19930
+ name: "data",
19931
+ type: "byte",
19932
+ array: "true",
19933
+ scale: 1,
19934
+ offset: 0,
19935
+ units: "",
19936
+ bits: [],
19937
+ components: [],
19938
+ isAccumulated: false,
19939
+ hasComponents: false,
19940
+ subFields: []
19941
+ },
19942
+ },
19943
+ },
19944
+ 200: {
19945
+ num: 200,
19946
+ name: "exdScreenConfiguration",
19947
+ messagesKey: "exdScreenConfigurationMesgs",
19948
+ fields: {
19949
+ 0: {
19950
+ num: 0,
19951
+ name: "screenIndex",
19952
+ type: "uint8",
19953
+ array: "false",
19954
+ scale: 1,
19955
+ offset: 0,
19956
+ units: "",
19957
+ bits: [],
19958
+ components: [],
19959
+ isAccumulated: false,
19960
+ hasComponents: false,
19961
+ subFields: []
19962
+ },
19963
+ 1: {
19964
+ num: 1, // number of fields in screen
19965
+ name: "fieldCount",
19966
+ type: "uint8",
19967
+ array: "false",
19968
+ scale: 1,
19969
+ offset: 0,
19970
+ units: "",
19971
+ bits: [],
19972
+ components: [],
19973
+ isAccumulated: false,
19974
+ hasComponents: false,
19975
+ subFields: []
19976
+ },
19977
+ 2: {
19978
+ num: 2,
19979
+ name: "layout",
19980
+ type: "exdLayout",
19981
+ array: "false",
19982
+ scale: 1,
19983
+ offset: 0,
19984
+ units: "",
19985
+ bits: [],
19986
+ components: [],
19987
+ isAccumulated: false,
19988
+ hasComponents: false,
19989
+ subFields: []
19990
+ },
19991
+ 3: {
19992
+ num: 3,
19993
+ name: "screenEnabled",
19994
+ type: "bool",
19995
+ array: "false",
19996
+ scale: 1,
19997
+ offset: 0,
19998
+ units: "",
19999
+ bits: [],
20000
+ components: [],
20001
+ isAccumulated: false,
20002
+ hasComponents: false,
20003
+ subFields: []
20004
+ },
20005
+ },
20006
+ },
20007
+ 201: {
20008
+ num: 201,
20009
+ name: "exdDataFieldConfiguration",
20010
+ messagesKey: "exdDataFieldConfigurationMesgs",
20011
+ fields: {
20012
+ 0: {
20013
+ num: 0,
20014
+ name: "screenIndex",
20015
+ type: "uint8",
20016
+ array: "false",
20017
+ scale: 1,
20018
+ offset: 0,
20019
+ units: "",
20020
+ bits: [],
20021
+ components: [],
20022
+ isAccumulated: false,
20023
+ hasComponents: false,
20024
+ subFields: []
20025
+ },
20026
+ 1: {
20027
+ num: 1,
20028
+ name: "conceptField",
20029
+ type: "byte",
20030
+ array: "false",
20031
+ scale: [1, 1, ],
20032
+ offset: [0, 0, ],
20033
+ units: ["", "", ],
20034
+ bits: [4,4,],
20035
+ components: ["2", "3", ],
20036
+ isAccumulated: false,
20037
+ hasComponents: true,
20038
+ subFields: []
20039
+ },
20040
+ 2: {
20041
+ num: 2,
20042
+ name: "fieldId",
20043
+ type: "uint8",
20044
+ array: "false",
20045
+ scale: 1,
20046
+ offset: 0,
20047
+ units: "",
20048
+ bits: [],
20049
+ components: [],
20050
+ isAccumulated: false,
20051
+ hasComponents: false,
20052
+ subFields: []
20053
+ },
20054
+ 3: {
20055
+ num: 3,
20056
+ name: "conceptCount",
20057
+ type: "uint8",
20058
+ array: "false",
20059
+ scale: 1,
20060
+ offset: 0,
20061
+ units: "",
20062
+ bits: [],
20063
+ components: [],
20064
+ isAccumulated: false,
20065
+ hasComponents: false,
20066
+ subFields: []
20067
+ },
20068
+ 4: {
20069
+ num: 4,
20070
+ name: "displayType",
20071
+ type: "exdDisplayType",
20072
+ array: "false",
20073
+ scale: 1,
20074
+ offset: 0,
20075
+ units: "",
20076
+ bits: [],
20077
+ components: [],
20078
+ isAccumulated: false,
20079
+ hasComponents: false,
20080
+ subFields: []
20081
+ },
20082
+ 5: {
20083
+ num: 5,
20084
+ name: "title",
20085
+ type: "string",
20086
+ array: "true",
20087
+ scale: 1,
20088
+ offset: 0,
20089
+ units: "",
20090
+ bits: [],
20091
+ components: [],
20092
+ isAccumulated: false,
20093
+ hasComponents: false,
20094
+ subFields: []
20095
+ },
20096
+ },
20097
+ },
20098
+ 202: {
20099
+ num: 202,
20100
+ name: "exdDataConceptConfiguration",
20101
+ messagesKey: "exdDataConceptConfigurationMesgs",
20102
+ fields: {
20103
+ 0: {
20104
+ num: 0,
20105
+ name: "screenIndex",
20106
+ type: "uint8",
20107
+ array: "false",
20108
+ scale: 1,
20109
+ offset: 0,
20110
+ units: "",
20111
+ bits: [],
20112
+ components: [],
20113
+ isAccumulated: false,
20114
+ hasComponents: false,
20115
+ subFields: []
20116
+ },
20117
+ 1: {
20118
+ num: 1,
20119
+ name: "conceptField",
20120
+ type: "byte",
20121
+ array: "false",
20122
+ scale: [1, 1, ],
20123
+ offset: [0, 0, ],
20124
+ units: ["", "", ],
20125
+ bits: [4,4,],
20126
+ components: ["2", "3", ],
20127
+ isAccumulated: false,
20128
+ hasComponents: true,
20129
+ subFields: []
20130
+ },
20131
+ 2: {
20132
+ num: 2,
20133
+ name: "fieldId",
20134
+ type: "uint8",
20135
+ array: "false",
20136
+ scale: 1,
20137
+ offset: 0,
20138
+ units: "",
20139
+ bits: [],
20140
+ components: [],
20141
+ isAccumulated: false,
20142
+ hasComponents: false,
20143
+ subFields: []
20144
+ },
20145
+ 3: {
20146
+ num: 3,
20147
+ name: "conceptIndex",
20148
+ type: "uint8",
20149
+ array: "false",
20150
+ scale: 1,
20151
+ offset: 0,
20152
+ units: "",
20153
+ bits: [],
20154
+ components: [],
20155
+ isAccumulated: false,
20156
+ hasComponents: false,
20157
+ subFields: []
20158
+ },
20159
+ 4: {
20160
+ num: 4,
20161
+ name: "dataPage",
20162
+ type: "uint8",
20163
+ array: "false",
20164
+ scale: 1,
20165
+ offset: 0,
20166
+ units: "",
20167
+ bits: [],
20168
+ components: [],
20169
+ isAccumulated: false,
20170
+ hasComponents: false,
20171
+ subFields: []
20172
+ },
20173
+ 5: {
20174
+ num: 5,
20175
+ name: "conceptKey",
20176
+ type: "uint8",
20177
+ array: "false",
20178
+ scale: 1,
20179
+ offset: 0,
20180
+ units: "",
20181
+ bits: [],
20182
+ components: [],
20183
+ isAccumulated: false,
20184
+ hasComponents: false,
20185
+ subFields: []
20186
+ },
20187
+ 6: {
20188
+ num: 6,
20189
+ name: "scaling",
20190
+ type: "uint8",
20191
+ array: "false",
20192
+ scale: 1,
20193
+ offset: 0,
20194
+ units: "",
20195
+ bits: [],
20196
+ components: [],
20197
+ isAccumulated: false,
20198
+ hasComponents: false,
20199
+ subFields: []
20200
+ },
20201
+ 8: {
20202
+ num: 8,
20203
+ name: "dataUnits",
20204
+ type: "exdDataUnits",
20205
+ array: "false",
20206
+ scale: 1,
20207
+ offset: 0,
20208
+ units: "",
20209
+ bits: [],
20210
+ components: [],
20211
+ isAccumulated: false,
20212
+ hasComponents: false,
20213
+ subFields: []
20214
+ },
20215
+ 9: {
20216
+ num: 9,
20217
+ name: "qualifier",
20218
+ type: "exdQualifiers",
20219
+ array: "false",
20220
+ scale: 1,
20221
+ offset: 0,
20222
+ units: "",
20223
+ bits: [],
20224
+ components: [],
20225
+ isAccumulated: false,
20226
+ hasComponents: false,
20227
+ subFields: []
20228
+ },
20229
+ 10: {
20230
+ num: 10,
20231
+ name: "descriptor",
20232
+ type: "exdDescriptors",
20233
+ array: "false",
20234
+ scale: 1,
20235
+ offset: 0,
20236
+ units: "",
20237
+ bits: [],
20238
+ components: [],
20239
+ isAccumulated: false,
20240
+ hasComponents: false,
20241
+ subFields: []
20242
+ },
20243
+ 11: {
20244
+ num: 11,
20245
+ name: "isSigned",
20246
+ type: "bool",
20247
+ array: "false",
20248
+ scale: 1,
20249
+ offset: 0,
20250
+ units: "",
20251
+ bits: [],
20252
+ components: [],
20253
+ isAccumulated: false,
20254
+ hasComponents: false,
20255
+ subFields: []
20256
+ },
20257
+ },
20258
+ },
20259
+ 268: {
20260
+ num: 268,
20261
+ name: "diveSummary",
20262
+ messagesKey: "diveSummaryMesgs",
20263
+ fields: {
20264
+ 253: {
20265
+ num: 253,
20266
+ name: "timestamp",
20267
+ type: "dateTime",
20268
+ array: "false",
20269
+ scale: 1,
20270
+ offset: 0,
20271
+ units: "s",
20272
+ bits: [],
20273
+ components: [],
20274
+ isAccumulated: false,
20275
+ hasComponents: false,
20276
+ subFields: []
20277
+ },
20278
+ 0: {
20279
+ num: 0,
20280
+ name: "referenceMesg",
20281
+ type: "mesgNum",
20282
+ array: "false",
20283
+ scale: 1,
20284
+ offset: 0,
20285
+ units: "",
20286
+ bits: [],
20287
+ components: [],
20288
+ isAccumulated: false,
20289
+ hasComponents: false,
20290
+ subFields: []
20291
+ },
20292
+ 1: {
20293
+ num: 1,
20294
+ name: "referenceIndex",
20295
+ type: "messageIndex",
20296
+ array: "false",
20297
+ scale: 1,
20298
+ offset: 0,
20299
+ units: "",
20300
+ bits: [],
20301
+ components: [],
20302
+ isAccumulated: false,
20303
+ hasComponents: false,
20304
+ subFields: []
20305
+ },
20306
+ 2: {
20307
+ num: 2, // 0 if above water
20308
+ name: "avgDepth",
20309
+ type: "uint32",
20310
+ array: "false",
20311
+ scale: 1000,
20312
+ offset: 0,
20313
+ units: "m",
20314
+ bits: [],
20315
+ components: [],
20316
+ isAccumulated: false,
20317
+ hasComponents: false,
20318
+ subFields: []
20319
+ },
20320
+ 3: {
20321
+ num: 3, // 0 if above water
20322
+ name: "maxDepth",
20323
+ type: "uint32",
20324
+ array: "false",
20325
+ scale: 1000,
20326
+ offset: 0,
20327
+ units: "m",
20328
+ bits: [],
20329
+ components: [],
20330
+ isAccumulated: false,
20331
+ hasComponents: false,
20332
+ subFields: []
20333
+ },
20334
+ 4: {
20335
+ num: 4, // Time since end of last dive
20336
+ name: "surfaceInterval",
20337
+ type: "uint32",
20338
+ array: "false",
20339
+ scale: 1,
20340
+ offset: 0,
20341
+ units: "s",
20342
+ bits: [],
20343
+ components: [],
20344
+ isAccumulated: false,
20345
+ hasComponents: false,
20346
+ subFields: []
20347
+ },
20348
+ 5: {
20349
+ num: 5,
20350
+ name: "startCns",
20351
+ type: "uint8",
20352
+ array: "false",
20353
+ scale: 1,
20354
+ offset: 0,
20355
+ units: "percent",
20356
+ bits: [],
20357
+ components: [],
20358
+ isAccumulated: false,
20359
+ hasComponents: false,
20360
+ subFields: []
20361
+ },
20362
+ 6: {
20363
+ num: 6,
20364
+ name: "endCns",
20365
+ type: "uint8",
20366
+ array: "false",
20367
+ scale: 1,
20368
+ offset: 0,
20369
+ units: "percent",
20370
+ bits: [],
20371
+ components: [],
20372
+ isAccumulated: false,
20373
+ hasComponents: false,
20374
+ subFields: []
20375
+ },
20376
+ 7: {
20377
+ num: 7,
20378
+ name: "startN2",
20379
+ type: "uint16",
20380
+ array: "false",
20381
+ scale: 1,
20382
+ offset: 0,
20383
+ units: "percent",
20384
+ bits: [],
20385
+ components: [],
20386
+ isAccumulated: false,
20387
+ hasComponents: false,
20388
+ subFields: []
20389
+ },
20390
+ 8: {
20391
+ num: 8,
20392
+ name: "endN2",
20393
+ type: "uint16",
20394
+ array: "false",
20395
+ scale: 1,
20396
+ offset: 0,
20397
+ units: "percent",
20398
+ bits: [],
20399
+ components: [],
20400
+ isAccumulated: false,
20401
+ hasComponents: false,
20402
+ subFields: []
20403
+ },
20404
+ 9: {
20405
+ num: 9,
20406
+ name: "o2Toxicity",
20407
+ type: "uint16",
20408
+ array: "false",
20409
+ scale: 1,
20410
+ offset: 0,
20411
+ units: "OTUs",
20412
+ bits: [],
20413
+ components: [],
20414
+ isAccumulated: false,
20415
+ hasComponents: false,
20416
+ subFields: []
20417
+ },
20418
+ 10: {
20419
+ num: 10,
20420
+ name: "diveNumber",
20421
+ type: "uint32",
20422
+ array: "false",
19576
20423
  scale: 1,
19577
20424
  offset: 0,
19578
- units: "",
20425
+ units: "",
20426
+ bits: [],
20427
+ components: [],
20428
+ isAccumulated: false,
20429
+ hasComponents: false,
20430
+ subFields: []
20431
+ },
20432
+ 11: {
20433
+ num: 11,
20434
+ name: "bottomTime",
20435
+ type: "uint32",
20436
+ array: "false",
20437
+ scale: 1000,
20438
+ offset: 0,
20439
+ units: "s",
20440
+ bits: [],
20441
+ components: [],
20442
+ isAccumulated: false,
20443
+ hasComponents: false,
20444
+ subFields: []
20445
+ },
20446
+ 12: {
20447
+ num: 12, // Average pressure-based surface air consumption
20448
+ name: "avgPressureSac",
20449
+ type: "uint16",
20450
+ array: "false",
20451
+ scale: 100,
20452
+ offset: 0,
20453
+ units: "bar/min",
20454
+ bits: [],
20455
+ components: [],
20456
+ isAccumulated: false,
20457
+ hasComponents: false,
20458
+ subFields: []
20459
+ },
20460
+ 13: {
20461
+ num: 13, // Average volumetric surface air consumption
20462
+ name: "avgVolumeSac",
20463
+ type: "uint16",
20464
+ array: "false",
20465
+ scale: 100,
20466
+ offset: 0,
20467
+ units: "L/min",
20468
+ bits: [],
20469
+ components: [],
20470
+ isAccumulated: false,
20471
+ hasComponents: false,
20472
+ subFields: []
20473
+ },
20474
+ 14: {
20475
+ num: 14, // Average respiratory minute volume
20476
+ name: "avgRmv",
20477
+ type: "uint16",
20478
+ array: "false",
20479
+ scale: 100,
20480
+ offset: 0,
20481
+ units: "L/min",
20482
+ bits: [],
20483
+ components: [],
20484
+ isAccumulated: false,
20485
+ hasComponents: false,
20486
+ subFields: []
20487
+ },
20488
+ 15: {
20489
+ num: 15, // Time to reach deepest level stop
20490
+ name: "descentTime",
20491
+ type: "uint32",
20492
+ array: "false",
20493
+ scale: 1000,
20494
+ offset: 0,
20495
+ units: "s",
20496
+ bits: [],
20497
+ components: [],
20498
+ isAccumulated: false,
20499
+ hasComponents: false,
20500
+ subFields: []
20501
+ },
20502
+ 16: {
20503
+ num: 16, // Time after leaving bottom until reaching surface
20504
+ name: "ascentTime",
20505
+ type: "uint32",
20506
+ array: "false",
20507
+ scale: 1000,
20508
+ offset: 0,
20509
+ units: "s",
20510
+ bits: [],
20511
+ components: [],
20512
+ isAccumulated: false,
20513
+ hasComponents: false,
20514
+ subFields: []
20515
+ },
20516
+ 17: {
20517
+ num: 17, // Average ascent rate, not including descents or stops
20518
+ name: "avgAscentRate",
20519
+ type: "sint32",
20520
+ array: "false",
20521
+ scale: 1000,
20522
+ offset: 0,
20523
+ units: "m/s",
20524
+ bits: [],
20525
+ components: [],
20526
+ isAccumulated: false,
20527
+ hasComponents: false,
20528
+ subFields: []
20529
+ },
20530
+ 22: {
20531
+ num: 22, // Average descent rate, not including ascents or stops
20532
+ name: "avgDescentRate",
20533
+ type: "uint32",
20534
+ array: "false",
20535
+ scale: 1000,
20536
+ offset: 0,
20537
+ units: "m/s",
20538
+ bits: [],
20539
+ components: [],
20540
+ isAccumulated: false,
20541
+ hasComponents: false,
20542
+ subFields: []
20543
+ },
20544
+ 23: {
20545
+ num: 23, // Maximum ascent rate
20546
+ name: "maxAscentRate",
20547
+ type: "uint32",
20548
+ array: "false",
20549
+ scale: 1000,
20550
+ offset: 0,
20551
+ units: "m/s",
19579
20552
  bits: [],
19580
20553
  components: [],
19581
20554
  isAccumulated: false,
19582
20555
  hasComponents: false,
19583
20556
  subFields: []
19584
20557
  },
19585
- 2: {
19586
- num: 2, // 0 if above water
19587
- name: "avgDepth",
20558
+ 24: {
20559
+ num: 24, // Maximum descent rate
20560
+ name: "maxDescentRate",
19588
20561
  type: "uint32",
19589
20562
  array: "false",
19590
20563
  scale: 1000,
19591
20564
  offset: 0,
19592
- units: "m",
20565
+ units: "m/s",
19593
20566
  bits: [],
19594
20567
  components: [],
19595
20568
  isAccumulated: false,
19596
20569
  hasComponents: false,
19597
20570
  subFields: []
19598
20571
  },
19599
- 3: {
19600
- num: 3, // 0 if above water
19601
- name: "maxDepth",
20572
+ 25: {
20573
+ num: 25, // Time spent neither ascending nor descending
20574
+ name: "hangTime",
19602
20575
  type: "uint32",
19603
20576
  array: "false",
19604
20577
  scale: 1000,
19605
20578
  offset: 0,
19606
- units: "m",
20579
+ units: "s",
19607
20580
  bits: [],
19608
20581
  components: [],
19609
20582
  isAccumulated: false,
19610
20583
  hasComponents: false,
19611
20584
  subFields: []
19612
20585
  },
19613
- 4: {
19614
- num: 4, // Time since end of last dive
19615
- name: "surfaceInterval",
19616
- type: "uint32",
20586
+ },
20587
+ },
20588
+ 289: {
20589
+ num: 289, // Number of acclerometer zero crossings summed over the specified time interval
20590
+ name: "aadAccelFeatures",
20591
+ messagesKey: "aadAccelFeaturesMesgs",
20592
+ fields: {
20593
+ 253: {
20594
+ num: 253,
20595
+ name: "timestamp",
20596
+ type: "dateTime",
19617
20597
  array: "false",
19618
20598
  scale: 1,
19619
20599
  offset: 0,
19620
- units: "s",
20600
+ units: "",
19621
20601
  bits: [],
19622
20602
  components: [],
19623
20603
  isAccumulated: false,
19624
20604
  hasComponents: false,
19625
20605
  subFields: []
19626
20606
  },
19627
- 5: {
19628
- num: 5,
19629
- name: "startCns",
19630
- type: "uint8",
20607
+ 0: {
20608
+ num: 0, // Time interval length in seconds
20609
+ name: "time",
20610
+ type: "uint16",
19631
20611
  array: "false",
19632
20612
  scale: 1,
19633
20613
  offset: 0,
19634
- units: "percent",
20614
+ units: "s",
19635
20615
  bits: [],
19636
20616
  components: [],
19637
20617
  isAccumulated: false,
19638
20618
  hasComponents: false,
19639
20619
  subFields: []
19640
20620
  },
19641
- 6: {
19642
- num: 6,
19643
- name: "endCns",
19644
- type: "uint8",
20621
+ 1: {
20622
+ num: 1, // Total accelerometer energy in the interval
20623
+ name: "energyTotal",
20624
+ type: "uint32",
19645
20625
  array: "false",
19646
20626
  scale: 1,
19647
20627
  offset: 0,
19648
- units: "percent",
20628
+ units: "",
19649
20629
  bits: [],
19650
20630
  components: [],
19651
20631
  isAccumulated: false,
19652
20632
  hasComponents: false,
19653
20633
  subFields: []
19654
20634
  },
19655
- 7: {
19656
- num: 7,
19657
- name: "startN2",
20635
+ 2: {
20636
+ num: 2, // Count of zero crossings
20637
+ name: "zeroCrossCnt",
19658
20638
  type: "uint16",
19659
20639
  array: "false",
19660
20640
  scale: 1,
19661
20641
  offset: 0,
19662
- units: "percent",
20642
+ units: "",
19663
20643
  bits: [],
19664
20644
  components: [],
19665
20645
  isAccumulated: false,
19666
20646
  hasComponents: false,
19667
20647
  subFields: []
19668
20648
  },
19669
- 8: {
19670
- num: 8,
19671
- name: "endN2",
19672
- type: "uint16",
20649
+ 3: {
20650
+ num: 3, // Instance ID of zero crossing algorithm
20651
+ name: "instance",
20652
+ type: "uint8",
19673
20653
  array: "false",
19674
20654
  scale: 1,
19675
20655
  offset: 0,
19676
- units: "percent",
20656
+ units: "",
19677
20657
  bits: [],
19678
20658
  components: [],
19679
20659
  isAccumulated: false,
19680
20660
  hasComponents: false,
19681
20661
  subFields: []
19682
20662
  },
19683
- 9: {
19684
- num: 9,
19685
- name: "o2Toxicity",
20663
+ 4: {
20664
+ num: 4, // Total accelerometer time above threshold in the interval
20665
+ name: "timeAboveThreshold",
19686
20666
  type: "uint16",
19687
20667
  array: "false",
19688
- scale: 1,
20668
+ scale: 25,
19689
20669
  offset: 0,
19690
- units: "OTUs",
20670
+ units: "s",
19691
20671
  bits: [],
19692
20672
  components: [],
19693
20673
  isAccumulated: false,
19694
20674
  hasComponents: false,
19695
20675
  subFields: []
19696
20676
  },
19697
- 10: {
19698
- num: 10,
19699
- name: "diveNumber",
19700
- type: "uint32",
19701
- array: "false",
19702
- scale: 1,
20677
+ },
20678
+ },
20679
+ 78: {
20680
+ num: 78, // Heart rate variability
20681
+ name: "hrv",
20682
+ messagesKey: "hrvMesgs",
20683
+ fields: {
20684
+ 0: {
20685
+ num: 0, // Time between beats
20686
+ name: "time",
20687
+ type: "uint16",
20688
+ array: "true",
20689
+ scale: 1000,
19703
20690
  offset: 0,
19704
- units: "",
20691
+ units: "s",
19705
20692
  bits: [],
19706
20693
  components: [],
19707
20694
  isAccumulated: false,
19708
20695
  hasComponents: false,
19709
20696
  subFields: []
19710
20697
  },
19711
- 11: {
19712
- num: 11,
19713
- name: "bottomTime",
19714
- type: "uint32",
20698
+ },
20699
+ },
20700
+ 290: {
20701
+ num: 290, // Array of heart beat intervals
20702
+ name: "beatIntervals",
20703
+ messagesKey: "beatIntervalsMesgs",
20704
+ fields: {
20705
+ 253: {
20706
+ num: 253,
20707
+ name: "timestamp",
20708
+ type: "dateTime",
19715
20709
  array: "false",
19716
- scale: 1000,
20710
+ scale: 1,
19717
20711
  offset: 0,
19718
- units: "s",
20712
+ units: "",
19719
20713
  bits: [],
19720
20714
  components: [],
19721
20715
  isAccumulated: false,
19722
20716
  hasComponents: false,
19723
20717
  subFields: []
19724
20718
  },
19725
- 12: {
19726
- num: 12, // Average pressure-based surface air consumption
19727
- name: "avgPressureSac",
20719
+ 0: {
20720
+ num: 0, // Milliseconds past date_time
20721
+ name: "timestampMs",
19728
20722
  type: "uint16",
19729
20723
  array: "false",
19730
- scale: 100,
20724
+ scale: 1,
19731
20725
  offset: 0,
19732
- units: "bar/min",
20726
+ units: "ms",
19733
20727
  bits: [],
19734
20728
  components: [],
19735
20729
  isAccumulated: false,
19736
20730
  hasComponents: false,
19737
20731
  subFields: []
19738
20732
  },
19739
- 13: {
19740
- num: 13, // Average volumetric surface air consumption
19741
- name: "avgVolumeSac",
20733
+ 1: {
20734
+ num: 1, // Array of millisecond times between beats
20735
+ name: "time",
19742
20736
  type: "uint16",
19743
- array: "false",
19744
- scale: 100,
20737
+ array: "true",
20738
+ scale: 1,
19745
20739
  offset: 0,
19746
- units: "L/min",
20740
+ units: "ms",
19747
20741
  bits: [],
19748
20742
  components: [],
19749
20743
  isAccumulated: false,
19750
20744
  hasComponents: false,
19751
20745
  subFields: []
19752
20746
  },
19753
- 14: {
19754
- num: 14, // Average respiratory minute volume
19755
- name: "avgRmv",
19756
- type: "uint16",
20747
+ },
20748
+ },
20749
+ 370: {
20750
+ num: 370,
20751
+ name: "hrvStatusSummary",
20752
+ messagesKey: "hrvStatusSummaryMesgs",
20753
+ fields: {
20754
+ 253: {
20755
+ num: 253,
20756
+ name: "timestamp",
20757
+ type: "dateTime",
19757
20758
  array: "false",
19758
- scale: 100,
20759
+ scale: 1,
19759
20760
  offset: 0,
19760
- units: "L/min",
20761
+ units: "",
19761
20762
  bits: [],
19762
20763
  components: [],
19763
20764
  isAccumulated: false,
19764
20765
  hasComponents: false,
19765
20766
  subFields: []
19766
20767
  },
19767
- 15: {
19768
- num: 15, // Time to reach deepest level stop
19769
- name: "descentTime",
19770
- type: "uint32",
20768
+ 0: {
20769
+ num: 0, // 7 day RMSSD average over sleep
20770
+ name: "weeklyAverage",
20771
+ type: "uint16",
19771
20772
  array: "false",
19772
- scale: 1000,
20773
+ scale: 128,
19773
20774
  offset: 0,
19774
- units: "s",
20775
+ units: "ms",
19775
20776
  bits: [],
19776
20777
  components: [],
19777
20778
  isAccumulated: false,
19778
20779
  hasComponents: false,
19779
20780
  subFields: []
19780
20781
  },
19781
- 16: {
19782
- num: 16, // Time after leaving bottom until reaching surface
19783
- name: "ascentTime",
19784
- type: "uint32",
20782
+ 1: {
20783
+ num: 1, // Last night RMSSD average over sleep
20784
+ name: "lastNightAverage",
20785
+ type: "uint16",
19785
20786
  array: "false",
19786
- scale: 1000,
20787
+ scale: 128,
19787
20788
  offset: 0,
19788
- units: "s",
20789
+ units: "ms",
19789
20790
  bits: [],
19790
20791
  components: [],
19791
20792
  isAccumulated: false,
19792
20793
  hasComponents: false,
19793
20794
  subFields: []
19794
20795
  },
19795
- 17: {
19796
- num: 17, // Average ascent rate, not including descents or stops
19797
- name: "avgAscentRate",
19798
- type: "sint32",
20796
+ 2: {
20797
+ num: 2, // 5 minute high RMSSD value over sleep
20798
+ name: "lastNight5MinHigh",
20799
+ type: "uint16",
19799
20800
  array: "false",
19800
- scale: 1000,
20801
+ scale: 128,
19801
20802
  offset: 0,
19802
- units: "m/s",
20803
+ units: "ms",
19803
20804
  bits: [],
19804
20805
  components: [],
19805
20806
  isAccumulated: false,
19806
20807
  hasComponents: false,
19807
20808
  subFields: []
19808
20809
  },
19809
- 22: {
19810
- num: 22, // Average descent rate, not including ascents or stops
19811
- name: "avgDescentRate",
19812
- type: "uint32",
20810
+ 3: {
20811
+ num: 3, // 3 week baseline, upper boundary of low HRV status
20812
+ name: "baselineLowUpper",
20813
+ type: "uint16",
19813
20814
  array: "false",
19814
- scale: 1000,
20815
+ scale: 128,
19815
20816
  offset: 0,
19816
- units: "m/s",
20817
+ units: "ms",
19817
20818
  bits: [],
19818
20819
  components: [],
19819
20820
  isAccumulated: false,
19820
20821
  hasComponents: false,
19821
20822
  subFields: []
19822
20823
  },
19823
- 23: {
19824
- num: 23, // Maximum ascent rate
19825
- name: "maxAscentRate",
19826
- type: "uint32",
20824
+ 4: {
20825
+ num: 4, // 3 week baseline, lower boundary of balanced HRV status
20826
+ name: "baselineBalancedLower",
20827
+ type: "uint16",
19827
20828
  array: "false",
19828
- scale: 1000,
20829
+ scale: 128,
19829
20830
  offset: 0,
19830
- units: "m/s",
20831
+ units: "ms",
19831
20832
  bits: [],
19832
20833
  components: [],
19833
20834
  isAccumulated: false,
19834
20835
  hasComponents: false,
19835
20836
  subFields: []
19836
20837
  },
19837
- 24: {
19838
- num: 24, // Maximum descent rate
19839
- name: "maxDescentRate",
19840
- type: "uint32",
20838
+ 5: {
20839
+ num: 5, // 3 week baseline, upper boundary of balanced HRV status
20840
+ name: "baselineBalancedUpper",
20841
+ type: "uint16",
19841
20842
  array: "false",
19842
- scale: 1000,
20843
+ scale: 128,
19843
20844
  offset: 0,
19844
- units: "m/s",
20845
+ units: "ms",
19845
20846
  bits: [],
19846
20847
  components: [],
19847
20848
  isAccumulated: false,
19848
20849
  hasComponents: false,
19849
20850
  subFields: []
19850
20851
  },
19851
- 25: {
19852
- num: 25, // Time spent neither ascending nor descending
19853
- name: "hangTime",
19854
- type: "uint32",
20852
+ 6: {
20853
+ num: 6,
20854
+ name: "status",
20855
+ type: "hrvStatus",
19855
20856
  array: "false",
19856
- scale: 1000,
20857
+ scale: 1,
19857
20858
  offset: 0,
19858
- units: "s",
20859
+ units: "",
19859
20860
  bits: [],
19860
20861
  components: [],
19861
20862
  isAccumulated: false,
@@ -19864,19 +20865,33 @@ const Profile = {
19864
20865
  },
19865
20866
  },
19866
20867
  },
19867
- 78: {
19868
- num: 78, // Heart rate variability
19869
- name: "hrv",
19870
- messagesKey: "hrvMesgs",
20868
+ 371: {
20869
+ num: 371,
20870
+ name: "hrvValue",
20871
+ messagesKey: "hrvValueMesgs",
19871
20872
  fields: {
20873
+ 253: {
20874
+ num: 253,
20875
+ name: "timestamp",
20876
+ type: "dateTime",
20877
+ array: "false",
20878
+ scale: 1,
20879
+ offset: 0,
20880
+ units: "",
20881
+ bits: [],
20882
+ components: [],
20883
+ isAccumulated: false,
20884
+ hasComponents: false,
20885
+ subFields: []
20886
+ },
19872
20887
  0: {
19873
- num: 0, // Time between beats
19874
- name: "time",
20888
+ num: 0, // 5 minute RMSSD
20889
+ name: "value",
19875
20890
  type: "uint16",
19876
- array: "true",
19877
- scale: 1000,
20891
+ array: "false",
20892
+ scale: 128,
19878
20893
  offset: 0,
19879
- units: "s",
20894
+ units: "ms",
19880
20895
  bits: [],
19881
20896
  components: [],
19882
20897
  isAccumulated: false,
@@ -19885,10 +20900,10 @@ const Profile = {
19885
20900
  },
19886
20901
  },
19887
20902
  },
19888
- 290: {
19889
- num: 290, // Array of heart beat intervals
19890
- name: "beatIntervals",
19891
- messagesKey: "beatIntervalsMesgs",
20903
+ 372: {
20904
+ num: 372, // Raw Beat-to-Beat Interval values
20905
+ name: "rawBbi",
20906
+ messagesKey: "rawBbiMesgs",
19892
20907
  fields: {
19893
20908
  253: {
19894
20909
  num: 253,
@@ -19905,7 +20920,7 @@ const Profile = {
19905
20920
  subFields: []
19906
20921
  },
19907
20922
  0: {
19908
- num: 0, // Milliseconds past date_time
20923
+ num: 0, // ms since last overnight_raw_bbi message
19909
20924
  name: "timestampMs",
19910
20925
  type: "uint16",
19911
20926
  array: "false",
@@ -19919,7 +20934,21 @@ const Profile = {
19919
20934
  subFields: []
19920
20935
  },
19921
20936
  1: {
19922
- num: 1, // Array of millisecond times between beats
20937
+ num: 1, // 1 bit for gap indicator, 1 bit for quality indicator, and 14 bits for Beat-to-Beat interval values in whole-integer millisecond resolution
20938
+ name: "data",
20939
+ type: "uint16",
20940
+ array: "true",
20941
+ scale: [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, ],
20942
+ offset: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ],
20943
+ units: ["", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", ],
20944
+ bits: [14,1,1,14,1,1,14,1,1,14,1,1,14,1,1,14,1,1,14,1,1,14,1,1,14,1,1,14,1,1,14,1,1,14,1,1,14,1,1,14,1,1,14,1,1,],
20945
+ components: ["2", "3", "4", "2", "3", "4", "2", "3", "4", "2", "3", "4", "2", "3", "4", "2", "3", "4", "2", "3", "4", "2", "3", "4", "2", "3", "4", "2", "3", "4", "2", "3", "4", "2", "3", "4", "2", "3", "4", "2", "3", "4", "2", "3", "4", ],
20946
+ isAccumulated: false,
20947
+ hasComponents: true,
20948
+ subFields: []
20949
+ },
20950
+ 2: {
20951
+ num: 2, // Array of millisecond times between beats
19923
20952
  name: "time",
19924
20953
  type: "uint16",
19925
20954
  array: "true",
@@ -19932,12 +20961,40 @@ const Profile = {
19932
20961
  hasComponents: false,
19933
20962
  subFields: []
19934
20963
  },
20964
+ 3: {
20965
+ num: 3,
20966
+ name: "quality",
20967
+ type: "uint8",
20968
+ array: "true",
20969
+ scale: 1,
20970
+ offset: 0,
20971
+ units: "",
20972
+ bits: [],
20973
+ components: [],
20974
+ isAccumulated: false,
20975
+ hasComponents: false,
20976
+ subFields: []
20977
+ },
20978
+ 4: {
20979
+ num: 4,
20980
+ name: "gap",
20981
+ type: "uint8",
20982
+ array: "true",
20983
+ scale: 1,
20984
+ offset: 0,
20985
+ units: "",
20986
+ bits: [],
20987
+ components: [],
20988
+ isAccumulated: false,
20989
+ hasComponents: false,
20990
+ subFields: []
20991
+ },
19935
20992
  },
19936
20993
  },
19937
- 370: {
19938
- num: 370,
19939
- name: "hrvStatusSummary",
19940
- messagesKey: "hrvStatusSummaryMesgs",
20994
+ 297: {
20995
+ num: 297,
20996
+ name: "respirationRate",
20997
+ messagesKey: "respirationRateMesgs",
19941
20998
  fields: {
19942
20999
  253: {
19943
21000
  num: 253,
@@ -19954,94 +21011,87 @@ const Profile = {
19954
21011
  subFields: []
19955
21012
  },
19956
21013
  0: {
19957
- num: 0, // 7 day RMSSD average over sleep
19958
- name: "weeklyAverage",
19959
- type: "uint16",
21014
+ num: 0, // Breaths * 100 /min, -300 indicates invalid, -200 indicates large motion, -100 indicates off wrist
21015
+ name: "respirationRate",
21016
+ type: "sint16",
19960
21017
  array: "false",
19961
- scale: 128,
21018
+ scale: 100,
19962
21019
  offset: 0,
19963
- units: "ms",
21020
+ units: "breaths/min",
19964
21021
  bits: [],
19965
21022
  components: [],
19966
21023
  isAccumulated: false,
19967
21024
  hasComponents: false,
19968
21025
  subFields: []
19969
21026
  },
19970
- 1: {
19971
- num: 1, // Last night RMSSD average over sleep
19972
- name: "lastNightAverage",
19973
- type: "uint16",
21027
+ },
21028
+ },
21029
+ 387: {
21030
+ num: 387, // Specifically used for XERO products.
21031
+ name: "chronoShotSession",
21032
+ messagesKey: "chronoShotSessionMesgs",
21033
+ fields: {
21034
+ 253: {
21035
+ num: 253,
21036
+ name: "timestamp",
21037
+ type: "dateTime",
19974
21038
  array: "false",
19975
- scale: 128,
21039
+ scale: 1,
19976
21040
  offset: 0,
19977
- units: "ms",
21041
+ units: "",
19978
21042
  bits: [],
19979
21043
  components: [],
19980
21044
  isAccumulated: false,
19981
21045
  hasComponents: false,
19982
21046
  subFields: []
19983
21047
  },
19984
- 2: {
19985
- num: 2, // 5 minute high RMSSD value over sleep
19986
- name: "lastNight5MinHigh",
19987
- type: "uint16",
21048
+ 0: {
21049
+ num: 0,
21050
+ name: "minSpeed",
21051
+ type: "uint32",
19988
21052
  array: "false",
19989
- scale: 128,
21053
+ scale: 1000,
19990
21054
  offset: 0,
19991
- units: "ms",
21055
+ units: "m/s",
19992
21056
  bits: [],
19993
21057
  components: [],
19994
21058
  isAccumulated: false,
19995
21059
  hasComponents: false,
19996
21060
  subFields: []
19997
21061
  },
19998
- 3: {
19999
- num: 3, // 3 week baseline, upper boundary of low HRV status
20000
- name: "baselineLowUpper",
20001
- type: "uint16",
21062
+ 1: {
21063
+ num: 1,
21064
+ name: "maxSpeed",
21065
+ type: "uint32",
20002
21066
  array: "false",
20003
- scale: 128,
21067
+ scale: 1000,
20004
21068
  offset: 0,
20005
- units: "ms",
21069
+ units: "m/s",
20006
21070
  bits: [],
20007
21071
  components: [],
20008
21072
  isAccumulated: false,
20009
21073
  hasComponents: false,
20010
21074
  subFields: []
20011
21075
  },
20012
- 4: {
20013
- num: 4, // 3 week baseline, lower boundary of balanced HRV status
20014
- name: "baselineBalancedLower",
20015
- type: "uint16",
21076
+ 2: {
21077
+ num: 2,
21078
+ name: "avgSpeed",
21079
+ type: "uint32",
20016
21080
  array: "false",
20017
- scale: 128,
21081
+ scale: 1000,
20018
21082
  offset: 0,
20019
- units: "ms",
21083
+ units: "m/s",
20020
21084
  bits: [],
20021
21085
  components: [],
20022
21086
  isAccumulated: false,
20023
21087
  hasComponents: false,
20024
21088
  subFields: []
20025
21089
  },
20026
- 5: {
20027
- num: 5, // 3 week baseline, upper boundary of balanced HRV status
20028
- name: "baselineBalancedUpper",
21090
+ 3: {
21091
+ num: 3,
21092
+ name: "shotCount",
20029
21093
  type: "uint16",
20030
21094
  array: "false",
20031
- scale: 128,
20032
- offset: 0,
20033
- units: "ms",
20034
- bits: [],
20035
- components: [],
20036
- isAccumulated: false,
20037
- hasComponents: false,
20038
- subFields: []
20039
- },
20040
- 6: {
20041
- num: 6,
20042
- name: "status",
20043
- type: "hrvStatus",
20044
- array: "false",
20045
21095
  scale: 1,
20046
21096
  offset: 0,
20047
21097
  units: "",
@@ -20051,17 +21101,10 @@ const Profile = {
20051
21101
  hasComponents: false,
20052
21102
  subFields: []
20053
21103
  },
20054
- },
20055
- },
20056
- 371: {
20057
- num: 371,
20058
- name: "hrvValue",
20059
- messagesKey: "hrvValueMesgs",
20060
- fields: {
20061
- 253: {
20062
- num: 253,
20063
- name: "timestamp",
20064
- type: "dateTime",
21104
+ 4: {
21105
+ num: 4,
21106
+ name: "projectileType",
21107
+ type: "projectileType",
20065
21108
  array: "false",
20066
21109
  scale: 1,
20067
21110
  offset: 0,
@@ -20072,14 +21115,14 @@ const Profile = {
20072
21115
  hasComponents: false,
20073
21116
  subFields: []
20074
21117
  },
20075
- 0: {
20076
- num: 0, // 5 minute RMSSD
20077
- name: "value",
20078
- type: "uint16",
21118
+ 5: {
21119
+ num: 5,
21120
+ name: "grainWeight",
21121
+ type: "uint32",
20079
21122
  array: "false",
20080
- scale: 128,
21123
+ scale: 10,
20081
21124
  offset: 0,
20082
- units: "ms",
21125
+ units: "gr",
20083
21126
  bits: [],
20084
21127
  components: [],
20085
21128
  isAccumulated: false,
@@ -20088,10 +21131,10 @@ const Profile = {
20088
21131
  },
20089
21132
  },
20090
21133
  },
20091
- 297: {
20092
- num: 297,
20093
- name: "respirationRate",
20094
- messagesKey: "respirationRateMesgs",
21134
+ 388: {
21135
+ num: 388, // Specifically used for XERO products.
21136
+ name: "chronoShotData",
21137
+ messagesKey: "chronoShotDataMesgs",
20095
21138
  fields: {
20096
21139
  253: {
20097
21140
  num: 253,
@@ -20108,13 +21151,27 @@ const Profile = {
20108
21151
  subFields: []
20109
21152
  },
20110
21153
  0: {
20111
- num: 0, // Breaths * 100 /min, -300 indicates invalid, -200 indicates large motion, -100 indicates off wrist
20112
- name: "respirationRate",
20113
- type: "sint16",
21154
+ num: 0,
21155
+ name: "shotSpeed",
21156
+ type: "uint32",
20114
21157
  array: "false",
20115
- scale: 100,
21158
+ scale: 1000,
20116
21159
  offset: 0,
20117
- units: "breaths/min",
21160
+ units: "m/s",
21161
+ bits: [],
21162
+ components: [],
21163
+ isAccumulated: false,
21164
+ hasComponents: false,
21165
+ subFields: []
21166
+ },
21167
+ 1: {
21168
+ num: 1,
21169
+ name: "shotNum",
21170
+ type: "uint16",
21171
+ array: "false",
21172
+ scale: 1,
21173
+ offset: 0,
21174
+ units: "",
20118
21175
  bits: [],
20119
21176
  components: [],
20120
21177
  isAccumulated: false,
@@ -20451,6 +21508,83 @@ const Profile = {
20451
21508
  subFields: []
20452
21509
  },
20453
21510
  },
21511
+ },
21512
+ 398: {
21513
+ num: 398,
21514
+ name: "skinTempOvernight",
21515
+ messagesKey: "skinTempOvernightMesgs",
21516
+ fields: {
21517
+ 253: {
21518
+ num: 253,
21519
+ name: "timestamp",
21520
+ type: "dateTime",
21521
+ array: "false",
21522
+ scale: 1,
21523
+ offset: 0,
21524
+ units: "",
21525
+ bits: [],
21526
+ components: [],
21527
+ isAccumulated: false,
21528
+ hasComponents: false,
21529
+ subFields: []
21530
+ },
21531
+ 0: {
21532
+ num: 0,
21533
+ name: "localTimestamp",
21534
+ type: "localDateTime",
21535
+ array: "false",
21536
+ scale: 1,
21537
+ offset: 0,
21538
+ units: "",
21539
+ bits: [],
21540
+ components: [],
21541
+ isAccumulated: false,
21542
+ hasComponents: false,
21543
+ subFields: []
21544
+ },
21545
+ 1: {
21546
+ num: 1, // The average overnight deviation from baseline temperature in degrees C
21547
+ name: "averageDeviation",
21548
+ type: "float32",
21549
+ array: "false",
21550
+ scale: 1,
21551
+ offset: 0,
21552
+ units: "",
21553
+ bits: [],
21554
+ components: [],
21555
+ isAccumulated: false,
21556
+ hasComponents: false,
21557
+ subFields: []
21558
+ },
21559
+ 2: {
21560
+ num: 2, // The average 7 day overnight deviation from baseline temperature in degrees C
21561
+ name: "average7DayDeviation",
21562
+ type: "float32",
21563
+ array: "false",
21564
+ scale: 1,
21565
+ offset: 0,
21566
+ units: "",
21567
+ bits: [],
21568
+ components: [],
21569
+ isAccumulated: false,
21570
+ hasComponents: false,
21571
+ subFields: []
21572
+ },
21573
+ 4: {
21574
+ num: 4, // Final overnight temperature value
21575
+ name: "nightlyValue",
21576
+ type: "float32",
21577
+ array: "false",
21578
+ scale: 1,
21579
+ offset: 0,
21580
+ units: "",
21581
+ bits: [],
21582
+ components: [],
21583
+ isAccumulated: false,
21584
+ hasComponents: false,
21585
+ subFields: []
21586
+ },
21587
+ },
20454
21588
  },
20455
21589
  105: {
20456
21590
  num: 105,
@@ -20576,18 +21710,34 @@ types: {
20576
21710
  269: "spo2Data",
20577
21711
  275: "sleepLevel",
20578
21712
  285: "jump",
21713
+ 289: "aadAccelFeatures",
20579
21714
  290: "beatIntervals",
20580
21715
  297: "respirationRate",
21716
+ 302: "hsaAccelerometerData",
21717
+ 304: "hsaStepData",
21718
+ 305: "hsaSpo2Data",
21719
+ 306: "hsaStressData",
21720
+ 307: "hsaRespirationData",
21721
+ 308: "hsaHeartRateData",
20581
21722
  312: "split",
20582
21723
  313: "splitSummary",
21724
+ 314: "hsaBodyBatteryData",
21725
+ 315: "hsaEvent",
20583
21726
  317: "climbPro",
20584
21727
  319: "tankUpdate",
20585
21728
  323: "tankSummary",
20586
21729
  346: "sleepAssessment",
20587
21730
  370: "hrvStatusSummary",
20588
21731
  371: "hrvValue",
21732
+ 372: "rawBbi",
20589
21733
  375: "deviceAuxBatteryInfo",
21734
+ 376: "hsaGyroscopeData",
21735
+ 387: "chronoShotSession",
21736
+ 388: "chronoShotData",
21737
+ 389: "hsaConfigurationData",
20590
21738
  393: "diveApneaAlarm",
21739
+ 398: "skinTempOvernight",
21740
+ 409: "hsaWristTemperatureData", // Message number for the HSA wrist temperature data message
20591
21741
  0xFF00: "mfgRangeMin", // 0xFF00 - 0xFFFE reserved for manufacturer specific messages
20592
21742
  0xFFFE: "mfgRangeMax", // 0xFF00 - 0xFFFE reserved for manufacturer specific messages
20593
21743
  },
@@ -20933,14 +22083,25 @@ types: {
20933
22083
  46: "jumpmaster",
20934
22084
  47: "boxing",
20935
22085
  48: "floorClimbing",
22086
+ 49: "baseball",
20936
22087
  53: "diving",
20937
22088
  62: "hiit",
20938
22089
  64: "racket",
20939
22090
  65: "wheelchairPushWalk",
20940
22091
  66: "wheelchairPushRun",
20941
22092
  67: "meditation",
22093
+ 69: "discGolf",
22094
+ 71: "cricket",
22095
+ 72: "rugby",
22096
+ 73: "hockey",
22097
+ 74: "lacrosse",
22098
+ 75: "volleyball",
20942
22099
  76: "waterTubing",
20943
22100
  77: "wakesurfing",
22101
+ 80: "mixedMartialArts",
22102
+ 82: "snorkeling",
22103
+ 83: "dance",
22104
+ 84: "jumpRope",
20944
22105
  254: "all", // All is for goals only to include all sports.
20945
22106
  },
20946
22107
  sportBits0: {
@@ -21081,6 +22242,10 @@ types: {
21081
22242
  86: "indoorWheelchairWalk",
21082
22243
  87: "indoorWheelchairRun",
21083
22244
  88: "indoorHandCycling",
22245
+ 94: "squash",
22246
+ 95: "badminton",
22247
+ 96: "racquetball",
22248
+ 97: "tableTennis",
21084
22249
  110: "flyCanopy", // Flying
21085
22250
  111: "flyParaglide", // Flying
21086
22251
  112: "flyParamotor", // Flying
@@ -21616,6 +22781,8 @@ types: {
21616
22781
  325: "aeroSensor",
21617
22782
  326: "nike",
21618
22783
  327: "magicshine",
22784
+ 328: "ictrainer",
22785
+ 329: "absoluteCycling",
21619
22786
  5759: "actigraphcorp",
21620
22787
  },
21621
22788
  garminProduct: {
@@ -21635,6 +22802,7 @@ types: {
21635
22802
  14: "fr225SingleByteProductId", // fr225 model for HRM ANT+ messaging
21636
22803
  15: "gen3BsmSingleByteProductId", // gen3_bsm model for Bike Speed ANT+ messaging
21637
22804
  16: "gen3BcmSingleByteProductId", // gen3_bcm model for Bike Cadence ANT+ messaging
22805
+ 22: "hrmFitSingleByteProductId",
21638
22806
  255: "oHR", // Garmin Wearable Optical Heart Rate Sensor for ANT+ HR Profile Broadcasting
21639
22807
  473: "fr301China",
21640
22808
  474: "fr301Japan",
@@ -22003,6 +23171,8 @@ types: {
22003
23171
  4135: "tactix7",
22004
23172
  4155: "instinctCrossover",
22005
23173
  4169: "edgeExplore2",
23174
+ 4222: "descentMk3",
23175
+ 4223: "descentMk3i",
22006
23176
  4233: "approachS70",
22007
23177
  4257: "fr265Large",
22008
23178
  4258: "fr265Small",
@@ -22029,9 +23199,13 @@ types: {
22029
23199
  4374: "fenix7sProSolar",
22030
23200
  4375: "fenix7ProSolar",
22031
23201
  4376: "fenix7xProSolar",
23202
+ 4380: "lily2",
22032
23203
  4394: "instinct2x",
22033
23204
  4426: "vivoactive5",
23205
+ 4432: "fr165",
23206
+ 4433: "fr165Music",
22034
23207
  4442: "descentT2",
23208
+ 4446: "hrmFit",
22035
23209
  4472: "marqGen2Commander",
22036
23210
  4556: "d2Mach1Pro",
22037
23211
  10007: "sdm4", // SDM4 footpod
@@ -22444,8 +23618,12 @@ types: {
22444
23618
  6: "qom",
22445
23619
  7: "pr",
22446
23620
  8: "goal",
22447
- 9: "rival",
23621
+ 9: "carrot",
22448
23622
  10: "clubLeader",
23623
+ 11: "rival",
23624
+ 12: "last",
23625
+ 13: "recentBest",
23626
+ 14: "courseRecord",
22449
23627
  },
22450
23628
  segmentDeleteStatus: {
22451
23629
  0: "doNotDelete",
@@ -24342,6 +25520,14 @@ types: {
24342
25520
  0: "openCircuit",
24343
25521
  1: "closedCircuitDiluent",
24344
25522
  },
25523
+ projectileType: {
25524
+ 0: "arrow", // Arrow projectile type
25525
+ 1: "rifleCartridge", // Rifle cartridge projectile type
25526
+ 2: "pistolCartridge", // Pistol cartridge projectile type
25527
+ 3: "shotshell", // Shotshell projectile type
25528
+ 4: "airRiflePellet", // Air rifle pellet projectile type
25529
+ 5: "other", // Other projectile type
25530
+ },
24345
25531
  faveroProduct: {
24346
25532
  10: "assiomaUno",
24347
25533
  12: "assiomaDuo",
@@ -24498,6 +25684,17 @@ MesgNum : {
24498
25684
  HR: 132,
24499
25685
  STRESS_LEVEL: 227,
24500
25686
  MAX_MET_DATA: 229,
25687
+ HSA_BODY_BATTERY_DATA: 314,
25688
+ HSA_EVENT: 315,
25689
+ HSA_ACCELEROMETER_DATA: 302,
25690
+ HSA_GYROSCOPE_DATA: 376,
25691
+ HSA_STEP_DATA: 304,
25692
+ HSA_SPO2_DATA: 305,
25693
+ HSA_STRESS_DATA: 306,
25694
+ HSA_RESPIRATION_DATA: 307,
25695
+ HSA_HEART_RATE_DATA: 308,
25696
+ HSA_CONFIGURATION_DATA: 389,
25697
+ HSA_WRIST_TEMPERATURE_DATA: 409,
24501
25698
  MEMO_GLOB: 145,
24502
25699
  SLEEP_LEVEL: 275,
24503
25700
  ANT_CHANNEL_ID: 82,
@@ -24507,14 +25704,19 @@ MesgNum : {
24507
25704
  EXD_DATA_FIELD_CONFIGURATION: 201,
24508
25705
  EXD_DATA_CONCEPT_CONFIGURATION: 202,
24509
25706
  DIVE_SUMMARY: 268,
25707
+ AAD_ACCEL_FEATURES: 289,
24510
25708
  HRV: 78,
24511
25709
  BEAT_INTERVALS: 290,
24512
25710
  HRV_STATUS_SUMMARY: 370,
24513
25711
  HRV_VALUE: 371,
25712
+ RAW_BBI: 372,
24514
25713
  RESPIRATION_RATE: 297,
25714
+ CHRONO_SHOT_SESSION: 387,
25715
+ CHRONO_SHOT_DATA: 388,
24515
25716
  TANK_UPDATE: 319,
24516
25717
  TANK_SUMMARY: 323,
24517
25718
  SLEEP_ASSESSMENT: 346,
25719
+ SKIN_TEMP_OVERNIGHT: 398,
24518
25720
  PAD: 105,
24519
25721
  }
24520
25722
  }