| /* |
| * Copyright (c) 2019 Oticon A/S |
| * |
| * SPDX-License-Identifier: Apache-2.0 |
| */ |
| |
| #include <string.h> |
| |
| #include <zephyr/settings/settings.h> |
| |
| #include <zephyr/bluetooth/bluetooth.h> |
| |
| #include "ll_settings.h" |
| |
| #include <zephyr/logging/log.h> |
| |
| LOG_MODULE_REGISTER(bt_ctlr_ll_settings, LOG_LEVEL_DBG); |
| |
| #include "hal/debug.h" |
| |
| #if defined(CONFIG_BT_CTLR_VERSION_SETTINGS) |
| |
| static uint16_t company_id = CONFIG_BT_CTLR_COMPANY_ID; |
| static uint16_t subversion = CONFIG_BT_CTLR_SUBVERSION_NUMBER; |
| |
| uint16_t ll_settings_company_id(void) |
| { |
| return company_id; |
| } |
| uint16_t ll_settings_subversion_number(void) |
| { |
| return subversion; |
| } |
| |
| #endif /* CONFIG_BT_CTLR_VERSION_SETTINGS */ |
| |
| #if defined(CONFIG_BT_CTLR_SMI_TX_SETTING) |
| |
| static uint8_t smi_tx; |
| |
| bool ll_settings_smi_tx(void) |
| { |
| return smi_tx; |
| } |
| |
| #endif /* CONFIG_BT_CTLR_SMI_TX_SETTING */ |
| |
| static int ctlr_set(const char *name, size_t len_rd, |
| settings_read_cb read_cb, void *store) |
| { |
| ssize_t len; |
| int nlen; |
| const char *next; |
| |
| nlen = settings_name_next(name, &next); |
| |
| #if defined(CONFIG_BT_CTLR_VERSION_SETTINGS) |
| if (!strncmp(name, "company", nlen)) { |
| len = read_cb(store, &company_id, sizeof(company_id)); |
| if (len < 0) { |
| LOG_ERR("Failed to read Company Id from storage" |
| " (err %zd)", len); |
| } else { |
| LOG_DBG("Company Id set to %04x", company_id); |
| } |
| return 0; |
| } |
| if (!strncmp(name, "subver", nlen)) { |
| len = read_cb(store, &subversion, sizeof(subversion)); |
| if (len < 0) { |
| LOG_ERR("Failed to read Subversion from storage" |
| " (err %zd)", len); |
| } else { |
| LOG_DBG("Subversion set to %04x", subversion); |
| } |
| return 0; |
| } |
| #endif /* CONFIG_BT_CTLR_VERSION_SETTINGS */ |
| |
| #if defined(CONFIG_BT_CTLR_SMI_TX_SETTING) |
| if (!strncmp(name, "smi_tx", nlen)) { |
| len = read_cb(store, &smi_tx, sizeof(smi_tx)); |
| if (len < 0) { |
| LOG_ERR("Failed to read SMI TX flag from storage" |
| " (err %zd)", len); |
| } else { |
| LOG_DBG("SMI TX flag set to %04x", smi_tx); |
| } |
| return 0; |
| } |
| #endif /* CONFIG_BT_CTLR_SMI_TX_SETTING */ |
| |
| return 0; |
| } |
| |
| SETTINGS_STATIC_HANDLER_DEFINE(bt_ctlr, "bt/ctlr", NULL, ctlr_set, NULL, NULL); |