This commit is contained in:
2022-05-27 11:08:44 -03:00
parent 7cc778927c
commit f47d1fc3b6
3 changed files with 32 additions and 30 deletions

View File

@@ -7,9 +7,10 @@
#include "main.h" #include "main.h"
#include "Start.hpp" #include "Start.hpp"
#include "DebugFIFO.hpp"
DebugFIFO debug(12); #include "StaticFIFO.hpp"
StaticFIFO debug(12);
void Start(){ void Start(){
debug.push("string 1"); debug.push("string 1");

View File

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

View File

@@ -5,15 +5,15 @@
* Author: Gabriel * Author: Gabriel
*/ */
#ifndef SRC_COMPONENTS_DEBUGFIFO_HPP_ #ifndef SRC_COMPONENTS_STATICFIFO_HPP_
#define SRC_COMPONENTS_DEBUGFIFO_HPP_ #define SRC_COMPONENTS_STATICFIFO_HPP_
#include "main.h" #include "main.h"
class DebugFIFO { class StaticFIFO {
public: public:
DebugFIFO(uint32_t fifoSize); StaticFIFO(uint32_t fifoSize);
virtual ~DebugFIFO(); virtual ~StaticFIFO();
int32_t push(const char* string); int32_t push(const char* string);
int32_t push(uint8_t* pointer, uint32_t length); int32_t push(uint8_t* pointer, uint32_t length);
int32_t push(char* stringPointer, uint32_t stringLength); int32_t push(char* stringPointer, uint32_t stringLength);
@@ -21,14 +21,14 @@ public:
private: private:
static const uint32_t bufSize = 256; static const uint32_t bufSize = 256;
uint32_t fifoSize; uint32_t fifoSize;
class DebugString{ class StringContainer{
public: public:
uint8_t buffer[bufSize]; uint8_t buffer[bufSize];
uint32_t length; uint32_t length;
}; };
DebugString* fifo; StringContainer* fifo;
uint32_t firstIdx = 0; uint32_t firstIdx = 0;
uint32_t lastIdx = 0; uint32_t lastIdx = 0;
}; };
#endif /* SRC_COMPONENTS_DEBUGFIFO_HPP_ */ #endif /* SRC_COMPONENTS_STATICFIFO_HPP_ */