/** * @file Farm1StateOpen.h * @brief This file defines the Farm1StateOpen class. * @date 24.04.2013 * @author baetz */ #ifndef FARM1STATEOPEN_H_ #define FARM1STATEOPEN_H_ #include /** * 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_ */