private void BeginPrinterEventProcessing() { List <string> eventQueue = new List <string>(); eventQueue.InsertRange(0, SerialDataQueue); SerialDataQueue.Clear(); PrinterEvent newEvent = EventParse(eventQueue); PrinterEvent newprinterEvent = PrinterEvent.Parse(newEvent); BeginEventPaging(newprinterEvent); }
private static void SetEventType(PrinterEvent newPrinterEvent) { string eventType = newPrinterEvent.RawEventData[0].Substring(0, newPrinterEvent.RawEventData[0].IndexOf(" ")).Trim(); string squishedEventType = eventType.Replace(" ", string.Empty); if (!Enum.TryParse(squishedEventType, out Type printerEventType)) { printerEventType = Type.NonAlarm; } newPrinterEvent.EventType = printerEventType; }
private static void SetCategory(PrinterEvent newPrinterEvent) { string eventType = newPrinterEvent.RawEventData[0].Substring(0, newPrinterEvent.RawEventData[0].IndexOf(" ")).Trim(); switch (newPrinterEvent.EventType) { case Type.FIREALARM: case Type.SUPERVISORY: case Type.SECURITYALARM: newPrinterEvent.EventCategory = Category.Active; break; case Type.NonAlarm: string firstWord; if (eventType.Contains(" ")) { firstWord = eventType.Substring(0, eventType.IndexOf(" ")).Trim(); } else { firstWord = eventType.Trim(); } switch (firstWord) { case "BLOCK": case "ACKNOWLEDGED": case "ACKED": newPrinterEvent.EventCategory = Category.Acknowledge; break; case "CLEARED": newPrinterEvent.EventCategory = Category.Normal; break; case "TROUBLE": newPrinterEvent.EventCategory = Category.Trouble; break; case "DISABLED": newPrinterEvent.EventCategory = Category.Disable; break; default: newPrinterEvent.EventCategory = Category.Info; break; } break; default: break; } }
private void BeginEventPaging(PrinterEvent newPrinterEvent) { ShortMessageService smsPacket = CreateSmsPacket(newPrinterEvent, EmailAddress); if (!string.IsNullOrEmpty(smsPacket.Message)) { if (PagingEnabled) { ShortMessageService.Send(smsPacket); } WriteToRawConsole($"{smsPacket.ViaEmailAddress} [SUB: {smsPacket.Subject}] [MSG: {smsPacket.Message}]"); } }
private static ShortMessageService CreateSmsPacket(PrinterEvent newPrinterEvent, string emailAddress) { var newPacket = new ShortMessageService { ViaEmailAddress = emailAddress, }; newPacket.Subject = newPrinterEvent.Status; while (newPacket.Subject.Contains(" ")) { newPacket.Subject = newPacket.Subject.Replace(" ", " "); } newPacket.Message = newPrinterEvent.ToString(); return(newPacket); }
public static PrinterEvent Parse(PrinterEvent newPrinterEvent) { if (newPrinterEvent == null) { return(newPrinterEvent); } if (newPrinterEvent.RawEventData.Count == 1) { var tempLine = newPrinterEvent.RawEventData[0]; newPrinterEvent.RawEventData[0] = tempLine.Substring(0, 40) + new string(' ', 40); newPrinterEvent.RawEventData.Add(new string(' ', 40) + tempLine.Substring(40)); } SetScope(newPrinterEvent); SetEventType(newPrinterEvent); SetCategory(newPrinterEvent); return(newPrinterEvent); }
public PrinterEvent EventParse(List <string> queue) { var eventLines = new List <string>(); eventLines.InsertRange(0, queue); if (eventLines[0].Length > 80) { if (eventLines[0].StartsWith("FIRE ALARM")) { var tempString = eventLines[0].Substring(80); eventLines[0] = tempString; } } eventLines[0] += new string(' ', 41); eventLines[1] += new string(' ', 80); var newPrinterEvent = new PrinterEvent(); newPrinterEvent.Status = eventLines[0].Substring(0, 41).Trim(); // time is missing the 'M'. Must be added for proper DateTime processing. string tempTime = eventLines[1].Substring(41, 10).Trim(); string ModifiedTempTime = $"{tempTime}M"; // combine date and time into a DateTime string tempDate = eventLines[1].Substring(55, 13).Trim(); var tempDateTime = DateTime.Parse($"{tempDate} {ModifiedTempTime}"); newPrinterEvent.SourceAddress = eventLines[1].Substring(68).Trim(); newPrinterEvent.SourceNode = eventLines[1].Substring(68, 4).Trim(); newPrinterEvent.FullDateTime = tempDateTime; newPrinterEvent.RawEventData = eventLines; SendToClients(newPrinterEvent.ToString(), newPrinterEvent.SourceNode); return(newPrinterEvent); }
private static void SetScope(PrinterEvent newPrinterEvent) { switch (newPrinterEvent.SourceAddress.Length) { case 11: newPrinterEvent.EventScope = Scope.Device; break; case 9: if (newPrinterEvent.SourceAddress.Substring(4).StartsWith("L")) { newPrinterEvent.EventScope = Scope.LogicZone; } else { newPrinterEvent.EventScope = Scope.ReleasingZone; } break; case 8: newPrinterEvent.EventScope = Scope.Zone; break; case 7: newPrinterEvent.EventScope = Scope.Bell; break; case 4: newPrinterEvent.EventScope = Scope.Node; break; default: newPrinterEvent.EventScope = Scope.System; break; } }