Exemplo n.º 1
0
    def readStdAlt(self, alt, step=1, unit=True):
        '''
		returns a string reading the altitude properly, i.e. a QNH-aware reading in feet AMSL under TA, and a flight level above TA.
		altitude readings are rounded to closest "step hundred"; FL readings are rounded with given step
		(use step=None for no approximation even in feet)
		"ft" is appended to string if 'unit' parameter is set
		'''
        amsl = alt.ftAMSL(self.QNH())
        if amsl < self.transitionAltitude() + settings.altitude_tolerance:
            return '%d%s' % (
                (amsl if step == None else rounded(amsl, 100 * step)),
                (' ft' if unit else ''))
        else:
            fl = alt.FL()
            return 'FL%03d' % (fl if step == None else rounded(fl, step))
Exemplo n.º 2
0
 def __init__(self, mhz):
     if isinstance(mhz, str):
         if '.' in mhz:
             dec_part = mhz.rsplit('.', maxsplit=1)[-1]
             if len(dec_part) == 2 and dec_part[
                     -1] in '27':  # ._2 and ._7 endings are shortened 25kHz-step freq's
                 mhz += '5'
         self.mhz = rounded(float(mhz), CommFrequency.spacing)
         if abs(self.mhz) < 1e-6:  # freq not even 1 Hz
             raise ValueError('invalid near-zero comm frequency')
     else:
         self.mhz = mhz
 def xpdrData(self):
     res = {}
     if self.params.XPDR_mode != '0':
         res[Xpdr.CODE] = self.params.XPDR_code
         res[Xpdr.IDENT] = self.params.XPDR_idents
     if self.params.XPDR_mode not in '0A':
         res[Xpdr.ALT] = StdPressureAlt(
             rounded(self.params.altitude.ft1013(),
                     step=(100 if self.params.XPDR_mode == 'C' else 10)))
     if self.params.XPDR_mode not in '0AC':
         res[Xpdr.IAS] = self.params.ias
         res[Xpdr.GND] = self.xpdrGndBit()
         res[Xpdr.CALLSIGN] = self.identifier
         res[Xpdr.ACFT] = self.aircraft_type
     return res
Exemplo n.º 4
0
 def rounded(self, true_hdg, step=5):
     return Heading(
         rounded((self.trueAngle() if true_hdg else self.magneticAngle()),
                 step), true_hdg)
Exemplo n.º 5
0
 def rounded(self, step=10):
     return Speed(rounded(self.kt, step))
Exemplo n.º 6
0
 def __str__(self):
     return '%d kt' % rounded(self.kt)