private void DispatchQueryRegisterMessage(ProtocolMessage protocolMessage) { QueryRegisterMessage response = new QueryRegisterMessage(protocolMessage); if (response.Value == null) { // Error reading occured! throw new ArgumentException("Error reading occured"); } if (this.Nodes.All(x => x.Id != protocolMessage.ControllerID)) { throw new ArgumentException("No node found for the msg"); } CpuNode node = this.Nodes.First(x => x.Id == protocolMessage.ControllerID); MessageCodec.GetControlByteValues(node.ProtocolVersion, response.Control, out ReadWrite readWrite, out Source source, out int derefDepth); Register r = node.EmbeddedConfig.GetRegister(response.Offset, readWrite); if (r == null) { throw new ArgumentException("No register found with this offset or readwrite"); } NewValueReceived(this, new ValueReceivedEventArgs(RegisterValue.GetRegisterValueByVariableType(r.VariableType, response.Value), r, node)); }