gens
This commit is contained in:
@ -32,8 +32,8 @@ ReturnValue_t PapbVcInterface::write(const uint8_t* data, size_t size, size_t& w
|
||||
if (size < 4) {
|
||||
return returnvalue::FAILED;
|
||||
}
|
||||
// The user must call finishWrite before starting a new packet transfer.
|
||||
if (writeActive) {
|
||||
// The user must call advance until completion before starting a new packet transfer.
|
||||
if (writeActiveStatus) {
|
||||
return IS_BUSY;
|
||||
}
|
||||
if (size > packetBuf.capacity()) {
|
||||
@ -60,11 +60,6 @@ void PapbVcInterface::startPacketTransfer(ByteWidthCfg initWidth) {
|
||||
*vcBaseReg = CONFIG_DATA_INPUT | initWidth;
|
||||
}
|
||||
|
||||
void PapbVcInterface::completePacketTransfer() {
|
||||
*vcBaseReg = CONFIG_END;
|
||||
writeActive = false;
|
||||
}
|
||||
|
||||
bool PapbVcInterface::pollReadyForPacket() const {
|
||||
// Check if PAPB interface is ready to receive data. Use the configuration register for this.
|
||||
// Bit 5, see PTME ptme_001_01-0-7-r2 Table 31.
|
||||
@ -73,6 +68,9 @@ bool PapbVcInterface::pollReadyForPacket() const {
|
||||
}
|
||||
|
||||
ReturnValue_t PapbVcInterface::advanceWrite(size_t& writtenSize) {
|
||||
if (!writeActiveStatus) {
|
||||
return NO_WRITE_ACTIVE;
|
||||
}
|
||||
if (not pollReadyForPacket()) {
|
||||
return IS_BUSY;
|
||||
}
|
||||
@ -95,6 +93,8 @@ ReturnValue_t PapbVcInterface::advanceWrite(size_t& writtenSize) {
|
||||
return returnvalue::OK;
|
||||
}
|
||||
|
||||
bool PapbVcInterface::writeActive() const { return writeActiveStatus; }
|
||||
|
||||
bool PapbVcInterface::isVcInterfaceBufferEmpty() {
|
||||
ReturnValue_t result = returnvalue::OK;
|
||||
gpio::Levels papbEmptyState = gpio::Levels::HIGH;
|
||||
@ -131,4 +131,16 @@ inline bool PapbVcInterface::pollReadyForOctet(uint32_t maxCycles) const {
|
||||
return false;
|
||||
}
|
||||
|
||||
void PapbVcInterface::abortPacketTransfer() { *vcBaseReg = CONFIG_ABORT; }
|
||||
void PapbVcInterface::abortPacketTransfer() {
|
||||
*vcBaseReg = CONFIG_ABORT;
|
||||
writeActiveStatus = false;
|
||||
currentPacketIndex = 0;
|
||||
currentPacketSize = 0;
|
||||
}
|
||||
|
||||
void PapbVcInterface::completePacketTransfer() {
|
||||
*vcBaseReg = CONFIG_END;
|
||||
writeActiveStatus = false;
|
||||
currentPacketIndex = 0;
|
||||
currentPacketSize = 0;
|
||||
}
|
||||
|
Reference in New Issue
Block a user