fit4ruby 3.2.0 → 3.7.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.
@@ -126,7 +126,7 @@ module Fit4Ruby
126
126
  when 'date_time'
127
127
  value = time_to_fit_time(value)
128
128
  end
129
- if value.is_a?(Float) && @opts[:scale].nil?
129
+ if @type != 'float32' && value.is_a?(Float) && @opts[:scale].nil?
130
130
  Log.error "Field #{@name} must not be a Float value"
131
131
  end
132
132
 
@@ -223,6 +223,11 @@ module Fit4Ruby
223
223
  register_field_by_number(field, number)
224
224
  end
225
225
 
226
+ # Check if a field with the given name already exists?
227
+ def has_field?(name)
228
+ return @fields_by_name.include?(name)
229
+ end
230
+
226
231
  # Define a new set of Field alternatives for this message definition.
227
232
  def alt_field(number, ref_field, &block)
228
233
  unless @fields_by_name.include?(ref_field)
@@ -43,13 +43,18 @@ module Fit4Ruby
43
43
  field 13, 'uint8', 'undocumented_field_13'
44
44
  field 14, 'uint8', 'undocumented_field_14'
45
45
  field 15, 'uint8', 'undocumented_field_15'
46
+ field 16, 'enum', 'undocumented_field_16'
47
+ field 17, 'enum', 'undocumented_field_17'
48
+ field 18, 'enum', 'undocumented_field_18'
46
49
  field 22, 'enum', 'undocumented_field_22'
47
50
  field 23, 'enum', 'undocumented_field_23'
48
51
  field 25, 'enum', 'undocumented_field_25'
49
52
  field 26, 'enum', 'undocumented_field_26'
50
53
  field 28, 'enum', 'undocumented_field_28'
54
+ field 29, 'enum', 'undocumented_field_29'
51
55
  field 30, 'enum', 'undocumented_field_30'
52
56
  field 31, 'enum', 'undocumented_field_31'
57
+ field 33, 'uint8', 'undocumented_field_33'
53
58
  field 34, 'enum', 'undocumented_field_34'
54
59
  field 35, 'enum', 'undocumented_field_35'
55
60
  field 36, 'enum', 'activity_tracker_enabled'
@@ -90,11 +95,14 @@ module Fit4Ruby
90
95
  field 85, 'enum', 'undocumented_field_85'
91
96
  field 87, 'enum', 'undocumented_field_87'
92
97
  field 90, 'uint32', 'auto_activity_detect'
98
+ field 91, 'uint8z', 'undocumented_field_91'
93
99
  field 94, 'uint8', 'number_of_screens'
94
100
  field 96, 'enum', 'undocumented_field_96'
95
101
  field 97, 'uint8z', 'undocumented_field_97'
102
+ field 98, 'enum', 'undocumented_field_98'
96
103
  field 101, 'enum', 'undocumented_field_101'
97
104
  field 104, 'enum', 'undocumented_field_104'
105
+ field 106, 'enum', 'undocumented_field_106'
98
106
  field 107, 'enum', 'undocumented_field_107'
99
107
  field 108, 'enum', 'undocumented_field_108'
100
108
  field 109, 'enum', 'undocumented_field_109'
@@ -103,6 +111,7 @@ module Fit4Ruby
103
111
  field 112, 'enum', 'undocumented_field_112'
104
112
  field 116, 'enum', 'undocumented_field_116'
105
113
  field 117, 'enum', 'undocumented_field_117'
114
+ field 121, 'enum', 'undocumented_field_121'
106
115
  field 124, 'uint8', 'undocumented_field_124'
107
116
  field 125, 'uint8', 'undocumented_field_125'
108
117
  field 126, 'enum', 'undocumented_field_126'
@@ -120,8 +129,16 @@ module Fit4Ruby
120
129
  field 142, 'uint8', 'undocumented_field_142'
121
130
  field 143, 'uint8', 'undocumented_field_143'
122
131
  field 144, 'enum', 'true_up_enabled'
132
+ field 145, 'enum', 'undocumented_field_145'
123
133
  field 148, 'enum', 'undocumented_field_148'
124
134
  field 149, 'enum', 'undocumented_field_149'
135
+ field 151, 'enum', 'undocumented_field_151'
136
+ field 160, 'enum', 'undocumented_field_160'
137
+ field 163, 'enum', 'undocumented_field_163'
138
+ field 164, 'uint8', 'undocumented_field_164'
139
+ field 167, 'string', 'undocumented_field_167'
140
+ field 168, 'enum', 'undocumented_field_168'
141
+ field 170, 'uint8', 'undocumented_field_170'
125
142
 
