45#define L2CAP_CID_SIGNAL 0x0001
46#define L2CAP_CONN_REQ 0x02
47#define L2CAP_CONN_RSP 0x03
48#define L2CAP_CONF_REQ 0x04
49#define L2CAP_CONF_RSP 0x05
50#define L2CAP_CONF_SUCCESS 0x0000
51#define L2CAP_CONN_OK 0x0000
52#define L2CAP_CONN_PENDING 0x0001
53#define L2CAP_OPT_MTU 0x01
56#define AVDTP_PKT_SINGLE 0x00
57#define AVDTP_MSG_CMD 0x00
58#define AVDTP_MSG_ACCEPT 0x02
59#define AVDTP_MSG_REJECT 0x03
61#define AVDTP_DISCOVER 0x01
62#define AVDTP_GET_CAPABILITIES 0x02
63#define AVDTP_SET_CONFIGURATION 0x03
64#define AVDTP_GET_CONFIGURATION 0x04
65#define AVDTP_RECONFIGURE 0x05
66#define AVDTP_OPEN 0x06
67#define AVDTP_START 0x07
68#define AVDTP_CLOSE 0x08
69#define AVDTP_SUSPEND 0x09
70#define AVDTP_ABORT 0x0A
71#define AVDTP_GET_ALLCAPABILITIES 0x0C
72#define AVDTP_DELAYREPORT 0x0D
74#define AVDTP_SEP_SINK 1
75#define AVDTP_MEDIA_AUDIO 0
77#define AVDTP_CAT_TRANSPORT 0x01
78#define AVDTP_CAT_REPORTING 0x02
79#define AVDTP_CAT_RECOVERY 0x03
80#define AVDTP_CAT_PROTECTION 0x04
81#define AVDTP_CAT_HDRCMPR 0x05
82#define AVDTP_CAT_MUX 0x06
83#define AVDTP_CAT_CODEC 0x07
85#define AVDTP_CAT_DELAYREP 0x08
87#define A2DP_CODEC_SBC 0x00
90#define A2DP_SBC_FREQ_44100 0x20
91#define A2DP_SBC_FREQ_48000 0x10
92#define A2DP_SBC_MODE_JOINT 0x01
93#define A2DP_SBC_BLK16 0x10
94#define A2DP_SBC_SB8 0x04
95#define A2DP_SBC_LOUDNESS 0x01
97#define AVDTP_RTP_PT_SBC 96
101#define AVDTP_SBC_OFFER_0 (A2DP_SBC_FREQ_44100 | A2DP_SBC_MODE_JOINT)
102#define AVDTP_SBC_OFFER_1 (A2DP_SBC_BLK16 | A2DP_SBC_SB8 | A2DP_SBC_LOUDNESS)
103#define AVDTP_SBC_BITPOOL 53
129 *dcid = (
uint16_t)(p[4] | (p[5] << 8));
130 result = (
uint16_t)(p[8] | (p[9] << 8));
143 *dcid = (
uint16_t)(p[4] | (p[5] << 8));
144 return (
int)(
uint16_t)(p[8] | (p[9] << 8));
171 got = (
uint16_t)(p[4] | (p[5] << 8));
172 res = (
uint16_t)(p[8] | (p[9] << 8));
200 return l2cap_build_conf_rsp_mtu(o,
id, scid, 672);
205static inline int l2cap_parse_conf_req_mtu(
const uint8_t* p,
int len,
211 while (off + 2 <=
len) {
212 uint8_t type = p[off], l = p[off + 1];
214 *mtu = (
uint16_t)(p[off + 2] | (p[off + 3] << 8));
224static inline int avdtp_build_discover(
uint8_t* o,
uint8_t trans) {
249static inline int avdtp_caps_have_delay(
const uint8_t* p,
int len) {
253 while (off + 2 <=
len) {
254 uint8_t cat = p[off], l = p[off + 1];
321 if ((p[0] >> 4) != trans || p[1] !=
signal)
330static inline int avdtp_list_sink_seids(
const uint8_t* p,
int len,
335 nrec = (
len - 2) / 2;
336 for (i = 0; i < nrec && n <
max; i++) {
337 const uint8_t* e = p + 2 + i * 2;
338 int seid = e[0] >> 2;
339 int inuse = (e[0] >> 1) & 1;
340 int type = (e[1] >> 3) & 1;
341 int media = e[1] >> 4;
343 seid >= 1 && seid <= 62)
350static inline int avdtp_pick_sink_seid(
const uint8_t* p,
int len) {
352 int n = avdtp_list_sink_seids(p,
len, &seid, 1);
360static inline int avdtp_media_codec(
const uint8_t* p,
int len) {
364 while (off + 2 <=
len) {
365 uint8_t cat = p[off], l = p[off + 1];
379 while (off + 2 <=
len) {
380 uint8_t cat = p[off], l = p[off + 1];
399static inline int avdtp_pick_sbc_config(
const uint8_t* caps,
uint8_t* use,
#define signal(signum, handler)
signal – register a signal handler to a specific signal number
Definition signal.h:42
size_t b
Definition main.cpp:156
#define out(...)
Definition main.cpp:65
unsigned int uint32_t
Definition acefiex.h:163
unsigned char uint8_t
Definition acefiex.h:161
unsigned short int uint16_t
Definition acefiex.h:162
#define L2CAP_CONF_RSP
Definition avdtp.h:49
#define L2CAP_CONF_REQ
Definition avdtp.h:48
#define L2CAP_CONN_OK
Definition avdtp.h:51
#define A2DP_SBC_MODE_JOINT
Definition avdtp.h:92
#define AVDTP_SET_CONFIGURATION
Definition avdtp.h:63
#define A2DP_SBC_SB8
Definition avdtp.h:94
#define A2DP_SBC_FREQ_48000
Definition avdtp.h:91
#define AVDTP_DISCOVER
Definition avdtp.h:61
#define AVDTP_MSG_ACCEPT
Definition avdtp.h:58
#define A2DP_SBC_FREQ_44100
Definition avdtp.h:90
#define AVDTP_SUSPEND
Definition avdtp.h:69
#define L2CAP_CONF_SUCCESS
Definition avdtp.h:50
#define L2CAP_CONN_REQ
Definition avdtp.h:46
#define AVDTP_CLOSE
Definition avdtp.h:68
#define AVDTP_SBC_BITPOOL
Definition avdtp.h:103
#define AVDTP_CAT_CODEC
Definition avdtp.h:83
#define L2CAP_CONN_RSP
Definition avdtp.h:47
#define A2DP_SBC_BLK16
Definition avdtp.h:93
#define AVDTP_RTP_PT_SBC
Definition avdtp.h:97
#define A2DP_SBC_LOUDNESS
Definition avdtp.h:95
#define AVDTP_OPEN
Definition avdtp.h:66
#define AVDTP_GET_ALLCAPABILITIES
Definition avdtp.h:71
#define AVDTP_GET_CAPABILITIES
Definition avdtp.h:62
#define AVDTP_MSG_CMD
Definition avdtp.h:57
#define AVDTP_CAT_TRANSPORT
Definition avdtp.h:77
#define AVDTP_CAT_DELAYREP
Definition avdtp.h:85
#define AVDTP_START
Definition avdtp.h:67
#define A2DP_CODEC_SBC
Definition avdtp.h:87
#define L2CAP_OPT_MTU
Definition avdtp.h:53
#define AVDTP_MEDIA_AUDIO
Definition avdtp.h:75
#define AVDTP_SEP_SINK
Definition avdtp.h:74
const char * f
Definition drm_print.h:205
size_t len
Definition initial.c:23
#define max(a, b)
Definition minmax.h:28