From 10111979a869405591c1082d6e64113a305491d9 Mon Sep 17 00:00:00 2001 From: binaryDiv Date: Fri, 16 Apr 2021 20:31:25 +0200 Subject: [PATCH] Add uartPutLine() function --- firmware/src/commands.c | 26 ++++++++++++++------------ firmware/src/main.c | 2 +- firmware/src/parsing.c | 4 ++-- firmware/src/uart.c | 8 ++++++++ firmware/src/uart.h | 3 +++ 5 files changed, 28 insertions(+), 15 deletions(-) diff --git a/firmware/src/commands.c b/firmware/src/commands.c index 6b38a85..5132acb 100644 --- a/firmware/src/commands.c +++ b/firmware/src/commands.c @@ -36,29 +36,29 @@ void executeCommand(CommandLine cmdLine) { } else { // unknown command: return error message - uartPutString("ERR invalid command\r\n"); + uartPutLine("ERR invalid command"); } } void commandInit() { // TODO init... or something? - uartPutString("OK\n"); + uartPutLine("OK"); } void commandRead(char* arg) { if (arg == NULL) { - uartPutString("ERR READ needs an address or address range\r\n"); + uartPutLine("ERR READ needs an address or address range"); return; } // Parse address(es) AddressRange range = parseAddressRange(arg); if (!range.isValid) { - uartPutString("ERR invalid address format\r\n"); + uartPutLine("ERR invalid address format"); return; } - uartPutString("OK\n"); + uartPutLine("OK"); uint8_t byteBuffer[DATA_BLOCK_SIZE]; DataBuffer buffer = { @@ -83,30 +83,30 @@ void commandRead(char* arg) { uartPutString(outBuffer); } - uartPutChar('\n'); + uartPutLine(NULL); } while (buffer.bytes > 0); } void commandWrite(char* arg) { if (arg == NULL) { - uartPutString("ERR WRITE needs a start address\r\n"); + uartPutLine("ERR WRITE needs a start address"); return; } // Parse address AddressRange range = parseSingleAddress(arg); if (!range.isValid) { - uartPutString("ERR invalid address format\r\n"); + uartPutLine("ERR invalid address format"); return; } // TODO read data from input and write to EEPROM - uartPutString("ERR not implemented\n"); + uartPutLine("ERR not implemented"); } void commandErase() { // TODO - uartPutString("ERR not implemented\n"); + uartPutLine("ERR not implemented"); } // TESTREAD command: for testing purposes, reads a few bytes and returns them in a human readable format. @@ -128,7 +128,9 @@ void commandTestRead() { uartPutChar(byte); uartPutString(" (0x"); uartPutString(outBuffer); - uartPutString(")\r\n"); + uartPutString(")"); + + uartPutLine(NULL); } } @@ -154,5 +156,5 @@ void commandTestWrite(char* arg) { // TODO necessary? _delay_ms(100); - uartPutString("TESTWRITE success\r\n"); + uartPutLine("TESTWRITE success"); } diff --git a/firmware/src/main.c b/firmware/src/main.c index 70d302d..056964f 100644 --- a/firmware/src/main.c +++ b/firmware/src/main.c @@ -15,7 +15,7 @@ int main(void) { _delay_ms(100); // Write initial message via UART - uartPutString("INFO -- EEPROM programmer by binaryDiv\r\n"); + uartPutLine("INFO -- EEPROM programmer by binaryDiv"); while(1) { // Run main loop endlessly diff --git a/firmware/src/parsing.c b/firmware/src/parsing.c index c2d1d1d..7df21e7 100644 --- a/firmware/src/parsing.c +++ b/firmware/src/parsing.c @@ -15,7 +15,7 @@ void parseNextCommand() { // Read next command CommandLine cmdLine = readNextCommand(buffer, bufferLength); - + // Execute command executeCommand(cmdLine); } @@ -28,7 +28,7 @@ CommandLine readNextCommand(char* buffer, uint8_t bufferLength) { if (readChars >= bufferLength - 1) { // Reading was aborted after bufferLength-1 characters to prevent buffer overflow. - uartPutString("ERR buffer overflow, discarding line\r\n"); + uartPutLine("ERR buffer overflow, discarding line"); // Discard everything until we read an actual end of line for (unsigned char c = 0; c != '\n' && c != '\r'; c = uartGetChar()); diff --git a/firmware/src/uart.c b/firmware/src/uart.c index aa182e3..b68bab2 100644 --- a/firmware/src/uart.c +++ b/firmware/src/uart.c @@ -46,6 +46,14 @@ void uartPutString(char* data) { } } +// Transmit a string followed by a line break +void uartPutLine(char* data) { + if (data) { + uartPutString(data); + } + uartPutChar('\n'); +} + // Receive a single character (blocking) unsigned char uartGetChar() { // Block until a character has been received diff --git a/firmware/src/uart.h b/firmware/src/uart.h index 9be2f7e..b47c953 100644 --- a/firmware/src/uart.h +++ b/firmware/src/uart.h @@ -13,6 +13,9 @@ void uartPutChar(unsigned char data); // Transmit a string void uartPutString(char* data); +// Transmit a string followed by a line break +void uartPutLine(char* data); + // Read a single character (blocking) unsigned char uartGetChar();