1 /*
2  * Copyright (C) 2019 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 package com.android.server.wifi;
17 
18 import android.annotation.NonNull;
19 import android.hardware.wifi.supplicant.V1_0.ISupplicantStaIfaceCallback;
20 import android.net.wifi.WifiManager;
21 
22 import java.util.ArrayList;
23 
24 abstract class SupplicantStaIfaceCallbackV1_1Impl extends
25         android.hardware.wifi.supplicant.V1_1.ISupplicantStaIfaceCallback.Stub {
26     private static final String TAG = SupplicantStaIfaceCallbackV1_1Impl.class.getSimpleName();
27     private final SupplicantStaIfaceHal mStaIfaceHal;
28     private final String mIfaceName;
29     private final Object mLock;
30     private final WifiMonitor mWifiMonitor;
31     private final SupplicantStaIfaceHal.SupplicantStaIfaceHalCallback mCallbackV10;
32 
SupplicantStaIfaceCallbackV1_1Impl(@onNull SupplicantStaIfaceHal staIfaceHal, @NonNull String ifaceName, @NonNull Object lock, @NonNull WifiMonitor wifiMonitor)33     SupplicantStaIfaceCallbackV1_1Impl(@NonNull SupplicantStaIfaceHal staIfaceHal,
34             @NonNull String ifaceName,
35             @NonNull Object lock,
36             @NonNull WifiMonitor wifiMonitor) {
37         mStaIfaceHal = staIfaceHal;
38         mIfaceName = ifaceName;
39         mLock = lock;
40         mWifiMonitor = wifiMonitor;
41         // Create an older callback for function delegation,
42         // and it would cascadingly create older one.
43         mCallbackV10 = mStaIfaceHal.new SupplicantStaIfaceHalCallback(mIfaceName);
44     }
45 
46     @Override
onNetworkAdded(int id)47     public void onNetworkAdded(int id) {
48         mCallbackV10.onNetworkAdded(id);
49     }
50 
51     @Override
onNetworkRemoved(int id)52     public void onNetworkRemoved(int id) {
53         mCallbackV10.onNetworkRemoved(id);
54     }
55 
56     /**
57      * Added to plumb the new {@code filsHlpSent} param from the V1.3 callback version.
58      */
onStateChanged(int newState, byte[ ] bssid, int id, ArrayList<Byte> ssid, boolean filsHlpSent)59     public void onStateChanged(int newState, byte[/* 6 */] bssid, int id, ArrayList<Byte> ssid,
60             boolean filsHlpSent) {
61         mCallbackV10.onStateChanged(newState, bssid, id, ssid, filsHlpSent);
62     }
63 
64     @Override
onStateChanged(int newState, byte[ ] bssid, int id, ArrayList<Byte> ssid)65     public void onStateChanged(int newState, byte[/* 6 */] bssid, int id,
66                                ArrayList<Byte> ssid) {
67         onStateChanged(newState, bssid, id, ssid, false);
68     }
69 
70     @Override
onAnqpQueryDone(byte[ ] bssid, ISupplicantStaIfaceCallback.AnqpData data, ISupplicantStaIfaceCallback.Hs20AnqpData hs20Data)71     public void onAnqpQueryDone(byte[/* 6 */] bssid,
72                                 ISupplicantStaIfaceCallback.AnqpData data,
73                                 ISupplicantStaIfaceCallback.Hs20AnqpData hs20Data) {
74         mCallbackV10.onAnqpQueryDone(bssid, data, hs20Data);
75     }
76 
77     @Override
onHs20IconQueryDone(byte[ ] bssid, String fileName, ArrayList<Byte> data)78     public void onHs20IconQueryDone(byte[/* 6 */] bssid, String fileName,
79                                     ArrayList<Byte> data) {
80         mCallbackV10.onHs20IconQueryDone(bssid, fileName, data);
81     }
82 
83     @Override
onHs20SubscriptionRemediation(byte[ ] bssid, byte osuMethod, String url)84     public void onHs20SubscriptionRemediation(byte[/* 6 */] bssid,
85                                               byte osuMethod, String url) {
86         mCallbackV10.onHs20SubscriptionRemediation(bssid, osuMethod, url);
87     }
88 
89     @Override
onHs20DeauthImminentNotice(byte[ ] bssid, int reasonCode, int reAuthDelayInSec, String url)90     public void onHs20DeauthImminentNotice(byte[/* 6 */] bssid, int reasonCode,
91                                            int reAuthDelayInSec, String url) {
92         mCallbackV10.onHs20DeauthImminentNotice(bssid, reasonCode, reAuthDelayInSec, url);
93     }
94 
95     @Override
onDisconnected(byte[ ] bssid, boolean locallyGenerated, int reasonCode)96     public void onDisconnected(byte[/* 6 */] bssid, boolean locallyGenerated,
97                                int reasonCode) {
98         mCallbackV10.onDisconnected(bssid, locallyGenerated, reasonCode);
99     }
100 
101     @Override
onAssociationRejected(byte[ ] bssid, int statusCode, boolean timedOut)102     public void onAssociationRejected(byte[/* 6 */] bssid, int statusCode,
103                                       boolean timedOut) {
104         mCallbackV10.onAssociationRejected(bssid, statusCode, timedOut);
105     }
106 
107     @Override
onAuthenticationTimeout(byte[ ] bssid)108     public void onAuthenticationTimeout(byte[/* 6 */] bssid) {
109         mCallbackV10.onAuthenticationTimeout(bssid);
110     }
111 
112     @Override
onBssidChanged(byte reason, byte[ ] bssid)113     public void onBssidChanged(byte reason, byte[/* 6 */] bssid) {
114         mCallbackV10.onBssidChanged(reason, bssid);
115     }
116 
117     @Override
onEapFailure()118     public void onEapFailure() {
119         mCallbackV10.onEapFailure();
120     }
121 
122     @Override
onEapFailure_1_1(int code)123     public void onEapFailure_1_1(int code) {
124         mCallbackV10.onEapFailure(code);
125     }
126 
127     @Override
onWpsEventSuccess()128     public void onWpsEventSuccess() {
129         mCallbackV10.onWpsEventSuccess();
130     }
131 
132     @Override
onWpsEventFail(byte[ ] bssid, short configError, short errorInd)133     public void onWpsEventFail(byte[/* 6 */] bssid, short configError, short errorInd) {
134         mCallbackV10.onWpsEventFail(bssid, configError, errorInd);
135     }
136 
137     @Override
onWpsEventPbcOverlap()138     public void onWpsEventPbcOverlap() {
139         mCallbackV10.onWpsEventPbcOverlap();
140     }
141 
142     @Override
onExtRadioWorkStart(int id)143     public void onExtRadioWorkStart(int id) {
144         mCallbackV10.onExtRadioWorkStart(id);
145     }
146 
147     @Override
onExtRadioWorkTimeout(int id)148     public void onExtRadioWorkTimeout(int id) {
149         mCallbackV10.onExtRadioWorkTimeout(id);
150     }
151 }
152