Skip to content

Commit 9bb89d9

Browse files
sportron-ledgeryogh333
authored andcommitted
[io]: Handle get_event with revamp
1 parent 5d227b6 commit 9bb89d9

File tree

2 files changed

+19
-20
lines changed

2 files changed

+19
-20
lines changed

ledger_device_sdk/src/io.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -313,7 +313,7 @@ impl Comm {
313313
None
314314
}
315315

316-
pub fn process_event<T>(&mut self, mut seph_buffer: [u8; 272], length: i32) -> Option<Event<T>>
316+
pub fn process_event<T>(&mut self, seph_buffer: [u8; 272], length: i32) -> Option<Event<T>>
317317
where
318318
T: TryFrom<ApduHeader>,
319319
Reply: From<<T as TryFrom<ApduHeader>>::Error>,

ledger_device_sdk/src/ui/gadgets.rs

Lines changed: 18 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,8 @@ use crate::{
44
uxapp::{UxEvent, BOLOS_UX_OK},
55
};
66
use ledger_secure_sdk_sys::{
7-
//buttons::{get_button_event, ButtonEvent, ButtonsState},
8-
buttons::{ButtonEvent, ButtonsState},
9-
//seph,
7+
buttons::{get_button_event, ButtonEvent, ButtonsState},
8+
seph,
109
};
1110

1211
use crate::ui::bitmaps::{Glyph, WARNING};
@@ -23,23 +22,23 @@ const MAX_CHAR_PER_LINE: usize = 17;
2322
/// Handles communication to filter
2423
/// out actual events, and converts key
2524
/// events into presses/releases
26-
/// TODO_IO
27-
pub fn get_event(_buttons: &mut ButtonsState) -> Option<ButtonEvent> {
28-
/*if !seph::is_status_sent() {
29-
seph::send_general_status();
30-
}
31-
32-
// TODO: Receiving an APDU while in UX will lead to .. exit ?
33-
while seph::is_status_sent() {
34-
seph::seph_recv(&mut buttons.cmd_buffer, 0);
35-
let tag = buttons.cmd_buffer[0];
36-
37-
// button push event
38-
if tag == 0x05 {
39-
let button_info = buttons.cmd_buffer[3] >> 1;
40-
return get_button_event(buttons, button_info);
25+
pub fn get_event(buttons: &mut ButtonsState) -> Option<ButtonEvent> {
26+
let mut io_buffer = [0u8; 273];
27+
let status = seph::io_rx(&mut io_buffer, true);
28+
if status > 0 {
29+
let packet_type = io_buffer[0];
30+
match packet_type {
31+
0x01 | 0x02 => {
32+
// SE or SEPH event
33+
if io_buffer[1] == 0x05 {
34+
let button_info = io_buffer[4] >> 1;
35+
return get_button_event(buttons, button_info);
36+
}
37+
}
38+
_ => {
39+
}
4140
}
42-
}*/
41+
}
4342
None
4443
}
4544

0 commit comments

Comments
 (0)