You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
3.1 KiB
3.1 KiB
Flymaster GPS Communication Protocol
Based on the code analysis, the Flymaster GPS device uses a combination of NMEA-style commands and a binary protocol for data transfer. Here's a detailed explanation of the protocol:
1. Basic Communication Parameters
- Baud Rate: 57600 bps (defined as
BAUDRATE
) - Flow Control: Uses XON (0x11) and XOFF (0x13) characters for flow control
- Line Termination: Commands end with CR+LF (
\r\n
)
2. NMEA Command Structure
The Flymaster uses a standard NMEA-style command format for basic commands:
$<command>,<param1>,<param2>,...*<checksum>\r\n
Where:
- Commands start with
$
- Fields are separated by commas
- The command ends with
*
followed by a two-digit hexadecimal checksum - The checksum is calculated by XORing all characters between
$
and*
(exclusive) - The message ends with CR+LF
3. Command Prefixes
PFM
prefix is used for Flymaster-specific commands- Examples of commands:
PFMSNP
: Used to get device informationPFMDNL
: Used to download data (with parameters like "LST" for track list)PFMLST
: Used to receive track list data
4. Binary Protocol for Track Download
For downloading track data, a binary packet-based protocol is used:
-
Packet Structure:
- 2-byte packet ID
- 1-byte length
- Variable-length data (as specified by the length byte)
- 1-byte checksum (XOR of the length and all data bytes)
-
Packet Types (identified by packet ID):
0xa0a0
: Flight information0xa1a1
: Key position data (base position)0xa2a2
: Delta position data (incremental changes from base position)0xa3a3
: End of transmission marker
-
Acknowledgment:
0xb1
: Positive acknowledgment (continue sending)0xb3
: Negative acknowledgment (error or cancel)
5. Data Structures
The protocol uses specific data structures:
FM_Flight_Info
: Contains flight informationFM_Key_Position
: Contains base position data (latitude, longitude, altitude, etc.)FM_Point_Delta
: Contains delta values for position updates
6. Communication Flow
Initialization:
- Set baud rate to 57600
- Send
PFMSNP
to get device information - Calculate device ID from the response
Track List Download:
- Send
PFMDNL,LST
command - Receive track list data with
PFMLST
responses - Parse track information (date, start time, duration)
Track Data Download:
- Send
PFMDNL,<timestamp>
with the timestamp of the desired track - Read binary packets:
- Process flight info packets (0xa0a0)
- Process key position packets (0xa1a1)
- Process delta position packets (0xa2a2)
- Send acknowledgment (0xb1) after each packet
- Continue until end marker (0xa3a3) is received
7. Error Handling
- Checksum verification for both NMEA commands and binary packets
- Timeout handling (1 second timeout during download)
- Size verification for data structures
- Error reporting through exceptions
This protocol efficiently combines text-based commands for control operations with a compact binary format for transferring large amounts of track data.