class EGauge::Register

Attributes

index[RW]
label[RW]
type_code[RW]

Public Class Methods

new(data, index, def_node) click to toggle source
# File lib/egauge/register.rb, line 8
def initialize(data, index, def_node)
  @data = data
  @index = index
  
  @label = def_node.text
  @type_code = def_node['t']
end

Public Instance Methods

count() click to toggle source
# File lib/egauge/register.rb, line 41
def count
  @data.num_rows
end
each_row() { |ts, val| ... } click to toggle source

Run each value in this register, yielding |timestamp, value| for each

# File lib/egauge/register.rb, line 17
def each_row
  @data.xml.group.elements.each do |chunk|
    # Set up for running this data chunk - prep timestamp and increment step from source xml
    ts = EGauge::parse_time(chunk['time_stamp'])
    step = chunk['time_delta'].to_i
    
    # Run each row in the chunk, and yield our results
    (chunk / './r').each do |row|
      val = (row / './c')[@index].text.to_i
      yield ts, val
      ts += step
    end
  end
end
to_a() click to toggle source

Return results as a 2D array, like so: [ [timestamp1, val1], [timestamp2, val2], … ]

# File lib/egauge/register.rb, line 33
def to_a
  res = []
  each_row do |ts, val|
    res << [ts, val]
  end
  res
end