Module: Fit4Ruby::FitDefinitionFieldBase

Included in:
FitDefinitionField, FitDeveloperDataFieldDefinition
Defined in:
lib/fit4ruby/FitDefinitionFieldBase.rb

Constant Summary collapse

@@TypeDefs =
[
  # FIT Type, BinData type, undefined value, bytes
  [ 'enum', 'uint8', 0xFF, 1 ],
  [ 'sint8', 'int8', 0x7F, 1 ],
  [ 'uint8', 'uint8', 0xFF, 1 ],
  [ 'sint16', 'int16', 0x7FFF, 2 ],
  [ 'uint16', 'uint16', 0xFFFF, 2 ],
  [ 'sint32', 'int32', 0x7FFFFFFF, 4 ],
  [ 'uint32', 'uint32', 0xFFFFFFFF, 4 ],
  [ 'string', 'string', '', 0 ],
  [ 'float32', 'float', 0xFFFFFFFF, 4 ],
  [ 'float63', 'double', 0xFFFFFFFF, 4 ],
  [ 'uint8z', 'uint8', 0, 1 ],
  [ 'uint16z', 'uint16', 0, 2 ],
  [ 'uint32z', 'uint32', 0, 4 ],
  [ 'byte', 'uint8', 0xFF, 1 ],
  [ 'sint64', 'int64', 0x7FFFFFFFFFFFFFFF, 8 ],
  [ 'uint64', 'uint64', 0xFFFFFFFFFFFFFFFF, 8 ],
  [ 'uint64z', 'uint64', 0, 8 ]
]

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.fit_type_to_bin_data(fit_type) ⇒ Object



38
39
40
41
42
# File 'lib/fit4ruby/FitDefinitionFieldBase.rb', line 38

def FitDefinitionFieldBase::fit_type_to_bin_data(fit_type)
  entry = @@TypeDefs.find { |e| e[0] == fit_type }
  raise "Unknown fit type #{fit_type}" unless entry
  entry[1]
end

.undefined_value(fit_type) ⇒ Object



44
45
46
47
48
# File 'lib/fit4ruby/FitDefinitionFieldBase.rb', line 44

def FitDefinitionFieldBase::undefined_value(fit_type)
  entry = @@TypeDefs.find { |e| e[0] == fit_type }
  raise "Unknown fit type #{fit_type}" unless entry
  entry[2]
end

Instance Method Details

#base_type_bytesObject



78
79
80
# File 'lib/fit4ruby/FitDefinitionFieldBase.rb', line 78

def base_type_bytes
  @@TypeDefs[checked_base_type_number][3]
end

#is_array?Boolean

Returns:

  • (Boolean)


61
62
63
64
65
66
67
68
69
70
71
72
# File 'lib/fit4ruby/FitDefinitionFieldBase.rb', line 61

def is_array?
  if total_bytes > base_type_bytes
    if total_bytes % base_type_bytes != 0
      Log.error "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_type(fit_type) ⇒ Object



50
51
52
53
54
55
# File 'lib/fit4ruby/FitDefinitionFieldBase.rb', line 50

def set_type(fit_type)
  idx = @@TypeDefs.index { |x| x[0] == fit_type }
  raise "Unknown type #{fit_type}" unless idx
  self.base_type_number = idx
  self.byte_count = @@TypeDefs[idx][3]
end

#total_bytesObject



74
75
76
# File 'lib/fit4ruby/FitDefinitionFieldBase.rb', line 74

def total_bytes
  self.byte_count.snapshot
end

#type(fit_type = false) ⇒ Object



57
58
59
# File 'lib/fit4ruby/FitDefinitionFieldBase.rb', line 57

def type(fit_type = false)
  @@TypeDefs[checked_base_type_number][fit_type ? 0 : 1]
end

#undefined_valueObject



82
83
84
# File 'lib/fit4ruby/FitDefinitionFieldBase.rb', line 82

def undefined_value
  @@TypeDefs[checked_base_type_number][2]
end