#include "gnssCallback.h"

#include "devices/gpioIds.h"
#include "fsfw/tasks/TaskFactory.h"

ReturnValue_t gps::triggerGpioResetPin(void* args) {
  ResetArgs* resetArgs = reinterpret_cast<ResetArgs*>(args);
  if (args == nullptr) {
    return HasReturnvaluesIF::RETURN_FAILED;
  }
  if (resetArgs->gpioComIF == nullptr) {
    return HasReturnvaluesIF::RETURN_FAILED;
  }
  gpioId_t gpioId;
  if (resetArgs->gnss1) {
    gpioId = gpioIds::GNSS_1_NRESET;

  } else {
    gpioId = gpioIds::GNSS_0_NRESET;
  }
  resetArgs->gpioComIF->pullLow(gpioId);
  TaskFactory::delayTask(resetArgs->waitPeriodMs);
  resetArgs->gpioComIF->pullHigh(gpioId);
  return HasReturnvaluesIF::RETURN_OK;
}