/*************************************************************************** * * Copyright 2015-2019 BES. * All rights reserved. All unpublished rights reserved. * * No part of this work may be used or reproduced in any form or by any * means, or stored in a database or retrieval system, without prior written * permission of BES. * * Use of this work is governed by a license granted by BES. * This work contains confidential and proprietary information of * BES. which is protected by copyright, trade secret, * trademark and other intellectual property rights. * ****************************************************************************/ #ifndef _AVDTP_API_H #define _AVDTP_API_H #include "stdint.h" #include "bluetooth.h" /* Signal Commands */ #define BTIF_AVDTP_SIG_DISCOVER 0x01 #define BTIF_AVDTP_SIG_GET_CAPABILITIES 0x02 #define BTIF_AVDTP_SIG_SET_CONFIG 0x03 #define BTIF_AVDTP_SIG_GET_CONFIG 0x04 #define BTIF_AVDTP_SIG_RECONFIG 0x05 #define BTIF_AVDTP_SIG_OPEN 0x06 #define BTIF_AVDTP_SIG_START 0x07 #define BTIF_AVDTP_SIG_CLOSE 0x08 #define BTIF_AVDTP_SIG_SUSPEND 0x09 #define BTIF_AVDTP_SIG_ABORT 0x0A #define BTIF_AVDTP_SIG_SECURITY_CTRL 0x0B #define BTIF_AVDTP_SIG_GET_ALL_CAPABILITIES 0x0C #define BTIF_AVDTP_SIG_DELAYREPORT 0x0D #ifndef avdtp_codec_t #define avdtp_codec_t void #endif #ifndef avdtp_channel_t #define avdtp_channel_t void #endif typedef uint8_t btif_avdtp_codec_type_t; typedef uint16_t btif_avdtp_content_prot_type_t; typedef uint8_t btif_avdtp_capability_type_t; #define BTIF_AVDTP_CP_TYPE_DTCP 0x0001 #define BTIF_AVDTP_CP_TYPE_SCMS_T 0x0002 #define BTIF_AVDTP_SRV_CAT_MEDIA_TRANSPORT 0x01 #define BTIF_AVDTP_SRV_CAT_REPORTING 0x02 #define BTIF_AVDTP_SRV_CAT_RECOVERY 0x03 #define BTIF_AVDTP_SRV_CAT_CONTENT_PROTECTION 0x04 #define BTIF_AVDTP_SRV_CAT_HEADER_COMPRESSION 0x05 #define BTIF_AVDTP_SRV_CAT_MULTIPLEXING 0x06 #define BTIF_AVDTP_SRV_CAT_MEDIA_CODEC 0x07 #define BTIF_AVDTP_SRV_CAT_DELAY_REPORTING 0x08 typedef uint16_t btif_avdtp_codec_sample_rate_t; #define BTIF_AVDTP_CODEC_TYPE_SBC 0x00 #define BTIF_AVDTP_CODEC_TYPE_MPEG1_2_AUDIO 0x01 #define BTIF_AVDTP_CODEC_TYPE_MPEG2_4_AAC 0x02 #define BTIF_AVDTP_CODEC_TYPE_ATRAC 0x04 #define BTIF_AVDTP_CODEC_TYPE_OPUS 0x08 #define BTIF_AVDTP_CODEC_TYPE_H263 0x01 #define BTIF_AVDTP_CODEC_TYPE_MPEG4_VSP 0x02 #define BTIF_AVDTP_CODEC_TYPE_H263_PROF3 0x03 #define BTIF_AVDTP_CODEC_TYPE_H263_PROF8 0x04 #define BTIF_AVDTP_CODEC_TYPE_LHDC 0xFF #define BTIF_AVDTP_CODEC_TYPE_NON_A2DP 0xFF #define BTIF_AVDTP_MAX_CODEC_ELEM_SIZE 10 #define BTIF_AVDTP_MAX_CP_VALUE_SIZE 10 typedef uint8_t btif_avdtp_stream_state_t; /** The stream is idle and not configured. Streaming is not possible. */ #define BTIF_AVDTP_STRM_STATE_IDLE 0 /** A stream is configured, but not open. This state will only occur in * certain cases where a request to open the stream is rejected, and the * operation cannot be aborted. * * AVDTP_AbortStream() must be called to exit this state. */ #define BTIF_AVDTP_STRM_STATE_CONFIGURED 1 /** The stream is open and configured. Streaming can be initiated after the * stream is open by calling AVDTP_StartStream(). */ #define BTIF_AVDTP_STRM_STATE_OPEN 2 /** The stream is active. Stream data (media packets) can be sent only in * this state. */ #define BTIF_AVDTP_STRM_STATE_STREAMING 3 #define BTIF_AVDTP_STRM_STATE_CLOSING 4 #define BTIF_AVDTP_STRM_STATE_ABORTING 5 typedef U8 btif_avdtp_error_t; #define BTIF_AVDTP_ERR_NO_ERROR 0x00 #define BTIF_AVDTP_ERR_BAD_HEADER_FORMAT 0x01 #define BTIF_AVDTP_ERR_BAD_LENGTH 0x11 #define BTIF_AVDTP_ERR_BAD_ACP_SEID 0x12 #define BTIF_AVDTP_ERR_IN_USE 0x13 #define BTIF_AVDTP_ERR_NOT_IN_USE 0x14 #define BTIF_AVDTP_ERR_BAD_SERV_CATEGORY 0x17 #define BTIF_AVDTP_ERR_BAD_PAYLOAD_FORMAT 0x18 #define BTIF_AVDTP_ERR_NOT_SUPPORTED_COMMAND 0x19 #define BTIF_AVDTP_ERR_INVALID_CAPABILITIES 0x1A #define BTIF_AVDTP_ERR_BAD_RECOVERY_TYPE 0x22 #define BTIF_AVDTP_ERR_BAD_MEDIA_TRANSPORT_FORMAT 0x23 #define BTIF_AVDTP_ERR_BAD_RECOVERY_FORMAT 0x25 #define BTIF_AVDTP_ERR_BAD_ROHC_FORMAT 0x26 #define BTIF_AVDTP_ERR_BAD_CP_FORMAT 0x27 #define BTIF_AVDTP_ERR_BAD_MULTIPLEXING_FORMAT 0x28 #define BTIF_AVDTP_ERR_UNSUPPORTED_CONFIGURATION 0x29 #define BTIF_AVDTP_ERR_BAD_STATE 0x31 #define BTIF_AVDTP_ERR_NOT_SUPPORTED_CODEC_TYPE 0xC2 #define BTIF_AVDTP_ERR_UNKNOWN_ERROR 0xFF typedef struct { btif_avdtp_content_prot_type_t cpType; uint8_t dataLen; uint8_t *data; }__attribute__((packed)) btif_avdtp_content_prot_t; typedef struct { btif_avdtp_codec_type_t codecType; uint8_t elemLen; uint8_t *elements; uint8_t *pstreamflags; bool discoverable; }__attribute__((packed)) btif_avdtp_codec_t ; typedef struct { btif_avdtp_capability_type_t type; union { btif_avdtp_codec_t codec; btif_avdtp_content_prot_t cp; } p; } btif_avdtp_capability_t; typedef struct { btif_avdtp_codec_t codec; btif_avdtp_content_prot_t cp; BOOL delayReporting; } btif_avdtp_config_request_t; typedef uint8_t btif_avdtp_streamId_t; typedef uint8_t btif_avdtp_media_type; typedef uint8_t btif_avdtp_strm_endpoint_type_t; typedef struct { btif_avdtp_streamId_t id; bool inUse; btif_avdtp_media_type mediaType; btif_avdtp_strm_endpoint_type_t streamType; } btif_avdtp_stream_info_t; typedef struct { U8 version; U8 padding; U8 marker; U8 payloadType; U16 sequenceNumber; U32 timestamp; U32 ssrc; U8 csrcCount; U32 csrcList[15]; } btif_avdtp_media_header_t; typedef btif_avdtp_media_header_t btif_media_header_t; typedef void btif_avdtp_stream_t; #ifdef __cplusplus extern "C" { #endif btif_avdtp_codec_type_t btif_avdtp_get_stream_codec_type(btif_avdtp_stream_t * stream); #ifdef __cplusplus } #endif /* */ #endif /* */