#ifndef LINUX_CSP_CSPCOOKIE_H_
#define LINUX_CSP_CSPCOOKIE_H_

#include <fsfw/devicehandlers/CookieIF.h>
#include <mission/power/gsDefs.h>

#include <cstddef>
#include <cstdint>

/**
 * @brief	This is the cookie for devices supporting the CSP (CubeSat Space
 * 			Protocol).
 * @author	J. Meier
 */
class CspCookie : public CookieIF {
 public:
  CspCookie(uint16_t maxReplyLength_, uint8_t cspAddress_, uint32_t timeoutMs);
  virtual ~CspCookie();

  void setCspPort(uint8_t port);
  uint8_t getCspPort() const;
  uint16_t getMaxReplyLength();
  GOMSPACE::SpecialRequestTypes getRequest() const;
  void setRequest(GOMSPACE::SpecialRequestTypes request, size_t replyLen);
  size_t getReplyLen() const;
  uint8_t getCspAddress();
  uint32_t getTimeout() const;

 private:
  uint8_t cspPort = 0;
  uint16_t maxReplyLength;
  uint8_t cspAddress;
  size_t replyLen = 0;
  uint32_t timeoutMs;
  GOMSPACE::SpecialRequestTypes reqType;
};

#endif /* LINUX_CSP_CSPCOOKIE_H_ */