2020-08-28 17:40:53 +02:00
|
|
|
/**
|
|
|
|
* @file Farm1StateOpen.h
|
|
|
|
* @brief This file defines the Farm1StateOpen class.
|
|
|
|
* @date 24.04.2013
|
|
|
|
* @author baetz
|
|
|
|
*/
|
|
|
|
|
|
|
|
#ifndef FARM1STATEOPEN_H_
|
|
|
|
#define FARM1STATEOPEN_H_
|
|
|
|
|
|
|
|
#include "Farm1StateIF.h"
|
|
|
|
|
|
|
|
/**
|
|
|
|
* This class represents the FARM-1 "Open" State.
|
|
|
|
* The Open state is the state of normal operation. It handles all types of frames,
|
|
|
|
* including AD Frames. If a wrong Frame Sequence Number is detected in an AD Frame, the
|
|
|
|
* State reacts as specified.
|
|
|
|
*/
|
|
|
|
class Farm1StateOpen : public Farm1StateIF {
|
|
|
|
private:
|
|
|
|
/**
|
|
|
|
* This is a reference to the "owner" class the State works on.
|
|
|
|
*/
|
|
|
|
VirtualChannelReception* myVC;
|
|
|
|
public:
|
|
|
|
/**
|
|
|
|
* The default constructor if the State.
|
|
|
|
* Sets the "owner" of the State.
|
|
|
|
* @param setMyVC The "owner" class.
|
|
|
|
*/
|
|
|
|
Farm1StateOpen( VirtualChannelReception* setMyVC );
|
|
|
|
/**
|
|
|
|
* Method to check the validity of AD Frames.
|
|
|
|
* It checks the Frame Sequence Number and reacts as specified in the standard. The state may
|
|
|
|
* change to Farm1StateLockout.
|
|
|
|
* @param frame The frame to handle.
|
|
|
|
* @param clcw Any changes to the CLCW shall be done with the help of this interface.
|
|
|
|
* @return If the Sequence Number is ok, it returns #RETURN_OK. Otherwise either #NS_POSITIVE_W,
|
|
|
|
* #NS_NEGATIVE_W or NS_LOCKOUT is returned.
|
|
|
|
*/
|
|
|
|
ReturnValue_t handleADFrame( TcTransferFrame* frame, ClcwIF* clcw );
|
|
|
|
/**
|
|
|
|
* These commands are handled as specified.
|
|
|
|
* State does not change.
|
|
|
|
* @param clcw Any changes to the CLCW shall be done with the help of this interface.
|
|
|
|
* @return As the frame needs no forwarding to a MAP Channel, #BC_IS_UNLOCK_COMMAND
|
|
|
|
* is returned.
|
|
|
|
*/
|
|
|
|
ReturnValue_t handleBCUnlockCommand( ClcwIF* clcw );
|
|
|
|
/**
|
|
|
|
* These commands are handled as specified.
|
|
|
|
* State does not change.
|
|
|
|
* @param clcw Any changes to the CLCW shall be done with the help of this interface.
|
|
|
|
* @param vr The V(r) value found in the frame.
|
|
|
|
* @return As the frame needs no forwarding to a MAP Channel, #BC_IS_SET_VR_COMMAND
|
|
|
|
* is returned.
|
|
|
|
*/
|
|
|
|
ReturnValue_t handleBCSetVrCommand( ClcwIF* clcw, uint8_t vr );
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
#endif /* FARM1STATEOPEN_H_ */
|