class Fit4Ruby::FieldDescription
This class corresponds to the FieldDescription
FIT message.
Public Class Methods
new(field_values = {})
click to toggle source
Create a new FieldDescription
object. @param field_values [Hash] Hash that provides initial values for certain
fields.
Calls superclass method
# File lib/fit4ruby/FieldDescription.rb, line 25 def initialize(field_values = {}) super('field_description') set_field_values(field_values) @full_field_name = nil end
Public Instance Methods
create_global_definition(fit_entity)
click to toggle source
# File lib/fit4ruby/FieldDescription.rb, line 48 def create_global_definition(fit_entity) messages = fit_entity.developer_fit_messages unless (gfm = GlobalFitMessages[@native_mesg_num]) Log.error "Developer field description references unknown global " + "message number #{@native_mesg_num}" return end msg = messages[@native_mesg_num] || messages.message(@native_mesg_num, gfm.name) unless (@fit_base_type_id & 0x7F) < FIT_TYPE_DEFS.size Log.error "fit_base_type_id #{@fit_base_type_id} is too large" return end # A fit file may include multiple definitions of the same field. We # ignore all subsequent definitions. return if msg.has_field?(full_field_name(fit_entity.top_level_record. developer_data_ids)) options = {} options[:scale] = @scale if @scale options[:offset] = @offset if @offset options[:array] = @array if @array options[:unit] = @units msg.field(@field_definition_number, FIT_TYPE_DEFS[@fit_base_type_id & 0x7F][1], @full_field_name, options) end
full_field_name(developer_data_ids)
click to toggle source
# File lib/fit4ruby/FieldDescription.rb, line 32 def full_field_name(developer_data_ids) return @full_field_name if @full_field_name if @developer_data_index >= developer_data_ids.size Log.error "Developer data index #{@developer_data_index} is too large" 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}" end