126
143
  message 3, 'user_profile'
127
144
  field 0, 'string', 'friendly_name'
@@ -133,9 +150,12 @@ module Fit4Ruby
133
150
  field 6, 'enum', 'elev_setting'
134
151
  field 7, 'enum', 'weight_setting'
135
152
  field 8, 'uint8', 'resting_heart_rate', :unit => 'bpm'
153
+ field 10, 'uint8', 'default_max_biking_heart_rate', :dict => 'display_heart'
154
+ field 11, 'uint8', 'default_max_heart_rate', :dict => 'display_heart'
136
155
  field 12, 'enum', 'hr_setting', :dict => 'display_heart'
137
156
  field 13, 'enum', 'speed_setting', :dict => 'display_measure'
138
157
  field 14, 'enum', 'dist_setting', :dict => 'display_measure'
158
+ field 16, 'enum', 'power_setting'
139
159
  field 17, 'enum', 'activity_class', :scale => 10
140
160
  field 18, 'enum', 'position_setting', :dict => 'display_position'
141
161
  field 21, 'enum', 'temperature_setting', :dict => 'display_measure'
@@ -149,14 +169,20 @@ module Fit4Ruby
149
169
  field 34, 'uint16', 'undocumented_field_34'
150
170
  field 35, 'uint32', 'undocumented_field_35'
151
171
  field 36, 'uint8', 'undocumented_field_36'
152
- field 37, 'uint16', 'undocumented_field_37'
172
+ field 37, 'uint16', 'functional_threshold_speed', :scale => 36, :unit => 'm/s'
153
173
  field 38, 'uint16', 'undocumented_field_38'
154
174
  field 39, 'float32', 'undocumented_field_39'
155
175
  field 40, 'float32', 'undocumented_field_40'
156
176
  field 41, 'uint32', 'time_last_lthr_update', :type => 'date_time'
157
177
  field 42, 'uint32', 'undocumented_field_42'
158
178
  field 43, 'enum', 'undocumented_field_43'
179
+ field 44, 'uint8', 'undocumented_field_44'
180
+ field 45, 'uint8z', 'undocumented_field_45'
159
181
  field 47, 'enum', 'undocumented_field_47'
182
+ field 52, 'enum', 'undocumented_field_52'
183
+ field 53, 'uint8', 'undocumented_field_53'
184
+ field 54, 'uint8', 'undocumented_field_54'
185
+ field 57, 'enum', 'undocumented_field_57'
160
186
  field 253, 'uint32', 'timestamp', :type => 'date_time'
161
187
 
162
188
  message 5, 'sdm_profile'
@@ -212,6 +238,9 @@ module Fit4Ruby
212
238
  field 10, 'enum', 'undocumented_field_10'
213
239
  field 11, 'enum', 'undocumented_field_11'
214
240
  field 12, 'enum', 'undocumented_field_12'
241
+ field 13, 'enum', 'undocumented_field_13'
242
+ field 15, 'uint16', 'undocumented_field_15'
243
+ field 16, 'uint32', 'undocumented_field_16'
215
244
  field 254, 'uint16', 'message_index'
216
245
 
217
246
  message 12, 'sport'
@@ -221,13 +250,18 @@ module Fit4Ruby
221
250
  field 4, 'uint16', 'undocumented_field_4'
222
251
  field 5, 'enum', 'undocumented_field_5'
223
252
  field 6, 'enum', 'undocumented_field_6'
253
+ field 7, 'uint8', 'undocumented_field_7'
254
+ field 8, 'uint8', 'undocumented_field_8'
224
255
  field 9, 'uint8', 'undocumented_field_9'
225
256
  field 10, 'uint8', 'undocumented_field_10', :array => true
226
257
  field 11, 'enum', 'undocumented_field_11'
227
258
  field 12, 'uint8', 'undocumented_field_12', :array => true
228
259
  field 13, 'enum', 'undocumented_field_13'
229
260
  field 15, 'enum', 'undocumented_field_15'
261
+ field 17, 'enum', 'undocumented_field_17'
262
+ field 18, 'enum', 'undocumented_field_18'
230
263
  field 19, 'enum', 'undocumented_field_19', :array => true
264
+ field 21, 'enum', 'undocumented_field_21'
231
265
 
