This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
AOGConfigOMatic is a Windows Forms application (.NET Framework 4.8) that simplifies flashing firmware to Teensy microcontrollers and configuring UBlox F9P/UM982 GPS devices for AgOpenGPS precision agriculture. The application provides a user-friendly interface to replace the complex TeensyDuino IDE and U-Center workflows.
- Main Form:
frmMain.cs- Primary UI with tabbed interface - User Controls: Modular controls for different device types:
Teensy/TeensyControl.cs- Teensy microcontroller flashingUBlox/UBloxControl.cs- UBlox F9P GPS configurationUM982/UM982Control.cs- UM982 GPS configuration
lunOptics.libTeensySharp(NuGet package) - Teensy programming library- Built-in .NET Framework serial communication for GPS devices
- External executable:
ubxfwupdate.exefor UBlox firmware updates
Firmwares.csv- List of available firmware with download URLsSingle.txt,DualPosition.txt,DualRelPos.txt- UBlox GPS configurationsConfigUM982.txt,ConfigUM982D.txt,ConfigUM982S.txt- UM982 GPS configurationsUBX113.bin- UBlox firmware binary
# Restore NuGet packages
nuget restore AOGConfigOMatic.sln -PackagesDirectory .\packages
# Build solution
msbuild /p:Configuration=Debug AOGConfigOMatic.sln# Build for release
msbuild /p:Configuration=Release AOGConfigOMatic.sln
# Create distribution package
powershell Compress-Archive -Path AOGConfigOMatic\bin\Release\* -DestinationPath AOGConfigOMatic.zip -Force# Update assembly versions (used by CI/CD)
powershell .\SetVersion.ps1 "1.2.3.4"- No automated test framework - testing is manual with actual hardware
- Test with physical Teensy and GPS devices connected via USB
- Verify firmware flashing and GPS configuration functionality
- GitHub Actions workflow in
.github/workflows/main.yml - Automatic builds and releases on main branch pushes
- Semantic versioning based on commit messages (MAJOR:, MINOR: prefixes)
- Automated ZIP package creation for releases
- Windows development environment (uses Windows-specific libraries)
- Teensy microcontrollers for testing firmware flashing
- UBlox F9P or UM982 GPS devices for configuration testing
- Serial port enumeration and management for GPS devices
- USB HID communication for Teensy programming via libTeensySharp
- Firmware downloading and caching from GitHub repositories
- Runtime firmware downloading and local caching
- Configuration file deployment with build outputs
- Support for custom firmware files in application directory
- Device detection and connection status monitoring
- Firmware compatibility validation (UBlox requires v1.13)
- Progress tracking for long-running operations (firmware flashing, configuration)
AOGConfigOMatic includes specialized support for AiO GPS Configurator devices:
- USB Device Identification: VID 0x16C0, PID 0x048C (Teensy Triple Serial)
- Multi-Interface Detection: Console (MI_00), GPS1 (MI_02), GPS2 (MI_04)
- Behavioral Identification: Port function detection via startup banners and NMEA messages
UsbSerialPortInfo- Enhanced serial port enumeration with USB device detailsAioPortIdentifier- Port type identification (Console/GPS1/GPS2)AioDeviceHelper- Utility methods for AiO device management
When working with AiO GPS Configurator features:
- Test with actual AiO hardware for port identification validation
- Use
AioDeviceHelper.GetAioDeviceSummary()for device detection debugging - Port detection gracefully falls back to basic enumeration if USB queries fail
- See
AIO_GPS_CONFIGURATOR.mdfor detailed implementation documentation