class OpenTx::Log::Session

Public Class Methods

known_rows?(headers) click to toggle source

XXX currently just know Taranis X9D files…

# File lib/opentx/log/session.rb, line 7
def self.known_rows?(headers)
  return false unless [48].include?(headers.length)

  # check for a few known headers
  (%w(Date Time SWR RSSI A1 A2 Long Lat Temp1 Temp2 RPM Fuel) - headers).empty?
end
new(csv_rows) click to toggle source
# File lib/opentx/log/session.rb, line 14
def initialize(csv_rows)
  @rows = csv_rows
end

Public Instance Methods

a1() click to toggle source
# File lib/opentx/log/session.rb, line 53
def a1
  @a1 ||= float_field('A1')
end
a1?() click to toggle source
# File lib/opentx/log/session.rb, line 49
def a1?
  a1.any? { |v| v > 0.0 }
end
a2() click to toggle source
# File lib/opentx/log/session.rb, line 61
def a2
  @a2 ||= float_field('A2')
end
a2?() click to toggle source
# File lib/opentx/log/session.rb, line 57
def a2?
  a2.any? { |v| v > 0.0 }
end
cell(index) click to toggle source

@param index [1..6]

# File lib/opentx/log/session.rb, line 105
def cell(index)
  float_field("Cell #{index}")
end
cell?(index) click to toggle source

@param index [1..6]

# File lib/opentx/log/session.rb, line 100
def cell?(index)
  cell(index).any? { |v| v > 0.0 }
end
cell_volts() click to toggle source
# File lib/opentx/log/session.rb, line 95
def cell_volts
  @cell_volts ||= float_field('Cell volts')
end
cell_volts?() click to toggle source
# File lib/opentx/log/session.rb, line 91
def cell_volts?
  cell_volts.any? { |v| v > 0.0 }
end
duration() click to toggle source
# File lib/opentx/log/session.rb, line 18
def duration
  milliseconds
  times.last - times.first
end
fuel() click to toggle source
# File lib/opentx/log/session.rb, line 87
def fuel
  @fuel ||= int_field('Fuel')
end
fuel?() click to toggle source
# File lib/opentx/log/session.rb, line 83
def fuel?
  fuel.any? { |f| f != 0 }
end
milliseconds() click to toggle source

@return [Array<Float>] millisecond time stamps for all entries, 0-based

# File lib/opentx/log/session.rb, line 24
def milliseconds
  @milliseconds ||= times.map { |time| ((time - times.first) * 1000).round(2) }
end
rssi() click to toggle source
# File lib/opentx/log/session.rb, line 45
def rssi
  @rssi ||= int_field('RSSI')
end
rssi?() click to toggle source
# File lib/opentx/log/session.rb, line 41
def rssi?
  rssi.any?
end
swr() click to toggle source
# File lib/opentx/log/session.rb, line 37
def swr
  @swr ||= int_field('SWR')
end
swr?() click to toggle source
# File lib/opentx/log/session.rb, line 33
def swr?
  swr.any?
end
temp1(unit = :c) click to toggle source
# File lib/opentx/log/session.rb, line 69
def temp1(unit = :c)
  @temp1 ||= int_field('Temp1')
  @temp1.map { |t| convert_temperature(t, unit) }
end
temp1?() click to toggle source
# File lib/opentx/log/session.rb, line 65
def temp1?
  int_field('Temp1').any? { |t| t != 0 }
end
temp2(unit = :c) click to toggle source
# File lib/opentx/log/session.rb, line 78
def temp2(unit = :c)
  @temp2 ||= int_field('Temp2')
  @temp2.map { |t| convert_temperature(t, unit) }
end
temp2?() click to toggle source
# File lib/opentx/log/session.rb, line 74
def temp2?
  int_field('Temp2').any? { |t| t != 0 }
end
times() click to toggle source

@return [Array<Time>] all date-times in the session

# File lib/opentx/log/session.rb, line 29
def times
  @times ||= @rows.map { |row| Time.strptime("#{row['Date']} #{row['Time']}", '%Y-%m-%d %H:%M:%S.%N') }
end

Private Instance Methods

convert_temperature(celsius, unit) click to toggle source
# File lib/opentx/log/session.rb, line 111
def convert_temperature(celsius, unit)
  case unit
  when :f
    (celsius * (9.0 / 5.0)) + 32
  else
    celsius
  end
end
float_field(name) click to toggle source
# File lib/opentx/log/session.rb, line 120
def float_field(name)
  @rows.map { |row| row[name].to_f }
end
int_field(name) click to toggle source
# File lib/opentx/log/session.rb, line 124
def int_field(name)
  @rows.map { |row| row[name].to_i }
end