Skip to content

Commit

Permalink
cleanup(ble): gate in-app BLE pairing
Browse files Browse the repository at this point in the history
  • Loading branch information
yhql committed Aug 9, 2023
1 parent aeeab60 commit a0174c4
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 0 deletions.
2 changes: 2 additions & 0 deletions Makefile.defines
Original file line number Diff line number Diff line change
Expand Up @@ -179,6 +179,7 @@ DEFINES += HAVE_BAGL_FONT_INTER_REGULAR_24PX
DEFINES += HAVE_BAGL_FONT_INTER_SEMIBOLD_24PX
DEFINES += HAVE_BAGL_FONT_INTER_MEDIUM_32PX
DEFINES += HAVE_BAGL_FONT_HMALPHAMONO_MEDIUM_32PX
DEFINES += HAVE_INAPP_BLE_PAIRING
DEFINES += HAVE_NBGL
DEFINES += HAVE_PIEZO_SOUND
DEFINES += HAVE_SE_TOUCH
Expand Down Expand Up @@ -212,6 +213,7 @@ DEFINES += HAVE_MCU_SERIAL_STORAGE
DEFINES += HAVE_FONTS
# already defined within apps
# DEFINES += HAVE_BLE
DEFINES += HAVE_INAPP_BLE_PAIRING
DEFINES += HAVE_BATTERY
endif

Expand Down
12 changes: 12 additions & 0 deletions lib_blewbxx_impl/src/ledger_ble.c
Original file line number Diff line number Diff line change
Expand Up @@ -164,11 +164,13 @@ static void init_mngr(uint16_t opcode, const uint8_t *buffer, uint16_t length);
static void hci_evt_cmd_complete(const uint8_t *buffer, uint16_t length);
static void hci_evt_le_meta_evt(const uint8_t *buffer, uint16_t length);
static void hci_evt_vendor(const uint8_t *buffer, uint16_t length);
#ifdef HAVE_INAPP_BLE_PAIRING
static void end_pairing_ux(uint8_t pairing_ok);
static void ask_user_pairing_numeric_comparison(uint32_t code);
static void rsp_user_pairing_numeric_comparison(unsigned int status);
static void ask_user_pairing_passkey(void);
static void rsp_user_pairing_passkey(unsigned int status);
#endif // HAVE_INAPP_BLE_PAIRING
static void attribute_modified(const uint8_t *buffer, uint16_t length);
static void write_permit_request(const uint8_t *buffer, uint16_t length);
static void advertising_enable(uint8_t enable);
Expand Down Expand Up @@ -554,7 +556,9 @@ static void hci_evt_cmd_complete(const uint8_t *buffer, uint16_t length)
if (ledger_ble_data.connection.connection_handle != 0xFFFF) {
if (G_io_app.disabling_advertising) {
// Connected & ordered to disable ble, force disconnection
#ifdef HAVE_INAPP_BLE_PAIRING
end_pairing_ux(BOLOS_UX_ASYNCHMODAL_PAIRING_STATUS_FAILED);
#endif // HAVE_INAPP_BLE_PAIRING
LEDGER_BLE_init();
}
}
Expand Down Expand Up @@ -670,6 +674,7 @@ static void hci_evt_vendor(const uint8_t *buffer, uint16_t length)

switch (opcode) {

#ifdef HAVE_INAPP_BLE_PAIRING
case ACI_GAP_PAIRING_COMPLETE_VSEVT_CODE:
LOG_BLE("PAIRING");
switch (buffer[4]) {
Expand Down Expand Up @@ -710,6 +715,7 @@ static void hci_evt_vendor(const uint8_t *buffer, uint16_t length)
LOG_BLE("NUMERIC COMP : %d\n", U4LE(buffer, 4));
ask_user_pairing_numeric_comparison(U4LE(buffer, 4));
break;
#endif // HAVE_INAPP_BLE_PAIRING

case ACI_GATT_ATTRIBUTE_MODIFIED_VSEVT_CODE:
attribute_modified(&buffer[4], length-4);
Expand Down Expand Up @@ -740,7 +746,9 @@ static void hci_evt_vendor(const uint8_t *buffer, uint16_t length)

case ACI_GATT_PROC_TIMEOUT_VSEVT_CODE:
LOG_BLE("PROCEDURE TIMEOUT\n");
#ifdef HAVE_INAPP_BLE_PAIRING
end_pairing_ux(BOLOS_UX_ASYNCHMODAL_PAIRING_STATUS_FAILED);
#endif // HAVE_INAPP_BLE_PAIRING
LEDGER_BLE_init();
break;

Expand All @@ -750,6 +758,7 @@ static void hci_evt_vendor(const uint8_t *buffer, uint16_t length)
}
}

#ifdef HAVE_INAPP_BLE_PAIRING
static void end_pairing_ux(uint8_t pairing_ok)
{
bolos_ux_params_t ux_params;
Expand Down Expand Up @@ -821,6 +830,7 @@ static void rsp_user_pairing_passkey(unsigned int status)
aci_gap_pass_key_resp(ledger_ble_data.connection.connection_handle,
ledger_ble_data.pairing_code);
}
#endif // HAVE_INAPP_BLE_PAIRING

static void attribute_modified(const uint8_t *buffer, uint16_t length)
{
Expand Down Expand Up @@ -1074,7 +1084,9 @@ void LEDGER_BLE_receive(const uint8_t* spi_buffer)
ledger_ble_data.connection.encrypted = 0;
ledger_ble_data.transfer_mode_enable = 0;
G_io_app.transfer_mode = 0;
#ifdef HAVE_INAPP_BLE_PAIRING
end_pairing_ux(BOLOS_UX_ASYNCHMODAL_PAIRING_STATUS_FAILED);
#endif // HAVE_INAPP_BLE_PAIRING
if (spi_buffer[9] != 0x28) { // Error code : Instant Passed
start_advertising();
}
Expand Down

0 comments on commit a0174c4

Please sign in to comment.