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; } } } }
public void Setup() { this.receiveBufBuildingPck = new byte[DataPckTypes.DataPckSendRecvSize]; this.transAction = TransmissionAction.WaitingDataPckSend; this.sendTicks = 0; this.failedSendsLastProgress = 0; this.rawDataPack = new List <byte>(); }
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++; } }
private void SendTransmissionToArduino(TransmissionAction action) { serialPort.WriteLine(((int)action).ToString()); }