agmission/server/docs/QT_File_Format_Documentation.md

130 lines
4.4 KiB
Markdown

# File Format Documentation: QT Files
## Overview
QT files (`q*.t*`) are text-based summary files that store flight/spray application information in Navigate. They use a key-value format with labels followed by colons.
## File Location
- **Path**: Mission directory
- **Naming**: `q<identifier>.t<number>` (e.g., `q2024.t1`)
- **Format**: Plain text with Windows-style line endings (`\r\n`)
## File Structure
### Header Information
```
CLIENT : <Client/Farmer name>
OPERATOR : <Operator/Pilot name>
NAV/REMARK: <Remark>
AIRCRAFT : <Aircraft name>
FLIGHT : <Flight number>
JOB : <Job name>
PRODUCT : <Product name>
```
### System Information
```
GUIA INFO : <software_version>\t<serial_number>\t<mac_address>
FC TYPE : <flow_controller_type_name>
```
### Application Details
```
APP. RATE : <application_rate> <unit>
DATE : <date>
GPS TIME : <hh:mm:ss>
AREA/ZONE : <area_name>
SPRAY COVERAGE <Sprayed Total Swath>: <sprayed_area> <total_area> <swath_width>
```
### Flow Controller Section (Optional)
```
[FLOWCONTROLLER]
PulsesPerLiter=<pulses_per_liter>
```
### Spray Settings
```
AutoSpray(0: GuideLine, 1: Inside): <auto_spray_mode>
SprayOnLag: <spray_on_lag>
SprayOffLag: <spray_off_lag>
SprayLag Calibration: <spray_lag_calibration>
```
## Field Specifications
| Field | Type | Format | Description | Notes |
|-------|------|--------|-------------|-------|
| CLIENT | String | Text | Client name | From ApplicationInfo |
| OPERATOR | String | Text | Operator name | From ApplicationInfo |
| NAV/REMARK | String | Text | Navigation remarks | From ApplicationInfo |
| AIRCRAFT | String | Text | Aircraft identifier | From ApplicationInfo |
| FLIGHT | String | Text | Flight number/identifier | From ApplicationInfo |
| JOB | String | Text | Job identifier | From ApplicationInfo |
| PRODUCT | String | Text | Product being applied | From ApplicationInfo |
| GUIA INFO | String | Tab-separated | `<version>\t<serial>\t<MAC>` | Software metadata |
| FC TYPE | String | Text | Flow controller type name | From ApplicationInfo |
| APP. RATE | Double + String | `<rate> <unit>` | Application rate with unit | 2 decimal places |
| DATE | String | Date format | Date of application | From ApplicationInfo |
| GPS TIME | Time | HH:mm:ss | GPS time | From ApplicationInfo |
| AREA/ZONE | String | Text | Area or zone name | Current area name |
| SPRAY COVERAGE | 3 Doubles | Space-separated | `<sprayed> <total> <swath>` | All in m² (3 decimals) |
| PulsesPerLiter | Integer | Number | Flow controller PPL | Only if `fcPPL >= 0` |
| AutoSpray | Integer | 0 or 1 | Auto spray mode | 0=GuideLine, 1=Inside |
| SprayOnLag | Double | Decimal | Spray on lag time (seconds) | From ApplicationInfo |
| SprayOffLag | Double | Decimal | Spray off lag time (seconds) | From ApplicationInfo |
| SprayLag Calibration | Integer | Number | Spray lag calibration value | From ApplicationInfo |
## Example File
```
CLIENT : ABC Farms
OPERATOR : John Smith
NAV/REMARK: Field 12 north section
AIRCRAFT : N12345
FLIGHT : 2024-001
JOB : CORN-2024
PRODUCT : Herbicide XYZ
GUIA INFO : 2.9.2 SN123456 00:11:22:33:44:55
FC TYPE : Raven 440
APP. RATE : 15.50 L/HA
DATE : 11/06/2025
GPS TIME : 14:30:25
AREA/ZONE : Field 12
SPRAY COVERAGE <Sprayed Total Swath>: 45.230 50.000 15.000
[FLOWCONTROLLER]
PulsesPerLiter=1200
AutoSpray(0: GuideLine, 1: Inside): 1
SprayOnLag: 0.5
SprayOffLag: 0.3
SprayLag Calibration: 100
```
## Operations
### Creating QT Files
- Function: `FileController::saveQT()`
- Location: `filecontroller.cpp`
- Called when: Saving mission/application data
- Writes all fields from ApplicationInfo and current area state
### Updating QT Files
- Function: `FileController::updateQT()`
- Location: `filecontroller.cpp`
- Called when: Updating spray coverage or application rate
- **Only updates**:
- `APP. RATE`: Application rate and unit
- `SPRAY COVERAGE`: Sprayed area, total area, and swath width
- All other fields remain unchanged
## Related Files
- Source: `/branches/mission-structure/navigate/src/appnavigate/filecontroller.cpp`
- Related classes: `ApplicationInfo`, `Area`, `FlowController`
## Notes
- All area measurements are in square meters (m²)
- Application rate units depend on system settings (metric vs US)
- Flow controller section is optional and only written if valid PPL exists
- The file uses consistent formatting with specific decimal precision for numeric values
- GUIA INFO fields are tab-separated (not space-separated)