| /** @file |
| * @brief Bluetooth Hearing Access Service (HAS) Server role. |
| * |
| * Copyright (c) 2022 Codecoup |
| * |
| * SPDX-License-Identifier: Apache-2.0 |
| */ |
| |
| #include <zephyr/kernel.h> |
| #include <zephyr/sys/printk.h> |
| #include <zephyr/sys/util.h> |
| |
| #include <zephyr/bluetooth/audio/has.h> |
| |
| #define PRESET_INDEX_UNIVERSAL 1 |
| #define PRESET_INDEX_OUTDOOR 5 |
| #define PRESET_INDEX_NOISY_ENV 8 |
| #define PRESET_INDEX_OFFICE 22 |
| |
| static int select_cb(uint8_t index, bool sync) |
| { |
| printk("%s %u sync %d", __func__, index, sync); |
| |
| return 0; |
| } |
| |
| static void name_changed_cb(uint8_t index, const char *name) |
| { |
| printk("%s %u name %s", __func__, index, name); |
| } |
| |
| static const struct bt_has_preset_ops ops = { |
| .select = select_cb, |
| .name_changed = name_changed_cb, |
| }; |
| |
| int has_server_init(void) |
| { |
| int err; |
| |
| struct bt_has_preset_register_param param[] = { |
| { |
| .index = PRESET_INDEX_UNIVERSAL, |
| .properties = BT_HAS_PROP_AVAILABLE | BT_HAS_PROP_WRITABLE, |
| .name = "Universal", |
| .ops = &ops, |
| }, |
| { |
| .index = PRESET_INDEX_OUTDOOR, |
| .properties = BT_HAS_PROP_AVAILABLE | BT_HAS_PROP_WRITABLE, |
| .name = "Outdoor", |
| .ops = &ops, |
| }, |
| { |
| .index = PRESET_INDEX_NOISY_ENV, |
| .properties = BT_HAS_PROP_AVAILABLE | BT_HAS_PROP_WRITABLE, |
| .name = "Noisy environment", |
| .ops = &ops, |
| }, |
| { |
| .index = PRESET_INDEX_OFFICE, |
| .properties = BT_HAS_PROP_AVAILABLE | BT_HAS_PROP_WRITABLE, |
| .name = "Office", |
| .ops = &ops, |
| }, |
| }; |
| |
| for (size_t i = 0; i < ARRAY_SIZE(param); i++) { |
| err = bt_has_preset_register(¶m[i]); |
| if (err != 0) { |
| return err; |
| } |
| } |
| |
| return 0; |
| } |