Mini8Provider.cs 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. namespace MinicsConsole.Helper.RawDataFilter;
  2. public class Mini8Provider : IMini8Provider, IMini8DataFilter
  3. {
  4. public Mini8Provider(byte mini8Index, ILog log, BasicInfo basicInfo, IDictionary<byte, ChannelData> channels, Mini8DataDispatcher dataDispatcher)
  5. {
  6. this._log = log;
  7. this._channels = channels;
  8. this._mini8Index = mini8Index;
  9. this._dataDispatcher = dataDispatcher;
  10. ChannelDataBaseHelper dataBaseHelper = new(mini8Index, log);
  11. Mini8DataQueue mini8DataQueue = new();
  12. AutoApplyAutoTurnLayer applyAutoTurn = new(mini8Index, log);
  13. Mini8DataRecorderLayer dataRecorder = new(mini8Index, log, dataDispatcher) { DataBaseHelper = dataBaseHelper };
  14. AlarmHelperLayer alarmHelper = new(mini8Index, log, basicInfo, dataDispatcher) { DataBaseHelper = dataBaseHelper };
  15. _ = (IMini8DataFilter)this >> mini8DataQueue >> dataRecorder >> applyAutoTurn >> alarmHelper;
  16. this._DataBaseHelper = dataBaseHelper;
  17. this._ApplyAutoTurnLayer = applyAutoTurn;
  18. }
  19. private readonly ILog _log;
  20. private readonly byte _mini8Index;
  21. private readonly Mini8DataDispatcher _dataDispatcher;
  22. private readonly ChannelDataBaseHelper _DataBaseHelper;
  23. private readonly IDictionary<byte, ChannelData> _channels;
  24. private readonly AutoApplyAutoTurnLayer _ApplyAutoTurnLayer;
  25. public bool IsConnect { get; private set; } = false;
  26. public IDataSender? NextSender { get; set; }
  27. public IORM ORM { set { _DataBaseHelper.SetORM(value); } }
  28. public IMini8Communicator Mini8Communicator { set { _ApplyAutoTurnLayer.Sender = value; } }
  29. void IMini8Provider.ChannelInfoNotify(byte channel, Mini8Output mini8Output)
  30. {
  31. if (!_channels.TryGetValue(channel, out ChannelData? channelData) || channelData is null)
  32. return;
  33. this.NextSender?.Send(mini8Output, channelData, default);
  34. }
  35. void IMini8ConnectNotify.OnConnected(string IP, int port)
  36. {
  37. this.IsConnect = true;
  38. this._log.Info($"{IP}:{port} Connected");
  39. this._dataDispatcher.Mini8Connect(_mini8Index);
  40. }
  41. void IMini8ConnectNotify.OnDisconnected(string IP, int port)
  42. {
  43. this.IsConnect = false;
  44. this._log.Warning($"{IP}:{port} Disconnected");
  45. this._dataDispatcher.Mini8Disconnect(_mini8Index);
  46. }
  47. }