Class: DataField
Constant Summary collapse
- TYPES =
{ 0 => { size: 1, unpack_type: 'C', endian: 0, invalid: 255 }, 1 => { size: 1, unpack_type: 'c', endian: 0, invalid: 127 }, 2 => { size: 1, unpack_type: 'C', endian: 0, invalid: 255 }, 3 => { size: 2, unpack_type: { big: 's>', little: 's<' }, endian: 1, invalid: 32767 }, 4 => { size: 2, unpack_type: { big: 'S>', little: 'S<' }, endian: 1, invalid: 65535 }, 5 => { size: 4, unpack_type: { big: 'l>', little: 'l<' }, endian: 1, invalid: 2147483647 }, 6 => { size: 4, unpack_type: { big: 'L>', little: 'L<' }, endian: 1, invalid: 4294967295 }, 7 => { size: 1, unpack_type: 'Z*', endian: 0, invalid: 0 }, 8 => { size: 4, unpack_type: { big: 'e', little: 'g' }, endian: 1, invalid: 4294967295 }, 9 => { size: 8, unpack_type: { big: 'E', little: 'G' }, endian: 1, invalid: 18446744073709551615 }, 10 => { size: 1, unpack_type: 'C', endian: 0, invalid: 0 }, 11 => { size: 2, unpack_type: { big: 'S>', little: 'S<' }, endian: 1, invalid: 0 }, 12 => { size: 4, unpack_type: { big: 'L>', little: 'L<' }, endian: 1, invalid: 0 }, 13 => { size: 1, unpack_type: 'C', endian: 0, invalid: 0xFF }, 14 => { size: 8, unpack_type: { big: 'q>', little: 'q<' }, endian: 1, invalid: 0x7FFFFFFFFFFFFFFF }, 15 => { size: 8, unpack_type: { big: 'Q>', little: 'Q<' }, endian: 1, invalid: 0xFFFFFFFFFFFFFFFF }, 16 => { size: 8, unpack_type: nil, endian: 1, invalid: 0x0000000000000000 } }.freeze
Constants included from Unpack
Instance Attribute Summary collapse
-
#raw ⇒ Object
readonly
Returns the value of attribute raw.
-
#valid ⇒ Object
readonly
Returns the value of attribute valid.
Instance Method Summary collapse
- #check(raw, invalid) ⇒ Object
-
#initialize(io, d, arch) ⇒ DataField
constructor
A new instance of DataField.
Methods inherited from FitObject
Methods included from Unpack
#read_bit, #read_bits, #read_multiple, #readbytes
Constructor Details
#initialize(io, d, arch) ⇒ DataField
Returns a new instance of DataField.
24 25 26 27 28 29 |
# File 'lib/fitreader/data_field.rb', line 24 def initialize(io, d, arch) base = TYPES[d.base_num] char = d.endianness.zero? ? base[:unpack_type] : base[:unpack_type][arch] @raw = read_multiple(io, char, d.size, base[:size]) @valid = check(@raw, base[:invalid]) end |
Instance Attribute Details
#raw ⇒ Object (readonly)
Returns the value of attribute raw.
22 23 24 |
# File 'lib/fitreader/data_field.rb', line 22 def raw @raw end |
#valid ⇒ Object (readonly)
Returns the value of attribute valid.
22 23 24 |
# File 'lib/fitreader/data_field.rb', line 22 def valid @valid end |
Instance Method Details
#check(raw, invalid) ⇒ Object
31 32 33 34 35 36 37 |
# File 'lib/fitreader/data_field.rb', line 31 def check(raw, invalid) if raw.is_a? Array raw.any? { |e| e != invalid } else raw != invalid end end |