Encoder read with graph plot over UDP

This commit is contained in:
2023-03-07 18:55:30 -03:00
parent f2427647cf
commit 2dcfcad308
110 changed files with 120252 additions and 0 deletions

View File

@@ -0,0 +1,78 @@
/*
* DebugFIFO.cpp
*
* Created on: May 26, 2022
* Author: Gabriel
*/
#include "StaticFIFO.hpp"
#include <cstring>
StaticFIFO::StaticFIFO(uint32_t fifoSize) : fifoSize(fifoSize){
fifo = new StringContainer[fifoSize];
}
StaticFIFO::~StaticFIFO() {
delete fifo;
}
int32_t StaticFIFO::push(const char* string){
if (((fifoSize + firstIdx) - lastIdx) % fifoSize == 1) {
return 0; //overflow
}else if(strlen(string) + 1 > bufSize){
return -2; //length limit
}
StringContainer stringContainer;
for(uint32_t i=0; i < (strlen(string) + 1); i++){
stringContainer.buffer[i] = string[i];
}
stringContainer.length = strlen(string) + 1;
fifo[lastIdx] = stringContainer;
lastIdx = (lastIdx + 1) % fifoSize;
return (((fifoSize + lastIdx) - firstIdx) % fifoSize);
}
int32_t StaticFIFO::push(uint8_t* pointer, uint32_t length){
if (((fifoSize + firstIdx) - lastIdx) % fifoSize == 1) {
return 0; //overflow
}else if(length > bufSize){
return -2; //length limit
}
StringContainer stringContainer;
for(uint32_t i=0; i < length; i++){
stringContainer.buffer[i] = pointer[i];
}
stringContainer.length = length;
fifo[lastIdx] = stringContainer;
lastIdx = (lastIdx + 1) % fifoSize;
return (((fifoSize + lastIdx) - firstIdx) % fifoSize);
}
int32_t StaticFIFO::push(char* stringPointer, uint32_t stringLength){
if (((fifoSize + firstIdx) - lastIdx) % fifoSize == 1) {
return 0; //overflow
}else if(stringLength > bufSize){
return -2; //length limit
}
StringContainer stringContainer;
for(uint32_t i=0; i < (stringLength); i++){
stringContainer.buffer[i] = stringPointer[i];
}
stringContainer.length = stringLength;
fifo[lastIdx] = stringContainer;
lastIdx = (lastIdx + 1) % fifoSize;
return (((fifoSize + lastIdx) - firstIdx) % fifoSize);
}
int32_t StaticFIFO::pop(uint8_t** pointer, uint32_t* length, uint32_t max_length){
if (lastIdx == firstIdx){
return -1; //underrun
}else if(fifo[firstIdx].length > max_length){
return -2; //length limit
}
*pointer = fifo[firstIdx].buffer;
*length = fifo[firstIdx].length;
firstIdx = (firstIdx + 1) % fifoSize;
return (((fifoSize + lastIdx) - firstIdx) % fifoSize);
}