Skip to content

mintylinux/Meshcore-Wardrive-Android-Source

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

27 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

MeshCore Wardrive Android App - Source Code

A Flutter-based Android application for mapping MeshCore mesh network coverage in real-time.

📥 Download Pre-built APK

Latest Release: Download from Releases Repository

🚀 Features

  • Real-time GPS tracking with foreground service
  • USB and Bluetooth connectivity for MeshCore companion radios
  • Auto-ping functionality with configurable intervals (50m, 200m, 0.5 miles, 1 mile)
  • Manual ping testing
  • Success rate based coverage visualization with color coding
  • Clickable coverage squares showing detailed statistics
  • Repeater discovery and tracking
  • Data export to JSON
  • Web map upload functionality
  • Debug terminal with logging
  • Light/Dark theme support

🛠️ Development Setup

Prerequisites

  • Flutter SDK (3.10.0 or higher)
  • Android Studio or VS Code with Flutter extensions
  • Android SDK with API level 21+
  • A MeshCore companion radio device (for testing)

Installation

  1. Clone this repository:
git clone https://github.com/mintylinux/Meshcore-Wardrive-Android-Source.git
cd meshcore_wardrive
  1. Install dependencies:
flutter pub get
  1. Generate app icons:
flutter pub run flutter_launcher_icons
  1. Run on connected device:
flutter run

Building Release APK

flutter build apk --release

The APK will be located at: build/app/outputs/flutter-apk/app-release.apk

📁 Project Structure

lib/
├── main.dart                    # App entry point
├── models/
│   └── models.dart              # Data models (Sample, Coverage, Repeater)
├── screens/
│   ├── map_screen.dart          # Main map interface
│   └── debug_log_screen.dart    # Debug terminal
├── services/
│   ├── location_service.dart         # GPS tracking & auto-ping
│   ├── lora_companion_service.dart   # LoRa device communication
│   ├── database_service.dart         # SQLite database
│   ├── aggregation_service.dart      # Coverage calculation
│   ├── upload_service.dart           # Web map upload
│   ├── meshcore_protocol.dart        # Protocol implementation
│   └── debug_log_service.dart        # Debug logging
└── utils/
    └── geohash_utils.dart        # Geohash utilities

🔧 Configuration

Ping Intervals

Default ping interval can be changed in lib/services/location_service.dart:

double _pingIntervalMeters = 805.0; // 0.5 miles

Coverage Grid Precision

Grid size is set in lib/utils/geohash_utils.dart:

static String coverageKey(double lat, double lon) {
  return geohash.GeoHash.encode(lat, lon, precision: 6); // ~1.2km x 610m
}

Ping Timeout

Timeout for ping responses in lib/services/location_service.dart:

timeoutSeconds: 20,  // 20 second timeout

📚 Documentation

🧪 Testing

Run tests with:

flutter test

📦 Dependencies

Key packages:

  • flutter_map - Map display
  • geolocator - GPS tracking
  • flutter_foreground_task - Background service
  • usb_serial - USB connectivity
  • flutter_blue_plus - Bluetooth connectivity
  • sqflite - Local database
  • geohash_plus - Geohash encoding
  • pointycastle - Encryption

See pubspec.yaml for complete list.

🐛 Known Issues

  • Some Android devices may require "Location Always" permission for background tracking
  • USB connectivity requires OTG cable and data-capable cable
  • #meshwar channel must be joined in MeshCore app before first use

🤝 Contributing

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes with co-author line:
    git commit -m "Add amazing feature
    
    Co-Authored-By: Your Name <[email protected]>"
    
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

🙏 Credits

Built for the MeshCore mesh networking community.

📧 Support

For issues and questions:

  • Open an issue on GitHub
  • Check existing documentation in the repository

Current Version: 1.0.7

Minimum Android Version: Android 5.0 (API 21)

About

Source code for the Meshcore-Wardrive-Android app

Resources

Stars

Watchers

Forks

Packages

No packages published

Contributors 2

  •  
  •