Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
104 commits
Select commit Hold shift + click to select a range
597c6e6
WEB-5661 Add sport/subsport and manufacturer opts
anna-huller Mar 5, 2025
7e53d6e
WEB-5661 change subsport id
anna-huller Mar 5, 2025
8916f3b
WEB-5661 change subsport id
anna-huller Mar 5, 2025
2c178c8
WEB-5661 change subsport id
anna-huller Mar 5, 2025
c8af9ed
WEB-5661 add ascent
anna-huller Mar 5, 2025
3406396
WEB-5661 add ascent
anna-huller Mar 5, 2025
091bef6
WEB-5661 add ascent
anna-huller Mar 5, 2025
1fb6776
WEB-5661 remove truncations
anna-huller Mar 6, 2025
8057f33
WEB-5661 remove truncations
anna-huller Mar 6, 2025
2608e49
WEB-5661 add truncations
anna-huller Mar 6, 2025
2d062c3
change course point name length max
anna-huller Mar 11, 2025
7640746
change course point name length max
anna-huller Mar 12, 2025
8f1b49f
add more course point types
anna-huller Mar 13, 2025
04aceec
first commit for writing activity files
anna-huller Mar 20, 2025
15f8692
secoond commit for writing activity files
anna-huller Mar 20, 2025
546e831
third commit for writing activity files
anna-huller Mar 20, 2025
2cf9cba
fourth commit for writing activity files
anna-huller Mar 20, 2025
2974edd
fifth commit for writing activity files
anna-huller Mar 20, 2025
b5c7905
sixth commit for writing activity files
anna-huller Mar 20, 2025
bf6a27d
seventh commit for writing activity files
anna-huller Mar 20, 2025
cf8f163
add wkt section to activity file
anna-huller Mar 20, 2025
280f88b
add wkt section to activity file
anna-huller Mar 20, 2025
f8978b7
add lengths and device info
anna-huller Mar 21, 2025
74b0559
edit size calculation
anna-huller Mar 21, 2025
a6566b2
add sport and zones
anna-huller Mar 24, 2025
00b44e9
add sport message
anna-huller Mar 24, 2025
b3b057d
add sport message
anna-huller Mar 24, 2025
1e511fb
add comments for debugging
anna-huller Mar 24, 2025
8dab58e
fix data size calc
anna-huller Mar 24, 2025
9a78ea0
move activity message
anna-huller Mar 24, 2025
9405115
move activity message
anna-huller Mar 24, 2025
904b2be
fix sport call in lap
anna-huller Mar 24, 2025
031548d
separate route lap and wkt lap
anna-huller Mar 24, 2025
ac84581
separate route lap and wkt lap
anna-huller Mar 24, 2025
afa1711
add wahoo custom nums
anna-huller Mar 25, 2025
5d965bf
add wahoo custom nums
anna-huller Mar 25, 2025
653ddb1
add wahoo custom nums
anna-huller Mar 25, 2025
29f3e86
add debugging statements
anna-huller Mar 25, 2025
f0247c0
add debugging statements
anna-huller Mar 25, 2025
ce80a08
add debugging statements
anna-huller Mar 25, 2025
0fac18a
add wahoo nums
anna-huller Mar 25, 2025
9d3097b
add wahoo nums
anna-huller Mar 25, 2025
2ca494d
add wahoo nums
anna-huller Mar 25, 2025
52c3ed5
add wahoo nums
anna-huller Mar 25, 2025
ee8c9cc
add wahoo nums
anna-huller Mar 25, 2025
78e9ee7
add wahoo clms
anna-huller Mar 25, 2025
b589a45
add wahoo clms
anna-huller Mar 25, 2025
2ec5afb
add wahoo clms
anna-huller Mar 26, 2025
f6ad799
Add parser and tests
anna-huller Mar 28, 2025
d5046c2
remove puts statements
anna-huller Mar 28, 2025
0e6ecaa
add fit_parser to rubyfit
anna-huller Mar 28, 2025
26751fc
add fit_parser to rubyfit
anna-huller Mar 28, 2025
e74e5fe
fix data size calculation
anna-huller Mar 31, 2025
35a32e0
add file cleanup to parsing
anna-huller Mar 31, 2025
92a1f83
change to yield json data
anna-huller Mar 31, 2025
4f9c50a
remove callbacks
anna-huller Mar 31, 2025
92fa219
additional testing and type changes
anna-huller Apr 2, 2025
98712a6
skip invalid values when parsing
anna-huller Apr 2, 2025
91be093
add more fields from ace testing
anna-huller Apr 3, 2025
c0c6c0c
pluralize json parsed arrays
anna-huller Apr 3, 2025
3ffa8e1
pluralize json parsed arrays differently
anna-huller Apr 3, 2025
18981c7
change naming of fields to match crux
anna-huller Apr 4, 2025
713fc42
additional naming changes
anna-huller Apr 4, 2025
45bcb5d
change timestamp format
anna-huller Apr 4, 2025
8a7744d
change back altitude calculation
anna-huller Apr 4, 2025
e0aa8d1
change ascent type
anna-huller Apr 4, 2025
a5e30a7
change typos
anna-huller Apr 4, 2025
543ef2b
add truncate
anna-huller Apr 4, 2025
66de985
change ascent type
anna-huller Apr 4, 2025
06ceaa9
change avg_spd type
anna-huller Apr 4, 2025
60194c9
change avg_spd type
anna-huller Apr 4, 2025
2fb5a46
fill in blank array with 0s
anna-huller Apr 4, 2025
9726fd2
add decimal to percents
anna-huller Apr 4, 2025
82e2538
miscellaneous changes
anna-huller Apr 24, 2025
32a010d
add repair function
anna-huller May 1, 2025
b9cc159
add repair activity rule
anna-huller May 2, 2025
c8ccf27
add repair file function to add missing session block
anna-huller May 9, 2025
c2adb42
make wahoo id a hash instead of array in parsing
anna-huller Jun 4, 2025
795b0ec
add build lap and session methods to repair function
anna-huller Jun 5, 2025
b03259c
add rpe to session
anna-huller Jun 5, 2025
b8f34e9
add validation for activity timer time
anna-huller Jun 6, 2025
bfcc28e
add sec field to records in parsing
anna-huller Jun 9, 2025
84c5e4a
add clm formatting and post parsing event validations
anna-huller Jun 10, 2025
a3153d3
fix event validations
anna-huller Jun 11, 2025
a97daa9
add clm special parsing
anna-huller Jun 12, 2025
334f1dc
add developer field architecture to routes
anna-huller Jul 2, 2025
634e7c7
fix parsing
anna-huller Jul 2, 2025
58183fd
updated waypoint mappings
anna-huller Jul 3, 2025
5e19f46
update parser for dev field
anna-huller Jul 3, 2025
edfca8b
updated message fields
anna-huller Jul 21, 2025
857c250
updated rpe scale
anna-huller Aug 7, 2025
05c61aa
add description developer field
anna-huller Sep 4, 2025
41f5bd1
fix parsing and encoding of invalid distance
anna-huller Sep 5, 2025
b1119f6
make workout parsing singular
anna-huller Oct 8, 2025
3a48e04
add segment_start and segment_end
anna-huller Oct 17, 2025
6da7cd8
improve error protections
anna-huller Oct 28, 2025
7235d43
improve error protections
anna-huller Oct 28, 2025
6f75858
insert wahoo id and workout sections in repair function
anna-huller Nov 24, 2025
cdce51a
add special parsing to session block
anna-huller Nov 24, 2025
57d9d41
update parsing for wahoo id to include workout token
anna-huller Nov 25, 2025
7971d94
protect against errors
anna-huller Dec 18, 2025
ba7612a
protect against errors
anna-huller Dec 18, 2025
e731ad6
add workout plan clm parsing
anna-huller Feb 9, 2026
d4718db
add repair for coros treadmill
anna-huller Feb 17, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions Gemfile
Original file line number Diff line number Diff line change
Expand Up @@ -2,3 +2,7 @@ source "http://rubygems.org"

