1 /*
2  * Copyright (C) 2021 Huawei Device Co., Ltd.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  *     http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 
16 #ifndef AVDTP_L2CAP_H
17 #define AVDTP_L2CAP_H
18 
19 #include "avdtp_int.h"
20 #include "gap_if.h"
21 #include "l2cap_if.h"
22 
23 typedef struct {
24     uint16_t lcid;
25     uint8_t id;
26     L2capConnectionInfo info;
27     uint16_t psm;
28     void *ctx;
29 } AvdtL2capConnectIndCallbackTskParam;
30 
31 typedef struct {
32     uint16_t lcid;
33     L2capConnectionInfo info;
34     uint16_t result;
35     uint16_t status;
36     void *ctx;
37 } AvdtL2capConnectCfmCallbackTskParam;
38 
39 typedef struct {
40     uint16_t lcid;
41     uint8_t id;
42     L2capConfigInfo cfg;
43     void *ctx;
44 } AvdtL2capConfigIndCallbackTskParam;
45 
46 typedef struct {
47     uint16_t lcid;
48     L2capConfigInfo cfg;
49     uint16_t result;
50     void *ctx;
51 } AvdtL2capConfigCfmCallbackTskParam;
52 
53 typedef struct {
54     uint16_t lcid;
55     uint8_t id;
56     void *ctx;
57 } AvdtL2capDisconnectIndCallbackTskParam;
58 
59 typedef struct {
60     uint16_t lcid;
61     void *ctx;
62 } AvdtL2capDisconnectCfmCallbackTskParam;
63 
64 typedef struct {
65     uint16_t lcid;
66     Packet *packet;
67     void *ctx;
68 } AvdtL2capReadDataIndCallbackTskParam;
69 
70 typedef struct {
71     uint16_t lcid;
72     uint8_t reason;
73     void *ctx;
74 } AvdtL2capDisconnectAbnormalCallbackTskParam;
75 
76 typedef struct {
77     uint16_t result;
78     GapServiceSecurityInfo security;
79     void *context;
80 } AvdtRevSecurityCheckTskParam;
81 /**
82  * Callback function declaration
83  */
84 void AVDT_L2capConnectIndCallback(uint16_t lcid, uint8_t id, const L2capConnectionInfo *info, uint16_t psm, void *ctx);
85 void AvdtL2capConnectIndCallbackTsk(void *context);
86 void AvdtL2capConnectIndCallback(uint16_t lcid, uint8_t id, const L2capConnectionInfo *info, uint16_t psm, void *ctx);
87 void AVDT_L2capConnectCfmCallback(
88     uint16_t lcid, const L2capConnectionInfo *info, uint16_t result, uint16_t status, void *ctx);
89 void AvdtL2capConnectCfmCallbackTsk(void *context);
90 void AvdtL2capConnectCfmCallback(
91     uint16_t lcid, const L2capConnectionInfo *info, uint16_t result, uint16_t status, void *ctx);
92 void AVDT_L2capConfigIndCallback(uint16_t lcid, uint8_t id, const L2capConfigInfo *cfg, void *ctx);
93 void AvdtL2capConfigIndCallbackTsk(void *context);
94 void AvdtL2capConfigIndCallback(uint16_t lcid, uint8_t id, const L2capConfigInfo *cfg, void *ctx);
95 void AVDT_L2capConfigCfmCallback(uint16_t lcid, const L2capConfigInfo *cfg, uint16_t result, void *ctx);
96 void AvdtL2capConfigCfmCallbackTsk(void *context);
97 void AvdtL2capConfigCfmCallback(uint16_t lcid, const L2capConfigInfo *cfg, uint16_t result, void *ctx);
98 void AVDT_L2capDisconnectIndCallback(uint16_t lcid, uint8_t id, void *ctx);
99 void AvdtL2capDisconnectIndCallbackTsk(void *context);
100 void AvdtL2capDisconnectIndCallback(uint16_t lcid, uint8_t id, void *ctx);
101 void AVDT_L2capDisconnectCfmCallback(uint16_t lcid, void *ctx);
102 void AvdtL2capDisconnectCfmCallbackTsk(void *context);
103 void AvdtL2capDisconnectCfmCallback(uint16_t lcid, void *ctx);
104 void AVDT_L2capDisconnectAbnormalCallback(uint16_t lcid, uint8_t reason, void *ctx);
105 void AvdtL2capDisconnectAbnormalCallbackTsk(void *context);
106 void AvdtL2capDisconnectAbnormalCallback(uint16_t lcid, uint8_t reason, void *ctx);
107 void AVDT_L2capReadDataIndCallback(uint16_t lcid, Packet *packet, void *ctx);
108 void AvdtL2capReadDataIndCallbackTsk(void *context);
109 void AvdtL2capReadDataIndCallback(uint16_t lcid, Packet *packet, void *ctx);
110 void AVDT_L2capRemoteBusyCallback(uint16_t lcid, uint8_t isBusy, void *ctx);
111 void AvdtRevSecurityCheckCallback(uint16_t result, GapServiceSecurityInfo security, void *context);
112 void AvdtRevSecurityCheckTsk(void *context);
113 
114 /**
115  * Inner function declaration
116  */
117 void AvdtRevSecurityCheck(uint16_t result, GapServiceSecurityInfo security, void *context);
118 void AvdtConfigureConfirm(AvdtTransChannel *transTable);
119 void AvdtConfigureIndication(uint16_t lcid, uint8_t id, const L2capConfigInfo *cfg, AvdtTransChannel *transTable);
120 void AvdtConnectConfirmError(const AvdtTransChannel *transTable);
121 void AvdtConnectSignalingIndication(uint16_t lcid, uint8_t id, const L2capConnectionInfo *info);
122 void AvdtConnectStreamIndication(uint16_t lcid, uint8_t id, const L2capConnectionInfo *info, AvdtSigCtrl *sigCtrl);
123 void AvdtStreamDataProc(AvdtStreamCtrl *streamCtrl, Packet *packet);
124 void AvdtConfigComplete(AvdtTransChannel *transTable);
125 void AvdtL2capDisconnectAbnormalSignle(const AvdtTransChannel *transTable, uint8_t reason);
126 void AvdtL2capDisconnectAbnormalStream(const AvdtTransChannel *transTable, uint8_t reason);
127 
128 extern const L2capService G_AVDT_L2C_APPL;
129 
130 #endif /* AVDTP_L2CAP_H */