1094332d3Sopenharmony_ci/*
2094332d3Sopenharmony_ci * Copyright (c) 2022-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 "wpa_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 WpaCallbackDisconnected(struct IWpaCallback *self,
23094332d3Sopenharmony_ci    const struct HdiWpaDisconnectParam *disconnectParam, const char *ifName)
24094332d3Sopenharmony_ci{
25094332d3Sopenharmony_ci    (void)self;
26094332d3Sopenharmony_ci    if (disconnectParam == 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("WpaCallbackDisconnected: bssid=" MACSTR, MAC2STR(disconnectParam->bssid));
31094332d3Sopenharmony_ci    HDF_LOGE("WpaCallbackDisconnected: reasonCode=%{public}d, locallyGenerated=%{public}d",
32094332d3Sopenharmony_ci        disconnectParam->reasonCode, disconnectParam->reasonCode);
33094332d3Sopenharmony_ci    return HDF_SUCCESS;
34094332d3Sopenharmony_ci}
35094332d3Sopenharmony_ci
36094332d3Sopenharmony_cistatic int32_t WpaCallbackOnConnected(struct IWpaCallback *self,
37094332d3Sopenharmony_ci    const struct HdiWpaConnectParam *connectParam, const char *ifName)
38094332d3Sopenharmony_ci{
39094332d3Sopenharmony_ci    (void)self;
40094332d3Sopenharmony_ci    if (connectParam == NULL || ifName == NULL) {
41094332d3Sopenharmony_ci        HDF_LOGE("%{public}s: input parameter invalid!", __func__);
42094332d3Sopenharmony_ci        return HDF_ERR_INVALID_PARAM;
43094332d3Sopenharmony_ci    }
44094332d3Sopenharmony_ci    HDF_LOGE("WpaCallbackOnConnected: bssid=" MACSTR, MAC2STR(connectParam->bssid));
45094332d3Sopenharmony_ci    HDF_LOGE("WpaCallbackOnConnected: networkId=%{public}d", connectParam->networkId);
46094332d3Sopenharmony_ci    return HDF_SUCCESS;
47094332d3Sopenharmony_ci}
48094332d3Sopenharmony_ci
49094332d3Sopenharmony_cistatic int32_t WpaCallbackBssidChanged(struct IWpaCallback *self,
50094332d3Sopenharmony_ci    const struct HdiWpaBssidChangedParam *bssidChangedParam, const char *ifName)
51094332d3Sopenharmony_ci{
52094332d3Sopenharmony_ci    (void)self;
53094332d3Sopenharmony_ci    if (bssidChangedParam == NULL || ifName == NULL) {
54094332d3Sopenharmony_ci        HDF_LOGE("%{public}s: input parameter invalid!", __func__);
55094332d3Sopenharmony_ci        return HDF_ERR_INVALID_PARAM;
56094332d3Sopenharmony_ci    }
57094332d3Sopenharmony_ci    HDF_LOGE("WpaCallbackBssidChanged: bssid=" MACSTR, MAC2STR(bssidChangedParam->bssid));
58094332d3Sopenharmony_ci    HDF_LOGE("WpaCallbackBssidChanged: reason=%{public}s", bssidChangedParam->reason);
59094332d3Sopenharmony_ci    return HDF_SUCCESS;
60094332d3Sopenharmony_ci}
61094332d3Sopenharmony_ci
62094332d3Sopenharmony_cistatic int32_t WpaCallbackStateChanged(struct IWpaCallback *self,
63094332d3Sopenharmony_ci    const struct HdiWpaStateChangedParam *statechangedParam, const char *ifName)
64094332d3Sopenharmony_ci{
65094332d3Sopenharmony_ci    (void)self;
66094332d3Sopenharmony_ci    if (statechangedParam == NULL || ifName == NULL) {
67094332d3Sopenharmony_ci        HDF_LOGE("%{public}s: input parameter invalid!", __func__);
68094332d3Sopenharmony_ci        return HDF_ERR_INVALID_PARAM;
69094332d3Sopenharmony_ci    }
70094332d3Sopenharmony_ci    HDF_LOGE("WpaCallbackStateChanged: bssid=" MACSTR, MAC2STR(statechangedParam->bssid));
71094332d3Sopenharmony_ci    HDF_LOGE("WpaCallbackStateChanged: status=%{public}d,networkId=%{public}d,ssid=%{public}s",
72094332d3Sopenharmony_ci        statechangedParam->status, statechangedParam->networkId, statechangedParam->ssid);
73094332d3Sopenharmony_ci    return HDF_SUCCESS;
74094332d3Sopenharmony_ci}
75094332d3Sopenharmony_ci
76094332d3Sopenharmony_cistatic int32_t WpaCallbackTempDisabled(struct IWpaCallback *self,
77094332d3Sopenharmony_ci    const struct HdiWpaTempDisabledParam *tempDisabledParam, const char *ifName)
78094332d3Sopenharmony_ci{
79094332d3Sopenharmony_ci    (void)self;
80094332d3Sopenharmony_ci    if (tempDisabledParam == NULL || ifName == NULL) {
81094332d3Sopenharmony_ci        HDF_LOGE("%{public}s: input parameter invalid!", __func__);
82094332d3Sopenharmony_ci        return HDF_ERR_INVALID_PARAM;
83094332d3Sopenharmony_ci    }
84094332d3Sopenharmony_ci
85094332d3Sopenharmony_ci    HDF_LOGE("WpaCallbackTempDisabled: networkid=%{public}d,ssid=%{public}s,authFailures=%{public}d, \
86094332d3Sopenharmony_ci        duration=%{public}d, reason=%{public}s", tempDisabledParam->networkId, tempDisabledParam->ssid,
87094332d3Sopenharmony_ci        tempDisabledParam->authFailures, tempDisabledParam->duration, tempDisabledParam->reason);
88094332d3Sopenharmony_ci    return HDF_SUCCESS;
89094332d3Sopenharmony_ci}
90094332d3Sopenharmony_ci
91094332d3Sopenharmony_cistatic int32_t WpaCallbackAssociateReject(struct IWpaCallback *self,
92094332d3Sopenharmony_ci    const struct HdiWpaAssociateRejectParam *associateRejectParam, const char *ifName)
93094332d3Sopenharmony_ci{
94094332d3Sopenharmony_ci    (void)self;
95094332d3Sopenharmony_ci    if (associateRejectParam == NULL || ifName == NULL) {
96094332d3Sopenharmony_ci        HDF_LOGE("%{public}s: input parameter invalid!", __func__);
97094332d3Sopenharmony_ci        return HDF_ERR_INVALID_PARAM;
98094332d3Sopenharmony_ci    }
99094332d3Sopenharmony_ci    HDF_LOGE("WpaCallbackAssociateReject: bssid=" MACSTR, MAC2STR(associateRejectParam->bssid));
100094332d3Sopenharmony_ci    HDF_LOGE("WpaCallbackAssociateReject: statusCode=%{public}d,timeOut=%{public}d",
101094332d3Sopenharmony_ci        associateRejectParam->statusCode, associateRejectParam->timeOut);
102094332d3Sopenharmony_ci    return HDF_SUCCESS;
103094332d3Sopenharmony_ci}
104094332d3Sopenharmony_ci
105094332d3Sopenharmony_cistatic int32_t WpaCallbackWpsOverlap(struct IWpaCallback *self, const char *ifName)
106094332d3Sopenharmony_ci{
107094332d3Sopenharmony_ci    (void)self;
108094332d3Sopenharmony_ci    if (ifName == NULL) {
109094332d3Sopenharmony_ci        HDF_LOGE("%{public}s: input parameter invalid!", __func__);
110094332d3Sopenharmony_ci        return HDF_ERR_INVALID_PARAM;
111094332d3Sopenharmony_ci    }
112094332d3Sopenharmony_ci
113094332d3Sopenharmony_ci    HDF_LOGE("WpaCallbackWpsOverlap: input successfully");
114094332d3Sopenharmony_ci    return HDF_SUCCESS;
115094332d3Sopenharmony_ci}
116094332d3Sopenharmony_ci
117094332d3Sopenharmony_cistatic int32_t WpaCallbackWpsTimeout(struct IWpaCallback *self, const char *ifName)
118094332d3Sopenharmony_ci{
119094332d3Sopenharmony_ci    (void)self;
120094332d3Sopenharmony_ci    if (ifName == NULL) {
121094332d3Sopenharmony_ci        HDF_LOGE("%{public}s: input parameter invalid!", __func__);
122094332d3Sopenharmony_ci        return HDF_ERR_INVALID_PARAM;
123094332d3Sopenharmony_ci    }
124094332d3Sopenharmony_ci
125094332d3Sopenharmony_ci    HDF_LOGE("WpaCallbackWpsTimeout: input successfully");
126094332d3Sopenharmony_ci    return HDF_SUCCESS;
127094332d3Sopenharmony_ci}
128094332d3Sopenharmony_ci
129094332d3Sopenharmony_cistatic int32_t WpaCallbackAuthTimeout(struct IWpaCallback *self, const char *ifName)
130094332d3Sopenharmony_ci{
131094332d3Sopenharmony_ci    (void)self;
132094332d3Sopenharmony_ci    if (ifName == NULL) {
133094332d3Sopenharmony_ci        HDF_LOGE("%{public}s: input parameter invalid!", __func__);
134094332d3Sopenharmony_ci        return HDF_ERR_INVALID_PARAM;
135094332d3Sopenharmony_ci    }
136094332d3Sopenharmony_ci
137094332d3Sopenharmony_ci    HDF_LOGE("WpaCallbackAuthTimeout: input successfully");
138094332d3Sopenharmony_ci    return HDF_SUCCESS;
139094332d3Sopenharmony_ci}
140094332d3Sopenharmony_ci
141094332d3Sopenharmony_cistatic int32_t WpaCallbackScanResult(struct IWpaCallback *self,
142094332d3Sopenharmony_ci    const struct HdiWpaRecvScanResultParam *recvScanResultParamconst, const char *ifName)
143094332d3Sopenharmony_ci{
144094332d3Sopenharmony_ci    (void)self;
145094332d3Sopenharmony_ci    if (ifName == NULL || recvScanResultParamconst ==NULL) {
146094332d3Sopenharmony_ci        HDF_LOGE("%{public}s: input parameter invalid!", __func__);
147094332d3Sopenharmony_ci        return HDF_ERR_INVALID_PARAM;
148094332d3Sopenharmony_ci    }
149094332d3Sopenharmony_ci
150094332d3Sopenharmony_ci    HDF_LOGE("WpaCallbackScanResult: scanId=%{public}d", recvScanResultParamconst->scanId);
151094332d3Sopenharmony_ci    return HDF_SUCCESS;
152094332d3Sopenharmony_ci}
153094332d3Sopenharmony_ci
154094332d3Sopenharmony_cistatic int32_t WpaCallbackAuthReject(struct IWpaCallback *self,
155094332d3Sopenharmony_ci    const struct HdiWpaAuthRejectParam *authRejectParam, const char *ifName)
156094332d3Sopenharmony_ci{
157094332d3Sopenharmony_ci    (void)self;
158094332d3Sopenharmony_ci    if (ifName == NULL || authRejectParam == NULL) {
159094332d3Sopenharmony_ci        HDF_LOGE("%{public}s: input parameter invalid!", __func__);
160094332d3Sopenharmony_ci        return HDF_ERR_INVALID_PARAM;
161094332d3Sopenharmony_ci    }
162094332d3Sopenharmony_ci    HDF_LOGI("WpaCallbackAuthReject: bssid=" MACSTR " statusCode=%{public}hd,authType=%{public}hd,authTransaction="
163094332d3Sopenharmony_ci              "%{public}hd", MAC2STR(authRejectParam->bssid), authRejectParam->statusCode, authRejectParam->authType,
164094332d3Sopenharmony_ci              authRejectParam->authTransaction);
165094332d3Sopenharmony_ci    return HDF_SUCCESS;
166094332d3Sopenharmony_ci}
167094332d3Sopenharmony_ci
168094332d3Sopenharmony_cistruct IWpaCallback *WpaCallbackServiceGet(void)
169094332d3Sopenharmony_ci{
170094332d3Sopenharmony_ci    struct WpaCallbackService *service =
171094332d3Sopenharmony_ci        (struct WpaCallbackService *)OsalMemCalloc(sizeof(struct WpaCallbackService));
172094332d3Sopenharmony_ci    if (service == NULL) {
173094332d3Sopenharmony_ci        HDF_LOGE("%{public}s: malloc WpaCallbackService obj failed!", __func__);
174094332d3Sopenharmony_ci        return NULL;
175094332d3Sopenharmony_ci    }
176094332d3Sopenharmony_ci
177094332d3Sopenharmony_ci    service->interface.OnEventDisconnected = WpaCallbackDisconnected;
178094332d3Sopenharmony_ci    service->interface.OnEventConnected = WpaCallbackOnConnected;
179094332d3Sopenharmony_ci    service->interface.OnEventBssidChanged = WpaCallbackBssidChanged;
180094332d3Sopenharmony_ci    service->interface.OnEventStateChanged = WpaCallbackStateChanged;
181094332d3Sopenharmony_ci    service->interface.OnEventTempDisabled = WpaCallbackTempDisabled;
182094332d3Sopenharmony_ci    service->interface.OnEventAssociateReject = WpaCallbackAssociateReject;
183094332d3Sopenharmony_ci    service->interface.OnEventWpsOverlap = WpaCallbackWpsOverlap;
184094332d3Sopenharmony_ci    service->interface.OnEventWpsTimeout = WpaCallbackWpsTimeout;
185094332d3Sopenharmony_ci    service->interface.OnEventAuthTimeout = WpaCallbackAuthTimeout;
186094332d3Sopenharmony_ci    service->interface.OnEventScanResult = WpaCallbackScanResult;
187094332d3Sopenharmony_ci    service->interface.OnEventAuthReject = WpaCallbackAuthReject;
188094332d3Sopenharmony_ci    return &service->interface;
189094332d3Sopenharmony_ci}
190094332d3Sopenharmony_ci
191094332d3Sopenharmony_civoid WpaCallbackServiceRelease(struct IWpaCallback *instance)
192094332d3Sopenharmony_ci{
193094332d3Sopenharmony_ci    struct WpaCallbackService *service = (struct WpaCallbackService *)instance;
194094332d3Sopenharmony_ci    if (service == NULL) {
195094332d3Sopenharmony_ci        return;
196094332d3Sopenharmony_ci    }
197094332d3Sopenharmony_ci
198094332d3Sopenharmony_ci    OsalMemFree(service);
199094332d3Sopenharmony_ci}
200