Class: EagleTree::Log::Session
- Inherits:
-
Object
- Object
- EagleTree::Log::Session
- Defined in:
- lib/eagletree/log/session.rb
Overview
Represents an individual recording session.
Instance Attribute Summary collapse
-
#number ⇒ Fixnum
readonly
This sessions number in the data file.
-
#range ⇒ Array<Fixnum>
readonly
Range of entries timestamps for this session.
-
#rows ⇒ Array
Rows of raw data from session.
Instance Method Summary collapse
-
#airspeeds(unit = :mph) ⇒ Float
Gets the air speed (Pitot), in the desired unit.
- #airspeeds? ⇒ Boolean
- #altitudes ⇒ Object
- #altitudes? ⇒ Boolean
- #amps ⇒ Object
- #amps? ⇒ Boolean
- #coords ⇒ Object
- #coords? ⇒ Boolean
-
#duration ⇒ Float
Gets the duration of the session, in seconds.
- #gps_altitudes ⇒ Object
- #gps_altitudes? ⇒ Boolean
- #gps_courses ⇒ Object
- #gps_courses? ⇒ Boolean
- #gps_satellites ⇒ Object
- #gps_satellites? ⇒ Boolean
-
#gps_speeds(unit = :mph) ⇒ Float
Gets the ground speed (GPS), in the desired unit.
- #gps_speeds? ⇒ Boolean
-
#initialize(number, range) ⇒ Session
constructor
A new instance of Session.
- #latitudes ⇒ Object
- #latitudes? ⇒ Boolean
- #longitudes ⇒ Object
- #longitudes? ⇒ Boolean
- #milliseconds ⇒ Object
- #milliseconds? ⇒ Boolean
- #pack_voltages ⇒ Object
- #pack_voltages? ⇒ Boolean
- #rpms ⇒ Object
- #rpms2 ⇒ Object
- #rpms2? ⇒ Boolean
- #rpms? ⇒ Boolean
- #servo_currents ⇒ Object
- #servo_currents? ⇒ Boolean
- #temps1 ⇒ Object
- #temps1? ⇒ Boolean
- #temps2 ⇒ Object
- #temps2? ⇒ Boolean
- #temps3 ⇒ Object
- #temps3? ⇒ Boolean
- #throttles ⇒ Object
- #throttles? ⇒ Boolean
-
#to_kml(file_options = {}, placemark_options = {}) ⇒ String
Converts the session into a KML document containing a placemark.
-
#to_kml? ⇒ Boolean
Determines if KML methods can be called for this session.
-
#to_kml_file(file_options = {}, placemark_options = {}) ⇒ KMLFile
Converts the session into a KMLFile containing a placemark.
-
#to_kml_placemark(options = {}) ⇒ KML::Placemark
Converts the session into a KML::Placemark containing GPS coordinates.
Constructor Details
#initialize(number, range) ⇒ Session
Returns a new instance of Session.
18 19 20 21 |
# File 'lib/eagletree/log/session.rb', line 18 def initialize number, range @number = number @range = range end |
Instance Attribute Details
#number ⇒ Fixnum (readonly)
Returns this sessions number in the data file.
10 11 12 |
# File 'lib/eagletree/log/session.rb', line 10 def number @number end |
#range ⇒ Array<Fixnum> (readonly)
Returns range of entries timestamps for this session.
13 14 15 |
# File 'lib/eagletree/log/session.rb', line 13 def range @range end |
#rows ⇒ Array
Returns rows of raw data from session.
16 17 18 |
# File 'lib/eagletree/log/session.rb', line 16 def rows @rows end |
Instance Method Details
#airspeeds(unit = :mph) ⇒ Float
Gets the air speed (Pitot), in the desired unit.
54 55 56 |
# File 'lib/eagletree/log/session.rb', line 54 def airspeeds(unit = :mph) @airspeeds ||= float_fields('Airspeed') end |
#airspeeds? ⇒ Boolean
58 59 60 |
# File 'lib/eagletree/log/session.rb', line 58 def airspeeds? nonzero?(airspeeds) end |
#altitudes ⇒ Object
42 43 44 |
# File 'lib/eagletree/log/session.rb', line 42 def altitudes @altitudes ||= int_fields('Altitude') end |
#altitudes? ⇒ Boolean
46 47 48 |
# File 'lib/eagletree/log/session.rb', line 46 def altitudes? nonzero?(altitudes) end |
#amps ⇒ Object
86 87 88 |
# File 'lib/eagletree/log/session.rb', line 86 def amps @amps ||= float_fields('Amps*100').map { |val| val / 100.0 } end |
#amps? ⇒ Boolean
90 91 92 |
# File 'lib/eagletree/log/session.rb', line 90 def amps? nonzero?(amps) end |
#coords ⇒ Object
186 187 188 |
# File 'lib/eagletree/log/session.rb', line 186 def coords @coords ||= longitudes.zip(latitudes, gps_altitudes, gps_courses) end |
#coords? ⇒ Boolean
190 191 192 |
# File 'lib/eagletree/log/session.rb', line 190 def coords? longitudes? || latitudes? || gps_altitudes? || gps_courses? end |
#duration ⇒ Float
Gets the duration of the session, in seconds.
30 31 32 |
# File 'lib/eagletree/log/session.rb', line 30 def duration @duration ||= (range[1] - range[0]) / 1000.0 end |
#gps_altitudes ⇒ Object
150 151 152 |
# File 'lib/eagletree/log/session.rb', line 150 def gps_altitudes @gps_altitudes ||= float_fields('GPSAlt') end |
#gps_altitudes? ⇒ Boolean
154 155 156 |
# File 'lib/eagletree/log/session.rb', line 154 def gps_altitudes? nonzero?(gps_altitudes) end |
#gps_courses ⇒ Object
170 171 172 |
# File 'lib/eagletree/log/session.rb', line 170 def gps_courses @gps_courses ||= float_fields('GPSCourse') end |
#gps_courses? ⇒ Boolean
174 175 176 |
# File 'lib/eagletree/log/session.rb', line 174 def gps_courses? nonzero?(gps_courses) end |
#gps_satellites ⇒ Object
178 179 180 |
# File 'lib/eagletree/log/session.rb', line 178 def gps_satellites @gps_satellites ||= int_fields('NumSats') end |
#gps_satellites? ⇒ Boolean
182 183 184 |
# File 'lib/eagletree/log/session.rb', line 182 def gps_satellites? nonzero?(gps_satellites) end |
#gps_speeds(unit = :mph) ⇒ Float
Gets the ground speed (GPS), in the desired unit.
162 163 164 |
# File 'lib/eagletree/log/session.rb', line 162 def gps_speeds(unit = :mph) @gps_speeds ||= float_fields('GPSSpeed') end |
#gps_speeds? ⇒ Boolean
166 167 168 |
# File 'lib/eagletree/log/session.rb', line 166 def gps_speeds? nonzero?(gps_speeds) end |
#latitudes ⇒ Object
134 135 136 |
# File 'lib/eagletree/log/session.rb', line 134 def latitudes @latitudes ||= float_fields('GPSLat') end |
#latitudes? ⇒ Boolean
138 139 140 |
# File 'lib/eagletree/log/session.rb', line 138 def latitudes? nonzero?(latitudes) end |
#longitudes ⇒ Object
142 143 144 |
# File 'lib/eagletree/log/session.rb', line 142 def longitudes @longitudes ||= float_fields('GPSLon') end |
#longitudes? ⇒ Boolean
146 147 148 |
# File 'lib/eagletree/log/session.rb', line 146 def longitudes? nonzero?(longitudes) end |
#milliseconds ⇒ Object
34 35 36 |
# File 'lib/eagletree/log/session.rb', line 34 def milliseconds @milliseconds ||= int_fields('Milliseconds') end |
#milliseconds? ⇒ Boolean
38 39 40 |
# File 'lib/eagletree/log/session.rb', line 38 def milliseconds? nonzero?(milliseconds) end |
#pack_voltages ⇒ Object
78 79 80 |
# File 'lib/eagletree/log/session.rb', line 78 def pack_voltages @pack_voltages ||= float_fields('PackVolt*100').map { |val| val / 100.0 } end |
#pack_voltages? ⇒ Boolean
82 83 84 |
# File 'lib/eagletree/log/session.rb', line 82 def pack_voltages? nonzero?(pack_voltages) end |
#rpms ⇒ Object
118 119 120 |
# File 'lib/eagletree/log/session.rb', line 118 def rpms @rpms ||= int_fields('RPM') end |
#rpms2 ⇒ Object
126 127 128 |
# File 'lib/eagletree/log/session.rb', line 126 def rpms2 @rpms2 ||= int_fields('RPM2') end |
#rpms2? ⇒ Boolean
130 131 132 |
# File 'lib/eagletree/log/session.rb', line 130 def rpms2? nonzero?(rpms2) end |
#rpms? ⇒ Boolean
122 123 124 |
# File 'lib/eagletree/log/session.rb', line 122 def rpms? nonzero?(rpms) end |
#servo_currents ⇒ Object
62 63 64 |
# File 'lib/eagletree/log/session.rb', line 62 def servo_currents @servo_currents ||= float_fields('ServoCurrent*100').map { |val| val / 100.0 } end |
#servo_currents? ⇒ Boolean
66 67 68 |
# File 'lib/eagletree/log/session.rb', line 66 def servo_currents? nonzero?(servo_currents) end |
#temps1 ⇒ Object
94 95 96 |
# File 'lib/eagletree/log/session.rb', line 94 def temps1 @temps1 ||= float_fields('Temp1*10').map { |val| val / 10.0 } end |
#temps1? ⇒ Boolean
98 99 100 |
# File 'lib/eagletree/log/session.rb', line 98 def temps1? nonzero?(temps1) end |
#temps2 ⇒ Object
102 103 104 |
# File 'lib/eagletree/log/session.rb', line 102 def temps2 @temps2 ||= float_fields('Temp2*10').map { |val| val / 10.0 } end |
#temps2? ⇒ Boolean
106 107 108 |
# File 'lib/eagletree/log/session.rb', line 106 def temps2? nonzero?(temps2) end |
#temps3 ⇒ Object
110 111 112 |
# File 'lib/eagletree/log/session.rb', line 110 def temps3 @temps3 ||= float_fields('Temp3*10').map { |val| val / 10.0 } end |
#temps3? ⇒ Boolean
114 115 116 |
# File 'lib/eagletree/log/session.rb', line 114 def temps3? nonzero?(temps3) end |
#throttles ⇒ Object
70 71 72 |
# File 'lib/eagletree/log/session.rb', line 70 def throttles @throttles ||= int_fields('Throttle') end |
#throttles? ⇒ Boolean
74 75 76 |
# File 'lib/eagletree/log/session.rb', line 74 def throttles? nonzero?(throttles) end |
#to_kml(file_options = {}, placemark_options = {}) ⇒ String
Converts the session into a KML document containing a placemark.
208 209 210 211 |
# File 'lib/eagletree/log/session.rb', line 208 def to_kml( = {}, = {}) raise RuntimeError, 'No coordinates available for KML generation' unless to_kml? to_kml_file(, ).render end |
#to_kml? ⇒ Boolean
Determines if KML methods can be called for this session.
197 198 199 |
# File 'lib/eagletree/log/session.rb', line 197 def to_kml? coords? end |
#to_kml_file(file_options = {}, placemark_options = {}) ⇒ KMLFile
Converts the session into a KMLFile containing a placemark.
222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 |
# File 'lib/eagletree/log/session.rb', line 222 def to_kml_file( = {}, = {}) raise RuntimeError, 'No coordinates available for KML generation' unless to_kml? = () kml = KMLFile.new kml.objects << KML::Document.new( :name => [:name], :description => [:description], :styles => [ KML::Style.new( :id => [:style_id], :line_style => KML::LineStyle.new(:color => '7F00FFFF', :width => 4), :poly_style => KML::PolyStyle.new(:color => '7F00FF00') ) ], :features => [ to_kml_placemark() ] ) kml end |
#to_kml_placemark(options = {}) ⇒ KML::Placemark
Converts the session into a KML::Placemark containing GPS coordinates.
251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 |
# File 'lib/eagletree/log/session.rb', line 251 def to_kml_placemark( = {}) raise RuntimeError, 'No coordinates available for KML generation' unless to_kml? = () KML::Placemark.new( :name => [:name], :style_url => [:style_url], :geometry => KML::LineString.new( :altitude_mode => [:altitude_mode], :extrude => [:extrude], :tessellate => [:tessellate], :coordinates => coords.map { |c| c.join(',') }.join(' ') ) ) end |