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 GAP_INTERNAL_H 17 #define GAP_INTERNAL_H 18 19 #include "gap_def.h" 20 21 #include "btm.h" 22 #include "hci/hci.h" 23 #include "hci/hci_error.h" 24 #include "l2cap_le_if.h" 25 #include "smp/smp.h" 26 27 #ifdef __cplusplus 28 extern "C" { 29 #endif 30 31 void GapChangeHCIAddr(BtAddr *addr, const HciBdAddr *hciAddr, uint8_t addrType); 32 bool GapIsEmptyAddr(const uint8_t *addr); 33 bool GapAddrCompare(const BtAddr *addr1, const BtAddr *addr2); 34 bool GapCompareChannelID(GAP_SecMultiplexingProtocol protocolID, GapSecChannel channelID1, GapSecChannel channelID2); 35 36 void GapRegisterHciEventCallbacks(void); 37 void GapDeregisterHciEventCallbacks(void); 38 void GapRegisterBtmAclCallbacks(void); 39 void GapDeregisterBtmAclCallbacks(void); 40 void GapIsRemoteDeviceSupportHostSecureSimplePairingAsync(const BtAddr *addr); 41 42 void GapRegisterSmCallbacks(void); 43 void GapDeregisterSmCallbacks(void); 44 45 void GapRegisterL2capCallbacks(void); 46 void GapDeregisterL2capCallbacks(void); 47 void GapLeConnectionParameterUpdateReq(uint16_t aclHandle, const L2capLeConnectionParameter *param); 48 void GapLeConnectionParameterUpdateRsp(uint16_t aclHandle, uint8_t id, uint16_t result); 49 50 #ifdef GAP_BREDR_SUPPORT 51 52 bool GapIsBredrEnable(void); 53 ScanModeBlock *GapGetScanModeBlock(void); 54 InquiryBlock *GapGetInquiryBlock(void); 55 RemoteNameBlock *GapGetRemoteNameBlock(void); 56 GAP_SecurityMode *GapGetSecurityMode(void); 57 ProfileSecurityBlock *GapGetProfileSecurityBlock(void); 58 ConnectionInfoBlock *GapGetConnectionInfoBlock(void); 59 EncryptionBlock *GapGetEncryptionBlock(void); 60 bool GapIsBondMode(void); 61 bool GapFindConnectionDeviceByAddr(void *nodeData, void *param); 62 bool GapFindConnectionDeviceByHandle(void *nodeData, void *param); 63 bool GapFindCmpListData(void *nodeData, void *param); 64 void GapStopUseAclConnection(void *dev); 65 void GapStartUseAclConnection(DeviceInfo *device, uint64_t timeMs); 66 int GapReadNewLocalOOBData(void); 67 bool GapIsKeyMissingRetry(void); 68 69 void GapAclConnectionComplete(const BtmAclConnectCompleteParam *param, void *context); 70 void GapAclDisconnectionComplete(uint8_t status, uint16_t connectionHandle, uint8_t reason, void *context); 71 void GapWriteScanEnableComplete(const HciWriteScanEnableReturnParam *param); 72 void GapWriteInquiryScanActivityComplete(const HciWriteInquiryScanActivityReturnParam *param); 73 void GapWriteInquiryScanTypeComplete(const HciWriteInquiryScanTypeReturnParam *param); 74 void GapWriteCurrentIACLAPComplete(const HciWriteCurrentIacLapReturnParam *param); 75 void GapWritePageScanActivityComplete(const HciWritePageScanActivityReturnParam *param); 76 void GapWritePageScanTypeComplete(const HciWritePageScanTypeReturnParam *param); 77 void GapWriteClassOfDeviceComplete(const HciWriteClassofDeviceReturnParam *param); 78 void GapSetExtendedInquiryResponseComplete(const HciWriteExtendedInquiryResponseReturnParam *param); 79 80 void GapInquiryCancelComplete(const HciInquiryCancelReturnParam *param); 81 void GapGetRemoteNameCancelComplete(const HciRemoteNameRequestCancelReturnParam *param); 82 void GapOnInquiryComplete(const HciInquiryCompleteEventParam *eventParam); 83 void GapOnInquiryResult(const HciInquiryResultEventParam *eventParam); 84 void GapOnInquiryResultRssi(const HciInquiryResultWithRssiEventParam *eventParam); 85 void GapOnEntendedInquiryResult(const HciExtendedInquiryResultEventParam *eventParam); 86 void GapOnGetRemoteNameComplete(const HciRemoteNameRequestCompleteEventParam *eventParam); 87 88 void GapAuthenticationClearInfo(RequestSecInfo *reqInfo); 89 void GapAuthenticationRetry(DeviceInfo *deviceInfo, RequestSecInfo *reqInfo, uint8_t hciStatus); 90 void GapRequestSecurityProcess(void); 91 void GapUpdateSecurityRequest(DeviceInfo *devInfo, enum DeviceSecurityEvent event, uint8_t hciStatus); 92 void GapRemoteDeviceSupportHostSecureSimplePairingCallback(const BtAddr *addr, bool support); 93 void GapDoAuthenticationCallback(const void *req); 94 void GapDoSecurityCallback(void *req); 95 96 void GapLinkKeyRequestReplyComplete(const HciLinkKeyRequestReplyReturnParam *param); 97 void GapLinkKeyRequestNegativeReplyComplete(const HciLinkKeyRequestNegativeReplyReturnParam *param); 98 void GapPINCodeRequestReplyComplete(const HciPinCodeRequestReplyReturnParam *param); 99 void GapPINCodeRequestNegativeReplyComplete(const HciPinCodeRequestNegativeReplyReturnParam *param); 100 void GapIOCapabilityRequestReplyComplete(const HciIOCapabilityRequestReplyReturnParam *param); 101 void GapIOCapabilityRequestNegativeReplyComplete(const HciIoCapabilityRequestNegativeReplyReturnParam *param); 102 void GapOnIOCapabilityResponseEvent(const HciIoCapabilityResponseEventParam *eventParam); 103 void GapUserConfirmationRequestReplyComplete(const HciUserConfirmationRequestReplyReturnParam *param); 104 void GapUserConfirmationRequestNegativeReplyComplete(const HciUserConfirmationRequestNegativeReplyReturnParam *param); 105 void GapUserPasskeyRequestReplyComplete(const HciUserPasskeyRequestReplyReturnParam *param); 106 void GapUserPasskeyRequestNegativeReplyComplete(const HciUserPasskeyRequestNegativeReplyReturnParam *param); 107 void GapRemoteOOBDataRequestReplyComplete(const HciRemoteOobDataRequestReplyReturnParam *param); 108 void GapRemoteOOBExtendedDataRequestReplyComplete(const HciRemoteOobExtendedDataRequestReplyReturnParam *param); 109 void GapRemoteOOBDataRequestNegativeReplyComplete(const HciRemoteOobDataRequestNegativeReplyReturnParam *param); 110 void GapReadLocalOobDataComplete(const HciReadLocalOOBDataReturnParam *param); 111 void GapOnSimplePairingComplete(const HciSimplePairingCompleteEventParam *eventParam); 112 void GapReadLocalOobExtendedDataComplete(const HciReadLocalOobExtendedDataReturnParam *param); 113 void GapReadLocalOobDataComplete(const HciReadLocalOOBDataReturnParam *param); 114 void GapOnAuthenticationComplete(const HciAuthenticationCompleteEventParam *eventParam); 115 void GapOnEncryptionChangeEvent(const HciEncryptionChangeEventParam *eventParam); 116 void GapOnPINCodeRequestEvent(const HciPinCodeRequestEventParam *eventParam); 117 void GapOnLinkKeyRequestEvent(const HciLinkKeyRequestEventParam *eventParam); 118 void GapOnLinkKeyNotificationEvent(const HciLinkKeyNotificationEventParam *eventParam); 119 void GapOnEncryptionKeyRefreshComplete(const HciEncryptionKeyRefreshCompleteEventParam *eventParam); 120 void GapOnIOCapabilityRequestEvent(const HciIoCapabilityRequestEventParam *eventParam); 121 void GapOnUserConfirmationRequestEvent(const HciUserConfirmationRequestEventParam *eventParam); 122 void GapOnUserPasskeyRequestEvent(const HciUserPasskeyRequestEventParam *eventParam); 123 void GapOnRemoteOOBDataRequestEvent(const HciRemoteOobDataRequestEventParam *eventParam); 124 void GapRemoteOOBDataRequestReplyComplete(const HciRemoteOobDataRequestReplyReturnParam *param); 125 void GapRemoteOOBExtendedDataRequestReplyComplete(const HciRemoteOobExtendedDataRequestReplyReturnParam *param); 126 void GapOnUserPasskeyNotificationEvent(const HciUserPasskeyNotificationEventParam *eventParam); 127 void GapOnUserPasskeyRequestEvent(const HciUserPasskeyRequestEventParam *eventParam); 128 #endif 129 130 #ifdef GAP_LE_SUPPORT 131 132 bool GapIsLeEnable(void); 133 bool GapLeRolesCheck(uint8_t role); 134 void GapFreeLeDeviceInfo(void *data); 135 void GapFreeLeSignatureRequest(void *data); 136 void GapFreeReportRPAResolveInfo(void *data); 137 LeBondBlock *GapGetLeBondBlock(void); 138 LeConnectionInfoBlock *GapGetLeConnectionInfoBlock(void); 139 LeSignatureBlock *GapGetLeSignatureBlock(void); 140 LeRandomAddressBlock *GapGetLeRandomAddressBlock(void); 141 LeExAdvBlock *GapGetLeExAdvBlock(void); 142 bool GapIsLeBondableMode(void); 143 LeLocalInfo *GapGetLeLocalInfo(void); 144 bool GapAddrIsResolvablePrivateAddress(const BtAddr *addr); 145 bool GapAddrIsStaticAddress(const BtAddr *addr); 146 bool GapAddrIsPublicAddress(const BtAddr *addr); 147 bool GapAddrIsIdentityAddress(const BtAddr *addr); 148 bool GapFindLeConnectionDeviceByAddr(void *nodeData, void *param); 149 bool GapFindLeConnectionDeviceByHandle(void *nodeData, void *param); 150 151 void GapLeReadMaximumAdvertisingDataLengthComplete(const HciLeReadMaximumAdvertisingDataLengthReturnParam *param); 152 void GapLeReadNumberofSupportedAdvertisingSetsComplete( 153 const HciLeReadNumberofSupportedAdvertisingSetsReturnParam *param); 154 void GapLeSetAdvertisingSetRandomAddressComplete(const HciLeSetAdvertisingSetRandomAddressReturnParam *param); 155 void GapLeSetExtendedAdvertisingParametersComplete(const HciLeSetExtendedAdvertisingParametersReturnParam *param); 156 void GapLeSetExtendedAdvertisingDataComplete(const HciLeSetExtendedAdvertisingDataReturnParam *param); 157 void GapLeSetExtendedScanResponseDataComplete(const HciLeSetExtendedScanResponseDataReturnParam *param); 158 void GapLeSetExtendedAdvertisingEnableComplete(const HciLeSetExtendedAdvertisingEnableReturnParam *param); 159 void GapOnLeScanRequestReceivedEvent(const HciLeScanRequestReceivedEventParam *eventParam); 160 void GapLeRemoveAdvertisingSetComplete(const HciLeRemoveAdvertisingSetReturnParam *param); 161 void GapLeClearAdvertisingSetsComplete(const HciLeClearAdvertisingSetsReturnParam *param); 162 void GapOnLeAdvertisingSetTerminated(const HciLeAdvertisingSetTerminatedEventParam *eventParam); 163 void GapLeAdvSetParamComplete(const HciLeSetAdvertisingParametersReturnParam *param); 164 void GapLeAdvReadTxPowerComplete(const HciLeReadAdvertisingChannelTxPowerReturnParam *param); 165 void GapLeAdvSetDataComplete(const HciLeSetAdvertisingDataReturnParam *param); 166 void GapLeAdvSetScanRspDataComplete(const HciLeSetScanResponseDataReturnParam *param); 167 void GapLeAdvSetEnableComplete(const HciLeSetAdvertisingEnableReturnParam *param); 168 169 void GapLeScanSetParamComplete(const HciLeSetExtendedScanParametersReturnParam *param); 170 void GapOnLeAdvertisingReportEvent(const HciLeAdvertisingReportEventParam *eventParam); 171 void GapLeScanSetEnableComplete(const HciLeSetScanEnableReturnParam *param); 172 void GapOnLeExtendedAdvertisingReportEvent(const HciLeExtendedAdvertisingReportEventParam *eventParam); 173 void GapOnLeDirectedAdvertisingReport(const HciLeDirectedAdvertisingReportEventParam *eventParam); 174 void GapOnLeScanTimeoutEvent(const void *eventParam); 175 void GapLeSetExtendedScanParametersComplete(const HciLeSetExtendedScanParametersReturnParam *param); 176 void GapLeSetExtendedScanEnableComplete(const HciLeSetExtendedScanEnableReturnParam *param); 177 void GapGenerateRPAResult(uint8_t status, const uint8_t *addr); 178 void GapResolveRPAResult(uint8_t status, bool result, const uint8_t *addr, const uint8_t *irk); 179 180 int GapLeRequestSecurityProcess(LeDeviceInfo *deviceInfo); 181 void GapLeDoPair(const void *addr); 182 void GapLeAuthenticationRequest(uint16_t handle, uint8_t pairMethod, const uint8_t *displayValue); 183 void GapLePairResult(uint16_t handle, uint8_t status, const SMP_PairResult *result); 184 void GapLeRemotePairRequest(uint16_t handle, const SMP_PairParam *param); 185 void GapLeRemotePairResponse(uint16_t handle, const SMP_PairParam *param); 186 void GapLeRemoteSecurityRequest(uint16_t handle, uint8_t authReq); 187 void GapLeLongTermKeyRequest(uint16_t handle, const uint8_t *random, uint16_t ediv); 188 void GapLeEncryptionComplete(uint16_t handle, uint8_t status); 189 void GapLeGenerateSignatureResult(uint8_t status, const uint8_t *sign); 190 int GapRequestSigningAlgorithmInfo(const BtAddr *addr); 191 void GapClearPairingStatus(const BtAddr *addr); 192 void GapDoPairResultCallback(const BtAddr *addr, uint8_t status); 193 194 void GapWriteAuthenticatedPayloadTimeoutComplete(const HciWriteAuthenticatedPayloadTimeoutReturnParam *param); 195 void GapOnAuthenticatedPayloadTimeoutExpiredEvent(const HciAuthenticatedPayloadTimeoutExpiredEventParam *eventParam); 196 void GapLeSetHostChannelClassificationComplete(const HciLeSetHostChannelClassificationReturnParam *param); 197 void GapLeReadChannelMapComplete(const HciLeReadChannelMapReturnParam *param); 198 void GapLeRemoteConnectionParameterRequestReplyComplete( 199 const HciLeRemoteConnectionParameterRequestReplyReturnParam *param); 200 void GapLeRemoteConnectionParameterRequestNegativeReplyComplete( 201 const HciLeRemoteConnectionParameterRequestNegativeReplyReturnParam *param); 202 void GapOnLeConnectionUpdateCompleteEvent(const HciLeConnectionUpdateCompleteEventParam *eventParam); 203 void GapOnLeRemoteConnectionParameterRequestEvent(const HciLeRemoteConnectionParameterRequestEventParam *eventParam); 204 bool GapLeDeviceNeedBond(const LeDeviceInfo *deviceInfo); 205 void GapLeConnectionComplete( 206 uint8_t status, uint16_t connectionHandle, const BtAddr *addr, uint8_t role, void *context); 207 void GapLeDisconnectionComplete(uint8_t status, uint16_t connectionHandle, uint8_t reason, void *context); 208 209 void GapReceiveL2capParameterUpdateReq( 210 uint16_t aclHandle, uint8_t id, const L2capLeConnectionParameter *param, void *ctx); 211 void GapReceiveL2capParameterUpdateRsp(uint16_t aclHandle, uint16_t result, void *ctx); 212 213 #endif 214 215 #ifdef __cplusplus 216 } 217 #endif 218 219 #endif