232
266
  # Not part of the official ANT SDK doc.
233
267
  message 13, 'undocumented_13'
@@ -239,16 +273,21 @@ module Fit4Ruby
239
273
  field 6, 'sint32', 'undocumented_field_6'
240
274
  field 7, 'enum', 'undocumented_field_7'
241
275
  field 8, 'uint16', 'undocumented_field_8'
276
+ field 9, 'enum', 'undocumented_field_9'
277
+ field 10, 'uint16', 'undocumented_field_10'
242
278
  field 11, 'uint8', 'undocumented_field_11'
243
279
  field 12, 'enum', 'undocumented_field_12'
244
280
  field 13, 'enum', 'undocumented_field_13'
245
281
  field 14, 'enum', 'undocumented_field_14'
246
282
  field 15, 'enum', 'undocumented_field_15'
247
283
  field 16, 'enum', 'undocumented_field_16'
284
+ field 18, 'enum', 'undocumented_field_18'
285
+ field 19, 'uint16', 'undocumented_field_19'
248
286
  field 21, 'enum', 'undocumented_field_21'
249
287
  field 22, 'uint16', 'undocumented_field_22'
250
288
  field 23, 'enum', 'undocumented_field_23'
251
289
  field 24, 'enum', 'undocumented_field_24'
290
+ field 25, 'enum', 'undocumented_field_25'
252
291
  field 27, 'enum', 'undocumented_field_27'
253
292
  field 28, 'enum', 'undocumented_field_28'
254
293
  field 29, 'enum', 'undocumented_field_29'
@@ -271,17 +310,36 @@ module Fit4Ruby
271
310
  field 46, 'enum', 'undocumented_field_46'
272
311
  field 47, 'enum', 'undocumented_field_47'
273
312
  field 48, 'enum', 'undocumented_field_48'
313
+ field 50, 'enum', 'undocumented_field_50'
314
+ field 51, 'enum', 'undocumented_field_51'
315
+ field 52, 'uint16', 'undocumented_field_52'
274
316
  field 53, 'enum', 'undocumented_field_53'
275
317
  field 54, 'uint32', 'undocumented_field_54'
276
318
  field 55, 'enum', 'undocumented_field_55'
277
319
  field 57, 'enum', 'undocumented_field_57'
320
+ field 58, 'enum', 'undocumented_field_58'
278
321
  field 60, 'enum', 'undocumented_field_60'
322
+ field 61, 'enum', 'undocumented_field_61'
279
323
  field 62, 'enum', 'undocumented_field_62'
280
324
  field 63, 'enum', 'undocumented_field_63'
281
325
  field 64, 'uint16', 'undocumented_field_64'
282
326
  field 65, 'enum', 'undocumented_field_65'
283
327
  field 66, 'enum', 'undocumented_field_66'
328
+ field 67, 'enum', 'undocumented_field_67'
329
+ field 68, 'sint32','undocumented_field_68'
330
+ field 69, 'uint16', 'undocumented_field_69'
331
+ field 70, 'enum', 'undocumented_field_70'
332
+ field 71, 'enum', 'undocumented_field_71'
333
+ field 72, 'enum', 'undocumented_field_72'
334
+ field 73, 'sint32', 'undocumented_field_73'
335
+ field 74, 'sint32', 'undocumented_field_74'
336
+ field 75, 'enum', 'undocumented_field_75'
284
337
  field 76, 'enum', 'undocumented_field_76'
338
+ field 78, 'enum', 'undocumented_field_78'
339
+ field 79, 'enum', 'undocumented_field_79'
340
+ field 81, 'enum', 'undocumented_field_81'
341
+ field 82, 'enum', 'undocumented_field_82'
342
+ field 83, 'enum', 'undocumented_field_83'
285
343
  field 254, 'uint16', 'message_index'
286
344
 
287
345
  message 18, 'session'
@@ -339,7 +397,7 @@ module Fit4Ruby
339
397
  field 44, 'uint16', 'pool_length', :scale => 100, :unit => 'm'
340
398
  field 45, 'uint16', 'undefined_value_45'
341
399
  field 46, 'enum', 'pool_length_unit', :dict => 'display_measure'
342
- field 47, 'uint16', 'num_active_length', :unit => 'lengths'
400
+ field 47, 'uint16', 'num_active_lengths', :unit => 'lengths'
343
401
  field 48, 'uint32', 'total_work', :unit => 'J'
