class DefinitionRecord

Attributes

data_records[R]
dev_defs[R]
field_definitions[R]
global_msg_num[R]
local_num[R]
num_fields[R]
reserved[R]

Public Class Methods

new(io, local_num, dev_field_defs = nil) click to toggle source
# File lib/fitreader/definition_record.rb, line 7
def initialize(io, local_num, dev_field_defs = nil)
  @local_num = local_num

  # read record
  @reserved = io.readbyte
  @architecture = io.readbyte
  char = @architecture.zero? ? 'v' : 'n'
  @global_msg_num = readbytes(io, char, 2)
  num_fields = io.readbyte

  # read fields
  @field_definitions = Array.new(num_fields) { FieldDefinition.new(io) }

  unless dev_field_defs.nil?
    num_fields = io.readbyte
    @dev_defs = Array.new(num_fields) { DevFieldDefinition.new(io, dev_field_defs) }
  end
  @data_records = []
end

Public Instance Methods

endian() click to toggle source
# File lib/fitreader/definition_record.rb, line 27
def endian
  @architecture.zero? ? :little : :big
end
valid() click to toggle source
# File lib/fitreader/definition_record.rb, line 31
def valid
  fd = Sdk.fields(@global_msg_num)
  return if fd.nil?
  @data_records.map do |d|
    d.valid.select { |k, _| fd.keys.include? k }.merge(d.dev_fields)
  end
end