mirror of
				https://github.com/0xFEEDC0DE64/arduino-esp32.git
				synced 2025-10-30 21:51:40 +01:00 
			
		
		
		
	
		
			
	
	
		
			204 lines
		
	
	
		
			7.8 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
		
		
			
		
	
	
			204 lines
		
	
	
		
			7.8 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
|   | /******************************************************************************
 | ||
|  |  * | ||
|  |  *  Copyright (C) 2002-2012 Broadcom Corporation | ||
|  |  * | ||
|  |  *  Licensed 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. | ||
|  |  * | ||
|  |  ******************************************************************************/ | ||
|  | 
 | ||
|  | /******************************************************************************
 | ||
|  |  * | ||
|  |  *  This contains constants definitions and other information from the AVDTP | ||
|  |  *  specification.  This file is intended for use internal to AVDT only. | ||
|  |  * | ||
|  |  ******************************************************************************/ | ||
|  | #ifndef AVDT_DEFS_H
 | ||
|  | #define AVDT_DEFS_H
 | ||
|  | 
 | ||
|  | /*****************************************************************************
 | ||
|  | ** constants | ||
|  | *****************************************************************************/ | ||
|  | 
 | ||
|  | /* signalling packet type */ | ||
|  | #define AVDT_PKT_TYPE_SINGLE        0       /* single packet */
 | ||
|  | #define AVDT_PKT_TYPE_START         1       /* start packet */
 | ||
|  | #define AVDT_PKT_TYPE_CONT          2       /* continue packet */
 | ||
|  | #define AVDT_PKT_TYPE_END           3       /* end packet */
 | ||
|  | 
 | ||
|  | /* signalling message type */ | ||
|  | #define AVDT_MSG_TYPE_CMD           0       /* command */
 | ||
|  | #define AVDT_MSG_TYPE_GRJ           1       /* general reject */
 | ||
|  | #define AVDT_MSG_TYPE_RSP           2       /* response accept */
 | ||
|  | #define AVDT_MSG_TYPE_REJ           3       /* response reject */
 | ||
|  | 
 | ||
|  | /* signalling messages */ | ||
|  | #define AVDT_SIG_DISCOVER           1       /* discover */
 | ||
|  | #define AVDT_SIG_GETCAP             2       /* get capabilities */
 | ||
|  | #define AVDT_SIG_SETCONFIG          3       /* set configuration */
 | ||
|  | #define AVDT_SIG_GETCONFIG          4       /* get configuration */
 | ||
|  | #define AVDT_SIG_RECONFIG           5       /* reconfigure */
 | ||
|  | #define AVDT_SIG_OPEN               6       /* open */
 | ||
|  | #define AVDT_SIG_START              7       /* start */
 | ||
|  | #define AVDT_SIG_CLOSE              8       /* close */
 | ||
|  | #define AVDT_SIG_SUSPEND            9       /* suspend */
 | ||
|  | #define AVDT_SIG_ABORT              10      /* abort */
 | ||
|  | #define AVDT_SIG_SECURITY           11      /* security control */
 | ||
|  | #define AVDT_SIG_GET_ALLCAP         12      /* get all capabilities */
 | ||
|  | #define AVDT_SIG_DELAY_RPT          13      /* delay report */
 | ||
|  | 
 | ||
|  | /* maximum signal value */ | ||
|  | #define AVDT_SIG_MAX                AVDT_SIG_DELAY_RPT
 | ||
|  | 
 | ||
|  | /* used for general reject */ | ||
|  | #define AVDT_SIG_NONE               0
 | ||
|  | 
 | ||
|  | /* some maximum and minimum sizes of signalling messages */ | ||
|  | #define AVDT_DISCOVER_REQ_MIN       1
 | ||
|  | #define AVDT_DISCOVER_REQ_MAX       124
 | ||
|  | 
 | ||
|  | /* service category information element field values */ | ||
|  | #define AVDT_CAT_TRANS              1       /* Media Transport */
 | ||
|  | #define AVDT_CAT_REPORT             2       /* Reporting */
 | ||
|  | #define AVDT_CAT_RECOV              3       /* Recovery */
 | ||
|  | #define AVDT_CAT_PROTECT            4       /* Content Protection */
 | ||
|  | #define AVDT_CAT_HDRCMP             5       /* Header Compression */
 | ||
|  | #define AVDT_CAT_MUX                6       /* Multiplexing */
 | ||
