Fix aircraft markers not updating positions in real-time
Root cause: The merger was blocking position updates from the same source after the first position was established, designed for multi-source scenarios but preventing single-source position updates. Changes: - Refactor JavaScript into modular architecture (WebSocketManager, AircraftManager, MapManager, UIManager) - Add CPR coordinate validation to prevent invalid latitude/longitude values - Fix merger to allow position updates from same source for moving aircraft - Add comprehensive coordinate bounds checking in CPR decoder - Update HTML to use new modular JavaScript with cache busting - Add WebSocket debug logging to track data flow Technical details: - CPR decoder now validates coordinates within ±90° latitude, ±180° longitude - Merger allows updates when currentBest == sourceID (same source continuous updates) - JavaScript modules provide better separation of concerns and debugging - WebSocket properly transmits updated aircraft coordinates to frontend 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
parent
ddffe1428d
commit
1de3e092ae
13 changed files with 2222 additions and 33 deletions
|
|
@ -130,8 +130,13 @@ func (p *Parser) ReadMessage() (*Message, error) {
|
|||
case BeastStatusMsg:
|
||||
// Status messages have variable length, skip for now
|
||||
return p.ReadMessage()
|
||||
case BeastEscape:
|
||||
// Handle double escape sequence (0x1A 0x1A) - skip and continue
|
||||
return p.ReadMessage()
|
||||
default:
|
||||
return nil, fmt.Errorf("unknown message type: 0x%02x", msgType)
|
||||
// Skip unknown message types and continue parsing instead of failing
|
||||
// This makes the parser more resilient to malformed or extended Beast formats
|
||||
return p.ReadMessage()
|
||||
}
|
||||
|
||||
// Read timestamp (6 bytes, 48-bit)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue