Example #1
0
        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);
        }
Example #2
0
        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;
        }
Example #3
0
        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;
            }
        }
Example #4
0
        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}]");
            }
        }
Example #5
0
        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);
        }
Example #6
0
        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);
        }
Example #7
0
        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);
        }
Example #8
0
        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;
            }
        }