|  | #define AVDT_CAT_CODEC              7       /* Media Codec */
 | ||
|  | #define AVDT_CAT_DELAY_RPT          8       /* Delay Reporting */
 | ||
|  | #define AVDT_CAT_MAX_CUR            AVDT_CAT_DELAY_RPT
 | ||
|  | 
 | ||
|  | /* min/max lengths of service category information elements */ | ||
|  | #define AVDT_LEN_TRANS_MIN          0
 | ||
|  | #define AVDT_LEN_REPORT_MIN         0
 | ||
|  | #define AVDT_LEN_RECOV_MIN          3
 | ||
|  | #define AVDT_LEN_PROTECT_MIN        2
 | ||
|  | #define AVDT_LEN_HDRCMP_MIN         1
 | ||
|  | #define AVDT_LEN_MUX_MIN            3
 | ||
|  | #define AVDT_LEN_CODEC_MIN          2
 | ||
|  | #define AVDT_LEN_DELAY_RPT_MIN      0
 | ||
|  | 
 | ||
|  | #define AVDT_LEN_TRANS_MAX          0
 | ||
|  | #define AVDT_LEN_REPORT_MAX         0
 | ||
|  | #define AVDT_LEN_RECOV_MAX          3
 | ||
|  | #define AVDT_LEN_PROTECT_MAX        255
 | ||
|  | #define AVDT_LEN_HDRCMP_MAX         1
 | ||
|  | #define AVDT_LEN_MUX_MAX            7
 | ||
|  | #define AVDT_LEN_CODEC_MAX          255
 | ||
|  | #define AVDT_LEN_DELAY_RPT_MAX      0
 | ||
|  | 
 | ||
|  | /* minimum possible size of configuration or capabilities data */ | ||
|  | #define AVDT_LEN_CFG_MIN            2
 | ||
|  | 
 | ||
|  | /* minimum and maximum lengths for different message types */ | ||
|  | #define AVDT_LEN_SINGLE             1
 | ||
|  | #define AVDT_LEN_SETCONFIG_MIN      2
 | ||
|  | #define AVDT_LEN_RECONFIG_MIN       1
 | ||
|  | #define AVDT_LEN_MULTI_MIN          1
 | ||
|  | #define AVDT_LEN_SECURITY_MIN       1
 | ||
|  | #define AVDT_LEN_DELAY_RPT          3
 | ||
|  | 
 | ||
|  | /* header lengths for different packet types */ | ||
|  | #define AVDT_LEN_TYPE_SINGLE        2       /* single packet */
 | ||
|  | #define AVDT_LEN_TYPE_START         3       /* start packet */
 | ||
|  | #define AVDT_LEN_TYPE_CONT          1       /* continue packet */
 | ||
|  | #define AVDT_LEN_TYPE_END           1       /* end packet */
 | ||
|  | 
 | ||
|  | /* length of general reject message */ | ||
|  | #define AVDT_LEN_GEN_REJ            2
 | ||
|  | 
 | ||
|  | /* recovery service capabilities information elements */ | ||
|  | #define AVDT_RECOV_MRWS_MIN         0x01    /* min value for maximum recovery window */
 | ||
|  | #define AVDT_RECOV_MRWS_MAX         0x18    /* max value for maximum recovery window */
 | ||
|  | #define AVDT_RECOV_MNMP_MIN         0x01    /* min value for maximum number of media packets */
 | ||
|  | #define AVDT_RECOV_MNMP_MAX         0x18    /* max value for maximum number of media packets */
 | ||
|  | 
 | ||
|  | /* SEID value range */ | ||
|  | #define AVDT_SEID_MIN               0x01
 | ||
|  | #define AVDT_SEID_MAX               0x3E
 | ||
|  | 
 | ||
|  | /* first byte of media packet header */ | ||
|  | #define AVDT_MEDIA_OCTET1           0x80
 | ||
|  | 
 | ||
|  | /* for adaptation layer header */ | ||
|  | #define AVDT_ALH_LCODE_MASK     0x03    /* coding of length field */
 | ||
|  | #define AVDT_ALH_LCODE_NONE     0x00    /* No length field present. Take length from l2cap */
 | ||
|  | #define AVDT_ALH_LCODE_16BIT    0x01    /* 16bit length field */
 | ||
|  | #define AVDT_ALH_LCODE_9BITM0   0x02    /* 9 bit length field, MSB = 0, 8 LSBs in 1 octet following */
 | ||
