diff --git a/app/src/ble.c b/app/src/ble.c index 776730fe..5e180d81 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,10 @@ static int ble_save_profile(void) { } int zmk_ble_prof_select(uint8_t index) { + if (index == 255) { + index = last_profile; + } + if (index >= ZMK_BLE_PROFILE_COUNT) { return -ERANGE; } @@ -274,6 +279,7 @@ int zmk_ble_prof_select(uint8_t index) { return 0; } + last_profile = active_profile; active_profile = index; ble_save_profile(); @@ -644,7 +650,7 @@ static void zmk_ble_ready(int err) { LOG_ERR("Bluetooth init failed (err %d)", err); return; } - + last_profile = active_profile; update_advertising(); }