#ifndef MISSION_RMAP_RMAPDEVICECOMMUNICATIONINTERFACE_H_ #define MISSION_RMAP_RMAPDEVICECOMMUNICATIONINTERFACE_H_ #include "../devicehandlers/DeviceCommunicationIF.h" /** * @brief This class is a implementation of a DeviceCommunicationIF for RMAP calls. It expects RMAPCookies or a derived class of RMAPCookies * * @details The open, close and reOpen calls are mission specific * The open call might return any child of RMAPCookies * * \ingroup rmap */ class RmapDeviceCommunicationIF: public DeviceCommunicationIF { public: virtual ~RmapDeviceCommunicationIF(); /** * This method is mission specific as the open call will return a mission specific cookie * * @param cookie A cookie, can be mission specific subclass of RMAP Cookie * @param address The address of the RMAP Cookie * @param maxReplyLen Maximum length of expected reply * @return */ virtual ReturnValue_t open(CookieIF **cookie, uint32_t address, uint32_t maxReplyLen) = 0; /** * Use an existing cookie to open a connection to a new DeviceCommunication. * The previous connection must not be closed. * If the returnvalue is not RETURN_OK, the cookie is unchanged and * can be used with the previous connection. * * @param cookie * @param address * @param maxReplyLen * @return */ virtual ReturnValue_t reOpen(CookieIF *cookie, uint32_t address, uint32_t maxReplyLen) = 0; /** * Closing call of connection and memory free of cookie. Mission dependent call * @param cookie */ virtual void close(CookieIF *cookie) = 0; //SHOULDDO can data be const? /** * * * @param cookie Expects an RMAPCookie or derived from RMAPCookie Class * @param data Data to be send * @param len Length of the data to be send * @return - Return codes of RMAP::sendWriteCommand() */ virtual ReturnValue_t sendMessage(CookieIF *cookie, uint8_t *data, uint32_t len); virtual ReturnValue_t getSendSuccess(CookieIF *cookie); virtual ReturnValue_t requestReceiveMessage(CookieIF *cookie); virtual ReturnValue_t readReceivedMessage(CookieIF *cookie, uint8_t **buffer, uint32_t *size); virtual ReturnValue_t setAddress(CookieIF *cookie, uint32_t address); virtual uint32_t getAddress(CookieIF *cookie); virtual ReturnValue_t setParameter(CookieIF *cookie, uint32_t parameter); virtual uint32_t getParameter(CookieIF *cookie); }; #endif /* MISSION_RMAP_RMAPDEVICECOMMUNICATIONINTERFACE_H_ */