Initial commit: FieldLogger MAUI app with Maglink BLE support

Added Maglink RTK GNSS receiver integration with correct BLE UUIDs and device name filtering (ML-* prefix).

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
brentperteet
2026-07-06 13:46:50 -05:00
commit b602b762c9
79 changed files with 5807 additions and 0 deletions

View File

@@ -0,0 +1,64 @@
using FieldLogger.Services;
using FieldLogger.Services.Ble;
using FieldLogger.Services.Data;
using FieldLogger.Services.Sync;
using FieldLogger.ViewModels;
using FieldLogger.Views;
using Microsoft.Extensions.Logging;
namespace FieldLogger;
public static class MauiProgram
{
public static MauiApp CreateMauiApp()
{
var builder = MauiApp.CreateBuilder();
builder
.UseMauiApp<App>()
#if !WINDOWS
.UseMauiMaps()
#endif
.ConfigureFonts(fonts =>
{
fonts.AddFont("OpenSans-Regular.ttf", "OpenSansRegular");
fonts.AddFont("OpenSans-Semibold.ttf", "OpenSansSemibold");
});
#if DEBUG
builder.Logging.AddDebug();
#endif
// Core services
builder.Services.AddSingleton<SettingsService>();
builder.Services.AddSingleton<AppDatabase>();
builder.Services.AddSingleton<BleScanner>();
builder.Services.AddSingleton<UmReceiverService>();
builder.Services.AddSingleton<MaglinkService>();
builder.Services.AddSingleton<DeviceConnectionManager>();
builder.Services.AddSingleton<PointLogger>();
builder.Services.AddSingleton<IMqttSyncService, NullMqttSyncService>();
// View models
builder.Services.AddSingleton<HomeViewModel>();
builder.Services.AddSingleton<JobsViewModel>();
builder.Services.AddSingleton<MapViewModel>();
builder.Services.AddSingleton<SettingsViewModel>();
builder.Services.AddTransient<DeviceScanViewModel>();
builder.Services.AddTransient<JobDetailViewModel>();
// Pages
builder.Services.AddSingleton<HomePage>();
builder.Services.AddSingleton<JobsPage>();
builder.Services.AddSingleton<MapPage>();
builder.Services.AddSingleton<SettingsPage>();
builder.Services.AddTransient<DeviceScanPage>();
builder.Services.AddTransient<JobDetailPage>();
var app = builder.Build();
// Instantiate the point logger so it listens for receiver packets from startup.
_ = app.Services.GetRequiredService<PointLogger>();
return app;
}
}