Skip to content

Commit 8c3d298

Browse files
authored
Merge pull request #41 from Neotron-Compute/update-os
Update to OS 0.3.0
2 parents 12155ca + aea3ca3 commit 8c3d298

4 files changed

Lines changed: 13 additions & 143 deletions

File tree

Cargo.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ rp-pico = { version = "0.6", default-features = false, features = [ "rt", "criti
1515
# Cortex-M run-time (or start-up) code
1616
cortex-m-rt = "0.7"
1717
# The BIOS to OS API
18-
neotron-common-bios = "0.7.0"
18+
neotron-common-bios = "0.8.0"
1919
# For the RP2040 bootloader
2020
rp2040-boot2 = "0.3.0"
2121
# For hardware abstraction traits
@@ -39,7 +39,7 @@ neotron-bmc-protocol = { version = "0.1.0", git = "https://github.com/neotron-co
3939
# Time and frequency related functions
4040
fugit = "0.3"
4141
# PS/2 scancode decoding
42-
pc-keyboard = "0.6"
42+
pc-keyboard = "0.7.0"
4343
# Useful queues and other structures
4444
heapless = "0.7"
4545

src/main.rs

Lines changed: 9 additions & 139 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,7 @@ use embedded_hal::{
7070
};
7171
use fugit::RateExtU32;
7272
use panic_probe as _;
73+
use pc_keyboard::ScancodeSet;
7374
use rp_pico::{
7475
self,
7576
hal::{
@@ -107,7 +108,7 @@ struct Hardware {
107108
/// The last CS pin we selected
108109
last_cs: u8,
109110
/// Our keyboard decoder
110-
keyboard: pc_keyboard::Keyboard<pc_keyboard::layouts::Uk105Key, pc_keyboard::ScancodeSet2>,
111+
keyboard: pc_keyboard::ScancodeSet2,
111112
/// Our queue of HID events
112113
event_queue: heapless::Deque<neotron_common_bios::hid::HidEvent, 16>,
113114
/// A place to send/receive bytes to/from the BMC
@@ -623,7 +624,7 @@ impl Hardware {
623624
delay,
624625
led_state: 0,
625626
last_cs: 0,
626-
keyboard: pc_keyboard::Keyboard::new(pc_keyboard::HandleControl::Ignore),
627+
keyboard: pc_keyboard::ScancodeSet2::new(),
627628
event_queue: heapless::Deque::new(),
628629
bmc_buffer: [0u8; 64],
629630
interrupts_pending: 0,
@@ -1328,7 +1329,7 @@ pub extern "C" fn hid_get_event() -> common::Result<common::Option<common::hid::
13281329
let slice = if n >= 8 { &buffer } else { &buffer[0..n] };
13291330
defmt::info!("{} bytes in KB FIFO, got: {=[u8]:x}", n, &slice);
13301331
for b in slice.iter() {
1331-
match hw.keyboard.add_byte(*b) {
1332+
match hw.keyboard.advance_state(*b) {
13321333
Ok(Some(key_event)) => {
13331334
convert_hid_event(key_event, &mut hw.event_queue);
13341335
}
@@ -1337,7 +1338,6 @@ pub extern "C" fn hid_get_event() -> common::Result<common::Option<common::hid::
13371338
}
13381339
Err(_e) => {
13391340
defmt::warn!("Keyboard decode error!");
1340-
hw.keyboard.clear();
13411341
}
13421342
}
13431343
}
@@ -1368,155 +1368,25 @@ fn convert_hid_event(
13681368
match pc_keyboard_ev.state {
13691369
pc_keyboard::KeyState::Down => {
13701370
ev_queue
1371-
.push_back(common::hid::HidEvent::KeyPress(convert_hid_code(
1372-
pc_keyboard_ev.code,
1373-
)))
1371+
.push_back(common::hid::HidEvent::KeyPress(pc_keyboard_ev.code))
13741372
.unwrap();
13751373
}
13761374
pc_keyboard::KeyState::Up => {
13771375
ev_queue
1378-
.push_back(common::hid::HidEvent::KeyRelease(convert_hid_code(
1379-
pc_keyboard_ev.code,
1380-
)))
1376+
.push_back(common::hid::HidEvent::KeyRelease(pc_keyboard_ev.code))
13811377
.unwrap();
13821378
}
13831379
pc_keyboard::KeyState::SingleShot => {
13841380
ev_queue
1385-
.push_back(common::hid::HidEvent::KeyPress(convert_hid_code(
1386-
pc_keyboard_ev.code,
1387-
)))
1381+
.push_back(common::hid::HidEvent::KeyPress(pc_keyboard_ev.code))
13881382
.unwrap();
13891383
ev_queue
1390-
.push_back(common::hid::HidEvent::KeyRelease(convert_hid_code(
1391-
pc_keyboard_ev.code,
1392-
)))
1384+
.push_back(common::hid::HidEvent::KeyRelease(pc_keyboard_ev.code))
13931385
.unwrap();
13941386
}
13951387
}
13961388
}
13971389

1398-
fn convert_hid_code(pc_code: pc_keyboard::KeyCode) -> common::hid::KeyCode {
1399-
match pc_code {
1400-
pc_keyboard::KeyCode::AltLeft => common::hid::KeyCode::AltLeft,
1401-
pc_keyboard::KeyCode::AltRight => common::hid::KeyCode::AltRight,
1402-
pc_keyboard::KeyCode::ArrowDown => common::hid::KeyCode::ArrowDown,
1403-
pc_keyboard::KeyCode::ArrowLeft => common::hid::KeyCode::ArrowLeft,
1404-
pc_keyboard::KeyCode::ArrowRight => common::hid::KeyCode::ArrowRight,
1405-
pc_keyboard::KeyCode::ArrowUp => common::hid::KeyCode::ArrowUp,
1406-
pc_keyboard::KeyCode::BackSlash => common::hid::KeyCode::BackSlash,
1407-
pc_keyboard::KeyCode::Backspace => common::hid::KeyCode::Backspace,
1408-
pc_keyboard::KeyCode::BackTick => common::hid::KeyCode::BackTick,
1409-
pc_keyboard::KeyCode::BracketSquareLeft => common::hid::KeyCode::BracketSquareLeft,
1410-
pc_keyboard::KeyCode::BracketSquareRight => common::hid::KeyCode::BracketSquareRight,
1411-
pc_keyboard::KeyCode::Break => common::hid::KeyCode::PauseBreak,
1412-
pc_keyboard::KeyCode::CapsLock => common::hid::KeyCode::CapsLock,
1413-
pc_keyboard::KeyCode::Comma => common::hid::KeyCode::Comma,
1414-
pc_keyboard::KeyCode::ControlLeft => common::hid::KeyCode::ControlLeft,
1415-
pc_keyboard::KeyCode::ControlRight => common::hid::KeyCode::ControlRight,
1416-
pc_keyboard::KeyCode::Delete => common::hid::KeyCode::Delete,
1417-
pc_keyboard::KeyCode::End => common::hid::KeyCode::End,
1418-
pc_keyboard::KeyCode::Enter => common::hid::KeyCode::Enter,
1419-
pc_keyboard::KeyCode::Escape => common::hid::KeyCode::Escape,
1420-
pc_keyboard::KeyCode::Equals => common::hid::KeyCode::Equals,
1421-
pc_keyboard::KeyCode::F1 => common::hid::KeyCode::F1,
1422-
pc_keyboard::KeyCode::F2 => common::hid::KeyCode::F2,
1423-
pc_keyboard::KeyCode::F3 => common::hid::KeyCode::F3,
1424-
pc_keyboard::KeyCode::F4 => common::hid::KeyCode::F4,
1425-
pc_keyboard::KeyCode::F5 => common::hid::KeyCode::F5,
1426-
pc_keyboard::KeyCode::F6 => common::hid::KeyCode::F6,
1427-
pc_keyboard::KeyCode::F7 => common::hid::KeyCode::F7,
1428-
pc_keyboard::KeyCode::F8 => common::hid::KeyCode::F8,
1429-
pc_keyboard::KeyCode::F9 => common::hid::KeyCode::F9,
1430-
pc_keyboard::KeyCode::F10 => common::hid::KeyCode::F10,
1431-
pc_keyboard::KeyCode::F11 => common::hid::KeyCode::F11,
1432-
pc_keyboard::KeyCode::F12 => common::hid::KeyCode::F12,
1433-
pc_keyboard::KeyCode::Fullstop => common::hid::KeyCode::Fullstop,
1434-
pc_keyboard::KeyCode::Home => common::hid::KeyCode::Home,
1435-
pc_keyboard::KeyCode::Insert => common::hid::KeyCode::Insert,
1436-
pc_keyboard::KeyCode::Key1 => common::hid::KeyCode::Key1,
1437-
pc_keyboard::KeyCode::Key2 => common::hid::KeyCode::Key2,
1438-
pc_keyboard::KeyCode::Key3 => common::hid::KeyCode::Key3,
1439-
pc_keyboard::KeyCode::Key4 => common::hid::KeyCode::Key4,
1440-
pc_keyboard::KeyCode::Key5 => common::hid::KeyCode::Key5,
1441-
pc_keyboard::KeyCode::Key6 => common::hid::KeyCode::Key6,
1442-
pc_keyboard::KeyCode::Key7 => common::hid::KeyCode::Key7,
1443-
pc_keyboard::KeyCode::Key8 => common::hid::KeyCode::Key8,
1444-
pc_keyboard::KeyCode::Key9 => common::hid::KeyCode::Key9,
1445-
pc_keyboard::KeyCode::Key0 => common::hid::KeyCode::Key0,
1446-
pc_keyboard::KeyCode::Menus => common::hid::KeyCode::Menus,
1447-
pc_keyboard::KeyCode::Minus => common::hid::KeyCode::Minus,
1448-
pc_keyboard::KeyCode::Numpad0 => common::hid::KeyCode::Numpad0,
1449-
pc_keyboard::KeyCode::Numpad1 => common::hid::KeyCode::Numpad1,
1450-
pc_keyboard::KeyCode::Numpad2 => common::hid::KeyCode::Numpad2,
1451-
pc_keyboard::KeyCode::Numpad3 => common::hid::KeyCode::Numpad3,
1452-
pc_keyboard::KeyCode::Numpad4 => common::hid::KeyCode::Numpad4,
1453-
pc_keyboard::KeyCode::Numpad5 => common::hid::KeyCode::Numpad5,
1454-
pc_keyboard::KeyCode::Numpad6 => common::hid::KeyCode::Numpad6,
1455-
pc_keyboard::KeyCode::Numpad7 => common::hid::KeyCode::Numpad7,
1456-
pc_keyboard::KeyCode::Numpad8 => common::hid::KeyCode::Numpad8,
1457-
pc_keyboard::KeyCode::Numpad9 => common::hid::KeyCode::Numpad9,
1458-
pc_keyboard::KeyCode::NumpadEnter => common::hid::KeyCode::NumpadEnter,
1459-
pc_keyboard::KeyCode::NumpadLock => common::hid::KeyCode::NumpadLock,
1460-
pc_keyboard::KeyCode::NumpadSlash => common::hid::KeyCode::NumpadSlash,
1461-
pc_keyboard::KeyCode::NumpadStar => common::hid::KeyCode::NumpadStar,
1462-
pc_keyboard::KeyCode::NumpadMinus => common::hid::KeyCode::NumpadMinus,
1463-
pc_keyboard::KeyCode::NumpadPeriod => common::hid::KeyCode::NumpadPeriod,
1464-
pc_keyboard::KeyCode::NumpadPlus => common::hid::KeyCode::NumpadPlus,
1465-
pc_keyboard::KeyCode::PageDown => common::hid::KeyCode::PageDown,
1466-
pc_keyboard::KeyCode::PageUp => common::hid::KeyCode::PageUp,
1467-
pc_keyboard::KeyCode::PauseBreak => common::hid::KeyCode::PauseBreak,
1468-
pc_keyboard::KeyCode::PrintScreen => common::hid::KeyCode::PrintScreen,
1469-
pc_keyboard::KeyCode::ScrollLock => common::hid::KeyCode::ScrollLock,
1470-
pc_keyboard::KeyCode::SemiColon => common::hid::KeyCode::SemiColon,
1471-
pc_keyboard::KeyCode::ShiftLeft => common::hid::KeyCode::ShiftLeft,
1472-
pc_keyboard::KeyCode::ShiftRight => common::hid::KeyCode::ShiftRight,
1473-
pc_keyboard::KeyCode::Slash => common::hid::KeyCode::Slash,
1474-
pc_keyboard::KeyCode::Spacebar => common::hid::KeyCode::Spacebar,
1475-
pc_keyboard::KeyCode::Tab => common::hid::KeyCode::Tab,
1476-
pc_keyboard::KeyCode::Quote => common::hid::KeyCode::Quote,
1477-
pc_keyboard::KeyCode::WindowsLeft => common::hid::KeyCode::WindowsLeft,
1478-
pc_keyboard::KeyCode::WindowsRight => common::hid::KeyCode::WindowsRight,
1479-
pc_keyboard::KeyCode::A => common::hid::KeyCode::A,
1480-
pc_keyboard::KeyCode::B => common::hid::KeyCode::B,
1481-
pc_keyboard::KeyCode::C => common::hid::KeyCode::C,
1482-
pc_keyboard::KeyCode::D => common::hid::KeyCode::D,
1483-
pc_keyboard::KeyCode::E => common::hid::KeyCode::E,
1484-
pc_keyboard::KeyCode::F => common::hid::KeyCode::F,
1485-
pc_keyboard::KeyCode::G => common::hid::KeyCode::G,
1486-
pc_keyboard::KeyCode::H => common::hid::KeyCode::H,
1487-
pc_keyboard::KeyCode::I => common::hid::KeyCode::I,
1488-
pc_keyboard::KeyCode::J => common::hid::KeyCode::J,
1489-
pc_keyboard::KeyCode::K => common::hid::KeyCode::K,
1490-
pc_keyboard::KeyCode::L => common::hid::KeyCode::L,
1491-
pc_keyboard::KeyCode::M => common::hid::KeyCode::M,
1492-
pc_keyboard::KeyCode::N => common::hid::KeyCode::N,
1493-
pc_keyboard::KeyCode::O => common::hid::KeyCode::O,
1494-
pc_keyboard::KeyCode::P => common::hid::KeyCode::P,
1495-
pc_keyboard::KeyCode::Q => common::hid::KeyCode::Q,
1496-
pc_keyboard::KeyCode::R => common::hid::KeyCode::R,
1497-
pc_keyboard::KeyCode::S => common::hid::KeyCode::S,
1498-
pc_keyboard::KeyCode::T => common::hid::KeyCode::T,
1499-
pc_keyboard::KeyCode::U => common::hid::KeyCode::U,
1500-
pc_keyboard::KeyCode::V => common::hid::KeyCode::V,
1501-
pc_keyboard::KeyCode::W => common::hid::KeyCode::W,
1502-
pc_keyboard::KeyCode::X => common::hid::KeyCode::X,
1503-
pc_keyboard::KeyCode::Y => common::hid::KeyCode::Y,
1504-
pc_keyboard::KeyCode::Z => common::hid::KeyCode::Z,
1505-
pc_keyboard::KeyCode::HashTilde => common::hid::KeyCode::HashTilde,
1506-
pc_keyboard::KeyCode::PrevTrack => common::hid::KeyCode::PrevTrack,
1507-
pc_keyboard::KeyCode::NextTrack => common::hid::KeyCode::NextTrack,
1508-
pc_keyboard::KeyCode::Mute => common::hid::KeyCode::Mute,
1509-
pc_keyboard::KeyCode::Calculator => common::hid::KeyCode::Calculator,
1510-
pc_keyboard::KeyCode::Play => common::hid::KeyCode::Play,
1511-
pc_keyboard::KeyCode::Stop => common::hid::KeyCode::Stop,
1512-
pc_keyboard::KeyCode::VolumeDown => common::hid::KeyCode::VolumeDown,
1513-
pc_keyboard::KeyCode::VolumeUp => common::hid::KeyCode::VolumeUp,
1514-
pc_keyboard::KeyCode::WWWHome => common::hid::KeyCode::WWWHome,
1515-
pc_keyboard::KeyCode::PowerOnTestOk => common::hid::KeyCode::PowerOnTestOk,
1516-
_ => common::hid::KeyCode::X,
1517-
}
1518-
}
1519-
15201390
/// Control the keyboard LEDs.
15211391
pub extern "C" fn hid_set_leds(_leds: common::hid::KeyboardLeds) -> common::Result<()> {
15221392
common::Result::Err(common::Error::Unimplemented)
@@ -1597,7 +1467,7 @@ extern "C" fn i2c_write_read(
15971467

15981468
extern "C" fn audio_mixer_channel_get_info(
15991469
_audio_mixer_id: u8,
1600-
) -> common::Result<common::audio::MixerChannelInfo> {
1470+
) -> common::Option<common::audio::MixerChannelInfo> {
16011471
unimplemented!();
16021472
}
16031473

28.4 KB
Binary file not shown.

src/thumbv6m-none-eabi-flash1002-libneotron_os.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
This is Neotron OS version v0.2.0
1+
This is Neotron OS version v0.3.0
22

3-
Taken from https://github.com/Neotron-Compute/Neotron-OS/releases/tag/v0.2.0
3+
Taken from https://github.com/Neotron-Compute/Neotron-OS/releases/tag/v0.3.0
44

55
This program is free software: you can redistribute it and/or modify
66
it under the terms of the GNU General Public License as published by

0 commit comments

Comments
 (0)