fix(console): 🐛 Fix unicode character output

(At the expense of about 3kb code size.)
This commit is contained in:
Berkus Decker 2022-11-02 14:47:42 +02:00 committed by Berkus Decker
parent 2c91e685bd
commit 1ca54d9ed6
2 changed files with 13 additions and 4 deletions

View File

@ -284,7 +284,11 @@ impl ConsoleOps for PreparedMiniUart {
if #[cfg(not(feature = "noserial"))] {
/// Send a character
fn write_char(&self, c: char) {
self.write_byte(c as u8);
let mut b = [0u8; 4];
let _ = c.encode_utf8(&mut b);
for x in 0..c.len_utf8() {
self.write_byte(b[x]);
}
}
/// Display a string
@ -299,7 +303,7 @@ impl ConsoleOps for PreparedMiniUart {
}
}
/// Receive a character
/// Receive a character -- FIXME: needs a state machine to read UTF-8 chars!
fn read_char(&self) -> char {
let mut ret = self.read_byte() as char;

View File

@ -401,10 +401,15 @@ impl SerialOps for PreparedPL011Uart {
}
}
// @todo Seems like a blanket implementation of ConsoleOps is in order..
impl ConsoleOps for PreparedPL011Uart {
/// Send a character
fn write_char(&self, c: char) {
self.write_byte(c as u8)
let mut b = [0u8; 4];
let _ = c.encode_utf8(&mut b);
for x in 0..c.len_utf8() {
self.write_byte(b[x]);
}
}
/// Display a string
@ -419,7 +424,7 @@ impl ConsoleOps for PreparedPL011Uart {
}
}
/// Receive a character
/// Receive a character -- FIXME: needs a state machine to read UTF-8 chars!
fn read_char(&self) -> char {
let mut ret = self.read_byte() as char;