Beispiel #1
0
        private void ProcessNewDataPck(DecodedDataPck dataPck)
        {
            if (dataPck.DataPck != null && dataPck.Status == DecodeStatus.Complete)
            {
                switch (dataPck.DataPck.Type)
                {
                case DataPckTypes.DataPcks.SendConf:
                {
                    if (this.transAction == TransmissionAction.WaitingAck)
                    {
                        this.transAction = TransmissionAction.WaitingDataPckSend;
                    }
                    break;
                }

                default:
                {
                    if (dataPck.DataPck.AckRequired == DataPckTypes.True)
                    {
                        //Send Ack
                        this.SendDataPck(new ReSendDataPckController(DataPckTypes.False)
                            {
                                CrcController = new CRC32()
                            }.GetByteArray());
                    }

                    //Push the new message onto the recv queue for the message processing obj
                    this.recvQueue.Add(new QuadRecvPck(dataPck.DataPck, dataPck.DataPckCrc));

                    break;
                }
                }
            }
        }
Beispiel #2
0
 public void Setup()
 {
     this.receiveBufBuildingPck   = new byte[DataPckTypes.DataPckSendRecvSize];
     this.transAction             = TransmissionAction.WaitingDataPckSend;
     this.sendTicks               = 0;
     this.failedSendsLastProgress = 0;
     this.rawDataPack             = new List <byte>();
 }
Beispiel #3
0
        private void TransmitAction()
        {
            if (this.sendTicks >= TicksBetweenSends)
            {
                switch (this.transAction)
                {
                case TransmissionAction.WaitingAck:
                {
                    this.failedSendsLastProgress++;
                    this.SendDataPck(dataPckSent.Data);
                    break;
                }

                case TransmissionAction.WaitingDataPckSend:
                {
                    if (this.postQueue.Any())
                    {
                        if (this.postQueue.Remove(out dataPckSent))
                        {
                            if (dataPckSent.Ackrequired)
                            {
                                this.transAction = TransmissionAction.WaitingAck;
                            }
                            else
                            {
                                this.transAction = TransmissionAction.WaitingDataPckSend;
                            }

                            this.SendDataPck(dataPckSent.Data);
                        }
                    }
                    break;
                }
                }

                this.sendTicks = 0;
            }
            else
            {
                this.sendTicks++;
            }
        }
Beispiel #4
0
 private void SendTransmissionToArduino(TransmissionAction action)
 {
     serialPort.WriteLine(((int)action).ToString());
 }