344
402
  field 57, 'sint8', 'avg_temperature', :unit => 'C'
345
403
  field 58, 'sint8', 'max_temperature', :unit => 'C'
@@ -368,6 +426,7 @@ module Fit4Ruby
368
426
  field 108, 'uint16', 'undefined_value_108'
369
427
  field 109, 'uint8', 'undefined_value_109'
370
428
  field 110, 'string', 'undefined_value_110'
429
+ field 111, 'uint8', 'undefined_value_111'
371
430
  field 112, 'uint32', 'time_standing', :scale => 1000, :unit => 's'
372
431
  field 113, 'uint16', 'stand_count'
373
432
  field 114, 'sint8', 'avg_left_pco', :unit => 'mm'
@@ -390,6 +449,7 @@ module Fit4Ruby
390
449
  field 134, 'uint16', 'avg_step_length', :scale => 10, :unit => 'mm'
391
450
  field 137, 'uint8', 'total_anaerobic_training_effect', :scale => 10
392
451
  field 138, 'uint8', 'undocumented_field_138'
452
+ field 139, 'uint16', 'avg_vam', :scale => 1000, :unit => 'm/s'
393
453
  field 150, 'sint8', 'min_temperature', :unit => 'C' # guessed
394
454
  field 151, 'uint16', 'undocumented_field_151'
395
455
  field 152, 'uint32', 'undocumented_field_152'
@@ -397,7 +457,23 @@ module Fit4Ruby
397
457
  field 158, 'uint16', 'undocumented_field_158'
398
458
  field 153, 'enum', 'undocumented_field_153'
399
459
  field 154, 'enum', 'undocumented_field_154'
460
+ field 168, 'sint32', 'undocumented_field_168'
461
+ field 169, 'uint16', 'undocumented_field_169'
462
+ field 170, 'uint16', 'undocumented_field_170'
463
+ field 177, 'uint16', 'undocumented_field_177'
464
+ field 178, 'uint16', 'undocumented_field_178'
465
+ field 179, 'uint16', 'undocumented_field_179'
466
+ field 180, 'uint16', 'undocumented_field_180'
467
+ field 181, 'float32', 'undocumented_field_181'
468
+ field 183, 'uint16', 'undocumented_field_183'
400
469
  field 184, 'enum', 'undocumented_field_184'
470
+ field 185, 'uint8', 'undocumented_field_185'
471
+ field 187, 'float32', 'undocumented_field_187'
472
+ field 188, 'enum', 'undocumented_field_188'
473
+ field 189, 'uint16', 'undocumented_field_189'
474
+ field 190, 'uint16', 'undocumented_field_190'
475
+ field 194, 'uint8', 'undocumented_field_194'
476
+ field 195, 'uint8', 'undocumented_field_195'
401
477
  field 253, 'uint32', 'timestamp', :type => 'date_time'
402
478
  field 254, 'uint16', 'message_index'
403
479
 
@@ -449,7 +525,7 @@ module Fit4Ruby
449
525
  field 37, 'uint16', 'avg_stroke_distance', :scale => 100, :unit => 'm'
450
526
  field 38, 'enum', 'swim_stroke', :dict => 'swim_stroke'
451
527
  field 39, 'enum', 'sub_sport', :dict => 'sub_sport'
452
- field 40, 'uint16', 'num_active_length', :unit => 'lengths'
528
+ field 40, 'uint16', 'num_active_lengths', :unit => 'lengths'
453
529
  field 41, 'uint32', 'total_work', :unit => 'J'
454
530
  field 50, 'sint8', 'avg_temperature', :unit => 'C'
455
531
  field 51, 'sint8', 'max_temperature', :unit => 'C'
@@ -493,9 +569,18 @@ module Fit4Ruby
493
569
  field 118, 'uint16', 'avg_vertical_ratio', :scale => 100, :unit => '%'
494
570
  field 119, 'uint16', 'avg_stance_time_balance', :scale => 100, :unit => '%'
495
571
  field 120, 'uint16', 'avg_step_length', :scale => 10000, :unit => 'm'
572
+ field 121, 'uint16', 'avg_vam', :scale => 1000, :unit => 'm/s'
496
573
  field 124, 'sint8', 'min_temperature', :unit => 'C' # guessed
497
574
  field 125, 'uint16', 'undocumented_field_125'
498
575
  field 126, 'uint16', 'undocumented_field_126'
