Roadlink is a native Android-based in-vehicle computer system designed for golf carts. It combines real-time GPS navigation, mesh network communication via Meshtastic, vehicle telemetry, and intelligent power management into a cohesive driving experience.

Core Features

GPS and Navigation

  • Real-time speed display with multi-stage filtering (eliminating dither, spike rejection, responsive stop detection)
  • 16-point cardinal direction display (N, NNE, NE, ENE, etc.)
  • Current latitude and longitude coordinates with satellite count
  • Horizontal dilution of precision (HDOP) display
  • Sunrise and sunset time calculation
  • Automatic timezone and daylight saving time handling
  • “NO GPS” indicator after 60 seconds without GPS fix
  • Date in “Day, Mon DD” format and 12-hour time with AM/PM

Distance and Maintenance Tracking

  • Dual odometer system (total distance + resettable trip odometer)
  • 1 decimal place precision in miles
  • Doppler speed gating to reject GPS errors
  • Minimum position change thresholds (2.6 ft with Doppler, 10 ft without)
  • Rollover at 100,000 miles
  • Service reminder counter with driving hours accumulation
  • Tenths-of-hours resolution (6-minute increments)
  • Configurable service intervals (default: 100 hours)
  • User-resettable counters
  • Automatic persistence every 0.5-1.0 miles

Bluetooth Connectivity - Meshtastic Mesh Network

  • Automatic BLE scanning for Meshtastic radios
  • Full Meshtastic protocol handshake with config download
  • 4-byte length-prefix packet framing with MTU-aware splitting
  • 30-second heartbeat with 60-second liveness timeout
  • Automatic reconnection with exponential backoff
  • Device bonding and persistent address storage
  • Graceful disconnect handling
  • Android 12+ Bluetooth permission support

Meshtastic Messaging

  • Send and receive text messages via mesh network
  • Broadcast and direct message support
  • Preformatted message selection from configurable list
  • Custom message composition via on-screen keyboard
  • Message display with sender node ID, channel, and timestamp
  • AWAKE notification on connection establishment
  • 237-byte payload limit enforcement
  • Audible notification on message receipt

Vehicle Telemetry

  • Bluetooth Classic/BLE connection to GCI ESP-32
  • Real-time vehicle telemetry reception (battery, fuel, temperature, headlights)
  • 10-second heartbeat with 40-second disconnect timeout
  • 6-second pairing window with broadcast discovery
  • Independent connection management (separate from Meshtastic)
  • Persistent paired device address
  • GPS data, at-home status, and daytime status reporting to vehicle system
  • Dual simultaneous Bluetooth connections (BLE + Classic/BLE)

Power and Display Management

  • Three-state sleep manager:
    • STARTUP_GRACE: Waits for GCI connection (configurable, minimum 30 seconds)
    • GCI_MODE: Sleep controlled by vehicle system connection status
    • STANDALONE_MODE: Backlight dimming only, never deep sleep
  • Automatic day/night brightness adjustment based on sunrise/sunset
  • Configurable day brightness (0-10 scale)
  • Configurable night brightness (0-10 scale)
  • Inactivity-based screen dimming with configurable timeout
  • Automatic brightness restore on touch or movement
  • GPS interval adjustment in standalone mode (120s at home, 8s away)
  • Odometer and driving hours persistence before sleep

Home Location and Geofencing

  • Set current GPS position as home
  • Clear saved home location
  • Configurable geofence radius (default: 500 meters)
  • Continuous distance calculation from home
  • At-home status notification to vehicle system
  • GPS validation before setting home

Weather and Entertainment Display

  • Current temperature display
  • 4-hour forecast with weather glyphs, hourly labels, and precipitation probability
  • Last-received timestamp with cache management
  • Same-day cache restoration on startup
  • Automatic fresh data request when cache is stale
  • Venue/event data in scrollable two-column table
  • Up to 12 venue/event entries
  • Live refresh when new data arrives
  • “(stored)” indicator for cached data

Audio Feedback

  • Startup tone on app launch
  • Message notification tone for new Meshtastic messages
  • Alert, confirmation, click, and error tones
  • Configurable speaker volume (0-20 range)
  • Persistent volume setting

Configuration and Settings

  • Display settings (day/night brightness, screen flip, backlight timeout)
  • Vehicle settings (temperature offset, service interval, odometer/hour reset)
  • Connectivity settings (GCI pairing, Meshtastic enable/disable, radio reboot)
  • Meshtastic radio administration (node ID display, reboot commands)
  • System information (app version, device MAC, manual reboot, reset preferences)

Persistent Storage

  • All settings persisted via Jetpack DataStore
  • 2-second write debounce for slider/spinner values
  • Weather and venue data with date stamps
  • Odometer values (total and trip)
  • Driving hours in tenths of hours
  • Paired device addresses (both vehicle and Meshtastic)
  • Home location coordinates

Technology Stack

Frontend

  • Kotlin programming language
  • Jetpack Compose with Material 3 design system
  • Responsive layouts optimized for in-vehicle displays

Backend & Connectivity

  • Android Foreground Services for persistent Bluetooth
  • BLE (Bluetooth Low Energy) for Meshtastic and GCI
  • Bluetooth Classic for vehicle telemetry
  • Full Meshtastic protocol implementation

Data Layer

  • Jetpack DataStore for persistent preferences
  • Wire protobuf code generation for Meshtastic messages
  • StateFlow for reactive data updates

Architecture

  • Three-layer architecture (UI, Domain, Data)
  • Hilt dependency injection
  • Kotlin Coroutines for async operations
  • Clean separation of concerns

Testing & Quality

  • Property-based correctness tests (jqwik)
  • Unit tests (JUnit 5)
  • Integration tests
  • Mock BLE peripheral testing
  • Flow testing with Turbine
  • Semantic versioning

Build & DevOps

  • Gradle Kotlin DSL
  • Version catalog (libs.versions.toml)
  • Renovate and Dependabot for dependency updates
  • GitHub Actions CI/CD

Key Benefits

  • Real-Time Information — Speed, heading, GPS, time, and vehicle data at a glance
  • Mesh Communication — Stay connected via Meshtastic even where cellular is unavailable
  • Vehicle Integration — Direct connection to vehicle telemetry system
  • Intelligent Power Management — Optimized battery usage with smart sleep modes
  • Maintenance Tracking — Automatic service reminders based on driving hours
  • Configurable — Adjust brightness, timeouts, service intervals, and more
  • Reliable — Automatic reconnection, heartbeat monitoring, and error handling
  • Production Quality — Comprehensive testing and clean architecture

Use Cases

  • Golf Cart Operations — In-vehicle navigation and communication for fleet management
  • Outdoor Recreation — Mesh communication for off-grid driving scenarios
  • Maintenance Tracking — Automated service reminders for vehicle fleets
  • Off-Grid Communication — Meshtastic integration for areas without cellular coverage
  • Telemetry Integration — Direct vehicle system integration for custom hardware

Philosophy

Modern vehicles deserve modern technology. Roadlink brings desktop-class features to the mobile platform, delivering a reliable, configurable in-vehicle computer system that just works.

Status

Production-ready Android application with comprehensive testing, clean architecture, and active maintenance.