Fix WritePort mistakes in the serial file.
This commit is contained in:
parent
927aeb0872
commit
d830acbbd4
|
@ -35,13 +35,13 @@
|
||||||
|
|
||||||
void serial_set_baud_rate(uint16_t com, uint16_t divisor) {
|
void serial_set_baud_rate(uint16_t com, uint16_t divisor) {
|
||||||
WritePort(SERIAL_LINE_COMMAND_PORT(com),
|
WritePort(SERIAL_LINE_COMMAND_PORT(com),
|
||||||
SERIAL_LINE_ENABLE_DLAB, 8);
|
SERIAL_LINE_ENABLE_DLAB, 1);
|
||||||
|
|
||||||
WritePort(SERIAL_DATA_PORT(com),
|
WritePort(SERIAL_DATA_PORT(com),
|
||||||
(divisor >> 8) & 0x00FF, 8);
|
(divisor >> 8) & 0x00FF, 1);
|
||||||
|
|
||||||
WritePort(SERIAL_DATA_PORT(com),
|
WritePort(SERIAL_DATA_PORT(com),
|
||||||
divisor & 0x00FF, 8);
|
divisor & 0x00FF, 1);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -53,12 +53,12 @@ void serial_set_baud_rate(uint16_t com, uint16_t divisor) {
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void serial_configure_line(uint16_t com) {
|
void serial_configure_line(uint16_t com) {
|
||||||
/* Bit: | 7 | 6 | 5 4 3 | 2 | 1 0 |
|
/* Bit: | 7 | 6 | 5 4 3 | 2 | 1 0 |
|
||||||
* Content: | d | b | parity| s | dl |
|
* Content: | d | b | parity | s | dl |
|
||||||
* Value: | 0 | 0 | 0 0 0 | 0 | 1 1 | = 0x03
|
* Value: | 0 | 0 | 0 0 0 | 0 | 1 1 | = 0x03
|
||||||
*/
|
*/
|
||||||
|
|
||||||
WritePort(SERIAL_LINE_COMMAND_PORT(com), 0x0B, 8);
|
WritePort(SERIAL_LINE_COMMAND_PORT(com), 0x0B, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
/** serial_configure_buffers:
|
/** serial_configure_buffers:
|
||||||
|
@ -75,7 +75,7 @@ void serial_configure_buffers(uint16_t com) {
|
||||||
* Value: | 1 1 | 0 | 0 | 0 | 1 | 1 | 1 | = 0xC7
|
* Value: | 1 1 | 0 | 0 | 0 | 1 | 1 | 1 | = 0xC7
|
||||||
*/
|
*/
|
||||||
|
|
||||||
WritePort(SERIAL_FIFO_COMMAND_PORT(com), 0xC7, 8);
|
WritePort(SERIAL_FIFO_COMMAND_PORT(com), 0xC7, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
/** serial_configure_modem
|
/** serial_configure_modem
|
||||||
|
@ -88,7 +88,7 @@ void serial_configure_modem(uint16_t com) {
|
||||||
* Value: | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | = 0x03
|
* Value: | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | = 0x03
|
||||||
*/
|
*/
|
||||||
|
|
||||||
WritePort(SERIAL_MODEM_COMMAND_PORT(com), 0x3, 8);
|
WritePort(SERIAL_MODEM_COMMAND_PORT(com), 0x3, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
/** serial_check_tqueue:
|
/** serial_check_tqueue:
|
||||||
|
@ -100,7 +100,7 @@ void serial_configure_modem(uint16_t com) {
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int serial_check_tqueue(uint16_t com) {
|
int serial_check_tqueue(uint16_t com) {
|
||||||
return ReadPort(SERIAL_LINE_STATUS_PORT(com), 8) & 0x20;
|
return ReadPort(SERIAL_LINE_STATUS_PORT(com), 1) & 0x20;
|
||||||
}
|
}
|
||||||
|
|
||||||
/** serial_write:
|
/** serial_write:
|
||||||
|
@ -110,10 +110,11 @@ int serial_check_tqueue(uint16_t com) {
|
||||||
* @param data The character to write.
|
* @param data The character to write.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void serial_write(uint16_t com, const char chr) {
|
void serial_write(const char chr) {
|
||||||
|
uint16_t com = SERIAL_COM1_BASE;
|
||||||
//Hang until we have access to the COM port.
|
//Hang until we have access to the COM port.
|
||||||
while(serial_check_tqueue(com) == 0);
|
while(serial_check_tqueue(com) == 0);
|
||||||
WritePort(com, chr, 0);
|
WritePort(com, chr, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
/** serial_print:
|
/** serial_print:
|
||||||
|
@ -124,9 +125,9 @@ void serial_write(uint16_t com, const char chr) {
|
||||||
* @param data The string to write.
|
* @param data The string to write.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void serial_print(uint16_t com, const char* data) {
|
void serial_print(const char* data) {
|
||||||
for(size_t i = 0; i < strlen(data); i++) {
|
for(size_t i = 0; i < strlen(data); i++) {
|
||||||
serial_write(com, data[i]);
|
serial_write(data[i]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -137,7 +138,8 @@ void serial_print(uint16_t com, const char* data) {
|
||||||
* @param ... The substitutions.
|
* @param ... The substitutions.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void serial_printf(uint16_t com, const char* format, ...) {
|
void serial_printf(const char* format, ...) {
|
||||||
|
uint16_t com = SERIAL_COM1_BASE;
|
||||||
uint32_t storage; //To hold temporary variables
|
uint32_t storage; //To hold temporary variables
|
||||||
char stringstore[10] = {0}; //To convert ints to strings.
|
char stringstore[10] = {0}; //To convert ints to strings.
|
||||||
va_list list;
|
va_list list;
|
||||||
|
@ -151,7 +153,7 @@ void serial_printf(uint16_t com, const char* format, ...) {
|
||||||
|
|
||||||
storage = va_arg(list, int);
|
storage = va_arg(list, int);
|
||||||
int_to_ascii(storage, stringstore);
|
int_to_ascii(storage, stringstore);
|
||||||
serial_print(com, stringstore);
|
serial_print(stringstore);
|
||||||
empty_string(stringstore);
|
empty_string(stringstore);
|
||||||
i += 2;
|
i += 2;
|
||||||
|
|
||||||
|
@ -159,21 +161,21 @@ void serial_printf(uint16_t com, const char* format, ...) {
|
||||||
|
|
||||||
storage = va_arg(list, int);
|
storage = va_arg(list, int);
|
||||||
int_to_hex(storage, stringstore);
|
int_to_hex(storage, stringstore);
|
||||||
serial_print(com, stringstore);
|
serial_print(stringstore);
|
||||||
empty_string(stringstore);
|
empty_string(stringstore);
|
||||||
i += 2;
|
i += 2;
|
||||||
|
|
||||||
} else if(format[i+1] == 's') {
|
} else if(format[i+1] == 's') {
|
||||||
|
|
||||||
serial_print(com, va_arg(list, char*));
|
serial_print(va_arg(list, char*));
|
||||||
i += 2;
|
i += 2;
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
serial_print(com, "ERROR: Attempting to parse unknown format string.");
|
serial_print("ERROR: Attempting to parse unknown format string.");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
serial_write(com, format[i]);
|
serial_write(format[i]);
|
||||||
i++;
|
i++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -182,7 +184,7 @@ void serial_printf(uint16_t com, const char* format, ...) {
|
||||||
|
|
||||||
void init_serial() {
|
void init_serial() {
|
||||||
// Disable interrupts
|
// Disable interrupts
|
||||||
WritePort(SERIAL_COM1_BASE + 1, 0x00, 0);
|
WritePort(SERIAL_COM1_BASE + 1, 0x00, 1);
|
||||||
|
|
||||||
// Set baud rate divisor.
|
// Set baud rate divisor.
|
||||||
serial_set_baud_rate(SERIAL_COM1_BASE, 3);
|
serial_set_baud_rate(SERIAL_COM1_BASE, 3);
|
||||||
|
|
Loading…
Reference in New Issue
Block a user