2021-07-13 20:58:45 +02:00
|
|
|
#include "fsfw/datalinklayer/Farm1StateWait.h"
|
2022-02-02 10:29:30 +01:00
|
|
|
|
|
|
|
#include "fsfw/datalinklayer/ClcwIF.h"
|
2021-07-13 20:58:45 +02:00
|
|
|
#include "fsfw/datalinklayer/TcTransferFrame.h"
|
|
|
|
#include "fsfw/datalinklayer/VirtualChannelReception.h"
|
2016-06-15 23:48:41 +02:00
|
|
|
|
2022-02-02 10:29:30 +01:00
|
|
|
Farm1StateWait::Farm1StateWait(VirtualChannelReception* setMyVC) : myVC(setMyVC) {}
|
2016-06-15 23:48:41 +02:00
|
|
|
|
2022-02-02 10:29:30 +01:00
|
|
|
ReturnValue_t Farm1StateWait::handleADFrame(TcTransferFrame* frame, ClcwIF* clcw) {
|
|
|
|
int8_t diff = frame->getSequenceNumber() - myVC->vR;
|
|
|
|
if (diff < -myVC->negativeWindow || diff >= myVC->positiveWindow) {
|
|
|
|
clcw->setLockoutFlag(true);
|
|
|
|
myVC->currentState = &(myVC->lockoutState);
|
|
|
|
}
|
|
|
|
return FARM_IN_WAIT;
|
2016-06-15 23:48:41 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
ReturnValue_t Farm1StateWait::handleBCUnlockCommand(ClcwIF* clcw) {
|
2022-02-02 10:29:30 +01:00
|
|
|
myVC->farmBCounter++;
|
|
|
|
clcw->setRetransmitFlag(false);
|
|
|
|
clcw->setWaitFlag(false);
|
|
|
|
myVC->currentState = &(myVC->openState);
|
|
|
|
return BC_IS_UNLOCK_COMMAND;
|
2016-06-15 23:48:41 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
ReturnValue_t Farm1StateWait::handleBCSetVrCommand(ClcwIF* clcw, uint8_t vr) {
|
2022-02-02 10:29:30 +01:00
|
|
|
myVC->farmBCounter++;
|
|
|
|
clcw->setWaitFlag(false);
|
|
|
|
clcw->setRetransmitFlag(false);
|
|
|
|
myVC->vR = vr;
|
|
|
|
myVC->currentState = &(myVC->openState);
|
|
|
|
return BC_IS_SET_VR_COMMAND;
|
2016-06-15 23:48:41 +02:00
|
|
|
}
|