#include "torquer.h"

#include <fsfw/ipc/MutexGuard.h>

MutexIF* TORQUE_LOCK = nullptr;

namespace torquer {

bool TORQUEING = false;
bool NEW_ACTUATION_FLAG = false;
Countdown TORQUE_COUNTDOWN = Countdown();

bool mgtIsTorqueing(dur_millis_t* remainingTorqueDuration) {
  if (TORQUEING and remainingTorqueDuration != nullptr) {
    *remainingTorqueDuration = TORQUE_COUNTDOWN.getRemainingMillis() + TORQUE_BUFFER_TIME_MS;
  }
  return TORQUEING;
}

MutexIF* lazyLock() {
  if (TORQUE_LOCK == nullptr) {
    TORQUE_LOCK = MutexFactory::instance()->createMutex();
  }
  return TORQUE_LOCK;
}

}  // namespace torquer