1094332d3Sopenharmony_ci/* 2094332d3Sopenharmony_ci * Copyright (c) 2023 Huawei Device Co., Ltd. 3094332d3Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 4094332d3Sopenharmony_ci * you may not use this file except in compliance with the License. 5094332d3Sopenharmony_ci * You may obtain a copy of the License at 6094332d3Sopenharmony_ci * 7094332d3Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 8094332d3Sopenharmony_ci * 9094332d3Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software 10094332d3Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 11094332d3Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12094332d3Sopenharmony_ci * See the License for the specific language governing permissions and 13094332d3Sopenharmony_ci * limitations under the License. 14094332d3Sopenharmony_ci */ 15094332d3Sopenharmony_ci 16094332d3Sopenharmony_ci#include "p2p_callback_impl.h" 17094332d3Sopenharmony_ci#include <securec.h> 18094332d3Sopenharmony_ci#include <hdf_base.h> 19094332d3Sopenharmony_ci#include <hdf_log.h> 20094332d3Sopenharmony_ci#include <osal_mem.h> 21094332d3Sopenharmony_ci 22094332d3Sopenharmony_cistatic int32_t P2pCallbackDeviceFound(struct IWpaCallback *self, 23094332d3Sopenharmony_ci const struct HdiP2pDeviceInfoParam *deviceInfoParam, const char *ifName) 24094332d3Sopenharmony_ci{ 25094332d3Sopenharmony_ci (void)self; 26094332d3Sopenharmony_ci if (deviceInfoParam == NULL || ifName == NULL) { 27094332d3Sopenharmony_ci HDF_LOGE("%{public}s: input parameter invalid!", __func__); 28094332d3Sopenharmony_ci return HDF_ERR_INVALID_PARAM; 29094332d3Sopenharmony_ci } 30094332d3Sopenharmony_ci HDF_LOGE("%{public}s: srcAddress=" MACSTR, __func__, MAC2STR(deviceInfoParam->srcAddress)); 31094332d3Sopenharmony_ci return HDF_SUCCESS; 32094332d3Sopenharmony_ci} 33094332d3Sopenharmony_ci 34094332d3Sopenharmony_cistatic int32_t P2pCallbackDeviceLost(struct IWpaCallback *self, 35094332d3Sopenharmony_ci const struct HdiP2pDeviceLostParam *deviceLostParam, const char *ifName) 36094332d3Sopenharmony_ci{ 37094332d3Sopenharmony_ci (void)self; 38094332d3Sopenharmony_ci if (deviceLostParam == NULL || ifName == NULL) { 39094332d3Sopenharmony_ci HDF_LOGE("%{public}s: input parameter invalid!", __func__); 40094332d3Sopenharmony_ci return HDF_ERR_INVALID_PARAM; 41094332d3Sopenharmony_ci } 42094332d3Sopenharmony_ci HDF_LOGE("%{public}s: p2pDeviceAddress=" MACSTR, __func__, MAC2STR(deviceLostParam->p2pDeviceAddress)); 43094332d3Sopenharmony_ci return HDF_SUCCESS; 44094332d3Sopenharmony_ci} 45094332d3Sopenharmony_ci 46094332d3Sopenharmony_cistatic int32_t P2pCallbackGoNegotiationRequest(struct IWpaCallback *self, 47094332d3Sopenharmony_ci const struct HdiP2pGoNegotiationRequestParam *goNegotiationRequestParam, const char *ifName) 48094332d3Sopenharmony_ci{ 49094332d3Sopenharmony_ci (void)self; 50094332d3Sopenharmony_ci if (goNegotiationRequestParam == NULL || ifName == NULL) { 51094332d3Sopenharmony_ci HDF_LOGE("%{public}s: input parameter invalid!", __func__); 52094332d3Sopenharmony_ci return HDF_ERR_INVALID_PARAM; 53094332d3Sopenharmony_ci } 54094332d3Sopenharmony_ci HDF_LOGE("%{public}s: srcAddress=" MACSTR, __func__, MAC2STR(goNegotiationRequestParam->srcAddress)); 55094332d3Sopenharmony_ci return HDF_SUCCESS; 56094332d3Sopenharmony_ci} 57094332d3Sopenharmony_ci 58094332d3Sopenharmony_cistatic int32_t P2pCallbackGoNegotiationCompleted(struct IWpaCallback *self, 59094332d3Sopenharmony_ci const struct HdiP2pGoNegotiationCompletedParam *goNegotiationCompletedParam, const char *ifName) 60094332d3Sopenharmony_ci{ 61094332d3Sopenharmony_ci (void)self; 62094332d3Sopenharmony_ci if (goNegotiationCompletedParam == NULL || ifName == NULL) { 63094332d3Sopenharmony_ci HDF_LOGE("%{public}s: input parameter invalid!", __func__); 64094332d3Sopenharmony_ci return HDF_ERR_INVALID_PARAM; 65094332d3Sopenharmony_ci } 66094332d3Sopenharmony_ci HDF_LOGE("%{public}s: status=%{public}d", __func__, goNegotiationCompletedParam->status); 67094332d3Sopenharmony_ci return HDF_SUCCESS; 68094332d3Sopenharmony_ci} 69094332d3Sopenharmony_ci 70094332d3Sopenharmony_cistatic int32_t P2pCallbackInvitationReceived(struct IWpaCallback *self, 71094332d3Sopenharmony_ci const struct HdiP2pInvitationReceivedParam *invitationReceivedParam, const char *ifName) 72094332d3Sopenharmony_ci{ 73094332d3Sopenharmony_ci (void)self; 74094332d3Sopenharmony_ci if (invitationReceivedParam == NULL || ifName == NULL) { 75094332d3Sopenharmony_ci HDF_LOGE("%{public}s: input parameter invalid!", __func__); 76094332d3Sopenharmony_ci return HDF_ERR_INVALID_PARAM; 77094332d3Sopenharmony_ci } 78094332d3Sopenharmony_ci HDF_LOGE("%{public}s: srcAddress=" MACSTR, __func__, MAC2STR(invitationReceivedParam->srcAddress)); 79094332d3Sopenharmony_ci return HDF_SUCCESS; 80094332d3Sopenharmony_ci} 81094332d3Sopenharmony_ci 82094332d3Sopenharmony_cistatic int32_t P2pCallbackInvitationResult(struct IWpaCallback *self, 83094332d3Sopenharmony_ci const struct HdiP2pInvitationResultParam *invitationResultParam, const char *ifName) 84094332d3Sopenharmony_ci{ 85094332d3Sopenharmony_ci (void)self; 86094332d3Sopenharmony_ci if (invitationResultParam == NULL || ifName == NULL) { 87094332d3Sopenharmony_ci HDF_LOGE("%{public}s: input parameter invalid!", __func__); 88094332d3Sopenharmony_ci return HDF_ERR_INVALID_PARAM; 89094332d3Sopenharmony_ci } 90094332d3Sopenharmony_ci HDF_LOGE("%{public}s: bssid=" MACSTR, __func__, MAC2STR(invitationResultParam->bssid)); 91094332d3Sopenharmony_ci return HDF_SUCCESS; 92094332d3Sopenharmony_ci} 93094332d3Sopenharmony_ci 94094332d3Sopenharmony_cistatic int32_t P2pCallbackGroupFormationSuccess(struct IWpaCallback *self, const char *ifName) 95094332d3Sopenharmony_ci{ 96094332d3Sopenharmony_ci (void)self; 97094332d3Sopenharmony_ci if (ifName == NULL) { 98094332d3Sopenharmony_ci HDF_LOGE("%{public}s: input parameter invalid!", __func__); 99094332d3Sopenharmony_ci return HDF_ERR_INVALID_PARAM; 100094332d3Sopenharmony_ci } 101094332d3Sopenharmony_ci HDF_LOGE("%{public}s: GroupFormationSuccess", __func__); 102094332d3Sopenharmony_ci return HDF_SUCCESS; 103094332d3Sopenharmony_ci} 104094332d3Sopenharmony_ci 105094332d3Sopenharmony_cistatic int32_t P2pCallbackGroupFormationFailure(struct IWpaCallback *self, 106094332d3Sopenharmony_ci const char *reason, const char *ifName) 107094332d3Sopenharmony_ci{ 108094332d3Sopenharmony_ci (void)self; 109094332d3Sopenharmony_ci if (reason == NULL || ifName == NULL) { 110094332d3Sopenharmony_ci HDF_LOGE("%{public}s: input parameter invalid!", __func__); 111094332d3Sopenharmony_ci return HDF_ERR_INVALID_PARAM; 112094332d3Sopenharmony_ci } 113094332d3Sopenharmony_ci 114094332d3Sopenharmony_ci HDF_LOGE("%{public}s: reason=%{public}s", __func__, reason); 115094332d3Sopenharmony_ci return HDF_SUCCESS; 116094332d3Sopenharmony_ci} 117094332d3Sopenharmony_ci 118094332d3Sopenharmony_cistatic int32_t P2pCallbackGroupStarted(struct IWpaCallback *self, 119094332d3Sopenharmony_ci const struct HdiP2pGroupStartedParam *groupStartedParam, const char *ifName) 120094332d3Sopenharmony_ci{ 121094332d3Sopenharmony_ci (void)self; 122094332d3Sopenharmony_ci if (groupStartedParam == NULL || ifName == NULL) { 123094332d3Sopenharmony_ci HDF_LOGE("%{public}s: input parameter invalid!", __func__); 124094332d3Sopenharmony_ci return HDF_ERR_INVALID_PARAM; 125094332d3Sopenharmony_ci } 126094332d3Sopenharmony_ci HDF_LOGE("%{public}s: goDeviceAddress=" MACSTR, __func__, MAC2STR(groupStartedParam->goDeviceAddress)); 127094332d3Sopenharmony_ci return HDF_SUCCESS; 128094332d3Sopenharmony_ci} 129094332d3Sopenharmony_ci 130094332d3Sopenharmony_cistatic int32_t P2pCallbackGroupRemoved(struct IWpaCallback *self, 131094332d3Sopenharmony_ci const struct HdiP2pGroupRemovedParam *groupRemovedParam, const char *ifName) 132094332d3Sopenharmony_ci{ 133094332d3Sopenharmony_ci (void)self; 134094332d3Sopenharmony_ci if (groupRemovedParam == NULL || ifName == NULL) { 135094332d3Sopenharmony_ci HDF_LOGE("%{public}s: input parameter invalid!", __func__); 136094332d3Sopenharmony_ci return HDF_ERR_INVALID_PARAM; 137094332d3Sopenharmony_ci } 138094332d3Sopenharmony_ci HDF_LOGE("%{public}s: isGo=%{public}d groupIfName=%{public}s", __func__, groupRemovedParam->isGo, 139094332d3Sopenharmony_ci groupRemovedParam->groupIfName); 140094332d3Sopenharmony_ci return HDF_SUCCESS; 141094332d3Sopenharmony_ci} 142094332d3Sopenharmony_ci 143094332d3Sopenharmony_cistatic int32_t P2pCallbackProvisionDiscoveryCompleted(struct IWpaCallback *self, 144094332d3Sopenharmony_ci const struct HdiP2pProvisionDiscoveryCompletedParam *param, const char *ifName) 145094332d3Sopenharmony_ci{ 146094332d3Sopenharmony_ci (void)self; 147094332d3Sopenharmony_ci if (param == NULL || ifName == NULL) { 148094332d3Sopenharmony_ci HDF_LOGE("%{public}s: input parameter invalid!", __func__); 149094332d3Sopenharmony_ci return HDF_ERR_INVALID_PARAM; 150094332d3Sopenharmony_ci } 151094332d3Sopenharmony_ci HDF_LOGE("%{public}s: p2pDeviceAddress=" MACSTR, __func__, MAC2STR(param->p2pDeviceAddress)); 152094332d3Sopenharmony_ci return HDF_SUCCESS; 153094332d3Sopenharmony_ci} 154094332d3Sopenharmony_ci 155094332d3Sopenharmony_cistatic int32_t P2pCallbackFindStopped(struct IWpaCallback *self, const char *ifName) 156094332d3Sopenharmony_ci{ 157094332d3Sopenharmony_ci (void)self; 158094332d3Sopenharmony_ci if (ifName == NULL) { 159094332d3Sopenharmony_ci HDF_LOGE("%{public}s: input parameter invalid!", __func__); 160094332d3Sopenharmony_ci return HDF_ERR_INVALID_PARAM; 161094332d3Sopenharmony_ci } 162094332d3Sopenharmony_ci HDF_LOGE("%{public}s: FindStopped", __func__); 163094332d3Sopenharmony_ci return HDF_SUCCESS; 164094332d3Sopenharmony_ci} 165094332d3Sopenharmony_ci 166094332d3Sopenharmony_cistatic int32_t P2pCallbackServDiscReq(struct IWpaCallback *self, 167094332d3Sopenharmony_ci const struct HdiP2pServDiscReqInfoParam *servDiscReqInfoParam, const char *ifName) 168094332d3Sopenharmony_ci{ 169094332d3Sopenharmony_ci (void)self; 170094332d3Sopenharmony_ci if (servDiscReqInfoParam == NULL || ifName == NULL) { 171094332d3Sopenharmony_ci HDF_LOGE("%{public}s: input parameter invalid!", __func__); 172094332d3Sopenharmony_ci return HDF_ERR_INVALID_PARAM; 173094332d3Sopenharmony_ci } 174094332d3Sopenharmony_ci HDF_LOGE("%{public}s: mac=" MACSTR, __func__, MAC2STR(servDiscReqInfoParam->mac)); 175094332d3Sopenharmony_ci return HDF_SUCCESS; 176094332d3Sopenharmony_ci} 177094332d3Sopenharmony_ci 178094332d3Sopenharmony_cistatic int32_t P2pCallbackServDiscResp(struct IWpaCallback *self, 179094332d3Sopenharmony_ci const struct HdiP2pServDiscRespParam *param, const char *ifName) 180094332d3Sopenharmony_ci{ 181094332d3Sopenharmony_ci (void)self; 182094332d3Sopenharmony_ci if (param == NULL || ifName == NULL) { 183094332d3Sopenharmony_ci HDF_LOGE("%{public}s: input parameter invalid!", __func__); 184094332d3Sopenharmony_ci return HDF_ERR_INVALID_PARAM; 185094332d3Sopenharmony_ci } 186094332d3Sopenharmony_ci HDF_LOGE("%{public}s: srcAddress=" MACSTR, __func__, MAC2STR(param->srcAddress)); 187094332d3Sopenharmony_ci return HDF_SUCCESS; 188094332d3Sopenharmony_ci} 189094332d3Sopenharmony_ci 190094332d3Sopenharmony_cistatic int32_t P2pCallbackStaConnectState(struct IWpaCallback *self, 191094332d3Sopenharmony_ci const struct HdiP2pStaConnectStateParam *param, const char *ifName) 192094332d3Sopenharmony_ci{ 193094332d3Sopenharmony_ci (void)self; 194094332d3Sopenharmony_ci if (param == NULL || ifName == NULL) { 195094332d3Sopenharmony_ci HDF_LOGE("%{public}s: input parameter invalid!", __func__); 196094332d3Sopenharmony_ci return HDF_ERR_INVALID_PARAM; 197094332d3Sopenharmony_ci } 198094332d3Sopenharmony_ci HDF_LOGE("%{public}s: srcAddress=" MACSTR "p2pDeviceAddress=" MACSTR, __func__, MAC2STR(param->srcAddress), 199094332d3Sopenharmony_ci MAC2STR(param->p2pDeviceAddress)); 200094332d3Sopenharmony_ci return HDF_SUCCESS; 201094332d3Sopenharmony_ci} 202094332d3Sopenharmony_ci 203094332d3Sopenharmony_cistatic int32_t P2pCallbackIfaceCreated(struct IWpaCallback *self, 204094332d3Sopenharmony_ci const struct HdiP2pIfaceCreatedParam *param, const char *ifName) 205094332d3Sopenharmony_ci{ 206094332d3Sopenharmony_ci (void)self; 207094332d3Sopenharmony_ci if (param == NULL || ifName == NULL) { 208094332d3Sopenharmony_ci HDF_LOGE("%{public}s: input parameter invalid!", __func__); 209094332d3Sopenharmony_ci return HDF_ERR_INVALID_PARAM; 210094332d3Sopenharmony_ci } 211094332d3Sopenharmony_ci HDF_LOGE("%{public}s: isGo=%{public}d", __func__, param->isGo); 212094332d3Sopenharmony_ci return HDF_SUCCESS; 213094332d3Sopenharmony_ci} 214094332d3Sopenharmony_ci 215094332d3Sopenharmony_cistruct IWpaCallback *P2pCallbackServiceGet(void) 216094332d3Sopenharmony_ci{ 217094332d3Sopenharmony_ci struct P2pCallbackService *service = 218094332d3Sopenharmony_ci (struct P2pCallbackService *)OsalMemCalloc(sizeof(struct P2pCallbackService)); 219094332d3Sopenharmony_ci if (service == NULL) { 220094332d3Sopenharmony_ci HDF_LOGE("%{public}s: malloc P2pCallbackService obj failed!", __func__); 221094332d3Sopenharmony_ci return NULL; 222094332d3Sopenharmony_ci } 223094332d3Sopenharmony_ci 224094332d3Sopenharmony_ci service->interface.OnEventDeviceFound = P2pCallbackDeviceFound; 225094332d3Sopenharmony_ci service->interface.OnEventDeviceLost = P2pCallbackDeviceLost; 226094332d3Sopenharmony_ci service->interface.OnEventGoNegotiationRequest = P2pCallbackGoNegotiationRequest; 227094332d3Sopenharmony_ci service->interface.OnEventGoNegotiationCompleted = P2pCallbackGoNegotiationCompleted; 228094332d3Sopenharmony_ci service->interface.OnEventInvitationReceived = P2pCallbackInvitationReceived; 229094332d3Sopenharmony_ci service->interface.OnEventInvitationResult = P2pCallbackInvitationResult; 230094332d3Sopenharmony_ci service->interface.OnEventGroupFormationSuccess = P2pCallbackGroupFormationSuccess; 231094332d3Sopenharmony_ci service->interface.OnEventGroupFormationFailure = P2pCallbackGroupFormationFailure; 232094332d3Sopenharmony_ci service->interface.OnEventGroupStarted = P2pCallbackGroupStarted; 233094332d3Sopenharmony_ci service->interface.OnEventGroupRemoved = P2pCallbackGroupRemoved; 234094332d3Sopenharmony_ci service->interface.OnEventProvisionDiscoveryCompleted = P2pCallbackProvisionDiscoveryCompleted; 235094332d3Sopenharmony_ci service->interface.OnEventFindStopped = P2pCallbackFindStopped; 236094332d3Sopenharmony_ci service->interface.OnEventServDiscReq = P2pCallbackServDiscReq; 237094332d3Sopenharmony_ci service->interface.OnEventServDiscResp = P2pCallbackServDiscResp; 238094332d3Sopenharmony_ci service->interface.OnEventStaConnectState = P2pCallbackStaConnectState; 239094332d3Sopenharmony_ci service->interface.OnEventIfaceCreated = P2pCallbackIfaceCreated; 240094332d3Sopenharmony_ci return &service->interface; 241094332d3Sopenharmony_ci} 242094332d3Sopenharmony_ci 243094332d3Sopenharmony_civoid P2pCallbackServiceRelease(struct IWpaCallback *instance) 244094332d3Sopenharmony_ci{ 245094332d3Sopenharmony_ci struct P2pCallbackService *service = (struct P2pCallbackService *)instance; 246094332d3Sopenharmony_ci if (service == NULL) { 247094332d3Sopenharmony_ci return; 248094332d3Sopenharmony_ci } 249094332d3Sopenharmony_ci 250094332d3Sopenharmony_ci OsalMemFree(service); 251094332d3Sopenharmony_ci} 252