Class: Fit4Ruby::FitMessageRecord

Inherits:
Object
  • Object
show all
Defined in:
lib/fit4ruby/FitMessageRecord.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(definition) ⇒ FitMessageRecord

Returns a new instance of FitMessageRecord.



23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/fit4ruby/FitMessageRecord.rb', line 23

def initialize(definition)
  @definition = definition
  @global_message_number = definition.global_message_number.snapshot

  if (@gfm = GlobalFitMessages[@global_message_number])
    @name = @gfm.name
  else
    @name = "message#{@global_message_number}"
    Log.warn { "Unknown global message number #{@global_message_number}" }
  end
  @message_record = produce(definition)
end

Instance Attribute Details

#global_message_numberObject (readonly)

Returns the value of attribute global_message_number.



21
22
23
# File 'lib/fit4ruby/FitMessageRecord.rb', line 21

def global_message_number
  @global_message_number
end

#message_recordObject (readonly)

Returns the value of attribute message_record.



21
22
23
# File 'lib/fit4ruby/FitMessageRecord.rb', line 21

def message_record
  @message_record
end

#nameObject (readonly)

Returns the value of attribute name.



21
22
23
# File 'lib/fit4ruby/FitMessageRecord.rb', line 21

def name
  @name
end

Instance Method Details

#read(io, activity, filter = nil, fields_dump = nil) ⇒ Object



36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
# File 'lib/fit4ruby/FitMessageRecord.rb', line 36

def read(io, activity, filter = nil, fields_dump = nil)
  @message_record.read(io)

  obj = case @name
        when 'activity'
          activity
        when 'session'
          activity.new_session
        when 'record'
          activity.new_record
        else
          nil
        end

  @definition.fields.each do |field|
    value = @message_record[field.name].snapshot
    obj.set(field.name, field.to_machine(value)) if obj
    if filter && fields_dump &&
       (filter.field_names.nil? ||
        filter.field_names.include?(field.name)) &&
       (value != field.undefined_value || !filter.ignore_undef)
      fields_dump[field] = value
    end
  end
end