mirror of
https://github.com/smittix/intercept.git
synced 2026-07-24 00:48:11 -07:00
Improve SBS parser with better error handling and debug output
- Add try/except for value conversion - Add position debug output - Fix MSG,5 to extract callsign and altitude 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
+34
-13
@@ -12103,29 +12103,50 @@ def parse_sbs_stream(service_addr):
|
|||||||
if callsign:
|
if callsign:
|
||||||
aircraft['callsign'] = callsign
|
aircraft['callsign'] = callsign
|
||||||
|
|
||||||
# MSG,3: position (alt, speed, heading, lat, lon)
|
# MSG,3: position (alt, lat, lon)
|
||||||
elif msg_type == '3' and len(parts) > 15:
|
elif msg_type == '3' and len(parts) > 15:
|
||||||
if parts[11]:
|
if parts[11]:
|
||||||
aircraft['altitude'] = int(float(parts[11]))
|
try:
|
||||||
if parts[12]:
|
aircraft['altitude'] = int(float(parts[11]))
|
||||||
aircraft['speed'] = int(float(parts[12]))
|
except:
|
||||||
if parts[13]:
|
pass
|
||||||
aircraft['heading'] = int(float(parts[13]))
|
|
||||||
if parts[14] and parts[15]:
|
if parts[14] and parts[15]:
|
||||||
aircraft['lat'] = float(parts[14])
|
try:
|
||||||
aircraft['lon'] = float(parts[15])
|
lat = float(parts[14])
|
||||||
|
lon = float(parts[15])
|
||||||
|
aircraft['lat'] = lat
|
||||||
|
aircraft['lon'] = lon
|
||||||
|
print(f"[ADS-B] Position: {icao} at {lat:.4f}, {lon:.4f}")
|
||||||
|
except:
|
||||||
|
pass
|
||||||
|
|
||||||
# MSG,4: velocity (speed, heading)
|
# MSG,4: velocity (speed, heading)
|
||||||
elif msg_type == '4' and len(parts) > 13:
|
elif msg_type == '4' and len(parts) > 13:
|
||||||
if parts[12]:
|
if parts[12]:
|
||||||
aircraft['speed'] = int(float(parts[12]))
|
try:
|
||||||
|
aircraft['speed'] = int(float(parts[12]))
|
||||||
|
except:
|
||||||
|
pass
|
||||||
if parts[13]:
|
if parts[13]:
|
||||||
aircraft['heading'] = int(float(parts[13]))
|
try:
|
||||||
|
aircraft['heading'] = int(float(parts[13]))
|
||||||
|
except:
|
||||||
|
pass
|
||||||
|
|
||||||
# MSG,5/6: altitude and squawk
|
# MSG,5: callsign and altitude
|
||||||
elif msg_type in ('5', '6') and len(parts) > 17:
|
elif msg_type == '5' and len(parts) > 11:
|
||||||
|
if parts[10]:
|
||||||
|
callsign = parts[10].strip()
|
||||||
|
if callsign:
|
||||||
|
aircraft['callsign'] = callsign
|
||||||
if parts[11]:
|
if parts[11]:
|
||||||
aircraft['altitude'] = int(float(parts[11]))
|
try:
|
||||||
|
aircraft['altitude'] = int(float(parts[11]))
|
||||||
|
except:
|
||||||
|
pass
|
||||||
|
|
||||||
|
# MSG,6: squawk
|
||||||
|
elif msg_type == '6' and len(parts) > 17:
|
||||||
if parts[17]:
|
if parts[17]:
|
||||||
aircraft['squawk'] = parts[17]
|
aircraft['squawk'] = parts[17]
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user