agmission/Development/server/docs/LOGFileFormat_Air_3_77_COMPLETE.md

30 KiB
Raw Permalink Blame History

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 206207: 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 MicroRPM).
3.67 26 Jul 2019 Added 1byte 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 ESpeed to uint16_t.
3.69 03 May 2020 New LOG Record 142 BOOM sections selected in meters; MAN/AUTO, 15 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
XTrack 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
XTrack Deviation 4 float meters
Differential Age 1 uint8_t seconds
Flags (numeric) 1 uint8_t see recordspecific 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 0255%
Dual Flow Turbine STDev 1 uint8_t 0255%
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: AUTOBOOM set to ON

Notes

  1. To identify Short vs Enhanced Position record, read byte Record Type.
  2. 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 POSType 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: AB 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 8byte and 10byte 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 17
Units 1 char E (English) \
Applied Resolution 1 uint8_t 0 = 1/16”, 1 = 1mm, 2 = 1/32”
Active Levels 1 uint8_t 17 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 12048
Target Encoder Position 2 int 12048
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.5m.


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 MicroRPM (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)
MicroAtomiser Left 1..5 2×5 int RPM
MicroAtomiser 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 ESpeed 1 uint8_t RPM steps per ESpeed
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

  1. If Boom Sections = 3 (legacy L/C/R): use LEFT, CENTER (may be 0 m), RIGHT.
  2. 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