diff --git a/app/src/ble.c b/app/src/ble.c index 7e1ae7d4..bb8fa106 100644 --- a/app/src/ble.c +++ b/app/src/ble.c @@ -61,6 +61,7 @@ enum advertising_type { static struct zmk_ble_profile profiles[ZMK_BLE_PROFILE_COUNT]; static uint8_t active_profile; +static uint8_t last_profile; #define DEVICE_NAME CONFIG_BT_DEVICE_NAME #define DEVICE_NAME_LEN (sizeof(DEVICE_NAME) - 1) @@ -265,6 +266,11 @@ static int ble_save_profile(void) { } int zmk_ble_prof_select(uint8_t index) { + if (index == 255) { + index = last_profile; + last_profile = active_profile; + } + if (index >= ZMK_BLE_PROFILE_COUNT) { return -ERANGE; } @@ -625,7 +631,7 @@ static void zmk_ble_ready(int err) { LOG_ERR("Bluetooth init failed (err %d)", err); return; } - + last_profile = active_profile; update_advertising(); }