#ifndef MISSION_DEVICES_GPSHANDLER_H_
#define MISSION_DEVICES_GPSHANDLER_H_

#include <fsfw/devicehandlers/DeviceHandlerBase.h>

class GPSHandler: public DeviceHandlerBase {
public:
	GPSHandler(object_id_t objectId, object_id_t deviceCommunication,
	        CookieIF* comCookie);
	virtual ~GPSHandler();

protected:

	/* DeviceHandlerBase overrides */
	ReturnValue_t buildTransitionDeviceCommand(
	        DeviceCommandId_t *id) override;
	void doStartUp() override;
	void doShutDown() override;
	ReturnValue_t buildNormalDeviceCommand(
	        DeviceCommandId_t *id) override;
	ReturnValue_t buildCommandFromCommand(
	        DeviceCommandId_t deviceCommand, const uint8_t *commandData,
			size_t commandDataLen) override;
	ReturnValue_t scanForReply(const uint8_t *start, size_t len,
			DeviceCommandId_t *foundId, size_t *foundLen) override;
	ReturnValue_t interpretDeviceReply(DeviceCommandId_t id,
	        const uint8_t *packet) override;

	void fillCommandAndReplyMap() override;
	void modeChanged() override;
	uint32_t getTransitionDelayMs(Mode_t from, Mode_t to) override;
	ReturnValue_t initializeLocalDataPool(localpool::DataPool &localDataPoolMap,
			LocalDataPoolManager &poolManager) override;

private:

};



#endif /* MISSION_DEVICES_GPSHANDLER_H_ */