123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- using Edge.Core.Parser.BinaryParser;
- using Edge.Core.Parser.BinaryParser.MessageEntity;
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using VeederRoot_ATG_Console.MessageEntity.Incoming;
- namespace VeederRoot_ATG_Console
- {
- public class MessageTemplateLookup : IMessageTemplateLookup
- {
- public MessageTemplateBase GetMessageTemplateByRawBytes(byte[] bytes)
- {
- // skip SOH, and take 4 digits like i201 or I201.
- string functionCodeString = Encoding.ASCII.GetString(bytes.Skip(1).Take(4).ToArray());
- switch (functionCodeString)
- {
- case "9999":
- return new AtgConsoleCannotUnderstoodPreviousMsgResponse();
- case "i201":
- case "I201": return new QueryInTankInventoryReportResponse();
- case "i205":
- case "I205": return new QueryInTankStatusReportResponse();
- case "i20C":
- case "I20C": return new QueryInTankMostRecentDeliveryReportResponse();
- case "s505":
- case "S505":
- case "i517":
- case "I517":
- case "s517":
- case "S517":
- return new QueryOrSetSystemTypeAndLanguageFlagsResponse();
- case "i607":
- case "I607": return new QueryOrSetTankDiameterResponse();
- case "i602":
- case "I602": return new QueryOrSetTankProductLabelResponse();
- case "s501":
- case "S501":
- case "i501":
- case "I501": return new QueryOrSetTimeOfDayResponse();
- case "i101":
- case "I101": return new QuerySystemStatusReportResponse();
- case "iA01":
- case "IA01": return new QueryInTankDiagnosticReportResponse();
- }
- throw new InvalidOperationException("Unknown incoming message with functionCodeString: " + (functionCodeString ?? ""));
- }
- }
- }
|