Merge branch 'develop/SLM-PT50_genesisDirectDecode' into develop/SLM-PT50_genesisDirectDecode_special

# Conflicts:
#	TBF/TBF.csproj
This commit is contained in:
Michal Buzik 2026-05-11 17:29:13 +02:00
commit 0b1e09e0df
2 changed files with 37 additions and 23 deletions

View File

@ -710,7 +710,7 @@ namespace GenesisCordonelInterface.API
if (!meter.IsLoggedOn)
{
meter.Login();
meter.Login2();
if (meter.IsLoggedOn)
{
@ -732,7 +732,9 @@ namespace GenesisCordonelInterface.API
Success = false,
SlotId = slot,
IsLoggedOn = false,
Message = "Login failed"
Message = string.IsNullOrWhiteSpace(meter.LastLoginError)
? "Login failed"
: meter.LastLoginError
};
}
@ -782,7 +784,7 @@ namespace GenesisCordonelInterface.API
if (!meter.IsConnected)
{
meter.ConnectMeter();
meter.ConnectMeter2();
LogInfo(operation, $"New Slot {slot} connection success.");
@ -790,21 +792,10 @@ namespace GenesisCordonelInterface.API
{
Success = true,
SlotId = slot,
IsConnected = true,
Message = "Connected now"
};
}
if (!meter.IsConnected)
{
LogInfo(operation, $"Failed Slot {slot} connection.");
return new PublicModels.GciConnectResult
{
Success = false,
SlotId = slot,
IsConnected = false,
Message = "Connect failed"
IsConnected = meter.IsConnected,
Message = meter.IsConnected
? "Connected now"
: meter.LastConnectError
};
}

View File

@ -501,7 +501,7 @@ namespace TBF.Rig.BridgeComponents.GciBridge
/// -> InterfaceOutsideToGCI.ConnectOneSlotAsync()
/// -> InterfaceGCIToLaatzen.ConnectOneMeterAsync()
/// -> per-slot GCI worker
/// -> MeterBatch.MetersLogin()
/// -> Protocols connect to ports
/// -> GenesisMeter register snapshot
/// </summary>
/// <param name="slotId">Slot number.</param>
@ -523,11 +523,34 @@ namespace TBF.Rig.BridgeComponents.GciBridge
return result;
}
public Task<GciPublicModels.GciLoginResult> LoginAsync(
int slot,
CancellationToken token = default)
/// <summary>
/// Logs in to the meter assigned to the requested slot.
///
/// Trace:
/// GciBridge.LoginAsync()
/// -> InterfaceOutsideToGCI.LoginOneSlotAsync()
/// -> InterfaceGCIToLaatzen.LoginOneMeterAsync()
/// -> per-slot GCI worker
/// -> MeterBatch.MetersLogin()
/// -> GenesisMeter login state
/// </summary>
/// <param name="slotId">Slot number.</param>
/// <param name="token">Cancellation token.</param>
/// <returns>Login result for the requested slot.</returns>
public async Task<GciPublicModels.GciLoginResult> LoginAsync(
int slotId,
CancellationToken token = default)
{
return gciExternalInterface.LoginOneSlotAsync(slot, token);
EnsureExternalInterface();
if (slotId <= 0)
throw new ArgumentException("Invalid slot id.");
var result = await gciExternalInterface.LoginOneSlotAsync(slotId, token);
log.InfoFormat("{0}: LoginAsync({1}) invoked. Result={2}", Name, slotId, result);
return result;
}
/// <summary>