576
+ field 136, 'uint16', 'undocumented_field_136'
577
+ field 137, 'uint16', 'undocumented_field_137'
578
+ field 143, 'uint16', 'undocumented_field_143'
579
+ field 145, 'uint16', 'undocumented_field_145'
580
+ field 149, 'float32', 'undocumented_field_149'
581
+ field 151, 'uint16', 'undocumented_field_151'
582
+ field 152, 'uint8', 'undocumented_field_152'
583
+ field 154, 'float32', 'undocumented_field_154'
499
584
  field 253, 'uint32', 'timestamp', :type => 'date_time'
500
585
  field 254, 'uint16', 'message_index'
501
586
 
@@ -516,6 +601,7 @@ module Fit4Ruby
516
601
  field 13, 'sint8', 'temperature', :unit => 'C'
517
602
  field 14, 'uint32', 'undefined_field_14'
518
603
  field 15, 'uint32', 'undefined_field_15'
604
+ field 18, 'uint8', 'undefined_field_18'
519
605
  field 29, 'uint32', 'accumulated_power', :unit => 'watts'
520
606
  field 30, 'uint8', 'left_right_balance', :dict => 'left_right_balance'
521
607
  field 39, 'uint16', 'vertical_oscillation', :scale => 10, :unit => 'mm'
@@ -541,12 +627,27 @@ module Fit4Ruby
541
627
  field 70, 'uint8', 'left_power_phase_peak', :scale => 0.7111111, :unit => 'degrees', :array => true
542
628
  field 71, 'uint8', 'right_power_phase', :scale => 0.7111111, :unit => 'degrees', :array => true
543
629
  field 72, 'uint8', 'right_power_phase_peak', :scale => 0.7111111, :unit => 'degrees', :array => true
630
+ field 73, 'uint32', 'enhanced_speed', :scale => 1000, :unit => 'm/s'
631
+ field 74, 'uint32', 'undefined_value_74'
632
+ field 75, 'uint32', 'undefined_value_75'
633
+ field 76, 'uint32', 'undefined_value_76'
634
+ field 77, 'uint32', 'undefined_value_77'
635
+ field 79, 'uint32', 'undefined_value_79'
636
+ field 80, 'uint32', 'undefined_value_80'
637
+ field 78, 'uint32', 'enhanced_elevation', :scale => 5, :offset => 500, :unit => 'm'
544
638
  field 83, 'uint16', 'vertical_ratio', :scale => 100, :unit => '%' # guessed
545
639
  field 84, 'uint16', 'gct_balance', :scale => 100, :unit => '%' # guessed
546
640
  field 85, 'uint16', 'stride_length', :scale => 10000, :unit => 'm' # guessed
547
641
  field 87, 'uint16', 'undefined_value_87' # first seen on F3 FW6.80
548
642
  field 88, 'uint16', 'undefined_value_88' # first seen on F3HR FW3.60
549
643
  field 90, 'sint8', 'performance_condition' # guessed
644
+ field 100, 'sint32', 'undocumented_field_100'
645
+ field 101, 'sint32', 'undocumented_field_101'
646
+ field 107, 'enum', 'undocumented_field_107'
647
+ field 116, 'uint16', 'undocumented_field_116'
648
+ field 108, 'uint16', 'respiration_rate', :scale => 100, :unit => 'brpm' # guessed
649
+ field 135, 'uint8', 'undocumented_field_135'
650
+ field 136, 'uint8', 'undocumented_field_136'
550
651
  field 253, 'uint32', 'timestamp', :type => 'date_time'
551
652
 
552
653
  message 21, 'event'
@@ -583,6 +684,8 @@ module Fit4Ruby
583
684
  field 14, 'enum', 'undocumented_field_14'
584
685
  field 15, 'uint32', 'undocumented_field_15'
585
686
  field 16, 'enum', 'undocumented_field_16'
687
+ field 17, 'uint16', 'undocumented_field_17'
688
+ field 18, 'uint16', 'undocumented_field_18'
586
689
  field 19, 'uint8', 'undocumented_field_19'
587
690
  field 20, 'uint8', 'undocumented_field_20'
588
691
  field 253, 'uint32', 'timestamp', :type => 'date_time'
@@ -597,6 +700,9 @@ module Fit4Ruby
597
700
  field 4, 'uint8', 'heart_rate'
598
701
  field 5, 'enum', 'mode' # 0 or 3 seen, unknown meaning
599
702
  field 6, 'uint8', 'power' # First found in FR920XT
