diff --git a/linux/boardtest/UartTestClass.cpp b/linux/boardtest/UartTestClass.cpp index 2e1a195c..1fa6a10c 100644 --- a/linux/boardtest/UartTestClass.cpp +++ b/linux/boardtest/UartTestClass.cpp @@ -188,8 +188,8 @@ void UartTestClass::scexPeriodic() { size_t len = 0; do { ReturnValue_t result = reader->readReceivedMessage(uartCookie, &decodedPacket, &len); - if(len == 0){ - break; + if (len == 0) { + break; } ScexHelper helper; const uint8_t* helperPtr = decodedPacket; @@ -210,15 +210,19 @@ void UartTestClass::scexPeriodic() { } // fram // packetcounter eins höher, wenn mehr packet verloren -> merkt sich welches packet fehlt - //was wenn erstes packet fehlt; mit boolean var (firstpacketarrived=false) die immer mit finish false wird? + // was wenn erstes packet fehlt; mit boolean var (firstpacketarrived=false) die immer mit + // finish false wird? // countdown (max 2min), wenn nicht if (helper.getPacketCounter() == // helper.getTotalPacketCounter()) { nach 2min reader->finish(); if (helper.getCmd() == FRAM) { + if (not fileNameSet) { + fileId = gen_random(12); + fileName = "/tmp/scex-fram_" + fileId + ".bin"; + fileNameSet = true; + } if (helper.getPacketCounter() == 1) { - //countdown starten - finishCountdown.resetTimer(); - fileId = gen_random(12); - fileName = "/tmp/scex-fram_"+fileId+".bin"; + // countdown starten + finishCountdown.resetTimer(); ofstream out(fileName, ofstream::binary); // neues file anlegen } else { @@ -227,8 +231,11 @@ void UartTestClass::scexPeriodic() { out << helper; } - if(finishCountdown.hasTimedOut()){ - reader->finish(); + if (finishCountdown.hasTimedOut()) { + reader->finish(); + sif::warning << "Reader countdown expired" << endl; + cmdDone = true; + fileNameSet = false; } } @@ -236,8 +243,10 @@ void UartTestClass::scexPeriodic() { reader->finish(); sif::info << "Reader is finished" << endl; cmdDone = true; + fileNameSet = false; if (helper.getCmd() == scex::ScexCmds::PING) { cmdSent = false; + fileNameSet = true; // to not generate everytime new file } } } while (len > 0); @@ -374,17 +383,17 @@ void UartTestClass::handleFoundDlePacket(uint8_t* packet, size_t len) { } std::string UartTestClass::gen_random(const int len) { - static const char alphanum[] = - "0123456789" - "ABCDEFGHIJKLMNOPQRSTUVWXYZ" - "abcdefghijklmnopqrstuvwxyz"; + static const char alphanum[] = + "0123456789" + "ABCDEFGHIJKLMNOPQRSTUVWXYZ" + "abcdefghijklmnopqrstuvwxyz"; - std::string tmp_s; - tmp_s.reserve(len); + std::string tmp_s; + tmp_s.reserve(len); - for (int i = 0; i < len; ++i) { - tmp_s += alphanum[rand() % (sizeof(alphanum) - 1)]; - } + for (int i = 0; i < len; ++i) { + tmp_s += alphanum[rand() % (sizeof(alphanum) - 1)]; + } - return tmp_s; + return tmp_s; } diff --git a/linux/boardtest/UartTestClass.h b/linux/boardtest/UartTestClass.h index dad9152e..8c6bc22f 100644 --- a/linux/boardtest/UartTestClass.h +++ b/linux/boardtest/UartTestClass.h @@ -50,6 +50,7 @@ class UartTestClass : public TestTask { std::string fileId = ""; std::string fileName = ""; + bool fileNameSet = false; Countdown finishCountdown = Countdown(180 * 1000); bool cmdSent = false; bool cmdDone = false;