Initial commit
This commit is contained in:
34
Core/Src/driverSWUART2.c
Normal file
34
Core/Src/driverSWUART2.c
Normal file
@@ -0,0 +1,34 @@
|
||||
#include "driverSWUART2.h"
|
||||
|
||||
libRingBufferTypedef *driverSWUART2OutputBuffer;
|
||||
|
||||
void driverSWUART2Init(uint32_t baudRate) {
|
||||
driverSWUART2OutputBuffer = libRingBufferNew(sizeof(uint8_t),RINGBUFFERSIZE); // Make new output buffer
|
||||
|
||||
if(!driverSWUART2OutputBuffer) // Check if buffer pointer is generated
|
||||
while(true); // Out of memory error
|
||||
|
||||
driverHWUART2Init(baudRate); // Initialize serial port and pass function that should be called when a byte is received
|
||||
};
|
||||
|
||||
char driverSWUART2PutCharInOutputBuffer(char character, FILE *stream) {
|
||||
// TODO: If buffer is full, first send a character out, then place new char. This should however never happen
|
||||
if(!driverSWUART2OutputBuffer->isFull(driverSWUART2OutputBuffer)) {
|
||||
driverSWUART2OutputBuffer->add(driverSWUART2OutputBuffer,&character);
|
||||
}else{
|
||||
driverSWUART2Task();
|
||||
driverSWUART2OutputBuffer->add(driverSWUART2OutputBuffer,&character);
|
||||
}
|
||||
return 0;
|
||||
};
|
||||
|
||||
bool driverSWUART2Task(void) {
|
||||
char outputChar;
|
||||
|
||||
if(!driverSWUART2OutputBuffer->isEmpty(driverSWUART2OutputBuffer)){ // Check if there is data in the ouput buffer
|
||||
driverSWUART2OutputBuffer->pull(driverSWUART2OutputBuffer,&outputChar); // Pull the data from ouput buffer
|
||||
driverHWUART2SendChar(outputChar); // And send it to the uart
|
||||
}
|
||||
|
||||
return !driverSWUART2OutputBuffer->isEmpty(driverSWUART2OutputBuffer);
|
||||
};
|
||||
Reference in New Issue
Block a user