703
+ field 7, 'uint8', 'undocumented_field_7'
704
+ field 8, 'uint8', 'undocumented_field_8'
705
+ field 9, 'uint8', 'undocumented_field_9'
600
706
  field 14, 'uint8', 'calories' # First found in FR920XT
601
707
  field 15, 'uint8', 'undocumented_field_15'
602
708
  field 253, 'uint32', 'timestamp', :type => 'date_time'
@@ -745,15 +851,22 @@ module Fit4Ruby
745
851
  field 10, 'uint8', 'avg_resting_heart_rate', :unit => 'bpm'
746
852
  field 11, 'uint16', 'running_lactate_threshold_heart_rate', :unit => 'bpm'
747
853
  field 12, 'uint16', 'functional_threshold_power', :unit => 'W'
748
- field 13, 'uint16', 'undocumented_field_13'
854
+ field 13, 'uint16', 'functional_threshold_speed', :scale => 36, :unit => 'm/s'
749
855
  field 14, 'uint8', 'undocumented_field_14'
750
856
  field 15, 'uint8', 'undocumented_field_15'
857
+ field 16, 'uint32', 'undocumented_field_16'
858
+ field 17, 'sint32', 'undocumented_field_17'
859
+ field 18, 'sint32', 'undocumented_field_18'
860
+ field 19, 'sint32', 'undocumented_field_19'
861
+ field 20, 'uint16', 'undocumented_field_20'
862
+ field 21, 'sint32', 'undocumented_field_21'
863
+ field 22, 'sint32', 'undocumented_field_22'
751
864
  field 253, 'uint32', 'timestamp', :type => 'date_time'
752
865
 
753
866
  message 101, 'length'
754
867
  field 0, 'enum', 'event', :dict => 'event'
755
868
  field 1, 'enum', 'event_type', :dict => 'event_type'
756
- field 2, 'uint32', 'date_time', :type => 'date_time'
869
+ field 2, 'uint32', 'start_time', :type => 'date_time'
757
870
  field 3, 'uint32', 'total_elapsed_time', :scale => 1000, :unit => 's'
758
871
  field 4, 'uint32', 'total_timer_time', :scale => 1000, :unit => 's'
759
872
  field 5, 'uint16', 'total_strokes', :unit => 'strokes'
@@ -765,6 +878,8 @@ module Fit4Ruby
765
878
  field 12, 'enum', 'length_type', :dict => 'length_type'
766
879
  field 18, 'uint16', 'player_score'
767
880
  field 19, 'uint16', 'opponent_score'
881
+ field 20, 'uint16', 'stroke_count', :unit => 'counts'
882
+ field 21, 'uint16', 'zone_count', :unit => 'counts'
768
883
  field 253, 'uint32', 'timestamp', :type => 'date_time'
769
884
  field 254, 'uint16', 'message_index'
770
885
 
@@ -833,8 +948,8 @@ module Fit4Ruby
833
948
  field 12, 'enum', 'undocumented_field_12'
834
949
  field 13, 'uint8', 'undocumented_field_13'
835
950
  field 14, 'uint16', 'running_lactate_threshold_heart_rate', :unit => 'bpm'
836
- field 15, 'uint16', 'running_lactate_threshold_speed', :scale => 100, :unit => 'm/s'
837
- field 16, 'uint16', 'undocumented_field_16' # very correlated to 14 and 15
951
+ field 15, 'uint16', 'undocumented_field_15'
952
+ field 16, 'uint16', 'running_lactate_threshold_speed', :scale => 36, :unit => 'm/s'
838
953
  field 17, 'sint8', 'performance_condition'
839
954
  field 18, 'uint8', 'undocumented_field_18'
840
955
  field 19, 'uint8', 'undocumented_field_19'
@@ -845,10 +960,27 @@ module Fit4Ruby
845
960
  field 24, 'sint32', 'undocumented_field_24'
846
961
  field 25, 'uint8', 'undocumented_field_25'
847
962
  field 26, 'sint32', 'undocumented_field_26'
963
+ field 27, 'sint32', 'undocumented_field_27'
964
+ field 28, 'sint32', 'undocumented_field_28'
848
965
  field 29, 'sint32', 'metmax_running', :scale => 65536, :unit => 'MET'
966
+ field 30, 'sint8', 'undocumented_field_30'
967
+ field 31, 'sint8', 'undocumented_field_31'
968
+ field 32, 'sint32', 'undocumented_field_32'
969
+ field 33, 'uint8', 'undocumented_field_33'
849
970
  field 34, 'enum', 'undocumented_field_34'
