blob: fa2ab30ef479f2a1e3d099b285344e43916588d5 [file] [log] [blame]
/*
* Copyright (C) 2018 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 android.net.wifi;
import android.annotation.IntDef;
import android.annotation.SystemApi;
import android.os.Handler;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
/**
* DPP Status Callback. Use this callback to get status updates (success, failure, progress)
* from the DPP operation started with {@link WifiManager#startDppAsConfiguratorInitiator(String,
* int, int, Handler, DppStatusCallback)} or {@link WifiManager#startDppAsEnrolleeInitiator(String,
* Handler, DppStatusCallback)}
* @hide
*/
@SystemApi
public abstract class DppStatusCallback {
/**
* DPP Success event: Configuration sent (Configurator mode).
*/
public static final int DPP_EVENT_SUCCESS_CONFIGURATION_SENT = 0;
/** @hide */
@IntDef(prefix = { "DPP_EVENT_SUCCESS_" }, value = {
DPP_EVENT_SUCCESS_CONFIGURATION_SENT,
})
@Retention(RetentionPolicy.SOURCE)
public @interface DppSuccessStatusCode {}
/**
* DPP Progress event: Initial authentication with peer succeeded.
*/
public static final int DPP_EVENT_PROGRESS_AUTHENTICATION_SUCCESS = 0;
/**
* DPP Progress event: Peer requires more time to process bootstrapping.
*/
public static final int DPP_EVENT_PROGRESS_RESPONSE_PENDING = 1;
/** @hide */
@IntDef(prefix = { "DPP_EVENT_PROGRESS_" }, value = {
DPP_EVENT_PROGRESS_AUTHENTICATION_SUCCESS,
DPP_EVENT_PROGRESS_RESPONSE_PENDING,
})
@Retention(RetentionPolicy.SOURCE)
public @interface DppProgressStatusCode {}
/**
* DPP Failure event: Scanned QR code is either not a DPP URI, or the DPP URI has errors.
*/
public static final int DPP_EVENT_FAILURE_INVALID_URI = -1;
/**
* DPP Failure event: Bootstrapping/Authentication initialization process failure.
*/
public static final int DPP_EVENT_FAILURE_AUTHENTICATION = -2;
/**
* DPP Failure event: Both devices are implementing the same role and are incompatible.
*/
public static final int DPP_EVENT_FAILURE_NOT_COMPATIBLE = -3;
/**
* DPP Failure event: Configuration process has failed due to malformed message.
*/
public static final int DPP_EVENT_FAILURE_CONFIGURATION = -4;
/**
* DPP Failure event: DPP request while in another DPP exchange.
*/
public static final int DPP_EVENT_FAILURE_BUSY = -5;
/**
* DPP Failure event: No response from the peer.
*/
public static final int DPP_EVENT_FAILURE_TIMEOUT = -6;
/**
* DPP Failure event: General protocol failure.
*/
public static final int DPP_EVENT_FAILURE = -7;
/**
* DPP Failure event: Feature or option is not supported.
*/
public static final int DPP_EVENT_FAILURE_NOT_SUPPORTED = -8;
/**
* DPP Failure event: Invalid network provided to DPP configurator.
* Network must either be WPA3-Personal (SAE) or WPA2-Personal (PSK).
*/
public static final int DPP_EVENT_FAILURE_INVALID_NETWORK = -9;
/** @hide */
@IntDef(prefix = {"DPP_EVENT_FAILURE_"}, value = {
DPP_EVENT_FAILURE_INVALID_URI,
DPP_EVENT_FAILURE_AUTHENTICATION,
DPP_EVENT_FAILURE_NOT_COMPATIBLE,
DPP_EVENT_FAILURE_CONFIGURATION,
DPP_EVENT_FAILURE_BUSY,
DPP_EVENT_FAILURE_TIMEOUT,
DPP_EVENT_FAILURE,
DPP_EVENT_FAILURE_NOT_SUPPORTED,
DPP_EVENT_FAILURE_INVALID_NETWORK,
})
@Retention(RetentionPolicy.SOURCE)
public @interface DppFailureStatusCode {
}
/**
* Called when local DPP Enrollee successfully receives a new Wi-Fi configuration from the
* peer DPP configurator. This callback marks the successful end of the DPP current DPP
* session, and no further callbacks will be called. This callback is the successful outcome
* of a DPP flow starting with {@link WifiManager#startDppAsEnrolleeInitiator(String, Handler,
* DppStatusCallback)}.
*
* @param newNetworkId New Wi-Fi configuration with a network ID received from the configurator
*/
public abstract void onEnrolleeSuccess(int newNetworkId);
/**
* Called when a DPP success event takes place, except for when configuration is received from
* an external Configurator. The callback onSuccessConfigReceived will be used in this case.
* This callback marks the successful end of the current DPP session, and no further
* callbacks will be called. This callback is the successful outcome of a DPP flow starting with
* {@link WifiManager#startDppAsConfiguratorInitiator(String, int, int, Handler,
* DppStatusCallback)}.
*
* @param code DPP success status code.
*/
public abstract void onConfiguratorSuccess(@DppSuccessStatusCode int code);
/**
* Called when a DPP Failure event takes place. This callback marks the unsuccessful end of the
* current DPP session, and no further callbacks will be called.
*
* @param code DPP failure status code.
*/
public abstract void onFailure(@DppFailureStatusCode int code);
/**
* Called when DPP events that indicate progress take place. Can be used by UI elements
* to show progress.
*
* @param code DPP progress status code.
*/
public abstract void onProgress(@DppProgressStatusCode int code);
}