@@ -4,9 +4,8 @@ use crate::{
4
4
uxapp:: { UxEvent , BOLOS_UX_OK } ,
5
5
} ;
6
6
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,
10
9
} ;
11
10
12
11
use crate :: ui:: bitmaps:: { Glyph , WARNING } ;
@@ -23,23 +22,23 @@ const MAX_CHAR_PER_LINE: usize = 17;
23
22
/// Handles communication to filter
24
23
/// out actual events, and converts key
25
24
/// 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
+ }
41
40
}
42
- }*/
41
+ }
43
42
None
44
43
}
45
44
0 commit comments