1 /*
2 * Copyright (c) 2023 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 #include "p2p_callback_impl.h"
17 #include <securec.h>
18 #include <hdf_base.h>
19 #include <hdf_log.h>
20 #include <osal_mem.h>
21
P2pCallbackDeviceFound(struct IWpaCallback * self,const struct HdiP2pDeviceInfoParam * deviceInfoParam,const char * ifName)22 static int32_t P2pCallbackDeviceFound(struct IWpaCallback *self,
23 const struct HdiP2pDeviceInfoParam *deviceInfoParam, const char *ifName)
24 {
25 (void)self;
26 if (deviceInfoParam == NULL || ifName == NULL) {
27 HDF_LOGE("%{public}s: input parameter invalid!", __func__);
28 return HDF_ERR_INVALID_PARAM;
29 }
30 HDF_LOGE("%{public}s: srcAddress=" MACSTR, __func__, MAC2STR(deviceInfoParam->srcAddress));
31 return HDF_SUCCESS;
32 }
33
P2pCallbackDeviceLost(struct IWpaCallback * self,const struct HdiP2pDeviceLostParam * deviceLostParam,const char * ifName)34 static int32_t P2pCallbackDeviceLost(struct IWpaCallback *self,
35 const struct HdiP2pDeviceLostParam *deviceLostParam, const char *ifName)
36 {
37 (void)self;
38 if (deviceLostParam == NULL || ifName == NULL) {
39 HDF_LOGE("%{public}s: input parameter invalid!", __func__);
40 return HDF_ERR_INVALID_PARAM;
41 }
42 HDF_LOGE("%{public}s: p2pDeviceAddress=" MACSTR, __func__, MAC2STR(deviceLostParam->p2pDeviceAddress));
43 return HDF_SUCCESS;
44 }
45
P2pCallbackGoNegotiationRequest(struct IWpaCallback * self,const struct HdiP2pGoNegotiationRequestParam * goNegotiationRequestParam,const char * ifName)46 static int32_t P2pCallbackGoNegotiationRequest(struct IWpaCallback *self,
47 const struct HdiP2pGoNegotiationRequestParam *goNegotiationRequestParam, const char *ifName)
48 {
49 (void)self;
50 if (goNegotiationRequestParam == NULL || ifName == NULL) {
51 HDF_LOGE("%{public}s: input parameter invalid!", __func__);
52 return HDF_ERR_INVALID_PARAM;
53 }
54 HDF_LOGE("%{public}s: srcAddress=" MACSTR, __func__, MAC2STR(goNegotiationRequestParam->srcAddress));
55 return HDF_SUCCESS;
56 }
57
P2pCallbackGoNegotiationCompleted(struct IWpaCallback * self,const struct HdiP2pGoNegotiationCompletedParam * goNegotiationCompletedParam,const char * ifName)58 static int32_t P2pCallbackGoNegotiationCompleted(struct IWpaCallback *self,
59 const struct HdiP2pGoNegotiationCompletedParam *goNegotiationCompletedParam, const char *ifName)
60 {
61 (void)self;
62 if (goNegotiationCompletedParam == NULL || ifName == NULL) {
63 HDF_LOGE("%{public}s: input parameter invalid!", __func__);
64 return HDF_ERR_INVALID_PARAM;
65 }
66 HDF_LOGE("%{public}s: status=%{public}d", __func__, goNegotiationCompletedParam->status);
67 return HDF_SUCCESS;
68 }
69
P2pCallbackInvitationReceived(struct IWpaCallback * self,const struct HdiP2pInvitationReceivedParam * invitationReceivedParam,const char * ifName)70 static int32_t P2pCallbackInvitationReceived(struct IWpaCallback *self,
71 const struct HdiP2pInvitationReceivedParam *invitationReceivedParam, const char *ifName)
72 {
73 (void)self;
74 if (invitationReceivedParam == NULL || ifName == NULL) {
75 HDF_LOGE("%{public}s: input parameter invalid!", __func__);
76 return HDF_ERR_INVALID_PARAM;
77 }
78 HDF_LOGE("%{public}s: srcAddress=" MACSTR, __func__, MAC2STR(invitationReceivedParam->srcAddress));
79 return HDF_SUCCESS;
80 }
81
P2pCallbackInvitationResult(struct IWpaCallback * self,const struct HdiP2pInvitationResultParam * invitationResultParam,const char * ifName)82 static int32_t P2pCallbackInvitationResult(struct IWpaCallback *self,
83 const struct HdiP2pInvitationResultParam *invitationResultParam, const char *ifName)
84 {
85 (void)self;
86 if (invitationResultParam == NULL || ifName == NULL) {
87 HDF_LOGE("%{public}s: input parameter invalid!", __func__);
88 return HDF_ERR_INVALID_PARAM;
89 }
90 HDF_LOGE("%{public}s: bssid=" MACSTR, __func__, MAC2STR(invitationResultParam->bssid));
91 return HDF_SUCCESS;
92 }
93
P2pCallbackGroupFormationSuccess(struct IWpaCallback * self,const char * ifName)94 static int32_t P2pCallbackGroupFormationSuccess(struct IWpaCallback *self, const char *ifName)
95 {
96 (void)self;
97 if (ifName == NULL) {
98 HDF_LOGE("%{public}s: input parameter invalid!", __func__);
99 return HDF_ERR_INVALID_PARAM;
100 }
101 HDF_LOGE("%{public}s: GroupFormationSuccess", __func__);
102 return HDF_SUCCESS;
103 }
104
P2pCallbackGroupFormationFailure(struct IWpaCallback * self,const char * reason,const char * ifName)105 static int32_t P2pCallbackGroupFormationFailure(struct IWpaCallback *self,
106 const char *reason, const char *ifName)
107 {
108 (void)self;
109 if (reason == NULL || ifName == NULL) {
110 HDF_LOGE("%{public}s: input parameter invalid!", __func__);
111 return HDF_ERR_INVALID_PARAM;
112 }
113
114 HDF_LOGE("%{public}s: reason=%{public}s", __func__, reason);
115 return HDF_SUCCESS;
116 }
117
P2pCallbackGroupStarted(struct IWpaCallback * self,const struct HdiP2pGroupStartedParam * groupStartedParam,const char * ifName)118 static int32_t P2pCallbackGroupStarted(struct IWpaCallback *self,
119 const struct HdiP2pGroupStartedParam *groupStartedParam, const char *ifName)
120 {
121 (void)self;
122 if (groupStartedParam == NULL || ifName == NULL) {
123 HDF_LOGE("%{public}s: input parameter invalid!", __func__);
124 return HDF_ERR_INVALID_PARAM;
125 }
126 HDF_LOGE("%{public}s: goDeviceAddress=" MACSTR, __func__, MAC2STR(groupStartedParam->goDeviceAddress));
127 return HDF_SUCCESS;
128 }
129
P2pCallbackGroupRemoved(struct IWpaCallback * self,const struct HdiP2pGroupRemovedParam * groupRemovedParam,const char * ifName)130 static int32_t P2pCallbackGroupRemoved(struct IWpaCallback *self,
131 const struct HdiP2pGroupRemovedParam *groupRemovedParam, const char *ifName)
132 {
133 (void)self;
134 if (groupRemovedParam == NULL || ifName == NULL) {
135 HDF_LOGE("%{public}s: input parameter invalid!", __func__);
136 return HDF_ERR_INVALID_PARAM;
137 }
138 HDF_LOGE("%{public}s: isGo=%{public}d groupIfName=%{public}s", __func__, groupRemovedParam->isGo,
139 groupRemovedParam->groupIfName);
140 return HDF_SUCCESS;
141 }
142
P2pCallbackProvisionDiscoveryCompleted(struct IWpaCallback * self,const struct HdiP2pProvisionDiscoveryCompletedParam * param,const char * ifName)143 static int32_t P2pCallbackProvisionDiscoveryCompleted(struct IWpaCallback *self,
144 const struct HdiP2pProvisionDiscoveryCompletedParam *param, const char *ifName)
145 {
146 (void)self;
147 if (param == NULL || ifName == NULL) {
148 HDF_LOGE("%{public}s: input parameter invalid!", __func__);
149 return HDF_ERR_INVALID_PARAM;
150 }
151 HDF_LOGE("%{public}s: p2pDeviceAddress=" MACSTR, __func__, MAC2STR(param->p2pDeviceAddress));
152 return HDF_SUCCESS;
153 }
154
P2pCallbackFindStopped(struct IWpaCallback * self,const char * ifName)155 static int32_t P2pCallbackFindStopped(struct IWpaCallback *self, const char *ifName)
156 {
157 (void)self;
158 if (ifName == NULL) {
159 HDF_LOGE("%{public}s: input parameter invalid!", __func__);
160 return HDF_ERR_INVALID_PARAM;
161 }
162 HDF_LOGE("%{public}s: FindStopped", __func__);
163 return HDF_SUCCESS;
164 }
165
P2pCallbackServDiscReq(struct IWpaCallback * self,const struct HdiP2pServDiscReqInfoParam * servDiscReqInfoParam,const char * ifName)166 static int32_t P2pCallbackServDiscReq(struct IWpaCallback *self,
167 const struct HdiP2pServDiscReqInfoParam *servDiscReqInfoParam, const char *ifName)
168 {
169 (void)self;
170 if (servDiscReqInfoParam == NULL || ifName == NULL) {
171 HDF_LOGE("%{public}s: input parameter invalid!", __func__);
172 return HDF_ERR_INVALID_PARAM;
173 }
174 HDF_LOGE("%{public}s: mac=" MACSTR, __func__, MAC2STR(servDiscReqInfoParam->mac));
175 return HDF_SUCCESS;
176 }
177
P2pCallbackServDiscResp(struct IWpaCallback * self,const struct HdiP2pServDiscRespParam * param,const char * ifName)178 static int32_t P2pCallbackServDiscResp(struct IWpaCallback *self,
179 const struct HdiP2pServDiscRespParam *param, const char *ifName)
180 {
181 (void)self;
182 if (param == NULL || ifName == NULL) {
183 HDF_LOGE("%{public}s: input parameter invalid!", __func__);
184 return HDF_ERR_INVALID_PARAM;
185 }
186 HDF_LOGE("%{public}s: srcAddress=" MACSTR, __func__, MAC2STR(param->srcAddress));
187 return HDF_SUCCESS;
188 }
189
P2pCallbackStaConnectState(struct IWpaCallback * self,const struct HdiP2pStaConnectStateParam * param,const char * ifName)190 static int32_t P2pCallbackStaConnectState(struct IWpaCallback *self,
191 const struct HdiP2pStaConnectStateParam *param, const char *ifName)
192 {
193 (void)self;
194 if (param == NULL || ifName == NULL) {
195 HDF_LOGE("%{public}s: input parameter invalid!", __func__);
196 return HDF_ERR_INVALID_PARAM;
197 }
198 HDF_LOGE("%{public}s: srcAddress=" MACSTR "p2pDeviceAddress=" MACSTR, __func__, MAC2STR(param->srcAddress),
199 MAC2STR(param->p2pDeviceAddress));
200 return HDF_SUCCESS;
201 }
202
P2pCallbackIfaceCreated(struct IWpaCallback * self,const struct HdiP2pIfaceCreatedParam * param,const char * ifName)203 static int32_t P2pCallbackIfaceCreated(struct IWpaCallback *self,
204 const struct HdiP2pIfaceCreatedParam *param, const char *ifName)
205 {
206 (void)self;
207 if (param == NULL || ifName == NULL) {
208 HDF_LOGE("%{public}s: input parameter invalid!", __func__);
209 return HDF_ERR_INVALID_PARAM;
210 }
211 HDF_LOGE("%{public}s: isGo=%{public}d", __func__, param->isGo);
212 return HDF_SUCCESS;
213 }
214
P2pCallbackServiceGet(void)215 struct IWpaCallback *P2pCallbackServiceGet(void)
216 {
217 struct P2pCallbackService *service =
218 (struct P2pCallbackService *)OsalMemCalloc(sizeof(struct P2pCallbackService));
219 if (service == NULL) {
220 HDF_LOGE("%{public}s: malloc P2pCallbackService obj failed!", __func__);
221 return NULL;
222 }
223
224 service->interface.OnEventDeviceFound = P2pCallbackDeviceFound;
225 service->interface.OnEventDeviceLost = P2pCallbackDeviceLost;
226 service->interface.OnEventGoNegotiationRequest = P2pCallbackGoNegotiationRequest;
227 service->interface.OnEventGoNegotiationCompleted = P2pCallbackGoNegotiationCompleted;
228 service->interface.OnEventInvitationReceived = P2pCallbackInvitationReceived;
229 service->interface.OnEventInvitationResult = P2pCallbackInvitationResult;
230 service->interface.OnEventGroupFormationSuccess = P2pCallbackGroupFormationSuccess;
231 service->interface.OnEventGroupFormationFailure = P2pCallbackGroupFormationFailure;
232 service->interface.OnEventGroupStarted = P2pCallbackGroupStarted;
233 service->interface.OnEventGroupRemoved = P2pCallbackGroupRemoved;
234 service->interface.OnEventProvisionDiscoveryCompleted = P2pCallbackProvisionDiscoveryCompleted;
235 service->interface.OnEventFindStopped = P2pCallbackFindStopped;
236 service->interface.OnEventServDiscReq = P2pCallbackServDiscReq;
237 service->interface.OnEventServDiscResp = P2pCallbackServDiscResp;
238 service->interface.OnEventStaConnectState = P2pCallbackStaConnectState;
239 service->interface.OnEventIfaceCreated = P2pCallbackIfaceCreated;
240 return &service->interface;
241 }
242
P2pCallbackServiceRelease(struct IWpaCallback * instance)243 void P2pCallbackServiceRelease(struct IWpaCallback *instance)
244 {
245 struct P2pCallbackService *service = (struct P2pCallbackService *)instance;
246 if (service == NULL) {
247 return;
248 }
249
250 OsalMemFree(service);
251 }
252