fix: use API to leverage work

This commit is contained in:
elpekenin 2024-04-10 23:54:16 +02:00
parent 4c6818a86e
commit 3b48315bbd

View file

@ -21,26 +21,14 @@
LOG_MODULE_DECLARE(zmk, CONFIG_ZMK_LOG_LEVEL); LOG_MODULE_DECLARE(zmk, CONFIG_ZMK_LOG_LEVEL);
struct default_layer_settings_t { struct default_layer_settings_t {
uint8_t usb[ZMK_ENDPOINT_USB_COUNT]; uint8_t endpoint_defaults[ZMK_ENDPOINT_COUNT];
uint8_t ble[ZMK_ENDPOINT_BLE_COUNT];
}; };
static struct default_layer_settings_t default_layers = {0}; static struct default_layer_settings_t default_layers = {0};
static int apply_default_layer_config(struct zmk_endpoint_instance endpoint) { static int apply_default_layer_config(struct zmk_endpoint_instance endpoint) {
uint8_t layer = 0; uint8_t index = zmk_endpoint_instance_to_index(endpoint);
uint8_t layer = default_layers.endpoint_defaults[index];
switch (endpoint.transport) {
case ZMK_TRANSPORT_USB:
__ASSERT(ZMK_ENDPOINT_USB_COUNT == 1, "Unreachable");
layer = default_layers.usb[0];
break;
case ZMK_TRANSPORT_BLE:
__ASSERT(endpoint.ble.profile_index < ZMK_ENDPOINT_BLE_COUNT, "Unreachable");
layer = default_layers.ble[endpoint.ble.profile_index];
break;
}
int ret = zmk_keymap_layer_set_default(layer); int ret = zmk_keymap_layer_set_default(layer);
if (ret < 0) { if (ret < 0) {
@ -100,17 +88,8 @@ static int save_default_layer_setting(uint8_t layer, struct zmk_endpoint_instanc
return -EINVAL; return -EINVAL;
} }
switch (endpoint.transport) { uint8_t index = zmk_endpoint_instance_to_index(endpoint);
case ZMK_TRANSPORT_USB: default_layers.endpoint_defaults[index] = layer;
__ASSERT(ZMK_ENDPOINT_USB_COUNT == 1, "Unreachable");
default_layers.usb[0] = layer;
break;
case ZMK_TRANSPORT_BLE:
__ASSERT(endpoint.ble.profile_index < ZMK_ENDPOINT_BLE_COUNT, "Unreachable");
default_layers.ble[endpoint.ble.profile_index] = layer;
break;
}
int ret = settings_save_one("default_layer/settings", &default_layers, sizeof(default_layers)); int ret = settings_save_one("default_layer/settings", &default_layers, sizeof(default_layers));
if (ret < 0) { if (ret < 0) {
@ -118,12 +97,7 @@ static int save_default_layer_setting(uint8_t layer, struct zmk_endpoint_instanc
return ret; return ret;
} }
if (endpoint.transport == ZMK_TRANSPORT_USB) { LOG_INF("Updated default layer (%d) for endpoint (%d).", layer, index);
LOG_INF("Updated default layer (%d) for USB endpoint.", layer);
} else {
LOG_INF("Updated default layer (%d) for BLE endpoint %d.", layer,
endpoint.ble.profile_index);
}
return 0; return 0;
} }