fit4ruby 0.0.10 → 0.0.11

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c8031616797fec0865e6ba35680ec240f5b7264f
4
- data.tar.gz: c9b0255d76f4776dc2259cc91ce784e8295a3394
3
+ metadata.gz: 1db7e14706602d5c1890a89e173ea889ffd14a71
4
+ data.tar.gz: b184b8cf98d082435663d4df5d674ab57e3c6cea
5
5
  SHA512:
6
- metadata.gz: 14b252ae0a5993c9bc53fc95bcea5a75aa798af444b30e62378a1f1bff10b76196bd18c9f34945136a7c09e5b8022ca56ee96a4f9281b1dee3b347d37c5a7316
7
- data.tar.gz: 1028184b60ca4aa62db0378199006f97563c13f96b4b50868256e107043a95d0ae416a30fdabc4f75d0053dc232b6bca4f84ea6c587958eb37342e35d2e55abd
6
+ metadata.gz: 9c4e23196bede4ab4d416fc7d8b732298a3ed97f573777a6f11f179ed269366bd7818d06296c27efc1797cce53bd5d07cebc1b3572232f345f1ed4b88ffd39c0
7
+ data.tar.gz: 537a25d36c77d7daabc2c2c0f0dcdc676bdee66269f58e02050349d030747d613eeba0db9929dd028b451c479123327891a303f8efcd2060e205e3ee4c97ed65
@@ -80,6 +80,25 @@ module Fit4Ruby
80
80
  "#{@sessions.length} session records were found in the "
81
81
  "FIT file."
82
82
  end
83
+
84
+ # Records must have consecutively growing timestamps and distances.
85
+ ts = Time.parse('1989-12-31')
86
+ distance = nil
87
+ @records.each do |r|
88
+ Log.fatal "Record has no timestamp" unless r.timestamp
89
+ if r.timestamp < ts
90
+ Log.fatal "Record has earlier timestamp than previous record"
91
+ end
92
+ if r.distance
93
+ if distance && r.distance < distance
94
+ Log.fatal "Record #{r.timestamp} has smaller distance " +
95
+ "(#{r.distance}) than an earlier record (#{distance})"
96
+ end
97
+ distance = r.distance
98
+ end
99
+ ts = r.timestamp
100
+ end
101
+
83
102
  # Laps must have a consecutively growing message index.
84
103
  @laps.each.with_index do |lap, index|
85
104
  lap.check(index)
@@ -38,8 +38,8 @@ module Fit4Ruby
38
38
  end
39
39
 
40
40
  # Convert a FIT file name into the corresponding Time value.
41
- # @param [String] FIT file name. This can be a full path name but must end
42
- # with a '.FIT' extension.
41
+ # @param file_name [String] FIT file name. This can be a full path name
42
+ # but must end with a '.FIT' extension.
43
43
  # @return [Time] corresponding Time value
44
44
  def FileNameCoder::decode(file_name)
45
45
  base = File.basename(file_name.upcase)
@@ -231,6 +231,10 @@ module Fit4Ruby
231
231
  entry 7, 'session_end'
232
232
  entry 8, 'fitness_equipment'
233
233
 
234
+ dict 'left_right_balance'
235
+ entry 0x7F, 'mask'
236
+ entry 0x80, 'right'
237
+
234
238
  dict 'left_right_balance_100'
235
239
  entry 0x3FFF, 'mask'
236
240
  entry 0x8000, 'right'
@@ -234,14 +234,31 @@ module Fit4Ruby
234
234
  field 5, 'uint32', 'distance', :scale => 100, :unit => 'm'
235
235
  field 6, 'uint16', 'speed', :scale => 1000, :unit => 'm/s'
236
236
  field 7, 'uint16', 'power', :unit => 'watts'
237
+ field 11, 'sint32', 'time_from_course', :scale => 1000, :unit => 's'
237
238
  field 13, 'sint8', 'temperature', :unit => 'C'
239
+ field 29, 'uint32', 'accumulated_power', :unit => 'watts'
240
+ field 30, 'uint8', 'left_right_balance', :dict => 'left_right_balance'
238
241
  field 39, 'uint16', 'vertical_oscillation', :scale => 10, :unit => 'mm'
239
242
  field 40, 'uint16', 'stance_time_percent', :scale => 100, :unit => 'percent'
240
243
  field 41, 'uint16', 'stance_time', :scale => 10, :unit => 'ms'
241
244
  field 42, 'enum', 'activity_type', :dict => 'activity_type'
245
+ field 43, 'uint8', 'left_torque_effectiveness', :scale => 2, :unit => '%'
246
+ field 44, 'uint8', 'right_torque_effectiveness', :scale => 2, :unit => '%'
247
+ field 45, 'uint8', 'left_pedal_smoothness', :scale => 2, :unit => '%'
248
+ field 46, 'uint8', 'right_pedal_smoothness', :scale => 2, :unit => '%'
249
+ field 47, 'uint8', 'combined_pedal_smoothness', :scale => 2, :unit => '%'
242
250
  field 53, 'uint8', 'fractional_cadence', :scale => 128
