blob: a93cff261008da38a7e00595c89f322a41834c9f [file] [log] [blame]
/*
* Copyright (C) 2021 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.android.server.wifi;
import android.annotation.NonNull;
import android.net.MacAddress;
import android.net.wifi.SoftApConfiguration;
import com.android.server.wifi.WifiNative.HostapdDeathEventHandler;
import com.android.server.wifi.WifiNative.SoftApHalCallback;
import java.io.PrintWriter;
/** Abstraction of HAL interface */
interface IHostapdHal {
/**
* Begin initializing the IHostapdHal object. Specific initialization logic differs
* between the HIDL and AIDL implementations.
*
* @return true if the initialization routine was successful
*/
boolean initialize();
/**
* Start hostapd daemon.
*/
boolean startDaemon();
/**
* Enable/Disable verbose logging.
*
* @param verboseEnabled true to enable, false to disable.
* @param halVerboseEnabled true to enable hal verbose logging, false to disable.
*/
void enableVerboseLogging(boolean verboseEnabled, boolean halVerboseEnabled);
/**
* Add and start a new access point.
*
* @param ifaceName Name of the interface.
* @param config Configuration to use for the AP.
* @param isMetered Indicates the network is metered or not. Ignored in AIDL imp.
* @param onFailureListener A runnable to be triggered on failure.
* @return true on success, false otherwise.
*/
boolean addAccessPoint(@NonNull String ifaceName,
@NonNull SoftApConfiguration config, boolean isMetered,
Runnable onFailureListener);
/**
* Remove a previously started access point.
*
* @param ifaceName Name of the interface.
* @return true on success, false otherwise.
*/
boolean removeAccessPoint(@NonNull String ifaceName);
/**
* Remove a previously connected client.
*
* @param ifaceName Name of the interface.
* @param client Mac Address of the client.
* @param reasonCode One of disconnect reason code which defined in {@link WifiManager}.
* @return true on success, false otherwise.
*/
boolean forceClientDisconnect(@NonNull String ifaceName,
@NonNull MacAddress client, int reasonCode);
/**
* Register the provided callback handler for SoftAp events.
* <p>
* Note that only one callback can be registered at a time - any registration overrides previous
* registrations.
*
* @param ifaceName Name of the interface.
* @param callback Callback listener for AP events.
* @return true on success, false on failure.
*/
boolean registerApCallback(@NonNull String ifaceName,
@NonNull SoftApHalCallback callback);
/**
* Returns whether or not the hostapd supports getting the AP info from the callback.
*/
boolean isApInfoCallbackSupported();
/**
* Registers a death notification for hostapd.
* @return Returns true on success.
*/
boolean registerDeathHandler(@NonNull HostapdDeathEventHandler handler);
/**
* Deregisters a death notification for hostapd.
* @return Returns true on success.
*/
boolean deregisterDeathHandler();
/**
* Signals whether Initialization started successfully.
*/
boolean isInitializationStarted();
/**
* Signals whether Initialization completed successfully.
*/
boolean isInitializationComplete();
/**
* Terminate the hostapd daemon & wait for it's death.
*/
void terminate();
/**
* Dump information about the specific implementation.
*/
void dump(PrintWriter pw);
}