|  | #define AVDT_ALH_LCODE_9BITM1   0x03    /* 9 bit length field, MSB = 1, 8 LSBs in 1 octet following */
 | ||
|  | 
 | ||
|  | #define AVDT_ALH_FRAG_MASK      0x04    /* set this for continuation packet */
 | ||
|  | 
 | ||
|  | /*****************************************************************************
 | ||
|  | ** message parsing and building macros | ||
|  | *****************************************************************************/ | ||
|  | 
 | ||
|  | #define AVDT_MSG_PRS_HDR(p, lbl, pkt, msg) \
 | ||
|  |     lbl = *(p) >> 4; \ | ||
|  |     pkt = (*(p) >> 2) & 0x03; \ | ||
|  |     msg = *(p)++ & 0x03; | ||
|  | 
 | ||
|  | #define AVDT_MSG_PRS_DISC(p, seid, in_use, type, tsep) \
 | ||
|  |     seid = *(p) >> 2; \ | ||
|  |     in_use = (*(p)++ >> 1) & 0x01; \ | ||
|  |     type = *(p) >> 4; \ | ||
|  |     tsep = (*(p)++ >> 3) & 0x01; | ||
|  | 
 | ||
|  | #define AVDT_MSG_PRS_SIG(p, sig) \
 | ||
|  |     sig = *(p)++ & 0x3F; | ||
|  | 
 | ||
|  | #define AVDT_MSG_PRS_SEID(p, seid) \
 | ||
|  |     seid = *(p)++ >> 2; | ||
|  | 
 | ||
|  | #define AVDT_MSG_PRS_PKT_TYPE(p, pkt) \
 | ||
|  |     pkt = (*(p) >> 2) & 0x03; | ||
|  | 
 | ||
|  | #define AVDT_MSG_PRS_OCTET1(p, o_v, o_p, o_x, o_cc) \
 | ||
|  |     o_v = *(p) >> 6; \ | ||
|  |     o_p = (*(p) >> 5) & 0x01; \ | ||
|  |     o_x = (*(p) >> 4) & 0x01; \ | ||
|  |     o_cc = *(p)++ & 0x0F; | ||
|  | 
 | ||
|  | #define AVDT_MSG_PRS_RPT_OCTET1(p, o_v, o_p, o_cc) \
 | ||
|  |     o_v = *(p) >> 6; \ | ||
|  |     o_p = (*(p) >> 5) & 0x01; \ | ||
|  |     o_cc = *(p)++ & 0x1F; | ||
|  | 
 | ||
|  | #define AVDT_MSG_PRS_M_PT(p, m_pt, marker) \
 | ||
|  |     marker = *(p) >> 7; \ | ||
|  |     m_pt = *(p)++ & 0x7F; | ||
|  | 
 | ||
|  | #define AVDT_MSG_BLD_HDR(p, lbl, pkt, msg) \
 | ||
|  |     *(p)++ = (UINT8) ((lbl) << 4) | ((pkt) << 2) | (msg); | ||
|  | 
 | ||
|  | #define AVDT_MSG_BLD_DISC(p, seid, in_use, type, tsep) \
 | ||
|  |     *(p)++ = (UINT8) (((seid) << 2) | ((in_use) << 1)); \ | ||
|  |     *(p)++ = (UINT8) (((type) << 4) | ((tsep) << 3)); | ||
|  | 
 | ||
|  | #define AVDT_MSG_BLD_SIG(p, sig) \
 | ||
|  |     *(p)++ = (UINT8) (sig); | ||
|  | 
 | ||
|  | #define AVDT_MSG_BLD_SEID(p, seid) \
 | ||
|  |     *(p)++ = (UINT8) ((seid) << 2); | ||
|  | 
 | ||
|  | #define AVDT_MSG_BLD_ERR(p, err) \
 | ||
|  |     *(p)++ = (UINT8) (err); | ||
|  | 
 | ||
|  | #define AVDT_MSG_BLD_PARAM(p, param) \
 | ||
|  |     *(p)++ = (UINT8) (param); | ||
|  | 
 | ||
|  | #define AVDT_MSG_BLD_NOSP(p, nosp) \
 | ||
|  |     *(p)++ = (UINT8) (nosp); | ||
|  | 
 | ||
|  | #endif /* AVDT_DEFS_H */
 | ||
|  | 
 |