243
251
  field 61, 'uint16', 'undefined_value_61'
252
+ field 63, 'uint16', 'undefined_value_63'
253
+ field 64, 'uint16', 'undefined_value_64'
254
+ field 65, 'uint16', 'undefined_value_65'
244
255
  field 66, 'sint16', 'undefined_value_66'
256
+ field 67, 'sint8', 'left_pco', :unit => 'mm'
257
+ field 68, 'sint8', 'right_pco', :unit => 'mm'
258
+ field 69, 'uint8', 'left_power_phase', :scale => 0.7111111, :unit => 'degrees', :array => true
259
+ field 70, 'uint8', 'left_power_phase_peak', :scale => 0.7111111, :unit => 'degrees', :array => true
260
+ field 71, 'uint8', 'right_power_phase', :scale => 0.7111111, :unit => 'degrees', :array => true
261
+ field 72, 'uint8', 'right_power_phase_peak', :scale => 0.7111111, :unit => 'degrees', :array => true
245
262
  field 83, 'uint16', 'vertical_ratio', :scale => 100, :unit => '%' # guessed
246
263
  field 84, 'uint16', 'gct_balance', :scale => 100, :unit => '%' # guessed
247
264
  field 85, 'uint16', 'stride_length', :scale => 10000, :unit => 'm' # guessed
@@ -378,11 +395,17 @@ module Fit4Ruby
378
395
  field 19, 'uint16', 'active_calories', :unit => 'kcal'
379
396
  field 24, 'byte', 'current_activity_type_intensity', :type => 'activity_intensity'
380
397
  field 26, 'uint16', 'timestamp_16', :unit => 's'
398
+ field 27, 'uint8', 'heart_rate', :unit => 'bpm'
381
399
  field 29, 'uint16', 'duration_min', :unit => 'min'
382
- field 31, 'uint32', 'undocumented_field_31'
383
- field 32, 'uint32', 'undocumented_field_32'
400
+ field 30, 'uint32', 'duration', :unit => 's'
401
+ field 31, 'uint32', 'ascent', :scale => 1000, :unit => 'm'
402
+ field 32, 'uint32', 'descent', :scale => 1000, :unit => 'm'
403
+ field 33, 'uint16', 'moderate_activity_minutes', :unit => 'minutes'
404
+ field 34, 'uint16', 'vigorous_activity_minutes', :unit => 'minutes'
384
405
  field 35, 'uint32', 'undocumented_field_35'
385
406
  field 36, 'uint32', 'undocumented_field_36'
407
+ field 37, 'uint16', 'weekly_moderate_activity_minutes', :unit => 'minutes' # just a guess
408
+ field 38, 'uint16', 'weekly_vigorous_activity_minutes', :unit => 'minutes' # just a guess
386
409
  field 253, 'uint32', 'timestamp', :type => 'date_time'
387
410
 
388
411
  message 72, 'training_file'
data/lib/fit4ruby/Lap.rb CHANGED
@@ -47,21 +47,6 @@ module Fit4Ruby
47
47
  unless @message_index == index
48
48
  Log.fatal "message_index must be #{index}, not #{@message_index}"
49
49
  end
50
- ts = Time.parse('1989-12-31')
51
- distance = nil
52
- @records.each do |r|
53
- Log.fatal "Record has no timestamp" unless r.timestamp
54
- if r.timestamp < ts
55
- Log.fatal "Record has earlier timestamp than previous record"
56
- end
57
- if r.distance
58
- if distance && r.distance < distance
59
- Log.fatal "Record has smaller distance than previous record"
60
- end
61
- distance = r.distance
62
- end
63
- ts = r.timestamp
64
- end
65
50
  end
66
51
 
67
52
  # Compute the average stride length for this Session.
@@ -1,4 +1,4 @@
1
1
  module Fit4Ruby
2
2
  # The version number of the library.
3
- VERSION = '0.0.10'
3
+ VERSION = '0.0.11'
4
4
  end
data/tasks/changelog.rake CHANGED
@@ -12,10 +12,10 @@ task :changelog do
12
12
  @author = author
13
13
  @time = time
14
14
  @message = message
15
- if (m = /New: (.*)/.match(@message))
15
+ if (m = /New: (.*)/i.match(@message))
16
16
  @type = :feature
17
17
  @message = m[1]
18
- elsif (m = /Fix: (.*)/.match(@message))
18
+ elsif (m = /Fix: (.*)/i.match(@message))
19
19
  @type = :bugfix
20
20
  @message = m[1]
21
21
  else
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fit4ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.10
4
+ version: 0.0.11
5
5
  platform: ruby
6
6
  authors:
7
7
  - Chris Schlaeger
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-02-11 00:00:00.000000000 Z
11
+ date: 2016-03-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bindata