# Specify your gem's dependencies in rubyfit.gemspec
gemspec
group :test do
gem 'minitest', '5.10.3'
gem 'json', '~> 2.7.2'
end
86 changes: 38 additions & 48 deletions examples/fit_callbacks.rb
Original file line number Diff line number Diff line change
@@ -1,50 +1,40 @@
class FitCallbacks
def initialize()
end

def on_activity(msg)
#puts "activity: #{msg.inspect}"
end

def on_lap(msg)
#puts "lap: #{msg.inspect}"
end

#what is a session? seems to be another way of saying activity...
def on_session(msg)
#puts "session: #{msg.inspect}"
end

def on_record(msg)
#puts "record: #{msg.inspect}"
cp = {}
if msg['position_lat'] and msg['position_long']
cp[:y] = ("%0.6f" % msg['position_lat']).to_f
cp[:x] = ("%0.6f" % msg['position_long']).to_f
end
cp[:d] = msg['distance'] if msg['distance']
cp[:e] = msg['altitude'] if msg['altitude']
cp[:h] = msg['heart_rate'] if msg['heart_rate']
cp[:t] = msg['timestamp']
cp[:c] = msg['cadence'] if msg['cadence']
cp[:p] = msg['power'] if msg['power']
cp[:s] = msg['speed'] if msg['speed']
cp[:T] = msg['temperature'] if msg['temperature']
end

def on_event(msg)
#puts "event: #{msg.inspect}"
end

def on_device_info(msg)
#puts "device info: #{msg.inspect}"
end

def on_user_profile(msg)
#puts "user profile: #{msg.inspect}"
end

def on_weight_scale_info(msg)
#puts "weight scale info: #{msg.inspect}"
end
attr_reader :definitions, :fit_data

def initialize
@definitions = {}
@fit_data = {}
end

callbacks = {
definition_message: ->(local_num, global_message_number, fields, developer_fields) {
global_message_number = global_message_number.to_i
# Store the definition for the local number
@definitions[local_num] = { global_message_number: global_message_number, fields: fields, developer_fields: developer_fields }
},
get_definition: ->(local_num) {
# Retrieve the definition for the local number
@definitions[local_num] || { fields: [] }
},
data_message: ->(local_num, values) {

formatted_values = values.map do |key, value|
formatted_value = if value.is_a?(String)
value.bytes.map { |byte| sprintf('%02X', byte) }.join(' ') # For byte arrays, convert each byte to hex
else
value.inspect # For non-byte arrays, just inspect the value
end
"#{key}: #{formatted_value}"

end

@fit_data[local_num] = formatted_values.join(', ')
},
end_of_file: -> {
File.open('fit_data.json', 'r') do |file|
json_output = JSON.parse(file.read)
json_input = JSON.parse(json_input)
end
}
}
end
2 changes: 2 additions & 0 deletions lib/rubyfit.rb
Original file line number Diff line number Diff line change
Expand Up @@ -3,3 +3,5 @@

require 'rubyfit/writer'
require 'rubyfit/helpers'
require 'rubyfit/fit_parser'
require 'rubyfit/validations'
Loading