code: def location(self, relative_alt=False):
          '''return current location'''
          self.wait_gps_fix()
          # wait for another VFR_HUD, to ensure we have correct altitude
          self.recv_match(type='VFR_HUD', blocking=True)
          self.recv_match(type='GLOBAL_POSITION_INT', blocking=True)
          if relative_alt:
              alt = self.messages['GLOBAL_POSITION_INT'].relative_alt*0.001
          else:
              alt = self.messages['VFR_HUD'].alt
          return location(self.messages['GPS_RAW_INT'].lat*1.0e-7,
                          self.messages['GPS_RAW_INT'].lon*1.0e-7,
                          alt,
                          self.messages['VFR_HUD'].headingf location(self, relative_alt=False):
          '''return current location'''
          self.wait_gps_fix()
          # wait for another VFR_HUD, to ensure we have correct altitude
          self.recv_match(type='VFR_HUD', blocking=True)
          self.recv_match(type='GLOBAL_POSITION_INT', blocking=True)
          if relative_alt:
              alt = self.messages['GLOBAL_POSITION_INT'].relative_alt*0.001
          else:
              alt = self.messages['VFR_HUD'].alt
          return location(self.messages['GPS_RAW_INT'].lat*1.0e-7,
                          self.messages['GPS_RAW_INT'].lon*1.0e-7,
                          alt,
                          self.messages['VFR_HUD'].heading)
docs: return current location