30 KiB
TRANSLAND (SATLOC) BINARY AIR LOG FILE FORMATS
Version: 3.76 • Document title in PDF: AIRSTAR DATABASE DESIGN Author: Gary J. Bivin Pages: 29 Date: March 15, 2023
Proprietary Notice — The original PDF marks the content as Company Proprietary and not to be shared outside Transland without permission. This Markdown is a faithful conversion meant for internal/reference use.
Company Address: 1206 Hatton Rd Suite A, Wichita Falls, TX. 76302
Revision History
| Version | Date | Comments |
|---|---|---|
| 3.34 | 4 Apr 2001 | Added Packet Type 2 (Position Compressed) – OUTBACK applications |
| 3.35 | 4 May 2001 | Added Marker Type table, new type for RETURN mark. |
| 3.40 | 1 Apr 2004 | Added Total Boundary Area record. |
| 3.41 | 17 May 2004 | Added Flow Rates record (#32). |
| 3.42 | 7 June 2004 | Added Prescription Map Name record (#141). |
| 3.43 | 24 Aug 2004 | Expansion of time stamp format (extended year field); Changes to System Calibration record (#102). |
| 3.44 | 21 Jan 2005 | Added Spray Edges record (#35). |
| 3.45 | 18 Mar 2005 | Added Job Info record (#151); Changes to System Calibration record (#102). |
| 3.46 | 19 Nov 2007 | Pivot structure 80, marker fixed at 17 bytes for Field Notes applications. |
| 3.47 | 11 Dec 2007 | Editable mark, packet 60, marker 31. |
| 3.48 | 5 Mar 2008 | 131, 132 mark type in record 60; Start/End Mark; Change of RHS to Outback; Change of SATLOC to Hemisphere GPS. |
| 3.49 | 14 Sept 2008 | Added Job Notes Extended; Added Record 61: Marker Unicode Extension; Added Records 206–207: Job Info Unicode Extensions. |
| 3.50 | 29 Aug 2010 | Merge Air + Ground AG forks; update revision number; rearranged record definitions; add GPS Status (extended); clarify Timestamp and Spray Edges. |
| 3.51 | 28 Sept 2010 | Add Job Spatial Extent record (#208). |
| 3.52 | 6 Oct 2010 | Rename Spatial Extent → Job Filter (#208). |
| 3.53 | 19 Oct 2010 | Define Section Geometry record (#36); define Target & Actual Application rates (#34, #38). |
| 3.54 | 27 Jan 2011 | Fix GPS Status Extended (#11). |
| 3.55 | 18 Mar 2011 | Add Section Bitmask record. |
| 3.56 | 18 May 2011 | Revise Section Geometry (#38). |
| 3.57 | 22 Aug 2011 | Added Record #43: (Air) AgDisp drift modeling status. |
| 3.58 | 28 Jan 2013 | Added Record #45: (Air) TACH data. |
| 3.60 | 11 June 2013 | New simplified document for Air; Added Long 01 Record. |
| 3.61 | 01 Aug 2014 | Reduced doc referring to Record #43. |
| 3.62 | 25 Nov 2015 | New simplified document; Added: IF2 DRY Recorded #38; SBC CPU Temp #56. |
| 3.64 | 21 Jun 2017 | Updated “Swathing Setup“ record #120 (Pattern index). |
| 3.65 | 05 Nov 2018 | Added IF2 Liquid BOOM Pressures Pri/Dual (#47). |
| 3.66 | 07 Mar 2019 | Added Micronair RPM project (#52 Micro‑RPM). |
| 3.67 | 26 Jul 2019 | Added 1‑byte bit fields at end Enhanced 01 POS record (pump, polygon, constant/VR, auto boom). |
| 3.68 | 21 Feb 2020; mod 19 Jun 2020 | New LOG Record 57 Meterate; later changed Tach RPM per E‑Speed to uint16_t. |
| 3.69 | 03 May 2020 | New LOG Record 142 BOOM sections selected in meters; MAN/AUTO, 1–5 sections. |
| 3.70 | 21 May 2020 | Added 3 BYTES to end of record 10 (GPS Status) for AIMMS IMU data. |
| 3.71 | 20 Oct 2020 | Added 2 bytes to end of Enhanced 01 POS for turbine STDev (Primary/Dual). |
| 3.72 | 05 Mar 2021 | Added 3 floats (fVNorth, fVEast, fVUp) to Enhanced 01 POS. |
| 3.73 | 26 Apr 2022 | Modified record 142 BOOM Sections for new controller. |
| 3.74 | 14 Oct 2022 | Modified record 1 Position Enhanced Record. |
| 3.75 | 18 Oct 2022 | Modified record 46 Controller TYPE by Name. |
| 3.76 | 15 Mar 2023 | Added TLEG record 39. |
1. Overall Log File Format
A log file begins with the ASCII characters "AS", followed by the ASCII IntelliTrac (IT) Version Number, terminated by a zero (0) byte. The binary data records then follow.
- Position records are logged periodically, as specified by Logging Interval and Log Minimum Speed in IntelliTrac setup.
- The System Setup record(s) are written at the beginning of the log file; thereafter only when changed.
- Other log records are written out only when the information they contain is first known, or has been changed.
1.1 Replay Procedures
The file is scanned for the next Record Start Flag; the record is validated with the Checksum and correspondence between record type and length.
For reverse compatibility, unrecognized records should be skipped with no further action.
2. General Record Format
| Field Type | Bytes | Format | Units |
|---|---|---|---|
| Record Start Flag | 1 | uint8_t | 0xA5 |
| Record Length | 1 | uint8_t | # of bytes |
| Record Type | 1 | uint8_t | |
| Record Checksum | 1 | uint8_t | |
| Data | variable |
The Record Checksum is the XOR of all bytes from the Record Start Flag to the end of the data inclusive.
Total length of a record is the length of the data + 4 bytes, as shown above. Note that the maximum length of a record, including the 4 header bytes, is 255.
Data is logged in metric units whenever applicable.
2.1 Time Stamp
A Time Stamp field consists of 5 bytes:
| Component | Bits | Byte Position | Description |
|---|---|---|---|
| Second | 6 | 0 (bits 0-5) | Seconds (0-59) |
| Minute | 6 | 0-1 (bits 6-11) | Minutes (0-59) |
| Hour | 5 | 1 (bits 12-16) | Hours (0-23) |
| Day | 5 | 2 (bits 17-21) | Day of month (1-31) |
| Month | 4 | 2-3 (bits 22-25) | Month (1-12) |
| Year | 7 | 3 (bits 26-32) | Years since 2000 |
Note: Time is logged in local time (not UTC). Consequently, if UTC or similar timestamps are required, then such conversions are left to the application
3. Record Types
3.1 Position Short Record
| Field Type | Bytes | Format | Units |
|---|---|---|---|
| Record Start Flag | 1 | uint8_t |
0xA5 |
| Record Length | 1 | uint8_t |
43 (0x2B) |
| Record Type | 1 | uint8_t |
1 |
| Record Checksum | 1 | uint8_t |
— |
| Time of Position | 5 | Time Stamp | — |
| Latitude | 8 | double |
degrees |
| Longitude | 8 | double |
degrees |
| Altitude | 4 | float |
meters |
| Speed | 4 | float |
m/sec |
| Track | 4 | float |
degrees |
| X‑Track Deviation | 4 | float |
meters |
| Differential Age | 1 | uint8_t |
seconds |
| Flags (numeric) | 1 | uint8_t |
see Flags below |
Total Length: 43
Flags (final byte, by numeric value)
| Value | Meaning |
|---|---|
| 0 | Spray OFF (boom pressure sensor OPEN) |
| 1 | Not used |
| 2 | Spray ON (interpolated position) |
3.2 Position Enhanced Record (Position/Flow Rate/Boom/Valve Position)
| Field Type | Bytes | Format | Units |
|---|---|---|---|
| Record Start Flag | 1 | uint8_t |
0xA5 |
| Record Length | 1 | uint8_t |
Current 78 (0x4E); earlier 66 (0x42) |
| Record Type | 1 | uint8_t |
1 |
| Record Checksum | 1 | uint8_t |
— |
| Time of Position | 5 | Time Stamp | — |
| Latitude | 8 | double |
degrees |
| Longitude | 8 | double |
degrees |
| Altitude | 4 | float |
meters |
| Speed | 4 | float |
m/sec |
| Track | 4 | float |
degrees |
| X‑Track Deviation | 4 | float |
meters |
| Differential Age | 1 | uint8_t |
seconds |
| Flags (numeric) | 1 | uint8_t |
see record‑specific flags |
| Record Type (numeric) | 1 | uint8_t |
1 = Enhanced; 2 = Enhanced/LPC boom on |
| Boom Control Status | 1 | uint8_t |
bit0 = boom On/Off |
| Target Flow Rate | 4 | float |
L/ha |
| Target Flow Rate | 4 | float |
L/min |
| Flow Rate | 4 | float |
L/ha |
| Flow Rate | 4 | float |
L/min |
| Valve Position | 2 | int |
Shaft Position |
| Status bit fields | 1 | uint8_t |
Byte 64; see table below |
| Primary Flow Turbine STDev | 1 | uint8_t |
0–255% |
| Dual Flow Turbine STDev | 1 | uint8_t |
0–255% |
| Raw GPS velocity fVNorth | 4 | float |
Raw GPS fVNorth |
| Raw GPS velocity fVEast | 4 | float |
Raw GPS fVEast |
| Raw GPS velocity fVUp | 4 | float |
Raw GPS fVUp |
Total Length: 78
Byte 64 — Status Bit Fields
| Bits | Flags |
|---|---|
| Byte 64 | 0: Aircraft pump free to run (aircraft is applying product) |
| Byte 64 | 1: Inside a JOB or PMap polygon |
| Byte 64 | 2: Constant Rate Poly or VR Rate set |
| Byte 64 | 3: AUTO‑BOOM set to ON |
Notes
- To identify Short vs Enhanced Position record, read byte Record Type.
- When Position Enhanced is logged, the following will not be logged: Flow Target Rate (Type 32) and Flow Rate (Type 30).
3.3 GPS
| Field Type | Bytes | Format | Units |
|---|---|---|---|
| Record Start Flag | 1 | uint8_t |
0xA5 |
| Record Length | 1 | uint8_t |
# of bytes |
| Record Type | 1 | uint8_t |
10 |
| Record Checksum | 1 | uint8_t |
— |
| GDOP | 4 | float |
— |
| Satellites | 1 | uint8_t |
# tracked << 4 + # used |
| Received DGPS Stn ID | 2 | int |
— |
| AIMMS NAV Source | 1 | uint8_t |
0 = IMU, 1 = GPS |
| AIMMS SV in GPS Solution | 1 | uint8_t |
— |
| AIMMS GPS POS‑Type | 1 | uint8_t |
16 = SPS, 18 = WAAS, 19 = Extrapolated, 0 = None |
Total Length: 14
3.4 GPS Status Extended
Not used at this time (May/2020).
| Field Type | Bytes | Format | Units |
|---|---|---|---|
| Record Start Flag | 1 | uint8_t |
0xA5 |
| Record Length | 1 | uint8_t |
# of bytes |
| Record Type | 1 | uint8_t |
11 |
| Record Checksum | 1 | uint8_t |
— |
| BIN1 NavMode | 2 | uint16_t |
— |
| Age Of Differential | 2 | uint16_t |
— |
| Reserved | 4 | uint32_t |
— |
| Reserved | 4 | uint32_t |
— |
| GDOP | 4 | float |
— |
| HDOP | 4 | float |
— |
| Satellites | 1 | uint8_t |
# tracked << 4 + # used |
| Received DGPS Stn ID | 2 | uint16_t |
— |
Total Length: 27
3.5 Swath Number
| Field Type | Bytes | Format | Units |
|---|---|---|---|
| Record Start Flag | 1 | uint8_t |
0xA5 |
| Record Length | 1 | uint8_t |
# of bytes |
| Record Type | 1 | uint8_t |
20 |
| Record Checksum | 1 | uint8_t |
— |
| Swath Number | 2 | int |
— |
Total Length: 6
Note: A‑B swath number = 1; swaths are 2,3,4… right; −2,−3,−4… left.
3.6 Flow Monitor/Control
| Field Type | Bytes | Format | Units |
|---|---|---|---|
| Record Start Flag | 1 | uint8_t |
0xA5 |
| Record Length | 1 | uint8_t |
# of bytes |
| Record Type | 1 | uint8_t |
30 |
| Record Checksum | 1 | uint8_t |
— |
| Flow Rate | 4 | float |
liters/minute |
| Valve Position | 2 | int |
Position |
Total Length: 10
Output conditions: only if flow monitoring is active, and only on change.
Compatibility: Valve Position may be absent in legacy logs — support both 8‑byte and 10‑byte variants (default to zero if missing).
3.7 Dual Flow Monitor/Control
| Field Type | Bytes | Format | Units |
|---|---|---|---|
| Record Start Flag | 1 | uint8_t |
0xA5 |
| Record Length | 1 | uint8_t |
# of bytes |
| Record Type | 1 | uint8_t |
31 |
| Record Checksum | 1 | uint8_t |
— |
| Primary Flow Rate | 4 | float |
liters/minute |
| Secondary Flow Rate | 4 | float |
liters/minute |
| Primary Valve Position | 2 | int |
Position |
| Secondary Valve Position | 2 | int |
Position |
Total Length: 16
Note: Deprecated — do not use in new software.
3.8 Target Application Rates
| Field Type | Bytes | Format | Units |
|---|---|---|---|
| Record Start Flag | 1 | uint8_t |
0xA5 |
| Record Length | 1 | uint8_t |
# of bytes |
| Record Type | 1 | uint8_t |
32 (0x20) |
| Record Checksum | 1 | uint8_t |
— |
| Target Application Rate | 4 | float |
Target Rate LPM |
| Flags | 1 | uint8_t |
BOOM 0=Off, 1=On (Flow) |
Total Length: 9
3.9 Dual Flow Target Rates (Version 3.46)
| Field Type | Bytes | Format | Units |
|---|---|---|---|
| Record Start Flag | 1 | uint8_t |
0xA5 |
| Record Length | 1 | uint8_t |
# of bytes |
| Record Type | 1 | uint8_t |
33 |
| Record Checksum | 1 | uint8_t |
— |
| Chan 1: Primary Target Flow Rate | 4 | float |
Primary liters/minute |
| Chan 1: Primary Control Status | 1 | uint8_t |
bit0 = Primary boom on/off |
| Chan 1: Secondary Target Flow Rate | 4 | float |
Secondary liters/minute |
| Chan 1: Secondary Control Status | 1 | uint8_t |
bit0 = Secondary boom on/off |
| …repeat for each configured channel… | — | — | — |
Total Length: 4 + 10 × number_of_channels
3.10 Applied Rates
| Field Type | Bytes | Format | Units |
|---|---|---|---|
| Record Start Flag | 1 | uint8_t |
0xA5 |
| Record Length | 1 | uint8_t |
# of bytes |
| Record Type | 1 | uint8_t |
36 |
| Record Checksum | 1 | uint8_t |
— |
| Number of channels | 1 | uint16_t |
0..41 |
| Channel 1: Actual Application Units | 1 | uint16_t |
see table (units id) |
| Channel 1: Actual Application Rate | 4 | float |
— |
| …repeat per channel… | — | — | — |
Total Length: 6 + 6 × number_of_channels
3.11 Fire/Dry Gate Status (Version 3.47)
| Field Type | Bytes | Format | Units |
|---|---|---|---|
| Record Start Flag | 1 | uint8_t |
0xA5 |
| Record Length | 1 | uint8_t |
# of bytes |
| Record Type | 1 | uint8_t |
37 |
| Record Checksum | 1 | uint8_t |
— |
| Application MODE | 1 | uint8_t |
Mode 1–7 |
| Units | 1 | char |
E (English) \ |
| Applied Resolution | 1 | uint8_t |
0 = 1/16”, 1 = 1 mm, 2 = 1/32” |
| Active Levels | 1 | uint8_t |
1–7 levels |
| Logged Target Spread | 4 | float |
(Not used) Kg/min |
| Applied Spread Rate | 4 | float |
Kg/Ha |
| Applied Spread per min | 4 | float |
Kg/min (Not used) |
| Applied Gate Level* | 2 | int |
resolution units |
| Encoder Position | 2 | int |
1–2048 |
| Target Encoder Position | 2 | int |
1–2048 |
| GPS Trim | 2 | int |
steps ± 1 to n |
| Manual Trim | 2 | int |
steps ± 1 to n |
Total Length: 30
* Gate Level = numeric level × Applied Resolution (read resolution first). Example: resolution 1/16", value 12 → 12/16" = ¾".
3.12 IF2 Dry Gate (Version 3.63)
Part A
| Field Type | Bytes | Format | Units |
|---|---|---|---|
| Record Start Flag | 1 | uint8_t |
0xA5 |
| Record Length | 1 | uint8_t |
# of bytes |
| Record Type | 1 | uint8_t |
38 (0x26) "LOGID_IF2DRY" |
| Record Checksum | 1 | uint8_t |
— |
| Application MODE | 1 | uint8_t |
Mode 2 |
| TASK Mode | 1 | uint8_t |
0..3 (Local FDG/No PMap = 3) |
| Applied Resolution | 1 | uint8_t |
0=1/32", 1=1/16" |
| Machine State | 1 | uint8_t |
0..14 |
| Switch State | 1 | uint8_t |
bit field: bit 0 = ARM On/Off, bit 1 = FUSALAGE On/Off, bit 2 = TRIGGER On/Off, bit 3 = TRIM On/Off |
| Gate Status | 1 | uint8_t |
bit field: bit 0: 0 = Gate Closed, 1 = Gate Open. Gate at index 0 level or beyond; bits 1 and 2: 0 = Dry Gate Fully Closed, completely latched, 1 = Dry Gate Open (This is from Soft Position and beyond), 2 = Dry Gate at Soft Level (Soft closed position (Level) means Gate is 1/16 OPEN or at selected user level) |
| Gate SOFT State | 1 | uint8_t |
0=Go index 0, 1=User encoder pos |
| Target Spread Rate | 4 | float |
Kg/Ha |
| Target Spread per min | 4 | float |
(Not used) Kg/min |
| Applied Spread Rate | 4 | float |
Kg/Ha |
| Applied Spread per min | 4 | float |
(Not used) Kg/min |
| GPS TRIM | 2 | int |
± GPS Trimmed Speed Up/Down |
| Manual TRIM | 2 | int |
± Manually Trimmed Up/Down |
Part B
| Field Type | Bytes | Format | Units |
|---|---|---|---|
| Misc States | 2 | uint16_t |
bit field: bit 0: 0 = "Encoder Stationary", 1 = "Encoder Moved"; bit 1: 0 = "Encoder Error", 1 = "Encoder OK"; bit 2: 0 = Hydro Pump State OFF, 1 = Hydro Pump State ON; bit 3: 0 = Hydro OPEN Solenoid OFF, 1 = Hydro OPEN Solenoid ON; bit 4: 0 = Hydro CLOSE Solenoid OFF, 1 = Hydro CLOSE Solenoid ON |
| Gate Level Steps | 2 | uint16_t |
0..272 in 1/32" |
| Encoder Position | 2 | uint16_t |
absolute 0..10,000 |
| Cumulative Uptime CPU | 2 | uint16_t |
hours |
| SOFT Level Target | 2 | uint16_t |
12..2000 |
| PGT P Gain | 2 | uint16_t |
0..65535 |
| PGT G Gain | 2 | uint16_t |
0..8000 |
| PGT Tolerance | 2 | uint16_t |
0..65535 |
Total Length: 47
3.13 TLEG Dry Gate (Version 3.76)
Part A
| Field Type | Bytes | Format | Units |
|---|---|---|---|
| Record Start Flag | 1 | uint8_t |
0xA5 |
| Record Length | 1 | uint8_t |
# of bytes |
| Record Type | 1 | uint8_t |
39 (0x27) "LOGID_TLEGDRY" |
| Record Checksum | 1 | uint8_t |
— |
| Application OP Mode | 1 | uint8_t |
OFF = 0x00, Open GATE = 0x01, Close GATE = 0x02, Open GATE With Torque Override = 0x03, Close GATE With Torque Override = 0x04, Manual Assist Mode = 0x05, Hold Position = 0x06, Calibrations = 0x07, Override Recovery = 0x08 |
| TASK Mode | 1 | uint8_t |
0=Single/Profiles, 1=Levels/FDG |
| Applied Resolution | 1 | uint8_t |
0=1/32", 1=1/16" |
| Machine State | 1 | uint8_t |
0 to 15 enumerated: TLEG_STATE_INIT "INIT", TLEG_STATE_MESSAGE_WAITING "MESSAGE_WAIT", TLEG_STATE_READY "READY", TLEG_FREE_MOVEMENT "FREE", TLEG_ACTIVE_MOVEMENT "ACTIVE", TLEG_DUMMY_1 "Dummy_1", TLEG_DUMMY_2 "Dummy_2", TLEG_DUMMY_3 "Dummy_3", TLEG_DUMMY_4 "Dummy_4", TLEG_DUMMY_5 "Dummy_5", TLEG_STATE_NOT_ARMED "NOT ARMED", TLEG_STATE_SECURITY_OVERRIDE "NOW FREE", TLEG_STATE_BAD_CAL "BAD CAL", TLEG_STATE_JAM_DETECTED "JAM_DETECTED", TLEG_STATE_UNKNOWN "STATE UNKNOWN" |
| Switch State | 1 | uint8_t |
bit field: bit 0 = ARM On/Off, bit 1 = TRIGGER On/Off, bit 2 = FUSELAGE On/Off, bit 3 = MOTOR On/Off, bit 4 = Spray ON On/Off, bit 5 = GATE Moving Yes/No, bit 6 = Encoder Status OK/Error |
Part B
| Field Type | Bytes | Format | Units |
|---|---|---|---|
| Gate State | 1 | uint8_t |
bit field: bit 0 Gate Closed State: 0 = Latched, 1 = Soft; bit 1 Gate Open: 0 = Closed, 1 = Gate at 1/16" (Soft) or beyond; bit 2 Not used; bit 3 Not used; bit 4 GATE JAM: 0 = No JAM, 1 = JAMMED |
| USER SELECTED Gate Closed State | 1 | uint8_t |
0=Latched, 1=User SOFT |
| TLEG Internal Temperature | 1 | uint8_t |
°C (system closes at ~105 °C) |
| Target Spread Rate | 4 | float |
Kg/Ha |
| Target Spread per min | 4 | float |
(Not used) Kg/min |
| Applied Spread Rate | 4 | float |
Kg/Ha |
| Applied Spread per min | 4 | float |
(Not used) Kg/min |
| GPS TRIM | 2 | short int |
± GPS Trimmed Speed Up/Down |
| Manual TRIM | 2 | short int |
± Manually Trimmed Up/Down |
| PRE Gate Level Steps | 2 | uint16_t |
0..158 in 1/32" (max 4" 15/16") |
| Gate Level Steps | 2 | uint16_t |
0..158 in 1/32" (max 4" 15/16") |
| Encoder Position | 2 | uint16_t |
Internal TLEG Encoder position 0 to 360 deg×10 (0.0°..360.0°*10) |
| Cumulative Uptime CPU | 2 | uint16_t |
Total hours uptime |
| LATCHED Target Degrees | 2 | uint16_t |
0 to 360 deg×10 |
| SOFT Target Degrees | 2 | uint16_t |
0 to 360 deg×10 |
Total Length: 44
3.14 Laser Altimeter
| Field Type | Bytes | Format | Units |
|---|---|---|---|
| Record Start Flag | 1 | uint8_t |
0xA5 |
| Record Length | 1 | uint8_t |
# of bytes |
| Record Type | 1 | uint8_t |
42 |
| Record Checksum | 1 | uint8_t |
— |
| Height AGL | 4 | float |
Meters |
Total Length: 8
Output condition: only if configured, and only when Δheight > 0.5 m.
3.15 AgDisp Data (AGD)
| Field Type | Bytes | Format | Units |
|---|---|---|---|
| Record Start Flag | 1 | uint8_t |
0xA5 |
| Record Length | 1 | uint8_t |
# of bytes |
| Record Type | 1 | uint8_t |
43 (0x2B) |
| Record Checksum | 1 | uint8_t |
— |
| Wind Offset Direction | 4 | float |
degrees |
| Applied OFFSET | 4 | float |
Meters |
Total Length: 12
3.16 TACH Times
| Field Type | Bytes | Format | Units |
|---|---|---|---|
| Record Start Flag | 1 | byte |
0xA5 |
| Record Length | 1 | byte |
# of bytes |
| Record Type | 1 | byte |
45 (0x2D) |
| Record Checksum | 1 | byte |
— |
| Total TACH Current Time | 4 | uint32_t |
Seconds |
| Total TACH Total Time | 4 | uint32_t |
Seconds |
Total Length: 12 (0x0C)
3.17 Controller TYPE by Name
| Field Type | Bytes | Format | Units |
|---|---|---|---|
| Record Start Flag | 1 | uint8_t |
0xA5 |
| Record Length | 1 | uint8_t |
# of bytes |
| Record Type | 1 | uint8_t |
46 (0x2E) |
| Record Checksum | 1 | uint8_t |
— |
| Controller TYPE | 21 | ASCIIZ |
Controller NAME |
Total Length: 25
3.18 IF2 Liquid BOOM Pressure
| Field Type | Bytes | Format | Units |
|---|---|---|---|
| Record Start Flag | 1 | uint8_t |
0xA5 |
| Record Length | 1 | uint8_t |
# of bytes |
| Record Type | 1 | uint8_t |
47 (0x2F) |
| Record Checksum | 1 | uint8_t |
— |
| IF2 Liq/Pri Boom Pressure | 4 | float |
Lbs Pressure |
| IF2 Liq/Dual Boom Pressure | 4 | float |
Lbs Pressure |
Total Length: 12
3.19 Wind
| Field Type | Bytes | Format | Units |
|---|---|---|---|
| Record Start Flag | 1 | uint8_t |
0xA5 |
| Record Length | 1 | uint8_t |
# of bytes |
| Record Type | 1 | uint8_t |
50 |
| Record Checksum | 1 | uint8_t |
— |
| Wind Direction | 2 | int |
degrees |
| Wind Velocity | 4 | float |
m/s |
Total Length: 10
Output condition: only if/when wind is calculated.
3.20 Micro‑RPM (Version 3.66)
| Field Type | Bytes | Format | Units |
|---|---|---|---|
| Record Start Flag | 1 | uint8_t |
0xA5 |
| Record Length | 1 | uint8_t |
25 (0x19) |
| Record Type | 1 | uint8_t |
52 (0x34) |
| Record Checksum | 1 | uint8_t |
— |
| OP Mode | 1 | uint8_t |
0 or 1 (On/Off) |
| Micro‑Atomiser Left 1..5 | 2×5 | int |
RPM |
| Micro‑Atomiser Right 1..5 | 2×5 | int |
RPM |
Total Length: 25
3.21 SBC (CPU Temps) (Version 3.63)
| Field Type | Bytes | Format | Units |
|---|---|---|---|
| Record Start Flag | 1 | uint8_t |
0xA5 |
| Record Length | 1 | uint8_t |
# of bytes |
| Record Type | 1 | uint8_t |
56 (0x38) |
| Record Checksum | 1 | uint8_t |
— |
| CPU Temperature sensor 1 | 4 | float |
degrees |
| CPU Temperature sensor 2 | 4 | float |
degrees |
| CPU Temperature sensor 3 | 4 | float |
degrees |
| CPU Temperature sensor 4 | 4 | float |
degrees |
Total Length: 20
3.22 Meterate (Version 3.68)
| Field Type | Bytes | Format | Units |
|---|---|---|---|
| Record Start Flag | 1 | uint8_t |
0xA5 |
| Record Length | 1 | uint8_t |
# of bytes |
| Record Type | 1 | uint8_t |
57 (0x39) |
| Record Checksum | 1 | uint8_t |
— |
| Auto/Manual | 1 | uint8_t |
Auto or Manual state |
| Base Speed | 1 | uint8_t |
MPH |
| Every Speed | 2 | uint16_t |
MPH ×100 |
| Control Voltage | 2 | uint16_t |
Vdc ×100 |
| Tach RPM | 2 | uint16_t |
RPM |
| Steps E‑Speed | 1 | uint8_t |
RPM steps per E‑Speed |
| Target Spread Rate | 2 | uint16_t |
Kg/Ha ×100 |
| Target Spread Per Min | 4 | uint32_t |
Kg/min ×1000 |
| Applied Spread Rate | 2 | uint16_t |
Kg/Ha ×100 |
| Applied Spread Per Min | 4 | uint32_t |
Kg/min ×1000 |
Total Length: 25
3.23 Marker
| Field Type | Bytes | Format | Units |
|---|---|---|---|
| Record Start Flag | 1 | uint8_t |
0xA5 |
| Record Length | 1 | uint8_t |
# of bytes |
| Record Type | 1 | uint8_t |
60 |
| Record Checksum | 1 | uint8_t |
— |
| Marker Type | 1 | uint8_t |
— |
| Latitude | 8 | double |
degrees |
| Longitude | 8 | double |
degrees |
| Altitude | 4 | float |
meters |
| Label Length | 1 | uint8_t |
# of bytes |
| Label String | ASCIIZ bytes |
Total Length: 26 + label
A Label Length of 0 is valid (no label text).
3.24 Marker — Unicode
| Field Type | Bytes | Format | Units |
|---|---|---|---|
| Record Start Flag | 1 | uint8_t |
0xA5 |
| Record Length | 1 | uint8_t |
# of bytes |
| Record Type | 1 | uint8_t |
61 |
| Record Checksum | 1 | uint8_t |
— |
| Marker Type | 1 | uint8_t |
— |
| Latitude | 8 | double |
degrees |
| Longitude | 8 | double |
degrees |
| Altitude | 4 | float |
meters |
| Label Length | 1 | uint8_t |
# of bytes |
| Label String | Unicode string with zero word termination |
Total Length: 26 + label
3.25 System Setup
| Field Type | Bytes | Format | Units |
|---|---|---|---|
| Record Start Flag | 1 | uint8_t |
0xA5 |
| Record Length | 1 | uint8_t |
# of bytes |
| Record Type | 1 | uint8_t |
100 (0x64) |
| Record Checksum | 1 | uint8_t |
— |
| Time | 5 | Time Stamp | — |
| Pilot Name | 11 | ASCIIZ |
— |
| Aircraft ID | 11 | ASCIIZ |
— |
| Logging Interval | 1 | uint8_t |
seconds ×10 |
| Logging Min Speed | 4 | float |
m/s |
| GPS Mask Angle | 1 | uint8_t |
degrees |
| GMT Offset | 2 | int |
minutes |
| Compass Variation | 4 | float |
degrees |
Total Length: 43
3.26 Environmental
| Field Type | Bytes | Format | Units |
|---|---|---|---|
| Record Start Flag | 1 | uint8_t |
0xA5 |
| Record Length | 1 | uint8_t |
# of bytes |
| Record Type | 1 | uint8_t |
110 |
| Record Checksum | 1 | uint8_t |
— |
| Temperature | 4 | float |
degrees |
| Relative Humidity | 1 | uint8_t |
% humidity |
| Barometric Pressure | 4 | float |
kPsc |
Total Length: 13
3.27 Swathing Setup
| Field Type | Bytes | Format | Units |
|---|---|---|---|
| Record Start Flag | 1 | uint8_t |
0xA5 |
| Record Length | 1 | uint8_t |
# of bytes |
| Record Type | 1 | uint8_t |
120 |
| Record Checksum | 1 | uint8_t |
— |
| Job ID | 11 | ASCIIZ |
10 + NULL |
| Pattern Type | 1 | uint8_t |
see Pattern Types |
| Pattern L/R | 1 | char |
'L' or 'R' |
| Swath Width | 4 | float |
meters |
| Job Long Label Name | 31 | ASCIIZ |
30 + NULL |
Total Length: 21 or 52
Pattern Types
| ID | Name |
|---|---|
| 0 | Back_To_Back |
| 1 | Racetrack |
| 2 | Squeeze |
| 3 | Quick_Racetrack |
| 4 | Reverse_Racetrack |
| 5 | Expand |
| 6 | Auto_Lock |
| 7 | Back_To_Back_Half_Boom |
| 8 | Contour |
| 9 | Contour/Headland |
| 10 | Area_Measurement |
| 11 | Multi_Back_To_Back |
| 12 | Back_To_Back_Skip |
| 20 | QuickTrac_X |
| 21 | Nearest_Swath |
3.28 Flow Setup
| Field Type | Bytes | Format | Units |
|---|---|---|---|
| Record Start Flag | 1 | uint8_t |
0xA5 |
| Record Length | 1 | uint8_t |
# of bytes |
| Record Type | 1 | uint8_t |
140 |
| Record Checksum | 1 | uint8_t |
— |
| Flow Control Status | 1 | uint8_t |
0=OFF; 1=Control ON; 2=Monitor Only; +0x40 Variable else Constant; +0x80 DRY else WET |
| Total Spray Liters | 4 | float |
Liters |
| Valve Calibration | 2 | int |
— |
| Meter Calibration | 4 | float |
counts/liter |
| Application Per Area | 4 | float |
L/hectare |
| Application Rate | 4 | float |
L/min |
Total Length: 23
Output: when System Options written and on change.
3.29 Boom Sections
(Not fully tested, 15 Mar 2023)
| Field Type | Bytes | Format | Units |
|---|---|---|---|
| Record Start Flag | 1 | uint8_t |
0xA5 |
| Record Length | 1 | uint8_t |
# of bytes |
| Record Type | 1 | uint8_t |
142 (0xE8) |
| Record Checksum | 1 | uint8_t |
— |
| Boom State | 1 | uint8_t |
0=Manual, 1=Automatic |
| Boom Sections | 1 | uint8_t |
1, 3, 4, or 5 |
| Boom Valve States | 1 | uint8_t |
bit field: 2 or 3 valve states O/C |
| Far LEFT Section | 4 | uint32_t |
meters ×1000 m |
| LEFT/CENTER Section | 4 | uint32_t |
meters ×1000 m |
| LEFT Section | 4 | uint32_t |
meters ×1000 m |
| CENTER Section | 4 | uint32_t |
meters ×1000 m |
| RIGHT Section | 4 | uint32_t |
meters ×1000 m |
| Far RIGHT Section | 4 | uint32_t |
meters ×1000 m |
Total Length: 31
Notes
- If
Boom Sections = 3(legacy L/C/R): use LEFT, CENTER (may be 0 m), RIGHT. - Bit fields:
- Boom Valve States bits 0..4 map to Far Left, Left, Center, Right, Far Right valves.
- Boom Section States bits 0..5 map to Far Left, Left, Left/Center, Center, Right, Far Right sections.
The PDF includes diagrams showing valve/section layouts.
3.30 Job Info String
(Note: Used ONLY with Bantam and Bantam2 logs)
| Field Type | Bytes | Format | Units |
|---|---|---|---|
| Record Start Flag | 1 | uint8_t |
0xA5 |
| Record Length | 1 | uint8_t |
# of bytes |
| Record Type | 1 | uint8_t |
151 |
| Record Checksum | 1 | uint8_t |
— |
| Job ID | 4 | long |
— |
| Job Title | 30 | ASCIIZ bytes |
|
| Number of Polygons | 2 | int |
— |
| Number of Patterns | 2 | int |
— |
Total Length: 5 + message
Logged: when a job is opened, or at log start if a job is already open.
3.31 Job Info NAME String
(Note: Used ONLY with Falcon and G4 logs)
| Field Type | Bytes | Format | Units |
|---|---|---|---|
| Record Start Flag | 1 | uint8_t |
0xA5 |
| Record Length | 1 | uint8_t |
# of bytes |
| Record Type | 1 | uint8_t |
152 |
| Record Checksum | 1 | uint8_t |
— |
| Job Version ID | 2 | int |
— |
| Job File Long Name | 32 | ASCIIZ |
(31 + NULL) |
| Number of Polygons | 2 | int |
— |
| Number of Patterns | 2 | int |
— |
Total Length: 42
Logged: when a job is opened, or at log start if a job is already open.
Appendix — Checksum
Record checksum is the XOR of all bytes from Record Start Flag through the end of the data (inclusive).
Appendices
Appendix A: Data Types
| Type | Size (bytes) | Description |
|---|---|---|
| uint8_t | 1 | Unsigned 8-bit integer |
| uint16_t | 2 | Unsigned 16-bit integer |
| uint32_t | 4 | Unsigned 32-bit integer |
| int8_t | 1 | Signed 8-bit integer |
| int16_t | 2 | Signed 16-bit integer |
| int32_t | 4 | Signed 32-bit integer |
| float | 4 | 32-bit floating point |
| double | 8 | 64-bit floating point |
Appendix B: Checksum Calculation
The checksum is calculated as the XOR of all bytes in the record, from the Record Start Flag through the end of the data.
uint8_t calculate_checksum(uint8_t* record, uint8_t length) {
uint8_t checksum = 0;
for (int i = 0; i < length; i++) {
checksum ^= record[i];
}
return checksum;
}
Appendix C: Byte Order
All multi-byte numeric values are stored in little-endian format (least significant byte first).
Appendix D: File Extensions
SATLOC log files typically use the following extensions:
.log- Standard log files.air- Air application specific logs.sat- SATLOC format logs
Document Generation Information:
- Generated from: LOGFileFormat_Air_3_76_converted.md (PDF conversion)
- Enhanced with: Transland_SATLOC_Log_File_Formats_v3_76.md (ChatGPT formatting)
- Cross-referenced: LOGFileFormat_Air_3_76.md (manual cleanup)
- Final validation: 2025-09-05 16:57:22 UTC
End of Document