Пример #1
0
 private static void Sensor_MessageReceived(MrsMessage message, string marsName)
 {
     if (message is CommandMessage commandMessage)
     {
         string command = commandMessage.Command.Item.ToString();
         Console.WriteLine($"{message.MrsMessageType} ({command}) received from {marsName}");
     }
     else
     {
         Console.WriteLine($"{message.MrsMessageType} received from {marsName}");
     }
 }
Пример #2
0
 private void Sensor_MessageReceived(MrsMessage message, string marsName)
 {
     Console.WriteLine($"{message.MrsMessageType} received from {marsName}");
     if (message.MrsMessageType == MrsMessageTypes.CommandMessage)
     {
         if (message is CommandMessage commandMessage &&
             (SimpleCommandType)commandMessage.Command.Item != SimpleCommandType.KeepAlive)
         {
             // find the sensor the command is for
             var deviceSensor = _device.Sensors.FirstOrDefault(s =>
                                                               s.SensorIdentification.Equals(commandMessage.SensorIdentification));
             _device.SendCommandMessage(commandMessage.Command, deviceSensor);
         }
     }
 }
Пример #3
0
        private void Device_MessageReceived(object sender, MrsMessage e)
        {
            Device dvc = (Device)sender;

            Console.WriteLine($"{e.MrsMessageType} received from {dvc.DeviceIP}:{dvc.DevicePort}");
            switch (e.MrsMessageType)
            {
            case MrsMessageTypes.DeviceConfiguration:
                // save config
                _deviceConfiguration = (DeviceConfiguration)e;
                // override ip and port
                _deviceConfiguration.NotificationServiceIPAddress = _configuration.ListenIP;
                _deviceConfiguration.NotificationServicePort      = _configuration.ListenPort.ToString();
                break;

            case MrsMessageTypes.DeviceStatusReport:
                // save status
                // if status contain already values - update
                _statusReport =
                    (DeviceStatusReport)(_statusReport == null
                            ? e
                            : _statusReport.UpdateValues(e));
                if (_sensor == null)
                {
                    // now that we have config and status, start the sensor (listening side)
                    _sensor = new Sensor(_deviceConfiguration, _statusReport)
                    {
                        ValidateMessages = false
                    };
                    _sensor.MessageSent            += Sensor_MessageSent;
                    _sensor.MessageReceived        += Sensor_MessageReceived;
                    _sensor.ValidationErrorOccured += Sensor_ValidationErrorOccured;
                    Console.WriteLine("Starting sensor...");
                    _sensor.Start();
                    Console.WriteLine($"Sensor started on {_sensor.IP}:{_sensor.Port}");
                }

                break;

            case MrsMessageTypes.DeviceIndicationReport:
                var indicationReport = (DeviceIndicationReport)e;
                _sensor?.RegisterIndications(ExtractIndications(indicationReport));
                break;
            }
        }
Пример #4
0
 private static void Sensor_MessageSent(MrsMessage message, string marsName)
 {
     Console.WriteLine($"{message.MrsMessageType} sent to {marsName}");
 }
Пример #5
0
 /// <summary>
 /// Class Constructor
 /// </summary>
 /// <param name="message"></param>
 /// <param name="innerException"></param>
 public InvalidMessageException(MrsMessage message, Exception innerException) : base(innerException.Message, innerException)
 {
     MarsMessage = message;
 }
Пример #6
0
        private void Device_MessageSent(object sender, MrsMessage e)
        {
            Device dvc = (Device)sender;

            Console.WriteLine($"{e.MrsMessageType} sent to {dvc.DeviceIP}:{dvc.DevicePort}");
        }