From 784a61ed03cb0eae2c0d9c4118da8c7c8045dbf0 Mon Sep 17 00:00:00 2001 From: Kees Bakker Date: Mon, 15 Jun 2026 22:16:52 +0200 Subject: [PATCH 1/2] fix: full_field_name needs a developer_data_ids argument This is a bugfix of a change made in commit 0b0a72f9d5 --- lib/fit4ruby/FitMessageRecord.rb | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/lib/fit4ruby/FitMessageRecord.rb b/lib/fit4ruby/FitMessageRecord.rb index cdc3601..ef8cf77 100644 --- a/lib/fit4ruby/FitMessageRecord.rb +++ b/lib/fit4ruby/FitMessageRecord.rb @@ -111,7 +111,7 @@ def read(io, entity, filter = nil, fields_dump = nil, fit_entity) next end - field_name = field_description.full_field_name(fit_entity) + field_name = field_description.full_field_name(fit_entity.top_level_record.developer_data_ids) units = field_description.units type = field.type native_message_number = field_description.native_mesg_num @@ -205,4 +205,3 @@ def produce(definition) end end - From f416c07f5d18793720a9350fed3943ffe58b5f76 Mon Sep 17 00:00:00 2001 From: Kees Bakker Date: Mon, 15 Jun 2026 22:21:39 +0200 Subject: [PATCH 2/2] fix: Wahoo ELMNT FIT does not have application_id The function always full_field_name tried to use .application_id, but some devices (e.g. Wahoo ELMNT) does not have it. --- lib/fit4ruby/FieldDescription.rb | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/lib/fit4ruby/FieldDescription.rb b/lib/fit4ruby/FieldDescription.rb index fe946e3..aa6c5e0 100644 --- a/lib/fit4ruby/FieldDescription.rb +++ b/lib/fit4ruby/FieldDescription.rb @@ -38,11 +38,18 @@ def full_field_name(developer_data_ids) return end - app_id = developer_data_ids[@developer_data_index].application_id - # Convert the byte array with the app ID into a 16 character hex string. - app_id_str = app_id.map { |i| '%02X' % i }.join('') - @full_field_name = - "#{@field_name.gsub(/[^A-Za-z0-9_]/, '_')}_#{app_id_str}" + if (app_id = developer_data_ids[@developer_data_index].application_id) + # Convert the byte array with the app ID into a 16 character hex string. + id_str = app_id.map { |i| '%02X' % i }.join('') + @full_field_name = + "#{@field_name.gsub(/[^A-Za-z0-9_]/, '_')}_#{id_str}" + elsif (manf_id = developer_data_ids[@developer_data_index].manufacturer_id) + id_str = '%02X' % manf_id + @full_field_name = @field_name + else + id_str = "" + @full_field_name = @field_name + end end def create_global_definition(fit_entity) @@ -78,4 +85,3 @@ def create_global_definition(fit_entity) end end -