PAPB VC Simplification #661

Merged
meierj merged 4 commits from papb-vc-if-simplification into v4.0.0-dev 2023-05-31 16:32:50 +02:00
Showing only changes of commit 998110dea4 - Show all commits

View File

@ -33,51 +33,11 @@ ReturnValue_t PapbVcInterface::write(const uint8_t* data, size_t size) {
} else {
return DirectTmSinkIF::IS_BUSY;
}
// TODO: This should work but does not.. :(
// size_t idx = 0;
// while (idx < size) {
//
// nanosleep(&BETWEEN_POLL_DELAY, &remDelay);
// if ((size - idx) < 4) {
// *vcBaseReg = CONFIG_DATA_INPUT | (size - idx - 1);
// usleep(1);
// }
// if (pollPapbBusySignal(2) == returnvalue::OK) {
// // vcBaseReg + DATA_REG_OFFSET + 3 = static_cast<uint8_t>(data + idx);
// // vcBaseReg + DATA_REG_OFFSET + 2 = static_cast<uint8_t>(data + idx + 1);
// // vcBaseReg + DATA_REG_OFFSET + 1 = static_cast<uint8_t>(data + idx + 2);
// // vcBaseReg + DATA_REG_OFFSET = static_cast<uint8_t>(data + idx + 3);
//
// // std::memcpy((vcBaseReg + DATA_REG_OFFSET), data + idx , nextWriteSize);
// *(vcBaseReg + DATA_REG_OFFSET) = *reinterpret_cast<const uint32_t*>(data + idx);
// //uint8_t* byteReg = reinterpret_cast<uint8_t*>(vcBaseReg + DATA_REG_OFFSET);
//
// //byteReg[0] = data[idx];
// //byteReg[1] = data[idx];
// } else {
// abortPacketTransfer();
// return returnvalue::FAILED;
// }
// // TODO: Change this after the bugfix. Right now, the PAPB ignores the content of the byte
// // width configuration.5
// // It's okay to increment by a larger amount for the last segment here, loop will be over
// // in any case.
// idx += 4;
// }
for (size_t idx = 0; idx < size; idx++) {
// if (pollInterfaceReadiness(2, false) == returnvalue::OK) {
*(vcBaseReg + DATA_REG_OFFSET) = static_cast<uint32_t>(data[idx]);
//} else {
// abortPacketTransfer();
// return returnvalue::FAILED;
//}
}
// if (pollInterfaceReadiness(2, false) == returnvalue::OK) {
completePacketTransfer();
//} else {
// abortPacketTransfer();
// return returnvalue::FAILED;
//}
return returnvalue::OK;
}
@ -88,38 +48,11 @@ void PapbVcInterface::startPacketTransfer(ByteWidthCfg initWidth) {
void PapbVcInterface::completePacketTransfer() { *vcBaseReg = CONFIG_END; }
bool PapbVcInterface::pollReadyForPacket() const {
// uint32_t busyIdx = 0;
// nextDelay.tv_nsec = FIRST_DELAY_PAPB_POLLING_NS;
// while (true) {
// 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.
uint32_t reg = *vcBaseReg;
// bool busy = (reg >> 5) & 0b1;
return (reg >> 6) & 0b1;
// if (checkReadyForPacketState) {
// if (not busy and readyForPacket) {
// return returnvalue::OK;
// } else if (not busy and not readyForPacket) {
// return PAPB_BUSY;
// }
// } else if (not busy) {
// return returnvalue::OK;
// }
//
// busyIdx++;
// if (busyIdx >= maxPollRetries) {
// return PAPB_BUSY;
// }
//
// // Ignore signal handling here for now.
// nanosleep(&nextDelay, &remDelay);
// // Adaptive delay.
// if (nextDelay.tv_nsec * 2 <= MAX_DELAY_PAPB_POLLING_NS) {
// nextDelay.tv_nsec *= 2;
// }
// }
// return returnvalue::OK;
}
bool PapbVcInterface::isVcInterfaceBufferEmpty() {