Пример #1
0
        void ReceiveFromClientCB(byte[] bytes, object senderId)
        {
            try
            {
                var packet = Packet.Parse(new KaitaiStream(bytes), this);
                //MessageBox.Show(packet.Command.ToString());
                switch (packet.Command)
                {
                case RcpTypes.Command.Version:
                {
                    Log?.Invoke("received: version");
                    SendToOne(Pack(RcpTypes.Command.Version, RCP_PROTOCOL_VERSION), senderId);
                    break;
                }

                case RcpTypes.Command.Update:
                {
                    Log?.Invoke("received: update");
                    var param = packet.Data as Parameter;
                    if (FParams.ContainsKey(param.Id))
                    {
                        SendToMultiple(bytes, senderId);
                    }
                    param.RaiseEvents();
                    break;
                }

                case RcpTypes.Command.Updatevalue:
                {
                    //TODO: actually only set the parameters value
                    Log?.Invoke("received: update value");
                    var param = packet.Data as Parameter;
                    if (FParams.ContainsKey(param.Id))
                    {
                        SendToMultiple(bytes, senderId);
                    }
                    param.RaiseEvents();
                    break;
                }

                case RcpTypes.Command.Initialize:
                {
                    Log?.Invoke("received: init");
                    //client requests all parameters
                    foreach (var param in FParams.Values)
                    {
                        param.ResetForInitialize();
                        SendToOne(Pack(RcpTypes.Command.Update, param), senderId);
                    }
                    break;
                }
                }
            }
            catch (Exception e)
            {
                Trace.TraceError(e.Message);
            }
        }
Пример #2
0
        void ReceiveCB(byte[] bytes)
        {
            //Logger.Log(LogType.Debug, "Client received: " + bytes.Length + "bytes");
            var packet    = Packet.Parse(new KaitaiStream(bytes), this);
            var parameter = packet.Data as Parameter;
            var id        = parameter.Id;

            //Logger.Log(LogType.Debug, packet.Command.ToString());
            switch (packet.Command)
            {
            case RcpTypes.Command.Update:

                if (!FParams.ContainsKey(id))
                {
                    AddParameter(parameter);
                }
                else
                {
                    parameter.RaiseEvents();
                }
                break;

            case RcpTypes.Command.Updatevalue:
                if (FParams.ContainsKey(id))
                {
                    parameter.RaiseEvents();
                }
                break;

            case RcpTypes.Command.Remove:
                if (FParams.ContainsKey(id))
                {
                    RemoveParameter(parameter);
                }
                break;
            }
        }
Пример #3
0
 public override void RemoveParameter(Parameter param)
 {
     FParams.Remove(param.Id);
     FParamsToRemove.Add(param);
 }
Пример #4
0
 public void Initialize()
 {
     FParams.Clear();
     SendPacket(Pack(RcpTypes.Command.Initialize));
 }