public async Task StartAsync(Meter meter, DataSet dataSet, MeterSessionTypeCode sessionType) { MeterSessionSetting meterSessionSetting = (sessionType == MeterSessionTypeCode.Insitu) ? insituMeterSessionSettingRepository.FindOne(new Noanet.XamArch.Domain.EntityPropertyInfo(nameof(RemoteMeterSessionSetting.Name), "Default")) : (MeterSessionSetting)remoteMeterSessionSettingRepository.FindOne(new Noanet.XamArch.Domain.EntityPropertyInfo(nameof(InsituMeterSessionSetting.Name), "Default")); await StartAsync(meter, dataSet, meterSessionSetting); }
public async Task StartAsync(Meter meter, DataSet dataSet, MeterSessionSetting sessionSetting) { CurrentMeterSession = new MeterSession(meter, dataSet) { Guid = Guid.NewGuid(), SessionSetting = sessionSetting ?? throw new ArgumentNullException(nameof(sessionSetting)), StartDate = DateTime.UtcNow }; sessionTracer.Clear(); if (sessionSetting.CommunicationChannelSetting != null) { if ((sessionSetting.CommunicationChannelSetting.BaudRate != BaudRate.BaudRate_9600) || (sessionSetting.CommunicationChannelSetting.NumberOfPackets != ((sessionSetting is InsituMeterSessionSetting) ? InsituSession.DefaultNumberOfPackets : RemoteSession.DefaultNumberOfPackets)) || (sessionSetting.CommunicationChannelSetting.PacketSize != (PacketSize)((sessionSetting is InsituMeterSessionSetting) ? InsituSession.DefaultPacketSize : RemoteSession.DefaultPacketSize))) { negotiationSetting = new NegotiationSetting() { BaudRate = (BaudRateValue)sessionSetting.CommunicationChannelSetting.BaudRate, BaudRateSelector = BaudRateSelector.OneBaudRateRequested, NumberOfPackets = sessionSetting.CommunicationChannelSetting.NumberOfPackets, PacketSize = (short)sessionSetting.CommunicationChannelSetting.PacketSize }; } if ((sessionSetting.CommunicationChannelSetting.ChannelTrafficTimeout != ((sessionSetting is InsituMeterSessionSetting) ? InsituSession.DefaultChannelTrafficTimeout : RemoteSession.DefaultChannelTrafficTimeout)) || (sessionSetting.CommunicationChannelSetting.InterCharacterTimeout != ((sessionSetting is InsituMeterSessionSetting) ? InsituSession.DefaultInterCharacterTimeout : RemoteSession.DefaultInterCharacterTimeout)) || (sessionSetting.CommunicationChannelSetting.ResponseTimeout != ((sessionSetting is InsituMeterSessionSetting) ? InsituSession.DefaultResponseTimeout : RemoteSession.DefaultResponseTimeout)) || (sessionSetting.CommunicationChannelSetting.NumberOfRetries != ((sessionSetting is InsituMeterSessionSetting) ? InsituSession.DefaultRetryAttempts : RemoteSession.DefaultRetryAttempts))) { timingSetting = new TimingSetting() { ChannelTrafficTimeout = sessionSetting.CommunicationChannelSetting.ChannelTrafficTimeout, InterCharacterTimeout = sessionSetting.CommunicationChannelSetting.InterCharacterTimeout, ResponseTimeout = sessionSetting.CommunicationChannelSetting.ResponseTimeout, NumberOfRetries = sessionSetting.CommunicationChannelSetting.NumberOfRetries }; } reconnectionCountdownTimer = (sessionSetting.ReconnectionSchema != null) ? new Timer(OnReconnectionCountDown, null, -1, -1) : null; totalBytesReceived = 0; totalBytesSent = 0; } ansiProtocolSession = CreateProtocolSession(); await ansiProtocolSession.StartAsync(); }