blob: 9410c7b0f75fe38ba2c8a19351b4fc819e0e6503 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
#ifndef H_BLE_AUDIO_SVC_PACS_
#define H_BLE_AUDIO_SVC_PACS_
/**
* @file ble_audio_svc_pacs.h
*
* @brief Bluetooth LE Audio PAC Service
*
* This header file provides the public API for interacting with the PACS package.
*
* @defgroup ble_audio_svc_pacs Bluetooth LE Audio PACS package
* @ingroup bt_host
* @{
*
* This package is used to setup PACS for codecs registered with @ref ble_audio_codec.
* To register a codec create it's definition as `ble_audio_codec_record` structure and register it
* using `ble_audio_codec_register()`. Up to BLE_AUDIO_MAX_CODEC_RECORDS entries may be registered.
* Registering and unregistering codecs, as well as setting PACS parameters will trigger sending
* notifications, if their support is enabled (see pacs/syscfg.yml).
*
*/
#define BLE_SVC_AUDIO_PACS_UUID16 0x1850
#define BLE_SVC_AUDIO_PACS_CHR_UUID16_SINK_PAC 0x2BC9
#define BLE_SVC_AUDIO_PACS_CHR_UUID16_SINK_AUDIO_LOCATIONS 0x2BCA
#define BLE_SVC_AUDIO_PACS_CHR_UUID16_SOURCE_PAC 0x2BCB
#define BLE_SVC_AUDIO_PACS_CHR_UUID16_SOURCE_AUDIO_LOCATIONS 0x2BCC
#define BLE_SVC_AUDIO_PACS_CHR_UUID16_AVAILABLE_AUDIO_CONTEXTS 0x2BCD
#define BLE_SVC_AUDIO_PACS_CHR_UUID16_SUPPORTED_AUDIO_CONTEXTS 0x2BCE
struct ble_svc_audio_pacs_set_param {
/* Supported Audio Locations */
uint32_t audio_locations;
/* Supported Contexts */
uint16_t supported_contexts;
};
/**
* @brief Set PACS params.
*
* Set device capabilities reported in Published Audio Capabilities Service.
*
* @param[in] flags Flags that define if capabilities being set are for
* Sink or Source. Valid values are either
* `BLE_AUDIO_CODEC_FLAG_SOURCE` or `BLE_AUDIO_CODEC_FLAG_SINK`
* @param[in] param Pointer to a `ble_svc_audio_pacs_set_param`
* structure that defines capabilities supported by
* device.
*
* @return 0 on success;
* A non-zero value on failure.
*/
int ble_svc_audio_pacs_set(uint8_t flags, const struct ble_svc_audio_pacs_set_param *param);
/**
* @brief Set available context types.
*
* @param[in] conn_handle Connection handle identifying connection for which contexts
* being set
* @param[in] sink_contexts Available Sink Contexts
* @param[in] source_contexts Available Source Contexts
*
* @return 0 on success;
* A non-zero value on failure.
*/
int ble_svc_audio_pacs_avail_contexts_set(uint16_t conn_handle,
uint16_t sink_contexts,
uint16_t source_contexts);
/**
* @}
*/
#endif /* H_BLE_AUDIO_SVC_PACS_ */