Skip to content

Commit f633882

Browse files
LHOV command: heading-only scenario support
1 parent 24a1749 commit f633882

4 files changed

Lines changed: 38 additions & 13 deletions

File tree

src/AzimuthConsole.csproj

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,11 +34,11 @@
3434
<EmbeddedResource Include="wwwroot\**">
3535
<LogicalName>AzimuthConsole.wwwroot.%(RecursiveDir)%(Filename)%(Extension)</LogicalName>
3636
</EmbeddedResource>
37-
<PackageReference Include="AZMLib" Version="1.1.15" />
37+
<PackageReference Include="AZMLib" Version="1.1.17" />
3838
<PackageReference Include="UCNLDrivers" Version="1.1.6" />
3939
<PackageReference Include="UCNLPhysics" Version="1.0.0" />
4040
<PackageReference Include="UCNLMan" Version="1.0.1" />
41-
<PackageReference Include="UCNLNav" Version="1.0.1" />
41+
<PackageReference Include="UCNLNav" Version="1.0.3" />
4242
<PackageReference Include="UCNLNMEA" Version="1.0.0" />
4343
<PackageReference Include="UCNLSalinity" Version="1.0.1" />
4444
<!-- <PackageReference Include="System.IO.Ports" Version="10.0.5" /> -->

src/Commands/CommandRegistration.cs

Lines changed: 30 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
// AzimuthConsole/Commands/CommandRegistration.cs
2+
using AZMLib;
23
using System.Globalization;
34

45
namespace AzimuthConsole.Commands
@@ -277,21 +278,42 @@ private static void RegisterPositionCommands(CommandRouter router, ApplicationRu
277278
Id = "LHOV",
278279
Category = "Position",
279280
Sources = "T,R,W",
280-
Parameters = "lat=N,lon=N,hdg=N",
281+
Parameters = "hdg=N,[lat=N],[lon=N]",
281282
Response = "LHOV,OK",
282-
Description = "Override location and heading (empty params = disable override)"
283+
Description = "Override heading and optionally location (empty params = disable override)"
283284
}, async (args, ctx) =>
284285
{
285-
if (args.Count == 0 || (!args.ContainsKey("lat") && !args.ContainsKey("lon") && !args.ContainsKey("hdg")))
286+
if (args.Count == 0 || !args.ContainsKey("hdg"))
286287
{
287288
runtime.DisableLocationOverride();
288289
return CommandResult.Ok();
289290
}
290-
var lat = double.Parse(args.GetValueOrDefault("lat", "NaN"), CultureInfo.InvariantCulture);
291-
var lon = double.Parse(args.GetValueOrDefault("lon", "NaN"), CultureInfo.InvariantCulture);
292-
var hdg = double.Parse(args.GetValueOrDefault("hdg", "NaN"), CultureInfo.InvariantCulture);
293-
if (double.IsNaN(lat) || double.IsNaN(lon) || double.IsNaN(hdg))
294-
return CommandResult.Error("lat, lon, hdg required");
291+
292+
var hdg = double.Parse(args["hdg"], CultureInfo.InvariantCulture);
293+
if (!AZM.IsHdnDeg(hdg))
294+
return CommandResult.Error("hdg: invalid heading");
295+
296+
double lat = double.NaN;
297+
double lon = double.NaN;
298+
299+
if (args.ContainsKey("lat"))
300+
{
301+
lat = double.Parse(args["lat"], CultureInfo.InvariantCulture);
302+
if (!AZM.IsLatDeg(lat))
303+
return CommandResult.Error("lat: invalid latitude");
304+
}
305+
306+
if (args.ContainsKey("lon"))
307+
{
308+
lon = double.Parse(args["lon"], CultureInfo.InvariantCulture);
309+
if (!AZM.IsLonDeg(lon))
310+
return CommandResult.Error("lon: invalid longitude");
311+
}
312+
313+
// Если задан только один из lat/lon — ошибка
314+
if (!double.IsNaN(lat) != !double.IsNaN(lon))
315+
return CommandResult.Error("lat and lon must be specified together");
316+
295317
runtime.OverrideLocation(lat, lon, hdg);
296318
return CommandResult.Ok();
297319
});

src/Properties/PublishProfiles/FolderProfile.pubxml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,11 @@
44
<PropertyGroup>
55
<Configuration>Release</Configuration>
66
<Platform>Any CPU</Platform>
7-
<PublishDir>bin\Release\net8.0\publish\linux-x64\</PublishDir>
7+
<PublishDir>bin\Release\net8.0\publish\osx-x64\</PublishDir>
88
<PublishProtocol>FileSystem</PublishProtocol>
99
<_TargetId>Folder</_TargetId>
1010
<TargetFramework>net8.0</TargetFramework>
11-
<RuntimeIdentifier>linux-x64</RuntimeIdentifier>
11+
<RuntimeIdentifier>osx-x64</RuntimeIdentifier>
1212
<SelfContained>false</SelfContained>
1313
<PublishSingleFile>true</PublishSingleFile>
1414
</PropertyGroup>

src/changelog.md

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,7 @@
1-
## Версия 2.1.2. (2026-06-05)
1+
## Версия 2.1.3. (2026-07-02)
2+
- Добавлена в тестовом режиме фильтрация выбросов только по данным с компаса (без координат)
3+
4+
## Версия 2.1.2. (2026-06-05)
25
- Исправлен баг со стартом портов AUX1, AUX2, RDT
36
- Исправлен баг с логгированием источников AUX1, AUX2 и RDT
47
- Исправлен баг с наложением панели информации о системе на панель информации о портах

0 commit comments

Comments
 (0)