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_CTRL_H
17 #define AVDTP_CTRL_H
18 
19 #include "avdtp_int.h"
20 
21 /* Stream Manager function declarations */
22 extern void AvdtControlBlockInit(void);
23 extern void AvdtTransChDealloc(uint16_t lcid);
24 extern void AvdtTransChDeallocAll(void);
25 extern void AvdtSigDealloc(void);
26 extern void AvdtFreeSigHandle(uint16_t handle);
27 extern void AvdtFreeStreamHandle(uint16_t handle);
28 extern void AvdtFreeSigCtrlByHandle(uint16_t handle);
29 extern void AvdtStreamProcEvent(AvdtStreamCtrl *streamCtrl, uint8_t event, AvdtEventData *data);
30 extern void AvdtSigProcEvent(AvdtSigCtrl *sigCtrl, uint8_t event, AvdtEventData *data);
31 extern uint8_t AvdtCreateTransLabel(AvdtSigCtrl *sigCtrl);
32 extern uint16_t AvdtAssignSigHandle(void);
33 extern uint16_t AvdtAssignStreamHandle(void);
34 extern uint16_t AvdtCreateSequenceNo(AvdtStreamCtrl *avdtStreamCtrl);
35 extern AvdtStreamCtrl *AvdtGetStreamCtrlByHandle(uint16_t handle);
36 extern AvdtStreamCtrl *AvdtStreamCtrlAllocate(AvdtSigCtrl *sigCtrl, uint16_t codecIndex);
37 extern void AvdtStreamCtrlDeallocByHandle(AvdtSigCtrl *sigCtrl, uint16_t handle);
38 extern void AvdtStreamCtrlDeallocAll(AvdtSigCtrl *sigCtrl);
39 extern AvdtSigCtrl *AvdtGetSigCtrlByAddr(const BtAddr *bdAddr);
40 extern AvdtSigCtrl *AvdtGetSigCtrlByHandle(uint16_t handle);
41 extern AvdtSigCtrl *AvdtSigCtrlAllocate(const BtAddr *bdAddr, uint8_t role);
42 extern AvdtTransChannel *AvdtTransChTabAllocate(uint8_t type, AvdtSigCtrl *sigCtrl, AvdtStreamCtrl *streamCtrl);
43 extern AvdtTransChannel *AvdtGetTransChTabByLcid(uint16_t lcid);
44 extern AvdtTransChannel *AvdtGetTransChTabByAddr(const BtAddr *bdAddr, uint8_t type);
45 extern AvdtTransChannel *AvdtGetTransChTabByHandle(uint8_t type, uint16_t handle);
46 extern void AvdtCtrlEvtCallback(
47     AvdtSigCtrl *sigCtrl, uint16_t handle, const BtAddr *bdAddr, uint8_t event, const AvdtCtrlData *data, uint8_t role);
48 extern uint16_t AvdtCreateSEP(const BtAddr *bdAddr);
49 extern uint16_t AvdtCheckSepExited(uint16_t codecIndex);
50 extern uint16_t AvdtSepAlloc(AvdtStreamConfig *avdtStreamConfig);
51 extern AvdtStreamConfig *AvdtGetSepConfigByCodecIndex(uint16_t codecIndex);
52 extern uint16_t AvdtCheckSepIsUsed(AvdtSigCtrl *sigCtrl, uint16_t codecIndex);
53 extern uint8_t AvdtAsyncProcess(void (*callback)(void *context), void *context);
54 extern uint16_t AvdtGetMtu(void);
55 extern void AvdtRegister(const AvdtRegisterParam *reg);
56 extern uint16_t AvdtRegisterLocalSEP(AvdtStreamConfig *avdtStreamConfig, uint8_t number);
57 extern void AvdtIsEdr2MbMode(const BtAddr *bdAddr);
58 extern void AvdtIsEdr3MbMode(const BtAddr *bdAddr);
59 #endif /* AVDTP_CTRL_H */