update
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good

This commit is contained in:
Irini Kosmidou
2022-04-27 18:21:32 +02:00
parent c5683afe9f
commit e11c84a5ed
5 changed files with 47 additions and 34 deletions

View File

@ -156,7 +156,7 @@ void UartTestClass::scexInit() {
std::string devname = "/dev/ul-scex";
#endif
uartCookie = new UartCookie(this->getObjectId(), devname, UartBaudRate::RATE_57600, 4096);
reader->setDebugMode(true);
reader->setDebugMode(false);
ReturnValue_t result = reader->initializeInterface(uartCookie);
if (result != HasReturnvaluesIF::RETURN_OK) {
sif::warning << "UartTestClass::gpsPeriodic: Initializing SCEX reader "
@ -186,9 +186,11 @@ void UartTestClass::scexPeriodic() {
if (cmdSent and not cmdDone) {
uint8_t* decodedPacket = nullptr;
size_t len = 0;
ReturnValue_t result = reader->readReceivedMessage(uartCookie, &decodedPacket, &len);
if (len > 0) {
do {
ReturnValue_t result = reader->readReceivedMessage(uartCookie, &decodedPacket, &len);
if(len == 0){
break;
}
ScexHelper helper;
const uint8_t* helperPtr = decodedPacket;
result = helper.deSerialize(&helperPtr, &len);
@ -197,25 +199,35 @@ void UartTestClass::scexPeriodic() {
}
sif::info << helper << endl;
//ping
//if ping cmd
if(helper.getCmd() == PING) {
ofstream out("/tmp/scex-ping.bin", ofstream::binary );
if (out.bad()) {
sif::warning << "bad" <<std::endl;
// ping
// if ping cmd
if (helper.getCmd() == PING) {
ofstream out("/tmp/scex-ping.bin", ofstream::binary);
if (out.bad()) {
sif::warning << "bad" << std::endl;
}
out << helper;
}
out << helper;
}
//fram
//packetcounter eins h<>her, wenn mehr packet verloren ->
//countdown (max 2min), wenn nicht if (helper.getPacketCounter() == helper.getTotalPacketCounter()) { nach 2min reader->finish();
if(helper.getCmd() == FRAM) {
if(helper.getPacketCounter() == 0) {
ofstream out("/tmp/scex-fram.bin", ofstream::binary ); // neues file anlegen wie oben ping
} else {
ofstream out("/tmp/scex-fram.bin", ofstream::binary | ofstream::app );// an bestehendes file hinzuf<75>gen
out << helper;
}
// 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?
// countdown (max 2min), wenn nicht if (helper.getPacketCounter() ==
// helper.getTotalPacketCounter()) { nach 2min reader->finish();
if (helper.getCmd() == FRAM) {
if (helper.getPacketCounter() == 1) {
//countdown starten
finishCountdown.resetTimer();
ofstream out("/tmp/scex-fram.bin",
ofstream::binary); // neues file anlegen wie oben ping
} else {
ofstream out("/tmp/scex-fram.bin",
ofstream::binary | ofstream::app); // an bestehendes file hinzuf<75>gen
out << helper;
}
if(finishCountdown.hasTimedOut()){
reader->finish();
}
}
if (helper.getPacketCounter() == helper.getTotalPacketCounter()) {
@ -226,7 +238,7 @@ void UartTestClass::scexPeriodic() {
cmdSent = false;
}
}
}
} while (len > 0);
}
}
}
@ -313,8 +325,9 @@ void UartTestClass::scexSimplePeriodic() {
<< errno << ", " << strerror(errno) << "]" << std::endl;
break;
} else if (bytesRead >= static_cast<int>(recBuf.size())) {
sif::debug << "UartTestClass::performPeriodicAction: recv buffer might not be large enough"
<< std::endl;
sif::debug << "UartTestClass::performPeriodicAction: recv buffer might not be large "
"enough, bytes read:"
<< bytesRead << std::endl;
} else if (bytesRead > 0) {
dleParser->passData(recBuf.data(), bytesRead);
if (currCmd == ScexCmds::PING) {