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_API_H
17 #define AVDTP_API_H
18 
19 #include "avdtp_int.h"
20 #include "event.h"
21 
22 typedef struct {
23     const AvdtRegisterParam *reg;
24     Event *event;
25 } AvdtRegisterTskParam;
26 
27 typedef struct {
28     const BtAddr *bdAddr;
29     uint16_t *handle;
30     uint16_t codecIndex;
31     Event *event;
32     uint16_t ret;
33 } AvdtCreateStreamTskParam;
34 
35 typedef struct {
36     AvdtStreamConfig *avdtStreamConfig;
37     uint8_t number;
38     Event *event;
39     uint16_t ret;
40 } AvdtRegisterLocalSEPTskParam;
41 
42 typedef struct {
43     const BtAddr *bdAddr;
44     uint8_t maxSeps;
45     uint8_t *transLabel;
46     Event *event;
47     uint16_t ret;
48 } AvdtDiscoverReqTskParam;
49 
50 typedef struct {
51     const BtAddr *bdAddr;
52     uint8_t acpSeid;
53     uint8_t *transLabel;
54     Event *event;
55     uint16_t ret;
56 } AvdtGetCapReqTskParam;
57 
58 typedef struct {
59     const BtAddr *bdAddr;
60     uint8_t transLabel;
61     uint8_t errCode;
62     AvdtSepConfig *sepCap;
63     Event *event;
64     uint16_t ret;
65 } AvdtGetCapRspTskParam;
66 
67 typedef struct {
68     const BtAddr *bdAddr;
69     uint8_t acpSeid;
70     uint8_t *transLabel;
71     Event *event;
72     uint16_t ret;
73 } AvdtGetAllCapReqTskParam;
74 
75 typedef struct {
76     const BtAddr *bdAddr;
77     uint8_t transLabel;
78     uint8_t errCode;
79     AvdtSepConfig *sepCap;
80     Event *event;
81     uint16_t ret;
82 } AvdtGetAllCapRspTskParam;
83 
84 typedef struct {
85     uint16_t handle;
86     uint8_t *transLabel;
87     uint16_t delayValue;
88     Event *event;
89     uint16_t ret;
90 } AvdtDelayReqTskParam;
91 
92 typedef struct {
93     uint16_t handle;
94     uint8_t transLabel;
95     uint8_t errCode;
96     Event *event;
97     uint16_t ret;
98 } AvdtDelayRspTskParam;
99 
100 typedef struct {
101     uint16_t handle;
102     uint8_t *transLabel;
103     Event *event;
104     uint16_t ret;
105 } AvdtOpenReqTskParam;
106 
107 typedef struct {
108     uint16_t handle;
109     uint8_t seid;
110     AvdtSepConfig *sepConfig;
111     uint8_t *transLabel;
112     Event *event;
113     uint16_t ret;
114 } AvdtSetConfigReqTskParam;
115 
116 typedef struct {
117     uint16_t handle;
118     uint8_t transLabel;
119     AvdtCatetory category;
120     Event *event;
121     uint16_t ret;
122 } AvdtSetConfigRspTskParam;
123 
124 typedef struct {
125     uint16_t handle;
126     uint8_t *transLabel;
127     Event *event;
128     uint16_t ret;
129 } AvdtGetConfigReqTskParam;
130 
131 typedef struct {
132     const uint16_t *handles;
133     uint8_t numHandles;
134     uint8_t *transLabel;
135     Event *event;
136     uint16_t ret;
137 } AvdtStartReqTskParam;
138 
139 typedef struct {
140     uint16_t firstHandle;
141     uint8_t transLabel;
142     uint16_t firstFailHandle;
143     uint8_t errCode;
144     Event *event;
145     uint16_t ret;
146 } AvdtStartRspTskParam;
147 
148 typedef struct {
149     const uint16_t *handles;
150     uint8_t numHandles;
151     uint8_t *transLabel;
152     Event *event;
153     uint16_t ret;
154 } AvdtSuspendReqTskParam;
155 
156 typedef struct {
157     uint16_t firstHandle;
158     uint8_t transLabel;
159     uint16_t firstFailHandle;
160     uint8_t errCode;
161     Event *event;
162     uint16_t ret;
163 } AvdtSuspendRspTskParam;
164 
165 typedef struct {
166     uint16_t handle;
167     Event *event;
168     uint16_t ret;
169 } AvdtCloseReqTskParam;
170 
171 typedef struct {
172     uint16_t handle;
173     uint8_t transLabel;
174     uint8_t errCode;
175     Event *event;
176     uint16_t ret;
177 } AvdtCloseRspTskParam;
178 
179 typedef struct {
180     uint16_t handle;
181     uint8_t *transLabel;
182     Event *event;
183     uint16_t ret;
184 } AvdtAbortReqTskParam;
185 
186 typedef struct {
187     uint16_t handle;
188     uint8_t transLabel;
189     uint8_t errCode;
190     Event *event;
191     uint16_t ret;
192 } AvdtAbortRspTskParam;
193 
194 typedef struct {
195     uint16_t handle;
196     AvdtSepConfig *cfg;
197     uint8_t *transLabel;
198     Event *event;
199     uint16_t ret;
200 } AvdtReconfigReqTskParam;
201 
202 typedef struct {
203     uint16_t handle;
204     uint8_t transLabel;
205     AvdtCatetory category;
206     Event *event;
207     uint16_t ret;
208 } AvdtReconfigRspTskParam;
209 
210 typedef struct {
211     uint16_t handle;
212     Packet *pkt;
213     uint32_t timeStamp;
214     uint8_t payloadType;
215     uint16_t marker;
216     Event *event;
217     uint16_t ret;
218 } AvdtWriteReqTskParam;
219 
220 typedef struct {
221     const BtAddr *bdAddr;
222     uint8_t role;
223     Event *event;
224     uint16_t ret;
225 } AvdtConnectReqTskParam;
226 
227 typedef struct {
228     const BtAddr *bdAddr;
229     Event *event;
230     uint16_t ret;
231 } AvdtDisconnectReqTskParam;
232 
233 void AvdtRegisterTsk(void *context);
234 void AvdtCreateStreamTsk(void *context);
235 void AvdtRegisterLocalSEPTsk(void *context);
236 void AvdtDiscoverReqTsk(void *context);
237 void AvdtGetCapReqTsk(void *context);
238 void AvdtGetCapRspTsk(void *context);
239 void AvdtGetAllCapReqTsk(void *context);
240 void AvdtGetAllCapRspTsk(void *context);
241 void AvdtDelayReqTsk(void *context);
242 void AvdtDelayRspTsk(void *context);
243 void AvdtOpenReqTsk(void *context);
244 void AvdtSetConfigReqTsk(void *context);
245 void AvdtSetConfigRspTsk(void *context);
246 void AvdtGetConfigReqTsk(void *context);
247 void AvdtStartReqTsk(void *context);
248 void AvdtStartRspTsk(void *context);
249 void AvdtSuspendReqTsk(void *context);
250 void AvdtSuspendRspTsk(void *context);
251 void AvdtCloseReqTsk(void *context);
252 void AvdtCloseRspTsk(void *context);
253 void AvdtAbortReqTsk(void *context);
254 void AvdtAbortRspTsk(void *context);
255 void AvdtReconfigReqTsk(void *context);
256 void AvdtReconfigRspTsk(void *context);
257 void AvdtWriteReqTsk(void *context);
258 void AvdtConnectReqTsk(void *context);
259 void AvdtDisconnectReqTsk(void *context);
260 
261 extern uint16_t AvdtCreateStream(const BtAddr *bdAddr, uint16_t *handle, uint16_t codecIndex);
262 extern uint16_t AvdtDiscoverReq(const BtAddr *bdAddr, uint8_t maxSeps, uint8_t *transLabel);
263 extern uint16_t AvdtGetCapReq(const BtAddr *bdAddr, uint8_t acpSeid, uint8_t *transLabel);
264 extern uint16_t AvdtGetCapRsp(const BtAddr *bdAddr, uint8_t transLabel, uint8_t errCode, AvdtSepConfig *sepCap);
265 extern uint16_t AvdtGetAllCapReq(const BtAddr *bdAddr, uint8_t acpSeid, uint8_t *transLabel);
266 extern uint16_t AvdtGetAllCapRsp(const BtAddr *bdAddr, uint8_t transLabel, uint8_t errCode, AvdtSepConfig *sepCap);
267 extern uint16_t AvdtDelayReq(uint16_t handle, uint8_t *transLabel, uint16_t delayValue);
268 extern uint16_t AvdtDelayRsp(uint16_t handle, uint8_t transLabel, uint8_t errCode);
269 extern uint16_t AvdtOpenReq(uint16_t handle, uint8_t *transLabel);
270 extern uint16_t AvdtSetConfigReq(uint16_t handle, uint8_t seid, AvdtSepConfig *sepConfig, uint8_t *transLabel);
271 extern uint16_t AvdtSetConfigRsp(uint16_t handle, uint8_t transLabel, AvdtCatetory category);
272 extern uint16_t AvdtGetConfigReq(uint16_t handle, uint8_t *transLabel);
273 extern uint16_t AvdtStartReq(const uint16_t *handles, uint8_t numHandles, uint8_t *transLabel);
274 extern uint16_t AvdtStartRsp(uint16_t firstHandle, uint8_t transLabel, uint16_t firstFailHandle, uint8_t errCode);
275 extern uint16_t AvdtSuspendReq(const uint16_t *handles, uint8_t numHandles, uint8_t *transLabel);
276 extern uint16_t AvdtSuspendRsp(uint16_t firstHandle, uint8_t transLabel, uint16_t firstFailHandle, uint8_t errCode);
277 extern uint16_t AvdtCloseReq(uint16_t handle);
278 extern uint16_t AvdtCloseRsp(uint16_t handle, uint8_t transLabel, uint8_t errCode);
279 extern uint16_t AvdtAbortReq(uint16_t handle, uint8_t *transLabel);
280 extern uint16_t AvdtAbortRsp(uint16_t handle, uint8_t transLabel, uint8_t errCode);
281 extern uint16_t AvdtReconfigReq(uint16_t handle, AvdtSepConfig *cfg, uint8_t *transLabel);
282 extern uint16_t AvdtReconfigRsp(uint16_t handle, uint8_t transLabel, AvdtCatetory category);
283 extern uint16_t AvdtWriteReq(uint16_t handle, Packet *pkt, uint32_t timeStamp, uint8_t payloadType, uint16_t marker);
284 extern uint16_t AvdtConnectReq(const BtAddr *bdAddr, uint8_t role);
285 extern uint16_t AvdtDisconnectReq(const BtAddr *bdAddr);
286 
287 #endif /* AVDTP_API_H */