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:
51
FieldLogger/Models/UmDeviceInfo.cs
Normal file
51
FieldLogger/Models/UmDeviceInfo.cs
Normal file
@@ -0,0 +1,51 @@
|
||||
namespace FieldLogger.Models;
|
||||
|
||||
/// <summary>
|
||||
/// Info string the UM receiver sends the first time push-button data logging is enabled.
|
||||
/// </summary>
|
||||
public sealed class UmDeviceInfo
|
||||
{
|
||||
public string Manufacturer { get; init; } = "";
|
||||
public string ModelName { get; init; } = "";
|
||||
public string SerialNumber { get; init; } = "";
|
||||
public string BootloaderVersion { get; init; } = "";
|
||||
public string SoftwareVersion { get; init; } = "";
|
||||
public string ManufactureDate { get; init; } = "";
|
||||
public string CalibrationDate { get; init; } = "";
|
||||
public double HourCount { get; init; }
|
||||
public int PbdlSchema { get; init; }
|
||||
public string RawText { get; init; } = "";
|
||||
|
||||
/// <summary>
|
||||
/// Parses the 10-field info string (9 parameters followed by "OK").
|
||||
/// Returns null if the line does not match.
|
||||
/// </summary>
|
||||
public static UmDeviceInfo? TryParse(string line)
|
||||
{
|
||||
var fields = line.Trim().Split(',');
|
||||
if (fields.Length < 10 || !fields[^1].Trim().Equals("OK", StringComparison.OrdinalIgnoreCase))
|
||||
return null;
|
||||
|
||||
// Serial number is 9 digits; use it to distinguish from other OK-terminated responses.
|
||||
if (fields[2].Trim().Length < 6)
|
||||
return null;
|
||||
|
||||
double.TryParse(fields[7], System.Globalization.NumberStyles.Float,
|
||||
System.Globalization.CultureInfo.InvariantCulture, out var hours);
|
||||
int.TryParse(fields[8], out var schema);
|
||||
|
||||
return new UmDeviceInfo
|
||||
{
|
||||
Manufacturer = fields[0].Trim(),
|
||||
ModelName = fields[1].Trim(),
|
||||
SerialNumber = fields[2].Trim(),
|
||||
BootloaderVersion = fields[3].Trim(),
|
||||
SoftwareVersion = fields[4].Trim(),
|
||||
ManufactureDate = fields[5].Trim(),
|
||||
CalibrationDate = fields[6].Trim(),
|
||||
HourCount = hours,
|
||||
PbdlSchema = schema,
|
||||
RawText = line.Trim(),
|
||||
};
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user