okay, PAPB IF caches packet now
This commit is contained in:
@ -6,6 +6,7 @@
|
||||
#include <linux/ipcore/VirtualChannelIF.h>
|
||||
|
||||
#include <atomic>
|
||||
#include <vector>
|
||||
|
||||
#include "OBSWConfig.h"
|
||||
#include "fsfw/returnvalues/returnvalue.h"
|
||||
@ -30,7 +31,8 @@ class PapbVcInterface : public VirtualChannelIF {
|
||||
* @param uioFile UIO file providing access to the PAPB bus
|
||||
* @param mapNum Map number of UIO map associated with this virtual channel
|
||||
*/
|
||||
PapbVcInterface(LinuxLibgpioIF* gpioComIF, gpioId_t papbEmptyId, std::string uioFile, int mapNum);
|
||||
PapbVcInterface(LinuxLibgpioIF* gpioComIF, gpioId_t papbEmptyId, std::string uioFile, int mapNum,
|
||||
size_t maxPacketSize);
|
||||
virtual ~PapbVcInterface();
|
||||
|
||||
bool isBusy() const override;
|
||||
@ -42,9 +44,9 @@ class PapbVcInterface : public VirtualChannelIF {
|
||||
*/
|
||||
ReturnValue_t write(const uint8_t* data, size_t size, size_t& writtenSize) override;
|
||||
|
||||
ReturnValue_t finishWrite(const uint8_t* data, size_t start, size_t remainingSize) override;
|
||||
ReturnValue_t finishWriteInternal(const uint8_t* data, size_t start, size_t remainingSize,
|
||||
size_t& writtenSize, bool abortOnPartialWrite);
|
||||
ReturnValue_t advanceWrite(size_t& remainingSize) override;
|
||||
// ReturnValue_t finishWriteInternal(const uint8_t* data, size_t start, size_t remainingSize,
|
||||
// size_t& writtenSize, bool abortOnPartialWrite);
|
||||
|
||||
void cancelTransfer() override;
|
||||
|
||||
@ -90,9 +92,12 @@ class PapbVcInterface : public VirtualChannelIF {
|
||||
/** High when external buffer memory of virtual channel is empty */
|
||||
gpioId_t papbEmptyId = gpio::NO_GPIO;
|
||||
|
||||
std::vector<uint8_t> packetBuf;
|
||||
std::string uioFile;
|
||||
int mapNum = 0;
|
||||
bool partialWriteActive = false;
|
||||
bool writeActive = false;
|
||||
size_t currentPacketIndex = 0;
|
||||
size_t currentPacketSize = 0;
|
||||
mutable struct timespec nextDelay = {.tv_sec = 0, .tv_nsec = 0};
|
||||
const struct timespec BETWEEN_POLL_DELAY = {.tv_sec = 0, .tv_nsec = 10};
|
||||
mutable struct timespec remDelay;
|
||||
|
Reference in New Issue
Block a user