123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 |
- using Dfs.WayneChina.GilbarcoDispenserPayTerminal.MessageEntities;
- using Edge.Core.IndustryStandardInterface.Pump;
- using Edge.Core.Processor;
- using System;
- using System.Collections;
- using System.Collections.Generic;
- using System.Text;
- using System.Threading.Tasks;
- using Wayne.FDCPOSLibrary;
- namespace Dfs.WayneChina.GilbarcoDispenserPayTerminal
- {
- public class GilbarcoPayTerminalHandler : IEnumerable<IFdcPumpController>, IDeviceHandler<byte[], CardMessageBase>
- {
- public byte PumpId { get; set; }
- private IContext<byte[], CardMessageBase> _context;
- public event EventHandler<TerminalMessageEventArgs> OnTerminalMessageReceived;
- private GilbarcoPumpHandler pumpHandler;
- public byte Address { get; }
- public byte TerminalAddress { get; }
- private List<GilbarcoPumpHandler> pumpHandlers = new List<GilbarcoPumpHandler>();
- #region Logger
- private static NLog.Logger logger = NLog.LogManager.LoadConfiguration("NLog.config").GetLogger("IPosPlusApp");
- #endregion
- public GilbarcoPayTerminalHandler(int pumpId, int address, int terminalAddress)
- {
- PumpId = Convert.ToByte(pumpId);
- Address = Convert.ToByte(address);
- TerminalAddress = Convert.ToByte(terminalAddress);
- pumpHandler = new GilbarcoPumpHandler(pumpId);
- pumpHandlers = new List<GilbarcoPumpHandler>();
- pumpHandlers.Add(pumpHandler);
- }
- public void Init(IContext<byte[], CardMessageBase> context)
- {
- _context = context;
- }
- public Task Process(IContext<byte[], CardMessageBase> context)
- {
- OnTerminalMessageReceived.Invoke(this, new TerminalMessageEventArgs(PumpId, context.Incoming.Message));
- return Task.CompletedTask;
- }
- public void Write(CardMessageBase cardMessage)
- {
- _context.Outgoing.Write(cardMessage);
- }
- public async Task<CardMessageBase> WriteAsync(CardMessageBase request,
- Func<CardMessageBase, CardMessageBase, bool> responseCapture,
- int timeout)
- {
- var resp = await _context.Outgoing.WriteAsync(request, responseCapture, timeout);
- return resp;
- }
- public void UpdatePumpState(LogicalDeviceState state)
- {
- logger.Info($"Update pump {PumpId} state, {state}");
- pumpHandler.FirePumpStateChange(state);
- }
- public void UpdateFuelingStatus(FdcTransaction fdcTransaction)
- {
- logger.Info($"Update pump {PumpId} fueling status");
- pumpHandler.FireFuelingStatusChange(fdcTransaction);
- }
- public IEnumerator<IFdcPumpController> GetEnumerator()
- {
- return pumpHandlers.GetEnumerator();
- }
- IEnumerator IEnumerable.GetEnumerator()
- {
- return pumpHandlers.GetEnumerator();
- }
- IEnumerator<IFdcPumpController> IEnumerable<IFdcPumpController>.GetEnumerator()
- {
- return pumpHandlers.GetEnumerator();
- }
- }
- }
|