def parse4(self, shortdata): fs = shortdata >> 24 & 0x07 #flight status: 0 is airborne normal, 1 is ground normal, 2 is airborne alert, 3 is ground alert, 4 is alert SPI, 5 is normal SPI dr = shortdata >> 19 & 0x1F #downlink request: 0 means no req, bit 0 is Comm-B msg rdy bit, bit 1 is TCAS info msg rdy, bit 2 is Comm-B bcast #1 msg rdy, bit2+bit0 is Comm-B bcast #2 msg rdy, #bit2+bit1 is TCAS info and Comm-B bcast #1 msg rdy, bit2+bit1+bit0 is TCAS info and Comm-B bcast #2 msg rdy, 8-15 N/A, 16-31 req to send N-15 segments um = shortdata >> 13 & 0x3F #transponder status readouts, no decoding information available altitude = decode_alt(shortdata & 0x1FFF, True) return [fs, dr, um, altitude]
def parse0(self, shortdata): vs = bool(shortdata >> 26 & 0x1) #ground sensor -- airborne when 0 cc = bool(shortdata >> 25 & 0x1) #crosslink capability, binary sl = shortdata >> 21 & 0x07 #operating sensitivity of onboard TCAS system. 0 means no TCAS sensitivity reported, 1-7 give TCAS sensitivity ri = shortdata >> 15 & 0x0F #speed coding: 0 = no onboard TCAS, 1 = NA, 2 = TCAS w/inhib res, 3 = TCAS w/vert only, 4 = TCAS w/vert+horiz, 5-7 = NA, 8 = no max A/S avail, #9 = A/S <= 75kt, 10 = A/S (75-150]kt, 11 = (150-300]kt, 12 = (300-600]kt, 13 = (600-1200]kt, 14 = >1200kt, 15 = NA altitude = decode_alt(shortdata & 0x1FFF, True) #bit 13 is set for type 0 return [vs, cc, sl, ri, altitude]
def parse4(self, shortdata, parity, ecc): # shortdata = long(shortdata, 16) fs = shortdata >> 24 & 0x07 #flight status: 0 is airborne normal, 1 is ground normal, 2 is airborne alert, 3 is ground alert, 4 is alert SPI, 5 is normal SPI dr = shortdata >> 19 & 0x1F #downlink request: 0 means no req, bit 0 is Comm-B msg rdy bit, bit 1 is TCAS info msg rdy, bit 2 is Comm-B bcast #1 msg rdy, bit2+bit0 is Comm-B bcast #2 msg rdy, #bit2+bit1 is TCAS info and Comm-B bcast #1 msg rdy, bit2+bit1+bit0 is TCAS info and Comm-B bcast #2 msg rdy, 8-15 N/A, 16-31 req to send N-15 segments um = shortdata >> 13 & 0x3F #transponder status readouts, no decoding information available altitude = decode_alt(shortdata & 0x1FFF, True) return [fs, dr, um, altitude]
def parseBDS05(self, data): icao24 = data["aa"] encoded_lon = data["lon"] encoded_lat = data["lat"] cpr_format = data["cpr"] altitude = decode_alt(data["alt"], False) [decoded_lat, decoded_lon, rnge, bearing] = self.cpr.decode(icao24, encoded_lat, encoded_lon, cpr_format, 0) return [altitude, decoded_lat, decoded_lon, rnge, bearing]
def parse0(self, shortdata, parity, ecc): # shortdata = long(shortdata, 16) #parity = long(parity) vs = bool(shortdata >> 26 & 0x1) #ground sensor -- airborne when 0 cc = bool(shortdata >> 25 & 0x1) #crosslink capability, binary sl = shortdata >> 21 & 0x07 #operating sensitivity of onboard TCAS system. 0 means no TCAS sensitivity reported, 1-7 give TCAS sensitivity ri = shortdata >> 15 & 0x0F #speed coding: 0 = no onboard TCAS, 1 = NA, 2 = TCAS w/inhib res, 3 = TCAS w/vert only, 4 = TCAS w/vert+horiz, 5-7 = NA, 8 = no max A/S avail, #9 = A/S <= 75kt, 10 = A/S (75-150]kt, 11 = (150-300]kt, 12 = (300-600]kt, 13 = (600-1200]kt, 14 = >1200kt, 15 = NA altitude = decode_alt(shortdata & 0x1FFF, True) #bit 13 is set for type 0 return [vs, cc, sl, ri, altitude]
def parseBDS05(self, shortdata, longdata): icao24 = shortdata & 0xFFFFFF encoded_lon = longdata & 0x1FFFF encoded_lat = (longdata >> 17) & 0x1FFFF cpr_format = (longdata >> 34) & 1 enc_alt = (longdata >> 36) & 0x0FFF altitude = decode_alt(enc_alt, False) [decoded_lat, decoded_lon, rnge, bearing] = self.cpr.decode(icao24, encoded_lat, encoded_lon, cpr_format, 0) return [altitude, decoded_lat, decoded_lon, rnge, bearing]
def parseBDS05(self, shortdata, longdata, parity, ecc): icao24 = shortdata & 0xFFFFFF encoded_lon = longdata & 0x1FFFF encoded_lat = (longdata >> 17) & 0x1FFFF cpr_format = (longdata >> 34) & 1 enc_alt = (longdata >> 36) & 0x0FFF altitude = decode_alt(enc_alt, False) [decoded_lat, decoded_lon, rnge, bearing] = cpr_decode(self.my_location, icao24, encoded_lat, encoded_lon, cpr_format, self._evenlist, self._oddlist, self._lkplist, 0, longdata) return [altitude, decoded_lat, decoded_lon, rnge, bearing]
def parseAirbornePosition(icao24, msg, receiver_pos, decoder, ts): surveillance_status = (msg >> 49) & 0x3 nic_suppl = bool((msg >> 48) & 1) enc_alt = (msg >> 36) & 0x0FFF time = bool((msg >> 35) & 1) cpr_format = (msg >> 34) & 1 encoded_lat = (msg >> 17) & 0x1FFFF encoded_lon = msg & 0x1FFFF if encoded_lat == 0 or encoded_lon == 0: raise cpr.CPRNoPositionError altitude = decode_alt(enc_alt, False) decoder.set_location(receiver_pos) [decoded_lat, decoded_lon] = decoder.decode(icao24, encoded_lat, encoded_lon, cpr_format, ts, False) return [surveillance_status, nic_suppl, altitude, time, cpr_format, decoded_lat, decoded_lon]
def parseMB_TCAS_threatloc(data): #bds1==3, bds2==0, TTI==2 (resolutions, complements) = parseMB_TCAS_resolutions(data) threat_alt = decode_alt(data["tida"], True) return (resolutions, complements, data["rat"], data["mte"], threat_alt, data["tidr"], data["tidb"])
def parseBDS05(data, cprdec): altitude = decode_alt(data["alt"], False) [decoded_lat, decoded_lon, rnge, bearing] = cprdec.decode(data["aa"], data["lat"], data["lon"], data["cpr"], 0) return [altitude, decoded_lat, decoded_lon, rnge, bearing]
def parse4(self, data): altitude = decode_alt(data["ac"], True) return [data["fs"], data["dr"], data["um"], altitude]
def parse0(self, data): altitude = decode_alt(data["ac"], True) return [data["vs"], data["cc"], data["sl"], data["ri"], altitude]