#include "GyroL3GD20Dummy.h"

#include "fsfw_hal/devicehandlers/devicedefinitions/GyroL3GD20Definitions.h"

GyroL3GD20Dummy::GyroL3GD20Dummy(object_id_t objectId, object_id_t comif, CookieIF *comCookie)
    : DeviceHandlerBase(objectId, comif, comCookie) {}

GyroL3GD20Dummy::~GyroL3GD20Dummy() {}

void GyroL3GD20Dummy::doStartUp() {}

void GyroL3GD20Dummy::doShutDown() {}

ReturnValue_t GyroL3GD20Dummy::buildNormalDeviceCommand(DeviceCommandId_t *id) {
  return NOTHING_TO_SEND;
}

ReturnValue_t GyroL3GD20Dummy::buildTransitionDeviceCommand(DeviceCommandId_t *id) {
  return NOTHING_TO_SEND;
}

ReturnValue_t GyroL3GD20Dummy::buildCommandFromCommand(DeviceCommandId_t deviceCommand,
                                                       const uint8_t *commandData,
                                                       size_t commandDataLen) {
  return returnvalue::OK;
}

ReturnValue_t GyroL3GD20Dummy::scanForReply(const uint8_t *start, size_t len,
                                            DeviceCommandId_t *foundId, size_t *foundLen) {
  return returnvalue::OK;
}

ReturnValue_t GyroL3GD20Dummy::interpretDeviceReply(DeviceCommandId_t id, const uint8_t *packet) {
  return returnvalue::OK;
}

void GyroL3GD20Dummy::fillCommandAndReplyMap() {}

uint32_t GyroL3GD20Dummy::getTransitionDelayMs(Mode_t modeFrom, Mode_t modeTo) { return 500; }

ReturnValue_t GyroL3GD20Dummy::initializeLocalDataPool(localpool::DataPool &localDataPoolMap,
                                                       LocalDataPoolManager &poolManager) {
  localDataPoolMap.emplace(L3GD20H::ANG_VELOC_X, new PoolEntry<float>({1.2}, true));
  localDataPoolMap.emplace(L3GD20H::ANG_VELOC_Y, new PoolEntry<float>({-0.1}, true));
  localDataPoolMap.emplace(L3GD20H::ANG_VELOC_Z, new PoolEntry<float>({0.7}, true));
  localDataPoolMap.emplace(L3GD20H::TEMPERATURE, new PoolEntry<float>({0.0}));
  return returnvalue::OK;
}