1 /** @file 2 * @brief Audio/Video Distribution Transport Protocol header. 3 */ 4 5 /* 6 * Copyright (c) 2015-2016 Intel Corporation 7 * Copyright 2024 NXP 8 * 9 * SPDX-License-Identifier: Apache-2.0 10 */ 11 #ifndef ZEPHYR_INCLUDE_BLUETOOTH_AVDTP_H_ 12 #define ZEPHYR_INCLUDE_BLUETOOTH_AVDTP_H_ 13 14 #ifdef __cplusplus 15 extern "C" { 16 #endif 17 18 /** 19 * @brief AVDTP error code 20 */ 21 enum bt_avdtp_err_code { 22 /** The response is success, it is not from avdtp spec. */ 23 BT_AVDTP_SUCCESS = 0x00, 24 /** The request is time out without response, it is not from avdtp spec. */ 25 BT_AVDTP_TIME_OUT = 0xFF, 26 /** The request packet header format error */ 27 BT_AVDTP_BAD_HEADER_FORMAT = 0x01, 28 /** The request packet length is not match the assumed length */ 29 BT_AVDTP_BAD_LENGTH = 0x11, 30 /** The requested command indicates an invalid ACP SEID (not addressable) */ 31 BT_AVDTP_BAD_ACP_SEID = 0x12, 32 /** The SEP is in use */ 33 BT_AVDTP_SEP_IN_USE = 0x13, 34 /** The SEP is not in use */ 35 BT_AVDTP_SEP_NOT_IN_USE = 0x14, 36 /** The value of Service Category in the request packet is not defined in AVDTP */ 37 BT_AVDTP_BAD_SERV_CATEGORY = 0x17, 38 /** The requested command has an incorrect payload format */ 39 BT_AVDTP_BAD_PAYLOAD_FORMAT = 0x18, 40 /** The requested command is not supported by the device */ 41 BT_AVDTP_NOT_SUPPORTED_COMMAND = 0x19, 42 /** The reconfigure command is an attempt to reconfigure a transport service codec_cap 43 * of the SEP. Reconfigure is only permitted for application service codec_cap 44 */ 45 BT_AVDTP_INVALID_CAPABILITIES = 0x1A, 46 /** The requested Recovery Type is not defined in AVDTP */ 47 BT_AVDTP_BAD_RECOVERY_TYPE = 0x22, 48 /** The format of Media Transport Capability is not correct */ 49 BT_AVDTP_BAD_MEDIA_TRANSPORT_FORMAT = 0x23, 50 /** The format of Recovery Service Capability is not correct */ 51 BT_AVDTP_BAD_RECOVERY_FORMAT = 0x25, 52 /** The format of Header Compression Service Capability is not correct */ 53 BT_AVDTP_BAD_ROHC_FORMAT = 0x26, 54 /** The format of Content Protection Service Capability is not correct */ 55 BT_AVDTP_BAD_CP_FORMAT = 0x27, 56 /** The format of Multiplexing Service Capability is not correct */ 57 BT_AVDTP_BAD_MULTIPLEXING_FORMAT = 0x28, 58 /** Configuration not supported */ 59 BT_AVDTP_UNSUPPORTED_CONFIGURAION = 0x29, 60 /** Indicates that the ACP state machine is in an invalid state in order to process the 61 * signal. This also includes the situation when an INT receives a request for the 62 * same command that it is currently expecting a response 63 */ 64 BT_AVDTP_BAD_STATE = 0x31, 65 }; 66 67 /** @brief Stream End Point Type */ 68 enum bt_avdtp_sep_type { 69 /** Source Role */ 70 BT_AVDTP_SOURCE = 0, 71 /** Sink Role */ 72 BT_AVDTP_SINK = 1 73 }; 74 75 /** @brief Stream End Point Media Type */ 76 enum bt_avdtp_media_type { 77 /** Audio Media Type */ 78 BT_AVDTP_AUDIO = 0x00, 79 /** Video Media Type */ 80 BT_AVDTP_VIDEO = 0x01, 81 /** Multimedia Media Type */ 82 BT_AVDTP_MULTIMEDIA = 0x02 83 }; 84 85 /** @brief AVDTP stream endpoint information. 86 * Don't need to care endianness because it is not used for data parsing. 87 */ 88 struct bt_avdtp_sep_info { 89 /** End Point usage status */ 90 uint8_t inuse:1; 91 /** Stream End Point ID that is the identifier of the stream endpoint */ 92 uint8_t id:6; 93 /** Reserved */ 94 uint8_t reserved:1; 95 /** Stream End-point Type that indicates if the stream end-point is SNK or SRC */ 96 enum bt_avdtp_sep_type tsep; 97 /** Media-type of the End Point 98 * Only @ref BT_AVDTP_AUDIO is supported now. 99 */ 100 enum bt_avdtp_media_type media_type; 101 }; 102 103 /** @brief service category Type */ 104 enum bt_avdtp_service_category { 105 /** Media Transport */ 106 BT_AVDTP_SERVICE_MEDIA_TRANSPORT = 0x01, 107 /** Reporting */ 108 BT_AVDTP_SERVICE_REPORTING = 0x02, 109 /** Recovery */ 110 BT_AVDTP_SERVICE_MEDIA_RECOVERY = 0x03, 111 /** Content Protection */ 112 BT_AVDTP_SERVICE_CONTENT_PROTECTION = 0x04, 113 /** Header Compression */ 114 BT_AVDTP_SERVICE_HEADER_COMPRESSION = 0x05, 115 /** Multiplexing */ 116 BT_AVDTP_SERVICE_MULTIPLEXING = 0x06, 117 /** Media Codec */ 118 BT_AVDTP_SERVICE_MEDIA_CODEC = 0x07, 119 /** Delay Reporting */ 120 BT_AVDTP_SERVICE_DELAY_REPORTING = 0x08, 121 }; 122 123 /** @brief AVDTP Stream End Point */ 124 struct bt_avdtp_sep { 125 /** Stream End Point information */ 126 struct bt_avdtp_sep_info sep_info; 127 /** Media Transport Channel*/ 128 struct bt_l2cap_br_chan chan; 129 /** the endpoint media data */ 130 void (*media_data_cb)(struct bt_avdtp_sep *sep, 131 struct net_buf *buf); 132 /** avdtp session */ 133 struct bt_avdtp *session; 134 /** SEP state */ 135 uint8_t state; 136 /* Internally used list node */ 137 sys_snode_t _node; 138 }; 139 140 #ifdef __cplusplus 141 } 142 #endif 143 144 #endif /* ZEPHYR_INCLUDE_BLUETOOTH_AVDTP_H_ */ 145