@@ -747,12 +747,16 @@ static void ask_user_pairing_numeric_comparison(uint32_t code)
747747 bolos_ux_params_t ux_params ;
748748
749749 ux_params .u .pairing_request .type = BOLOS_UX_ASYNCHMODAL_PAIRING_REQUEST_NUMCOMP ;
750+ ux_params .ux_id = BOLOS_UX_ASYNCHMODAL_PAIRING_REQUEST ;
751+ ux_params .len = sizeof (ux_params .u .pairing_request );
752+ ledger_ble_data .pairing_in_progress = 1 ;
750753 ux_params .u .pairing_request .pairing_info_len = 6 ;
751754 SPRINTF (ux_params .u .pairing_request .pairing_info , "%06d" , (unsigned int ) code );
752- ux_params .ux_id = BOLOS_UX_ASYNCHMODAL_PAIRING_REQUEST ;
753- ux_params .len = sizeof (ux_params .u .pairing_request );
755+ #ifdef TARGET_STAX
756+ G_io_asynch_ux_callback .asynchmodal_end_callback = NULL ;
757+ #else // !TARGET_STAX
754758 G_io_asynch_ux_callback .asynchmodal_end_callback = rsp_user_pairing_numeric_comparison ;
755- ledger_ble_data . pairing_in_progress = 1 ;
759+ #endif // !TARGET_STAX
756760 os_ux (& ux_params );
757761}
758762
@@ -779,28 +783,35 @@ static void ask_user_pairing_passkey(void)
779783{
780784 bolos_ux_params_t ux_params ;
781785
782- ledger_ble_data .pairing_code = cx_rng_u32_range_func (0 , 1000000 , cx_rng_u32 );
783786 ux_params .u .pairing_request .type = BOLOS_UX_ASYNCHMODAL_PAIRING_REQUEST_PASSKEY ;
787+ ux_params .ux_id = BOLOS_UX_ASYNCHMODAL_PAIRING_REQUEST ;
788+ ux_params .len = sizeof (ux_params .u .pairing_request );
789+ ledger_ble_data .pairing_in_progress = 1 ;
790+ ledger_ble_data .pairing_code = cx_rng_u32_range_func (0 , 1000000 , cx_rng_u32 );
784791 ux_params .u .pairing_request .pairing_info_len = 6 ;
785792 SPRINTF (ux_params .u .pairing_request .pairing_info , "%06d" , ledger_ble_data .pairing_code );
786- ux_params .ux_id = BOLOS_UX_ASYNCHMODAL_PAIRING_REQUEST ;
787- ux_params .len = sizeof (ux_params .u .pairing_request );
793+ #ifdef TARGET_STAX
794+ G_io_asynch_ux_callback .asynchmodal_end_callback = NULL ;
795+ #else // !TARGET_STAX
788796 G_io_asynch_ux_callback .asynchmodal_end_callback = rsp_user_pairing_passkey ;
789- ledger_ble_data . pairing_in_progress = 1 ;
797+ #endif // !TARGET_STAX
790798 os_ux (& ux_params );
791799}
792800
793801static void rsp_user_pairing_passkey (unsigned int status )
794802{
795- if (status != BOLOS_UX_OK ) { // BLE_TODO
803+ if (status == BOLOS_UX_OK ) {
796804 end_pairing_ux (BOLOS_UX_ASYNCHMODAL_PAIRING_STATUS_ACCEPT_PASSKEY );
797805 ledger_ble_data .pairing_code = cx_rng_u32_range_func (0 , 1000000 , cx_rng_u32 );
806+ aci_gap_pass_key_resp (ledger_ble_data .connection .connection_handle ,
807+ ledger_ble_data .pairing_code );
808+ }
809+ else if (status == BOLOS_UX_IGNORE ) {
810+ ledger_ble_data .pairing_in_progress = 0 ;
798811 }
799812 else {
800813 end_pairing_ux (BOLOS_UX_ASYNCHMODAL_PAIRING_STATUS_CANCEL_PASSKEY );
801814 }
802- aci_gap_pass_key_resp (ledger_ble_data .connection .connection_handle ,
803- ledger_ble_data .pairing_code );
804815}
805816
806817static void attribute_modified (uint8_t * buffer , uint16_t length )
@@ -1146,6 +1157,16 @@ void LEDGER_BLE_reset_pairings(void)
11461157 }
11471158}
11481159
1160+ void LEDGER_BLE_accept_pairing (uint8_t status )
1161+ {
1162+ if (ledger_ble_data .pairing_in_progress == 1 ) {
1163+ rsp_user_pairing_numeric_comparison (status );
1164+ }
1165+ else if (ledger_ble_data .pairing_in_progress == 2 ) {
1166+ rsp_user_pairing_passkey (status );
1167+ }
1168+ }
1169+
11491170int hci_send_req (struct hci_request * p_cmd , uint8_t async )
11501171{
11511172 UNUSED (async );
0 commit comments