850
971
  field 35, 'uint32', 'undocumented_field_35'
851
972
  field 36, 'uint32', 'undocumented_field_36'
973
+ field 37, 'sint32', 'undocumented_field_37'
974
+ field 38, 'sint32', 'undocumented_field_38'
975
+ field 39, 'sint32', 'undocumented_field_39'
976
+ field 40, 'sint32', 'undocumented_field_40'
977
+ field 41, 'enum', 'undocumented_field_41'
978
+ field 42, 'uint8', 'undocumented_field_42'
979
+ field 43, 'sint16', 'undocumented_field_43'
980
+ field 44, 'sint16', 'undocumented_field_44'
981
+ field 45, 'sint16', 'undocumented_field_45'
982
+ field 46, 'uint8', 'undocumented_field_46'
983
+ field 48, 'uint32', 'undocumented_field_48'
852
984
  field 253, 'uint32', 'timestamp', :type => 'date_time'
853
985
 
854
986
  # Not part of the official ANT SDK doc. The message name is guessed and
@@ -872,7 +1004,7 @@ module Fit4Ruby
872
1004
  field 5, 'enum', 'undocumented_field_5'
873
1005
  field 6, 'enum', 'undocumented_field_6'
874
1006
  field 7, 'enum', 'undocumented_field_7'
875
- field 8, 'uint8', 'undocumented_field_8'
1007
+ field 8, 'enum', 'undocumented_field_8'
876
1008
  field 9, 'uint8', 'undocumented_field_9'
877
1009
  field 10, 'uint16', 'undocumented_field_10'
878
1010
  field 11, 'uint16', 'calibration_factor', :scale => 10
@@ -886,6 +1018,12 @@ module Fit4Ruby
886
1018
  field 19, 'uint8z', 'undocumented_field_19'
887
1019
  field 20, 'uint8z', 'undocumented_field_20'
888
1020
  field 21, 'uint16', 'undocumented_field_21'
1021
+ field 25, 'uint16', 'undocumented_field_25'
1022
+ field 26, 'uint16', 'undocumented_field_26'
1023
+ field 27, 'uint8', 'undocumented_field_27'
1024
+ field 28, 'uint8', 'undocumented_field_28'
1025
+ field 29, 'uint8', 'undocumented_field_29'
1026
+ field 30, 'uint8', 'undocumented_field_30'
889
1027
  field 24, 'enum', 'undocumented_field_24'
890
1028
  field 31, 'uint8', 'undocumented_field_31'
891
1029
  field 32, 'uint16', 'undocumented_field_32'
@@ -907,19 +1045,35 @@ module Fit4Ruby
907
1045
  field 48, 'enum', 'undocumented_field_48'
908
1046
  field 50, 'uint8', 'undocumented_field_50'
909
1047
  field 51, 'enum', 'undocumented_field_51'
910
- field 52, 'uint8', 'undocumented_field_52'
1048
+ # The type of this field changed from 'uint8' to 'enum' in more recent
1049
+ # devices. No idea why and what the proper selection field should be.
1050
+ alt_field 52, 'undocumented_field_51' do
1051
+ field :default, 'uint8', 'undocumented_field_52_0'
1052
+ field 0, 'enum', 'undocumented_field_52_1'
1053
+ end
911
1054
  field 53, 'uint8', 'undocumented_field_53'
1055
+ field 54, 'enum', 'undocumented_field_54'
912
1056
  field 55, 'uint16', 'undocumented_field_55'
913
1057
  field 56, 'uint16', 'undocumented_field_56'
914
1058
  field 57, 'uint16', 'undocumented_field_57'
915
1059
  field 58, 'enum', 'undocumented_field_58'
916
1060
  field 59, 'uint8', 'undocumented_field_59'
1061
+ field 60, 'enum', 'undocumented_field_60'
1062
+ field 61, 'enum', 'undocumented_field_61'
917
1063
  field 62, 'uint8', 'undocumented_field_62'
918
1064
  field 63, 'enum', 'undocumented_field_63'
919
1065
  field 64, 'uint32', 'undocumented_field_64'
920
1066
  field 65, 'uint32', 'undocumented_field_65'
1067
+ field 70, 'uint32', 'undocumented_field_70'
1068
+ field 71, 'enum', 'undocumented_field_71'
1069
+ field 73, 'uint16z', 'undocumented_field_73'
921
1070
  field 254, 'uint16', 'message_index'
