module Fit4Ruby::FitDefinitionFieldBase

Public Class Methods

fit_type_to_bin_data(fit_type) click to toggle source
# File lib/fit4ruby/FitDefinitionFieldBase.rb, line 19
def FitDefinitionFieldBase::fit_type_to_bin_data(fit_type)
  entry = FIT_TYPE_DEFS.find { |e| e[0] == fit_type }
  raise "Unknown fit type #{fit_type}" unless entry
  entry[1]
end
undefined_value(fit_type) click to toggle source
# File lib/fit4ruby/FitDefinitionFieldBase.rb, line 25
def FitDefinitionFieldBase::undefined_value(fit_type)
  entry = FIT_TYPE_DEFS.find { |e| e[0] == fit_type }
  raise "Unknown fit type #{fit_type}" unless entry
  entry[2]
end

Public Instance Methods

base_type_bytes() click to toggle source
# File lib/fit4ruby/FitDefinitionFieldBase.rb, line 68
def base_type_bytes
  FIT_TYPE_DEFS[checked_base_type_number][3]
end
is_array?() click to toggle source
# File lib/fit4ruby/FitDefinitionFieldBase.rb, line 50
def is_array?
  if total_bytes > base_type_bytes
    if total_bytes % base_type_bytes != 0
      raise RuntimeError,
        "Total bytes (#{total_bytes}) must be multiple of " +
        "base type bytes (#{base_type_bytes}) of type " +
        "#{base_type_number.snapshot} in Global FIT " +
        "Message #{name}."
    end
    return true
  end
  false
end
set_length(count) click to toggle source
# File lib/fit4ruby/FitDefinitionFieldBase.rb, line 42
def set_length(count)
  if (byte_count = FIT_TYPE_DEFS[self.base_type_number][3] * count) > 255
    raise ArgumentError,
      "FitDefinitionField byte count too large (#{byte_count})"
  end
  self.byte_count = byte_count
end
set_type(fit_type) click to toggle source
# File lib/fit4ruby/FitDefinitionFieldBase.rb, line 31
def set_type(fit_type)
  idx = FIT_TYPE_DEFS.index { |x| x[0] == fit_type }
  raise ArgumentError, "Unknown type #{fit_type}" unless idx
  self.base_type_number = idx
  self.byte_count = FIT_TYPE_DEFS[idx][3]
end
total_bytes() click to toggle source
# File lib/fit4ruby/FitDefinitionFieldBase.rb, line 64
def total_bytes
  self.byte_count.snapshot
end
type(fit_type = false) click to toggle source
# File lib/fit4ruby/FitDefinitionFieldBase.rb, line 38
def type(fit_type = false)
  FIT_TYPE_DEFS[checked_base_type_number][fit_type ? 0 : 1]
end
undefined_value() click to toggle source
# File lib/fit4ruby/FitDefinitionFieldBase.rb, line 72
def undefined_value
  FIT_TYPE_DEFS[checked_base_type_number][2]
end

Private Instance Methods

check_fit_base_type() click to toggle source
# File lib/fit4ruby/FitDefinitionFieldBase.rb, line 87
def check_fit_base_type
  if FIT_TYPE_DEFS.length <= base_type_number.snapshot
  end
end
checked_base_type_number() click to toggle source
# File lib/fit4ruby/FitDefinitionFieldBase.rb, line 78
def checked_base_type_number
  if FIT_TYPE_DEFS.length <= base_type_number.snapshot
    Log.error "Unknown FIT Base type #{base_type_number.snapshot} in " +
      "Global FIT Message #{name}"
    return 0
  end
  base_type_number.snapshot
end