1 /*
2  * Copyright (C) 2021-2022 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_IMPL_H
17 #define AVDTP_IMPL_H
18 
19 #include "avdtp_int.h"
20 #include "gap_if.h"
21 
22 typedef struct {
23     uint16_t result;
24     GapServiceSecurityInfo security;
25     void *context;
26 } AvdtSecurityCheckTskParam;
27 
28 typedef struct {
29     BtAddr addr;
30     uint16_t lcid;
31     int result;
32     void *context;
33 } AvdtSignalConnectReqTskParam;
34 
35 typedef struct {
36     BtAddr addr;
37     uint16_t lcid;
38     int result;
39     void *context;
40 } AvdtStreamConnectReqTskParam;
41 
42 typedef struct {
43     uint16_t lcid;
44     int result;
45 } AvdtStreamSendDataTskParam;
46 
47 /* Signal  action functions */
48 extern uint16_t AvdtActConnReq(AvdtSigCtrl *sigCtrl, const AvdtEventData *data);
49 extern uint16_t AvdtActConnRsp(AvdtSigCtrl *sigCtrl, const AvdtEventData *data);
50 extern uint16_t AvdtActConnInd(AvdtSigCtrl *sigCtrl, const AvdtEventData *data);
51 extern uint16_t AvdtActConnCfm(AvdtSigCtrl *sigCtrl, const AvdtEventData *data);
52 extern uint16_t AvdtActDisconnReq(AvdtSigCtrl *sigCtrl, const AvdtEventData *data);
53 extern uint16_t AvdtActDisconnRsp(AvdtSigCtrl *sigCtrl, const AvdtEventData *data);
54 extern uint16_t AvdtActDisconnInd(AvdtSigCtrl *sigCtrl, const AvdtEventData *data);
55 extern uint16_t AvdtActDisconnCfm(AvdtSigCtrl *sigCtrl, const AvdtEventData *data);
56 extern uint16_t AvdtActDiscoverReq(AvdtSigCtrl *sigCtrl, const AvdtEventData *data);
57 extern uint16_t AvdtActDiscoverRsp(AvdtSigCtrl *sigCtrl, const AvdtEventData *data);
58 extern uint16_t AvdtActDiscoverInd(AvdtSigCtrl *sigCtrl, const AvdtEventData *data);
59 extern uint16_t AvdtActDiscoverCfm(AvdtSigCtrl *sigCtrl, const AvdtEventData *data);
60 extern uint16_t AvdtActGetCapReq(AvdtSigCtrl *sigCtrl, const AvdtEventData *data);
61 extern uint16_t AvdtActGetCapRsp(AvdtSigCtrl *sigCtrl, const AvdtEventData *data);
62 extern uint16_t AvdtActGetCapInd(AvdtSigCtrl *sigCtrl, const AvdtEventData *data);
63 extern uint16_t AvdtActGetCapCfm(AvdtSigCtrl *sigCtrl, const AvdtEventData *data);
64 extern uint16_t AvdtActGetAllCapReq(AvdtSigCtrl *sigCtrl, const AvdtEventData *data);
65 extern uint16_t AvdtActGetAllCapRsp(AvdtSigCtrl *sigCtrl, const AvdtEventData *data);
66 extern uint16_t AvdtActGetAllCapInd(AvdtSigCtrl *sigCtrl, const AvdtEventData *data);
67 extern uint16_t AvdtActGetAllCapCfm(AvdtSigCtrl *sigCtrl, const AvdtEventData *data);
68 extern uint16_t AvdtActSndMsg(AvdtSigCtrl *sigCtrl, const AvdtEventData *data);
69 /* Stream  action functions */
70 extern uint16_t AvdtActStreamOpenReq(AvdtStreamCtrl *streamCtrl, AvdtEventData *data);
71 extern uint16_t AvdtActStreamOpenRsp(AvdtStreamCtrl *streamCtrl, AvdtEventData *data);
72 extern uint16_t AvdtActStreamOpenInd(AvdtStreamCtrl *streamCtrl, AvdtEventData *data);
73 extern uint16_t AvdtActStreamOpenCfm(AvdtStreamCtrl *streamCtrl, AvdtEventData *data);
74 extern uint16_t AvdtActStreamCloseReq(AvdtStreamCtrl *streamCtrl, AvdtEventData *data);
75 extern uint16_t AvdtActStreamCloseRsp(AvdtStreamCtrl *streamCtrl, AvdtEventData *data);
76 extern uint16_t AvdtActStreamCloseInd(AvdtStreamCtrl *streamCtrl, AvdtEventData *data);
77 extern uint16_t AvdtActStreamCloseCfm(AvdtStreamCtrl *streamCtrl, AvdtEventData *data);
78 extern uint16_t AvdtActSetConfigReq(AvdtStreamCtrl *streamCtrl, AvdtEventData *data);
79 extern uint16_t AvdtActSetConfigRsp(AvdtStreamCtrl *streamCtrl, AvdtEventData *data);
80 extern uint16_t AvdtActSetConfigInd(AvdtStreamCtrl *streamCtrl, AvdtEventData *data);
81 extern uint16_t AvdtActSetConfigCfm(AvdtStreamCtrl *streamCtrl, AvdtEventData *data);
82 extern uint16_t AvdtActGetConfigReq(AvdtStreamCtrl *streamCtrl, AvdtEventData *data);
83 extern uint16_t AvdtActGetConfigRsp(AvdtStreamCtrl *streamCtrl, AvdtEventData *data);
84 extern uint16_t AvdtActGetConfigInd(AvdtStreamCtrl *streamCtrl, AvdtEventData *data);
85 extern uint16_t AvdtActGetConfigCfm(AvdtStreamCtrl *streamCtrl, AvdtEventData *data);
86 extern uint16_t AvdtActReconfigReq(AvdtStreamCtrl *streamCtrl, AvdtEventData *data);
87 extern uint16_t AvdtActReconfigRsp(AvdtStreamCtrl *streamCtrl, AvdtEventData *data);
88 extern uint16_t AvdtActReconfigInd(AvdtStreamCtrl *streamCtrl, AvdtEventData *data);
89 extern uint16_t AvdtActReconfigCfm(AvdtStreamCtrl *streamCtrl, AvdtEventData *data);
90 extern uint16_t AvdtActOpenReq(AvdtStreamCtrl *streamCtrl, AvdtEventData *data);
91 extern uint16_t AvdtActOpenRsp(AvdtStreamCtrl *streamCtrl, AvdtEventData *data);
92 extern uint16_t AvdtActOpenInd(AvdtStreamCtrl *streamCtrl, AvdtEventData *data);
93 extern uint16_t AvdtActOpenCfm(AvdtStreamCtrl *streamCtrl, AvdtEventData *data);
94 extern uint16_t AvdtActStartReq(AvdtStreamCtrl *streamCtrl, AvdtEventData *data);
95 extern uint16_t AvdtActStartRsp(AvdtStreamCtrl *streamCtrl, AvdtEventData *data);
96 extern uint16_t AvdtActStartInd(AvdtStreamCtrl *streamCtrl, AvdtEventData *data);
97 extern uint16_t AvdtActStartCfm(AvdtStreamCtrl *streamCtrl, AvdtEventData *data);
98 extern uint16_t AvdtActCloseReq(AvdtStreamCtrl *streamCtrl, AvdtEventData *data);
99 extern uint16_t AvdtActCloseRsp(AvdtStreamCtrl *streamCtrl, AvdtEventData *data);
100 extern uint16_t AvdtActCloseInd(AvdtStreamCtrl *streamCtrl, AvdtEventData *data);
101 extern uint16_t AvdtActCloseCfm(AvdtStreamCtrl *streamCtrl, AvdtEventData *data);
102 extern uint16_t AvdtActSuspendReq(AvdtStreamCtrl *streamCtrl, AvdtEventData *data);
103 extern uint16_t AvdtActSuspendRsp(AvdtStreamCtrl *streamCtrl, AvdtEventData *data);
104 extern uint16_t AvdtActSuspendInd(AvdtStreamCtrl *streamCtrl, AvdtEventData *data);
105 extern uint16_t AvdtActSuspendCfm(AvdtStreamCtrl *streamCtrl, AvdtEventData *data);
106 extern uint16_t AvdtActDelayRptReq(AvdtStreamCtrl *streamCtrl, AvdtEventData *data);
107 extern uint16_t AvdtActDelayRptRsp(AvdtStreamCtrl *streamCtrl, AvdtEventData *data);
108 extern uint16_t AvdtActDelayRptInd(AvdtStreamCtrl *streamCtrl, AvdtEventData *data);
109 extern uint16_t AvdtActDelayRptCfm(AvdtStreamCtrl *streamCtrl, AvdtEventData *data);
110 extern uint16_t AvdtActAbortReq(AvdtStreamCtrl *streamCtrl, AvdtEventData *data);
111 extern uint16_t AvdtActAbortRsp(AvdtStreamCtrl *streamCtrl, AvdtEventData *data);
112 extern uint16_t AvdtActAbortInd(AvdtStreamCtrl *streamCtrl, AvdtEventData *data);
113 extern uint16_t AvdtActAbortCfm(AvdtStreamCtrl *streamCtrl, AvdtEventData *data);
114 extern uint16_t AvdtActWriteReq(AvdtStreamCtrl *streamCtrl, AvdtEventData *data);
115 extern uint16_t AvdtActWriteCfm(AvdtStreamCtrl *streamCtrl, AvdtEventData *data);
116 extern uint16_t AvdtActReadInd(AvdtStreamCtrl *streamCtrl, AvdtEventData *data);
117 extern uint16_t AvdtActBadStateRej(AvdtStreamCtrl *streamCtrl, AvdtEventData *data);
118 
119 /**
120  * Inner function declaration
121  */
122 void AvdtSecurityCheckCallback(uint16_t result, GapServiceSecurityInfo security, void *context);
123 void AvdtSecurityCheckTsk(void *context);
124 void AvdtSecurityCheck(uint16_t result, GapServiceSecurityInfo security, void *context);
125 void AvdtSignalConnectReqCallback(const BtAddr *addr, uint16_t lcid, int result, void *context);
126 void AvdtSignalConnectReqTsk(void *context);
127 void AvdtSignalConnectReq(const BtAddr *addr, uint16_t lcid, int result, void *context);
128 void AvdtStreamConnectReqCallback(const BtAddr *addr, uint16_t lcid, int result, void *context);
129 void AvdtStreamConnectReqTsk(void *context);
130 void AvdtStreamConnectReq(const BtAddr *addr, uint16_t lcid, int result, void *context);
131 void AvdtStreamSendDataCallback(uint16_t lcid, int result);
132 void AvdtStreamSendDataTsk(void *context);
133 void AvdtStreamSendData(uint16_t lcid, int result);
134 AvdtSepConfig AvdtGetSepConfig(AvdtSigCtrl *sigCtrl, uint16_t handle);
135 AvdtSepConfig AvdtGetConfig(AvdtSigCtrl *sigCtrl, uint16_t handle);
136 #endif /* AVDTP_IMPL_H */