Example #1
0
        public void ClearWaitResponseTimeoutTimer(Interfaces.IPacket packet)
        {
            if (waitResponseTimeoutTimer == null)
            {
                return;
            }

            waitResponseTimeoutTimer.Enabled = false;
            waitResponseTimeoutTimer.Stop();
            TransporterState = TransporterState.Ready;
        }
Example #2
0
        private void SetWaitResponseTimeoutTimer(Interfaces.IPacket packet)
        {
            if (waitResponseTimeoutTimer == null)
            {
                waitResponseTimeoutTimer          = new Timer(packet.Timeout);
                waitResponseTimeoutTimer.Elapsed += ResponseTimeoutElapsed;
            }

            TransporterState = TransporterState.WaitingResponse;
            waitResponseTimeoutTimer.Interval = packet.Timeout;
            waitResponseTimeoutTimer.Enabled  = true;
            waitResponseTimeoutTimer.Start();
        }
Example #3
0
        protected virtual void Transporter_DataReceivedEvent(object sender, byte[] bytesReceived)
        {
            if (lastSentPacket.Timeout > 0 && TransporterState == TransporterState.WaitingResponse)
            {
                if (lastSentPacket.IsExpectedResponse(bytesReceived))
                {
                    TransporterState = TransporterState.Ready;
                    ClearWaitResponseTimeoutTimer(null);
                }
            }

            TransportDataReceived?.Invoke(this, new Packet()
            {
                Data = bytesReceived
            });
        }
Example #4
0
        public bool Send(Interfaces.IPacket packet)
        {
            if (packet.Data == null || TransporterState != TransporterState.Ready)
            {
                return(false);
            }

            TransporterState = TransporterState.TransferingData;
            var ret = transport.Write(packet.Data);

            lastSentPacket = packet;

            if (ret && lastSentPacket.Timeout > 0)
            {
                SetWaitResponseTimeoutTimer(lastSentPacket);
            }
            else
            {
                TransporterState = TransporterState.Ready;
            }

            return(ret);
        }