Exemple #1
0
 internal void SendFrame(KnxFrame frame)
 {
     lock (_lock)
     {
         Sender.SendFrame(frame);
     }
 }
        internal override bool SendFrame(KnxFrame frame)
        {
            var byteFrame = frame.ToFrame();

            KnxHelper.Logger.LogTrace($"Writing {frame}");
            KnxHelper.Logger.LogHexOut(byteFrame);

            var length = _client?.Send(byteFrame, byteFrame.Length);

            return(length == byteFrame.Length);
        }
Exemple #3
0
        internal override bool SendFrame(KnxFrame frame)
        {
            var byteFrame = frame.ToFrame();

            KnxHelper.Logger.LogTrace($"Writing {frame}");
            KnxHelper.Logger.LogHexOut(byteFrame);

            try
            {
                var length = _client?.Send(byteFrame, byteFrame.Length);

                return(length == byteFrame.Length);
            }
            catch (Exception e)
            {
                KnxHelper.Logger.LogError(e, "Error writing value...");
            }

            return(false);
        }
Exemple #4
0
        internal virtual void HandleFrame(KnxFrame frame)
        {
            _heartbeatMonitor.Reset();

            switch (frame.ServiceType)
            {
            case KnxHelper.ServiceType.SearchRequest:
                break;

            case KnxHelper.ServiceType.SearchResponse:
                break;

            case KnxHelper.ServiceType.DescriptionRequest:
                break;

            case KnxHelper.ServiceType.DescriptionResponse:
                break;

            case KnxHelper.ServiceType.ConnectRequest:
                break;

            case KnxHelper.ServiceType.ConnectResponse:
                var connectResponse = (ConnectResponseFrame)frame;
                if (connectResponse.IsValid)
                {
                    IndividualAddress = connectResponse.IndividualAddress;
                    Connected         = true;
                    SetSequenceNumber(0);
                    ChannelId = connectResponse.ChannelId;

                    OnConnected?.Invoke(this, EventArgs.Empty);
                }
                else
                {
                    OnDisconnected?.Invoke(this, EventArgs.Empty);
                    Connected = false;
                }
                break;

            case KnxHelper.ServiceType.ConnectionstateRequest:
                break;

            case KnxHelper.ServiceType.ConnectionstateResponse:
                break;

            case KnxHelper.ServiceType.DisconnectRequest:
                SendFrame(new DisconnectResponseFrame(this));
                Connected = false;
                OnDisconnected?.Invoke(this, EventArgs.Empty);
                break;

            case KnxHelper.ServiceType.DisconnectResponse:
                break;

            case KnxHelper.ServiceType.DeviceConfigurationRequest:
                break;

            case KnxHelper.ServiceType.DeviceConfigurationAck:
                break;

            case KnxHelper.ServiceType.TunnellingRequest:
                var p   = (TunnelingRequestFrame)frame;
                var ack = new TunnelingAckFrame(this, p.FrameSequenceNumber);
                SendFrame(ack);

                if (KnxHelper.ProcessCemi(p.Datagram, p.CemiPacket))
                {
                    OnDatagramReceived?.Invoke(this, new KnxDatgramEventArgs(p.Datagram));
                }

                break;

            case KnxHelper.ServiceType.TunnellingAck:
                break;

            case KnxHelper.ServiceType.RoutingIndication:
                break;

            case KnxHelper.ServiceType.RoutingLostMessage:
                break;

            case KnxHelper.ServiceType.SecureWrapper:
                break;

            case KnxHelper.ServiceType.SessionRequest:
                break;

            case KnxHelper.ServiceType.SessionResponse:
                break;

            case KnxHelper.ServiceType.SessionAuthenticate:
                break;

            case KnxHelper.ServiceType.SessionStatus:
                break;

            case KnxHelper.ServiceType.TimerNotify:
                break;

            case KnxHelper.ServiceType.Unknown:
                break;
            }
        }
Exemple #5
0
 internal abstract bool SendFrame(KnxFrame frame);