Upload files to "/"
This commit is contained in:
58
psram_buffer.h
Normal file
58
psram_buffer.h
Normal file
@@ -0,0 +1,58 @@
|
||||
// psram_buffer.h - PSRAM-based Ring Buffer for CAN FD Logger
|
||||
|
||||
#ifndef PSRAM_BUFFER_H
|
||||
#define PSRAM_BUFFER_H
|
||||
|
||||
#include <Arduino.h>
|
||||
#include "types.h"
|
||||
|
||||
#define PSRAM_CAN_BUFFER_SIZE (512 * 1024)
|
||||
#define PSRAM_SD_BUFFER_SIZE (16 * 1024)
|
||||
#define PSRAM_SIGNAL_BUFFER_SIZE (4 * 1024)
|
||||
|
||||
#define MAX_PSRAM_CAN_FRAMES (PSRAM_CAN_BUFFER_SIZE / sizeof(CanFrame))
|
||||
|
||||
class PSRAMRingBuffer {
|
||||
public:
|
||||
PSRAMRingBuffer();
|
||||
~PSRAMRingBuffer();
|
||||
|
||||
bool begin(size_t capacity);
|
||||
bool push(const CanFrame& frame);
|
||||
bool pop(CanFrame& frame);
|
||||
bool peek(CanFrame& frame);
|
||||
size_t available();
|
||||
size_t capacity();
|
||||
size_t freeSpace();
|
||||
bool isFull();
|
||||
bool isEmpty();
|
||||
void clear();
|
||||
void flush();
|
||||
|
||||
CanFrame* getBuffer();
|
||||
size_t getHead();
|
||||
size_t getTail();
|
||||
|
||||
private:
|
||||
CanFrame* _buffer;
|
||||
size_t _capacity;
|
||||
volatile size_t _head;
|
||||
volatile size_t _tail;
|
||||
volatile size_t _count;
|
||||
SemaphoreHandle_t _mutex;
|
||||
};
|
||||
|
||||
extern PSRAMRingBuffer canFrameBuffer;
|
||||
|
||||
bool initPSRAMBuffers();
|
||||
void deinitPSRAMBuffers();
|
||||
|
||||
uint8_t* getSDWriteBuffer();
|
||||
uint8_t* getSignalBuffer();
|
||||
|
||||
size_t getFreePSRAM();
|
||||
size_t getUsedPSRAM();
|
||||
size_t getTotalPSRAM();
|
||||
void printMemoryStatus();
|
||||
|
||||
#endif // PSRAM_BUFFER_H
|
||||
Reference in New Issue
Block a user