fit-parser 0.0.1 → 0.0.2

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: a64b20cfef0af6c8a870b8f6ff14089305cd9c59
4
- data.tar.gz: cceb35dd56050fc6a027538381f28a32c1add0fd
3
+ metadata.gz: 14a5bb162a20cb244ffd1de81be4327a5b868260
4
+ data.tar.gz: ce73ef3c0433f8eb91011800e47bac3d1a9e9056
5
5
  SHA512:
6
- metadata.gz: 0b8874a3a4ea197ee232a1a83c9e092692928dcc2095acb641cb2199779c935baff30b4a34028c07d266a33e9ecf6d1a799bcc3527a7f648637b59545ee0ef8f
7
- data.tar.gz: eec35ccf55acff6491ffc85889ec311cfa918e17dfcb8d8d2023e11f235b063a5b1a0693903195c50365d4f5519d70b3f9fcd0145f1dccfeacf3bf454b3027c8
6
+ metadata.gz: ae219e48085f9c4978118574b54dbe55c6632b6b254b2dd4539be8538613c135b5d4acb47634203fdd582bd91319be10b7452216555cb8c45c065f598e63af3b
7
+ data.tar.gz: 1f6637e143923e6b9b707a49939938fa764924f13a437e2ef0d4132523c5de556e35acf6db4ca5b7f793d39670e97271a9f5a8677f8c8045b0e6e7de9a78333f
@@ -0,0 +1,10 @@
1
+ language: ruby
2
+ rvm:
3
+ - ruby-head
4
+ - 2.2
5
+ - 2.1
6
+ - 2.0.0
7
+ - 1.9.3
8
+ branches:
9
+ only:
10
+ - master
@@ -1,4 +1,4 @@
1
- Copyright (c) 2011 Jeff Wallace
1
+ Copyright (c) 2015 Jeff Wallace
2
2
 
3
3
  Permission is hereby granted, free of charge, to any person obtaining
