diff --git a/src/usb_ctap_hid.rs b/src/usb_ctap_hid.rs index f72e3d9f7af09c82fcec7e491de5e3b9728dd930..ace1dc2022d93bb96b58ed22ea47f664b57ccc22 100644 --- a/src/usb_ctap_hid.rs +++ b/src/usb_ctap_hid.rs @@ -19,6 +19,7 @@ use core::fmt::Write; use libtock::console::Console; use libtock::result::{EALREADY, EBUSY, TockResult, TockError}; use libtock::syscalls; +use libtock::callback::{Identity0Consumer, Identity1Consumer}; use libtock::timer::{Duration}; const DRIVER_NUMBER: usize = 0x20009; @@ -70,8 +71,8 @@ pub fn recv(buf: &mut [u8; 64]) -> bool { } let done = Cell::new(false); - let mut alarm = |_, _, _| done.set(true); - let subscription = syscalls::subscribe(DRIVER_NUMBER, subscribe_nr::RECEIVE, &mut alarm); + let mut alarm = || done.set(true); + let subscription = syscalls::subscribe::<Identity0Consumer, _>(DRIVER_NUMBER, subscribe_nr::RECEIVE, &mut alarm); if subscription.is_err() { return false; } @@ -97,8 +98,8 @@ pub fn send(buf: &mut [u8; 64]) -> bool { } let done = Cell::new(false); - let mut alarm = |_, _, _| done.set(true); - let subscription = syscalls::subscribe(DRIVER_NUMBER, subscribe_nr::TRANSMIT, &mut alarm); + let mut alarm = || done.set(true); + let subscription = syscalls::subscribe::<Identity0Consumer,_>(DRIVER_NUMBER, subscribe_nr::TRANSMIT, &mut alarm); if subscription.is_err() { return false; } @@ -141,7 +142,7 @@ pub fn send_or_recv(buf: &mut [u8; 64]) -> SendOrRecvStatus { } let status = Cell::new(None); - let mut alarm = |direction, _, _| { + let mut alarm = |direction| { status.set(Some(match direction { subscribe_nr::callback_status::TRANSMITTED => SendOrRecvStatus::Sent, subscribe_nr::callback_status::RECEIVED => SendOrRecvStatus::Received, @@ -151,7 +152,7 @@ pub fn send_or_recv(buf: &mut [u8; 64]) -> SendOrRecvStatus { }; let subscription = - syscalls::subscribe(DRIVER_NUMBER, subscribe_nr::TRANSMIT_OR_RECEIVE, &mut alarm); + syscalls::subscribe::<Identity1Consumer, _>(DRIVER_NUMBER, subscribe_nr::TRANSMIT_OR_RECEIVE, &mut alarm); if subscription.is_err() { return SendOrRecvStatus::Error; } @@ -232,7 +233,7 @@ fn recv_with_timeout_detail( } let status = Cell::new(None); - let mut alarm = |direction, _, _| { + let mut alarm = |direction| { status.set(Some(match direction { subscribe_nr::callback_status::RECEIVED => SendOrRecvStatus::Received, // Unknown direction or "transmitted" sent by the kernel. @@ -240,7 +241,7 @@ fn recv_with_timeout_detail( })); }; - let subscription = syscalls::subscribe(DRIVER_NUMBER, subscribe_nr::RECEIVE, &mut alarm); + let subscription = syscalls::subscribe::<Identity1Consumer, _>(DRIVER_NUMBER, subscribe_nr::RECEIVE, &mut alarm); if subscription.is_err() { return Some(SendOrRecvStatus::Error); } @@ -340,7 +341,7 @@ fn send_or_recv_with_timeout_detail( } let status = Cell::new(None); - let mut alarm = |direction, _, _| { + let mut alarm = |direction| { status.set(Some(match direction { subscribe_nr::callback_status::TRANSMITTED => SendOrRecvStatus::Sent, subscribe_nr::callback_status::RECEIVED => SendOrRecvStatus::Received, @@ -350,7 +351,7 @@ fn send_or_recv_with_timeout_detail( }; let subscription = - syscalls::subscribe(DRIVER_NUMBER, subscribe_nr::TRANSMIT_OR_RECEIVE, &mut alarm); + syscalls::subscribe::<Identity1Consumer, _>(DRIVER_NUMBER, subscribe_nr::TRANSMIT_OR_RECEIVE, &mut alarm); if subscription.is_err() { return Some(SendOrRecvStatus::Error); } @@ -449,4 +450,4 @@ pub(crate) fn yieldk_for<F: Fn() -> bool>(cond: F) { syscalls::raw::yieldk(); } } -} \ No newline at end of file +}