922
1071
 
1072
+ # Not part of the official ANT SDK doc.
1073
+ message 160, 'undocumented_160'
1074
+ field 3, 'uint32', 'undocumented_field_3'
1075
+ field 4, 'uint32', 'undocumented_field_4'
1076
+
923
1077
  # Not part of the official ANT SDK doc.
924
1078
  message 188, 'undocumented_188'
925
1079
  field 0, 'enum', 'undocumented_field_0'
@@ -1030,6 +1184,18 @@ module Fit4Ruby
1030
1184
  message 269, 'undocumented_269'
1031
1185
  field 0, 'uint8', 'undocumented_field_0'
1032
1186
  field 1, 'uint8', 'undocumented_field_1'
1187
+ field 2, 'uint8', 'undocumented_field_2'
1188
+ field 253, 'uint32', 'timestamp', :type => 'date_time'
1189
+
1190
+ # Not part of the official ANT SDK doc.
1191
+ message 261, 'undocumented_261'
1192
+ field 0, 'enum', 'undocumented_field_0'
1193
+ field 1, 'sint32', 'undocumented_field_1'
1194
+ field 2, 'sint32', 'undocumented_field_2'
1195
+ field 3, 'uint32', 'undocumented_field_3'
1196
+ field 7, 'uint8', 'undocumented_field_7'
1197
+ field 8, 'uint8', 'undocumented_field_8'
1198
+ field 9, 'uint8', 'undocumented_field_9'
1033
1199
  field 253, 'uint32', 'timestamp', :type => 'date_time'
1034
1200
 
1035
1201
  # Not part of the official ANT SDK doc.
@@ -1042,6 +1208,44 @@ module Fit4Ruby
1042
1208
  field 0, 'uint16', 'load'
1043
1209
  field 1, 'uint32', 'timestamp', :type => 'date_time'
1044
1210
 
1211
+ # Not part of the official ANT SDK doc.
1212
+ message 288, 'undocumented_288'
1213
+ field 0, 'sint8', 'undocumented_field_0'
1214
+ field 1, 'sint8', 'undocumented_field_1'
1215
+ field 2, 'uint16', 'undocumented_field_2'
1216
+ field 251, 'byte', 'undocumented_field_251'
1217
+ field 252, 'uint8', 'undocumented_field_252'
1218
+ field 253, 'uint32', 'timestamp', :type => 'date_time'
1219
+
1220
+ # Not part of the official ANT SDK doc.
1221
+ message 325, 'undocumented_325'
1222
+ field 0, 'uint8', 'undocumented_field_0'
1223
+ field 1, 'uint8', 'undocumented_field_1'
1224
+ field 2, 'uint8', 'undocumented_field_2'
1225
+ field 3, 'uint8', 'undocumented_field_3'
1226
+ field 4, 'uint8', 'undocumented_field_4'
1227
+ field 5, 'uint8', 'undocumented_field_5'
1228
+ field 253, 'uint32', 'timestamp', :type => 'date_time'
1229
+
1230
+ # Not part of the official ANT SDK doc.
1231
+ message 326, 'undocumented_326'
1232
+ field 0, 'uint32', 'undocumented_field_0'
1233
+ field 1, 'uint32', 'undocumented_field_1'
1234
+ field 253, 'uint32', 'timestamp', :type => 'date_time'
1235
+
1236
+ # Not part of the official ANT SDK doc.
1237
+ message 327, 'undocumented_327'
1238
+ field 0, 'uint8', 'undocumented_field_0'
1239
+ field 1, 'uint8', 'undocumented_field_1'
1240
+ field 2, 'uint8', 'undocumented_field_2'
1241
+ field 3, 'uint32', 'undocumented_field_3'
1242
+ field 4, 'uint32', 'undocumented_field_4'
1243
+ field 5, 'uint32', 'undocumented_field_5'
1244
+ field 6, 'enum', 'undocumented_field_6'
1245
+ field 251, 'byte', 'undocumented_field_251'
1246
+ field 252, 'uint8', 'undocumented_field_252'
1247
+ field 253, 'uint32', 'timestamp', :type => 'date_time'
1248
+
1045
1249
  # Not part of the official ANT SDK doc.
1046
1250
  message 1024, 'undocumented_1024'
1047
1251
  field 0, 'enum', 'undocumented_field_0'