Compare commits

..

1 Commits

Author SHA1 Message Date
Lexi / Zoe 67beda0dbd
Implement HELP command 2021-04-16 21:48:27 +02:00
4 changed files with 33 additions and 34 deletions

View File

@ -6,9 +6,13 @@
#include <string.h> #include <string.h>
#include <stdbool.h> #include <stdbool.h>
#include <stdio.h>
#include <stdlib.h> #include <stdlib.h>
#include <util/delay.h> #include <util/delay.h>
// Internal function prototypes
void _uartPutAsciiBlock(DataBuffer buffer);
// Mode: ASCII (false) or binary (true) // Mode: ASCII (false) or binary (true)
bool binary_mode = false; bool binary_mode = false;
@ -123,17 +127,25 @@ void commandRead(char* arg) {
} }
} else { } else {
// Fancy ASCII output // Fancy ASCII output
uartPrintf("<%d>", buffer.bytes); _uartPutAsciiBlock(buffer);
for (int i = 0; i < buffer.bytes; i++) {
uartPrintf(" %02X", buffer.data[i]);
}
uartPutLine(NULL);
} }
} while (buffer.bytes > 0); } while (buffer.bytes > 0);
} }
void _uartPutAsciiBlock(DataBuffer buffer) {
char outBuffer[20];
sprintf(outBuffer, "<%d>", buffer.bytes);
uartPutString(outBuffer);
for (int i = 0; i < buffer.bytes; i++) {
sprintf(outBuffer, " %02X", buffer.data[i]);
uartPutString(outBuffer);
}
uartPutLine(NULL);
}
void commandWrite(char* arg) { void commandWrite(char* arg) {
if (arg == NULL) { if (arg == NULL) {
uartPutLine("ERR WRITE needs a start address"); uartPutLine("ERR WRITE needs a start address");
@ -164,20 +176,26 @@ void commandErase() {
// TESTREAD command: for testing purposes, reads a few bytes and returns them in a human readable format. // TESTREAD command: for testing purposes, reads a few bytes and returns them in a human readable format.
void commandTestRead() { void commandTestRead() {
uint8_t byte;
char outBuffer[20];
eepromSetReadMode(); eepromSetReadMode();
for (int i = 0x00; i < 0x20; i++) { for (int i = 0x00; i < 0x20; i++) {
uartPrintf("TESTREAD 0x%02X: ", i); itoa(i, outBuffer, 16);
uartPutString("TESTREAD 0x");
uartPutString(outBuffer);
uartPutString(": ");
uint8_t byte = eepromReadByte(i); byte = eepromReadByte(i);
itoa(byte, outBuffer, 16);
if (byte >= 32 && byte <= 126) {
uartPutChar(byte); uartPutChar(byte);
} else { uartPutString(" (0x");
uartPutChar('?'); uartPutString(outBuffer);
} uartPutString(")");
uartPrintf(" (0x%02X)\n"); uartPutLine(NULL);
} }
} }

View File

@ -6,8 +6,7 @@
void executeCommand(CommandLine cmdLine); void executeCommand(CommandLine cmdLine);
void commandHelp(); void commandInit();
void commandInit(char* arg);
void commandRead(char* arg); void commandRead(char* arg);
void commandWrite(char* arg); void commandWrite(char* arg);
void commandErase(); void commandErase();

View File

@ -2,8 +2,6 @@
#include "uart.h" #include "uart.h"
#include <avr/io.h> #include <avr/io.h>
#include <stdarg.h>
#include <stdio.h>
#include <util/setbaud.h> #include <util/setbaud.h>
// Initialize UART // Initialize UART
@ -56,19 +54,6 @@ void uartPutLine(char* data) {
uartPutChar('\n'); uartPutChar('\n');
} }
// Transmit a sprintf formatted string (maximum buffer: 256 bytes!)
void uartPrintf(const char* format, ...) {
char outBuffer[256];
va_list args;
va_start(args, format);
vsprintf(outBuffer, format, args);
uartPutString(outBuffer);
va_end(args);
}
// Receive a single character (blocking) // Receive a single character (blocking)
unsigned char uartGetChar() { unsigned char uartGetChar() {
// Block until a character has been received // Block until a character has been received

View File

@ -16,9 +16,6 @@ void uartPutString(char* data);
// Transmit a string followed by a line break // Transmit a string followed by a line break
void uartPutLine(char* data); void uartPutLine(char* data);
// Transmit a sprintf formatted string (maximum buffer: 256 bytes!)
void uartPrintf(const char* format, ...);
// Read a single character (blocking) // Read a single character (blocking)
unsigned char uartGetChar(); unsigned char uartGetChar();