| /* |
| * 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; |
| |
| /** |
| * Easy Connect (DPP) Status Callback. Use this callback to get status updates (success, failure, |
| * progress) from the Easy Connect operation started with |
| * {@link WifiManager#startEasyConnectAsConfiguratorInitiator(String, |
| * int, int, Handler, EasyConnectStatusCallback)} or |
| * {@link WifiManager#startEasyConnectAsEnrolleeInitiator(String, |
| * Handler, EasyConnectStatusCallback)} |
| * |
| * @hide |
| */ |
| @SystemApi |
| public abstract class EasyConnectStatusCallback { |
| /** |
| * Easy Connect Success event: Configuration sent (Configurator mode). |
| */ |
| public static final int EASY_CONNECT_EVENT_SUCCESS_CONFIGURATION_SENT = 0; |
| |
| /** @hide */ |
| @IntDef(prefix = {"EASY_CONNECT_EVENT_SUCCESS_"}, value = { |
| EASY_CONNECT_EVENT_SUCCESS_CONFIGURATION_SENT, |
| }) |
| @Retention(RetentionPolicy.SOURCE) |
| public @interface EasyConnectSuccessStatusCode { |
| } |
| |
| /** |
| * Easy Connect Progress event: Initial authentication with peer succeeded. |
| */ |
| public static final int EASY_CONNECT_EVENT_PROGRESS_AUTHENTICATION_SUCCESS = 0; |
| |
| /** |
| * Easy Connect Progress event: Peer requires more time to process bootstrapping. |
| */ |
| public static final int EASY_CONNECT_EVENT_PROGRESS_RESPONSE_PENDING = 1; |
| |
| /** @hide */ |
| @IntDef(prefix = {"EASY_CONNECT_EVENT_PROGRESS_"}, value = { |
| EASY_CONNECT_EVENT_PROGRESS_AUTHENTICATION_SUCCESS, |
| EASY_CONNECT_EVENT_PROGRESS_RESPONSE_PENDING, |
| }) |
| @Retention(RetentionPolicy.SOURCE) |
| public @interface EasyConnectProgressStatusCode { |
| } |
| |
| /** |
| * Easy Connect Failure event: Scanned QR code is either not a Easy Connect URI, or the Easy |
| * Connect URI has errors. |
| */ |
| public static final int EASY_CONNECT_EVENT_FAILURE_INVALID_URI = -1; |
| |
| /** |
| * Easy Connect Failure event: Bootstrapping/Authentication initialization process failure. |
| */ |
| public static final int EASY_CONNECT_EVENT_FAILURE_AUTHENTICATION = -2; |
| |
| /** |
| * Easy Connect Failure event: Both devices are implementing the same role and are incompatible. |
| */ |
| public static final int EASY_CONNECT_EVENT_FAILURE_NOT_COMPATIBLE = -3; |
| |
| /** |
| * Easy Connect Failure event: Configuration process has failed due to malformed message. |
| */ |
| public static final int EASY_CONNECT_EVENT_FAILURE_CONFIGURATION = -4; |
| |
| /** |
| * Easy Connect Failure event: Easy Connect request while in another Easy Connect exchange. |
| */ |
| public static final int EASY_CONNECT_EVENT_FAILURE_BUSY = -5; |
| |
| /** |
| * Easy Connect Failure event: No response from the peer. |
| */ |
| public static final int EASY_CONNECT_EVENT_FAILURE_TIMEOUT = -6; |
| |
| /** |
| * Easy Connect Failure event: General protocol failure. |
| */ |
| public static final int EASY_CONNECT_EVENT_FAILURE_GENERIC = -7; |
| |
| /** |
| * Easy Connect Failure event: Feature or option is not supported. |
| */ |
| public static final int EASY_CONNECT_EVENT_FAILURE_NOT_SUPPORTED = -8; |
| |
| /** |
| * Easy Connect Failure event: Invalid network provided to Easy Connect configurator. |
| * Network must either be WPA3-Personal (SAE) or WPA2-Personal (PSK). |
| */ |
| public static final int EASY_CONNECT_EVENT_FAILURE_INVALID_NETWORK = -9; |
| |
| |
| /** @hide */ |
| @IntDef(prefix = {"EASY_CONNECT_EVENT_FAILURE_"}, value = { |
| EASY_CONNECT_EVENT_FAILURE_INVALID_URI, |
| EASY_CONNECT_EVENT_FAILURE_AUTHENTICATION, |
| EASY_CONNECT_EVENT_FAILURE_NOT_COMPATIBLE, |
| EASY_CONNECT_EVENT_FAILURE_CONFIGURATION, |
| EASY_CONNECT_EVENT_FAILURE_BUSY, |
| EASY_CONNECT_EVENT_FAILURE_TIMEOUT, |
| EASY_CONNECT_EVENT_FAILURE_GENERIC, |
| EASY_CONNECT_EVENT_FAILURE_NOT_SUPPORTED, |
| EASY_CONNECT_EVENT_FAILURE_INVALID_NETWORK, |
| }) |
| @Retention(RetentionPolicy.SOURCE) |
| public @interface EasyConnectFailureStatusCode { |
| } |
| |
| /** |
| * Called when local Easy Connect Enrollee successfully receives a new Wi-Fi configuration from |
| * the |
| * peer Easy Connect configurator. This callback marks the successful end of the Easy Connect |
| * current Easy Connect |
| * session, and no further callbacks will be called. This callback is the successful outcome |
| * of a Easy Connect flow starting with |
| * {@link WifiManager#startEasyConnectAsEnrolleeInitiator(String, |
| * Handler, |
| * EasyConnectStatusCallback)}. |
| * |
| * @param newNetworkId New Wi-Fi configuration with a network ID received from the configurator |
| */ |
| public abstract void onEnrolleeSuccess(int newNetworkId); |
| |
| /** |
| * Called when a Easy Connect 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 Easy Connect session, and no further |
| * callbacks will be called. This callback is the successful outcome of a Easy Connect flow |
| * starting with |
| * {@link WifiManager#startEasyConnectAsConfiguratorInitiator(String, int, int, Handler, |
| * EasyConnectStatusCallback)}. |
| * |
| * @param code Easy Connect success status code. |
| */ |
| public abstract void onConfiguratorSuccess(@EasyConnectSuccessStatusCode int code); |
| |
| /** |
| * Called when a Easy Connect Failure event takes place. This callback marks the unsuccessful |
| * end of the |
| * current Easy Connect session, and no further callbacks will be called. |
| * |
| * @param code Easy Connect failure status code. |
| */ |
| public abstract void onFailure(@EasyConnectFailureStatusCode int code); |
| |
| /** |
| * Called when Easy Connect events that indicate progress take place. Can be used by UI elements |
| * to show progress. |
| * |
| * @param code Easy Connect progress status code. |
| */ |
| public abstract void onProgress(@EasyConnectProgressStatusCode int code); |
| } |