class Fit4Ruby::FitDefinition

The FitDefinition contains the blueprints for FitMessageRecord segments of FIT files. Before a message record can occur in a FIT file, its definition must be included in the FIT file. The definition holds enough information about the message record to define its size. It also contains some basic information how to interpret the data in the record. To fully understand the message record data the full definition in the GlobalFitMessage is required.

Public Class Methods

read(io, entity, developer_data_flag, fit_entity) click to toggle source
Calls superclass method
# File lib/fit4ruby/FitDefinition.rb, line 60
def FitDefinition::read(io, entity, developer_data_flag, fit_entity)
  @@has_developer_data = developer_data_flag != 0
  @@fit_entity = fit_entity
  super(io)
end

Public Instance Methods

check() click to toggle source
# File lib/fit4ruby/FitDefinition.rb, line 52
def check
  if architecture.snapshot > 1
    Log.fatal "Illegal architecture value #{architecture.snapshot}"
  end
  data_fields.each { |f| f.check }
  developer_fields.each { |f| f.check }
end
endian() click to toggle source
# File lib/fit4ruby/FitDefinition.rb, line 48
def endian
  architecture.snapshot == 0 ? :little : :big
end
fit_entity() click to toggle source
# File lib/fit4ruby/FitDefinition.rb, line 74
def fit_entity
  @@fit_entity
end
has_developer_data?() click to toggle source
# File lib/fit4ruby/FitDefinition.rb, line 70
def has_developer_data?
  @@has_developer_data
end
setup(fit_message_definition, field_values_by_name) click to toggle source
# File lib/fit4ruby/FitDefinition.rb, line 78
def setup(fit_message_definition, field_values_by_name)
  fit_message_definition.fields_by_number.each do |number, f|
    fdf = FitDefinitionField.new
    fdf.field_definition_number = number
    fdf.set_type(f.type)
    value = field_values_by_name[f.name]
    # For String and Array fields we must adjust the length in the
    # definition message.
    if value.is_a?(String) && f.is_string?
      # String plus 0 byte
      fdf.set_length(value.bytes.length + 1)
    elsif value.is_a?(Array) && f.is_array?
      fdf.set_length(value.length)
    end

    data_fields << fdf
  end
  self.field_count = data_fields.length
end
write(io) click to toggle source
Calls superclass method
# File lib/fit4ruby/FitDefinition.rb, line 66
def write(io)
  super(io)
end