Add uartPutLine() function
This commit is contained in:
parent
cf5784f6bc
commit
10111979a8
|
|
@ -36,29 +36,29 @@ void executeCommand(CommandLine cmdLine) {
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
// unknown command: return error message
|
// unknown command: return error message
|
||||||
uartPutString("ERR invalid command\r\n");
|
uartPutLine("ERR invalid command");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void commandInit() {
|
void commandInit() {
|
||||||
// TODO init... or something?
|
// TODO init... or something?
|
||||||
uartPutString("OK\n");
|
uartPutLine("OK");
|
||||||
}
|
}
|
||||||
|
|
||||||
void commandRead(char* arg) {
|
void commandRead(char* arg) {
|
||||||
if (arg == NULL) {
|
if (arg == NULL) {
|
||||||
uartPutString("ERR READ needs an address or address range\r\n");
|
uartPutLine("ERR READ needs an address or address range");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Parse address(es)
|
// Parse address(es)
|
||||||
AddressRange range = parseAddressRange(arg);
|
AddressRange range = parseAddressRange(arg);
|
||||||
if (!range.isValid) {
|
if (!range.isValid) {
|
||||||
uartPutString("ERR invalid address format\r\n");
|
uartPutLine("ERR invalid address format");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
uartPutString("OK\n");
|
uartPutLine("OK");
|
||||||
|
|
||||||
uint8_t byteBuffer[DATA_BLOCK_SIZE];
|
uint8_t byteBuffer[DATA_BLOCK_SIZE];
|
||||||
DataBuffer buffer = {
|
DataBuffer buffer = {
|
||||||
|
|
@ -83,30 +83,30 @@ void commandRead(char* arg) {
|
||||||
uartPutString(outBuffer);
|
uartPutString(outBuffer);
|
||||||
}
|
}
|
||||||
|
|
||||||
uartPutChar('\n');
|
uartPutLine(NULL);
|
||||||
} while (buffer.bytes > 0);
|
} while (buffer.bytes > 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
void commandWrite(char* arg) {
|
void commandWrite(char* arg) {
|
||||||
if (arg == NULL) {
|
if (arg == NULL) {
|
||||||
uartPutString("ERR WRITE needs a start address\r\n");
|
uartPutLine("ERR WRITE needs a start address");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Parse address
|
// Parse address
|
||||||
AddressRange range = parseSingleAddress(arg);
|
AddressRange range = parseSingleAddress(arg);
|
||||||
if (!range.isValid) {
|
if (!range.isValid) {
|
||||||
uartPutString("ERR invalid address format\r\n");
|
uartPutLine("ERR invalid address format");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO read data from input and write to EEPROM
|
// TODO read data from input and write to EEPROM
|
||||||
uartPutString("ERR not implemented\n");
|
uartPutLine("ERR not implemented");
|
||||||
}
|
}
|
||||||
|
|
||||||
void commandErase() {
|
void commandErase() {
|
||||||
// TODO
|
// 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.
|
// 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);
|
uartPutChar(byte);
|
||||||
uartPutString(" (0x");
|
uartPutString(" (0x");
|
||||||
uartPutString(outBuffer);
|
uartPutString(outBuffer);
|
||||||
uartPutString(")\r\n");
|
uartPutString(")");
|
||||||
|
|
||||||
|
uartPutLine(NULL);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -154,5 +156,5 @@ void commandTestWrite(char* arg) {
|
||||||
// TODO necessary?
|
// TODO necessary?
|
||||||
_delay_ms(100);
|
_delay_ms(100);
|
||||||
|
|
||||||
uartPutString("TESTWRITE success\r\n");
|
uartPutLine("TESTWRITE success");
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -15,7 +15,7 @@ int main(void) {
|
||||||
_delay_ms(100);
|
_delay_ms(100);
|
||||||
|
|
||||||
// Write initial message via UART
|
// Write initial message via UART
|
||||||
uartPutString("INFO -- EEPROM programmer by binaryDiv\r\n");
|
uartPutLine("INFO -- EEPROM programmer by binaryDiv");
|
||||||
|
|
||||||
while(1) {
|
while(1) {
|
||||||
// Run main loop endlessly
|
// Run main loop endlessly
|
||||||
|
|
|
||||||
|
|
@ -28,7 +28,7 @@ CommandLine readNextCommand(char* buffer, uint8_t bufferLength) {
|
||||||
|
|
||||||
if (readChars >= bufferLength - 1) {
|
if (readChars >= bufferLength - 1) {
|
||||||
// Reading was aborted after bufferLength-1 characters to prevent buffer overflow.
|
// 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
|
// Discard everything until we read an actual end of line
|
||||||
for (unsigned char c = 0; c != '\n' && c != '\r'; c = uartGetChar());
|
for (unsigned char c = 0; c != '\n' && c != '\r'; c = uartGetChar());
|
||||||
|
|
|
||||||
|
|
@ -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)
|
// 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
|
||||||
|
|
|
||||||
|
|
@ -13,6 +13,9 @@ void uartPutChar(unsigned char data);
|
||||||
// Transmit a string
|
// Transmit a string
|
||||||
void uartPutString(char* data);
|
void uartPutString(char* data);
|
||||||
|
|
||||||
|
// Transmit a string followed by a line break
|
||||||
|
void uartPutLine(char* data);
|
||||||
|
|
||||||
// Read a single character (blocking)
|
// Read a single character (blocking)
|
||||||
unsigned char uartGetChar();
|
unsigned char uartGetChar();
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue