#include "VirtualChannel.h"

VirtualChannel::VirtualChannel(object_id_t objectId, uint8_t vcId, const char* vcName, PtmeIF& ptme,
                               const std::atomic_bool& txOn)
    : SystemObject(objectId), ptme(ptme), vcId(vcId), vcName(vcName), txOn(txOn) {}

ReturnValue_t VirtualChannel::initialize() { return returnvalue::OK; }

ReturnValue_t VirtualChannel::sendNextTm(const uint8_t* data, size_t size) {
  return write(data, size);
}

ReturnValue_t VirtualChannel::write(const uint8_t* data, size_t size) {
  return ptme.writeToVc(vcId, data, size);
}

uint8_t VirtualChannel::getVcid() const { return vcId; }

const char* VirtualChannel::getName() const { return vcName.c_str(); }

bool VirtualChannel::isBusy() const { return ptme.isBusy(vcId); }

void VirtualChannel::cancelTransfer() { ptme.cancelTransfer(vcId); }

bool VirtualChannel::isTxOn() const { return txOn; }