#include "RadSensorDummy.h"

RadSensorDummy::RadSensorDummy(object_id_t objectId, object_id_t comif, CookieIF *comCookie)
    : DeviceHandlerBase(objectId, comif, comCookie), sensorSet(this) {}

RadSensorDummy::~RadSensorDummy() {}

void RadSensorDummy::doStartUp() { setMode(MODE_ON); }

void RadSensorDummy::doShutDown() { setMode(MODE_OFF); }

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

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

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

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

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

void RadSensorDummy::fillCommandAndReplyMap() {}

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

ReturnValue_t RadSensorDummy::initializeLocalDataPool(localpool::DataPool &localDataPoolMap,
                                                      LocalDataPoolManager &poolManager) {
  localDataPoolMap.emplace(radSens::TEMPERATURE_C, new PoolEntry<float>({0.0}));
  localDataPoolMap.emplace(radSens::AIN0, new PoolEntry<uint16_t>({0}));
  localDataPoolMap.emplace(radSens::AIN1, new PoolEntry<uint16_t>({0}));
  localDataPoolMap.emplace(radSens::AIN4, new PoolEntry<uint16_t>({0}));
  localDataPoolMap.emplace(radSens::AIN5, new PoolEntry<uint16_t>({0}));
  localDataPoolMap.emplace(radSens::AIN6, new PoolEntry<uint16_t>({0}));
  localDataPoolMap.emplace(radSens::AIN7, new PoolEntry<uint16_t>({0}));
  poolManager.subscribeForRegularPeriodicPacket(
      subdp::RegularHkPeriodicParams(sensorSet.getSid(), false, 20.0));
  return returnvalue::OK;

  return returnvalue::OK;
}

LocalPoolDataSetBase *RadSensorDummy::getDataSetHandle(sid_t sid) { return &sensorSet; }