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 */