MNemoLink is a Flutter desktop application that interfaces with MNemo v2 cave surveying devices. It handles device communication, data transfer, processing, and export to various cave surveying formats.
- Device Communication: Connect to MNemo devices via USB serial or WiFi network
- Data Processing: Parse and validate DMP (Data Memory Package) files from MNemo devices
- Multiple Export Formats: Export survey data to Excel (.xlsx), Survex (.svx), and Therion (.th) formats
- Real-time CLI Interface: Direct command-line interface for device control and data retrieval
- Cross-platform Support: Full functionality on Windows, Linux, and macOS; limited functionality on Android and iOS
- Firmware Updates: Manage MNemo device firmware updates directly from the application
The application follows a service-oriented architecture with clear separation between UI, business logic, and device communication:
- models/ - Data models (Shot, Section, SectionList, SurveyQuality, Enums)
- services/ - Business logic services for device communication, networking, data processing, file operations, and firmware updates
- widgets/ - UI components including CLI interface, connection status, network panels, and data visualization
- DeviceCommunicationService - Handles serial communication with MNemo devices
- NetworkService - Manages network-based device discovery and data transfer
- DataProcessingService - Processes raw survey data into structured sections
- FileService - Handles DMP file operations and exports to Excel/Survex/Therion formats
- FirmwareUpdateService - Manages firmware and software update operations
- Device connection via serial or network
- Raw data transfer from MNemo device (DMP format)
- Data processing into survey sections with shots
- Export to various cave surveying formats
- Flutter SDK 3.5.4+: Installation Guide
- Platform-specific tools: See platform sections below for detailed requirements
-
Clone the repository:
git clone https://github.com/SebKister/MNemoLink.git cd MNemoLink -
Install dependencies:
make install # Or flutter pub get -
Run the application:
make run # Or flutter run
Follow the Flutter Windows installation guide for desktop development.
For Android development, follow this guide.
Build Commands:
make build_windows # Build Windows release
make build_androidFatAPK # Build Android fat APK
make build_androidAPK # Build Android split APKs
make build_appBundle # Build Android app bundleWe provide a VS Code devcontainer for consistent development environments. Requirements:
- VS Code
- Docker
- Devcontainer Extension (
ms-vscode-remote.remote-containers)
Setup:
git clone https://github.com/SebKister/MNemoLink.git
cd MNemoLink
code -n $(pwd) # Open in VSCodeThen Ctrl+P → "Dev Containers: Rebuild and Reopen in Container"
Build Commands:
make build_linux # Build Linux releaseFollow the Flutter macOS installation guide for desktop development.
For mobile development:
Build Commands:
make build_macos # Build macOS release
make build_iosRelease # Build iOS releasemake install # Install Flutter dependencies and perform cleanup
make clean # Remove build artifacts and Flutter cacheflutter analyze # Run static analysis (uses flutter_lints)
flutter test # Run testsTests are located in the test/ directory.
Run tests with:
flutter testThe application communicates with MNemo devices through:
- Serial communication (USB connection)
- Network communication (WiFi connection via IP address)
- CLI command interface for device control and data retrieval
The application supports multiple cave surveying export formats:
- DMP - Native MNemo format
- Excel (.xlsx) - Spreadsheet format for data analysis
- Survex (.svx) - Open source cave surveying software format
- Therion (.th) - Cave mapping and 3D modeling software format
Please read CONTRIBUTE.md for detailed guidelines on:
- Code organization and architecture
- Development workflow and standards
- Pull request process
- GitHub Actions CI/CD pipeline
- Project Documentation: See CONTRIBUTE.md for comprehensive development guidelines
- DMP File Format: See
doc/MNemo DMP File Format - Complete Documentation.mdfor technical specification - MNemo v2 Hardware: MNemo V2 Documentation