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 #ifndef AVCTP_CTRL_L2CAP_H 16 #define AVCTP_CTRL_L2CAP_H 17 #include "avctp_int.h" 18 #include "l2cap_if.h" 19 #ifdef __cplusplus 20 extern "C" { 21 #endif 22 23 typedef struct { 24 uint16_t lcid; 25 uint8_t id; 26 L2capConnectionInfo info; 27 uint16_t lpsm; 28 void *ctx; 29 } AvctRecvConnectionReqCallbackTskParam; 30 31 typedef struct { 32 uint16_t lcid; 33 L2capConnectionInfo info; 34 uint16_t result; 35 uint16_t status; 36 void *ctx; 37 } AvctRecvConnectionRspCallbackTskParam; 38 39 typedef struct { 40 uint16_t lcid; 41 uint8_t id; 42 L2capConfigInfo cfg; 43 void *ctx; 44 } AvctRecvConfigReqCallbackTskParam; 45 46 typedef struct { 47 uint16_t lcid; 48 L2capConfigInfo cfg; 49 uint16_t result; 50 void *ctx; 51 } AvctRecvConfigRspCallbackTskParam; 52 53 typedef struct { 54 uint16_t lcid; 55 uint8_t id; 56 void *ctx; 57 } AvctRecvDisconnectionReqCallbackTskParam; 58 59 typedef struct { 60 uint16_t lcid; 61 void *ctx; 62 } AvctRecvDisconnectionRspCallbackTskParam; 63 64 typedef struct { 65 uint16_t lcid; 66 uint8_t reason; 67 void *ctx; 68 } AvctDisconnectAbnormalCallbackTskParam; 69 70 typedef struct { 71 uint16_t lcid; 72 Packet *pkt; 73 void *ctx; 74 } AvctRecvDataCallbackTskParam; 75 76 typedef struct { 77 uint16_t lcid; 78 uint8_t isBusy; 79 void *ctx; 80 } AvctRemoteBusyCallbackTskParam; 81 82 typedef struct { 83 BtAddr addr; 84 uint16_t lcid; 85 int result; 86 void *context; 87 } AvctCtrlL2CIFConnectReqCallbackTskParam; 88 89 /* Connection Request packets received */ 90 void AvctRecvConnectionReqCallback( 91 uint16_t lcid, uint8_t id, const L2capConnectionInfo *info, uint16_t lpsm, void *ctx); 92 void AvctRecvConnectionReqCallbackTsk(void *context); 93 void AvctRecvConnectionReqCBack(uint16_t lcid, uint8_t id, const L2capConnectionInfo *info, uint16_t lpsm, void *ctx); 94 /* Connection Response packet received */ 95 void AvctRecvConnectionRspCallback( 96 uint16_t lcid, const L2capConnectionInfo *info, uint16_t result, uint16_t status, void *ctx); 97 void AvctRecvConnectionRspCallbackTsk(void *context); 98 void AvctRecvConnectionRspCBack( 99 uint16_t lcid, const L2capConnectionInfo *info, uint16_t result, uint16_t status, void *ctx); 100 /* Configuration Request packet received */ 101 void AvctRecvConfigRspCallback(uint16_t lcid, const L2capConfigInfo *cfg, uint16_t result, void *ctx); 102 void AvctRecvConfigReqCallback(uint16_t lcid, uint8_t id, const L2capConfigInfo *cfg, void *ctx); 103 void AvctRecvConfigReqCallbackTsk(void *context); 104 void AvctRecvConfigReqCBack(uint16_t lcid, uint8_t id, const L2capConfigInfo *cfg, void *ctx); 105 /* Configuration Response packet received */ 106 void AvctRecvDisconnectionReqCallback(uint16_t lcid, uint8_t id, void *ctx); 107 void AvctRecvDisconnectionReqCallbackTsk(void *context); 108 void AvctRecvConfigRspCallbackTsk(void *context); 109 void AvctRecvConfigRspCBack(uint16_t lcid, const L2capConfigInfo *cfg, uint16_t result, void *ctx); 110 /* Disconnection Request packet received */ 111 void AvctRecvDisconnectionReqCallback(uint16_t lcid, uint8_t id, void *ctx); 112 void AvctRecvDisconnectionReqCallbackTsk(void *context); 113 void AvctRecvDisconnectionReqCBack(uint16_t lcid, uint8_t id, void *ctx); 114 /* Disconnection Response packet received */ 115 void AvctRecvDisconnectionRspCallback(uint16_t lcid, void *ctx); 116 void AvctRecvDisconnectionRspCallbackTsk(void *context); 117 void AvctRecvDisconnectionRspCBack(uint16_t lcid, void *ctx); 118 /* Disconnected abnormal, such as acl disconnected or link loss */ 119 void AvctDisconnectAbnormalCallback(uint16_t lcid, uint8_t reason, void *ctx); 120 void AvctDisconnectAbnormalCallbackTsk(void *context); 121 void AvctDisconnectAbnormalCBack(uint16_t lcid, uint8_t reason, void *ctx); 122 /* L2cap data packet received */ 123 void AvctRecvDataCallback(uint16_t lcid, Packet *pkt, void *ctx); 124 void AvctRecvDataCallbackTsk(void *context); 125 void AvctRecvDataCBack(uint16_t lcid, Packet *pkt, void *ctx); 126 /* In Enhanced Retransmission mode, when RNR received or tx_window overflow */ 127 void AvctRemoteBusyCallback(uint16_t lcid, uint8_t isBusy, void *ctx); 128 void AvctRemoteBusyCallbackTsk(void *context); 129 void AvctRemoteBusyCBack(uint16_t lcid, uint8_t isBusy, void *ctx); 130 131 void AvctCtrlL2CIFConnectReqCallbackTsk(void *context); 132 void AvctCtrlConnectResult(const BtAddr *addr, uint16_t lcid, int result, void *context); 133 extern void AvctRecvConnectionReqAct(const BtAddr *addr, uint16_t aclHandle, uint16_t lcid, uint8_t id, uint16_t psm); 134 extern void AvctCtrlL2CIFConnectReqCallback(const BtAddr *addr, uint16_t lcid, int result, void *context); 135 136 extern const L2capService G_AVCT_L2C_SVR; 137 138 #ifdef __cplusplus 139 } 140 #endif 141 #endif /* AVCTP_CTRL_L2CAP_H */