4
4
  a copy of this software and associated documentation files (the
data/README.md CHANGED
@@ -1,7 +1,9 @@
1
- # fit
1
+ # fit [![Build Status](https://travis-ci.org/tjwallace/fit.svg?branch=master)](https://travis-ci.org/tjwallace/fit)
2
2
 
3
3
  A ruby gem for parsing [fit files](http://www.thisisant.com/pages/products/fit-sdk). It makes heavy use of the [bindata gem](http://bindata.rubyforge.org/).
4
4
 
5
+ It is published on RubyGems.org as [fit-parser](https://rubygems.org/gems/fit-parser).
6
+
5
7
  ## Example usage
6
8
 
7
9
  ```ruby
@@ -12,6 +14,14 @@ fit_file = Fit.load_file(ARGV[0])
12
14
  records = fit_file.records.select{ |r| r.content.record_type != :definition }.map{ |r| r.content }
13
15
  ```
14
16
 
17
+ ## Supported files
18
+
19
+ This library has been tested with files coming from the following devices:
20
+ - Garmin Swim
21
+
22
+
23
+ Please let me know if you have any success with files coming from devices that are not listed here.
24
+
15
25
  ## Contributing to fit
16
26
 
17
27
  * Check out the latest master to make sure the feature hasn't been implemented or the bug hasn't been fixed yet
@@ -24,4 +34,4 @@ records = fit_file.records.select{ |r| r.content.record_type != :definition }.ma
24
34
 
25
35
  ## Copyright
26
36
 
27
- Copyright (c) 2011 Jeff Wallace. See LICENSE.txt for further details.
37
+ Copyright (c) 2015 Jeff Wallace. See LICENSE.txt for further details.
data/Rakefile CHANGED
@@ -1,2 +1,5 @@
1
1
  require "bundler/gem_tasks"
2
2
 
3
+ require 'rspec/core/rake_task'
4
+ RSpec::Core::RakeTask.new(:spec)
5
+ task :default => :spec
@@ -682,7 +682,7 @@ Fit::File::Definitions.add_field 55, 5, 'activity_type', :type => :activity_type
682
682
  Fit::File::Definitions.add_field 55, 6, 'activity_subtype', :type => :activity_subtype
683
683
  Fit::File::Definitions.add_field 55, 7, 'activity_level', :type => :activity_level
684
684
  Fit::File::Definitions.add_field 55, 8, 'distance_16', :type => :uint16, :unit => '100 * m'
685
- Fit::File::Definitions.add_field 55, 9, 'cycles_16', :type => :uint16, :unit => '2 * cycles ', :unit => '(steps)'
685
+ Fit::File::Definitions.add_field 55, 9, 'cycles_16', :type => :uint16, :unit => '2 * cycles (steps)'
686
686
  Fit::File::Definitions.add_field 55, 10, 'active_time_16', :type => :uint16, :unit => 's'
687
687
  Fit::File::Definitions.add_field 55, 11, 'local_timestamp', :type => :local_date_time
688
688
  Fit::File::Definitions.add_field 55, 12, 'temperature', :type => :sint16, :scale => 100, :unit => 'C'
@@ -703,3 +703,19 @@ Fit::File::Definitions.add_field 145, 250, 'part_index', :type => :uint32
703
703
  Fit::File::Definitions.add_field 145, 0, 'memo', :type => :byte
704
704
  Fit::File::Definitions.add_field 145, 1, 'message_number', :type => :uint16
705
705
  Fit::File::Definitions.add_field 145, 2, 'message_index', :type => :message_index
706
+
707
+ # =============================================================================
708
+ # Warning, the definition below are not part of the official fit format
709
+ # definition. They have been obtained by deduction from Garmin Swim files
710
+ # =============================================================================
711
+ # session additions
712
+ Fit::File::Definitions.add_field 18, 33, 'length_count', :type => :uint16
713
+ Fit::File::Definitions.add_field 18, 78, 'total_swim_time', :type => :uint32, :scale => 1000
714
+ Fit::File::Definitions.add_field 18, 79, 'average_stroke', :type => :uint16, :scale => 10
715
+ Fit::File::Definitions.add_field 18, 80, 'swolf', :type => :uint16
716
+
717
+ # lap additions
718
+ Fit::File::Definitions.add_field 19, 70, 'swim_time', :type => :uint32, :scale => 1000
719
+ Fit::File::Definitions.add_field 19, 72, 'average_stroke', :type => :uint16, :scale => 10
720
+ Fit::File::Definitions.add_field 19, 73, 'swolf', :type => :uint16
721
+
@@ -1,3 +1,3 @@
1
1
  module Fit
2
- VERSION = '0.0.1'
2
+ VERSION = '0.0.2'
3
3
  end
@@ -107,5 +107,58 @@ describe Fit::File::Data do
107
107
  end
108
108
  end
109
109
  end
110
+
111
+ context 'definition with undocumented fields of garmin swim' do
112
+
113
+ context 'in lap message' do
114
+ before :each do
115
+ def_file = example_file('record/message/definition_lap.fit')
116
+ definition = described_class.generate(Fit::File::Definition.read def_file)
117
+ @res = definition.read( example_file('record/message/data_lap.fit') )
118
+ end
119
+ it 'returns the total_swim_time' do
120
+ expect(@res.raw_swim_time).to eq(234321)
121
+ expect(@res.swim_time).to eq(234.321)
122
+ end
123
+
124
+ it 'returns the average_stroke' do
125
+ expect(@res.raw_average_stroke).to eq(143)
126
+ expect(@res.average_stroke).to eq(14.3)
127
+ end
128
+
129
+ it 'returns the swolf' do
130
+ expect(@res.raw_swolf).to eq(49)
131
+ expect(@res.swolf).to eq(49)
132
+ end
133
+ end
134
+
135
+ context 'in session message' do
136
+ before :each do
137
+ def_file = example_file('record/message/definition_session.fit')
138
+ definition = described_class.generate(Fit::File::Definition.read def_file)
139
+ @res = definition.read( example_file('record/message/data_session.fit') )
140
+ end
141
+
142
+ it 'returns the length_count' do
143
+ expect(@res.raw_length_count).to eq(28)
144
+ expect(@res.length_count).to eq(28)
145
+ end
146
+
147
+ it 'returns the total_swim_time' do
148
+ expect(@res.raw_total_swim_time).to eq(1346975)
149
+ expect(@res.total_swim_time).to eq(1346.975)
150
+ end
151
+
152
+ it 'returns the average_stroke' do
153
+ expect(@res.raw_average_stroke).to eq(134)
154
+ expect(@res.average_stroke).to eq(13.4)
155
+ end
156
+
157
+ it 'returns the swolf' do
158
+ expect(@res.raw_swolf).to eq(44)
159
+ expect(@res.swolf).to eq(44)
160
+ end
161
+ end
162
+ end
110
163
  end
111
164
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fit-parser
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jeff Wallace
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-03-07 00:00:00.000000000 Z
11
+ date: 2015-07-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bindata
@@ -131,6 +131,7 @@ extra_rdoc_files: []
131
131
  files:
132
132
  - ".gitignore"
133
133
  - ".rspec"
134
+ - ".travis.yml"
134
135
  - Gemfile
135
136
  - LICENSE.txt
136
137
  - README.md
@@ -169,10 +170,14 @@ files:
169
170
  - spec/support/examples/record/message/data_field_array.fit
170
171
  - spec/support/examples/record/message/data_file_capabilities_activities.fit
171
172
  - spec/support/examples/record/message/data_file_capabilities_settings.fit
173
+ - spec/support/examples/record/message/data_lap.fit
174
+ - spec/support/examples/record/message/data_session.fit
172
175
  - spec/support/examples/record/message/definition
173
176
  - spec/support/examples/record/message/definition_dynamic_fields.fit
174
177
  - spec/support/examples/record/message/definition_field_array.fit
175
178
  - spec/support/examples/record/message/definition_file_capabilities.fit
179
+ - spec/support/examples/record/message/definition_lap.fit
180
+ - spec/support/examples/record/message/definition_session.fit
176
181
  - spec/support/examples/record/normal_header
177
182
  homepage: https://github.com/tjwallace/fit
178
183
  licenses:
@@ -194,7 +199,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
194
199
  version: '0'
195
200
  requirements: []
196
201
  rubyforge_project:
197
- rubygems_version: 2.2.2
202
+ rubygems_version: 2.2.0
198
203
  signing_key:
199
204
  specification_version: 4
200
205
  summary: Ruby gem for reading Garmin FIT files
@@ -221,8 +226,12 @@ test_files:
221
226
  - spec/support/examples/record/message/data_field_array.fit
222
227
  - spec/support/examples/record/message/data_file_capabilities_activities.fit
223
228
  - spec/support/examples/record/message/data_file_capabilities_settings.fit
229
+ - spec/support/examples/record/message/data_lap.fit
230
+ - spec/support/examples/record/message/data_session.fit
224
231
  - spec/support/examples/record/message/definition
225
232
  - spec/support/examples/record/message/definition_dynamic_fields.fit
226
233
  - spec/support/examples/record/message/definition_field_array.fit
227
234
  - spec/support/examples/record/message/definition_file_capabilities.fit
235
+ - spec/support/examples/record/message/definition_lap.fit
236
+ - spec/support/examples/record/message/definition_session.fit
228
237
  - spec/support/examples/record/normal_header