diff --git a/compatibility_matrices/compatibility_matrix.current.xml b/compatibility_matrices/compatibility_matrix.current.xml index c39db36ae8..85dd7562a4 100644 --- a/compatibility_matrices/compatibility_matrix.current.xml +++ b/compatibility_matrices/compatibility_matrix.current.xml @@ -733,4 +733,11 @@ default + + android.hardware.wifi.supplicant + + ISupplicant + default + + diff --git a/wifi/supplicant/1.3/vts/OWNERS b/wifi/supplicant/OWNERS similarity index 64% rename from wifi/supplicant/1.3/vts/OWNERS rename to wifi/supplicant/OWNERS index 287152dff1..7febd60783 100644 --- a/wifi/supplicant/1.3/vts/OWNERS +++ b/wifi/supplicant/OWNERS @@ -1,3 +1,5 @@ # Bug component: 33618 arabawy@google.com etancohen@google.com +gbiren@google.com +lzye@google.com diff --git a/wifi/supplicant/aidl/Android.bp b/wifi/supplicant/aidl/Android.bp new file mode 100644 index 0000000000..c97a6f917c --- /dev/null +++ b/wifi/supplicant/aidl/Android.bp @@ -0,0 +1,37 @@ +// 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. + +aidl_interface { + name: "android.hardware.wifi.supplicant", + vendor_available: true, + srcs: [ + "android/hardware/wifi/supplicant/*.aidl", + ], + stability: "vintf", + backend: { + java: { + sdk_version: "module_current", + apex_available: [ + "//apex_available:platform", + "com.android.wifi", + ], + min_sdk_version: "30", + }, + ndk: { + vndk: { + enabled: true, + }, + }, + }, +} diff --git a/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/AnqpData.aidl b/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/AnqpData.aidl new file mode 100644 index 0000000000..d8e49d70f3 --- /dev/null +++ b/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/AnqpData.aidl @@ -0,0 +1,44 @@ +/* + * 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. + */ +/////////////////////////////////////////////////////////////////////////////// +// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. // +/////////////////////////////////////////////////////////////////////////////// + +// This file is a snapshot of an AIDL file. Do not edit it manually. There are +// two cases: +// 1). this is a frozen version file - do not edit this in any case. +// 2). this is a 'current' file. If you make a backwards compatible change to +// the interface (from the latest frozen version), the build system will +// prompt you to update this file with `m -update-api`. +// +// You must not make a backward incompatible change to any AIDL file built +// with the aidl_interface module type with versions property set. The module +// type is used to build AIDL files in a way that they can be used across +// independently updatable components of the system. If a device is shipped +// with such a backward incompatible change, it has a high risk of breaking +// later when a module using the interface is updated, e.g., Mainline modules. + +package android.hardware.wifi.supplicant; +@VintfStability +parcelable AnqpData { + byte[] venueName; + byte[] roamingConsortium; + byte[] ipAddrTypeAvailability; + byte[] naiRealm; + byte[] anqp3gppCellularNetwork; + byte[] domainName; + byte[] venueUrl; +} diff --git a/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/AnqpInfoId.aidl b/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/AnqpInfoId.aidl new file mode 100644 index 0000000000..cc323608f9 --- /dev/null +++ b/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/AnqpInfoId.aidl @@ -0,0 +1,43 @@ +/* + * 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. + */ +/////////////////////////////////////////////////////////////////////////////// +// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. // +/////////////////////////////////////////////////////////////////////////////// + +// This file is a snapshot of an AIDL file. Do not edit it manually. There are +// two cases: +// 1). this is a frozen version file - do not edit this in any case. +// 2). this is a 'current' file. If you make a backwards compatible change to +// the interface (from the latest frozen version), the build system will +// prompt you to update this file with `m -update-api`. +// +// You must not make a backward incompatible change to any AIDL file built +// with the aidl_interface module type with versions property set. The module +// type is used to build AIDL files in a way that they can be used across +// independently updatable components of the system. If a device is shipped +// with such a backward incompatible change, it has a high risk of breaking +// later when a module using the interface is updated, e.g., Mainline modules. + +package android.hardware.wifi.supplicant; +@Backing(type="int") @VintfStability +enum AnqpInfoId { + VENUE_NAME = 258, + ROAMING_CONSORTIUM = 261, + IP_ADDR_TYPE_AVAILABILITY = 262, + NAI_REALM = 263, + ANQP_3GPP_CELLULAR_NETWORK = 264, + DOMAIN_NAME = 268, +} diff --git a/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/AssociationRejectionData.aidl b/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/AssociationRejectionData.aidl new file mode 100644 index 0000000000..f6830dc8be --- /dev/null +++ b/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/AssociationRejectionData.aidl @@ -0,0 +1,45 @@ +/* + * 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. + */ +/////////////////////////////////////////////////////////////////////////////// +// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. // +/////////////////////////////////////////////////////////////////////////////// + +// This file is a snapshot of an AIDL file. Do not edit it manually. There are +// two cases: +// 1). this is a frozen version file - do not edit this in any case. +// 2). this is a 'current' file. If you make a backwards compatible change to +// the interface (from the latest frozen version), the build system will +// prompt you to update this file with `m -update-api`. +// +// You must not make a backward incompatible change to any AIDL file built +// with the aidl_interface module type with versions property set. The module +// type is used to build AIDL files in a way that they can be used across +// independently updatable components of the system. If a device is shipped +// with such a backward incompatible change, it has a high risk of breaking +// later when a module using the interface is updated, e.g., Mainline modules. + +package android.hardware.wifi.supplicant; +@VintfStability +parcelable AssociationRejectionData { + byte[] ssid; + byte[] bssid; + android.hardware.wifi.supplicant.StaIfaceStatusCode statusCode; + boolean timedOut; + boolean isMboAssocDisallowedReasonCodePresent; + android.hardware.wifi.supplicant.MboAssocDisallowedReasonCode mboAssocDisallowedReason; + boolean isOceRssiBasedAssocRejectAttrPresent; + android.hardware.wifi.supplicant.OceRssiBasedAssocRejectAttr oceRssiBasedAssocRejectData; +} diff --git a/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/AuthAlgMask.aidl b/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/AuthAlgMask.aidl new file mode 100644 index 0000000000..9cd178d7ba --- /dev/null +++ b/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/AuthAlgMask.aidl @@ -0,0 +1,41 @@ +/* + * 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. + */ +/////////////////////////////////////////////////////////////////////////////// +// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. // +/////////////////////////////////////////////////////////////////////////////// + +// This file is a snapshot of an AIDL file. Do not edit it manually. There are +// two cases: +// 1). this is a frozen version file - do not edit this in any case. +// 2). this is a 'current' file. If you make a backwards compatible change to +// the interface (from the latest frozen version), the build system will +// prompt you to update this file with `m -update-api`. +// +// You must not make a backward incompatible change to any AIDL file built +// with the aidl_interface module type with versions property set. The module +// type is used to build AIDL files in a way that they can be used across +// independently updatable components of the system. If a device is shipped +// with such a backward incompatible change, it has a high risk of breaking +// later when a module using the interface is updated, e.g., Mainline modules. + +package android.hardware.wifi.supplicant; +@Backing(type="int") @VintfStability +enum AuthAlgMask { + OPEN = 1, + SHARED = 2, + LEAP = 4, + SAE = 16, +} diff --git a/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/BssTmData.aidl b/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/BssTmData.aidl new file mode 100644 index 0000000000..34d894d6fa --- /dev/null +++ b/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/BssTmData.aidl @@ -0,0 +1,42 @@ +/* + * 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. + */ +/////////////////////////////////////////////////////////////////////////////// +// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. // +/////////////////////////////////////////////////////////////////////////////// + +// This file is a snapshot of an AIDL file. Do not edit it manually. There are +// two cases: +// 1). this is a frozen version file - do not edit this in any case. +// 2). this is a 'current' file. If you make a backwards compatible change to +// the interface (from the latest frozen version), the build system will +// prompt you to update this file with `m -update-api`. +// +// You must not make a backward incompatible change to any AIDL file built +// with the aidl_interface module type with versions property set. The module +// type is used to build AIDL files in a way that they can be used across +// independently updatable components of the system. If a device is shipped +// with such a backward incompatible change, it has a high risk of breaking +// later when a module using the interface is updated, e.g., Mainline modules. + +package android.hardware.wifi.supplicant; +@VintfStability +parcelable BssTmData { + android.hardware.wifi.supplicant.BssTmStatusCode status; + android.hardware.wifi.supplicant.BssTmDataFlagsMask flags; + int assocRetryDelayMs; + android.hardware.wifi.supplicant.MboTransitionReasonCode mboTransitionReason; + android.hardware.wifi.supplicant.MboCellularDataConnectionPrefValue mboCellPreference; +} diff --git a/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/BssTmDataFlagsMask.aidl b/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/BssTmDataFlagsMask.aidl new file mode 100644 index 0000000000..f215f0557f --- /dev/null +++ b/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/BssTmDataFlagsMask.aidl @@ -0,0 +1,45 @@ +/* + * 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. + */ +/////////////////////////////////////////////////////////////////////////////// +// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. // +/////////////////////////////////////////////////////////////////////////////// + +// This file is a snapshot of an AIDL file. Do not edit it manually. There are +// two cases: +// 1). this is a frozen version file - do not edit this in any case. +// 2). this is a 'current' file. If you make a backwards compatible change to +// the interface (from the latest frozen version), the build system will +// prompt you to update this file with `m -update-api`. +// +// You must not make a backward incompatible change to any AIDL file built +// with the aidl_interface module type with versions property set. The module +// type is used to build AIDL files in a way that they can be used across +// independently updatable components of the system. If a device is shipped +// with such a backward incompatible change, it has a high risk of breaking +// later when a module using the interface is updated, e.g., Mainline modules. + +package android.hardware.wifi.supplicant; +@Backing(type="int") @VintfStability +enum BssTmDataFlagsMask { + WNM_MODE_PREFERRED_CANDIDATE_LIST_INCLUDED = 1, + WNM_MODE_ABRIDGED = 2, + WNM_MODE_DISASSOCIATION_IMMINENT = 4, + WNM_MODE_BSS_TERMINATION_INCLUDED = 8, + WNM_MODE_ESS_DISASSOCIATION_IMMINENT = 16, + MBO_TRANSITION_REASON_CODE_INCLUDED = 32, + MBO_ASSOC_RETRY_DELAY_INCLUDED = 64, + MBO_CELLULAR_DATA_CONNECTION_PREFERENCE_INCLUDED = 128, +} diff --git a/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/BssTmStatusCode.aidl b/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/BssTmStatusCode.aidl new file mode 100644 index 0000000000..c95825fe3c --- /dev/null +++ b/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/BssTmStatusCode.aidl @@ -0,0 +1,46 @@ +/* + * 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. + */ +/////////////////////////////////////////////////////////////////////////////// +// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. // +/////////////////////////////////////////////////////////////////////////////// + +// This file is a snapshot of an AIDL file. Do not edit it manually. There are +// two cases: +// 1). this is a frozen version file - do not edit this in any case. +// 2). this is a 'current' file. If you make a backwards compatible change to +// the interface (from the latest frozen version), the build system will +// prompt you to update this file with `m -update-api`. +// +// You must not make a backward incompatible change to any AIDL file built +// with the aidl_interface module type with versions property set. The module +// type is used to build AIDL files in a way that they can be used across +// independently updatable components of the system. If a device is shipped +// with such a backward incompatible change, it has a high risk of breaking +// later when a module using the interface is updated, e.g., Mainline modules. + +package android.hardware.wifi.supplicant; +@Backing(type="byte") @VintfStability +enum BssTmStatusCode { + ACCEPT = 0, + REJECT_UNSPECIFIED = 1, + REJECT_INSUFFICIENT_BEACON = 2, + REJECT_INSUFFICIENT_CAPABITY = 3, + REJECT_BSS_TERMINATION_UNDESIRED = 4, + REJECT_BSS_TERMINATION_DELAY_REQUEST = 5, + REJECT_STA_CANDIDATE_LIST_PROVIDED = 6, + REJECT_NO_SUITABLE_CANDIDATES = 7, + REJECT_LEAVING_ESS = 8, +} diff --git a/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/BssidChangeReason.aidl b/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/BssidChangeReason.aidl new file mode 100644 index 0000000000..1d24579201 --- /dev/null +++ b/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/BssidChangeReason.aidl @@ -0,0 +1,40 @@ +/* + * 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. + */ +/////////////////////////////////////////////////////////////////////////////// +// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. // +/////////////////////////////////////////////////////////////////////////////// + +// This file is a snapshot of an AIDL file. Do not edit it manually. There are +// two cases: +// 1). this is a frozen version file - do not edit this in any case. +// 2). this is a 'current' file. If you make a backwards compatible change to +// the interface (from the latest frozen version), the build system will +// prompt you to update this file with `m -update-api`. +// +// You must not make a backward incompatible change to any AIDL file built +// with the aidl_interface module type with versions property set. The module +// type is used to build AIDL files in a way that they can be used across +// independently updatable components of the system. If a device is shipped +// with such a backward incompatible change, it has a high risk of breaking +// later when a module using the interface is updated, e.g., Mainline modules. + +package android.hardware.wifi.supplicant; +@Backing(type="byte") @VintfStability +enum BssidChangeReason { + ASSOC_START = 0, + ASSOC_COMPLETE = 1, + DISASSOC = 2, +} diff --git a/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/BtCoexistenceMode.aidl b/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/BtCoexistenceMode.aidl new file mode 100644 index 0000000000..bdc1b4a991 --- /dev/null +++ b/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/BtCoexistenceMode.aidl @@ -0,0 +1,40 @@ +/* + * 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. + */ +/////////////////////////////////////////////////////////////////////////////// +// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. // +/////////////////////////////////////////////////////////////////////////////// + +// This file is a snapshot of an AIDL file. Do not edit it manually. There are +// two cases: +// 1). this is a frozen version file - do not edit this in any case. +// 2). this is a 'current' file. If you make a backwards compatible change to +// the interface (from the latest frozen version), the build system will +// prompt you to update this file with `m -update-api`. +// +// You must not make a backward incompatible change to any AIDL file built +// with the aidl_interface module type with versions property set. The module +// type is used to build AIDL files in a way that they can be used across +// independently updatable components of the system. If a device is shipped +// with such a backward incompatible change, it has a high risk of breaking +// later when a module using the interface is updated, e.g., Mainline modules. + +package android.hardware.wifi.supplicant; +@Backing(type="byte") @VintfStability +enum BtCoexistenceMode { + ENABLED = 0, + DISABLED = 1, + SENSE = 2, +} diff --git a/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/ConnectionCapabilities.aidl b/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/ConnectionCapabilities.aidl new file mode 100644 index 0000000000..433b3d8018 --- /dev/null +++ b/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/ConnectionCapabilities.aidl @@ -0,0 +1,42 @@ +/* + * 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. + */ +/////////////////////////////////////////////////////////////////////////////// +// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. // +/////////////////////////////////////////////////////////////////////////////// + +// This file is a snapshot of an AIDL file. Do not edit it manually. There are +// two cases: +// 1). this is a frozen version file - do not edit this in any case. +// 2). this is a 'current' file. If you make a backwards compatible change to +// the interface (from the latest frozen version), the build system will +// prompt you to update this file with `m -update-api`. +// +// You must not make a backward incompatible change to any AIDL file built +// with the aidl_interface module type with versions property set. The module +// type is used to build AIDL files in a way that they can be used across +// independently updatable components of the system. If a device is shipped +// with such a backward incompatible change, it has a high risk of breaking +// later when a module using the interface is updated, e.g., Mainline modules. + +package android.hardware.wifi.supplicant; +@VintfStability +parcelable ConnectionCapabilities { + android.hardware.wifi.supplicant.WifiTechnology technology; + int channelBandwidth; + int maxNumberTxSpatialStreams; + int maxNumberRxSpatialStreams; + android.hardware.wifi.supplicant.LegacyMode legacyMode; +} diff --git a/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/DebugLevel.aidl b/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/DebugLevel.aidl new file mode 100644 index 0000000000..fbfb5b3468 --- /dev/null +++ b/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/DebugLevel.aidl @@ -0,0 +1,43 @@ +/* + * 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. + */ +/////////////////////////////////////////////////////////////////////////////// +// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. // +/////////////////////////////////////////////////////////////////////////////// + +// This file is a snapshot of an AIDL file. Do not edit it manually. There are +// two cases: +// 1). this is a frozen version file - do not edit this in any case. +// 2). this is a 'current' file. If you make a backwards compatible change to +// the interface (from the latest frozen version), the build system will +// prompt you to update this file with `m -update-api`. +// +// You must not make a backward incompatible change to any AIDL file built +// with the aidl_interface module type with versions property set. The module +// type is used to build AIDL files in a way that they can be used across +// independently updatable components of the system. If a device is shipped +// with such a backward incompatible change, it has a high risk of breaking +// later when a module using the interface is updated, e.g., Mainline modules. + +package android.hardware.wifi.supplicant; +@Backing(type="int") @VintfStability +enum DebugLevel { + EXCESSIVE = 0, + MSGDUMP = 1, + DEBUG = 2, + INFO = 3, + WARNING = 4, + ERROR = 5, +} diff --git a/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/DppAkm.aidl b/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/DppAkm.aidl new file mode 100644 index 0000000000..df2aef8c11 --- /dev/null +++ b/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/DppAkm.aidl @@ -0,0 +1,41 @@ +/* + * 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. + */ +/////////////////////////////////////////////////////////////////////////////// +// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. // +/////////////////////////////////////////////////////////////////////////////// + +// This file is a snapshot of an AIDL file. Do not edit it manually. There are +// two cases: +// 1). this is a frozen version file - do not edit this in any case. +// 2). this is a 'current' file. If you make a backwards compatible change to +// the interface (from the latest frozen version), the build system will +// prompt you to update this file with `m -update-api`. +// +// You must not make a backward incompatible change to any AIDL file built +// with the aidl_interface module type with versions property set. The module +// type is used to build AIDL files in a way that they can be used across +// independently updatable components of the system. If a device is shipped +// with such a backward incompatible change, it has a high risk of breaking +// later when a module using the interface is updated, e.g., Mainline modules. + +package android.hardware.wifi.supplicant; +@Backing(type="int") @VintfStability +enum DppAkm { + PSK = 0, + PSK_SAE = 1, + SAE = 2, + DPP = 3, +} diff --git a/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/DppCurve.aidl b/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/DppCurve.aidl new file mode 100644 index 0000000000..e69da44399 --- /dev/null +++ b/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/DppCurve.aidl @@ -0,0 +1,43 @@ +/* + * 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. + */ +/////////////////////////////////////////////////////////////////////////////// +// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. // +/////////////////////////////////////////////////////////////////////////////// + +// This file is a snapshot of an AIDL file. Do not edit it manually. There are +// two cases: +// 1). this is a frozen version file - do not edit this in any case. +// 2). this is a 'current' file. If you make a backwards compatible change to +// the interface (from the latest frozen version), the build system will +// prompt you to update this file with `m -update-api`. +// +// You must not make a backward incompatible change to any AIDL file built +// with the aidl_interface module type with versions property set. The module +// type is used to build AIDL files in a way that they can be used across +// independently updatable components of the system. If a device is shipped +// with such a backward incompatible change, it has a high risk of breaking +// later when a module using the interface is updated, e.g., Mainline modules. + +package android.hardware.wifi.supplicant; +@Backing(type="int") @VintfStability +enum DppCurve { + PRIME256V1 = 0, + SECP384R1 = 1, + SECP521R1 = 2, + BRAINPOOLP256R1 = 3, + BRAINPOOLP384R1 = 4, + BRAINPOOLP512R1 = 5, +} diff --git a/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/DppEventType.aidl b/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/DppEventType.aidl new file mode 100644 index 0000000000..9e394fc5df --- /dev/null +++ b/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/DppEventType.aidl @@ -0,0 +1,39 @@ +/* + * 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. + */ +/////////////////////////////////////////////////////////////////////////////// +// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. // +/////////////////////////////////////////////////////////////////////////////// + +// This file is a snapshot of an AIDL file. Do not edit it manually. There are +// two cases: +// 1). this is a frozen version file - do not edit this in any case. +// 2). this is a 'current' file. If you make a backwards compatible change to +// the interface (from the latest frozen version), the build system will +// prompt you to update this file with `m -update-api`. +// +// You must not make a backward incompatible change to any AIDL file built +// with the aidl_interface module type with versions property set. The module +// type is used to build AIDL files in a way that they can be used across +// independently updatable components of the system. If a device is shipped +// with such a backward incompatible change, it has a high risk of breaking +// later when a module using the interface is updated, e.g., Mainline modules. + +package android.hardware.wifi.supplicant; +@Backing(type="int") @VintfStability +enum DppEventType { + CONFIGURATION_SENT = 0, + CONFIGURATION_APPLIED = 1, +} diff --git a/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/DppFailureCode.aidl b/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/DppFailureCode.aidl new file mode 100644 index 0000000000..7e7c806733 --- /dev/null +++ b/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/DppFailureCode.aidl @@ -0,0 +1,49 @@ +/* + * 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. + */ +/////////////////////////////////////////////////////////////////////////////// +// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. // +/////////////////////////////////////////////////////////////////////////////// + +// This file is a snapshot of an AIDL file. Do not edit it manually. There are +// two cases: +// 1). this is a frozen version file - do not edit this in any case. +// 2). this is a 'current' file. If you make a backwards compatible change to +// the interface (from the latest frozen version), the build system will +// prompt you to update this file with `m -update-api`. +// +// You must not make a backward incompatible change to any AIDL file built +// with the aidl_interface module type with versions property set. The module +// type is used to build AIDL files in a way that they can be used across +// independently updatable components of the system. If a device is shipped +// with such a backward incompatible change, it has a high risk of breaking +// later when a module using the interface is updated, e.g., Mainline modules. + +package android.hardware.wifi.supplicant; +@Backing(type="int") @VintfStability +enum DppFailureCode { + INVALID_URI = 0, + AUTHENTICATION = 1, + NOT_COMPATIBLE = 2, + CONFIGURATION = 3, + BUSY = 4, + TIMEOUT = 5, + FAILURE = 6, + NOT_SUPPORTED = 7, + CONFIGURATION_REJECTED = 8, + CANNOT_FIND_NETWORK = 9, + ENROLLEE_AUTHENTICATION = 10, + URI_GENERATION = 11, +} diff --git a/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/DppNetRole.aidl b/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/DppNetRole.aidl new file mode 100644 index 0000000000..c6d3522675 --- /dev/null +++ b/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/DppNetRole.aidl @@ -0,0 +1,39 @@ +/* + * 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. + */ +/////////////////////////////////////////////////////////////////////////////// +// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. // +/////////////////////////////////////////////////////////////////////////////// + +// This file is a snapshot of an AIDL file. Do not edit it manually. There are +// two cases: +// 1). this is a frozen version file - do not edit this in any case. +// 2). this is a 'current' file. If you make a backwards compatible change to +// the interface (from the latest frozen version), the build system will +// prompt you to update this file with `m -update-api`. +// +// You must not make a backward incompatible change to any AIDL file built +// with the aidl_interface module type with versions property set. The module +// type is used to build AIDL files in a way that they can be used across +// independently updatable components of the system. If a device is shipped +// with such a backward incompatible change, it has a high risk of breaking +// later when a module using the interface is updated, e.g., Mainline modules. + +package android.hardware.wifi.supplicant; +@Backing(type="int") @VintfStability +enum DppNetRole { + STA = 0, + AP = 1, +} diff --git a/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/DppProgressCode.aidl b/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/DppProgressCode.aidl new file mode 100644 index 0000000000..f0618a5a6d --- /dev/null +++ b/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/DppProgressCode.aidl @@ -0,0 +1,41 @@ +/* + * 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. + */ +/////////////////////////////////////////////////////////////////////////////// +// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. // +/////////////////////////////////////////////////////////////////////////////// + +// This file is a snapshot of an AIDL file. Do not edit it manually. There are +// two cases: +// 1). this is a frozen version file - do not edit this in any case. +// 2). this is a 'current' file. If you make a backwards compatible change to +// the interface (from the latest frozen version), the build system will +// prompt you to update this file with `m -update-api`. +// +// You must not make a backward incompatible change to any AIDL file built +// with the aidl_interface module type with versions property set. The module +// type is used to build AIDL files in a way that they can be used across +// independently updatable components of the system. If a device is shipped +// with such a backward incompatible change, it has a high risk of breaking +// later when a module using the interface is updated, e.g., Mainline modules. + +package android.hardware.wifi.supplicant; +@Backing(type="int") @VintfStability +enum DppProgressCode { + AUTHENTICATION_SUCCESS = 0, + RESPONSE_PENDING = 1, + CONFIGURATION_SENT_WAITING_RESPONSE = 2, + CONFIGURATION_ACCEPTED = 3, +} diff --git a/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/DppResponderBootstrapInfo.aidl b/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/DppResponderBootstrapInfo.aidl new file mode 100644 index 0000000000..8b6492b4f3 --- /dev/null +++ b/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/DppResponderBootstrapInfo.aidl @@ -0,0 +1,40 @@ +/* + * 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. + */ +/////////////////////////////////////////////////////////////////////////////// +// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. // +/////////////////////////////////////////////////////////////////////////////// + +// This file is a snapshot of an AIDL file. Do not edit it manually. There are +// two cases: +// 1). this is a frozen version file - do not edit this in any case. +// 2). this is a 'current' file. If you make a backwards compatible change to +// the interface (from the latest frozen version), the build system will +// prompt you to update this file with `m -update-api`. +// +// You must not make a backward incompatible change to any AIDL file built +// with the aidl_interface module type with versions property set. The module +// type is used to build AIDL files in a way that they can be used across +// independently updatable components of the system. If a device is shipped +// with such a backward incompatible change, it has a high risk of breaking +// later when a module using the interface is updated, e.g., Mainline modules. + +package android.hardware.wifi.supplicant; +@VintfStability +parcelable DppResponderBootstrapInfo { + int bootstrapId; + int listenChannel; + String uri; +} diff --git a/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/EapErrorCode.aidl b/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/EapErrorCode.aidl new file mode 100644 index 0000000000..2cf81d9ca2 --- /dev/null +++ b/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/EapErrorCode.aidl @@ -0,0 +1,42 @@ +/* + * 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. + */ +/////////////////////////////////////////////////////////////////////////////// +// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. // +/////////////////////////////////////////////////////////////////////////////// + +// This file is a snapshot of an AIDL file. Do not edit it manually. There are +// two cases: +// 1). this is a frozen version file - do not edit this in any case. +// 2). this is a 'current' file. If you make a backwards compatible change to +// the interface (from the latest frozen version), the build system will +// prompt you to update this file with `m -update-api`. +// +// You must not make a backward incompatible change to any AIDL file built +// with the aidl_interface module type with versions property set. The module +// type is used to build AIDL files in a way that they can be used across +// independently updatable components of the system. If a device is shipped +// with such a backward incompatible change, it has a high risk of breaking +// later when a module using the interface is updated, e.g., Mainline modules. + +package android.hardware.wifi.supplicant; +@Backing(type="int") @VintfStability +enum EapErrorCode { + SIM_GENERAL_FAILURE_AFTER_AUTH = 0, + SIM_TEMPORARILY_DENIED = 1026, + SIM_NOT_SUBSCRIBED = 1031, + SIM_GENERAL_FAILURE_BEFORE_AUTH = 16384, + SIM_VENDOR_SPECIFIC_EXPIRED_CERT = 16385, +} diff --git a/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/EapMethod.aidl b/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/EapMethod.aidl new file mode 100644 index 0000000000..4ab23afefd --- /dev/null +++ b/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/EapMethod.aidl @@ -0,0 +1,45 @@ +/* + * 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. + */ +/////////////////////////////////////////////////////////////////////////////// +// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. // +/////////////////////////////////////////////////////////////////////////////// + +// This file is a snapshot of an AIDL file. Do not edit it manually. There are +// two cases: +// 1). this is a frozen version file - do not edit this in any case. +// 2). this is a 'current' file. If you make a backwards compatible change to +// the interface (from the latest frozen version), the build system will +// prompt you to update this file with `m -update-api`. +// +// You must not make a backward incompatible change to any AIDL file built +// with the aidl_interface module type with versions property set. The module +// type is used to build AIDL files in a way that they can be used across +// independently updatable components of the system. If a device is shipped +// with such a backward incompatible change, it has a high risk of breaking +// later when a module using the interface is updated, e.g., Mainline modules. + +package android.hardware.wifi.supplicant; +@Backing(type="int") @VintfStability +enum EapMethod { + PEAP = 0, + TLS = 1, + TTLS = 2, + PWD = 3, + SIM = 4, + AKA = 5, + AKA_PRIME = 6, + WFA_UNAUTH_TLS = 7, +} diff --git a/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/EapPhase2Method.aidl b/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/EapPhase2Method.aidl new file mode 100644 index 0000000000..4bd93a08da --- /dev/null +++ b/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/EapPhase2Method.aidl @@ -0,0 +1,45 @@ +/* + * 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. + */ +/////////////////////////////////////////////////////////////////////////////// +// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. // +/////////////////////////////////////////////////////////////////////////////// + +// This file is a snapshot of an AIDL file. Do not edit it manually. There are +// two cases: +// 1). this is a frozen version file - do not edit this in any case. +// 2). this is a 'current' file. If you make a backwards compatible change to +// the interface (from the latest frozen version), the build system will +// prompt you to update this file with `m -update-api`. +// +// You must not make a backward incompatible change to any AIDL file built +// with the aidl_interface module type with versions property set. The module +// type is used to build AIDL files in a way that they can be used across +// independently updatable components of the system. If a device is shipped +// with such a backward incompatible change, it has a high risk of breaking +// later when a module using the interface is updated, e.g., Mainline modules. + +package android.hardware.wifi.supplicant; +@Backing(type="int") @VintfStability +enum EapPhase2Method { + NONE = 0, + PAP = 1, + MSPAP = 2, + MSPAPV2 = 3, + GTC = 4, + SIM = 5, + AKA = 6, + AKA_PRIME = 7, +} diff --git a/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/ExtRadioWorkDefaults.aidl b/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/ExtRadioWorkDefaults.aidl new file mode 100644 index 0000000000..cbf1a3ee37 --- /dev/null +++ b/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/ExtRadioWorkDefaults.aidl @@ -0,0 +1,38 @@ +/* + * 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. + */ +/////////////////////////////////////////////////////////////////////////////// +// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. // +/////////////////////////////////////////////////////////////////////////////// + +// This file is a snapshot of an AIDL file. Do not edit it manually. There are +// two cases: +// 1). this is a frozen version file - do not edit this in any case. +// 2). this is a 'current' file. If you make a backwards compatible change to +// the interface (from the latest frozen version), the build system will +// prompt you to update this file with `m -update-api`. +// +// You must not make a backward incompatible change to any AIDL file built +// with the aidl_interface module type with versions property set. The module +// type is used to build AIDL files in a way that they can be used across +// independently updatable components of the system. If a device is shipped +// with such a backward incompatible change, it has a high risk of breaking +// later when a module using the interface is updated, e.g., Mainline modules. + +package android.hardware.wifi.supplicant; +@Backing(type="int") @VintfStability +enum ExtRadioWorkDefaults { + TIMEOUT_IN_SECS = 10, +} diff --git a/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/FreqRange.aidl b/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/FreqRange.aidl new file mode 100644 index 0000000000..0971d517f6 --- /dev/null +++ b/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/FreqRange.aidl @@ -0,0 +1,39 @@ +/* + * 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. + */ +/////////////////////////////////////////////////////////////////////////////// +// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. // +/////////////////////////////////////////////////////////////////////////////// + +// This file is a snapshot of an AIDL file. Do not edit it manually. There are +// two cases: +// 1). this is a frozen version file - do not edit this in any case. +// 2). this is a 'current' file. If you make a backwards compatible change to +// the interface (from the latest frozen version), the build system will +// prompt you to update this file with `m -update-api`. +// +// You must not make a backward incompatible change to any AIDL file built +// with the aidl_interface module type with versions property set. The module +// type is used to build AIDL files in a way that they can be used across +// independently updatable components of the system. If a device is shipped +// with such a backward incompatible change, it has a high risk of breaking +// later when a module using the interface is updated, e.g., Mainline modules. + +package android.hardware.wifi.supplicant; +@VintfStability +parcelable FreqRange { + int min; + int max; +} diff --git a/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/GroupCipherMask.aidl b/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/GroupCipherMask.aidl new file mode 100644 index 0000000000..f2da92532a --- /dev/null +++ b/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/GroupCipherMask.aidl @@ -0,0 +1,45 @@ +/* + * 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. + */ +/////////////////////////////////////////////////////////////////////////////// +// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. // +/////////////////////////////////////////////////////////////////////////////// + +// This file is a snapshot of an AIDL file. Do not edit it manually. There are +// two cases: +// 1). this is a frozen version file - do not edit this in any case. +// 2). this is a 'current' file. If you make a backwards compatible change to +// the interface (from the latest frozen version), the build system will +// prompt you to update this file with `m -update-api`. +// +// You must not make a backward incompatible change to any AIDL file built +// with the aidl_interface module type with versions property set. The module +// type is used to build AIDL files in a way that they can be used across +// independently updatable components of the system. If a device is shipped +// with such a backward incompatible change, it has a high risk of breaking +// later when a module using the interface is updated, e.g., Mainline modules. + +package android.hardware.wifi.supplicant; +@Backing(type="int") @VintfStability +enum GroupCipherMask { + WEP40 = 2, + WEP104 = 4, + TKIP = 8, + CCMP = 16, + GTK_NOT_USED = 16384, + GCMP_256 = 256, + SMS4 = 128, + GCMP_128 = 64, +} diff --git a/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/GroupMgmtCipherMask.aidl b/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/GroupMgmtCipherMask.aidl new file mode 100644 index 0000000000..c24d6cc744 --- /dev/null +++ b/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/GroupMgmtCipherMask.aidl @@ -0,0 +1,40 @@ +/* + * 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. + */ +/////////////////////////////////////////////////////////////////////////////// +// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. // +/////////////////////////////////////////////////////////////////////////////// + +// This file is a snapshot of an AIDL file. Do not edit it manually. There are +// two cases: +// 1). this is a frozen version file - do not edit this in any case. +// 2). this is a 'current' file. If you make a backwards compatible change to +// the interface (from the latest frozen version), the build system will +// prompt you to update this file with `m -update-api`. +// +// You must not make a backward incompatible change to any AIDL file built +// with the aidl_interface module type with versions property set. The module +// type is used to build AIDL files in a way that they can be used across +// independently updatable components of the system. If a device is shipped +// with such a backward incompatible change, it has a high risk of breaking +// later when a module using the interface is updated, e.g., Mainline modules. + +package android.hardware.wifi.supplicant; +@Backing(type="int") @VintfStability +enum GroupMgmtCipherMask { + BIP_GMAC_128 = 2048, + BIP_GMAC_256 = 4096, + BIP_CMAC_256 = 8192, +} diff --git a/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/GsmRand.aidl b/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/GsmRand.aidl new file mode 100644 index 0000000000..599a68339a --- /dev/null +++ b/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/GsmRand.aidl @@ -0,0 +1,38 @@ +/* + * 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. + */ +/////////////////////////////////////////////////////////////////////////////// +// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. // +/////////////////////////////////////////////////////////////////////////////// + +// This file is a snapshot of an AIDL file. Do not edit it manually. There are +// two cases: +// 1). this is a frozen version file - do not edit this in any case. +// 2). this is a 'current' file. If you make a backwards compatible change to +// the interface (from the latest frozen version), the build system will +// prompt you to update this file with `m -update-api`. +// +// You must not make a backward incompatible change to any AIDL file built +// with the aidl_interface module type with versions property set. The module +// type is used to build AIDL files in a way that they can be used across +// independently updatable components of the system. If a device is shipped +// with such a backward incompatible change, it has a high risk of breaking +// later when a module using the interface is updated, e.g., Mainline modules. + +package android.hardware.wifi.supplicant; +@VintfStability +parcelable GsmRand { + byte[] data; +} diff --git a/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/Hs20AnqpData.aidl b/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/Hs20AnqpData.aidl new file mode 100644 index 0000000000..43b182a24a --- /dev/null +++ b/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/Hs20AnqpData.aidl @@ -0,0 +1,41 @@ +/* + * 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. + */ +/////////////////////////////////////////////////////////////////////////////// +// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. // +/////////////////////////////////////////////////////////////////////////////// + +// This file is a snapshot of an AIDL file. Do not edit it manually. There are +// two cases: +// 1). this is a frozen version file - do not edit this in any case. +// 2). this is a 'current' file. If you make a backwards compatible change to +// the interface (from the latest frozen version), the build system will +// prompt you to update this file with `m -update-api`. +// +// You must not make a backward incompatible change to any AIDL file built +// with the aidl_interface module type with versions property set. The module +// type is used to build AIDL files in a way that they can be used across +// independently updatable components of the system. If a device is shipped +// with such a backward incompatible change, it has a high risk of breaking +// later when a module using the interface is updated, e.g., Mainline modules. + +package android.hardware.wifi.supplicant; +@VintfStability +parcelable Hs20AnqpData { + byte[] operatorFriendlyName; + byte[] wanMetrics; + byte[] connectionCapability; + byte[] osuProvidersList; +} diff --git a/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/Hs20AnqpSubtypes.aidl b/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/Hs20AnqpSubtypes.aidl new file mode 100644 index 0000000000..270d43b073 --- /dev/null +++ b/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/Hs20AnqpSubtypes.aidl @@ -0,0 +1,41 @@ +/* + * 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. + */ +/////////////////////////////////////////////////////////////////////////////// +// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. // +/////////////////////////////////////////////////////////////////////////////// + +// This file is a snapshot of an AIDL file. Do not edit it manually. There are +// two cases: +// 1). this is a frozen version file - do not edit this in any case. +// 2). this is a 'current' file. If you make a backwards compatible change to +// the interface (from the latest frozen version), the build system will +// prompt you to update this file with `m -update-api`. +// +// You must not make a backward incompatible change to any AIDL file built +// with the aidl_interface module type with versions property set. The module +// type is used to build AIDL files in a way that they can be used across +// independently updatable components of the system. If a device is shipped +// with such a backward incompatible change, it has a high risk of breaking +// later when a module using the interface is updated, e.g., Mainline modules. + +package android.hardware.wifi.supplicant; +@Backing(type="int") @VintfStability +enum Hs20AnqpSubtypes { + OPERATOR_FRIENDLY_NAME = 3, + WAN_METRICS = 4, + CONNECTION_CAPABILITY = 5, + OSU_PROVIDERS_LIST = 8, +} diff --git a/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/ISupplicant.aidl b/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/ISupplicant.aidl new file mode 100644 index 0000000000..b4371fd97f --- /dev/null +++ b/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/ISupplicant.aidl @@ -0,0 +1,51 @@ +/* + * 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. + */ +/////////////////////////////////////////////////////////////////////////////// +// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. // +/////////////////////////////////////////////////////////////////////////////// + +// This file is a snapshot of an AIDL file. Do not edit it manually. There are +// two cases: +// 1). this is a frozen version file - do not edit this in any case. +// 2). this is a 'current' file. If you make a backwards compatible change to +// the interface (from the latest frozen version), the build system will +// prompt you to update this file with `m -update-api`. +// +// You must not make a backward incompatible change to any AIDL file built +// with the aidl_interface module type with versions property set. The module +// type is used to build AIDL files in a way that they can be used across +// independently updatable components of the system. If a device is shipped +// with such a backward incompatible change, it has a high risk of breaking +// later when a module using the interface is updated, e.g., Mainline modules. + +package android.hardware.wifi.supplicant; +@VintfStability +interface ISupplicant { + android.hardware.wifi.supplicant.ISupplicantP2pIface addP2pInterface(in String ifName); + android.hardware.wifi.supplicant.ISupplicantStaIface addStaInterface(in String ifName); + android.hardware.wifi.supplicant.DebugLevel getDebugLevel(); + android.hardware.wifi.supplicant.ISupplicantP2pIface getP2pInterface(in String ifName); + android.hardware.wifi.supplicant.ISupplicantStaIface getStaInterface(in String ifName); + boolean isDebugShowKeysEnabled(); + boolean isDebugShowTimestampEnabled(); + android.hardware.wifi.supplicant.IfaceInfo[] listInterfaces(); + void registerCallback(in android.hardware.wifi.supplicant.ISupplicantCallback callback); + void removeInterface(in android.hardware.wifi.supplicant.IfaceInfo ifaceInfo); + void setConcurrencyPriority(in android.hardware.wifi.supplicant.IfaceType type); + void setDebugParams(in android.hardware.wifi.supplicant.DebugLevel level, in boolean showTimestamp, in boolean showKeys); + oneway void terminate(); + const int EXT_RADIO_WORK_TIMEOUT_IN_SECS = 10; +} diff --git a/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/ISupplicantCallback.aidl b/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/ISupplicantCallback.aidl new file mode 100644 index 0000000000..72ab3b9502 --- /dev/null +++ b/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/ISupplicantCallback.aidl @@ -0,0 +1,40 @@ +/* + * 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. + */ +/////////////////////////////////////////////////////////////////////////////// +// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. // +/////////////////////////////////////////////////////////////////////////////// + +// This file is a snapshot of an AIDL file. Do not edit it manually. There are +// two cases: +// 1). this is a frozen version file - do not edit this in any case. +// 2). this is a 'current' file. If you make a backwards compatible change to +// the interface (from the latest frozen version), the build system will +// prompt you to update this file with `m -update-api`. +// +// You must not make a backward incompatible change to any AIDL file built +// with the aidl_interface module type with versions property set. The module +// type is used to build AIDL files in a way that they can be used across +// independently updatable components of the system. If a device is shipped +// with such a backward incompatible change, it has a high risk of breaking +// later when a module using the interface is updated, e.g., Mainline modules. + +package android.hardware.wifi.supplicant; +@VintfStability +interface ISupplicantCallback { + oneway void onInterfaceCreated(in String ifaceName); + oneway void onInterfaceRemoved(in String ifaceName); + oneway void onTerminating(); +} diff --git a/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/ISupplicantP2pIface.aidl b/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/ISupplicantP2pIface.aidl new file mode 100644 index 0000000000..ca7be7311f --- /dev/null +++ b/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/ISupplicantP2pIface.aidl @@ -0,0 +1,95 @@ +/* + * 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. + */ +/////////////////////////////////////////////////////////////////////////////// +// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. // +/////////////////////////////////////////////////////////////////////////////// + +// This file is a snapshot of an AIDL file. Do not edit it manually. There are +// two cases: +// 1). this is a frozen version file - do not edit this in any case. +// 2). this is a 'current' file. If you make a backwards compatible change to +// the interface (from the latest frozen version), the build system will +// prompt you to update this file with `m -update-api`. +// +// You must not make a backward incompatible change to any AIDL file built +// with the aidl_interface module type with versions property set. The module +// type is used to build AIDL files in a way that they can be used across +// independently updatable components of the system. If a device is shipped +// with such a backward incompatible change, it has a high risk of breaking +// later when a module using the interface is updated, e.g., Mainline modules. + +package android.hardware.wifi.supplicant; +@VintfStability +interface ISupplicantP2pIface { + void addBonjourService(in byte[] query, in byte[] response); + void addGroup(in boolean persistent, in int persistentNetworkId); + void addGroupWithConfig(in byte[] ssid, in String pskPassphrase, in boolean persistent, in int freq, in byte[] peerAddress, in boolean joinExistingGroup); + android.hardware.wifi.supplicant.ISupplicantP2pNetwork addNetwork(); + void addUpnpService(in int version, in String serviceName); + void cancelConnect(); + void cancelServiceDiscovery(in long identifier); + void cancelWps(in String groupIfName); + void configureExtListen(in int periodInMillis, in int intervalInMillis); + String connect(in byte[] peerAddress, in android.hardware.wifi.supplicant.WpsProvisionMethod provisionMethod, in String preSelectedPin, in boolean joinExistingGroup, in boolean persistent, in int goIntent); + byte[] createNfcHandoverRequestMessage(); + byte[] createNfcHandoverSelectMessage(); + void enableWfd(in boolean enable); + void find(in int timeoutInSec); + void flush(); + void flushServices(); + byte[] getDeviceAddress(); + boolean getEdmg(); + android.hardware.wifi.supplicant.P2pGroupCapabilityMask getGroupCapability(in byte[] peerAddress); + String getName(); + android.hardware.wifi.supplicant.ISupplicantP2pNetwork getNetwork(in int id); + byte[] getSsid(in byte[] peerAddress); + android.hardware.wifi.supplicant.IfaceType getType(); + void invite(in String groupIfName, in byte[] goDeviceAddress, in byte[] peerAddress); + int[] listNetworks(); + void provisionDiscovery(in byte[] peerAddress, in android.hardware.wifi.supplicant.WpsProvisionMethod provisionMethod); + void registerCallback(in android.hardware.wifi.supplicant.ISupplicantP2pIfaceCallback callback); + void reinvoke(in int persistentNetworkId, in byte[] peerAddress); + void reject(in byte[] peerAddress); + void removeBonjourService(in byte[] query); + void removeGroup(in String groupIfName); + void removeNetwork(in int id); + void removeUpnpService(in int version, in String serviceName); + void reportNfcHandoverInitiation(in byte[] select); + void reportNfcHandoverResponse(in byte[] request); + long requestServiceDiscovery(in byte[] peerAddress, in byte[] query); + void saveConfig(); + void setDisallowedFrequencies(in android.hardware.wifi.supplicant.FreqRange[] ranges); + void setEdmg(in boolean enable); + void setGroupIdle(in String groupIfName, in int timeoutInSec); + void setListenChannel(in int channel, in int operatingClass); + void setMacRandomization(in boolean enable); + void setMiracastMode(in android.hardware.wifi.supplicant.MiracastMode mode); + void setPowerSave(in String groupIfName, in boolean enable); + void setSsidPostfix(in byte[] postfix); + void setWfdDeviceInfo(in byte[] info); + void setWfdR2DeviceInfo(in byte[] info); + void setWpsConfigMethods(in android.hardware.wifi.supplicant.WpsConfigMethods configMethods); + void setWpsDeviceName(in String name); + void setWpsDeviceType(in byte[] type); + void setWpsManufacturer(in String manufacturer); + void setWpsModelName(in String modelName); + void setWpsModelNumber(in String modelNumber); + void setWpsSerialNumber(in String serialNumber); + void startWpsPbc(in String groupIfName, in byte[] bssid); + String startWpsPinDisplay(in String groupIfName, in byte[] bssid); + void startWpsPinKeypad(in String groupIfName, in String pin); + void stopFind(); +} diff --git a/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/ISupplicantP2pIfaceCallback.aidl b/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/ISupplicantP2pIfaceCallback.aidl new file mode 100644 index 0000000000..ed435e2097 --- /dev/null +++ b/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/ISupplicantP2pIfaceCallback.aidl @@ -0,0 +1,53 @@ +/* + * 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. + */ +/////////////////////////////////////////////////////////////////////////////// +// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. // +/////////////////////////////////////////////////////////////////////////////// + +// This file is a snapshot of an AIDL file. Do not edit it manually. There are +// two cases: +// 1). this is a frozen version file - do not edit this in any case. +// 2). this is a 'current' file. If you make a backwards compatible change to +// the interface (from the latest frozen version), the build system will +// prompt you to update this file with `m -update-api`. +// +// You must not make a backward incompatible change to any AIDL file built +// with the aidl_interface module type with versions property set. The module +// type is used to build AIDL files in a way that they can be used across +// independently updatable components of the system. If a device is shipped +// with such a backward incompatible change, it has a high risk of breaking +// later when a module using the interface is updated, e.g., Mainline modules. + +package android.hardware.wifi.supplicant; +@VintfStability +interface ISupplicantP2pIfaceCallback { + oneway void onDeviceFound(in byte[] srcAddress, in byte[] p2pDeviceAddress, in byte[] primaryDeviceType, in String deviceName, in android.hardware.wifi.supplicant.WpsConfigMethods configMethods, in byte deviceCapabilities, in android.hardware.wifi.supplicant.P2pGroupCapabilityMask groupCapabilities, in byte[] wfdDeviceInfo); + oneway void onDeviceLost(in byte[] p2pDeviceAddress); + oneway void onFindStopped(); + oneway void onGoNegotiationCompleted(in android.hardware.wifi.supplicant.P2pStatusCode status); + oneway void onGoNegotiationRequest(in byte[] srcAddress, in android.hardware.wifi.supplicant.WpsDevPasswordId passwordId); + oneway void onGroupFormationFailure(in String failureReason); + oneway void onGroupFormationSuccess(); + oneway void onGroupRemoved(in String groupIfname, in boolean isGroupOwner); + oneway void onGroupStarted(in String groupIfname, in boolean isGroupOwner, in byte[] ssid, in int frequency, in byte[] psk, in String passphrase, in byte[] goDeviceAddress, in boolean isPersistent); + oneway void onInvitationReceived(in byte[] srcAddress, in byte[] goDeviceAddress, in byte[] bssid, in int persistentNetworkId, in int operatingFrequency); + oneway void onInvitationResult(in byte[] bssid, in android.hardware.wifi.supplicant.P2pStatusCode status); + oneway void onProvisionDiscoveryCompleted(in byte[] p2pDeviceAddress, in boolean isRequest, in android.hardware.wifi.supplicant.P2pProvDiscStatusCode status, in android.hardware.wifi.supplicant.WpsConfigMethods configMethods, in String generatedPin); + oneway void onR2DeviceFound(in byte[] srcAddress, in byte[] p2pDeviceAddress, in byte[] primaryDeviceType, in String deviceName, in android.hardware.wifi.supplicant.WpsConfigMethods configMethods, in byte deviceCapabilities, in android.hardware.wifi.supplicant.P2pGroupCapabilityMask groupCapabilities, in byte[] wfdDeviceInfo, in byte[] wfdR2DeviceInfo); + oneway void onServiceDiscoveryResponse(in byte[] srcAddress, in char updateIndicator, in byte[] tlvs); + oneway void onStaAuthorized(in byte[] srcAddress, in byte[] p2pDeviceAddress); + oneway void onStaDeauthorized(in byte[] srcAddress, in byte[] p2pDeviceAddress); +} diff --git a/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/ISupplicantP2pNetwork.aidl b/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/ISupplicantP2pNetwork.aidl new file mode 100644 index 0000000000..ef72724642 --- /dev/null +++ b/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/ISupplicantP2pNetwork.aidl @@ -0,0 +1,47 @@ +/* + * 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. + */ +/////////////////////////////////////////////////////////////////////////////// +// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. // +/////////////////////////////////////////////////////////////////////////////// + +// This file is a snapshot of an AIDL file. Do not edit it manually. There are +// two cases: +// 1). this is a frozen version file - do not edit this in any case. +// 2). this is a 'current' file. If you make a backwards compatible change to +// the interface (from the latest frozen version), the build system will +// prompt you to update this file with `m -update-api`. +// +// You must not make a backward incompatible change to any AIDL file built +// with the aidl_interface module type with versions property set. The module +// type is used to build AIDL files in a way that they can be used across +// independently updatable components of the system. If a device is shipped +// with such a backward incompatible change, it has a high risk of breaking +// later when a module using the interface is updated, e.g., Mainline modules. + +package android.hardware.wifi.supplicant; +@VintfStability +interface ISupplicantP2pNetwork { + byte[] getBssid(); + android.hardware.wifi.supplicant.MacAddress[] getClientList(); + int getId(); + String getInterfaceName(); + byte[] getSsid(); + android.hardware.wifi.supplicant.IfaceType getType(); + boolean isCurrent(); + boolean isGroupOwner(); + boolean isPersistent(); + void setClientList(in android.hardware.wifi.supplicant.MacAddress[] clients); +} diff --git a/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/ISupplicantStaIface.aidl b/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/ISupplicantStaIface.aidl new file mode 100644 index 0000000000..ca40379710 --- /dev/null +++ b/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/ISupplicantStaIface.aidl @@ -0,0 +1,93 @@ +/* + * 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. + */ +/////////////////////////////////////////////////////////////////////////////// +// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. // +/////////////////////////////////////////////////////////////////////////////// + +// This file is a snapshot of an AIDL file. Do not edit it manually. There are +// two cases: +// 1). this is a frozen version file - do not edit this in any case. +// 2). this is a 'current' file. If you make a backwards compatible change to +// the interface (from the latest frozen version), the build system will +// prompt you to update this file with `m -update-api`. +// +// You must not make a backward incompatible change to any AIDL file built +// with the aidl_interface module type with versions property set. The module +// type is used to build AIDL files in a way that they can be used across +// independently updatable components of the system. If a device is shipped +// with such a backward incompatible change, it has a high risk of breaking +// later when a module using the interface is updated, e.g., Mainline modules. + +package android.hardware.wifi.supplicant; +@VintfStability +interface ISupplicantStaIface { + int addDppPeerUri(in String uri); + int addExtRadioWork(in String name, in int freqInMhz, in int timeoutInSec); + android.hardware.wifi.supplicant.ISupplicantStaNetwork addNetwork(); + void addRxFilter(in android.hardware.wifi.supplicant.RxFilterType type); + void cancelWps(); + void disconnect(); + void enableAutoReconnect(in boolean enable); + void filsHlpAddRequest(in byte[] dst_mac, in byte[] pkt); + void filsHlpFlushRequest(); + android.hardware.wifi.supplicant.DppResponderBootstrapInfo generateDppBootstrapInfoForResponder(in byte[] macAddress, in String deviceInfo, in android.hardware.wifi.supplicant.DppCurve curve); + android.hardware.wifi.supplicant.ConnectionCapabilities getConnectionCapabilities(); + android.hardware.wifi.supplicant.KeyMgmtMask getKeyMgmtCapabilities(); + byte[] getMacAddress(); + String getName(); + android.hardware.wifi.supplicant.ISupplicantStaNetwork getNetwork(in int id); + android.hardware.wifi.supplicant.IfaceType getType(); + android.hardware.wifi.supplicant.WpaDriverCapabilitiesMask getWpaDriverCapabilities(); + void initiateAnqpQuery(in byte[] macAddress, in android.hardware.wifi.supplicant.AnqpInfoId[] infoElements, in android.hardware.wifi.supplicant.Hs20AnqpSubtypes[] subTypes); + void initiateHs20IconQuery(in byte[] macAddress, in String fileName); + void initiateTdlsDiscover(in byte[] macAddress); + void initiateTdlsSetup(in byte[] macAddress); + void initiateTdlsTeardown(in byte[] macAddress); + void initiateVenueUrlAnqpQuery(in byte[] macAddress); + int[] listNetworks(); + void reassociate(); + void reconnect(); + void registerCallback(in android.hardware.wifi.supplicant.ISupplicantStaIfaceCallback callback); + void removeDppUri(in int id); + void removeExtRadioWork(in int id); + void removeNetwork(in int id); + void removeRxFilter(in android.hardware.wifi.supplicant.RxFilterType type); + void setBtCoexistenceMode(in android.hardware.wifi.supplicant.BtCoexistenceMode mode); + void setBtCoexistenceScanModeEnabled(in boolean enable); + void setCountryCode(in byte[] code); + void setExternalSim(in boolean useExternalSim); + void setMboCellularDataStatus(in boolean available); + void setPowerSave(in boolean enable); + void setSuspendModeEnabled(in boolean enable); + void setWpsConfigMethods(in android.hardware.wifi.supplicant.WpsConfigMethods configMethods); + void setWpsDeviceName(in String name); + void setWpsDeviceType(in byte[] type); + void setWpsManufacturer(in String manufacturer); + void setWpsModelName(in String modelName); + void setWpsModelNumber(in String modelNumber); + void setWpsSerialNumber(in String serialNumber); + void startDppConfiguratorInitiator(in int peerBootstrapId, in int ownBootstrapId, in String ssid, in String password, in String psk, in android.hardware.wifi.supplicant.DppNetRole netRole, in android.hardware.wifi.supplicant.DppAkm securityAkm); + void startDppEnrolleeInitiator(in int peerBootstrapId, in int ownBootstrapId); + void startDppEnrolleeResponder(in int listenChannel); + void startRxFilter(); + void startWpsPbc(in byte[] bssid); + String startWpsPinDisplay(in byte[] bssid); + void startWpsPinKeypad(in String pin); + void startWpsRegistrar(in byte[] bssid, in String pin); + void stopDppInitiator(); + void stopDppResponder(in int ownBootstrapId); + void stopRxFilter(); +} diff --git a/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/ISupplicantStaIfaceCallback.aidl b/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/ISupplicantStaIfaceCallback.aidl new file mode 100644 index 0000000000..37b34cf3f7 --- /dev/null +++ b/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/ISupplicantStaIfaceCallback.aidl @@ -0,0 +1,63 @@ +/* + * 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. + */ +/////////////////////////////////////////////////////////////////////////////// +// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. // +/////////////////////////////////////////////////////////////////////////////// + +// This file is a snapshot of an AIDL file. Do not edit it manually. There are +// two cases: +// 1). this is a frozen version file - do not edit this in any case. +// 2). this is a 'current' file. If you make a backwards compatible change to +// the interface (from the latest frozen version), the build system will +// prompt you to update this file with `m -update-api`. +// +// You must not make a backward incompatible change to any AIDL file built +// with the aidl_interface module type with versions property set. The module +// type is used to build AIDL files in a way that they can be used across +// independently updatable components of the system. If a device is shipped +// with such a backward incompatible change, it has a high risk of breaking +// later when a module using the interface is updated, e.g., Mainline modules. + +package android.hardware.wifi.supplicant; +@VintfStability +interface ISupplicantStaIfaceCallback { + oneway void onAnqpQueryDone(in byte[] bssid, in android.hardware.wifi.supplicant.AnqpData data, in android.hardware.wifi.supplicant.Hs20AnqpData hs20Data); + oneway void onAssociationRejected(in android.hardware.wifi.supplicant.AssociationRejectionData assocRejectData); + oneway void onAuthenticationTimeout(in byte[] bssid); + oneway void onBssTmHandlingDone(in android.hardware.wifi.supplicant.BssTmData tmData); + oneway void onBssidChanged(in android.hardware.wifi.supplicant.BssidChangeReason reason, in byte[] bssid); + oneway void onDisconnected(in byte[] bssid, in boolean locallyGenerated, in android.hardware.wifi.supplicant.StaIfaceReasonCode reasonCode); + oneway void onDppFailure(in android.hardware.wifi.supplicant.DppFailureCode code, in String ssid, in String channelList, in char[] bandList); + oneway void onDppProgress(in android.hardware.wifi.supplicant.DppProgressCode code); + oneway void onDppSuccess(in android.hardware.wifi.supplicant.DppEventType event); + oneway void onDppSuccessConfigReceived(in byte[] ssid, in String password, in byte[] psk, in android.hardware.wifi.supplicant.DppAkm securityAkm); + oneway void onDppSuccessConfigSent(); + oneway void onEapFailure(in int errorCode); + oneway void onExtRadioWorkStart(in int id); + oneway void onExtRadioWorkTimeout(in int id); + oneway void onHs20DeauthImminentNotice(in byte[] bssid, in int reasonCode, in int reAuthDelayInSec, in String url); + oneway void onHs20IconQueryDone(in byte[] bssid, in String fileName, in byte[] data); + oneway void onHs20SubscriptionRemediation(in byte[] bssid, in android.hardware.wifi.supplicant.OsuMethod osuMethod, in String url); + oneway void onHs20TermsAndConditionsAcceptanceRequestedNotification(in byte[] bssid, in String url); + oneway void onNetworkAdded(in int id); + oneway void onNetworkNotFound(in byte[] ssid); + oneway void onNetworkRemoved(in int id); + oneway void onPmkCacheAdded(in long expirationTimeInSec, in byte[] serializedEntry); + oneway void onStateChanged(in android.hardware.wifi.supplicant.StaIfaceCallbackState newState, in byte[] bssid, in int id, in byte[] ssid, in boolean filsHlpSent); + oneway void onWpsEventFail(in byte[] bssid, in android.hardware.wifi.supplicant.WpsConfigError configError, in android.hardware.wifi.supplicant.WpsErrorIndication errorInd); + oneway void onWpsEventPbcOverlap(); + oneway void onWpsEventSuccess(); +} diff --git a/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/ISupplicantStaNetwork.aidl b/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/ISupplicantStaNetwork.aidl new file mode 100644 index 0000000000..18baea6961 --- /dev/null +++ b/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/ISupplicantStaNetwork.aidl @@ -0,0 +1,134 @@ +/* + * 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. + */ +/////////////////////////////////////////////////////////////////////////////// +// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. // +/////////////////////////////////////////////////////////////////////////////// + +// This file is a snapshot of an AIDL file. Do not edit it manually. There are +// two cases: +// 1). this is a frozen version file - do not edit this in any case. +// 2). this is a 'current' file. If you make a backwards compatible change to +// the interface (from the latest frozen version), the build system will +// prompt you to update this file with `m -update-api`. +// +// You must not make a backward incompatible change to any AIDL file built +// with the aidl_interface module type with versions property set. The module +// type is used to build AIDL files in a way that they can be used across +// independently updatable components of the system. If a device is shipped +// with such a backward incompatible change, it has a high risk of breaking +// later when a module using the interface is updated, e.g., Mainline modules. + +package android.hardware.wifi.supplicant; +@VintfStability +interface ISupplicantStaNetwork { + void disable(); + void enable(in boolean noConnect); + void enableSaePkOnlyMode(in boolean enable); + void enableSuiteBEapOpenSslCiphers(); + void enableTlsSuiteBEapPhase1Param(in boolean enable); + android.hardware.wifi.supplicant.AuthAlgMask getAuthAlg(); + byte[] getBssid(); + String getEapAltSubjectMatch(); + byte[] getEapAnonymousIdentity(); + String getEapCACert(); + String getEapCAPath(); + String getEapClientCert(); + String getEapDomainSuffixMatch(); + boolean getEapEngine(); + String getEapEngineId(); + byte[] getEapIdentity(); + android.hardware.wifi.supplicant.EapMethod getEapMethod(); + byte[] getEapPassword(); + android.hardware.wifi.supplicant.EapPhase2Method getEapPhase2Method(); + String getEapPrivateKeyId(); + String getEapSubjectMatch(); + boolean getEdmg(); + android.hardware.wifi.supplicant.GroupCipherMask getGroupCipher(); + android.hardware.wifi.supplicant.GroupMgmtCipherMask getGroupMgmtCipher(); + int getId(); + String getIdStr(); + String getInterfaceName(); + android.hardware.wifi.supplicant.KeyMgmtMask getKeyMgmt(); + android.hardware.wifi.supplicant.OcspType getOcsp(); + android.hardware.wifi.supplicant.PairwiseCipherMask getPairwiseCipher(); + android.hardware.wifi.supplicant.ProtoMask getProto(); + byte[] getPsk(); + String getPskPassphrase(); + boolean getRequirePmf(); + String getSaePassword(); + String getSaePasswordId(); + boolean getScanSsid(); + byte[] getSsid(); + android.hardware.wifi.supplicant.IfaceType getType(); + String getWapiCertSuite(); + byte[] getWepKey(in int keyIdx); + int getWepTxKeyIdx(); + byte[] getWpsNfcConfigurationToken(); + void registerCallback(in android.hardware.wifi.supplicant.ISupplicantStaNetworkCallback callback); + void select(); + void sendNetworkEapIdentityResponse(in byte[] identity, in byte[] encryptedIdentity); + void sendNetworkEapSimGsmAuthFailure(); + void sendNetworkEapSimGsmAuthResponse(in android.hardware.wifi.supplicant.NetworkResponseEapSimGsmAuthParams[] params); + void sendNetworkEapSimUmtsAuthFailure(); + void sendNetworkEapSimUmtsAuthResponse(in android.hardware.wifi.supplicant.NetworkResponseEapSimUmtsAuthParams params); + void sendNetworkEapSimUmtsAutsResponse(in byte[] auts); + void setAuthAlg(in android.hardware.wifi.supplicant.AuthAlgMask authAlgMask); + void setBssid(in byte[] bssid); + void setEapAltSubjectMatch(in String match); + void setEapAnonymousIdentity(in byte[] identity); + void setEapCACert(in String path); + void setEapCAPath(in String path); + void setEapClientCert(in String path); + void setEapDomainSuffixMatch(in String match); + void setEapEncryptedImsiIdentity(in byte[] identity); + void setEapEngine(in boolean enable); + void setEapEngineID(in String id); + void setEapErp(in boolean enable); + void setEapIdentity(in byte[] identity); + void setEapMethod(in android.hardware.wifi.supplicant.EapMethod method); + void setEapPassword(in byte[] password); + void setEapPhase2Method(in android.hardware.wifi.supplicant.EapPhase2Method method); + void setEapPrivateKeyId(in String id); + void setEapSubjectMatch(in String match); + void setEdmg(in boolean enable); + void setGroupCipher(in android.hardware.wifi.supplicant.GroupCipherMask groupCipherMask); + void setGroupMgmtCipher(in android.hardware.wifi.supplicant.GroupMgmtCipherMask groupMgmtCipherMask); + void setIdStr(in String idStr); + void setKeyMgmt(in android.hardware.wifi.supplicant.KeyMgmtMask keyMgmtMask); + void setOcsp(in android.hardware.wifi.supplicant.OcspType ocspType); + void setPairwiseCipher(in android.hardware.wifi.supplicant.PairwiseCipherMask pairwiseCipherMask); + void setPmkCache(in byte[] serializedEntry); + void setProactiveKeyCaching(in boolean enable); + void setProto(in android.hardware.wifi.supplicant.ProtoMask protoMask); + void setPsk(in byte[] psk); + void setPskPassphrase(in String psk); + void setRequirePmf(in boolean enable); + void setSaeH2eMode(in android.hardware.wifi.supplicant.SaeH2eMode mode); + void setSaePassword(in String saePassword); + void setSaePasswordId(in String saePasswordId); + void setScanSsid(in boolean enable); + void setSsid(in byte[] ssid); + void setUpdateIdentifier(in int id); + void setWapiCertSuite(in String suite); + void setWepKey(in int keyIdx, in byte[] wepKey); + void setWepTxKeyIdx(in int keyIdx); + const int SSID_MAX_LEN_IN_BYTES = 32; + const int PSK_PASSPHRASE_MIN_LEN_IN_BYTES = 8; + const int PSK_PASSPHRASE_MAX_LEN_IN_BYTES = 63; + const int WEP_KEYS_MAX_NUM = 4; + const int WEP40_KEY_LEN_IN_BYTES = 5; + const int WEP104_KEY_LEN_IN_BYTES = 13; +} diff --git a/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/ISupplicantStaNetworkCallback.aidl b/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/ISupplicantStaNetworkCallback.aidl new file mode 100644 index 0000000000..4f7584d938 --- /dev/null +++ b/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/ISupplicantStaNetworkCallback.aidl @@ -0,0 +1,41 @@ +/* + * 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. + */ +/////////////////////////////////////////////////////////////////////////////// +// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. // +/////////////////////////////////////////////////////////////////////////////// + +// This file is a snapshot of an AIDL file. Do not edit it manually. There are +// two cases: +// 1). this is a frozen version file - do not edit this in any case. +// 2). this is a 'current' file. If you make a backwards compatible change to +// the interface (from the latest frozen version), the build system will +// prompt you to update this file with `m -update-api`. +// +// You must not make a backward incompatible change to any AIDL file built +// with the aidl_interface module type with versions property set. The module +// type is used to build AIDL files in a way that they can be used across +// independently updatable components of the system. If a device is shipped +// with such a backward incompatible change, it has a high risk of breaking +// later when a module using the interface is updated, e.g., Mainline modules. + +package android.hardware.wifi.supplicant; +@VintfStability +interface ISupplicantStaNetworkCallback { + oneway void onNetworkEapIdentityRequest(); + oneway void onNetworkEapSimGsmAuthRequest(in android.hardware.wifi.supplicant.NetworkRequestEapSimGsmAuthParams params); + oneway void onNetworkEapSimUmtsAuthRequest(in android.hardware.wifi.supplicant.NetworkRequestEapSimUmtsAuthParams params); + oneway void onTransitionDisable(in android.hardware.wifi.supplicant.TransitionDisableIndication ind); +} diff --git a/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/IfaceInfo.aidl b/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/IfaceInfo.aidl new file mode 100644 index 0000000000..6706c8c6ef --- /dev/null +++ b/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/IfaceInfo.aidl @@ -0,0 +1,39 @@ +/* + * 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. + */ +/////////////////////////////////////////////////////////////////////////////// +// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. // +/////////////////////////////////////////////////////////////////////////////// + +// This file is a snapshot of an AIDL file. Do not edit it manually. There are +// two cases: +// 1). this is a frozen version file - do not edit this in any case. +// 2). this is a 'current' file. If you make a backwards compatible change to +// the interface (from the latest frozen version), the build system will +// prompt you to update this file with `m -update-api`. +// +// You must not make a backward incompatible change to any AIDL file built +// with the aidl_interface module type with versions property set. The module +// type is used to build AIDL files in a way that they can be used across +// independently updatable components of the system. If a device is shipped +// with such a backward incompatible change, it has a high risk of breaking +// later when a module using the interface is updated, e.g., Mainline modules. + +package android.hardware.wifi.supplicant; +@VintfStability +parcelable IfaceInfo { + android.hardware.wifi.supplicant.IfaceType type; + String name; +} diff --git a/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/IfaceType.aidl b/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/IfaceType.aidl new file mode 100644 index 0000000000..557dbd7656 --- /dev/null +++ b/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/IfaceType.aidl @@ -0,0 +1,39 @@ +/* + * 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. + */ +/////////////////////////////////////////////////////////////////////////////// +// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. // +/////////////////////////////////////////////////////////////////////////////// + +// This file is a snapshot of an AIDL file. Do not edit it manually. There are +// two cases: +// 1). this is a frozen version file - do not edit this in any case. +// 2). this is a 'current' file. If you make a backwards compatible change to +// the interface (from the latest frozen version), the build system will +// prompt you to update this file with `m -update-api`. +// +// You must not make a backward incompatible change to any AIDL file built +// with the aidl_interface module type with versions property set. The module +// type is used to build AIDL files in a way that they can be used across +// independently updatable components of the system. If a device is shipped +// with such a backward incompatible change, it has a high risk of breaking +// later when a module using the interface is updated, e.g., Mainline modules. + +package android.hardware.wifi.supplicant; +@Backing(type="int") @VintfStability +enum IfaceType { + STA = 0, + P2P = 1, +} diff --git a/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/KeyMgmtMask.aidl b/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/KeyMgmtMask.aidl new file mode 100644 index 0000000000..7228480f56 --- /dev/null +++ b/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/KeyMgmtMask.aidl @@ -0,0 +1,54 @@ +/* + * 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. + */ +/////////////////////////////////////////////////////////////////////////////// +// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. // +/////////////////////////////////////////////////////////////////////////////// + +// This file is a snapshot of an AIDL file. Do not edit it manually. There are +// two cases: +// 1). this is a frozen version file - do not edit this in any case. +// 2). this is a 'current' file. If you make a backwards compatible change to +// the interface (from the latest frozen version), the build system will +// prompt you to update this file with `m -update-api`. +// +// You must not make a backward incompatible change to any AIDL file built +// with the aidl_interface module type with versions property set. The module +// type is used to build AIDL files in a way that they can be used across +// independently updatable components of the system. If a device is shipped +// with such a backward incompatible change, it has a high risk of breaking +// later when a module using the interface is updated, e.g., Mainline modules. + +package android.hardware.wifi.supplicant; +@Backing(type="int") @VintfStability +enum KeyMgmtMask { + WPA_EAP = 1, + WPA_PSK = 2, + NONE = 4, + IEEE8021X = 8, + FT_EAP = 32, + FT_PSK = 64, + OSEN = 32768, + WPA_EAP_SHA256 = 128, + WPA_PSK_SHA256 = 256, + SAE = 1024, + SUITE_B_192 = 131072, + OWE = 4194304, + DPP = 8388608, + WAPI_PSK = 4096, + WAPI_CERT = 8192, + FILS_SHA256 = 262144, + FILS_SHA384 = 524288, +} diff --git a/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/LegacyMode.aidl b/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/LegacyMode.aidl new file mode 100644 index 0000000000..6896d75f7f --- /dev/null +++ b/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/LegacyMode.aidl @@ -0,0 +1,41 @@ +/* + * 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. + */ +/////////////////////////////////////////////////////////////////////////////// +// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. // +/////////////////////////////////////////////////////////////////////////////// + +// This file is a snapshot of an AIDL file. Do not edit it manually. There are +// two cases: +// 1). this is a frozen version file - do not edit this in any case. +// 2). this is a 'current' file. If you make a backwards compatible change to +// the interface (from the latest frozen version), the build system will +// prompt you to update this file with `m -update-api`. +// +// You must not make a backward incompatible change to any AIDL file built +// with the aidl_interface module type with versions property set. The module +// type is used to build AIDL files in a way that they can be used across +// independently updatable components of the system. If a device is shipped +// with such a backward incompatible change, it has a high risk of breaking +// later when a module using the interface is updated, e.g., Mainline modules. + +package android.hardware.wifi.supplicant; +@Backing(type="int") @VintfStability +enum LegacyMode { + UNKNOWN = 0, + A_MODE = 1, + B_MODE = 2, + G_MODE = 3, +} diff --git a/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/MacAddress.aidl b/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/MacAddress.aidl new file mode 100644 index 0000000000..d17930a649 --- /dev/null +++ b/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/MacAddress.aidl @@ -0,0 +1,38 @@ +/* + * 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. + */ +/////////////////////////////////////////////////////////////////////////////// +// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. // +/////////////////////////////////////////////////////////////////////////////// + +// This file is a snapshot of an AIDL file. Do not edit it manually. There are +// two cases: +// 1). this is a frozen version file - do not edit this in any case. +// 2). this is a 'current' file. If you make a backwards compatible change to +// the interface (from the latest frozen version), the build system will +// prompt you to update this file with `m -update-api`. +// +// You must not make a backward incompatible change to any AIDL file built +// with the aidl_interface module type with versions property set. The module +// type is used to build AIDL files in a way that they can be used across +// independently updatable components of the system. If a device is shipped +// with such a backward incompatible change, it has a high risk of breaking +// later when a module using the interface is updated, e.g., Mainline modules. + +package android.hardware.wifi.supplicant; +@VintfStability +parcelable MacAddress { + byte[] data; +} diff --git a/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/MboAssocDisallowedReasonCode.aidl b/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/MboAssocDisallowedReasonCode.aidl new file mode 100644 index 0000000000..661165d062 --- /dev/null +++ b/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/MboAssocDisallowedReasonCode.aidl @@ -0,0 +1,43 @@ +/* + * 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. + */ +/////////////////////////////////////////////////////////////////////////////// +// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. // +/////////////////////////////////////////////////////////////////////////////// + +// This file is a snapshot of an AIDL file. Do not edit it manually. There are +// two cases: +// 1). this is a frozen version file - do not edit this in any case. +// 2). this is a 'current' file. If you make a backwards compatible change to +// the interface (from the latest frozen version), the build system will +// prompt you to update this file with `m -update-api`. +// +// You must not make a backward incompatible change to any AIDL file built +// with the aidl_interface module type with versions property set. The module +// type is used to build AIDL files in a way that they can be used across +// independently updatable components of the system. If a device is shipped +// with such a backward incompatible change, it has a high risk of breaking +// later when a module using the interface is updated, e.g., Mainline modules. + +package android.hardware.wifi.supplicant; +@Backing(type="byte") @VintfStability +enum MboAssocDisallowedReasonCode { + RESERVED = 0, + UNSPECIFIED = 1, + MAX_NUM_STA_ASSOCIATED = 2, + AIR_INTERFACE_OVERLOADED = 3, + AUTH_SERVER_OVERLOADED = 4, + INSUFFICIENT_RSSI = 5, +} diff --git a/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/MboCellularDataConnectionPrefValue.aidl b/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/MboCellularDataConnectionPrefValue.aidl new file mode 100644 index 0000000000..c4024d097b --- /dev/null +++ b/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/MboCellularDataConnectionPrefValue.aidl @@ -0,0 +1,40 @@ +/* + * 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. + */ +/////////////////////////////////////////////////////////////////////////////// +// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. // +/////////////////////////////////////////////////////////////////////////////// + +// This file is a snapshot of an AIDL file. Do not edit it manually. There are +// two cases: +// 1). this is a frozen version file - do not edit this in any case. +// 2). this is a 'current' file. If you make a backwards compatible change to +// the interface (from the latest frozen version), the build system will +// prompt you to update this file with `m -update-api`. +// +// You must not make a backward incompatible change to any AIDL file built +// with the aidl_interface module type with versions property set. The module +// type is used to build AIDL files in a way that they can be used across +// independently updatable components of the system. If a device is shipped +// with such a backward incompatible change, it has a high risk of breaking +// later when a module using the interface is updated, e.g., Mainline modules. + +package android.hardware.wifi.supplicant; +@Backing(type="int") @VintfStability +enum MboCellularDataConnectionPrefValue { + EXCLUDED = 0, + NOT_PREFERRED = 1, + PREFERRED = 255, +} diff --git a/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/MboTransitionReasonCode.aidl b/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/MboTransitionReasonCode.aidl new file mode 100644 index 0000000000..caed0950ee --- /dev/null +++ b/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/MboTransitionReasonCode.aidl @@ -0,0 +1,47 @@ +/* + * 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. + */ +/////////////////////////////////////////////////////////////////////////////// +// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. // +/////////////////////////////////////////////////////////////////////////////// + +// This file is a snapshot of an AIDL file. Do not edit it manually. There are +// two cases: +// 1). this is a frozen version file - do not edit this in any case. +// 2). this is a 'current' file. If you make a backwards compatible change to +// the interface (from the latest frozen version), the build system will +// prompt you to update this file with `m -update-api`. +// +// You must not make a backward incompatible change to any AIDL file built +// with the aidl_interface module type with versions property set. The module +// type is used to build AIDL files in a way that they can be used across +// independently updatable components of the system. If a device is shipped +// with such a backward incompatible change, it has a high risk of breaking +// later when a module using the interface is updated, e.g., Mainline modules. + +package android.hardware.wifi.supplicant; +@Backing(type="byte") @VintfStability +enum MboTransitionReasonCode { + UNSPECIFIED = 0, + EXCESSIVE_FRAME_LOSS = 1, + EXCESSIVE_TRAFFIC_DELAY = 2, + INSUFFICIENT_BANDWIDTH = 3, + LOAD_BALANCING = 4, + LOW_RSSI = 5, + RX_EXCESSIVE_RETRIES = 6, + HIGH_INTERFERENCE = 7, + GRAY_ZONE = 8, + TRANSITION_TO_PREMIUM_AP = 9, +} diff --git a/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/MiracastMode.aidl b/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/MiracastMode.aidl new file mode 100644 index 0000000000..6bc9e4d629 --- /dev/null +++ b/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/MiracastMode.aidl @@ -0,0 +1,40 @@ +/* + * 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. + */ +/////////////////////////////////////////////////////////////////////////////// +// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. // +/////////////////////////////////////////////////////////////////////////////// + +// This file is a snapshot of an AIDL file. Do not edit it manually. There are +// two cases: +// 1). this is a frozen version file - do not edit this in any case. +// 2). this is a 'current' file. If you make a backwards compatible change to +// the interface (from the latest frozen version), the build system will +// prompt you to update this file with `m -update-api`. +// +// You must not make a backward incompatible change to any AIDL file built +// with the aidl_interface module type with versions property set. The module +// type is used to build AIDL files in a way that they can be used across +// independently updatable components of the system. If a device is shipped +// with such a backward incompatible change, it has a high risk of breaking +// later when a module using the interface is updated, e.g., Mainline modules. + +package android.hardware.wifi.supplicant; +@Backing(type="byte") @VintfStability +enum MiracastMode { + DISABLED = 0, + SOURCE = 1, + SINK = 2, +} diff --git a/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/NetworkRequestEapSimGsmAuthParams.aidl b/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/NetworkRequestEapSimGsmAuthParams.aidl new file mode 100644 index 0000000000..1f03bb84c7 --- /dev/null +++ b/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/NetworkRequestEapSimGsmAuthParams.aidl @@ -0,0 +1,38 @@ +/* + * 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. + */ +/////////////////////////////////////////////////////////////////////////////// +// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. // +/////////////////////////////////////////////////////////////////////////////// + +// This file is a snapshot of an AIDL file. Do not edit it manually. There are +// two cases: +// 1). this is a frozen version file - do not edit this in any case. +// 2). this is a 'current' file. If you make a backwards compatible change to +// the interface (from the latest frozen version), the build system will +// prompt you to update this file with `m -update-api`. +// +// You must not make a backward incompatible change to any AIDL file built +// with the aidl_interface module type with versions property set. The module +// type is used to build AIDL files in a way that they can be used across +// independently updatable components of the system. If a device is shipped +// with such a backward incompatible change, it has a high risk of breaking +// later when a module using the interface is updated, e.g., Mainline modules. + +package android.hardware.wifi.supplicant; +@VintfStability +parcelable NetworkRequestEapSimGsmAuthParams { + android.hardware.wifi.supplicant.GsmRand[] rands; +} diff --git a/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/NetworkRequestEapSimUmtsAuthParams.aidl b/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/NetworkRequestEapSimUmtsAuthParams.aidl new file mode 100644 index 0000000000..956a799b7d --- /dev/null +++ b/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/NetworkRequestEapSimUmtsAuthParams.aidl @@ -0,0 +1,39 @@ +/* + * 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. + */ +/////////////////////////////////////////////////////////////////////////////// +// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. // +/////////////////////////////////////////////////////////////////////////////// + +// This file is a snapshot of an AIDL file. Do not edit it manually. There are +// two cases: +// 1). this is a frozen version file - do not edit this in any case. +// 2). this is a 'current' file. If you make a backwards compatible change to +// the interface (from the latest frozen version), the build system will +// prompt you to update this file with `m -update-api`. +// +// You must not make a backward incompatible change to any AIDL file built +// with the aidl_interface module type with versions property set. The module +// type is used to build AIDL files in a way that they can be used across +// independently updatable components of the system. If a device is shipped +// with such a backward incompatible change, it has a high risk of breaking +// later when a module using the interface is updated, e.g., Mainline modules. + +package android.hardware.wifi.supplicant; +@VintfStability +parcelable NetworkRequestEapSimUmtsAuthParams { + byte[] rand; + byte[] autn; +} diff --git a/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/NetworkResponseEapSimGsmAuthParams.aidl b/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/NetworkResponseEapSimGsmAuthParams.aidl new file mode 100644 index 0000000000..29415b739d --- /dev/null +++ b/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/NetworkResponseEapSimGsmAuthParams.aidl @@ -0,0 +1,39 @@ +/* + * 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. + */ +/////////////////////////////////////////////////////////////////////////////// +// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. // +/////////////////////////////////////////////////////////////////////////////// + +// This file is a snapshot of an AIDL file. Do not edit it manually. There are +// two cases: +// 1). this is a frozen version file - do not edit this in any case. +// 2). this is a 'current' file. If you make a backwards compatible change to +// the interface (from the latest frozen version), the build system will +// prompt you to update this file with `m -update-api`. +// +// You must not make a backward incompatible change to any AIDL file built +// with the aidl_interface module type with versions property set. The module +// type is used to build AIDL files in a way that they can be used across +// independently updatable components of the system. If a device is shipped +// with such a backward incompatible change, it has a high risk of breaking +// later when a module using the interface is updated, e.g., Mainline modules. + +package android.hardware.wifi.supplicant; +@VintfStability +parcelable NetworkResponseEapSimGsmAuthParams { + byte[] kc; + byte[] sres; +} diff --git a/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/NetworkResponseEapSimUmtsAuthParams.aidl b/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/NetworkResponseEapSimUmtsAuthParams.aidl new file mode 100644 index 0000000000..4e58dd8261 --- /dev/null +++ b/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/NetworkResponseEapSimUmtsAuthParams.aidl @@ -0,0 +1,40 @@ +/* + * 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. + */ +/////////////////////////////////////////////////////////////////////////////// +// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. // +/////////////////////////////////////////////////////////////////////////////// + +// This file is a snapshot of an AIDL file. Do not edit it manually. There are +// two cases: +// 1). this is a frozen version file - do not edit this in any case. +// 2). this is a 'current' file. If you make a backwards compatible change to +// the interface (from the latest frozen version), the build system will +// prompt you to update this file with `m -update-api`. +// +// You must not make a backward incompatible change to any AIDL file built +// with the aidl_interface module type with versions property set. The module +// type is used to build AIDL files in a way that they can be used across +// independently updatable components of the system. If a device is shipped +// with such a backward incompatible change, it has a high risk of breaking +// later when a module using the interface is updated, e.g., Mainline modules. + +package android.hardware.wifi.supplicant; +@VintfStability +parcelable NetworkResponseEapSimUmtsAuthParams { + byte[] res; + byte[] ik; + byte[] ck; +} diff --git a/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/OceRssiBasedAssocRejectAttr.aidl b/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/OceRssiBasedAssocRejectAttr.aidl new file mode 100644 index 0000000000..95a95bc543 --- /dev/null +++ b/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/OceRssiBasedAssocRejectAttr.aidl @@ -0,0 +1,39 @@ +/* + * 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. + */ +/////////////////////////////////////////////////////////////////////////////// +// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. // +/////////////////////////////////////////////////////////////////////////////// + +// This file is a snapshot of an AIDL file. Do not edit it manually. There are +// two cases: +// 1). this is a frozen version file - do not edit this in any case. +// 2). this is a 'current' file. If you make a backwards compatible change to +// the interface (from the latest frozen version), the build system will +// prompt you to update this file with `m -update-api`. +// +// You must not make a backward incompatible change to any AIDL file built +// with the aidl_interface module type with versions property set. The module +// type is used to build AIDL files in a way that they can be used across +// independently updatable components of the system. If a device is shipped +// with such a backward incompatible change, it has a high risk of breaking +// later when a module using the interface is updated, e.g., Mainline modules. + +package android.hardware.wifi.supplicant; +@VintfStability +parcelable OceRssiBasedAssocRejectAttr { + int deltaRssi; + int retryDelayS; +} diff --git a/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/OcspType.aidl b/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/OcspType.aidl new file mode 100644 index 0000000000..89de811b04 --- /dev/null +++ b/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/OcspType.aidl @@ -0,0 +1,41 @@ +/* + * 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. + */ +/////////////////////////////////////////////////////////////////////////////// +// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. // +/////////////////////////////////////////////////////////////////////////////// + +// This file is a snapshot of an AIDL file. Do not edit it manually. There are +// two cases: +// 1). this is a frozen version file - do not edit this in any case. +// 2). this is a 'current' file. If you make a backwards compatible change to +// the interface (from the latest frozen version), the build system will +// prompt you to update this file with `m -update-api`. +// +// You must not make a backward incompatible change to any AIDL file built +// with the aidl_interface module type with versions property set. The module +// type is used to build AIDL files in a way that they can be used across +// independently updatable components of the system. If a device is shipped +// with such a backward incompatible change, it has a high risk of breaking +// later when a module using the interface is updated, e.g., Mainline modules. + +package android.hardware.wifi.supplicant; +@Backing(type="int") @VintfStability +enum OcspType { + NONE = 0, + REQUEST_CERT_STATUS = 1, + REQUIRE_CERT_STATUS = 2, + REQUIRE_ALL_CERTS_STATUS = 3, +} diff --git a/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/OsuMethod.aidl b/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/OsuMethod.aidl new file mode 100644 index 0000000000..1b99e2f157 --- /dev/null +++ b/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/OsuMethod.aidl @@ -0,0 +1,39 @@ +/* + * 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. + */ +/////////////////////////////////////////////////////////////////////////////// +// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. // +/////////////////////////////////////////////////////////////////////////////// + +// This file is a snapshot of an AIDL file. Do not edit it manually. There are +// two cases: +// 1). this is a frozen version file - do not edit this in any case. +// 2). this is a 'current' file. If you make a backwards compatible change to +// the interface (from the latest frozen version), the build system will +// prompt you to update this file with `m -update-api`. +// +// You must not make a backward incompatible change to any AIDL file built +// with the aidl_interface module type with versions property set. The module +// type is used to build AIDL files in a way that they can be used across +// independently updatable components of the system. If a device is shipped +// with such a backward incompatible change, it has a high risk of breaking +// later when a module using the interface is updated, e.g., Mainline modules. + +package android.hardware.wifi.supplicant; +@Backing(type="byte") @VintfStability +enum OsuMethod { + OMA_DM = 0, + SOAP_XML_SPP = 1, +} diff --git a/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/P2pGroupCapabilityMask.aidl b/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/P2pGroupCapabilityMask.aidl new file mode 100644 index 0000000000..ffee12c1bc --- /dev/null +++ b/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/P2pGroupCapabilityMask.aidl @@ -0,0 +1,44 @@ +/* + * 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. + */ +/////////////////////////////////////////////////////////////////////////////// +// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. // +/////////////////////////////////////////////////////////////////////////////// + +// This file is a snapshot of an AIDL file. Do not edit it manually. There are +// two cases: +// 1). this is a frozen version file - do not edit this in any case. +// 2). this is a 'current' file. If you make a backwards compatible change to +// the interface (from the latest frozen version), the build system will +// prompt you to update this file with `m -update-api`. +// +// You must not make a backward incompatible change to any AIDL file built +// with the aidl_interface module type with versions property set. The module +// type is used to build AIDL files in a way that they can be used across +// independently updatable components of the system. If a device is shipped +// with such a backward incompatible change, it has a high risk of breaking +// later when a module using the interface is updated, e.g., Mainline modules. + +package android.hardware.wifi.supplicant; +@Backing(type="int") @VintfStability +enum P2pGroupCapabilityMask { + GROUP_OWNER = 1, + PERSISTENT_GROUP = 2, + GROUP_LIMIT = 4, + INTRA_BSS_DIST = 8, + CROSS_CONN = 16, + PERSISTENT_RECONN = 32, + GROUP_FORMATION = 64, +} diff --git a/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/P2pProvDiscStatusCode.aidl b/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/P2pProvDiscStatusCode.aidl new file mode 100644 index 0000000000..c8e53b93c1 --- /dev/null +++ b/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/P2pProvDiscStatusCode.aidl @@ -0,0 +1,42 @@ +/* + * 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. + */ +/////////////////////////////////////////////////////////////////////////////// +// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. // +/////////////////////////////////////////////////////////////////////////////// + +// This file is a snapshot of an AIDL file. Do not edit it manually. There are +// two cases: +// 1). this is a frozen version file - do not edit this in any case. +// 2). this is a 'current' file. If you make a backwards compatible change to +// the interface (from the latest frozen version), the build system will +// prompt you to update this file with `m -update-api`. +// +// You must not make a backward incompatible change to any AIDL file built +// with the aidl_interface module type with versions property set. The module +// type is used to build AIDL files in a way that they can be used across +// independently updatable components of the system. If a device is shipped +// with such a backward incompatible change, it has a high risk of breaking +// later when a module using the interface is updated, e.g., Mainline modules. + +package android.hardware.wifi.supplicant; +@Backing(type="byte") @VintfStability +enum P2pProvDiscStatusCode { + SUCCESS = 0, + TIMEOUT = 1, + REJECTED = 2, + TIMEOUT_JOIN = 3, + INFO_UNAVAILABLE = 4, +} diff --git a/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/P2pStatusCode.aidl b/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/P2pStatusCode.aidl new file mode 100644 index 0000000000..c7ad3832c7 --- /dev/null +++ b/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/P2pStatusCode.aidl @@ -0,0 +1,50 @@ +/* + * 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. + */ +/////////////////////////////////////////////////////////////////////////////// +// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. // +/////////////////////////////////////////////////////////////////////////////// + +// This file is a snapshot of an AIDL file. Do not edit it manually. There are +// two cases: +// 1). this is a frozen version file - do not edit this in any case. +// 2). this is a 'current' file. If you make a backwards compatible change to +// the interface (from the latest frozen version), the build system will +// prompt you to update this file with `m -update-api`. +// +// You must not make a backward incompatible change to any AIDL file built +// with the aidl_interface module type with versions property set. The module +// type is used to build AIDL files in a way that they can be used across +// independently updatable components of the system. If a device is shipped +// with such a backward incompatible change, it has a high risk of breaking +// later when a module using the interface is updated, e.g., Mainline modules. + +package android.hardware.wifi.supplicant; +@Backing(type="int") @VintfStability +enum P2pStatusCode { + SUCCESS = 0, + FAIL_INFO_CURRENTLY_UNAVAILABLE = 1, + FAIL_INCOMPATIBLE_PARAMS = 2, + FAIL_LIMIT_REACHED = 3, + FAIL_INVALID_PARAMS = 4, + FAIL_UNABLE_TO_ACCOMMODATE = 5, + FAIL_PREV_PROTOCOL_ERROR = 6, + FAIL_NO_COMMON_CHANNELS = 7, + FAIL_UNKNOWN_GROUP = 8, + FAIL_BOTH_GO_INTENT_15 = 9, + FAIL_INCOMPATIBLE_PROV_METHOD = 10, + FAIL_REJECTED_BY_USER = 11, + SUCCESS_DEFERRED = 12, +} diff --git a/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/PairwiseCipherMask.aidl b/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/PairwiseCipherMask.aidl new file mode 100644 index 0000000000..d9b00e1261 --- /dev/null +++ b/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/PairwiseCipherMask.aidl @@ -0,0 +1,43 @@ +/* + * 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. + */ +/////////////////////////////////////////////////////////////////////////////// +// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. // +/////////////////////////////////////////////////////////////////////////////// + +// This file is a snapshot of an AIDL file. Do not edit it manually. There are +// two cases: +// 1). this is a frozen version file - do not edit this in any case. +// 2). this is a 'current' file. If you make a backwards compatible change to +// the interface (from the latest frozen version), the build system will +// prompt you to update this file with `m -update-api`. +// +// You must not make a backward incompatible change to any AIDL file built +// with the aidl_interface module type with versions property set. The module +// type is used to build AIDL files in a way that they can be used across +// independently updatable components of the system. If a device is shipped +// with such a backward incompatible change, it has a high risk of breaking +// later when a module using the interface is updated, e.g., Mainline modules. + +package android.hardware.wifi.supplicant; +@Backing(type="int") @VintfStability +enum PairwiseCipherMask { + NONE = 1, + TKIP = 8, + CCMP = 16, + GCMP_128 = 64, + SMS4 = 128, + GCMP_256 = 256, +} diff --git a/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/ProtoMask.aidl b/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/ProtoMask.aidl new file mode 100644 index 0000000000..de9242835e --- /dev/null +++ b/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/ProtoMask.aidl @@ -0,0 +1,41 @@ +/* + * 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. + */ +/////////////////////////////////////////////////////////////////////////////// +// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. // +/////////////////////////////////////////////////////////////////////////////// + +// This file is a snapshot of an AIDL file. Do not edit it manually. There are +// two cases: +// 1). this is a frozen version file - do not edit this in any case. +// 2). this is a 'current' file. If you make a backwards compatible change to +// the interface (from the latest frozen version), the build system will +// prompt you to update this file with `m -update-api`. +// +// You must not make a backward incompatible change to any AIDL file built +// with the aidl_interface module type with versions property set. The module +// type is used to build AIDL files in a way that they can be used across +// independently updatable components of the system. If a device is shipped +// with such a backward incompatible change, it has a high risk of breaking +// later when a module using the interface is updated, e.g., Mainline modules. + +package android.hardware.wifi.supplicant; +@Backing(type="int") @VintfStability +enum ProtoMask { + WPA = 1, + RSN = 2, + WAPI = 4, + OSEN = 8, +} diff --git a/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/RxFilterType.aidl b/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/RxFilterType.aidl new file mode 100644 index 0000000000..63f5bf2c45 --- /dev/null +++ b/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/RxFilterType.aidl @@ -0,0 +1,39 @@ +/* + * 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. + */ +/////////////////////////////////////////////////////////////////////////////// +// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. // +/////////////////////////////////////////////////////////////////////////////// + +// This file is a snapshot of an AIDL file. Do not edit it manually. There are +// two cases: +// 1). this is a frozen version file - do not edit this in any case. +// 2). this is a 'current' file. If you make a backwards compatible change to +// the interface (from the latest frozen version), the build system will +// prompt you to update this file with `m -update-api`. +// +// You must not make a backward incompatible change to any AIDL file built +// with the aidl_interface module type with versions property set. The module +// type is used to build AIDL files in a way that they can be used across +// independently updatable components of the system. If a device is shipped +// with such a backward incompatible change, it has a high risk of breaking +// later when a module using the interface is updated, e.g., Mainline modules. + +package android.hardware.wifi.supplicant; +@Backing(type="byte") @VintfStability +enum RxFilterType { + V4_MULTICAST = 0, + V6_MULTICAST = 1, +} diff --git a/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/SaeH2eMode.aidl b/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/SaeH2eMode.aidl new file mode 100644 index 0000000000..978c3375f7 --- /dev/null +++ b/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/SaeH2eMode.aidl @@ -0,0 +1,40 @@ +/* + * 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. + */ +/////////////////////////////////////////////////////////////////////////////// +// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. // +/////////////////////////////////////////////////////////////////////////////// + +// This file is a snapshot of an AIDL file. Do not edit it manually. There are +// two cases: +// 1). this is a frozen version file - do not edit this in any case. +// 2). this is a 'current' file. If you make a backwards compatible change to +// the interface (from the latest frozen version), the build system will +// prompt you to update this file with `m -update-api`. +// +// You must not make a backward incompatible change to any AIDL file built +// with the aidl_interface module type with versions property set. The module +// type is used to build AIDL files in a way that they can be used across +// independently updatable components of the system. If a device is shipped +// with such a backward incompatible change, it has a high risk of breaking +// later when a module using the interface is updated, e.g., Mainline modules. + +package android.hardware.wifi.supplicant; +@Backing(type="byte") @VintfStability +enum SaeH2eMode { + DISABLED = 0, + H2E_OPTIONAL = 1, + H2E_MANDATORY = 2, +} diff --git a/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/StaIfaceCallbackState.aidl b/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/StaIfaceCallbackState.aidl new file mode 100644 index 0000000000..d78cfa2f28 --- /dev/null +++ b/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/StaIfaceCallbackState.aidl @@ -0,0 +1,47 @@ +/* + * 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. + */ +/////////////////////////////////////////////////////////////////////////////// +// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. // +/////////////////////////////////////////////////////////////////////////////// + +// This file is a snapshot of an AIDL file. Do not edit it manually. There are +// two cases: +// 1). this is a frozen version file - do not edit this in any case. +// 2). this is a 'current' file. If you make a backwards compatible change to +// the interface (from the latest frozen version), the build system will +// prompt you to update this file with `m -update-api`. +// +// You must not make a backward incompatible change to any AIDL file built +// with the aidl_interface module type with versions property set. The module +// type is used to build AIDL files in a way that they can be used across +// independently updatable components of the system. If a device is shipped +// with such a backward incompatible change, it has a high risk of breaking +// later when a module using the interface is updated, e.g., Mainline modules. + +package android.hardware.wifi.supplicant; +@Backing(type="int") @VintfStability +enum StaIfaceCallbackState { + DISCONNECTED = 0, + IFACE_DISABLED = 1, + INACTIVE = 2, + SCANNING = 3, + AUTHENTICATING = 4, + ASSOCIATING = 5, + ASSOCIATED = 6, + FOURWAY_HANDSHAKE = 7, + GROUP_HANDSHAKE = 8, + COMPLETED = 9, +} diff --git a/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/StaIfaceReasonCode.aidl b/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/StaIfaceReasonCode.aidl new file mode 100644 index 0000000000..f26e7c5393 --- /dev/null +++ b/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/StaIfaceReasonCode.aidl @@ -0,0 +1,98 @@ +/* + * 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. + */ +/////////////////////////////////////////////////////////////////////////////// +// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. // +/////////////////////////////////////////////////////////////////////////////// + +// This file is a snapshot of an AIDL file. Do not edit it manually. There are +// two cases: +// 1). this is a frozen version file - do not edit this in any case. +// 2). this is a 'current' file. If you make a backwards compatible change to +// the interface (from the latest frozen version), the build system will +// prompt you to update this file with `m -update-api`. +// +// You must not make a backward incompatible change to any AIDL file built +// with the aidl_interface module type with versions property set. The module +// type is used to build AIDL files in a way that they can be used across +// independently updatable components of the system. If a device is shipped +// with such a backward incompatible change, it has a high risk of breaking +// later when a module using the interface is updated, e.g., Mainline modules. + +package android.hardware.wifi.supplicant; +@Backing(type="int") @VintfStability +enum StaIfaceReasonCode { + UNSPECIFIED = 1, + PREV_AUTH_NOT_VALID = 2, + DEAUTH_LEAVING = 3, + DISASSOC_DUE_TO_INACTIVITY = 4, + DISASSOC_AP_BUSY = 5, + CLASS2_FRAME_FROM_NONAUTH_STA = 6, + CLASS3_FRAME_FROM_NONASSOC_STA = 7, + DISASSOC_STA_HAS_LEFT = 8, + STA_REQ_ASSOC_WITHOUT_AUTH = 9, + PWR_CAPABILITY_NOT_VALID = 10, + SUPPORTED_CHANNEL_NOT_VALID = 11, + BSS_TRANSITION_DISASSOC = 12, + INVALID_IE = 13, + MICHAEL_MIC_FAILURE = 14, + FOURWAY_HANDSHAKE_TIMEOUT = 15, + GROUP_KEY_UPDATE_TIMEOUT = 16, + IE_IN_4WAY_DIFFERS = 17, + GROUP_CIPHER_NOT_VALID = 18, + PAIRWISE_CIPHER_NOT_VALID = 19, + AKMP_NOT_VALID = 20, + UNSUPPORTED_RSN_IE_VERSION = 21, + INVALID_RSN_IE_CAPAB = 22, + IEEE_802_1X_AUTH_FAILED = 23, + CIPHER_SUITE_REJECTED = 24, + TDLS_TEARDOWN_UNREACHABLE = 25, + TDLS_TEARDOWN_UNSPECIFIED = 26, + SSP_REQUESTED_DISASSOC = 27, + NO_SSP_ROAMING_AGREEMENT = 28, + BAD_CIPHER_OR_AKM = 29, + NOT_AUTHORIZED_THIS_LOCATION = 30, + SERVICE_CHANGE_PRECLUDES_TS = 31, + UNSPECIFIED_QOS_REASON = 32, + NOT_ENOUGH_BANDWIDTH = 33, + DISASSOC_LOW_ACK = 34, + EXCEEDED_TXOP = 35, + STA_LEAVING = 36, + END_TS_BA_DLS = 37, + UNKNOWN_TS_BA = 38, + TIMEOUT = 39, + PEERKEY_MISMATCH = 45, + AUTHORIZED_ACCESS_LIMIT_REACHED = 46, + EXTERNAL_SERVICE_REQUIREMENTS = 47, + INVALID_FT_ACTION_FRAME_COUNT = 48, + INVALID_PMKID = 49, + INVALID_MDE = 50, + INVALID_FTE = 51, + MESH_PEERING_CANCELLED = 52, + MESH_MAX_PEERS = 53, + MESH_CONFIG_POLICY_VIOLATION = 54, + MESH_CLOSE_RCVD = 55, + MESH_MAX_RETRIES = 56, + MESH_CONFIRM_TIMEOUT = 57, + MESH_INVALID_GTK = 58, + MESH_INCONSISTENT_PARAMS = 59, + MESH_INVALID_SECURITY_CAP = 60, + MESH_PATH_ERROR_NO_PROXY_INFO = 61, + MESH_PATH_ERROR_NO_FORWARDING_INFO = 62, + MESH_PATH_ERROR_DEST_UNREACHABLE = 63, + MAC_ADDRESS_ALREADY_EXISTS_IN_MBSS = 64, + MESH_CHANNEL_SWITCH_REGULATORY_REQ = 65, + MESH_CHANNEL_SWITCH_UNSPECIFIED = 66, +} diff --git a/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/StaIfaceStatusCode.aidl b/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/StaIfaceStatusCode.aidl new file mode 100644 index 0000000000..13529a5be1 --- /dev/null +++ b/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/StaIfaceStatusCode.aidl @@ -0,0 +1,134 @@ +/* + * 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. + */ +/////////////////////////////////////////////////////////////////////////////// +// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. // +/////////////////////////////////////////////////////////////////////////////// + +// This file is a snapshot of an AIDL file. Do not edit it manually. There are +// two cases: +// 1). this is a frozen version file - do not edit this in any case. +// 2). this is a 'current' file. If you make a backwards compatible change to +// the interface (from the latest frozen version), the build system will +// prompt you to update this file with `m -update-api`. +// +// You must not make a backward incompatible change to any AIDL file built +// with the aidl_interface module type with versions property set. The module +// type is used to build AIDL files in a way that they can be used across +// independently updatable components of the system. If a device is shipped +// with such a backward incompatible change, it has a high risk of breaking +// later when a module using the interface is updated, e.g., Mainline modules. + +package android.hardware.wifi.supplicant; +@Backing(type="int") @VintfStability +enum StaIfaceStatusCode { + SUCCESS = 0, + UNSPECIFIED_FAILURE = 1, + TDLS_WAKEUP_ALTERNATE = 2, + TDLS_WAKEUP_REJECT = 3, + SECURITY_DISABLED = 5, + UNACCEPTABLE_LIFETIME = 6, + NOT_IN_SAME_BSS = 7, + CAPS_UNSUPPORTED = 10, + REASSOC_NO_ASSOC = 11, + ASSOC_DENIED_UNSPEC = 12, + NOT_SUPPORTED_AUTH_ALG = 13, + UNKNOWN_AUTH_TRANSACTION = 14, + CHALLENGE_FAIL = 15, + AUTH_TIMEOUT = 16, + AP_UNABLE_TO_HANDLE_NEW_STA = 17, + ASSOC_DENIED_RATES = 18, + ASSOC_DENIED_NOSHORT = 19, + SPEC_MGMT_REQUIRED = 22, + PWR_CAPABILITY_NOT_VALID = 23, + SUPPORTED_CHANNEL_NOT_VALID = 24, + ASSOC_DENIED_NO_SHORT_SLOT_TIME = 25, + ASSOC_DENIED_NO_HT = 27, + R0KH_UNREACHABLE = 28, + ASSOC_DENIED_NO_PCO = 29, + ASSOC_REJECTED_TEMPORARILY = 30, + ROBUST_MGMT_FRAME_POLICY_VIOLATION = 31, + UNSPECIFIED_QOS_FAILURE = 32, + DENIED_INSUFFICIENT_BANDWIDTH = 33, + DENIED_POOR_CHANNEL_CONDITIONS = 34, + DENIED_QOS_NOT_SUPPORTED = 35, + REQUEST_DECLINED = 37, + INVALID_PARAMETERS = 38, + REJECTED_WITH_SUGGESTED_CHANGES = 39, + INVALID_IE = 40, + GROUP_CIPHER_NOT_VALID = 41, + PAIRWISE_CIPHER_NOT_VALID = 42, + AKMP_NOT_VALID = 43, + UNSUPPORTED_RSN_IE_VERSION = 44, + INVALID_RSN_IE_CAPAB = 45, + CIPHER_REJECTED_PER_POLICY = 46, + TS_NOT_CREATED = 47, + DIRECT_LINK_NOT_ALLOWED = 48, + DEST_STA_NOT_PRESENT = 49, + DEST_STA_NOT_QOS_STA = 50, + ASSOC_DENIED_LISTEN_INT_TOO_LARGE = 51, + INVALID_FT_ACTION_FRAME_COUNT = 52, + INVALID_PMKID = 53, + INVALID_MDIE = 54, + INVALID_FTIE = 55, + REQUESTED_TCLAS_NOT_SUPPORTED = 56, + INSUFFICIENT_TCLAS_PROCESSING_RESOURCES = 57, + TRY_ANOTHER_BSS = 58, + GAS_ADV_PROTO_NOT_SUPPORTED = 59, + NO_OUTSTANDING_GAS_REQ = 60, + GAS_RESP_NOT_RECEIVED = 61, + STA_TIMED_OUT_WAITING_FOR_GAS_RESP = 62, + GAS_RESP_LARGER_THAN_LIMIT = 63, + REQ_REFUSED_HOME = 64, + ADV_SRV_UNREACHABLE = 65, + REQ_REFUSED_SSPN = 67, + REQ_REFUSED_UNAUTH_ACCESS = 68, + INVALID_RSNIE = 72, + U_APSD_COEX_NOT_SUPPORTED = 73, + U_APSD_COEX_MODE_NOT_SUPPORTED = 74, + BAD_INTERVAL_WITH_U_APSD_COEX = 75, + ANTI_CLOGGING_TOKEN_REQ = 76, + FINITE_CYCLIC_GROUP_NOT_SUPPORTED = 77, + CANNOT_FIND_ALT_TBTT = 78, + TRANSMISSION_FAILURE = 79, + REQ_TCLAS_NOT_SUPPORTED = 80, + TCLAS_RESOURCES_EXCHAUSTED = 81, + REJECTED_WITH_SUGGESTED_BSS_TRANSITION = 82, + REJECT_WITH_SCHEDULE = 83, + REJECT_NO_WAKEUP_SPECIFIED = 84, + SUCCESS_POWER_SAVE_MODE = 85, + PENDING_ADMITTING_FST_SESSION = 86, + PERFORMING_FST_NOW = 87, + PENDING_GAP_IN_BA_WINDOW = 88, + REJECT_U_PID_SETTING = 89, + REFUSED_EXTERNAL_REASON = 92, + REFUSED_AP_OUT_OF_MEMORY = 93, + REJECTED_EMERGENCY_SERVICE_NOT_SUPPORTED = 94, + QUERY_RESP_OUTSTANDING = 95, + REJECT_DSE_BAND = 96, + TCLAS_PROCESSING_TERMINATED = 97, + TS_SCHEDULE_CONFLICT = 98, + DENIED_WITH_SUGGESTED_BAND_AND_CHANNEL = 99, + MCCAOP_RESERVATION_CONFLICT = 100, + MAF_LIMIT_EXCEEDED = 101, + MCCA_TRACK_LIMIT_EXCEEDED = 102, + DENIED_DUE_TO_SPECTRUM_MANAGEMENT = 103, + ASSOC_DENIED_NO_VHT = 104, + ENABLEMENT_DENIED = 105, + RESTRICTION_FROM_AUTHORIZED_GDB = 106, + AUTHORIZATION_DEENABLED = 107, + FILS_AUTHENTICATION_FAILURE = 112, + UNKNOWN_AUTHENTICATION_SERVER = 113, +} diff --git a/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/SupplicantStatusCode.aidl b/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/SupplicantStatusCode.aidl new file mode 100644 index 0000000000..32d71a3a8c --- /dev/null +++ b/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/SupplicantStatusCode.aidl @@ -0,0 +1,48 @@ +/* + * 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. + */ +/////////////////////////////////////////////////////////////////////////////// +// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. // +/////////////////////////////////////////////////////////////////////////////// + +// This file is a snapshot of an AIDL file. Do not edit it manually. There are +// two cases: +// 1). this is a frozen version file - do not edit this in any case. +// 2). this is a 'current' file. If you make a backwards compatible change to +// the interface (from the latest frozen version), the build system will +// prompt you to update this file with `m -update-api`. +// +// You must not make a backward incompatible change to any AIDL file built +// with the aidl_interface module type with versions property set. The module +// type is used to build AIDL files in a way that they can be used across +// independently updatable components of the system. If a device is shipped +// with such a backward incompatible change, it has a high risk of breaking +// later when a module using the interface is updated, e.g., Mainline modules. + +package android.hardware.wifi.supplicant; +@Backing(type="int") @VintfStability +enum SupplicantStatusCode { + SUCCESS = 0, + FAILURE_UNKNOWN = 1, + FAILURE_ARGS_INVALID = 2, + FAILURE_IFACE_INVALID = 3, + FAILURE_IFACE_UNKNOWN = 4, + FAILURE_IFACE_EXISTS = 5, + FAILURE_IFACE_DISABLED = 6, + FAILURE_IFACE_NOT_DISCONNECTED = 7, + FAILURE_NETWORK_INVALID = 8, + FAILURE_NETWORK_UNKNOWN = 9, + FAILURE_UNSUPPORTED = 10, +} diff --git a/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/TransitionDisableIndication.aidl b/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/TransitionDisableIndication.aidl new file mode 100644 index 0000000000..7c6321782a --- /dev/null +++ b/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/TransitionDisableIndication.aidl @@ -0,0 +1,41 @@ +/* + * 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. + */ +/////////////////////////////////////////////////////////////////////////////// +// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. // +/////////////////////////////////////////////////////////////////////////////// + +// This file is a snapshot of an AIDL file. Do not edit it manually. There are +// two cases: +// 1). this is a frozen version file - do not edit this in any case. +// 2). this is a 'current' file. If you make a backwards compatible change to +// the interface (from the latest frozen version), the build system will +// prompt you to update this file with `m -update-api`. +// +// You must not make a backward incompatible change to any AIDL file built +// with the aidl_interface module type with versions property set. The module +// type is used to build AIDL files in a way that they can be used across +// independently updatable components of the system. If a device is shipped +// with such a backward incompatible change, it has a high risk of breaking +// later when a module using the interface is updated, e.g., Mainline modules. + +package android.hardware.wifi.supplicant; +@Backing(type="int") @VintfStability +enum TransitionDisableIndication { + USE_WPA3_PERSONAL = 1, + USE_SAE_PK = 2, + USE_WPA3_ENTERPRISE = 4, + USE_ENHANCED_OPEN = 8, +} diff --git a/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/WifiTechnology.aidl b/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/WifiTechnology.aidl new file mode 100644 index 0000000000..ad36e68564 --- /dev/null +++ b/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/WifiTechnology.aidl @@ -0,0 +1,42 @@ +/* + * 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. + */ +/////////////////////////////////////////////////////////////////////////////// +// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. // +/////////////////////////////////////////////////////////////////////////////// + +// This file is a snapshot of an AIDL file. Do not edit it manually. There are +// two cases: +// 1). this is a frozen version file - do not edit this in any case. +// 2). this is a 'current' file. If you make a backwards compatible change to +// the interface (from the latest frozen version), the build system will +// prompt you to update this file with `m -update-api`. +// +// You must not make a backward incompatible change to any AIDL file built +// with the aidl_interface module type with versions property set. The module +// type is used to build AIDL files in a way that they can be used across +// independently updatable components of the system. If a device is shipped +// with such a backward incompatible change, it has a high risk of breaking +// later when a module using the interface is updated, e.g., Mainline modules. + +package android.hardware.wifi.supplicant; +@Backing(type="int") @VintfStability +enum WifiTechnology { + UNKNOWN = 0, + LEGACY = 1, + HT = 2, + VHT = 3, + HE = 4, +} diff --git a/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/WpaDriverCapabilitiesMask.aidl b/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/WpaDriverCapabilitiesMask.aidl new file mode 100644 index 0000000000..43772af0c0 --- /dev/null +++ b/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/WpaDriverCapabilitiesMask.aidl @@ -0,0 +1,41 @@ +/* + * 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. + */ +/////////////////////////////////////////////////////////////////////////////// +// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. // +/////////////////////////////////////////////////////////////////////////////// + +// This file is a snapshot of an AIDL file. Do not edit it manually. There are +// two cases: +// 1). this is a frozen version file - do not edit this in any case. +// 2). this is a 'current' file. If you make a backwards compatible change to +// the interface (from the latest frozen version), the build system will +// prompt you to update this file with `m -update-api`. +// +// You must not make a backward incompatible change to any AIDL file built +// with the aidl_interface module type with versions property set. The module +// type is used to build AIDL files in a way that they can be used across +// independently updatable components of the system. If a device is shipped +// with such a backward incompatible change, it has a high risk of breaking +// later when a module using the interface is updated, e.g., Mainline modules. + +package android.hardware.wifi.supplicant; +@Backing(type="int") @VintfStability +enum WpaDriverCapabilitiesMask { + MBO = 1, + OCE = 2, + SAE_PK = 4, + WFD_R2 = 8, +} diff --git a/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/WpsConfigError.aidl b/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/WpsConfigError.aidl new file mode 100644 index 0000000000..c48b282e35 --- /dev/null +++ b/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/WpsConfigError.aidl @@ -0,0 +1,58 @@ +/* + * 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. + */ +/////////////////////////////////////////////////////////////////////////////// +// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. // +/////////////////////////////////////////////////////////////////////////////// + +// This file is a snapshot of an AIDL file. Do not edit it manually. There are +// two cases: +// 1). this is a frozen version file - do not edit this in any case. +// 2). this is a 'current' file. If you make a backwards compatible change to +// the interface (from the latest frozen version), the build system will +// prompt you to update this file with `m -update-api`. +// +// You must not make a backward incompatible change to any AIDL file built +// with the aidl_interface module type with versions property set. The module +// type is used to build AIDL files in a way that they can be used across +// independently updatable components of the system. If a device is shipped +// with such a backward incompatible change, it has a high risk of breaking +// later when a module using the interface is updated, e.g., Mainline modules. + +package android.hardware.wifi.supplicant; +@Backing(type="int") @VintfStability +enum WpsConfigError { + NO_ERROR = 0, + OOB_IFACE_READ_ERROR = 1, + DECRYPTION_CRC_FAILURE = 2, + CHAN_24_NOT_SUPPORTED = 3, + CHAN_50_NOT_SUPPORTED = 4, + SIGNAL_TOO_WEAK = 5, + NETWORK_AUTH_FAILURE = 6, + NETWORK_ASSOC_FAILURE = 7, + NO_DHCP_RESPONSE = 8, + FAILED_DHCP_CONFIG = 9, + IP_ADDR_CONFLICT = 10, + NO_CONN_TO_REGISTRAR = 11, + MULTIPLE_PBC_DETECTED = 12, + ROGUE_SUSPECTED = 13, + DEVICE_BUSY = 14, + SETUP_LOCKED = 15, + MSG_TIMEOUT = 16, + REG_SESS_TIMEOUT = 17, + DEV_PASSWORD_AUTH_FAILURE = 18, + CHAN_60G_NOT_SUPPORTED = 19, + PUBLIC_KEY_HASH_MISMATCH = 20, +} diff --git a/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/WpsConfigMethods.aidl b/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/WpsConfigMethods.aidl new file mode 100644 index 0000000000..c98c479b4a --- /dev/null +++ b/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/WpsConfigMethods.aidl @@ -0,0 +1,51 @@ +/* + * 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. + */ +/////////////////////////////////////////////////////////////////////////////// +// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. // +/////////////////////////////////////////////////////////////////////////////// + +// This file is a snapshot of an AIDL file. Do not edit it manually. There are +// two cases: +// 1). this is a frozen version file - do not edit this in any case. +// 2). this is a 'current' file. If you make a backwards compatible change to +// the interface (from the latest frozen version), the build system will +// prompt you to update this file with `m -update-api`. +// +// You must not make a backward incompatible change to any AIDL file built +// with the aidl_interface module type with versions property set. The module +// type is used to build AIDL files in a way that they can be used across +// independently updatable components of the system. If a device is shipped +// with such a backward incompatible change, it has a high risk of breaking +// later when a module using the interface is updated, e.g., Mainline modules. + +package android.hardware.wifi.supplicant; +@Backing(type="int") @VintfStability +enum WpsConfigMethods { + USBA = 1, + ETHERNET = 2, + LABEL = 4, + DISPLAY = 8, + EXT_NFC_TOKEN = 16, + INT_NFC_TOKEN = 32, + NFC_INTERFACE = 64, + PUSHBUTTON = 128, + KEYPAD = 256, + VIRT_PUSHBUTTON = 640, + PHY_PUSHBUTTON = 1152, + P2PS = 4096, + VIRT_DISPLAY = 8200, + PHY_DISPLAY = 16392, +} diff --git a/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/WpsDevPasswordId.aidl b/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/WpsDevPasswordId.aidl new file mode 100644 index 0000000000..975f1ab3fb --- /dev/null +++ b/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/WpsDevPasswordId.aidl @@ -0,0 +1,45 @@ +/* + * 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. + */ +/////////////////////////////////////////////////////////////////////////////// +// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. // +/////////////////////////////////////////////////////////////////////////////// + +// This file is a snapshot of an AIDL file. Do not edit it manually. There are +// two cases: +// 1). this is a frozen version file - do not edit this in any case. +// 2). this is a 'current' file. If you make a backwards compatible change to +// the interface (from the latest frozen version), the build system will +// prompt you to update this file with `m -update-api`. +// +// You must not make a backward incompatible change to any AIDL file built +// with the aidl_interface module type with versions property set. The module +// type is used to build AIDL files in a way that they can be used across +// independently updatable components of the system. If a device is shipped +// with such a backward incompatible change, it has a high risk of breaking +// later when a module using the interface is updated, e.g., Mainline modules. + +package android.hardware.wifi.supplicant; +@Backing(type="int") @VintfStability +enum WpsDevPasswordId { + DEFAULT = 0, + USER_SPECIFIED = 1, + MACHINE_SPECIFIED = 2, + REKEY = 3, + PUSHBUTTON = 4, + REGISTRAR_SPECIFIED = 5, + NFC_CONNECTION_HANDOVER = 7, + P2PS_DEFAULT = 8, +} diff --git a/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/WpsErrorIndication.aidl b/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/WpsErrorIndication.aidl new file mode 100644 index 0000000000..50e69ff03b --- /dev/null +++ b/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/WpsErrorIndication.aidl @@ -0,0 +1,41 @@ +/* + * 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. + */ +/////////////////////////////////////////////////////////////////////////////// +// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. // +/////////////////////////////////////////////////////////////////////////////// + +// This file is a snapshot of an AIDL file. Do not edit it manually. There are +// two cases: +// 1). this is a frozen version file - do not edit this in any case. +// 2). this is a 'current' file. If you make a backwards compatible change to +// the interface (from the latest frozen version), the build system will +// prompt you to update this file with `m -update-api`. +// +// You must not make a backward incompatible change to any AIDL file built +// with the aidl_interface module type with versions property set. The module +// type is used to build AIDL files in a way that they can be used across +// independently updatable components of the system. If a device is shipped +// with such a backward incompatible change, it has a high risk of breaking +// later when a module using the interface is updated, e.g., Mainline modules. + +package android.hardware.wifi.supplicant; +@Backing(type="int") @VintfStability +enum WpsErrorIndication { + NO_ERROR = 0, + SECURITY_TKIP_ONLY_PROHIBITED = 1, + SECURITY_WEP_PROHIBITED = 2, + AUTH_FAILURE = 3, +} diff --git a/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/WpsProvisionMethod.aidl b/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/WpsProvisionMethod.aidl new file mode 100644 index 0000000000..f6dba234d4 --- /dev/null +++ b/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/WpsProvisionMethod.aidl @@ -0,0 +1,40 @@ +/* + * 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. + */ +/////////////////////////////////////////////////////////////////////////////// +// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. // +/////////////////////////////////////////////////////////////////////////////// + +// This file is a snapshot of an AIDL file. Do not edit it manually. There are +// two cases: +// 1). this is a frozen version file - do not edit this in any case. +// 2). this is a 'current' file. If you make a backwards compatible change to +// the interface (from the latest frozen version), the build system will +// prompt you to update this file with `m -update-api`. +// +// You must not make a backward incompatible change to any AIDL file built +// with the aidl_interface module type with versions property set. The module +// type is used to build AIDL files in a way that they can be used across +// independently updatable components of the system. If a device is shipped +// with such a backward incompatible change, it has a high risk of breaking +// later when a module using the interface is updated, e.g., Mainline modules. + +package android.hardware.wifi.supplicant; +@Backing(type="int") @VintfStability +enum WpsProvisionMethod { + PBC = 0, + DISPLAY = 1, + KEYPAD = 2, +} diff --git a/wifi/supplicant/aidl/android/hardware/wifi/supplicant/AnqpData.aidl b/wifi/supplicant/aidl/android/hardware/wifi/supplicant/AnqpData.aidl new file mode 100644 index 0000000000..5bc1015a68 --- /dev/null +++ b/wifi/supplicant/aidl/android/hardware/wifi/supplicant/AnqpData.aidl @@ -0,0 +1,33 @@ +/* + * 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 android.hardware.wifi.supplicant; + +/** + * ANQP data for IEEE Std 802.11-2016. + * The format of the data within these elements follows the IEEE + * Std 802.11-2016 standard, section 9.4.5. + */ +@VintfStability +parcelable AnqpData { + byte[] venueName; + byte[] roamingConsortium; + byte[] ipAddrTypeAvailability; + byte[] naiRealm; + byte[] anqp3gppCellularNetwork; + byte[] domainName; + byte[] venueUrl; +} diff --git a/wifi/supplicant/aidl/android/hardware/wifi/supplicant/AnqpInfoId.aidl b/wifi/supplicant/aidl/android/hardware/wifi/supplicant/AnqpInfoId.aidl new file mode 100644 index 0000000000..7b2eb23b28 --- /dev/null +++ b/wifi/supplicant/aidl/android/hardware/wifi/supplicant/AnqpInfoId.aidl @@ -0,0 +1,32 @@ +/* + * 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 android.hardware.wifi.supplicant; + +/** + * Access Network Query Protocol info ID elements + * for IEEE Std 802.11u-2011. + */ +@VintfStability +@Backing(type="int") +enum AnqpInfoId { + VENUE_NAME = 258, + ROAMING_CONSORTIUM = 261, + IP_ADDR_TYPE_AVAILABILITY = 262, + NAI_REALM = 263, + ANQP_3GPP_CELLULAR_NETWORK = 264, + DOMAIN_NAME = 268, +} diff --git a/wifi/supplicant/aidl/android/hardware/wifi/supplicant/AssociationRejectionData.aidl b/wifi/supplicant/aidl/android/hardware/wifi/supplicant/AssociationRejectionData.aidl new file mode 100644 index 0000000000..5673021da5 --- /dev/null +++ b/wifi/supplicant/aidl/android/hardware/wifi/supplicant/AssociationRejectionData.aidl @@ -0,0 +1,69 @@ +/* + * 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 android.hardware.wifi.supplicant; + +import android.hardware.wifi.supplicant.MboAssocDisallowedReasonCode; +import android.hardware.wifi.supplicant.OceRssiBasedAssocRejectAttr; +import android.hardware.wifi.supplicant.StaIfaceStatusCode; + +/** + * Association Rejection related information. + */ +@VintfStability +parcelable AssociationRejectionData { + /** + * SSID of the AP that rejected the association. + */ + byte[] ssid; + /** + * BSSID of the AP that rejected the association. + */ + byte[/* 6 */] bssid; + /* + * 802.11 code to indicate the reject reason. + * Refer to section 8.4.1.9 of IEEE 802.11 spec. + */ + StaIfaceStatusCode statusCode; + /* + * Flag to indicate that failure is due to timeout rather than + * explicit rejection response from the AP. + */ + boolean timedOut; + /** + * Flag to indicate that MboAssocDisallowedReasonCode is present + * in the (Re-)Association response frame. + */ + boolean isMboAssocDisallowedReasonCodePresent; + /** + * mboAssocDisallowedReason is extracted from MBO association disallowed attribute + * in (Re-)Association response frame to indicate that the AP is not accepting new + * associations. + * Refer MBO spec v1.2 section 4.2.4 Table 13 for the details of reason code. + * The value is undefined if isMboAssocDisallowedReasonCodePresent is false. + */ + MboAssocDisallowedReasonCode mboAssocDisallowedReason; + /** + * Flag to indicate that OceRssiBasedAssocRejectAttr is present + * in the (Re-)Association response frame. + */ + boolean isOceRssiBasedAssocRejectAttrPresent; + /* + * OCE RSSI-based (Re-)Association rejection attribute. + * The contents are undefined if isOceRssiBasedAssocRejectAttrPresent is false. + */ + OceRssiBasedAssocRejectAttr oceRssiBasedAssocRejectData; +} diff --git a/wifi/supplicant/aidl/android/hardware/wifi/supplicant/AuthAlgMask.aidl b/wifi/supplicant/aidl/android/hardware/wifi/supplicant/AuthAlgMask.aidl new file mode 100644 index 0000000000..e8101ea3af --- /dev/null +++ b/wifi/supplicant/aidl/android/hardware/wifi/supplicant/AuthAlgMask.aidl @@ -0,0 +1,31 @@ +/* + * 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 android.hardware.wifi.supplicant; + +/** + * Possible mask of values for AuthAlg param. + * See /external/wpa_supplicant_8/src/common/defs.h for + * all possible values (starting at WPA_AUTH_ALG_OPEN). + */ +@VintfStability +@Backing(type="int") +enum AuthAlgMask { + OPEN = 1 << 0, + SHARED = 1 << 1, + LEAP = 1 << 2, + SAE = 1 << 4, +} diff --git a/wifi/supplicant/aidl/android/hardware/wifi/supplicant/BssTmData.aidl b/wifi/supplicant/aidl/android/hardware/wifi/supplicant/BssTmData.aidl new file mode 100644 index 0000000000..233e54a917 --- /dev/null +++ b/wifi/supplicant/aidl/android/hardware/wifi/supplicant/BssTmData.aidl @@ -0,0 +1,49 @@ +/* + * 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 android.hardware.wifi.supplicant; + +import android.hardware.wifi.supplicant.BssTmDataFlagsMask; +import android.hardware.wifi.supplicant.BssTmStatusCode; +import android.hardware.wifi.supplicant.MboCellularDataConnectionPrefValue; +import android.hardware.wifi.supplicant.MboTransitionReasonCode; + +/** + * Data retrieved from received BSS transition management request frame. + */ +@VintfStability +parcelable BssTmData { + /* + * Status code filled in BSS transition management response frame + */ + BssTmStatusCode status; + /* + * Bitmask of BssTmDataFlagsMask + */ + BssTmDataFlagsMask flags; + /* + * Duration for which STA shouldn't try to re-associate. + */ + int assocRetryDelayMs; + /* + * Reason for BSS transition request. + */ + MboTransitionReasonCode mboTransitionReason; + /* + * Cellular Data Connection preference value. + */ + MboCellularDataConnectionPrefValue mboCellPreference; +} diff --git a/wifi/supplicant/aidl/android/hardware/wifi/supplicant/BssTmDataFlagsMask.aidl b/wifi/supplicant/aidl/android/hardware/wifi/supplicant/BssTmDataFlagsMask.aidl new file mode 100644 index 0000000000..1eb75f4977 --- /dev/null +++ b/wifi/supplicant/aidl/android/hardware/wifi/supplicant/BssTmDataFlagsMask.aidl @@ -0,0 +1,57 @@ +/* + * 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 android.hardware.wifi.supplicant; + +/** + * Bitmask of various information retrieved from BSS transition management request frame. + */ +@VintfStability +@Backing(type="int") +enum BssTmDataFlagsMask { + /** + * Preferred candidate list included. + */ + WNM_MODE_PREFERRED_CANDIDATE_LIST_INCLUDED = 1 << 0, + /** + * Abridged. + */ + WNM_MODE_ABRIDGED = 1 << 1, + /** + * Disassociation Imminent. + */ + WNM_MODE_DISASSOCIATION_IMMINENT = 1 << 2, + /** + * BSS termination included. + */ + WNM_MODE_BSS_TERMINATION_INCLUDED = 1 << 3, + /** + * ESS Disassociation Imminent. + */ + WNM_MODE_ESS_DISASSOCIATION_IMMINENT = 1 << 4, + /** + * MBO transition reason code included. + */ + MBO_TRANSITION_REASON_CODE_INCLUDED = 1 << 5, + /** + * MBO retry delay time included. + */ + MBO_ASSOC_RETRY_DELAY_INCLUDED = 1 << 6, + /** + * MBO cellular data connection preference value included. + */ + MBO_CELLULAR_DATA_CONNECTION_PREFERENCE_INCLUDED = 1 << 7, +} diff --git a/wifi/supplicant/aidl/android/hardware/wifi/supplicant/BssTmStatusCode.aidl b/wifi/supplicant/aidl/android/hardware/wifi/supplicant/BssTmStatusCode.aidl new file mode 100644 index 0000000000..51fbfeddea --- /dev/null +++ b/wifi/supplicant/aidl/android/hardware/wifi/supplicant/BssTmStatusCode.aidl @@ -0,0 +1,35 @@ +/* + * 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 android.hardware.wifi.supplicant; + +/** + * IEEE Std 802.11-2016 - Table 9-357. + * BTM status code filled in BSS transition management response frame. + */ +@VintfStability +@Backing(type="byte") +enum BssTmStatusCode { + ACCEPT = 0, + REJECT_UNSPECIFIED = 1, + REJECT_INSUFFICIENT_BEACON = 2, + REJECT_INSUFFICIENT_CAPABITY = 3, + REJECT_BSS_TERMINATION_UNDESIRED = 4, + REJECT_BSS_TERMINATION_DELAY_REQUEST = 5, + REJECT_STA_CANDIDATE_LIST_PROVIDED = 6, + REJECT_NO_SUITABLE_CANDIDATES = 7, + REJECT_LEAVING_ESS = 8, +} diff --git a/wifi/supplicant/aidl/android/hardware/wifi/supplicant/BssidChangeReason.aidl b/wifi/supplicant/aidl/android/hardware/wifi/supplicant/BssidChangeReason.aidl new file mode 100644 index 0000000000..8532bd7038 --- /dev/null +++ b/wifi/supplicant/aidl/android/hardware/wifi/supplicant/BssidChangeReason.aidl @@ -0,0 +1,37 @@ +/* + * 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 android.hardware.wifi.supplicant; + +/** + * BSSID change Reasons. + */ +@VintfStability +@Backing(type="byte") +enum BssidChangeReason { + /** + * Started association with new bssid. + */ + ASSOC_START = 0, + /** + * Completed association with new bssid. + */ + ASSOC_COMPLETE = 1, + /** + * Dis-association with current bssid. + */ + DISASSOC = 2, +} diff --git a/wifi/supplicant/aidl/android/hardware/wifi/supplicant/BtCoexistenceMode.aidl b/wifi/supplicant/aidl/android/hardware/wifi/supplicant/BtCoexistenceMode.aidl new file mode 100644 index 0000000000..4972744c60 --- /dev/null +++ b/wifi/supplicant/aidl/android/hardware/wifi/supplicant/BtCoexistenceMode.aidl @@ -0,0 +1,29 @@ +/* + * 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 android.hardware.wifi.supplicant; + +/** + * Enum describing the modes of BT coexistence supported + * via driver commands. + */ +@VintfStability +@Backing(type="byte") +enum BtCoexistenceMode { + ENABLED = 0, + DISABLED = 1, + SENSE = 2, +} diff --git a/wifi/supplicant/aidl/android/hardware/wifi/supplicant/ConnectionCapabilities.aidl b/wifi/supplicant/aidl/android/hardware/wifi/supplicant/ConnectionCapabilities.aidl new file mode 100644 index 0000000000..1718413a13 --- /dev/null +++ b/wifi/supplicant/aidl/android/hardware/wifi/supplicant/ConnectionCapabilities.aidl @@ -0,0 +1,47 @@ +/* + * 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 android.hardware.wifi.supplicant; + +import android.hardware.wifi.supplicant.LegacyMode; +import android.hardware.wifi.supplicant.WifiTechnology; + +/** + * Connection Capabilities supported by current network and device + */ +@VintfStability +parcelable ConnectionCapabilities { + /** + * Wifi Technology + */ + WifiTechnology technology; + /** + * channel bandwidth + */ + int channelBandwidth; + /** + * max number of Tx spatial streams + */ + int maxNumberTxSpatialStreams; + /** + * max number of Rx spatial streams + */ + int maxNumberRxSpatialStreams; + /** + * detailed network mode for legacy network + */ + LegacyMode legacyMode; +} diff --git a/wifi/supplicant/aidl/android/hardware/wifi/supplicant/DebugLevel.aidl b/wifi/supplicant/aidl/android/hardware/wifi/supplicant/DebugLevel.aidl new file mode 100644 index 0000000000..7caa406d51 --- /dev/null +++ b/wifi/supplicant/aidl/android/hardware/wifi/supplicant/DebugLevel.aidl @@ -0,0 +1,33 @@ +/* + * 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 android.hardware.wifi.supplicant; + +/** + * Debug levels for the supplicant. + * Only log messages with a level greater than the set level + * (via |setDebugParams|) will be logged. + */ +@VintfStability +@Backing(type="int") +enum DebugLevel { + EXCESSIVE = 0, + MSGDUMP = 1, + DEBUG = 2, + INFO = 3, + WARNING = 4, + ERROR = 5, +} diff --git a/wifi/supplicant/aidl/android/hardware/wifi/supplicant/DppAkm.aidl b/wifi/supplicant/aidl/android/hardware/wifi/supplicant/DppAkm.aidl new file mode 100644 index 0000000000..63fff547ad --- /dev/null +++ b/wifi/supplicant/aidl/android/hardware/wifi/supplicant/DppAkm.aidl @@ -0,0 +1,29 @@ +/* + * 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 android.hardware.wifi.supplicant; + +/** + * DppAkm: The various AKMs that can be provisioned using DPP. + */ +@VintfStability +@Backing(type="int") +enum DppAkm { + PSK, + PSK_SAE, + SAE, + DPP, +} diff --git a/wifi/supplicant/aidl/android/hardware/wifi/supplicant/DppCurve.aidl b/wifi/supplicant/aidl/android/hardware/wifi/supplicant/DppCurve.aidl new file mode 100644 index 0000000000..ea57505445 --- /dev/null +++ b/wifi/supplicant/aidl/android/hardware/wifi/supplicant/DppCurve.aidl @@ -0,0 +1,32 @@ +/* + * 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 android.hardware.wifi.supplicant; + +/** + * DppCurve: Elliptic curve cryptography type used to generate DPP + * public/private key pair. + */ +@VintfStability +@Backing(type="int") +enum DppCurve { + PRIME256V1, + SECP384R1, + SECP521R1, + BRAINPOOLP256R1, + BRAINPOOLP384R1, + BRAINPOOLP512R1, +} diff --git a/wifi/supplicant/aidl/android/hardware/wifi/supplicant/DppEventType.aidl b/wifi/supplicant/aidl/android/hardware/wifi/supplicant/DppEventType.aidl new file mode 100644 index 0000000000..4b9b38b96b --- /dev/null +++ b/wifi/supplicant/aidl/android/hardware/wifi/supplicant/DppEventType.aidl @@ -0,0 +1,27 @@ +/* + * 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 android.hardware.wifi.supplicant; + +/** + * DppEventType: Major events for DPP (Easy Connect) Configurator + */ +@VintfStability +@Backing(type="int") +enum DppEventType { + CONFIGURATION_SENT, + CONFIGURATION_APPLIED, +} diff --git a/wifi/supplicant/aidl/android/hardware/wifi/supplicant/DppFailureCode.aidl b/wifi/supplicant/aidl/android/hardware/wifi/supplicant/DppFailureCode.aidl new file mode 100644 index 0000000000..5c0c6e8977 --- /dev/null +++ b/wifi/supplicant/aidl/android/hardware/wifi/supplicant/DppFailureCode.aidl @@ -0,0 +1,40 @@ +/* + * 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 android.hardware.wifi.supplicant; + +/** + * DppFailureCode: Error codes for DPP (Easy Connect) + */ +@VintfStability +@Backing(type="int") +enum DppFailureCode { + INVALID_URI, + AUTHENTICATION, + NOT_COMPATIBLE, + CONFIGURATION, + BUSY, + TIMEOUT, + FAILURE, + NOT_SUPPORTED, + CONFIGURATION_REJECTED, + CANNOT_FIND_NETWORK, + ENROLLEE_AUTHENTICATION, + /** + * Failure to generate a DPP URI. + */ + URI_GENERATION, +} diff --git a/wifi/supplicant/aidl/android/hardware/wifi/supplicant/DppNetRole.aidl b/wifi/supplicant/aidl/android/hardware/wifi/supplicant/DppNetRole.aidl new file mode 100644 index 0000000000..d92cfa379b --- /dev/null +++ b/wifi/supplicant/aidl/android/hardware/wifi/supplicant/DppNetRole.aidl @@ -0,0 +1,27 @@ +/* + * 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 android.hardware.wifi.supplicant; + +/** + * DppNetRole: The network role that the configurator offers the enrollee. + */ +@VintfStability +@Backing(type="int") +enum DppNetRole { + STA, + AP, +} diff --git a/wifi/supplicant/aidl/android/hardware/wifi/supplicant/DppProgressCode.aidl b/wifi/supplicant/aidl/android/hardware/wifi/supplicant/DppProgressCode.aidl new file mode 100644 index 0000000000..f8b35c0f8f --- /dev/null +++ b/wifi/supplicant/aidl/android/hardware/wifi/supplicant/DppProgressCode.aidl @@ -0,0 +1,29 @@ +/* + * 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 android.hardware.wifi.supplicant; + +/** + * DppProgressCode: Progress codes for DPP (Easy Connect) + */ +@VintfStability +@Backing(type="int") +enum DppProgressCode { + AUTHENTICATION_SUCCESS, + RESPONSE_PENDING, + CONFIGURATION_SENT_WAITING_RESPONSE, + CONFIGURATION_ACCEPTED, +} diff --git a/wifi/supplicant/aidl/android/hardware/wifi/supplicant/DppResponderBootstrapInfo.aidl b/wifi/supplicant/aidl/android/hardware/wifi/supplicant/DppResponderBootstrapInfo.aidl new file mode 100644 index 0000000000..4f4778d54d --- /dev/null +++ b/wifi/supplicant/aidl/android/hardware/wifi/supplicant/DppResponderBootstrapInfo.aidl @@ -0,0 +1,37 @@ +/* + * 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 android.hardware.wifi.supplicant; + +/** + * DPP bootstrap info generated for responder mode operation + */ +@VintfStability +parcelable DppResponderBootstrapInfo { + /** + * Generated bootstrap identifier + */ + int bootstrapId; + /** + * The Wi-Fi channel that the DPP responder is listening on. + */ + int listenChannel; + /** + * Bootstrapping URI per DPP specification, "section 5.2 Bootstrapping + * information", may contain listen channel, MAC address, public key, or other information. + */ + String uri; +} diff --git a/wifi/supplicant/aidl/android/hardware/wifi/supplicant/EapErrorCode.aidl b/wifi/supplicant/aidl/android/hardware/wifi/supplicant/EapErrorCode.aidl new file mode 100644 index 0000000000..49f9e349c5 --- /dev/null +++ b/wifi/supplicant/aidl/android/hardware/wifi/supplicant/EapErrorCode.aidl @@ -0,0 +1,30 @@ +/* + * 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 android.hardware.wifi.supplicant; + +/* + * EapErrorCode: Error code for EAP or EAP Method as per RFC-4186 + */ +@VintfStability +@Backing(type="int") +enum EapErrorCode { + SIM_GENERAL_FAILURE_AFTER_AUTH = 0, + SIM_TEMPORARILY_DENIED = 1026, + SIM_NOT_SUBSCRIBED = 1031, + SIM_GENERAL_FAILURE_BEFORE_AUTH = 16384, + SIM_VENDOR_SPECIFIC_EXPIRED_CERT = 16385, +} diff --git a/wifi/supplicant/aidl/android/hardware/wifi/supplicant/EapMethod.aidl b/wifi/supplicant/aidl/android/hardware/wifi/supplicant/EapMethod.aidl new file mode 100644 index 0000000000..351fb6c675 --- /dev/null +++ b/wifi/supplicant/aidl/android/hardware/wifi/supplicant/EapMethod.aidl @@ -0,0 +1,33 @@ +/* + * 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 android.hardware.wifi.supplicant; + +/** + * Possble values for EapMethod param. + */ +@VintfStability +@Backing(type="int") +enum EapMethod { + PEAP = 0, + TLS = 1, + TTLS = 2, + PWD = 3, + SIM = 4, + AKA = 5, + AKA_PRIME = 6, + WFA_UNAUTH_TLS = 7, +} diff --git a/wifi/supplicant/aidl/android/hardware/wifi/supplicant/EapPhase2Method.aidl b/wifi/supplicant/aidl/android/hardware/wifi/supplicant/EapPhase2Method.aidl new file mode 100644 index 0000000000..a7eeca84d1 --- /dev/null +++ b/wifi/supplicant/aidl/android/hardware/wifi/supplicant/EapPhase2Method.aidl @@ -0,0 +1,33 @@ +/* + * 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 android.hardware.wifi.supplicant; + +/** + * Possble values for Phase2Method param. + */ +@VintfStability +@Backing(type="int") +enum EapPhase2Method { + NONE = 0, + PAP = 1, + MSPAP = 2, + MSPAPV2 = 3, + GTC = 4, + SIM = 5, + AKA = 6, + AKA_PRIME = 7, +} diff --git a/wifi/supplicant/aidl/android/hardware/wifi/supplicant/ExtRadioWorkDefaults.aidl b/wifi/supplicant/aidl/android/hardware/wifi/supplicant/ExtRadioWorkDefaults.aidl new file mode 100644 index 0000000000..7325ba2ea8 --- /dev/null +++ b/wifi/supplicant/aidl/android/hardware/wifi/supplicant/ExtRadioWorkDefaults.aidl @@ -0,0 +1,23 @@ +/* + * 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 android.hardware.wifi.supplicant; + +@VintfStability +@Backing(type="int") +enum ExtRadioWorkDefaults { + TIMEOUT_IN_SECS = 10, +} diff --git a/wifi/supplicant/aidl/android/hardware/wifi/supplicant/FreqRange.aidl b/wifi/supplicant/aidl/android/hardware/wifi/supplicant/FreqRange.aidl new file mode 100644 index 0000000000..a88c0119cf --- /dev/null +++ b/wifi/supplicant/aidl/android/hardware/wifi/supplicant/FreqRange.aidl @@ -0,0 +1,27 @@ +/* + * 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 android.hardware.wifi.supplicant; + +/** + * Use to specify a range of frequencies. + * For example: 2412-2432,2462,5000-6000, etc. + */ +@VintfStability +parcelable FreqRange { + int min; + int max; +} diff --git a/wifi/supplicant/aidl/android/hardware/wifi/supplicant/GroupCipherMask.aidl b/wifi/supplicant/aidl/android/hardware/wifi/supplicant/GroupCipherMask.aidl new file mode 100644 index 0000000000..d5b26adc99 --- /dev/null +++ b/wifi/supplicant/aidl/android/hardware/wifi/supplicant/GroupCipherMask.aidl @@ -0,0 +1,44 @@ +/* + * 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 android.hardware.wifi.supplicant; + +/** + * Possible mask of values for GroupCipher param. + * See /external/wpa_supplicant_8/src/common/defs.h for + * all possible values (starting at WPA_CIPHER_WEP40). + */ +@VintfStability +@Backing(type="int") +enum GroupCipherMask { + WEP40 = 1 << 1, + WEP104 = 1 << 2, + TKIP = 1 << 3, + CCMP = 1 << 4, + GTK_NOT_USED = 1 << 14, + /** + * GCMP-256 Group Cipher + */ + GCMP_256 = 1 << 8, + /** + * SMS4 Group Cipher + */ + SMS4 = 1 << 7, + /** + * GCMP-128 Group Cipher + */ + GCMP_128 = 1 << 6, +} diff --git a/wifi/supplicant/aidl/android/hardware/wifi/supplicant/GroupMgmtCipherMask.aidl b/wifi/supplicant/aidl/android/hardware/wifi/supplicant/GroupMgmtCipherMask.aidl new file mode 100644 index 0000000000..07544f0ef6 --- /dev/null +++ b/wifi/supplicant/aidl/android/hardware/wifi/supplicant/GroupMgmtCipherMask.aidl @@ -0,0 +1,39 @@ +/* + * 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 android.hardware.wifi.supplicant; + +/** + * Possble mask of values for GroupMgmtCipher param. + * See /external/wpa_supplicant_8/src/common/defs.h for + * all possible values (starting at WPA_CIPHER_BIP_GMAC_128). + */ +@VintfStability +@Backing(type="int") +enum GroupMgmtCipherMask { + /** + * BIP_GMAC-128 Group Management Cipher + */ + BIP_GMAC_128 = 1 << 11, + /** + * BIP_GMAC-256 Group Management Cipher + */ + BIP_GMAC_256 = 1 << 12, + /** + * BIP_CMAC-256 Group Management Cipher + */ + BIP_CMAC_256 = 1 << 13, +} diff --git a/wifi/supplicant/aidl/android/hardware/wifi/supplicant/GsmRand.aidl b/wifi/supplicant/aidl/android/hardware/wifi/supplicant/GsmRand.aidl new file mode 100644 index 0000000000..4e3132352a --- /dev/null +++ b/wifi/supplicant/aidl/android/hardware/wifi/supplicant/GsmRand.aidl @@ -0,0 +1,28 @@ +/* + * 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 android.hardware.wifi.supplicant; + +/** + * Byte array with expected length 16. Used by NetworkRequestEapSimGsmAuthParams + * to pass an array of byte arrays, as 2D arrays are not supported in AIDL. + * + * TODO (b/210705533): Replace this type with a 2D byte array. + */ +@VintfStability +parcelable GsmRand { + byte[/* 16 */] data; +} diff --git a/wifi/supplicant/aidl/android/hardware/wifi/supplicant/Hs20AnqpData.aidl b/wifi/supplicant/aidl/android/hardware/wifi/supplicant/Hs20AnqpData.aidl new file mode 100644 index 0000000000..bdb9ec690e --- /dev/null +++ b/wifi/supplicant/aidl/android/hardware/wifi/supplicant/Hs20AnqpData.aidl @@ -0,0 +1,30 @@ +/* + * 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 android.hardware.wifi.supplicant; + +/** + * ANQP data for Hotspot 2.0. + * The format of the data within these elements follows the Hotspot 2.0 + * standard. + */ +@VintfStability +parcelable Hs20AnqpData { + byte[] operatorFriendlyName; + byte[] wanMetrics; + byte[] connectionCapability; + byte[] osuProvidersList; +} diff --git a/wifi/supplicant/aidl/android/hardware/wifi/supplicant/Hs20AnqpSubtypes.aidl b/wifi/supplicant/aidl/android/hardware/wifi/supplicant/Hs20AnqpSubtypes.aidl new file mode 100644 index 0000000000..e08411dafa --- /dev/null +++ b/wifi/supplicant/aidl/android/hardware/wifi/supplicant/Hs20AnqpSubtypes.aidl @@ -0,0 +1,30 @@ +/* + * 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 android.hardware.wifi.supplicant; + +/** + * Access Network Query Protocol subtype elements + * for Hotspot 2.0. + */ +@VintfStability +@Backing(type="int") +enum Hs20AnqpSubtypes { + OPERATOR_FRIENDLY_NAME = 3, + WAN_METRICS = 4, + CONNECTION_CAPABILITY = 5, + OSU_PROVIDERS_LIST = 8, +} diff --git a/wifi/supplicant/aidl/android/hardware/wifi/supplicant/ISupplicant.aidl b/wifi/supplicant/aidl/android/hardware/wifi/supplicant/ISupplicant.aidl new file mode 100644 index 0000000000..2ac1db7771 --- /dev/null +++ b/wifi/supplicant/aidl/android/hardware/wifi/supplicant/ISupplicant.aidl @@ -0,0 +1,161 @@ +/* + * 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 android.hardware.wifi.supplicant; + +import android.hardware.wifi.supplicant.DebugLevel; +import android.hardware.wifi.supplicant.ISupplicantCallback; +import android.hardware.wifi.supplicant.ISupplicantP2pIface; +import android.hardware.wifi.supplicant.ISupplicantStaIface; +import android.hardware.wifi.supplicant.IfaceInfo; +import android.hardware.wifi.supplicant.IfaceType; + +/** + * Interface exposed by the supplicant AIDL service registered + * with the service manager. This is the root level object for + * any of the supplicant interactions. + */ +@VintfStability +interface ISupplicant { + /** + * Default timeout (in seconds) for external radio work. + */ + const int EXT_RADIO_WORK_TIMEOUT_IN_SECS = 10; + + /** + * Registers a wireless interface in supplicant. + * + * @param ifName Name of the interface (e.g wlan0). + * @return AIDL interface object representing the interface if + * successful, null otherwise. + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_ARGS_INVALID|, + * |SupplicantStatusCode.FAILURE_UNKNOWN|, + * |SupplicantStatusCode.FAILURE_IFACE_EXISTS| + */ + ISupplicantP2pIface addP2pInterface(in String ifName); + ISupplicantStaIface addStaInterface(in String ifName); + + /** + * Get the debug level set. + * + * @return one of |DebugLevel| values. + */ + DebugLevel getDebugLevel(); + + /** + * Gets an AIDL interface object for the interface corresponding + * to an iface name which the supplicant already controls. + * + * @param ifName Name of the interface retrieved + * using |listInterfaces|. + * @return AIDL interface object representing the interface if + * successful, null otherwise. + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_UNKNOWN|, + * |SupplicantStatusCode.FAILURE_IFACE_UNKNOWN| + */ + ISupplicantP2pIface getP2pInterface(in String ifName); + ISupplicantStaIface getStaInterface(in String ifName); + + /** + * Get whether the keys are shown in the debug logs or not. + * + * @return true if set, false otherwise. + */ + boolean isDebugShowKeysEnabled(); + + /** + * Get whether the timestamps are shown in the debug logs or not. + * + * @return true if set, false otherwise. + */ + boolean isDebugShowTimestampEnabled(); + + /** + * Retrieve a list of all interfaces controlled by the supplicant. + * + * The corresponding |ISupplicantIface| object for any interface can be + * retrieved using the proper |getInterface| method. + * + * @return List of all interfaces controlled by the supplicant. + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_UNKNOWN| + */ + IfaceInfo[] listInterfaces(); + + /** + * Register for callbacks from the supplicant service. + * + * These callbacks are invoked for global events that are not specific + * to any interface or network. Registration of multiple callback + * objects is supported. These objects must be deleted when the corresponding + * client process is dead. + * + * @param callback An instance of the |ISupplicantCallback| AIDL interface + * object. + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_UNKNOWN| + */ + void registerCallback(in ISupplicantCallback callback); + + /** + * Deregisters a wireless interface from supplicant. + * + * @param ifaceInfo Combination of the interface type and name (e.g wlan0). + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_ARGS_INVALID|, + * |SupplicantStatusCode.FAILURE_UNKNOWN|, + * |SupplicantStatusCode.FAILURE_IFACE_UNKNOWN| + */ + void removeInterface(in IfaceInfo ifaceInfo); + + /** + * Set concurrency priority. + * + * When both P2P and STA mode ifaces are active, this must be used + * to prioritize either STA or P2P connection to resolve conflicts + * arising during single channel concurrency. + * + * @param type The type of iface to prioritize. + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_UNKNOWN| + */ + void setConcurrencyPriority(in IfaceType type); + + /** + * Set debug parameters for the supplicant. + * + * @param level Debug logging level for the supplicant. + * (one of |DebugLevel| values). + * @param timestamp Determines whether to show timestamps in logs or + * not. + * @param showKeys Determines whether to show keys in debug logs or + * not. + * CAUTION: Do not set this param in production code! + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_UNKNOWN| + */ + void setDebugParams(in DebugLevel level, in boolean showTimestamp, in boolean showKeys); + + /** + * Terminate the service. + * This must de-register the service and clear all state. If this HAL + * supports the lazy HAL protocol, then this may trigger daemon to exit and + * wait to be restarted. + */ + oneway void terminate(); +} diff --git a/wifi/supplicant/aidl/android/hardware/wifi/supplicant/ISupplicantCallback.aidl b/wifi/supplicant/aidl/android/hardware/wifi/supplicant/ISupplicantCallback.aidl new file mode 100644 index 0000000000..6f15900a24 --- /dev/null +++ b/wifi/supplicant/aidl/android/hardware/wifi/supplicant/ISupplicantCallback.aidl @@ -0,0 +1,46 @@ +/* + * 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 android.hardware.wifi.supplicant; + +/** + * Callback Interface exposed by the supplicant service (ISupplicant). + * + * Clients need to host an instance of this AIDL interface object and + * pass a reference of the object to the supplicant via the + * |ISupplicant.registerCallback| method. + */ +@VintfStability +interface ISupplicantCallback { + /** + * Used to indicate that a new interface has been created. + * + * @param ifaceName Name of the network interface, e.g., wlan0 + */ + oneway void onInterfaceCreated(in String ifaceName); + + /** + * Used to indicate that an interface has been removed. + * + * @param ifaceName Name of the network interface, e.g., wlan0 + */ + oneway void onInterfaceRemoved(in String ifaceName); + + /** + * Used to indicate that the supplicant daemon is terminating. + */ + oneway void onTerminating(); +} diff --git a/wifi/supplicant/aidl/android/hardware/wifi/supplicant/ISupplicantP2pIface.aidl b/wifi/supplicant/aidl/android/hardware/wifi/supplicant/ISupplicantP2pIface.aidl new file mode 100644 index 0000000000..64839e7cc8 --- /dev/null +++ b/wifi/supplicant/aidl/android/hardware/wifi/supplicant/ISupplicantP2pIface.aidl @@ -0,0 +1,770 @@ +/* + * 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 android.hardware.wifi.supplicant; + +import android.hardware.wifi.supplicant.FreqRange; +import android.hardware.wifi.supplicant.ISupplicantP2pIfaceCallback; +import android.hardware.wifi.supplicant.ISupplicantP2pNetwork; +import android.hardware.wifi.supplicant.IfaceType; +import android.hardware.wifi.supplicant.MiracastMode; +import android.hardware.wifi.supplicant.P2pGroupCapabilityMask; +import android.hardware.wifi.supplicant.WpsConfigMethods; +import android.hardware.wifi.supplicant.WpsProvisionMethod; + +/** + * Interface exposed by the supplicant for each P2P mode network + * interface (e.g p2p0) it controls. + */ +@VintfStability +interface ISupplicantP2pIface { + /** + * This command can be used to add a bonjour service. + * + * @param query Hex dump of the query data. + * @param return Hex dump of the response data. + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_UNKNOWN|, + * |SupplicantStatusCode.FAILURE_IFACE_INVALID| + */ + void addBonjourService(in byte[] query, in byte[] response); + + /** + * Set up a P2P group owner manually (i.e., without group owner + * negotiation with a specific peer). This is also known as autonomous + * group owner. Optional |persistentNetworkId| may be used to specify + * restart of a persistent group. + * + * @param persistent Used to request a persistent group to be formed. + * @param persistentNetworkId Used to specify the restart of a persistent + * group. Set to UINT32_MAX for a non-persistent group. + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_UNKNOWN|, + * |SupplicantStatusCode.FAILURE_IFACE_INVALID| + */ + void addGroup(in boolean persistent, in int persistentNetworkId); + + /** + * Set up a P2P group owner or join a group as a group client + * with the specified configuration. + * + * If joinExistingGroup is false, this device sets up a P2P group owner manually (i.e., + * without group owner negotiation with a specific peer) with the specified SSID, + * passphrase, persistent mode, and frequency/band. + * + * If joinExistingGroup is true, this device acts as a group client and joins the group + * whose network name and group owner's MAC address matches the specified SSID + * and peer address without WPS process. If peerAddress is 00:00:00:00:00:00, the first found + * group whose network name matches the specified SSID is joined. + * + * @param ssid The SSID of this group. + * @param pskPassphrase The passphrase of this group. + * @param persistent Used to request a persistent group to be formed, + * only applied for the group owner. + * @param freq The required frequency or band for this group. + * only applied for the group owner. + * The following values are supported: + * 0: automatic channel selection, + * 2: for 2.4GHz channels + * 5: for 5GHz channels + * specific frequency, i.e., 2412, 5500, etc. + * If an invalid band or unsupported frequency are specified, it fails. + * @param peerAddress the group owner's MAC address, only applied for the group client. + * If the MAC is "00:00:00:00:00:00", the device must try to find a peer + * whose network name matches the specified SSID. + * @param joinExistingGroup if true, join a group as a group client; otherwise, + * create a group as a group owner. + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_UNKNOWN|, + * |SupplicantStatusCode.FAILURE_IFACE_INVALID| + */ + void addGroupWithConfig(in byte[] ssid, in String pskPassphrase, in boolean persistent, + in int freq, in byte[] peerAddress, in boolean joinExistingGroup); + + /** + * Add a new network to the interface. + * + * @return AIDL interface object representing the new network if + * successful, null otherwise. + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_UNKNOWN|, + * |SupplicantStatusCode.FAILURE_IFACE_INVALID| + */ + ISupplicantP2pNetwork addNetwork(); + + /** + * This command can be used to add a UPNP service. + * + * @param version Version to be used. + * @package serviceName Service name to be used. + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_UNKNOWN|, + * |SupplicantStatusCode.FAILURE_IFACE_INVALID| + */ + void addUpnpService(in int version, in String serviceName); + + /** + * Cancel an ongoing P2P group formation and joining-a-group related + * operation. This operation unauthorizes the specific peer device (if any + * had been authorized to start group formation), stops P2P find (if in + * progress), stops pending operations for join-a-group, and removes the + * P2P group interface (if one was used) that is in the WPS provisioning + * step. If the WPS provisioning step has been completed, the group is not + * terminated. + * + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_NOT_STARTED|, + * |SupplicantStatusCode.FAILURE_UNKNOWN|, + * |SupplicantStatusCode.FAILURE_IFACE_INVALID| + */ + void cancelConnect(); + + /** + * Cancel a previous service discovery request. + * + * @param identifier Identifier for the request to cancel. + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_NOT_STARTED|, + * |SupplicantStatusCode.FAILURE_UNKNOWN|, + * |SupplicantStatusCode.FAILURE_IFACE_INVALID| + */ + void cancelServiceDiscovery(in long identifier); + + /** + * Cancel any ongoing WPS operations. + * + * @param groupIfName Group interface name to use. + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_UNKNOWN|, + * |SupplicantStatusCode.FAILURE_IFACE_INVALID| + */ + void cancelWps(in String groupIfName); + + /** + * Configure Extended Listen Timing. + * + * If enabled, listen state must be entered every |intervalInMillis| for at + * least |periodInMillis|. Both values have acceptable range of 1-65535 + * (with interval obviously having to be larger than or equal to duration). + * If the P2P module is not idle at the time the Extended Listen Timing + * timeout occurs, the Listen State operation must be skipped. + * + * @param periodInMillis Period in milliseconds. + * @param intervalInMillis Interval in milliseconds. + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_ARGS_INVALID|, + * |SupplicantStatusCode.FAILURE_UNKNOWN|, + * |SupplicantStatusCode.FAILURE_IFACE_INVALID| + */ + void configureExtListen(in int periodInMillis, in int intervalInMillis); + + /** + * Start P2P group formation with a discovered P2P peer. This includes + * optional group owner negotiation, group interface setup, provisioning, + * and establishing data connection. + * + * @param peerAddress MAC address of the device to connect to. + * @param provisionMethod Provisioning method to use. + * @param preSelectedPin Pin to be used, if |provisionMethod| uses one of the + * preselected |PIN*| methods. + * @param joinExistingGroup Indicates that this is a command to join an + * existing group as a client. It skips the group owner negotiation + * part. This must send a Provision Discovery Request message to the + * target group owner before associating for WPS provisioning. + * @param persistent Used to request a persistent group to be formed. + * @param goIntent Used to override the default Intent for this group owner + * negotiation (Values from 1-15). Refer to section 4.1.6 in + * Wi-Fi Peer-to-Peer (P2P) Technical Specification Version 1.7. + * @return Pin generated, if |provisionMethod| uses one of the + * generated |PIN*| methods. + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_ARGS_INVALID|, + * |SupplicantStatusCode.FAILURE_UNKNOWN|, + * |SupplicantStatusCode.FAILURE_IFACE_INVALID| + */ + String connect(in byte[] peerAddress, in WpsProvisionMethod provisionMethod, + in String preSelectedPin, in boolean joinExistingGroup, in boolean persistent, + in int goIntent); + + /** + * Creates a NFC handover request message. + * + * @return Bytes representing the handover request as specified in + * section 3.1.1 of NFC Connection Handover 1.2 Technical + * Specification. + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_UNKNOWN|, + * |SupplicantStatusCode.FAILURE_IFACE_INVALID| + */ + byte[] createNfcHandoverRequestMessage(); + + /** + * Creates a NFC handover select message. + * + * @return Bytes representing the handover select as specified in + * section 3.1.2 of NFC Connection Handover 1.2 Technical + * Specification. + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_UNKNOWN|, + * |SupplicantStatusCode.FAILURE_IFACE_INVALID| + */ + byte[] createNfcHandoverSelectMessage(); + + /** + * Enable/Disable Wifi Display. + * + * @param enable true to enable, false to disable. + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_UNKNOWN|, + * |SupplicantStatusCode.FAILURE_IFACE_INVALID| + */ + void enableWfd(in boolean enable); + + /** + * Initiate a P2P service discovery with an optional timeout. + * + * @param timeoutInSec Max time to be spent is performing discovery. + * Set to 0 to indefinely continue discovery until an explicit + * |stopFind| is sent. + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_UNKNOWN|, + * |SupplicantStatusCode.FAILURE_IFACE_INVALID| + * |SupplicantStatusCode.FAILURE_IFACE_DISABLED| + */ + void find(in int timeoutInSec); + + /** + * Flush P2P peer table and state. + * + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_UNKNOWN|, + * |SupplicantStatusCode.FAILURE_IFACE_INVALID| + */ + void flush(); + + /** + * This command can be used to flush all services from the + * device. + * + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_UNKNOWN|, + * |SupplicantStatusCode.FAILURE_IFACE_INVALID| + */ + void flushServices(); + + /** + * Gets the MAC address of the device. + * + * @return MAC address of the device. + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_UNKNOWN|, + * |SupplicantStatusCode.FAILURE_IFACE_INVALID| + */ + byte[] getDeviceAddress(); + + /** + * Get whether EDMG(802.11ay) is enabled for this network. + * + * @return true if set, false otherwise. + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| + */ + boolean getEdmg(); + + /** + * Gets the capability of the group which the device is a + * member of. + * + * @param peerAddress MAC address of the peer. + * @return Combination of |P2pGroupCapabilityMask| values. + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_UNKNOWN|, + * |SupplicantStatusCode.FAILURE_IFACE_INVALID| + */ + P2pGroupCapabilityMask getGroupCapability(in byte[] peerAddress); + + /** + * Retrieves the name of the network interface. + * + * @return Name of the network interface, e.g., wlan0 + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_IFACE_INVALID| + */ + String getName(); + + /** + * Gets an AIDL interface object for the network corresponding to the + * network id. + * + * Use |ISupplicantP2pNetwork.getId()| on the corresponding network AIDL + * interface object to retrieve the ID. + * + * @param id Network ID allocated to the corresponding network. + * @return AIDL interface object representing the new network if + * successful, null otherwise. + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_UNKNOWN|, + * |SupplicantStatusCode.FAILURE_IFACE_INVALID|, + * |SupplicantStatusCode.FAILURE_NETWORK_UNKNOWN| + */ + ISupplicantP2pNetwork getNetwork(in int id); + + /** + * Gets the operational SSID of the device. + * + * @param peerAddress MAC address of the peer. + * @return SSID of the device + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_UNKNOWN|, + * |SupplicantStatusCode.FAILURE_IFACE_INVALID| + */ + byte[] getSsid(in byte[] peerAddress); + + /** + * Retrieves the type of the network interface. + * + * @return Type of the network interface, e.g., STA. + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_IFACE_INVALID| + */ + IfaceType getType(); + + /** + * Invite a device to a persistent group. + * If the peer device is the group owner of the persistent group, the peer + * parameter is not needed. Otherwise it is used to specify which + * device to invite. |goDeviceAddress| parameter may be used to override + * the group owner device address for Invitation Request should it not be + * known for some reason (this should not be needed in most cases). + * + * @param groupIfName Group interface name to use. + * @param goDeviceAddress MAC address of the group owner device. + * @param peerAddress MAC address of the device to invite. + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_UNKNOWN|, + * |SupplicantStatusCode.FAILURE_IFACE_INVALID| + */ + void invite(in String groupIfName, in byte[] goDeviceAddress, in byte[] peerAddress); + + /** + * Retrieve a list of all the network Id's controlled by the supplicant. + * + * The corresponding |ISupplicantP2pNetwork| object for any network can be + * retrieved using the |getNetwork| method. + * + * @return List of all network Id's controlled by the supplicant. + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_IFACE_INVALID|, + * |SupplicantStatusCode.FAILURE_UNKNOWN| + */ + int[] listNetworks(); + + /** + * Send P2P provision discovery request to the specified peer. The + * parameters for this command are the P2P device address of the peer and the + * desired configuration method. + * + * @param peerAddress MAC address of the device to send discovery. + * @method provisionMethod Provisioning method to use. + * |SupplicantStatusCode.FAILURE_UNKNOWN|, + * |SupplicantStatusCode.FAILURE_IFACE_INVALID| + */ + void provisionDiscovery(in byte[] peerAddress, in WpsProvisionMethod provisionMethod); + + /** + * Register for callbacks from this interface. + * + * These callbacks are invoked for events that are specific to this interface. + * Registration of multiple callback objects is supported. These objects must + * be automatically deleted when the corresponding client process is dead or + * if this interface is removed. + * + * @param callback An instance of the |ISupplicantP2pIfaceCallback| AIDL + * interface object. + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_UNKNOWN|, + * |SupplicantStatusCode.FAILURE_IFACE_INVALID| + */ + void registerCallback(in ISupplicantP2pIfaceCallback callback); + + /** + * Reinvoke a device from a persistent group. + * + * @param persistentNetworkId Used to specify the persistent group. + * @param peerAddress MAC address of the device to reinvoke. + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_UNKNOWN|, + * |SupplicantStatusCode.FAILURE_IFACE_INVALID| + */ + void reinvoke(in int persistentNetworkId, in byte[] peerAddress); + + /** + * Reject connection attempt from a peer (specified with a device + * address). This is a mechanism to reject a pending group owner negotiation + * with a peer and request to automatically block any further connection or + * discovery of the peer. + * + * @param peerAddress MAC address of the device to reject. + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_UNKNOWN|, + * |SupplicantStatusCode.FAILURE_IFACE_INVALID| + * |SupplicantStatusCode.FAILURE_IFACE_DISABLED| + */ + void reject(in byte[] peerAddress); + + /** + * This command can be used to remove a bonjour service. + * + * @param query Hex dump of the query data. + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_UNKNOWN|, + * |SupplicantStatusCode.FAILURE_NOT_STARTED|, + * |SupplicantStatusCode.FAILURE_IFACE_INVALID| + */ + void removeBonjourService(in byte[] query); + + /** + * Terminate a P2P group. If a new virtual network interface was used for + * the group, it must also be removed. The network interface name of the + * group interface is used as a parameter for this command. + * + * @param groupIfName Group interface name to use. + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_UNKNOWN|, + * |SupplicantStatusCode.FAILURE_IFACE_INVALID| + */ + void removeGroup(in String groupIfName); + + /** + * Remove a network from the interface. + * + * Use |ISupplicantP2pNetwork.getId()| on the corresponding network AIDL + * interface object to retrieve the ID. + * + * @param id Network ID allocated to the corresponding network. + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_UNKNOWN|, + * |SupplicantStatusCode.FAILURE_IFACE_INVALID|, + * |SupplicantStatusCode.FAILURE_NETWORK_UNKNOWN| + */ + void removeNetwork(in int id); + + /** + * This command can be used to remove a UPNP service. + * + * @param version Version to be used. + * @package serviceName Service name to be used. + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_UNKNOWN|, + * |SupplicantStatusCode.FAILURE_NOT_STARTED|, + * |SupplicantStatusCode.FAILURE_IFACE_INVALID| + */ + void removeUpnpService(in int version, in String serviceName); + + /** + * Report the initiation of the NFC handover select. + * + * @param select Bytes representing the handover select as specified in + * section 3.1.2 of NFC Connection Handover 1.2 Technical + * Specification. + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_UNKNOWN|, + * |SupplicantStatusCode.FAILURE_IFACE_INVALID| + */ + void reportNfcHandoverInitiation(in byte[] select); + + /** + * Report the response of the NFC handover request. + * + * @param request Bytes representing the handover request as specified in + * section 3.1.1 of NFC Connection Handover 1.2 Technical + * Specification. + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_UNKNOWN|, + * |SupplicantStatusCode.FAILURE_IFACE_INVALID| + */ + void reportNfcHandoverResponse(in byte[] request); + + /** + * Schedule a P2P service discovery request. The parameters for this command + * are the device address of the peer device (or 00:00:00:00:00:00 for + * wildcard query that is sent to every discovered P2P peer that supports + * service discovery) and P2P Service Query TLV(s) as hexdump. + * + * @param peerAddress MAC address of the device to discover. + * @param query Hex dump of the query data. + * @return Identifier for the request. Can be used to cancel the + * request. + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_UNKNOWN|, + * |SupplicantStatusCode.FAILURE_IFACE_INVALID| + */ + long requestServiceDiscovery(in byte[] peerAddress, in byte[] query); + + /** + * Persist the current configuration to disk. + * + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_UNKNOWN|, + * |SupplicantStatusCode.FAILURE_IFACE_INVALID| + */ + void saveConfig(); + + /** + * Set P2P disallowed frequency ranges. + * + * Specify ranges of frequencies that are disallowed for any P2P operations. + * + * @param ranges List of ranges which needs to be disallowed. + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_UNKNOWN|, + * |SupplicantStatusCode.FAILURE_IFACE_INVALID| + */ + void setDisallowedFrequencies(in FreqRange[] ranges); + + /** + * Set whether to enable EDMG(802.11ay). Only allowed if hw mode is |HOSTAPD_MODE_IEEE80211AD| + * + * @param enable true to set, false otherwise. + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_UNKNOWN|, + * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| + */ + void setEdmg(in boolean enable); + + /** + * Set the Maximum idle time in seconds for P2P groups. + * This value controls how long a P2P group is maintained after there + * is no other members in the group. As a group owner, this means no + * associated stations in the group. As a P2P client, this means no + * group owner seen in scan results. + * + * @param groupIfName Group interface name to use. + * @param timeoutInSec Timeout value in seconds. + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_UNKNOWN|, + * |SupplicantStatusCode.FAILURE_IFACE_INVALID| + */ + void setGroupIdle(in String groupIfName, in int timeoutInSec); + + /** + * Set P2P Listen channel. + * + * When specifying a social channel on the 2.4 GHz band (1/6/11) there is no + * need to specify the operating class since it defaults to 81. When + * specifying a social channel on the 60 GHz band (2), specify the 60 GHz + * operating class (180). + * + * @param channel Wifi channel. eg, 1, 6, 11. + * @param operatingClass Operating Class indicates the channel set of the AP + * indicated by this BSSID + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_UNKNOWN|, + * |SupplicantStatusCode.FAILURE_IFACE_INVALID| + */ + void setListenChannel(in int channel, in int operatingClass); + + /** + * Set MAC randomization enabled/disabled. + * + * @param enable true to enable, false to disable. + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_UNKNOWN|, + * |SupplicantStatusCode.FAILURE_IFACE_INVALID| + */ + void setMacRandomization(in boolean enable); + + /** + * Send driver command to set Miracast mode. + * + * @param mode Mode of Miracast. + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_UNKNOWN|, + * |SupplicantStatusCode.FAILURE_IFACE_INVALID| + */ + void setMiracastMode(in MiracastMode mode); + + /** + * Turn on/off power save mode for the interface. + * + * @param groupIfName Group interface name to use. + * @param enable Indicate if power save is to be turned on/off. + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_UNKNOWN|, + * |SupplicantStatusCode.FAILURE_IFACE_INVALID|, + * |SupplicantStatusCode.FAILURE_IFACE_DISABLED| + */ + void setPowerSave(in String groupIfName, in boolean enable); + + /** + * Set the postfix to be used for P2P SSID's. + * + * @param postfix String to be appended to SSID. + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_ARGS_INVALID|, + * |SupplicantStatusCode.FAILURE_UNKNOWN|, + * |SupplicantStatusCode.FAILURE_IFACE_INVALID| + */ + void setSsidPostfix(in byte[] postfix); + + /** + * Set Wifi Display device info. + * + * @param info WFD device info as described in section 5.1.2 of WFD technical + * specification v1.0.0. + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_UNKNOWN|, + * |SupplicantStatusCode.FAILURE_IFACE_INVALID| + */ + void setWfdDeviceInfo(in byte[] info); + + /** + * Set Wifi Display R2 device info. + * + * @param info WFD R2 device info as described in section 5.1.12 of WFD technical + * specification v2.1. + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_UNKNOWN|, + * |SupplicantStatusCode.FAILURE_IFACE_INVALID| + */ + void setWfdR2DeviceInfo(in byte[] info); + + /** + * Set the list of supported config methods for WPS operations. + * + * @param configMethods Mask of WPS configuration methods supported by the + * device. + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_IFACE_INVALID|, + * |SupplicantStatusCode.FAILURE_UNKNOWN| + */ + void setWpsConfigMethods(in WpsConfigMethods configMethods); + + /** + * Set the device name for WPS operations. + * User-friendly description of device (up to |WPS_DEVICE_NAME_MAX_LEN| + * octets encoded in UTF-8). + * + * @param name Name to be set. + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_IFACE_INVALID|, + * |SupplicantStatusCode.FAILURE_UNKNOWN| + */ + void setWpsDeviceName(in String name); + + /** + * Set the device type for WPS operations. + * + * @param type Type of device. Refer to section B.1 of Wifi P2P + * Technical specification v1.2. + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_IFACE_INVALID|, + * |SupplicantStatusCode.FAILURE_UNKNOWN| + */ + void setWpsDeviceType(in byte[] type); + + /** + * Set the manufacturer for WPS operations. + * The manufacturer of the device (up to |WPS_MANUFACTURER_MAX_LEN| ASCII + * characters). + * + * @param manufacturer Manufacture to be set. + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_IFACE_INVALID|, + * |SupplicantStatusCode.FAILURE_UNKNOWN| + */ + void setWpsManufacturer(in String manufacturer); + + /** + * Set the model name for WPS operations. + * Model of the device (up to |WPS_MODEL_NAME_MAX_LEN| ASCII characters). + * + * @param modelName Model name to be set. + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_IFACE_INVALID|, + * |SupplicantStatusCode.FAILURE_UNKNOWN| + */ + void setWpsModelName(in String modelName); + + /** + * Set the model number for WPS operations. + * Additional device description (up to |WPS_MODEL_NUMBER_MAX_LEN| ASCII + * characters). + * + * @param modelNumber Model number to be set. + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_IFACE_INVALID|, + * |SupplicantStatusCode.FAILURE_UNKNOWN| + */ + void setWpsModelNumber(in String modelNumber); + + /** + * Set the serial number for WPS operations. + * Serial number of the device (up to |WPS_SERIAL_NUMBER_MAX_LEN| characters) + * + * @param serialNumber Serial number to be set. + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_IFACE_INVALID|, + * |SupplicantStatusCode.FAILURE_UNKNOWN| + */ + void setWpsSerialNumber(in String serialNumber); + + /** + * Initiate WPS Push Button setup. + * The PBC operation requires that a button is also pressed at the + * AP/Registrar at about the same time (2 minute window). + * + * @param groupIfName Group interface name to use. + * @param bssid BSSID of the AP. Use zero'ed bssid to indicate wildcard. + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_UNKNOWN|, + * |SupplicantStatusCode.FAILURE_IFACE_INVALID| + */ + void startWpsPbc(in String groupIfName, in byte[] bssid); + + /** + * Initiate WPS Pin Display setup. + * + * @param groupIfName Group interface name to use. + * @param bssid BSSID of the AP. Use zero'ed bssid to indicate wildcard. + * @return 8 digit pin generated. + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_UNKNOWN|, + * |SupplicantStatusCode.FAILURE_IFACE_INVALID| + */ + String startWpsPinDisplay(in String groupIfName, in byte[] bssid); + + /** + * Initiate WPS Pin Keypad setup. + * + * @param groupIfName Group interface name to use. + * @param pin 8 digit pin to be used. + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_UNKNOWN|, + * |SupplicantStatusCode.FAILURE_IFACE_INVALID| + */ + void startWpsPinKeypad(in String groupIfName, in String pin); + + /** + * Stop an ongoing P2P service discovery. + * + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_UNKNOWN|, + * |SupplicantStatusCode.FAILURE_IFACE_INVALID| + * |SupplicantStatusCode.FAILURE_IFACE_DISABLED| + */ + void stopFind(); +} diff --git a/wifi/supplicant/aidl/android/hardware/wifi/supplicant/ISupplicantP2pIfaceCallback.aidl b/wifi/supplicant/aidl/android/hardware/wifi/supplicant/ISupplicantP2pIfaceCallback.aidl new file mode 100644 index 0000000000..f0cabd6ff8 --- /dev/null +++ b/wifi/supplicant/aidl/android/hardware/wifi/supplicant/ISupplicantP2pIfaceCallback.aidl @@ -0,0 +1,208 @@ +/* + * 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 android.hardware.wifi.supplicant; + +import android.hardware.wifi.supplicant.P2pGroupCapabilityMask; +import android.hardware.wifi.supplicant.P2pProvDiscStatusCode; +import android.hardware.wifi.supplicant.P2pStatusCode; +import android.hardware.wifi.supplicant.WpsConfigMethods; +import android.hardware.wifi.supplicant.WpsDevPasswordId; + +/** + * Callback Interface exposed by the supplicant service + * for each P2P mode interface (ISupplicantP2pIface). + * + * Clients need to host an instance of this AIDL interface object and + * pass a reference of the object to the supplicant via the + * corresponding |ISupplicantP2pIface.registerCallback| method. + */ +@VintfStability +interface ISupplicantP2pIfaceCallback { + /** + * Used to indicate that a P2P device has been found. + * + * @param srcAddress MAC address of the device found. This must either + * be the P2P device address or the P2P interface address. + * @param p2pDeviceAddress P2P device address. + * @param primaryDeviceType Type of device. Refer to section B.1 of Wifi P2P + * Technical specification v1.2. + * @param deviceName Name of the device. + * @param configMethods Mask of WPS configuration methods supported by the + * device. + * @param deviceCapabilities Refer to section 4.1.4 of Wifi P2P Technical + * specification v1.2. + * @param groupCapabilites Refer to section 4.1.4 of Wifi P2P Technical + * specification v1.2. + * @param wfdDeviceInfo WFD device info as described in section 5.1.2 of WFD + * technical specification v1.0.0. + */ + oneway void onDeviceFound(in byte[] srcAddress, in byte[] p2pDeviceAddress, + in byte[] primaryDeviceType, in String deviceName, in WpsConfigMethods configMethods, + in byte deviceCapabilities, in P2pGroupCapabilityMask groupCapabilities, + in byte[] wfdDeviceInfo); + + /** + * Used to indicate that a P2P device has been lost. + * + * @param p2pDeviceAddress P2P device address. + */ + oneway void onDeviceLost(in byte[] p2pDeviceAddress); + + /** + * Used to indicate the termination of P2P find operation. + */ + oneway void onFindStopped(); + + /** + * Used to indicate the completion of a P2P Group Owner negotiation request. + * + * @param status Status of the GO negotiation. + */ + oneway void onGoNegotiationCompleted(in P2pStatusCode status); + + /** + * Used to indicate the reception of a P2P Group Owner negotiation request. + * + * @param srcAddress MAC address of the device that initiated the GO + * negotiation request. + * @param passwordId Type of password. + */ + oneway void onGoNegotiationRequest(in byte[] srcAddress, in WpsDevPasswordId passwordId); + + /** + * Used to indicate a failure to form a P2P group. + * + * @param failureReason Failure reason string for debug purposes. + */ + oneway void onGroupFormationFailure(in String failureReason); + + /** + * Used to indicate a successful formation of a P2P group. + */ + oneway void onGroupFormationSuccess(); + + /** + * Used to indicate the removal of a P2P group. + * + * @param groupIfName Interface name of the group. (For ex: p2p-p2p0-1) + * @param isGroupOwner Whether this device is owner of the group. + */ + oneway void onGroupRemoved(in String groupIfname, in boolean isGroupOwner); + + /** + * Used to indicate the start of a P2P group. + * + * @param groupIfName Interface name of the group. (For ex: p2p-p2p0-1) + * @param isGroupOwner Whether this device is owner of the group. + * @param ssid SSID of the group. + * @param frequency Frequency on which this group is created. + * @param psk PSK used to secure the group. + * @param passphrase PSK passphrase used to secure the group. + * @param goDeviceAddress MAC Address of the owner of this group. + * @param isPersistent Whether this group is persisted or not. + */ + oneway void onGroupStarted(in String groupIfname, in boolean isGroupOwner, in byte[] ssid, + in int frequency, in byte[] psk, in String passphrase, in byte[] goDeviceAddress, + in boolean isPersistent); + + /** + * Used to indicate the reception of a P2P invitation. + * + * @param srcAddress MAC address of the device that sent the invitation. + * @param goDeviceAddress MAC Address of the owner of this group. + * @param bssid Bssid of the group. + * @param persistentNetworkId Persistent network Id of the group. + * @param operatingFrequency Frequency on which the invitation was received. + */ + oneway void onInvitationReceived(in byte[] srcAddress, in byte[] goDeviceAddress, + in byte[] bssid, in int persistentNetworkId, in int operatingFrequency); + + /** + * Used to indicate the result of the P2P invitation request. + * + * @param bssid Bssid of the group. + * @param status Status of the invitation. + */ + oneway void onInvitationResult(in byte[] bssid, in P2pStatusCode status); + + /** + * Used to indicate the completion of a P2P provision discovery request. + * + * @param p2pDeviceAddress P2P device address. + * @param isRequest Whether we received or sent the provision discovery. + * @param status Status of the provision discovery. + * @param configMethods Mask of WPS configuration methods supported. + * @param generatedPin 8 digit pin generated. + */ + oneway void onProvisionDiscoveryCompleted(in byte[] p2pDeviceAddress, in boolean isRequest, + in P2pProvDiscStatusCode status, in WpsConfigMethods configMethods, + in String generatedPin); + + /** + * Used to indicate that a P2P Wi-Fi Display R2 device has been found. Refer to + * Wi-Fi Display Technical Specification Version 2.0. + * + * @param srcAddress MAC address of the device found. This must either + * be the P2P device address for a peer which is not in a group, + * or the P2P interface address for a peer which is a Group Owner. + * @param p2pDeviceAddress P2P device address. + * @param primaryDeviceType Type of device. Refer to section B.1 of Wifi P2P + * Technical specification v1.2. + * @param deviceName Name of the device. + * @param configMethods Mask of WPS configuration methods supported by the + * device. + * @param deviceCapabilities Refer to section 4.1.4 of Wifi P2P Technical + * specification v1.2. + * @param groupCapabilites Refer to section 4.1.4 of Wifi P2P Technical + * specification v1.2. + * @param wfdDeviceInfo WFD device info as described in section 5.1.2 of WFD + * technical specification v1.0.0. + * @param wfdR2DeviceInfo WFD R2 device info as described in section 5.1.12 of WFD + * technical specification v2.1. + */ + oneway void onR2DeviceFound(in byte[] srcAddress, in byte[] p2pDeviceAddress, + in byte[] primaryDeviceType, in String deviceName, in WpsConfigMethods configMethods, + in byte deviceCapabilities, in P2pGroupCapabilityMask groupCapabilities, + in byte[] wfdDeviceInfo, in byte[] wfdR2DeviceInfo); + + /** + * Used to indicate the reception of a P2P service discovery response. + * + * @param srcAddress MAC address of the device that sent the service discovery. + * @param updateIndicator Service update indicator. Refer to section 3.1.3 of + * Wifi P2P Technical specification v1.2. + * @parm tlvs Refer to section 3.1.3.1 of Wifi P2P Technical specification v1.2. + */ + oneway void onServiceDiscoveryResponse( + in byte[] srcAddress, in char updateIndicator, in byte[] tlvs); + + /** + * Used to indicate when a STA device is connected to this device. + * + * @param srcAddress MAC address of the device that was authorized. + * @param p2pDeviceAddress P2P device address. + */ + oneway void onStaAuthorized(in byte[] srcAddress, in byte[] p2pDeviceAddress); + + /** + * Used to indicate when a STA device is disconnected from this device. + * + * @param srcAddress MAC address of the device that was deauthorized. + * @param p2pDeviceAddress P2P device address. + */ + oneway void onStaDeauthorized(in byte[] srcAddress, in byte[] p2pDeviceAddress); +} diff --git a/wifi/supplicant/aidl/android/hardware/wifi/supplicant/ISupplicantP2pNetwork.aidl b/wifi/supplicant/aidl/android/hardware/wifi/supplicant/ISupplicantP2pNetwork.aidl new file mode 100644 index 0000000000..f037252776 --- /dev/null +++ b/wifi/supplicant/aidl/android/hardware/wifi/supplicant/ISupplicantP2pNetwork.aidl @@ -0,0 +1,131 @@ +/* + * 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 android.hardware.wifi.supplicant; + +import android.hardware.wifi.supplicant.IfaceType; +import android.hardware.wifi.supplicant.MacAddress; + +/** + * Interface exposed by the supplicant for each P2P mode network + * configuration it controls. + */ +@VintfStability +interface ISupplicantP2pNetwork { + /** + * Get the BSSID set for this network. + * + * @return bssid Value set. + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| + */ + byte[] getBssid(); + + /** + * Get the list of P2P Clients in a persistent group (GO). + * This is a list of P2P Clients (P2P Device Address) that have joined + * the persistent group. This is maintained on the GO for persistent + * group entries (disabled == 2). + * + * @return MAC addresses of the clients. + * @throws ServiceSpecificException with one of the following values: + * |SupplicantP2ptusCode.FAILURE_UNKNOWN|, + * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| + */ + MacAddress[] getClientList(); + + /** + * Retrieves the ID allocated to this network by the supplicant. + * + * This is not the |SSID| of the network, but an internal identifier for + * this network used by the supplicant. + * + * @return Network ID. + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| + */ + int getId(); + + /** + * Retrieves the name of the interface this network belongs to. + * + * @return Name of the network interface, e.g., wlan0 + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| + */ + String getInterfaceName(); + + /** + * Getters for the various network params. + * + * + * Get SSID for this network. + * + * @return ssid value set. + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| + */ + byte[] getSsid(); + + /** + * Retrieves the type of the interface this network belongs to. + * + * @return Type of the network interface, e.g., STA. + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_IFACE_INVALID| + */ + IfaceType getType(); + + /** + * Check if the network is currently active one. + * + * @return true if current, false otherwise. + * @throws ServiceSpecificException with one of the following values:, + * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| + */ + boolean isCurrent(); + + /** + * Check if the device is the group owner of the network. + * + * @return true if group owner, false otherwise. + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| + */ + boolean isGroupOwner(); + + /** + * Check if the network is marked persistent. + * + * @return true if persistent, false otherwise. + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| + */ + boolean isPersistent(); + + /** + * Set the list of P2P Clients in a persistent group (GO). + * This is a list of P2P Clients (P2P Device Address) that have joined + * the persistent group. This is maintained on the GO for persistent + * group entries (disabled == 2). + * + * @param clients MAC address of the clients. + * @throws ServiceSpecificException with one of the following values: + * |SupplicantP2ptusCode.FAILURE_UNKNOWN|, + * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| + */ + void setClientList(in MacAddress[] clients); +} diff --git a/wifi/supplicant/aidl/android/hardware/wifi/supplicant/ISupplicantStaIface.aidl b/wifi/supplicant/aidl/android/hardware/wifi/supplicant/ISupplicantStaIface.aidl new file mode 100644 index 0000000000..b48fa04910 --- /dev/null +++ b/wifi/supplicant/aidl/android/hardware/wifi/supplicant/ISupplicantStaIface.aidl @@ -0,0 +1,715 @@ +/* + * 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 android.hardware.wifi.supplicant; + +import android.hardware.wifi.supplicant.AnqpInfoId; +import android.hardware.wifi.supplicant.BtCoexistenceMode; +import android.hardware.wifi.supplicant.ConnectionCapabilities; +import android.hardware.wifi.supplicant.DppAkm; +import android.hardware.wifi.supplicant.DppCurve; +import android.hardware.wifi.supplicant.DppNetRole; +import android.hardware.wifi.supplicant.DppResponderBootstrapInfo; +import android.hardware.wifi.supplicant.Hs20AnqpSubtypes; +import android.hardware.wifi.supplicant.ISupplicantStaIfaceCallback; +import android.hardware.wifi.supplicant.ISupplicantStaNetwork; +import android.hardware.wifi.supplicant.IfaceType; +import android.hardware.wifi.supplicant.KeyMgmtMask; +import android.hardware.wifi.supplicant.RxFilterType; +import android.hardware.wifi.supplicant.WpaDriverCapabilitiesMask; +import android.hardware.wifi.supplicant.WpsConfigMethods; + +/** + * Interface exposed by the supplicant for each station mode network + * interface (e.g wlan0) it controls. + */ +@VintfStability +interface ISupplicantStaIface { + /** + * Add a DPP peer URI. URI is acquired externally, e.g. by scanning a QR code + * + * @param uri Peer's DPP URI. + * @return ID for the URI + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_ARGS_INVALID|, + * |SupplicantStatusCode.FAILURE_UNKNOWN|, + * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| + */ + int addDppPeerUri(in String uri); + + /** + * External programs can request supplicant to not start offchannel + * operations during other tasks that may need exclusive control of the + * radio. + * + * This method can be used to reserve a slot for radio access. If freq is + * specified, other radio work items on the same channel can be completed in + * parallel. Otherwise, all other radio work items are blocked during + * execution. Timeout must be set to |ExtRadioWorkDefaults.TIMEOUT_IN_SECS| + * seconds by default to avoid blocking supplicant operations on the iface + * for excessive time. If a longer (or shorter) safety timeout is needed, + * that may be specified with the optional timeout parameter. This command + * returns an identifier for the radio work item. + * + * Once the radio work item has been started, + * |ISupplicant.onExtRadioWorkStart| callback is indicated that the external + * processing can start. + * + * @param name Name for the radio work being added. + * @param freqInMhz Frequency to specify. Set to 0 for all channels. + * @param timeoutInSec Timeout to specify. Set to 0 for default timeout. + * @return Identifier for this radio work. + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_UNKNOWN| + */ + int addExtRadioWork(in String name, in int freqInMhz, in int timeoutInSec); + + /** + * Add a new network to the interface. + * + * @return AIDL interface object representing the new network if + * successful, null otherwise. + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_UNKNOWN|, + * |SupplicantStatusCode.FAILURE_IFACE_INVALID| + */ + ISupplicantStaNetwork addNetwork(); + + /** + * Send driver command to add the specified RX filter. + * + * @param type Type of filter. + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_UNKNOWN|, + * |SupplicantStatusCode.FAILURE_IFACE_INVALID| + */ + void addRxFilter(in RxFilterType type); + + /** + * Cancel any ongoing WPS operations. + * + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_UNKNOWN|, + * |SupplicantStatusCode.FAILURE_IFACE_INVALID| + */ + void cancelWps(); + + /** + * Disconnect from the current active network. + * + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_UNKNOWN|, + * |SupplicantStatusCode.FAILURE_IFACE_INVALID|, + * |SupplicantStatusCode.FAILURE_IFACE_DISABLED| + */ + void disconnect(); + + /** + * Enable/Disable auto reconnect to networks. + * Use this to prevent wpa_supplicant from trying to connect to networks + * on its own. + * + * @param enable true to enable, false to disable. + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_UNKNOWN|, + * |SupplicantStatusCode.FAILURE_IFACE_INVALID|, + * |SupplicantStatusCode.FAILURE_IFACE_DISABLED| + */ + void enableAutoReconnect(in boolean enable); + + /** + * Add fast initial link setup (IEEE 802.11ai FILS) HLP packets. + * Use this to add higher layer protocol (HLP) packet in FILS (Re)Association Request frame + * (Eg: DHCP discover packet). + * + * @param dst_mac MAC address of the destination + * @param pkt The contents of the HLP packet starting from ethertype + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_UNKNOWN|, + * |SupplicantStatusCode.FAILURE_IFACE_INVALID|, + * |SupplicantStatusCode.FAILURE_IFACE_DISABLED| + */ + void filsHlpAddRequest(in byte[] dst_mac, in byte[] pkt); + + /** + * Flush fast initial link setup (IEEE 802.11ai FILS) HLP packets. + * Use this to flush all the higher layer protocol (HLP) packets added in + * wpa_supplicant to send in FILS (Re)Association Request frame + * (Eg: DHCP discover packet). + * + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_UNKNOWN|, + * |SupplicantStatusCode.FAILURE_IFACE_INVALID|, + * |SupplicantStatusCode.FAILURE_IFACE_DISABLED| + */ + void filsHlpFlushRequest(); + + /** + * Generates DPP bootstrap information: Bootstrap ID, DPP URI and listen + * channel for responder mode. + * + * @param macAddress MAC address of the interface for the DPP operation. + * @param deviceInfo Device specific information. + * As per DPP Specification V1.0 section 5.2, + * allowed Range of ASCII characters in deviceInfo - %x20-7E + * semicolon is not allowed. + * @param curve Elliptic curve cryptography type used to generate DPP + * public/private key pair. + * @return Bootstrap info. + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_IFACE_INVALID|, + * |SupplicantStatusCode.FAILURE_UNKNOWN| + * |SupplicantStatusCode.FAILURE_UNSUPPORTED| + */ + DppResponderBootstrapInfo generateDppBootstrapInfoForResponder( + in byte[] macAddress, in String deviceInfo, in DppCurve curve); + + /** + * Get Connection capabilities + * + * @return Connection capabilities. + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_UNKNOWN| + */ + ConnectionCapabilities getConnectionCapabilities(); + + /** + * Get Key management capabilities of the device + * + * @return Bitmap of key management mask. + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_ARGS_INVALID|, + * |SupplicantStatusCode.FAILURE_NETWORK_INVALID|, + * |SupplicantStatusCode.FAILURE_UNKNOWN| + */ + KeyMgmtMask getKeyMgmtCapabilities(); + + /** + * Send driver command to get MAC address of the device. + * + * @return MAC address of the device. + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_UNKNOWN|, + * |SupplicantStatusCode.FAILURE_IFACE_INVALID| + */ + byte[] getMacAddress(); + + /** + * Retrieves the name of the network interface. + * + * @return Name of the network interface, e.g., wlan0 + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_IFACE_INVALID| + */ + String getName(); + + /** + * Gets an AIDL interface object for the network corresponding to the + * network id. + * + * Use |ISupplicantStaNetwork.getId()| on the corresponding network AIDL + * interface object to retrieve the ID. + * + * @param id Network ID allocated to the corresponding network. + * @return AIDL interface object representing the new network if + * successful, null otherwise. + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_UNKNOWN|, + * |SupplicantStatusCode.FAILURE_IFACE_INVALID|, + * |SupplicantStatusCode.FAILURE_NETWORK_UNKNOWN| + */ + ISupplicantStaNetwork getNetwork(in int id); + + /** + * Retrieves the type of the network interface. + * + * @return Type of the network interface, e.g., STA. + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_IFACE_INVALID| + */ + IfaceType getType(); + + /** + * Get wpa driver capabilities. + * + * @return Bitmap of wpa driver features. + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_UNKNOWN| + */ + WpaDriverCapabilitiesMask getWpaDriverCapabilities(); + + /** + * Initiate ANQP (for IEEE 802.11u Interworking/Hotspot 2.0) queries with the + * specified access point. + * The ANQP data fetched must be returned in the + * |ISupplicantStaIfaceCallback.onAnqpQueryDone| callback. + * + * @param macAddress MAC address of the access point. + * @param infoElements List of information elements to query for. + * @param subtypes List of HS20 subtypes to query for. + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_UNKNOWN|, + * |SupplicantStatusCode.FAILURE_IFACE_INVALID| + */ + void initiateAnqpQuery( + in byte[] macAddress, in AnqpInfoId[] infoElements, in Hs20AnqpSubtypes[] subTypes); + + /** + * Initiate the Hotspot 2.0 icon query with the specified accesss point. + * The icon data fetched must be returned in the + * |ISupplicantStaIfaceCallback.onHs20IconQueryDone| callback. + * + * @param macAddress MAC address of the access point. + * @param fileName Name of the file to request from the access point. + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_UNKNOWN|, + * |SupplicantStatusCode.FAILURE_IFACE_INVALID| + */ + void initiateHs20IconQuery(in byte[] macAddress, in String fileName); + + /** + * Initiate TDLS discover with the provided peer MAC address. + * + * @param macAddress MAC address of the peer. + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_UNKNOWN|, + * |SupplicantStatusCode.FAILURE_IFACE_INVALID| + */ + void initiateTdlsDiscover(in byte[] macAddress); + + /** + * Initiate TDLS setup with the provided peer MAC address. + * + * @param macAddress MAC address of the peer. + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_UNKNOWN|, + * |SupplicantStatusCode.FAILURE_IFACE_INVALID| + */ + void initiateTdlsSetup(in byte[] macAddress); + + /** + * Initiate TDLS teardown with the provided peer MAC address. + * + * @param macAddress MAC address of the peer. + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_UNKNOWN|, + * |SupplicantStatusCode.FAILURE_IFACE_INVALID| + */ + void initiateTdlsTeardown(in byte[] macAddress); + + /** + * Initiate Venue URL ANQP (for IEEE 802.11u Interworking/Hotspot 2.0) query with the + * specified access point. This specific query can be used only post connection, once security + * is established and PMF is enabled, to avoid spoofing preassociation ANQP responses. + * The ANQP data fetched must be returned in the + * |ISupplicantStaIfaceCallback.onAnqpQueryDone| callback. + * + * @param macAddress MAC address of the access point. + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_UNKNOWN|, + * |SupplicantStatusCode.FAILURE_IFACE_INVALID| + */ + void initiateVenueUrlAnqpQuery(in byte[] macAddress); + + /** + * Retrieve a list of all the network Id's controlled by the supplicant. + * + * The corresponding |ISupplicantStaNetwork| object for any network can be + * retrieved using |getNetwork| method. + * + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_IFACE_INVALID|, + * |SupplicantStatusCode.FAILURE_UNKNOWN| + * @return List of all network Id's controlled by the supplicant. + */ + int[] listNetworks(); + + /** + * Reconnect to the currently active network, even if we are already + * connected. + * + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_UNKNOWN|, + * |SupplicantStatusCode.FAILURE_IFACE_INVALID|, + * |SupplicantStatusCode.FAILURE_IFACE_DISABLED| + */ + void reassociate(); + + /** + * Reconnect to the currently active network, if we are currently + * disconnected. + * + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_UNKNOWN|, + * |SupplicantStatusCode.FAILURE_IFACE_INVALID|, + * |SupplicantStatusCode.FAILURE_IFACE_DISABLED|, + * |SupplicantStatusCode.FAILURE_IFACE_NOT_DISCONNECTED| + */ + void reconnect(); + + /** + * Register for callbacks from this interface. + * + * These callbacks are invoked for events that are specific to this interface. + * Registration of multiple callback objects is supported. These objects must + * be automatically deleted when the corresponding client process is dead or + * if this interface is removed. + * + * @param callback An instance of the |ISupplicantStaIfaceCallback| AIDL + * interface object. + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_UNKNOWN|, + * |SupplicantStatusCode.FAILURE_IFACE_INVALID| + */ + void registerCallback(in ISupplicantStaIfaceCallback callback); + + /** + * Remove a DPP peer URI. + * + * @param id The ID of the URI, as returned by |addDppPeerUri|. + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_ARGS_INVALID|, + * |SupplicantStatusCode.FAILURE_UNKNOWN|, + * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| + */ + void removeDppUri(in int id); + + /** + * Indicates to supplicant that the external radio work has completed. + * This allows other radio works to be performed. If this method is not + * invoked (e.g., due to the external program terminating), supplicant + * must time out the radio work item on the iface and send + * |ISupplicantCallback.onExtRadioWorkTimeout| event to indicate + * that this has happened. + * + * This method may also be used to cancel items that have been scheduled + * via |addExtRadioWork|, but have not yet been started (notified via + * |ISupplicantCallback.onExtRadioWorkStart|). + * + * @param id Identifier generated for the radio work addition + * (using |addExtRadioWork|). + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_UNKNOWN| + */ + void removeExtRadioWork(in int id); + + /** + * Remove a network from the interface. + * + * Use |ISupplicantStaNetwork.getId()| on the corresponding network AIDL + * interface object to retrieve the ID. + * + * @param id Network ID allocated to the corresponding network. + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_UNKNOWN|, + * |SupplicantStatusCode.FAILURE_IFACE_INVALID|, + * |SupplicantStatusCode.FAILURE_NETWORK_UNKNOWN| + */ + void removeNetwork(in int id); + + /** + * Send driver command to remove the specified RX filter. + * + * @param type Type of filter. + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_UNKNOWN|, + * |SupplicantStatusCode.FAILURE_IFACE_INVALID| + */ + void removeRxFilter(in RxFilterType type); + + /** + * Send driver command to set Bluetooth coexistence mode. + * + * @param mode Mode of Bluetooth coexistence. + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_UNKNOWN|, + * |SupplicantStatusCode.FAILURE_IFACE_INVALID| + */ + void setBtCoexistenceMode(in BtCoexistenceMode mode); + + /** + * Send driver command to set Bluetooth coexistence scan mode. + * When this mode is on, some of the low-level scan parameters + * used by the driver are changed to reduce interference + * with A2DP streaming. + * + * @param enable true to enable, false to disable. + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_UNKNOWN|, + * |SupplicantStatusCode.FAILURE_IFACE_INVALID| + */ + void setBtCoexistenceScanModeEnabled(in boolean enable); + + /** + * Send driver command to set country code. + * + * @param code 2 byte country code (as defined in ISO 3166) to set. + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_UNKNOWN|, + * |SupplicantStatusCode.FAILURE_IFACE_INVALID| + */ + void setCountryCode(in byte[] code); + + /** + * Use external processing for SIM/USIM operations + * + * @param useExternalSim true to use external, false otherwise. + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_UNKNOWN|, + * |SupplicantStatusCode.FAILURE_IFACE_INVALID| + */ + void setExternalSim(in boolean useExternalSim); + + /** + * Set Wi-Fi Alliance Agile Multiband (MBO) cellular data status. + * + * @param available true means cellular data available, false otherwise. + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_UNKNOWN| + */ + void setMboCellularDataStatus(in boolean available); + + /** + * Turn on/off power save mode for the interface. + * + * @param enable Indicate if power save is to be turned on/off. + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_UNKNOWN|, + * |SupplicantStatusCode.FAILURE_IFACE_INVALID|, + * |SupplicantStatusCode.FAILURE_IFACE_DISABLED| + */ + void setPowerSave(in boolean enable); + + /** + * Send driver command to set suspend optimizations for power save. + * + * @param enable true to enable, false to disable. + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_UNKNOWN|, + * |SupplicantStatusCode.FAILURE_IFACE_INVALID| + */ + void setSuspendModeEnabled(in boolean enable); + + /** + * Set the list of supported config methods for WPS operations. + * + * @param configMethods Mask of WPS configuration methods supported by the + * device. + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_IFACE_INVALID|, + * |SupplicantStatusCode.FAILURE_UNKNOWN| + */ + void setWpsConfigMethods(in WpsConfigMethods configMethods); + + /** + * Set the device name for WPS operations. + * User-friendly description of device (up to |WPS_DEVICE_NAME_MAX_LEN| + * octets encoded in UTF-8). + * + * @parm name Name to be set. + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_IFACE_INVALID|, + * |SupplicantStatusCode.FAILURE_UNKNOWN| + */ + void setWpsDeviceName(in String name); + + /** + * Set the device type for WPS operations. + * + * @parm type Type of device. Refer to section B.1 of Wifi P2P + * Technical specification v1.2. + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_IFACE_INVALID|, + * |SupplicantStatusCode.FAILURE_UNKNOWN| + */ + void setWpsDeviceType(in byte[] type); + + /** + * Set the manufacturer for WPS operations. + * The manufacturer of the device (up to |WPS_MANUFACTURER_MAX_LEN| ASCII + * characters). + * + * @parm manufacturer Manufacture to be set. + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_IFACE_INVALID|, + * |SupplicantStatusCode.FAILURE_UNKNOWN| + */ + void setWpsManufacturer(in String manufacturer); + + /** + * Set the model name for WPS operations. + * Model of the device (up to |WPS_MODEL_NAME_MAX_LEN| ASCII characters). + * + * @parm modelName Model name to be set. + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_IFACE_INVALID|, + * |SupplicantStatusCode.FAILURE_UNKNOWN| + */ + void setWpsModelName(in String modelName); + + /** + * Set the model number for WPS operations. + * Additional device description (up to |WPS_MODEL_NUMBER_MAX_LEN| ASCII + * characters). + * + * @parm modelNumber Model number to be set. + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_IFACE_INVALID|, + * |SupplicantStatusCode.FAILURE_UNKNOWN| + */ + void setWpsModelNumber(in String modelNumber); + + /** + * Set the serial number for WPS operations. + * Serial number of the device (up to |WPS_SERIAL_NUMBER_MAX_LEN| characters) + * + * @parm serialNumber Serial number to be set. + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_IFACE_INVALID|, + * |SupplicantStatusCode.FAILURE_UNKNOWN| + */ + void setWpsSerialNumber(in String serialNumber); + + /** + * Start DPP in Configurator-Initiator mode. + * + * @param peerBootstrapId Peer device's URI ID. + * @param ownBootstrapId Local device's URI ID (0 for none, optional). + * @param ssid Network SSID to send to peer (SAE/PSK mode). + * @param password Network password to send to peer (SAE/PSK mode). + * @param psk Network PSK to send to peer (PSK mode only). Either password or psk should be set. + * @param netRole Role to configure the peer, |DppNetRole.DPP_NET_ROLE_STA| or + * |DppNetRole.DPP_NET_ROLE_AP|. + * @param securityAkm Security AKM to use (See DppAkm). + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_ARGS_INVALID|, + * |SupplicantStatusCode.FAILURE_UNKNOWN|, + * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| + */ + void startDppConfiguratorInitiator(in int peerBootstrapId, in int ownBootstrapId, + in String ssid, in String password, in String psk, in DppNetRole netRole, + in DppAkm securityAkm); + + /** + * Start DPP in Enrollee-Initiator mode. + * + * @param peerBootstrapId Peer device's URI ID. + * @param ownBootstrapId Local device's URI ID (0 for none, optional). + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_ARGS_INVALID|, + * |SupplicantStatusCode.FAILURE_UNKNOWN|, + * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| + */ + void startDppEnrolleeInitiator(in int peerBootstrapId, in int ownBootstrapId); + + /** + * Start DPP in Enrollee-Responder mode. + * Framework must first call |generateDppBootstrapInfoForResponder| to generate + * the bootstrapping information: Bootstrap ID, DPP URI and the listen channel. + * Then call this API with derived listen channel to start listening for + * authentication request from Peer initiator. + * + * @param listenChannel DPP listen channel. + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_UNKNOWN|, + * |SupplicantStatusCode.FAILURE_IFACE_INVALID| + * |SupplicantStatusCode.FAILURE_UNSUPPORTED| + */ + void startDppEnrolleeResponder(in int listenChannel); + + /** + * Send driver command to start RX filter. + * + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_UNKNOWN|, + * |SupplicantStatusCode.FAILURE_IFACE_INVALID| + */ + void startRxFilter(); + + /** + * Initiate WPS Push Button setup. + * The PBC operation requires that a button is also pressed at the + * AP/Registrar at about the same time (2 minute window). + * + * @param bssid BSSID of the AP. Use zero'ed bssid to indicate wildcard. + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_UNKNOWN|, + * |SupplicantStatusCode.FAILURE_IFACE_INVALID| + */ + void startWpsPbc(in byte[] bssid); + + /** + * Initiate WPS Pin Display setup. + * + * @param bssid BSSID of the AP. Use zero'ed bssid to indicate wildcard. + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_UNKNOWN|, + * |SupplicantStatusCode.FAILURE_IFACE_INVALID| + * @return 8 digit pin generated. + */ + String startWpsPinDisplay(in byte[] bssid); + + /** + * Initiate WPS Pin Keypad setup. + * + * @param pin 8 digit pin to be used. + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_UNKNOWN|, + * |SupplicantStatusCode.FAILURE_IFACE_INVALID| + */ + void startWpsPinKeypad(in String pin); + + /** + * Initiate WPS setup in registrar role to learn the current AP configuration. + * + * @param bssid BSSID of the AP. + * @param pin Pin of the AP. + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_UNKNOWN|, + * |SupplicantStatusCode.FAILURE_IFACE_INVALID| + */ + void startWpsRegistrar(in byte[] bssid, in String pin); + + /** + * Stop DPP Initiator operation. + * + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_ARGS_INVALID|, + * |SupplicantStatusCode.FAILURE_UNKNOWN|, + * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| + */ + void stopDppInitiator(); + + /** + * Stop DPP Responder operation - Remove the bootstrap code and stop listening. + * + * @param ownBootstrapId Local device's URI ID obtained through + * |generateDppBootstrapInfoForResponder| call. + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_IFACE_INVALID| + * |SupplicantStatusCode.FAILURE_UNSUPPORTED| + */ + void stopDppResponder(in int ownBootstrapId); + + /** + * Send driver command to stop RX filter. + * + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_UNKNOWN|, + * |SupplicantStatusCode.FAILURE_IFACE_INVALID| + */ + void stopRxFilter(); +} diff --git a/wifi/supplicant/aidl/android/hardware/wifi/supplicant/ISupplicantStaIfaceCallback.aidl b/wifi/supplicant/aidl/android/hardware/wifi/supplicant/ISupplicantStaIfaceCallback.aidl new file mode 100644 index 0000000000..594fef9277 --- /dev/null +++ b/wifi/supplicant/aidl/android/hardware/wifi/supplicant/ISupplicantStaIfaceCallback.aidl @@ -0,0 +1,278 @@ +/* + * 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 android.hardware.wifi.supplicant; + +import android.hardware.wifi.supplicant.AnqpData; +import android.hardware.wifi.supplicant.AssociationRejectionData; +import android.hardware.wifi.supplicant.BssTmData; +import android.hardware.wifi.supplicant.BssidChangeReason; +import android.hardware.wifi.supplicant.DppAkm; +import android.hardware.wifi.supplicant.DppEventType; +import android.hardware.wifi.supplicant.DppFailureCode; +import android.hardware.wifi.supplicant.DppProgressCode; +import android.hardware.wifi.supplicant.Hs20AnqpData; +import android.hardware.wifi.supplicant.OsuMethod; +import android.hardware.wifi.supplicant.StaIfaceCallbackState; +import android.hardware.wifi.supplicant.StaIfaceReasonCode; +import android.hardware.wifi.supplicant.WpsConfigError; +import android.hardware.wifi.supplicant.WpsErrorIndication; + +/** + * Callback Interface exposed by the supplicant service + * for each station mode interface (ISupplicantStaIface). + * + * Clients need to host an instance of this AIDL interface object and + * pass a reference of the object to the supplicant via the + * corresponding |ISupplicantStaIface.registerCallback| method. + */ +@VintfStability +interface ISupplicantStaIfaceCallback { + /** + * Used to indicate the result of ANQP (either for IEEE 802.11u Interworking + * or Hotspot 2.0) query. + * + * @param bssid BSSID of the access point. + * @param data ANQP data fetched from the access point. + * All the fields in this struct must be empty if the query failed. + * @param hs20Data ANQP data fetched from the Hotspot 2.0 access point. + * All the fields in this struct must be empty if the query failed. + */ + oneway void onAnqpQueryDone(in byte[] bssid, in AnqpData data, in Hs20AnqpData hs20Data); + + /** + * Used to indicate an association rejection received from the AP + * to which the connection is being attempted. + * + * @param assocRejectData Association Rejection related information. + */ + oneway void onAssociationRejected(in AssociationRejectionData assocRejectData); + + /** + * Used to indicate the timeout of authentication to an AP. + * + * @param bssid BSSID of the corresponding AP. + */ + oneway void onAuthenticationTimeout(in byte[] bssid); + + /** + * Indicates BTM request frame handling status. + * + * @param tmData Data retrieved from received BSS transition management + * request frame. + */ + oneway void onBssTmHandlingDone(in BssTmData tmData); + + /** + * Used to indicate the change of active bssid. + * This is useful to figure out when the driver/firmware roams to a bssid + * on its own. + * + * @param reason Reason why the bssid changed. + * @param bssid BSSID of the corresponding AP. + */ + oneway void onBssidChanged(in BssidChangeReason reason, in byte[] bssid); + + /** + * Used to indicate the disconnection from the currently connected + * network on this iface. + * + * @param bssid BSSID of the AP from which we disconnected. + * @param locallyGenerated If the disconnect was triggered by + * wpa_supplicant. + * @param reasonCode 802.11 code to indicate the disconnect reason + * from access point. Refer to section 8.4.1.7 of IEEE802.11 spec. + */ + oneway void onDisconnected( + in byte[] bssid, in boolean locallyGenerated, in StaIfaceReasonCode reasonCode); + + /** + * Indicates a DPP failure event. + * + * ssid: A string indicating the SSID for the AP that the Enrollee attempted to connect. + * channelList: A string containing a list of operating channels and operating classes + * indicating the channels that the Enrollee scanned in attempting to discover the AP. + * The list conforms to the following ABNF syntax: + * channel-list2 = class-and-channels *(“,” class-and-channels) + * class-and-channels = class “/” channel *(“,” channel) + * class = 1*3DIGIT + * channel = 1*3DIGIT + * bandList: A list of band parameters that are supported by the Enrollee expressed as the + * Operating Class. + */ + oneway void onDppFailure( + in DppFailureCode code, in String ssid, in String channelList, in char[] bandList); + + /** + * Indicates a DPP progress event. + */ + oneway void onDppProgress(in DppProgressCode code); + + /** + * Indicates a DPP success event. + */ + oneway void onDppSuccess(in DppEventType event); + + /** + * Indicates DPP configuration received success event (Enrolee mode). + */ + oneway void onDppSuccessConfigReceived( + in byte[] ssid, in String password, in byte[] psk, in DppAkm securityAkm); + + /** + * Indicates DPP configuration sent success event (Configurator mode). + */ + oneway void onDppSuccessConfigSent(); + + /** + * Indicates an EAP authentication failure. + * @param errorCode Error code for EAP authentication failure. + * Either standard error code (enum EapErrorCode) or + * private error code defined by network provider. + */ + oneway void onEapFailure(in int errorCode); + + /** + * Used to indicate that the external radio work can start now. + * + * @param id Identifier generated for the radio work request. + */ + oneway void onExtRadioWorkStart(in int id); + + /** + * Used to indicate that the external radio work request has timed out. + * + * @param id Identifier generated for the radio work request. + */ + oneway void onExtRadioWorkTimeout(in int id); + + /** + * Used to indicate a Hotspot 2.0 imminent deauth notice. + * + * @param bssid BSSID of the access point. + * @param reasonCode Code to indicate the deauth reason. + * Refer to section 3.2.1.2 of the Hotspot 2.0 spec. + * @param reAuthDelayInSec Delay before reauthenticating. + * @param url URL of the server. + */ + oneway void onHs20DeauthImminentNotice( + in byte[] bssid, in int reasonCode, in int reAuthDelayInSec, in String url); + + /** + * Used to indicate the result of Hotspot 2.0 Icon query. + * + * @param bssid BSSID of the access point. + * @param fileName Name of the file that was requested. + * @param data Icon data fetched from the access point. + * Must be empty if the query failed. + */ + oneway void onHs20IconQueryDone(in byte[] bssid, in String fileName, in byte[] data); + + /** + * Used to indicate a Hotspot 2.0 subscription remediation event. + * + * @param bssid BSSID of the access point. + * @param osuMethod OSU method. + * @param url URL of the server. + */ + oneway void onHs20SubscriptionRemediation( + in byte[] bssid, in OsuMethod osuMethod, in String url); + + /** + * Used to indicate a Hotspot 2.0 terms and conditions acceptance is requested from the user + * before allowing the device to get internet access. + * + * @param bssid BSSID of the access point. + * @param url URL of the T&C server. + */ + oneway void onHs20TermsAndConditionsAcceptanceRequestedNotification( + in byte[] bssid, in String url); + + /** + * Used to indicate that a new network has been added. + * + * @param id Network ID allocated to the corresponding network. + */ + oneway void onNetworkAdded(in int id); + + /** + * Used to indicate that the supplicant failed to find a network in scan result + * which matches with the network capabilities requested by upper layer + * for connection. + * + * @param ssid network name supplicant tried to connect. + */ + oneway void onNetworkNotFound(in byte[] ssid); + + /** + * Used to indicate that a network has been removed. + * + * @param id Network ID allocated to the corresponding network. + */ + oneway void onNetworkRemoved(in int id); + + /** + * Indicates pairwise master key (PMK) cache added event. + * + * @param expirationTimeInSec expiration time in seconds + * @param serializedEntry is serialized PMK cache entry, the content is + * opaque for the framework and depends on the native implementation. + */ + oneway void onPmkCacheAdded(in long expirationTimeInSec, in byte[] serializedEntry); + + /** + * Used to indicate a state change event on this particular iface. If this + * event is triggered by a particular network, the |SupplicantNetworkId|, + * |ssid|, |bssid| parameters must indicate the parameters of the network/AP + * which caused this state transition. + * + * @param newState New State of the interface. This must be one of the |State| + * values above. + * @param bssid BSSID of the corresponding AP which caused this state + * change event. This must be zero'ed if this event is not + * specific to a particular network. + * @param id ID of the corresponding network which caused this + * state change event. This must be invalid (UINT32_MAX) if this + * event is not specific to a particular network. + * @param ssid SSID of the corresponding network which caused this state + * change event. This must be empty if this event is not specific + * to a particular network. + * @param filsHlpSent If FILS HLP IEs were included in this association. + */ + oneway void onStateChanged(in StaIfaceCallbackState newState, in byte[] bssid, in int id, + in byte[] ssid, in boolean filsHlpSent); + + /** + * Used to indicate the failure of a WPS connection attempt. + * + * @param bssid BSSID of the AP to which we initiated WPS + * connection. + * @param configError Configuration error code. + * @param errorInd Error indication code. + */ + oneway void onWpsEventFail( + in byte[] bssid, in WpsConfigError configError, in WpsErrorIndication errorInd); + + /** + * Used to indicate the overlap of a WPS PBC connection attempt. + */ + oneway void onWpsEventPbcOverlap(); + + /** + * Used to indicate the success of a WPS connection attempt. + */ + oneway void onWpsEventSuccess(); +} diff --git a/wifi/supplicant/aidl/android/hardware/wifi/supplicant/ISupplicantStaNetwork.aidl b/wifi/supplicant/aidl/android/hardware/wifi/supplicant/ISupplicantStaNetwork.aidl new file mode 100644 index 0000000000..603e2add6e --- /dev/null +++ b/wifi/supplicant/aidl/android/hardware/wifi/supplicant/ISupplicantStaNetwork.aidl @@ -0,0 +1,1095 @@ +/* + * 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 android.hardware.wifi.supplicant; + +import android.hardware.wifi.supplicant.AuthAlgMask; +import android.hardware.wifi.supplicant.EapMethod; +import android.hardware.wifi.supplicant.EapPhase2Method; +import android.hardware.wifi.supplicant.GroupCipherMask; +import android.hardware.wifi.supplicant.GroupMgmtCipherMask; +import android.hardware.wifi.supplicant.ISupplicantStaNetworkCallback; +import android.hardware.wifi.supplicant.IfaceType; +import android.hardware.wifi.supplicant.KeyMgmtMask; +import android.hardware.wifi.supplicant.NetworkResponseEapSimGsmAuthParams; +import android.hardware.wifi.supplicant.NetworkResponseEapSimUmtsAuthParams; +import android.hardware.wifi.supplicant.OcspType; +import android.hardware.wifi.supplicant.PairwiseCipherMask; +import android.hardware.wifi.supplicant.ProtoMask; +import android.hardware.wifi.supplicant.SaeH2eMode; + +/** + * Interface exposed by the supplicant for each station mode network + * configuration it controls. + */ +@VintfStability +interface ISupplicantStaNetwork { + /** + * Max length of SSID param. + */ + const int SSID_MAX_LEN_IN_BYTES = 32; + + /** + * Min length of PSK passphrase param. + */ + const int PSK_PASSPHRASE_MIN_LEN_IN_BYTES = 8; + + /** + * Max length of PSK passphrase param. + */ + const int PSK_PASSPHRASE_MAX_LEN_IN_BYTES = 63; + + /** + * Max number of WEP keys param. + */ + const int WEP_KEYS_MAX_NUM = 4; + + /** + * Length of each WEP40 keys param. + */ + const int WEP40_KEY_LEN_IN_BYTES = 5; + + /** + * Length of each WEP104 keys param. + */ + const int WEP104_KEY_LEN_IN_BYTES = 13; + + /** + * Disable the network for connection purposes. + * + * This must trigger a disconnection from the network, if currently + * connected to this one. + * + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_UNKNOWN|, + * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| + */ + void disable(); + + /** + * Enable the network for connection purposes. + * + * This must trigger a connection to the network if: + * a) |noConnect| is false, and + * b) This is the only network configured, and + * c) Is visible in the current scan results. + * + * @param noConnect Only enable the network, don't trigger a connect. + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_UNKNOWN|, + * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| + */ + void enable(in boolean noConnect); + + /** + * Set whether to enable SAE PK (Public Key) only mode to enable public AP validation. + * When enabled, only SAE PK network is allowed; otherwise PK is optional. + * If this API is not called before connecting to an SAE + * network, SAE PK mode depends on SAE PK config in wpa_supplicant configuration. + * If SAE PK config of wpa_supplicant configuration is not set, + * the default mode is optional (support for both PK and standard mode). + * + * @param enable true to set, false otherwise. + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_UNKNOWN|, + * |SupplicantStatusCode.FAILURE_NETWORK_INVALID|, + * |SupplicantStatusCode.FAILURE_UNSUPPORTED| + */ + void enableSaePkOnlyMode(in boolean enable); + + /** + * Set EAP OpenSSL Suite-B-192 ciphers for WPA3-Enterprise + * Supported option: + * + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_ARGS_INVALID|, + * |SupplicantStatusCode.FAILURE_UNKNOWN|, + * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| + */ + void enableSuiteBEapOpenSslCiphers(); + + /** + * Enable TLS Suite-B in EAP Phase1 + * + * @param enable Set to true to enable TLS Suite-B in EAP phase1 + * + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_ARGS_INVALID|, + * |SupplicantStatusCode.FAILURE_UNKNOWN|, + * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| + */ + void enableTlsSuiteBEapPhase1Param(in boolean enable); + + /** + * Get the auth alg mask set for the network. + * + * @return Combination of |AuthAlgMask| values. + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| + */ + AuthAlgMask getAuthAlg(); + + /** + * Get the BSSID set for this network. + * + * @return bssid Value set. + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| + */ + byte[] getBssid(); + + /** + * Get EAP Alt subject match set for this network. + * + * @return value set. + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_UNKNOWN|, + * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| + */ + String getEapAltSubjectMatch(); + + /** + * Get EAP Anonymous Identity set for this network. + * + * @return identity value set. + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_UNKNOWN|, + * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| + */ + byte[] getEapAnonymousIdentity(); + + /** + * Get EAP CA certificate file path set for this network. + * + * @return value set. + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_UNKNOWN|, + * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| + */ + String getEapCACert(); + + /** + * Get EAP CA certificate directory path set for this network. + * + * @return value set. + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_UNKNOWN|, + * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| + */ + String getEapCAPath(); + + /** + * Get EAP Client certificate file path set for this network. + * + * @return value set. + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_UNKNOWN|, + * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| + */ + String getEapClientCert(); + + /** + * Get EAP Domain suffix match set for this network. + * + * @return value set. + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_ARGS_INVALID|, + * |SupplicantStatusCode.FAILURE_UNKNOWN|, + * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| + */ + String getEapDomainSuffixMatch(); + + /** + * Get whether EAP Open SSL Engine is enabled for this network. + * + * @return true if set, false otherwise. + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_UNKNOWN|, + * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| + */ + boolean getEapEngine(); + + /** + * Get EAP Open SSL Engine ID set for this network. + * + * @return value set. + * throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_UNKNOWN|, + * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| + */ + String getEapEngineId(); + + /** + * Get EAP Identity set for this network. + * + * @return value set. + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_UNKNOWN|, + * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| + */ + byte[] getEapIdentity(); + + /** + * Get EAP Method set for this network. + * + * @return value set. + * Must be one of |EapMethod| values. + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_UNKNOWN|, + * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| + */ + EapMethod getEapMethod(); + + /** + * Get EAP Password set for this network. + * + * @return value set. + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_UNKNOWN|, + * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| + */ + byte[] getEapPassword(); + + /** + * Get EAP Phase2 Method set for this network. + * + * @return value set. + * Must be one of |EapPhase2Method| values. + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_UNKNOWN|, + * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| + */ + EapPhase2Method getEapPhase2Method(); + + /** + * Get EAP private key Id set for this network. + * + * @return value set. + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_UNKNOWN|, + * |SupplicantStatusCode.FAILURE_NETWORK_INVALID|) + */ + String getEapPrivateKeyId(); + + /** + * Get EAP subject match set for this network. + * + * @return value set. + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_UNKNOWN|, + * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| + */ + String getEapSubjectMatch(); + + /** + * Get whether enhanced directional multi-gigabit (802.11ay EDMG) is enabled for this network. + * + * @return true if set, false otherwise. + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| + */ + boolean getEdmg(); + + /** + * Get the group cipher mask set for the network. + * + * @return Combination of |GroupCipherMask| values. + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_NETWORK_INVALID|, + * |SupplicantStatusCode.FAILURE_UNKNOWN| + */ + GroupCipherMask getGroupCipher(); + + /** + * Get the group management cipher mask set for the network. + * + * @return Combination of |GroupMgmtCipherMask| values. + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| + */ + GroupMgmtCipherMask getGroupMgmtCipher(); + + /** + * Retrieves the ID allocated to this network by the supplicant. + * + * This is not the |SSID| of the network, but an internal identifier for + * this network used by the supplicant. + * + * @return Network ID. + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| + */ + int getId(); + + /** + * Get ID string set for this network. + * Network identifier string for external scripts. + * + * @return ID string set. + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_ARGS_INVALID|, + * |SupplicantStatusCode.FAILURE_UNKNOWN|, + * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| + */ + String getIdStr(); + + /** + * Retrieves the name of the interface this network belongs to. + * + * @return Name of the network interface, e.g., wlan0 + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| + */ + String getInterfaceName(); + + /** + * Get the key mgmt mask set for the network. + * + * @return Combination of |KeyMgmtMask| values. + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_NETWORK_INVALID|, + * |SupplicantStatusCode.FAILURE_UNKNOWN| + */ + KeyMgmtMask getKeyMgmt(); + + /** + * Get OCSP (Online Certificate Status Protocol) type for this network. + * + * @return ocsp type. + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_ARGS_INVALID|, + * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| + */ + OcspType getOcsp(); + + /** + * Get the pairwise cipher mask set for the network. + * + * @return Combination of |PairwiseCipherMask| values. + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_NETWORK_INVALID|, + * |SupplicantStatusCode.FAILURE_UNKNOWN| + */ + PairwiseCipherMask getPairwiseCipher(); + + /** + * Get the proto mask set for the network. + * + * @return Combination of |ProtoMask| values. + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_NETWORK_INVALID|, + * |SupplicantStatusCode.FAILURE_UNKNOWN| + */ + ProtoMask getProto(); + + /** + * Get raw psk for WPA_PSK network. + * + * @return value set. + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_ARGS_INVALID|, + * |SupplicantStatusCode.FAILURE_UNKNOWN|, + * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| + */ + byte[] getPsk(); + + /** + * Get passphrase for WPA_PSK network. + * Must return a failure if network has no passphrase set (use |getPsk| if + * network was configured with raw psk instead). + * + * @return value set. + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| + */ + String getPskPassphrase(); + + /** + * Get whether RequirePmf is enabled for this network. + * + * @return true if set, false otherwise. + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| + */ + boolean getRequirePmf(); + + /** + * Get SAE password for WPA3-Personal + * + * @return value set. + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_ARGS_INVALID|, + * |SupplicantStatusCode.FAILURE_UNKNOWN|, + * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| + */ + String getSaePassword(); + + /** + * Get SAE password ID for WPA3-Personal + * + * @return value set. + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_ARGS_INVALID|, + * |SupplicantStatusCode.FAILURE_UNKNOWN|, + * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| + */ + String getSaePasswordId(); + + /** + * Get whether Probe Requests are being sent for this network (hidden). + * + * @return true if set, false otherwise. + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| + */ + boolean getScanSsid(); + + /** + * + * Getters for the various network params. + * + */ + + /** + * Get SSID for this network. + * + * @return value set. + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| + */ + byte[] getSsid(); + + /** + * Retrieves the type of the interface this network belongs to. + * + * @return Type of the network interface, e.g., STA. + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_IFACE_INVALID| + */ + IfaceType getType(); + + /** + * Get WAPI certificate suite name set for this network. + * + * @return The name of a suite. + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_NETWORK_INVALID|, + * |SupplicantStatusCode.FAILURE_UNKNOWN| + */ + String getWapiCertSuite(); + + /** + * Get WEP key for WEP network. + * + * @param keyIdx Index of wep key to be fetched. + * Max of |WEP_KEYS_MAX_NUM|. + * @return value set. + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| + */ + byte[] getWepKey(in int keyIdx); + + /** + * Get default Tx key index for WEP network. + * + * @return value set. + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| + */ + int getWepTxKeyIdx(); + + /** + * Retrieves a WPS-NFC configuration token for this network. + * + * @return Bytes representing WPS-NFC configuration token. + * This is a dump of all the WPS atrributes of the AP configuration + * as specified in the Wi-Fi Protected Setup Specification. + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_ARGS_INVALID|, + * |SupplicantStatusCode.FAILURE_UNKNOWN|, + * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| + */ + byte[] getWpsNfcConfigurationToken(); + + /** + * Register for callbacks from this network. + * + * These callbacks are invoked for events that are specific to this network. + * Registration of multiple callback objects is supported. These objects must + * be automatically deleted when the corresponding client process is dead or + * if this network is removed. + * + * @param callback An instance of the |ISupplicantStaNetworkCallback| AIDL + * interface object. + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_UNKNOWN|, + * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| + */ + void registerCallback(in ISupplicantStaNetworkCallback callback); + + /** + * Initiate connection to this network. + * + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_UNKNOWN|, + * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| + */ + void select(); + + /** + * Used to send a response to the + * |ISupplicantNetworkCallback.onNetworkEapIdentityRequest| request. + * + * @param identity Identity string containing the IMSI. + * @param encryptedIdentity Identity string containing the encrypted IMSI. + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_UNKNOWN|, + * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| + */ + void sendNetworkEapIdentityResponse(in byte[] identity, in byte[] encryptedIdentity); + + /** + * Used to send a response to the + * |ISupplicantNetworkCallback.onNetworkEapSimGsmAuthRequest| request. + * + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_UNKNOWN|, + * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| + */ + void sendNetworkEapSimGsmAuthFailure(); + + /** + * Used to send a response to the + * |ISupplicantNetworkCallback.onNetworkEapSimGsmAuthRequest| request. + * + * @param params Params to be used for EAP GSM authentication. + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_UNKNOWN|, + * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| + */ + void sendNetworkEapSimGsmAuthResponse(in NetworkResponseEapSimGsmAuthParams[] params); + + /** + * Used to send a response to the + * |ISupplicantNetworkCallback.onNetworkEapSimUmtsAuthRequest| request. + * + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_UNKNOWN|, + * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| + */ + void sendNetworkEapSimUmtsAuthFailure(); + + /** + * Used to send a response to the + * |ISupplicantNetworkCallback.onNetworkEapSimUmtsAuthRequest| request. + * + * @param params Params to be used for EAP UMTS authentication. + * @throws ServiceSpecificException with one of the following values: + + * |SupplicantStatusCode.FAILURE_UNKNOWN|, + * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| + */ + void sendNetworkEapSimUmtsAuthResponse(in NetworkResponseEapSimUmtsAuthParams params); + + /** + * Used to send a response to the + * |ISupplicantNetworkCallback.onNetworkEapSimUmtsAuthRequest| request. + * + * @param auts Params to be used for EAP UMTS authentication. + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_UNKNOWN|, + * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| + */ + void sendNetworkEapSimUmtsAutsResponse(in byte[] auts); + + /** + * Set auth alg mask for the network. + * + * @param authAlgMask value to set. + * Combination of |ProtoMask| values. + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_ARGS_INVALID|, + * |SupplicantStatusCode.FAILURE_UNKNOWN|, + * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| + */ + void setAuthAlg(in AuthAlgMask authAlgMask); + + /** + * Set the network to only connect to an AP with provided BSSID. + * + * @param bssid value to set. + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_ARGS_INVALID|, + * |SupplicantStatusCode.FAILURE_UNKNOWN|, + * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| + */ + void setBssid(in byte[] bssid); + + /** + * Set EAP Alt subject match for this network. + * + * @param match value to set. + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_ARGS_INVALID|, + * |SupplicantStatusCode.FAILURE_UNKNOWN|, + * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| + */ + void setEapAltSubjectMatch(in String match); + + /** + * Set EAP Anonymous Identity for this network. + * + * @param identity value to set. + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_ARGS_INVALID|, + * |SupplicantStatusCode.FAILURE_UNKNOWN|, + * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| + */ + void setEapAnonymousIdentity(in byte[] identity); + + /** + * Set EAP CA certificate file path for this network. + * + * @param path value to set. + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_ARGS_INVALID|, + * |SupplicantStatusCode.FAILURE_UNKNOWN|, + * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| + */ + void setEapCACert(in String path); + + /** + * Set EAP CA certificate directory path for this network. + * + * @param path value to set. + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_ARGS_INVALID|, + * |SupplicantStatusCode.FAILURE_UNKNOWN|, + * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| + */ + void setEapCAPath(in String path); + + /** + * Set EAP Client certificate file path for this network. + * + * @param path value to set. + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_ARGS_INVALID|, + * |SupplicantStatusCode.FAILURE_UNKNOWN|, + * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| + */ + void setEapClientCert(in String path); + + /** + * Set EAP Domain suffix match for this network. + * + * @param match value to set. + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_ARGS_INVALID|, + * |SupplicantStatusCode.FAILURE_UNKNOWN|, + * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| + */ + void setEapDomainSuffixMatch(in String match); + + /** + * Set EAP encrypted IMSI Identity for this network. + * + * @param identity Identity string built from the encrypted IMSI. + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_ARGS_INVALID|, + * |SupplicantStatusCode.FAILURE_UNKNOWN|, + * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| + */ + void setEapEncryptedImsiIdentity(in byte[] identity); + + /** + * Enable EAP Open SSL Engine for this network. + * + * @param enable true to set, false otherwise. + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_UNKNOWN|, + * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| + */ + void setEapEngine(in boolean enable); + + /** + * Set EAP Open SSL Engine ID for this network. + * + * @param id value to set. + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_ARGS_INVALID|, + * |SupplicantStatusCode.FAILURE_UNKNOWN|, + * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| + */ + void setEapEngineID(in String id); + + /** + * Enable Extensible Authentication (EAP) - Re-authentication Protocol (ERP) for this network. + * + * @param enable true to set, false otherwise. + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_UNKNOWN|, + * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| + */ + void setEapErp(in boolean enable); + + /** + * Set EAP Identity for this network. + * + * @param identity value to set. + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_ARGS_INVALID|, + * |SupplicantStatusCode.FAILURE_UNKNOWN|, + * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| + */ + void setEapIdentity(in byte[] identity); + + /** + * Set EAP Method for this network. + * + * @param method value to be set. + * Must be one of |EapMethod| values. + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_ARGS_INVALID|, + * |SupplicantStatusCode.FAILURE_UNKNOWN|, + * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| + */ + void setEapMethod(in EapMethod method); + + /** + * Set EAP Password for this network. + * + * @param password value to set. + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_ARGS_INVALID|, + * |SupplicantStatusCode.FAILURE_UNKNOWN|, + * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| + */ + void setEapPassword(in byte[] password); + + /** + * Set EAP Phase2 Method for this network. + * + * EAP method needs to be set for this to work. + * + * @param method value to set. + * Must be one of |EapPhase2Method| values. + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_ARGS_INVALID|, + * |SupplicantStatusCode.FAILURE_UNKNOWN|, + * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| + */ + void setEapPhase2Method(in EapPhase2Method method); + + /** + * Set EAP private key Id for this network. + * This is used if private key operations for EAP-TLS are performed + * using a smartcard. + * + * @param id value to set. + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_ARGS_INVALID|, + * |SupplicantStatusCode.FAILURE_UNKNOWN|, + * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| + */ + void setEapPrivateKeyId(in String id); + + /** + * Set EAP subject match for this network. + * + * @param match value to set. + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_ARGS_INVALID|, + * |SupplicantStatusCode.FAILURE_UNKNOWN|, + * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| + */ + void setEapSubjectMatch(in String match); + + /** + * Set whether to enable enhanced directional multi-gigabit (802.11ay EDMG). + * Only allowed if hw mode is |HOSTAPD_MODE_IEEE80211AD| + * + * @param enable true to set, false otherwise. + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_UNKNOWN|, + * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| + */ + void setEdmg(in boolean enable); + + /** + * Set group cipher mask for the network. + * + * @param groupCipherMask value to set. + * Combination of |ProtoMask| values. + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_ARGS_INVALID|, + * |SupplicantStatusCode.FAILURE_NETWORK_INVALID|, + * |SupplicantStatusCode.FAILURE_UNKNOWN| + */ + void setGroupCipher(in GroupCipherMask groupCipherMask); + + /** + * Set group management cipher mask for the network. + * + * @param groupMgmtCipherMask value to set. + * Combination of |GroupMgmtCipherMask| values. + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_ARGS_INVALID|, + * |SupplicantStatusCode.FAILURE_UNKNOWN|, + * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| + */ + void setGroupMgmtCipher(in GroupMgmtCipherMask groupMgmtCipherMask); + + /** + * Set ID string for this network. + * Network identifier string for external scripts. + * + * @param idStr ID string value to set. + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_ARGS_INVALID|, + * |SupplicantStatusCode.FAILURE_UNKNOWN|, + * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| + */ + void setIdStr(in String idStr); + + /** + * Set key management mask for the network. + * + * @param keyMgmtMask value to set. + * Combination of |KeyMgmtMask| values. + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_ARGS_INVALID|, + * |SupplicantStatusCode.FAILURE_NETWORK_INVALID|, + * |SupplicantStatusCode.FAILURE_UNKNOWN| + */ + void setKeyMgmt(in KeyMgmtMask keyMgmtMask); + + /** + * Set OCSP (Online Certificate Status Protocol) type for this network. + * + * @param ocspType value to set. + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_ARGS_INVALID|, + * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| + */ + void setOcsp(in OcspType ocspType); + + /** + * Set pairwise cipher mask for the network. + * + * @param pairwiseCipherMask value to set. + * Combination of |ProtoMask| values. + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_ARGS_INVALID|, + * |SupplicantStatusCode.FAILURE_NETWORK_INVALID|, + * |SupplicantStatusCode.FAILURE_UNKNOWN| + */ + void setPairwiseCipher(in PairwiseCipherMask pairwiseCipherMask); + + /** + * Add a pairwise master key (PMK) into supplicant PMK cache. + * + * @param serializedEntry is serialized PMK cache entry, the content is + * opaque for the framework and depends on the native implementation. + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_ARGS_INVALID|, + * |SupplicantStatusCode.FAILURE_UNKNOWN|, + * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| + */ + void setPmkCache(in byte[] serializedEntry); + + /** + * This field can be used to enable proactive key caching which is also + * known as opportunistic PMKSA caching for WPA2. This is disabled (0) + * by default unless default value is changed with the global okc=1 + * parameter. + * + * Proactive key caching is used to make supplicant assume that the APs + * are using the same PMK and generate PMKSA cache entries without + * doing RSN pre-authentication. This requires support from the AP side + * and is normally used with wireless switches that co-locate the + * authenticator. + * + * @param enable true to set, false otherwise. + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_UNKNOWN|, + * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| + */ + void setProactiveKeyCaching(in boolean enable); + + /** + * Set proto mask for the network. + * + * @param protoMask value to set. + * Combination of |ProtoMask| values. + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_ARGS_INVALID|, + * |SupplicantStatusCode.FAILURE_NETWORK_INVALID|, + * |SupplicantStatusCode.FAILURE_UNKNOWN| + */ + void setProto(in ProtoMask protoMask); + + /** + * Set raw psk for WPA_PSK network. + * + * @param psk value to set as specified in IEEE 802.11i-2004 standard. + * This is the calculated using 'wpa_passphrase [passphrase]' + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_ARGS_INVALID|, + * |SupplicantStatusCode.FAILURE_UNKNOWN|, + * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| + */ + void setPsk(in byte[] psk); + + /** + * Set passphrase for WPA_PSK network. + * + * @param psk value to set. + * Length of value must be between + * |PSK_PASSPHRASE_MIN_LEN_IN_BYTES| and + * |PSK_PASSPHRASE_MAX_LEN_IN_BYTES|. + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_ARGS_INVALID|, + * |SupplicantStatusCode.FAILURE_UNKNOWN|, + * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| + */ + void setPskPassphrase(in String psk); + + /** + * Set whether RequirePmf is enabled for this network. + * + * @param enable true to set, false otherwise. + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_UNKNOWN|, + * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| + */ + void setRequirePmf(in boolean enable); + + /** + * Set SAE H2E (Hash-to-Element) mode. + * + * @param mode SAE H2E supporting mode. + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_UNKNOWN|, + * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| + */ + void setSaeH2eMode(in SaeH2eMode mode); + + /** + * Set SAE password for WPA3-Personal + * + * @param saePassword string with the above option + * + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_ARGS_INVALID|, + * |SupplicantStatusCode.FAILURE_UNKNOWN|, + * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| + */ + void setSaePassword(in String saePassword); + + /** + * Set SAE password ID for WPA3-Personal + * + * @param sae_password_id string with the above option + * + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_ARGS_INVALID|, + * |SupplicantStatusCode.FAILURE_UNKNOWN|, + * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| + */ + void setSaePasswordId(in String saePasswordId); + + /** + * Set whether to send probe requests for this network (hidden). + * + * @param enable true to set, false otherwise. + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_UNKNOWN|, + * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| + */ + void setScanSsid(in boolean enable); + + /** + * + * Setters for the various network params. + * These correspond to elements of |wpa_sssid| struct used internally by + * the supplicant to represent each network. + * + */ + + /** + * Set SSID for this network. + * + * @param ssid value to set. + * Max length of |SSID_MAX_LEN_IN_BYTES|. + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_ARGS_INVALID|, + * |SupplicantStatusCode.FAILURE_UNKNOWN|, + * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| + */ + void setSsid(in byte[] ssid); + + /** + * Set PPS MO ID for this network. + * (Hotspot 2.0 PerProviderSubscription/UpdateIdentifier) + * + * @param id ID value to set. + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_ARGS_INVALID|, + * |SupplicantStatusCode.FAILURE_UNKNOWN|, + * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| + */ + void setUpdateIdentifier(in int id); + + /** + * Set WAPI certificate suite name for this network. + * + * @param suite value to set. + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_ARGS_INVALID|, + * |SupplicantStatusCode.FAILURE_NETWORK_INVALID|, + * |SupplicantStatusCode.FAILURE_UNKNOWN| + */ + void setWapiCertSuite(in String suite); + + /** + * Set WEP key for WEP network. + * + * @param keyIdx Index of wep key to set. + * Max of |WEP_KEYS_MAX_NUM|. + * @param wepKey value to set. + * Length of each key must be either + * |WEP40_KEY_LEN_IN_BYTES| or + * |WEP104_KEY_LEN_IN_BYTES|. + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_ARGS_INVALID|, + * |SupplicantStatusCode.FAILURE_UNKNOWN|, + * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| + */ + void setWepKey(in int keyIdx, in byte[] wepKey); + + /** + * Set default Tx key index for WEP network. + * + * @param keyIdx Value to set. + * Max of |WEP_KEYS_MAX_NUM|. + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_ARGS_INVALID|, + * |SupplicantStatusCode.FAILURE_UNKNOWN|, + * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| + */ + void setWepTxKeyIdx(in int keyIdx); +} diff --git a/wifi/supplicant/aidl/android/hardware/wifi/supplicant/ISupplicantStaNetworkCallback.aidl b/wifi/supplicant/aidl/android/hardware/wifi/supplicant/ISupplicantStaNetworkCallback.aidl new file mode 100644 index 0000000000..c28b494d6a --- /dev/null +++ b/wifi/supplicant/aidl/android/hardware/wifi/supplicant/ISupplicantStaNetworkCallback.aidl @@ -0,0 +1,65 @@ +/* + * 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 android.hardware.wifi.supplicant; + +import android.hardware.wifi.supplicant.NetworkRequestEapSimGsmAuthParams; +import android.hardware.wifi.supplicant.NetworkRequestEapSimUmtsAuthParams; +import android.hardware.wifi.supplicant.TransitionDisableIndication; + +/** + * Callback Interface exposed by the supplicant service + * for each network (ISupplicantStaNetwork). + * + * Clients need to host an instance of this AIDL interface object and + * pass a reference of the object to the supplicant via the + * corresponding |ISupplicantStaNetwork.registerCallback| method. + */ +@VintfStability +interface ISupplicantStaNetworkCallback { + /** + * Used to request EAP Identity for this particular network. + * + * The response for the request must be sent using the corresponding + * |ISupplicantNetwork.sendNetworkEapIdentityResponse| call. + */ + oneway void onNetworkEapIdentityRequest(); + + /** + * Used to request EAP GSM SIM authentication for this particular network. + * + * The response for the request must be sent using the corresponding + * |ISupplicantNetwork.sendNetworkEapSimGsmAuthResponse| call. + * + * @param params Params associated with the request. + */ + oneway void onNetworkEapSimGsmAuthRequest(in NetworkRequestEapSimGsmAuthParams params); + + /** + * Used to request EAP UMTS SIM authentication for this particular network. + * + * The response for the request must be sent using the corresponding + * |ISupplicantNetwork.sendNetworkEapSimUmtsAuthResponse| call. + * + * @param params Params associated with the request. + */ + oneway void onNetworkEapSimUmtsAuthRequest(in NetworkRequestEapSimUmtsAuthParams params); + + /** + * Used to notify WPA3 transition disable. + */ + oneway void onTransitionDisable(in TransitionDisableIndication ind); +} diff --git a/wifi/supplicant/aidl/android/hardware/wifi/supplicant/IfaceInfo.aidl b/wifi/supplicant/aidl/android/hardware/wifi/supplicant/IfaceInfo.aidl new file mode 100644 index 0000000000..7792142b4c --- /dev/null +++ b/wifi/supplicant/aidl/android/hardware/wifi/supplicant/IfaceInfo.aidl @@ -0,0 +1,35 @@ +/* + * 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 android.hardware.wifi.supplicant; + +import android.hardware.wifi.supplicant.IfaceType; + +/** + * Structure describing the type and name of an iface + * controlled by the supplicant. + */ +@VintfStability +parcelable IfaceInfo { + /** + * Type of the network interface. + */ + IfaceType type; + /** + * Name of the network interface, e.g., wlan0 + */ + String name; +} diff --git a/wifi/supplicant/aidl/android/hardware/wifi/supplicant/IfaceType.aidl b/wifi/supplicant/aidl/android/hardware/wifi/supplicant/IfaceType.aidl new file mode 100644 index 0000000000..e39dcd16bc --- /dev/null +++ b/wifi/supplicant/aidl/android/hardware/wifi/supplicant/IfaceType.aidl @@ -0,0 +1,27 @@ +/* + * 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 android.hardware.wifi.supplicant; + +/** + * List of Iface types supported. + */ +@VintfStability +@Backing(type="int") +enum IfaceType { + STA, + P2P, +} diff --git a/wifi/supplicant/aidl/android/hardware/wifi/supplicant/KeyMgmtMask.aidl b/wifi/supplicant/aidl/android/hardware/wifi/supplicant/KeyMgmtMask.aidl new file mode 100644 index 0000000000..322558529e --- /dev/null +++ b/wifi/supplicant/aidl/android/hardware/wifi/supplicant/KeyMgmtMask.aidl @@ -0,0 +1,74 @@ +/* + * 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 android.hardware.wifi.supplicant; + +/** + * Possible mask of values for KeyMgmt param. + * See /external/wpa_supplicant_8/src/common/defs.h for + * all possible values (starting at WPA_KEY_MGMT_IEEE8021X). + */ +@VintfStability +@Backing(type="int") +enum KeyMgmtMask { + WPA_EAP = 1 << 0, + WPA_PSK = 1 << 1, + NONE = 1 << 2, + IEEE8021X = 1 << 3, + FT_EAP = 1 << 5, + FT_PSK = 1 << 6, + OSEN = 1 << 15, + /** + * WPA using EAP authentication with stronger SHA256-based algorithms + */ + WPA_EAP_SHA256 = 1 << 7, + /** + * WPA pre-shared key with stronger SHA256-based algorithms + */ + WPA_PSK_SHA256 = 1 << 8, + /** + * WPA3-Personal SAE Key management + */ + SAE = 1 << 10, + /** + * WPA3-Enterprise Suite-B Key management + */ + SUITE_B_192 = 1 << 17, + /** + * Enhacned Open (OWE) Key management + */ + OWE = 1 << 22, + /** + * Easy Connect (DPP) Key management + */ + DPP = 1 << 23, + /* + * WAPI Psk + */ + WAPI_PSK = 1 << 12, + /** + * WAPI Cert + */ + WAPI_CERT = 1 << 13, + /** + * FILS shared key authentication with sha-256 + */ + FILS_SHA256 = 1 << 18, + /** + * FILS shared key authentication with sha-384 + */ + FILS_SHA384 = 1 << 19, +} diff --git a/wifi/supplicant/aidl/android/hardware/wifi/supplicant/LegacyMode.aidl b/wifi/supplicant/aidl/android/hardware/wifi/supplicant/LegacyMode.aidl new file mode 100644 index 0000000000..f933f6cb22 --- /dev/null +++ b/wifi/supplicant/aidl/android/hardware/wifi/supplicant/LegacyMode.aidl @@ -0,0 +1,38 @@ +/* + * 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 android.hardware.wifi.supplicant; + +/** + * Detailed network mode for legacy network + */ +@VintfStability +@Backing(type="int") +enum LegacyMode { + UNKNOWN = 0, + /** + * For 802.11a + */ + A_MODE = 1, + /** + * For 802.11b + */ + B_MODE = 2, + /** + * For 802.11g + */ + G_MODE = 3, +} diff --git a/wifi/supplicant/aidl/android/hardware/wifi/supplicant/MacAddress.aidl b/wifi/supplicant/aidl/android/hardware/wifi/supplicant/MacAddress.aidl new file mode 100644 index 0000000000..40ad22ac15 --- /dev/null +++ b/wifi/supplicant/aidl/android/hardware/wifi/supplicant/MacAddress.aidl @@ -0,0 +1,29 @@ +/* + * 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 android.hardware.wifi.supplicant; + +/** + * Byte array representing a Mac Address. Use when we need + * to pass an array of Mac Addresses to a method, as 2D + * arrays are not supported in AIDL. + * + * TODO (b/210705533): Replace this type with a 2D byte array. + */ +@VintfStability +parcelable MacAddress { + byte[/* 6 */] data; +} diff --git a/wifi/supplicant/aidl/android/hardware/wifi/supplicant/MboAssocDisallowedReasonCode.aidl b/wifi/supplicant/aidl/android/hardware/wifi/supplicant/MboAssocDisallowedReasonCode.aidl new file mode 100644 index 0000000000..41868aa6c1 --- /dev/null +++ b/wifi/supplicant/aidl/android/hardware/wifi/supplicant/MboAssocDisallowedReasonCode.aidl @@ -0,0 +1,32 @@ +/* + * 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 android.hardware.wifi.supplicant; + +/** + * MBO spec v1.2, 4.2.4 Table 14: MBO Association disallowed reason code attribute + * values. + */ +@VintfStability +@Backing(type="byte") +enum MboAssocDisallowedReasonCode { + RESERVED = 0, + UNSPECIFIED = 1, + MAX_NUM_STA_ASSOCIATED = 2, + AIR_INTERFACE_OVERLOADED = 3, + AUTH_SERVER_OVERLOADED = 4, + INSUFFICIENT_RSSI = 5, +} diff --git a/wifi/supplicant/aidl/android/hardware/wifi/supplicant/MboCellularDataConnectionPrefValue.aidl b/wifi/supplicant/aidl/android/hardware/wifi/supplicant/MboCellularDataConnectionPrefValue.aidl new file mode 100644 index 0000000000..98f707ea63 --- /dev/null +++ b/wifi/supplicant/aidl/android/hardware/wifi/supplicant/MboCellularDataConnectionPrefValue.aidl @@ -0,0 +1,33 @@ +/* + * 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 android.hardware.wifi.supplicant; + +/** + * MBO spec v1.2, 4.2.5 Table 16: MBO Cellular Data connection preference + * attribute values. AP use this to indicate STA, its preference for the + * STA to move from BSS to cellular network. + */ +@VintfStability +@Backing(type="int") +enum MboCellularDataConnectionPrefValue { + EXCLUDED = 0, + NOT_PREFERRED = 1, + /* + * 2-254 Reserved. + */ + PREFERRED = 255, +} diff --git a/wifi/supplicant/aidl/android/hardware/wifi/supplicant/MboTransitionReasonCode.aidl b/wifi/supplicant/aidl/android/hardware/wifi/supplicant/MboTransitionReasonCode.aidl new file mode 100644 index 0000000000..66ad9ee114 --- /dev/null +++ b/wifi/supplicant/aidl/android/hardware/wifi/supplicant/MboTransitionReasonCode.aidl @@ -0,0 +1,36 @@ +/* + * 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 android.hardware.wifi.supplicant; + +/** + * MBO spec v1.2, 4.2.6 Table 18: MBO transition reason code attribute + * values. + */ +@VintfStability +@Backing(type="byte") +enum MboTransitionReasonCode { + UNSPECIFIED = 0, + EXCESSIVE_FRAME_LOSS = 1, + EXCESSIVE_TRAFFIC_DELAY = 2, + INSUFFICIENT_BANDWIDTH = 3, + LOAD_BALANCING = 4, + LOW_RSSI = 5, + RX_EXCESSIVE_RETRIES = 6, + HIGH_INTERFERENCE = 7, + GRAY_ZONE = 8, + TRANSITION_TO_PREMIUM_AP = 9, +} diff --git a/wifi/supplicant/aidl/android/hardware/wifi/supplicant/MiracastMode.aidl b/wifi/supplicant/aidl/android/hardware/wifi/supplicant/MiracastMode.aidl new file mode 100644 index 0000000000..4eaaf1dcb1 --- /dev/null +++ b/wifi/supplicant/aidl/android/hardware/wifi/supplicant/MiracastMode.aidl @@ -0,0 +1,35 @@ +/* + * 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 android.hardware.wifi.supplicant; + +/** + * Enum describing the modes of Miracast supported + * via driver commands. + */ +@VintfStability +@Backing(type="byte") +enum MiracastMode { + DISABLED = 0, + /** + * Operating as source. + */ + SOURCE = 1, + /** + * Operating as sink. + */ + SINK = 2, +} diff --git a/wifi/supplicant/aidl/android/hardware/wifi/supplicant/NetworkRequestEapSimGsmAuthParams.aidl b/wifi/supplicant/aidl/android/hardware/wifi/supplicant/NetworkRequestEapSimGsmAuthParams.aidl new file mode 100644 index 0000000000..c706c81059 --- /dev/null +++ b/wifi/supplicant/aidl/android/hardware/wifi/supplicant/NetworkRequestEapSimGsmAuthParams.aidl @@ -0,0 +1,27 @@ +/* + * 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 android.hardware.wifi.supplicant; + +import android.hardware.wifi.supplicant.GsmRand; + +/** + * Params of |onNetworkEapSimGsmAuthRequest| request. (Refer RFC 4186) + */ +@VintfStability +parcelable NetworkRequestEapSimGsmAuthParams { + GsmRand[] rands; +} diff --git a/wifi/supplicant/aidl/android/hardware/wifi/supplicant/NetworkRequestEapSimUmtsAuthParams.aidl b/wifi/supplicant/aidl/android/hardware/wifi/supplicant/NetworkRequestEapSimUmtsAuthParams.aidl new file mode 100644 index 0000000000..2f5e7fa1ed --- /dev/null +++ b/wifi/supplicant/aidl/android/hardware/wifi/supplicant/NetworkRequestEapSimUmtsAuthParams.aidl @@ -0,0 +1,26 @@ +/* + * 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 android.hardware.wifi.supplicant; + +/** + * Params of |onNetworkEapSimUmtsAuthRequest| request. (Refer RFC 4187) + */ +@VintfStability +parcelable NetworkRequestEapSimUmtsAuthParams { + byte[/* 16 */] rand; + byte[/* 16 */] autn; +} diff --git a/wifi/supplicant/aidl/android/hardware/wifi/supplicant/NetworkResponseEapSimGsmAuthParams.aidl b/wifi/supplicant/aidl/android/hardware/wifi/supplicant/NetworkResponseEapSimGsmAuthParams.aidl new file mode 100644 index 0000000000..38929a2ab6 --- /dev/null +++ b/wifi/supplicant/aidl/android/hardware/wifi/supplicant/NetworkResponseEapSimGsmAuthParams.aidl @@ -0,0 +1,26 @@ +/* + * 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 android.hardware.wifi.supplicant; + +/** + * Params of |sendNetworkEapSimGsmAuthResponse| request. (Refer RFC 4186) + */ +@VintfStability +parcelable NetworkResponseEapSimGsmAuthParams { + byte[/* 8 */] kc; + byte[/* 4 */] sres; +} diff --git a/wifi/supplicant/aidl/android/hardware/wifi/supplicant/NetworkResponseEapSimUmtsAuthParams.aidl b/wifi/supplicant/aidl/android/hardware/wifi/supplicant/NetworkResponseEapSimUmtsAuthParams.aidl new file mode 100644 index 0000000000..53110161e4 --- /dev/null +++ b/wifi/supplicant/aidl/android/hardware/wifi/supplicant/NetworkResponseEapSimUmtsAuthParams.aidl @@ -0,0 +1,27 @@ +/* + * 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 android.hardware.wifi.supplicant; + +/** + * Params of |sendNetworkEapSimUmtsAuthResponse| request. (Refer RFC 4187) + */ +@VintfStability +parcelable NetworkResponseEapSimUmtsAuthParams { + byte[] res; + byte[/* 16 */] ik; + byte[/* 16 */] ck; +} diff --git a/wifi/supplicant/aidl/android/hardware/wifi/supplicant/OceRssiBasedAssocRejectAttr.aidl b/wifi/supplicant/aidl/android/hardware/wifi/supplicant/OceRssiBasedAssocRejectAttr.aidl new file mode 100644 index 0000000000..09ec09c77f --- /dev/null +++ b/wifi/supplicant/aidl/android/hardware/wifi/supplicant/OceRssiBasedAssocRejectAttr.aidl @@ -0,0 +1,40 @@ +/* + * 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 android.hardware.wifi.supplicant; + +/** + * OceRssiBasedAssocRejectAttr is extracted from (Re-)Association response + * frame from an OCE AP to indicate that the AP has rejected the + * (Re-)Association request on the basis of insufficient RSSI. + * Refer OCE spec v1.0 section 4.2.2 Table 7. + */ +@VintfStability +parcelable OceRssiBasedAssocRejectAttr { + /* + * Delta RSSI - The difference in dB between the minimum RSSI at which + * the AP would accept a (Re-)Association request from the STA before + * Retry Delay expires and the AP's measurement of the RSSI at which the + * (Re-)Association request was received. + */ + int deltaRssi; + /* + * Retry Delay - The time period in seconds for which the AP will not + * accept any subsequent (Re-)Association requests from the STA, unless + * the received RSSI has improved by Delta RSSI. + */ + int retryDelayS; +} diff --git a/wifi/supplicant/aidl/android/hardware/wifi/supplicant/OcspType.aidl b/wifi/supplicant/aidl/android/hardware/wifi/supplicant/OcspType.aidl new file mode 100644 index 0000000000..876fb116f4 --- /dev/null +++ b/wifi/supplicant/aidl/android/hardware/wifi/supplicant/OcspType.aidl @@ -0,0 +1,29 @@ +/* + * 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 android.hardware.wifi.supplicant; + +/** + * OcspType: The type of OCSP request. + */ +@VintfStability +@Backing(type="int") +enum OcspType { + NONE, + REQUEST_CERT_STATUS, + REQUIRE_CERT_STATUS, + REQUIRE_ALL_CERTS_STATUS, +} diff --git a/wifi/supplicant/aidl/android/hardware/wifi/supplicant/OsuMethod.aidl b/wifi/supplicant/aidl/android/hardware/wifi/supplicant/OsuMethod.aidl new file mode 100644 index 0000000000..a060365dea --- /dev/null +++ b/wifi/supplicant/aidl/android/hardware/wifi/supplicant/OsuMethod.aidl @@ -0,0 +1,27 @@ +/* + * 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 android.hardware.wifi.supplicant; + +/** + * OSU Method. Refer to section 4.8.1.3 of the Hotspot 2.0 spec. + */ +@VintfStability +@Backing(type="byte") +enum OsuMethod { + OMA_DM = 0, + SOAP_XML_SPP = 1, +} diff --git a/wifi/supplicant/aidl/android/hardware/wifi/supplicant/P2pGroupCapabilityMask.aidl b/wifi/supplicant/aidl/android/hardware/wifi/supplicant/P2pGroupCapabilityMask.aidl new file mode 100644 index 0000000000..bda3c34744 --- /dev/null +++ b/wifi/supplicant/aidl/android/hardware/wifi/supplicant/P2pGroupCapabilityMask.aidl @@ -0,0 +1,34 @@ +/* + * 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 android.hardware.wifi.supplicant; + +/** + * P2P group capability. + * See /external/wpa_supplicant_8/src/common/ieee802_11_defs.h + * for all possible values (starting at P2P_GROUP_CAPAB_GROUP_OWNER). + */ +@VintfStability +@Backing(type="int") +enum P2pGroupCapabilityMask { + GROUP_OWNER = 1 << 0, + PERSISTENT_GROUP = 1 << 1, + GROUP_LIMIT = 1 << 2, + INTRA_BSS_DIST = 1 << 3, + CROSS_CONN = 1 << 4, + PERSISTENT_RECONN = 1 << 5, + GROUP_FORMATION = 1 << 6, +} diff --git a/wifi/supplicant/aidl/android/hardware/wifi/supplicant/P2pProvDiscStatusCode.aidl b/wifi/supplicant/aidl/android/hardware/wifi/supplicant/P2pProvDiscStatusCode.aidl new file mode 100644 index 0000000000..9effd0a2f8 --- /dev/null +++ b/wifi/supplicant/aidl/android/hardware/wifi/supplicant/P2pProvDiscStatusCode.aidl @@ -0,0 +1,30 @@ +/* + * 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 android.hardware.wifi.supplicant; + +/** + * Status codes for P2P discovery. + */ +@VintfStability +@Backing(type="byte") +enum P2pProvDiscStatusCode { + SUCCESS = 0, + TIMEOUT = 1, + REJECTED = 2, + TIMEOUT_JOIN = 3, + INFO_UNAVAILABLE = 4, +} diff --git a/wifi/supplicant/aidl/android/hardware/wifi/supplicant/P2pStatusCode.aidl b/wifi/supplicant/aidl/android/hardware/wifi/supplicant/P2pStatusCode.aidl new file mode 100644 index 0000000000..4020f9ec9d --- /dev/null +++ b/wifi/supplicant/aidl/android/hardware/wifi/supplicant/P2pStatusCode.aidl @@ -0,0 +1,38 @@ +/* + * 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 android.hardware.wifi.supplicant; + +/** + * Status codes for P2P operations. + */ +@VintfStability +@Backing(type="int") +enum P2pStatusCode { + SUCCESS = 0, + FAIL_INFO_CURRENTLY_UNAVAILABLE = 1, + FAIL_INCOMPATIBLE_PARAMS = 2, + FAIL_LIMIT_REACHED = 3, + FAIL_INVALID_PARAMS = 4, + FAIL_UNABLE_TO_ACCOMMODATE = 5, + FAIL_PREV_PROTOCOL_ERROR = 6, + FAIL_NO_COMMON_CHANNELS = 7, + FAIL_UNKNOWN_GROUP = 8, + FAIL_BOTH_GO_INTENT_15 = 9, + FAIL_INCOMPATIBLE_PROV_METHOD = 10, + FAIL_REJECTED_BY_USER = 11, + SUCCESS_DEFERRED = 12, +} diff --git a/wifi/supplicant/aidl/android/hardware/wifi/supplicant/PairwiseCipherMask.aidl b/wifi/supplicant/aidl/android/hardware/wifi/supplicant/PairwiseCipherMask.aidl new file mode 100644 index 0000000000..ad134fa240 --- /dev/null +++ b/wifi/supplicant/aidl/android/hardware/wifi/supplicant/PairwiseCipherMask.aidl @@ -0,0 +1,42 @@ +/* + * 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 android.hardware.wifi.supplicant; + +/** + * Possible mask of values for PairwiseCipher param. + * See /external/wpa_supplicant_8/src/common/defs.h for + * all possible values (starting at WPA_CIPHER_NONE). + */ +@VintfStability +@Backing(type="int") +enum PairwiseCipherMask { + NONE = 1 << 0, + TKIP = 1 << 3, + CCMP = 1 << 4, + /** + * GCMP-128 Pairwise Cipher + */ + GCMP_128 = 1 << 6, + /** + * SMS4 Pairwise Cipher + */ + SMS4 = 1 << 7, + /** + * GCMP-256 Pairwise Cipher + */ + GCMP_256 = 1 << 8, +} diff --git a/wifi/supplicant/aidl/android/hardware/wifi/supplicant/ProtoMask.aidl b/wifi/supplicant/aidl/android/hardware/wifi/supplicant/ProtoMask.aidl new file mode 100644 index 0000000000..65c832bece --- /dev/null +++ b/wifi/supplicant/aidl/android/hardware/wifi/supplicant/ProtoMask.aidl @@ -0,0 +1,31 @@ +/* + * 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 android.hardware.wifi.supplicant; + +/** + * Possible mask of values for Proto param. + * See /external/wpa_supplicant_8/src/common/defs.h for + * all possible values (starting at WPA_PROTO_WPA). + */ +@VintfStability +@Backing(type="int") +enum ProtoMask { + WPA = 1 << 0, + RSN = 1 << 1, + WAPI = 1 << 2, + OSEN = 1 << 3, +} diff --git a/wifi/supplicant/aidl/android/hardware/wifi/supplicant/RxFilterType.aidl b/wifi/supplicant/aidl/android/hardware/wifi/supplicant/RxFilterType.aidl new file mode 100644 index 0000000000..5dfb73ef36 --- /dev/null +++ b/wifi/supplicant/aidl/android/hardware/wifi/supplicant/RxFilterType.aidl @@ -0,0 +1,28 @@ +/* + * 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 android.hardware.wifi.supplicant; + +/** + * Enum describing the types of RX filter supported + * via driver commands. + */ +@VintfStability +@Backing(type="byte") +enum RxFilterType { + V4_MULTICAST = 0, + V6_MULTICAST = 1, +} diff --git a/wifi/supplicant/aidl/android/hardware/wifi/supplicant/SaeH2eMode.aidl b/wifi/supplicant/aidl/android/hardware/wifi/supplicant/SaeH2eMode.aidl new file mode 100644 index 0000000000..48a879b79f --- /dev/null +++ b/wifi/supplicant/aidl/android/hardware/wifi/supplicant/SaeH2eMode.aidl @@ -0,0 +1,37 @@ +/* + * 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 android.hardware.wifi.supplicant; + +/** + * SAE Hash-to-Element mode. + */ +@VintfStability +@Backing(type="byte") +enum SaeH2eMode { + /** + * Hash-to-Element is disabled, only Hunting & Pecking is allowed. + */ + DISABLED, + /** + * Both Hash-to-Element and Hunting & Pecking are allowed. + */ + H2E_OPTIONAL, + /** + * Only Hash-to-Element is allowed. + */ + H2E_MANDATORY, +} diff --git a/wifi/supplicant/aidl/android/hardware/wifi/supplicant/StaIfaceCallbackState.aidl b/wifi/supplicant/aidl/android/hardware/wifi/supplicant/StaIfaceCallbackState.aidl new file mode 100644 index 0000000000..19f6f88835 --- /dev/null +++ b/wifi/supplicant/aidl/android/hardware/wifi/supplicant/StaIfaceCallbackState.aidl @@ -0,0 +1,100 @@ +/* + * 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 android.hardware.wifi.supplicant; + +/** + * Various states of the interface reported by |onStateChanged|. + */ +@VintfStability +@Backing(type="int") +enum StaIfaceCallbackState { + /** + * This state indicates that client is not associated, but is likely to + * start looking for an access point. This state is entered when a + * connection is lost. + */ + DISCONNECTED = 0, + /** + * This state is entered if the network interface is disabled, e.g., + * due to rfkill. the supplicant refuses any new operations that would + * use the radio until the interface has been enabled. + */ + IFACE_DISABLED = 1, + /** + * This state is entered if there are no enabled networks in the + * configuration. the supplicant is not trying to associate with a new + * network and external interaction (e.g., ctrl_iface call to add or + * enable a network) is needed to start association. + */ + INACTIVE = 2, + /** + * This state is entered when the supplicant starts scanning for a + * network. + */ + SCANNING = 3, + /** + * This state is entered when the supplicant has found a suitable BSS + * to authenticate with and the driver is configured to try to + * authenticate with this BSS. This state is used only with drivers + * that use the supplicant as the SME. + */ + AUTHENTICATING = 4, + /** + * This state is entered when the supplicant has found a suitable BSS + * to associate with and the driver is configured to try to associate + * with this BSS in ap_scan=1 mode. When using ap_scan=2 mode, this + * state is entered when the driver is configured to try to associate + * with a network using the configured SSID and security policy. + */ + ASSOCIATING = 5, + /** + * This state is entered when the driver reports that association has + * been successfully completed with an AP. If IEEE 802.1X is used + * (with or without WPA/WPA2), the supplicant remains in this state + * until the IEEE 802.1X/EAPOL authentication has been completed. + */ + ASSOCIATED = 6, + /** + * This state is entered when WPA/WPA2 4-Way Handshake is started. In + * case of WPA-PSK, this happens when receiving the first EAPOL-Key + * frame after association. In case of WPA-EAP, this state is entered + * when the IEEE 802.1X/EAPOL authentication has been completed. + */ + FOURWAY_HANDSHAKE = 7, + /** + * This state is entered when 4-Way Key Handshake has been completed + * (i.e., when the supplicant sends out message 4/4) and when Group + * Key rekeying is started by the AP (i.e., when supplicant receives + * message 1/2). + */ + GROUP_HANDSHAKE = 8, + /** + * This state is entered when the full authentication process is + * completed. In case of WPA2, this happens when the 4-Way Handshake is + * successfully completed. With WPA, this state is entered after the + * Group Key Handshake; with IEEE 802.1X (non-WPA) connection is + * completed after dynamic keys are received (or if not used, after + * the EAP authentication has been completed). With static WEP keys and + * plaintext connections, this state is entered when an association + * has been completed. + * + * This state indicates that the supplicant has completed its + * processing for the association phase and that data connection is + * fully configured. + */ + COMPLETED = 9, +} diff --git a/wifi/supplicant/aidl/android/hardware/wifi/supplicant/StaIfaceReasonCode.aidl b/wifi/supplicant/aidl/android/hardware/wifi/supplicant/StaIfaceReasonCode.aidl new file mode 100644 index 0000000000..6b05c0742f --- /dev/null +++ b/wifi/supplicant/aidl/android/hardware/wifi/supplicant/StaIfaceReasonCode.aidl @@ -0,0 +1,86 @@ +/* + * 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 android.hardware.wifi.supplicant; + +/** + * Reason codes (IEEE Std 802.11-2016, 9.4.1.7, Table 9-45). + */ +@VintfStability +@Backing(type="int") +enum StaIfaceReasonCode { + UNSPECIFIED = 1, + PREV_AUTH_NOT_VALID = 2, + DEAUTH_LEAVING = 3, + DISASSOC_DUE_TO_INACTIVITY = 4, + DISASSOC_AP_BUSY = 5, + CLASS2_FRAME_FROM_NONAUTH_STA = 6, + CLASS3_FRAME_FROM_NONASSOC_STA = 7, + DISASSOC_STA_HAS_LEFT = 8, + STA_REQ_ASSOC_WITHOUT_AUTH = 9, + PWR_CAPABILITY_NOT_VALID = 10, + SUPPORTED_CHANNEL_NOT_VALID = 11, + BSS_TRANSITION_DISASSOC = 12, + INVALID_IE = 13, + MICHAEL_MIC_FAILURE = 14, + FOURWAY_HANDSHAKE_TIMEOUT = 15, + GROUP_KEY_UPDATE_TIMEOUT = 16, + IE_IN_4WAY_DIFFERS = 17, + GROUP_CIPHER_NOT_VALID = 18, + PAIRWISE_CIPHER_NOT_VALID = 19, + AKMP_NOT_VALID = 20, + UNSUPPORTED_RSN_IE_VERSION = 21, + INVALID_RSN_IE_CAPAB = 22, + IEEE_802_1X_AUTH_FAILED = 23, + CIPHER_SUITE_REJECTED = 24, + TDLS_TEARDOWN_UNREACHABLE = 25, + TDLS_TEARDOWN_UNSPECIFIED = 26, + SSP_REQUESTED_DISASSOC = 27, + NO_SSP_ROAMING_AGREEMENT = 28, + BAD_CIPHER_OR_AKM = 29, + NOT_AUTHORIZED_THIS_LOCATION = 30, + SERVICE_CHANGE_PRECLUDES_TS = 31, + UNSPECIFIED_QOS_REASON = 32, + NOT_ENOUGH_BANDWIDTH = 33, + DISASSOC_LOW_ACK = 34, + EXCEEDED_TXOP = 35, + STA_LEAVING = 36, + END_TS_BA_DLS = 37, + UNKNOWN_TS_BA = 38, + TIMEOUT = 39, + PEERKEY_MISMATCH = 45, + AUTHORIZED_ACCESS_LIMIT_REACHED = 46, + EXTERNAL_SERVICE_REQUIREMENTS = 47, + INVALID_FT_ACTION_FRAME_COUNT = 48, + INVALID_PMKID = 49, + INVALID_MDE = 50, + INVALID_FTE = 51, + MESH_PEERING_CANCELLED = 52, + MESH_MAX_PEERS = 53, + MESH_CONFIG_POLICY_VIOLATION = 54, + MESH_CLOSE_RCVD = 55, + MESH_MAX_RETRIES = 56, + MESH_CONFIRM_TIMEOUT = 57, + MESH_INVALID_GTK = 58, + MESH_INCONSISTENT_PARAMS = 59, + MESH_INVALID_SECURITY_CAP = 60, + MESH_PATH_ERROR_NO_PROXY_INFO = 61, + MESH_PATH_ERROR_NO_FORWARDING_INFO = 62, + MESH_PATH_ERROR_DEST_UNREACHABLE = 63, + MAC_ADDRESS_ALREADY_EXISTS_IN_MBSS = 64, + MESH_CHANNEL_SWITCH_REGULATORY_REQ = 65, + MESH_CHANNEL_SWITCH_UNSPECIFIED = 66, +} diff --git a/wifi/supplicant/aidl/android/hardware/wifi/supplicant/StaIfaceStatusCode.aidl b/wifi/supplicant/aidl/android/hardware/wifi/supplicant/StaIfaceStatusCode.aidl new file mode 100644 index 0000000000..75e7f68822 --- /dev/null +++ b/wifi/supplicant/aidl/android/hardware/wifi/supplicant/StaIfaceStatusCode.aidl @@ -0,0 +1,122 @@ +/* + * 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 android.hardware.wifi.supplicant; + +/** + * Status codes (IEEE Std 802.11-2016, 9.4.1.9, Table 9-46). + */ +@VintfStability +@Backing(type="int") +enum StaIfaceStatusCode { + SUCCESS = 0, + UNSPECIFIED_FAILURE = 1, + TDLS_WAKEUP_ALTERNATE = 2, + TDLS_WAKEUP_REJECT = 3, + SECURITY_DISABLED = 5, + UNACCEPTABLE_LIFETIME = 6, + NOT_IN_SAME_BSS = 7, + CAPS_UNSUPPORTED = 10, + REASSOC_NO_ASSOC = 11, + ASSOC_DENIED_UNSPEC = 12, + NOT_SUPPORTED_AUTH_ALG = 13, + UNKNOWN_AUTH_TRANSACTION = 14, + CHALLENGE_FAIL = 15, + AUTH_TIMEOUT = 16, + AP_UNABLE_TO_HANDLE_NEW_STA = 17, + ASSOC_DENIED_RATES = 18, + ASSOC_DENIED_NOSHORT = 19, + SPEC_MGMT_REQUIRED = 22, + PWR_CAPABILITY_NOT_VALID = 23, + SUPPORTED_CHANNEL_NOT_VALID = 24, + ASSOC_DENIED_NO_SHORT_SLOT_TIME = 25, + ASSOC_DENIED_NO_HT = 27, + R0KH_UNREACHABLE = 28, + ASSOC_DENIED_NO_PCO = 29, + ASSOC_REJECTED_TEMPORARILY = 30, + ROBUST_MGMT_FRAME_POLICY_VIOLATION = 31, + UNSPECIFIED_QOS_FAILURE = 32, + DENIED_INSUFFICIENT_BANDWIDTH = 33, + DENIED_POOR_CHANNEL_CONDITIONS = 34, + DENIED_QOS_NOT_SUPPORTED = 35, + REQUEST_DECLINED = 37, + INVALID_PARAMETERS = 38, + REJECTED_WITH_SUGGESTED_CHANGES = 39, + INVALID_IE = 40, + GROUP_CIPHER_NOT_VALID = 41, + PAIRWISE_CIPHER_NOT_VALID = 42, + AKMP_NOT_VALID = 43, + UNSUPPORTED_RSN_IE_VERSION = 44, + INVALID_RSN_IE_CAPAB = 45, + CIPHER_REJECTED_PER_POLICY = 46, + TS_NOT_CREATED = 47, + DIRECT_LINK_NOT_ALLOWED = 48, + DEST_STA_NOT_PRESENT = 49, + DEST_STA_NOT_QOS_STA = 50, + ASSOC_DENIED_LISTEN_INT_TOO_LARGE = 51, + INVALID_FT_ACTION_FRAME_COUNT = 52, + INVALID_PMKID = 53, + INVALID_MDIE = 54, + INVALID_FTIE = 55, + REQUESTED_TCLAS_NOT_SUPPORTED = 56, + INSUFFICIENT_TCLAS_PROCESSING_RESOURCES = 57, + TRY_ANOTHER_BSS = 58, + GAS_ADV_PROTO_NOT_SUPPORTED = 59, + NO_OUTSTANDING_GAS_REQ = 60, + GAS_RESP_NOT_RECEIVED = 61, + STA_TIMED_OUT_WAITING_FOR_GAS_RESP = 62, + GAS_RESP_LARGER_THAN_LIMIT = 63, + REQ_REFUSED_HOME = 64, + ADV_SRV_UNREACHABLE = 65, + REQ_REFUSED_SSPN = 67, + REQ_REFUSED_UNAUTH_ACCESS = 68, + INVALID_RSNIE = 72, + U_APSD_COEX_NOT_SUPPORTED = 73, + U_APSD_COEX_MODE_NOT_SUPPORTED = 74, + BAD_INTERVAL_WITH_U_APSD_COEX = 75, + ANTI_CLOGGING_TOKEN_REQ = 76, + FINITE_CYCLIC_GROUP_NOT_SUPPORTED = 77, + CANNOT_FIND_ALT_TBTT = 78, + TRANSMISSION_FAILURE = 79, + REQ_TCLAS_NOT_SUPPORTED = 80, + TCLAS_RESOURCES_EXCHAUSTED = 81, + REJECTED_WITH_SUGGESTED_BSS_TRANSITION = 82, + REJECT_WITH_SCHEDULE = 83, + REJECT_NO_WAKEUP_SPECIFIED = 84, + SUCCESS_POWER_SAVE_MODE = 85, + PENDING_ADMITTING_FST_SESSION = 86, + PERFORMING_FST_NOW = 87, + PENDING_GAP_IN_BA_WINDOW = 88, + REJECT_U_PID_SETTING = 89, + REFUSED_EXTERNAL_REASON = 92, + REFUSED_AP_OUT_OF_MEMORY = 93, + REJECTED_EMERGENCY_SERVICE_NOT_SUPPORTED = 94, + QUERY_RESP_OUTSTANDING = 95, + REJECT_DSE_BAND = 96, + TCLAS_PROCESSING_TERMINATED = 97, + TS_SCHEDULE_CONFLICT = 98, + DENIED_WITH_SUGGESTED_BAND_AND_CHANNEL = 99, + MCCAOP_RESERVATION_CONFLICT = 100, + MAF_LIMIT_EXCEEDED = 101, + MCCA_TRACK_LIMIT_EXCEEDED = 102, + DENIED_DUE_TO_SPECTRUM_MANAGEMENT = 103, + ASSOC_DENIED_NO_VHT = 104, + ENABLEMENT_DENIED = 105, + RESTRICTION_FROM_AUTHORIZED_GDB = 106, + AUTHORIZATION_DEENABLED = 107, + FILS_AUTHENTICATION_FAILURE = 112, + UNKNOWN_AUTHENTICATION_SERVER = 113, +} diff --git a/wifi/supplicant/aidl/android/hardware/wifi/supplicant/SupplicantStatusCode.aidl b/wifi/supplicant/aidl/android/hardware/wifi/supplicant/SupplicantStatusCode.aidl new file mode 100644 index 0000000000..c7b7ffdcf1 --- /dev/null +++ b/wifi/supplicant/aidl/android/hardware/wifi/supplicant/SupplicantStatusCode.aidl @@ -0,0 +1,66 @@ +/* + * 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 android.hardware.wifi.supplicant; + +/** + * Enum values indicating the status of any supplicant operation. + */ +@VintfStability +@Backing(type="int") +enum SupplicantStatusCode { + /** + * No errors. + */ + SUCCESS, + /** + * Unknown failure occurred. + */ + FAILURE_UNKNOWN, + /** + * One of the incoming args is invalid. + */ + FAILURE_ARGS_INVALID, + /** + * |ISupplicantIface| AIDL interface object is no longer valid. + */ + FAILURE_IFACE_INVALID, + /** + * Iface with the provided name does not exist. + */ + FAILURE_IFACE_UNKNOWN, + /** + * Iface with the provided name already exists. + */ + FAILURE_IFACE_EXISTS, + /** + * Iface is disabled and cannot be used. + */ + FAILURE_IFACE_DISABLED, + /** + * Iface is not currently disconnected, so cannot reconnect. + */ + FAILURE_IFACE_NOT_DISCONNECTED, + /** + * |ISupplicantNetwork| AIDL interface object is no longer valid. + */ + FAILURE_NETWORK_INVALID, + /** + * Network with the provided id does not exist. + */ + FAILURE_NETWORK_UNKNOWN, + FAILURE_UNSUPPORTED, +} diff --git a/wifi/supplicant/aidl/android/hardware/wifi/supplicant/TransitionDisableIndication.aidl b/wifi/supplicant/aidl/android/hardware/wifi/supplicant/TransitionDisableIndication.aidl new file mode 100644 index 0000000000..baf20a834f --- /dev/null +++ b/wifi/supplicant/aidl/android/hardware/wifi/supplicant/TransitionDisableIndication.aidl @@ -0,0 +1,33 @@ +/* + * 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 android.hardware.wifi.supplicant; + +/** + * WPA3™ Specification Addendum for WPA3 R3 - Table 3. + * Transition Disable Indication filled in the third + * 4-way handshake message. + * See /external/wpa_supplicant_8/src/common/wpa_common.h for + * all possible values (starting at TRANSITION_DISABLE_WPA3_PERSONAL). + */ +@VintfStability +@Backing(type="int") +enum TransitionDisableIndication { + USE_WPA3_PERSONAL = 1 << 0, + USE_SAE_PK = 1 << 1, + USE_WPA3_ENTERPRISE = 1 << 2, + USE_ENHANCED_OPEN = 1 << 3, +} diff --git a/wifi/supplicant/aidl/android/hardware/wifi/supplicant/WifiTechnology.aidl b/wifi/supplicant/aidl/android/hardware/wifi/supplicant/WifiTechnology.aidl new file mode 100644 index 0000000000..00c16b4278 --- /dev/null +++ b/wifi/supplicant/aidl/android/hardware/wifi/supplicant/WifiTechnology.aidl @@ -0,0 +1,42 @@ +/* + * 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 android.hardware.wifi.supplicant; + +/** + * Wifi Technologies + */ +@VintfStability +@Backing(type="int") +enum WifiTechnology { + UNKNOWN = 0, + /** + * For 802.11a/b/g + */ + LEGACY = 1, + /** + * For 802.11n + */ + HT = 2, + /** + * For 802.11ac + */ + VHT = 3, + /** + * For 802.11ax + */ + HE = 4, +} diff --git a/wifi/supplicant/aidl/android/hardware/wifi/supplicant/WpaDriverCapabilitiesMask.aidl b/wifi/supplicant/aidl/android/hardware/wifi/supplicant/WpaDriverCapabilitiesMask.aidl new file mode 100644 index 0000000000..e174199c78 --- /dev/null +++ b/wifi/supplicant/aidl/android/hardware/wifi/supplicant/WpaDriverCapabilitiesMask.aidl @@ -0,0 +1,41 @@ +/* + * 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 android.hardware.wifi.supplicant; + +/** + * WPA Driver capability. + */ +@VintfStability +@Backing(type="int") +enum WpaDriverCapabilitiesMask { + /** + * Multi Band Operation. + */ + MBO = 1 << 0, + /** + * Optimized Connectivity Experience. + */ + OCE = 1 << 1, + /** + * WPA3 SAE Public-Key. + */ + SAE_PK = 1 << 2, + /** + * Wi-Fi Display R2 + */ + WFD_R2 = 1 << 3, +} diff --git a/wifi/supplicant/aidl/android/hardware/wifi/supplicant/WpsConfigError.aidl b/wifi/supplicant/aidl/android/hardware/wifi/supplicant/WpsConfigError.aidl new file mode 100644 index 0000000000..926946c31b --- /dev/null +++ b/wifi/supplicant/aidl/android/hardware/wifi/supplicant/WpsConfigError.aidl @@ -0,0 +1,46 @@ +/* + * 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 android.hardware.wifi.supplicant; + +/** + * WPS Configuration Error. + */ +@VintfStability +@Backing(type="int") +enum WpsConfigError { + NO_ERROR = 0, + OOB_IFACE_READ_ERROR = 1, + DECRYPTION_CRC_FAILURE = 2, + CHAN_24_NOT_SUPPORTED = 3, + CHAN_50_NOT_SUPPORTED = 4, + SIGNAL_TOO_WEAK = 5, + NETWORK_AUTH_FAILURE = 6, + NETWORK_ASSOC_FAILURE = 7, + NO_DHCP_RESPONSE = 8, + FAILED_DHCP_CONFIG = 9, + IP_ADDR_CONFLICT = 10, + NO_CONN_TO_REGISTRAR = 11, + MULTIPLE_PBC_DETECTED = 12, + ROGUE_SUSPECTED = 13, + DEVICE_BUSY = 14, + SETUP_LOCKED = 15, + MSG_TIMEOUT = 16, + REG_SESS_TIMEOUT = 17, + DEV_PASSWORD_AUTH_FAILURE = 18, + CHAN_60G_NOT_SUPPORTED = 19, + PUBLIC_KEY_HASH_MISMATCH = 20, +} diff --git a/wifi/supplicant/aidl/android/hardware/wifi/supplicant/WpsConfigMethods.aidl b/wifi/supplicant/aidl/android/hardware/wifi/supplicant/WpsConfigMethods.aidl new file mode 100644 index 0000000000..ec08a45a1f --- /dev/null +++ b/wifi/supplicant/aidl/android/hardware/wifi/supplicant/WpsConfigMethods.aidl @@ -0,0 +1,41 @@ +/* + * 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 android.hardware.wifi.supplicant; + +/** + * WPS config methods. + * Refer to section 3 of IBSS with Wi-Fi Protected Setup + * Technical Specification Version 1.0.0. + */ +@VintfStability +@Backing(type="int") +enum WpsConfigMethods { + USBA = 0x0001, + ETHERNET = 0x0002, + LABEL = 0x0004, + DISPLAY = 0x0008, + EXT_NFC_TOKEN = 0x0010, + INT_NFC_TOKEN = 0x0020, + NFC_INTERFACE = 0x0040, + PUSHBUTTON = 0x0080, + KEYPAD = 0x0100, + VIRT_PUSHBUTTON = 0x0280, + PHY_PUSHBUTTON = 0x0480, + P2PS = 0x1000, + VIRT_DISPLAY = 0x2008, + PHY_DISPLAY = 0x4008, +} diff --git a/wifi/supplicant/aidl/android/hardware/wifi/supplicant/WpsDevPasswordId.aidl b/wifi/supplicant/aidl/android/hardware/wifi/supplicant/WpsDevPasswordId.aidl new file mode 100644 index 0000000000..ca5a533fb8 --- /dev/null +++ b/wifi/supplicant/aidl/android/hardware/wifi/supplicant/WpsDevPasswordId.aidl @@ -0,0 +1,33 @@ +/* + * 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 android.hardware.wifi.supplicant; + +/** + * WPS Device Password ID + */ +@VintfStability +@Backing(type="int") +enum WpsDevPasswordId { + DEFAULT = 0x0000, + USER_SPECIFIED = 0x0001, + MACHINE_SPECIFIED = 0x0002, + REKEY = 0x0003, + PUSHBUTTON = 0x0004, + REGISTRAR_SPECIFIED = 0x0005, + NFC_CONNECTION_HANDOVER = 0x0007, + P2PS_DEFAULT = 0x0008, +} diff --git a/wifi/supplicant/aidl/android/hardware/wifi/supplicant/WpsErrorIndication.aidl b/wifi/supplicant/aidl/android/hardware/wifi/supplicant/WpsErrorIndication.aidl new file mode 100644 index 0000000000..4866acc3ee --- /dev/null +++ b/wifi/supplicant/aidl/android/hardware/wifi/supplicant/WpsErrorIndication.aidl @@ -0,0 +1,29 @@ +/* + * 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 android.hardware.wifi.supplicant; + +/** + * Vendor specific Error Indication for WPS event messages. + */ +@VintfStability +@Backing(type="int") +enum WpsErrorIndication { + NO_ERROR = 0, + SECURITY_TKIP_ONLY_PROHIBITED = 1, + SECURITY_WEP_PROHIBITED = 2, + AUTH_FAILURE = 3, +} diff --git a/wifi/supplicant/aidl/android/hardware/wifi/supplicant/WpsProvisionMethod.aidl b/wifi/supplicant/aidl/android/hardware/wifi/supplicant/WpsProvisionMethod.aidl new file mode 100644 index 0000000000..5b59392b71 --- /dev/null +++ b/wifi/supplicant/aidl/android/hardware/wifi/supplicant/WpsProvisionMethod.aidl @@ -0,0 +1,35 @@ +/* + * 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 android.hardware.wifi.supplicant; + +@VintfStability +@Backing(type="int") +enum WpsProvisionMethod { + /** + * Push button method. + */ + PBC, + /** + * Display pin method configuration - pin is generated and displayed on + * device. + */ + DISPLAY, + /** + * Keypad pin method configuration - pin is entered on device. + */ + KEYPAD, +} diff --git a/wifi/supplicant/aidl/vts/functional/Android.bp b/wifi/supplicant/aidl/vts/functional/Android.bp new file mode 100644 index 0000000000..65f96520f3 --- /dev/null +++ b/wifi/supplicant/aidl/vts/functional/Android.bp @@ -0,0 +1,90 @@ +// +// 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 { + // See: http://go/android-license-faq + // A large-scale-change added 'default_applicable_licenses' to import + // all of the 'license_kinds' from "hardware_interfaces_license" + // to get the below license kinds: + // SPDX-license-identifier-Apache-2.0 + default_applicable_licenses: ["hardware_interfaces_license"], +} + +cc_test { + name: "VtsHalWifiSupplicantStaIfaceTargetTest", + defaults: [ + "VtsHalTargetTestDefaults", + "use_libaidlvintf_gtest_helper_static", + ], + srcs: ["supplicant_sta_iface_aidl_test.cpp"], + shared_libs: [ + "libbinder", + "libbinder_ndk", + ], + static_libs: [ + "android.hardware.wifi.supplicant-V1-ndk", + "libwifi-system", + "libwifi-system-iface", + ], + test_suites: [ + "general-tests", + "vts", + ], +} + +cc_test { + name: "VtsHalWifiSupplicantStaNetworkTargetTest", + defaults: [ + "VtsHalTargetTestDefaults", + "use_libaidlvintf_gtest_helper_static", + ], + srcs: ["supplicant_sta_network_aidl_test.cpp"], + shared_libs: [ + "libbinder", + "libbinder_ndk", + ], + static_libs: [ + "android.hardware.wifi.supplicant-V1-ndk", + "libwifi-system", + "libwifi-system-iface", + ], + test_suites: [ + "general-tests", + "vts", + ], +} + +cc_test { + name: "VtsHalWifiSupplicantP2pIfaceTargetTest", + defaults: [ + "VtsHalTargetTestDefaults", + "use_libaidlvintf_gtest_helper_static", + ], + srcs: ["supplicant_p2p_iface_aidl_test.cpp"], + shared_libs: [ + "libbinder", + "libbinder_ndk", + ], + static_libs: [ + "android.hardware.wifi.supplicant-V1-ndk", + "libwifi-system", + "libwifi-system-iface", + ], + test_suites: [ + "general-tests", + "vts", + ], +} diff --git a/wifi/supplicant/aidl/vts/functional/supplicant_p2p_iface_aidl_test.cpp b/wifi/supplicant/aidl/vts/functional/supplicant_p2p_iface_aidl_test.cpp new file mode 100644 index 0000000000..2f4f06d355 --- /dev/null +++ b/wifi/supplicant/aidl/vts/functional/supplicant_p2p_iface_aidl_test.cpp @@ -0,0 +1,633 @@ +/* + * 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. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "supplicant_test_utils.h" + +using aidl::android::hardware::wifi::supplicant::BnSupplicantP2pIfaceCallback; +using aidl::android::hardware::wifi::supplicant::DebugLevel; +using aidl::android::hardware::wifi::supplicant::FreqRange; +using aidl::android::hardware::wifi::supplicant::IfaceType; +using aidl::android::hardware::wifi::supplicant::ISupplicant; +using aidl::android::hardware::wifi::supplicant::ISupplicantP2pIface; +using aidl::android::hardware::wifi::supplicant::MiracastMode; +using aidl::android::hardware::wifi::supplicant::P2pGroupCapabilityMask; +using aidl::android::hardware::wifi::supplicant::P2pProvDiscStatusCode; +using aidl::android::hardware::wifi::supplicant::P2pStatusCode; +using aidl::android::hardware::wifi::supplicant::WpsConfigMethods; +using aidl::android::hardware::wifi::supplicant::WpsDevPasswordId; +using aidl::android::hardware::wifi::supplicant::WpsProvisionMethod; +using android::ProcessState; + +namespace { +const std::string kTestSsidStr = "TestSsid1234"; +const std::vector kTestSsid = + std::vector(kTestSsidStr.begin(), kTestSsidStr.end()); +const std::vector kTestMacAddr = {0x56, 0x67, 0x67, 0xf4, 0x56, 0x92}; +const std::vector kTestPeerMacAddr = {0x56, 0x67, 0x55, + 0xf4, 0x56, 0x92}; +const std::vector kTestZeroMacAddr = std::vector(6, 0); +const std::string kTestPassphrase = "P2pWorld1234"; +const std::string kTestConnectPin = "34556665"; +const std::string kTestGroupIfName = "TestGroup"; +const uint32_t kTestFindTimeout = 5; +const uint32_t kTestConnectGoIntent = 6; +const uint32_t kTestNetworkId = 7; +const uint32_t kTestGroupFreq = 0; +const bool kTestGroupPersistent = false; +const bool kTestGroupIsJoin = false; + +} // namespace + +class SupplicantP2pIfaceCallback : public BnSupplicantP2pIfaceCallback { + public: + SupplicantP2pIfaceCallback() = default; + + ::ndk::ScopedAStatus onDeviceFound( + const std::vector& /* srcAddress */, + const std::vector& /* p2pDeviceAddress */, + const std::vector& /* primaryDeviceType */, + const std::string& /* deviceName */, + WpsConfigMethods /* configMethods */, int8_t /* deviceCapabilities */, + P2pGroupCapabilityMask /* groupCapabilities */, + const std::vector& /* wfdDeviceInfo */) override { + return ndk::ScopedAStatus::ok(); + } + ::ndk::ScopedAStatus onDeviceLost( + const std::vector& /* p2pDeviceAddress */) override { + return ndk::ScopedAStatus::ok(); + } + ::ndk::ScopedAStatus onFindStopped() override { + return ndk::ScopedAStatus::ok(); + } + ::ndk::ScopedAStatus onGoNegotiationCompleted( + P2pStatusCode /* status */) override { + return ndk::ScopedAStatus::ok(); + } + ::ndk::ScopedAStatus onGoNegotiationRequest( + const std::vector& /* srcAddress */, + WpsDevPasswordId /* passwordId */) override { + return ndk::ScopedAStatus::ok(); + } + ::ndk::ScopedAStatus onGroupFormationFailure( + const std::string& /* failureReason */) override { + return ndk::ScopedAStatus::ok(); + } + ::ndk::ScopedAStatus onGroupFormationSuccess() override { + return ndk::ScopedAStatus::ok(); + } + ::ndk::ScopedAStatus onGroupRemoved(const std::string& /* groupIfname */, + bool /* isGroupOwner */) override { + return ndk::ScopedAStatus::ok(); + } + ::ndk::ScopedAStatus onGroupStarted( + const std::string& /* groupIfname */, bool /* isGroupOwner */, + const std::vector& /* ssid */, int32_t /* frequency */, + const std::vector& /* psk */, + const std::string& /* passphrase */, + const std::vector& /* goDeviceAddress */, + bool /* isPersistent */) override { + return ndk::ScopedAStatus::ok(); + } + ::ndk::ScopedAStatus onInvitationReceived( + const std::vector& /* srcAddress */, + const std::vector& /* goDeviceAddress */, + const std::vector& /* bssid */, + int32_t /* persistentNetworkId */, + int32_t /* operatingFrequency */) override { + return ndk::ScopedAStatus::ok(); + } + ::ndk::ScopedAStatus onInvitationResult( + const std::vector& /* bssid */, + P2pStatusCode /* status */) override { + return ndk::ScopedAStatus::ok(); + } + ::ndk::ScopedAStatus onProvisionDiscoveryCompleted( + const std::vector& /* p2pDeviceAddress */, + bool /* isRequest */, P2pProvDiscStatusCode /* status */, + WpsConfigMethods /* configMethods */, + const std::string& /* generatedPin */) override { + return ndk::ScopedAStatus::ok(); + } + ::ndk::ScopedAStatus onR2DeviceFound( + const std::vector& /* srcAddress */, + const std::vector& /* p2pDeviceAddress */, + const std::vector& /* primaryDeviceType */, + const std::string& /* deviceName */, + WpsConfigMethods /* configMethods */, int8_t /* deviceCapabilities */, + P2pGroupCapabilityMask /* groupCapabilities */, + const std::vector& /* wfdDeviceInfo */, + const std::vector& /* wfdR2DeviceInfo */) override { + return ndk::ScopedAStatus::ok(); + } + ::ndk::ScopedAStatus onServiceDiscoveryResponse( + const std::vector& /* srcAddress */, + char16_t /* updateIndicator */, + const std::vector& /* tlvs */) override { + return ndk::ScopedAStatus::ok(); + } + ::ndk::ScopedAStatus onStaAuthorized( + const std::vector& /* srcAddress */, + const std::vector& /* p2pDeviceAddress */) override { + return ndk::ScopedAStatus::ok(); + } + ::ndk::ScopedAStatus onStaDeauthorized( + const std::vector& /* srcAddress */, + const std::vector& /* p2pDeviceAddress */) override { + return ndk::ScopedAStatus::ok(); + } +}; + +class SupplicantP2pIfaceAidlTest : public testing::TestWithParam { + public: + void SetUp() override { + initializeService(); + supplicant_ = ISupplicant::fromBinder(ndk::SpAIBinder( + AServiceManager_waitForService(GetParam().c_str()))); + ASSERT_NE(supplicant_, nullptr); + ASSERT_TRUE(supplicant_ + ->setDebugParams(DebugLevel::EXCESSIVE, + true, // show timestamps + true) + .isOk()); + + bool p2pEnabled = + testing::deviceSupportsFeature("android.hardware.wifi.direct"); + if (!p2pEnabled) { + GTEST_SKIP() << "Wi-Fi Direct is not supported, skip this test."; + } + + EXPECT_TRUE(supplicant_->addP2pInterface(getP2pIfaceName(), &p2p_iface_) + .isOk()); + ASSERT_NE(p2p_iface_, nullptr); + } + + void TearDown() override { + stopSupplicant(); + startWifiFramework(); + } + + protected: + std::shared_ptr supplicant_; + std::shared_ptr p2p_iface_; +}; + +/* + * RegisterCallback + */ +TEST_P(SupplicantP2pIfaceAidlTest, RegisterCallback) { + std::shared_ptr callback = + ndk::SharedRefBase::make(); + ASSERT_NE(callback, nullptr); + EXPECT_TRUE(p2p_iface_->registerCallback(callback).isOk()); +} + +/* + * GetName + */ +TEST_P(SupplicantP2pIfaceAidlTest, GetName) { + std::string name; + EXPECT_TRUE(p2p_iface_->getName(&name).isOk()); + EXPECT_NE(name.size(), 0); +} + +/* + * GetType + */ +TEST_P(SupplicantP2pIfaceAidlTest, GetType) { + IfaceType type; + EXPECT_TRUE(p2p_iface_->getType(&type).isOk()); + EXPECT_EQ(type, IfaceType::P2P); +} + +/* + * GetDeviceAddress + */ +TEST_P(SupplicantP2pIfaceAidlTest, GetDeviceAddress) { + std::vector macAddr; + EXPECT_TRUE(p2p_iface_->getDeviceAddress(&macAddr).isOk()); + EXPECT_EQ(macAddr.size(), 6); +} + +/* + * GetSsid + */ +TEST_P(SupplicantP2pIfaceAidlTest, GetSsid) { + // This will fail with fake values. + std::vector ssid; + EXPECT_FALSE(p2p_iface_->getSsid(kTestMacAddr, &ssid).isOk()); +} + +/* + * GetGroupCapability + */ +TEST_P(SupplicantP2pIfaceAidlTest, GetGroupCapability) { + // This will fail with fake values. + P2pGroupCapabilityMask cap; + EXPECT_FALSE(p2p_iface_->getGroupCapability(kTestMacAddr, &cap).isOk()); +} + +/* + * Set/Get Edmg + */ +TEST_P(SupplicantP2pIfaceAidlTest, SetGetEdmg) { + bool emdg = false; + EXPECT_TRUE(p2p_iface_->setEdmg(true).isOk()); + EXPECT_TRUE(p2p_iface_->getEdmg(&emdg).isOk()); + EXPECT_EQ(emdg, true); + + EXPECT_TRUE(p2p_iface_->setEdmg(false).isOk()); + EXPECT_TRUE(p2p_iface_->getEdmg(&emdg).isOk()); + EXPECT_EQ(emdg, false); +} + +/* + * SetWpsDeviceName + */ +TEST_P(SupplicantP2pIfaceAidlTest, SetWpsDeviceName) { + const std::string deviceName = "TestWpsDeviceName"; + EXPECT_TRUE(p2p_iface_->setWpsDeviceName(deviceName).isOk()); +} + +/* + * SetWpsDeviceType + */ +TEST_P(SupplicantP2pIfaceAidlTest, SetWpsDeviceType) { + const std::vector deviceType = std::vector(8, 0x01); + EXPECT_TRUE(p2p_iface_->setWpsDeviceType(deviceType).isOk()); +} + +/* + * SetWpsManufacturer + */ +TEST_P(SupplicantP2pIfaceAidlTest, SetWpsManufacturer) { + const std::string deviceManufacturer = "TestManufacturer"; + EXPECT_TRUE(p2p_iface_->setWpsManufacturer(deviceManufacturer).isOk()); +} + +/* + * SetWpsModelName + */ +TEST_P(SupplicantP2pIfaceAidlTest, SetWpsModelName) { + const std::string modelName = "TestModelName"; + EXPECT_TRUE(p2p_iface_->setWpsModelName(modelName).isOk()); +} + +/* + * SetWpsModelNumber + */ +TEST_P(SupplicantP2pIfaceAidlTest, SetWpsModelNumber) { + const std::string modelNumber = "TestModelNumber"; + EXPECT_TRUE(p2p_iface_->setWpsModelName(modelNumber).isOk()); +} + +/* + * SetWpsSerialNumber + */ +TEST_P(SupplicantP2pIfaceAidlTest, SetWpsSerialNumber) { + const std::string serialNumber = "TestSerialNumber"; + EXPECT_TRUE(p2p_iface_->setWpsSerialNumber(serialNumber).isOk()); +} + +/* + * SetWpsConfigMethods + */ +TEST_P(SupplicantP2pIfaceAidlTest, SetWpsConfigMethods) { + const WpsConfigMethods config = WpsConfigMethods::DISPLAY; + EXPECT_TRUE(p2p_iface_->setWpsConfigMethods(config).isOk()); +} + +/* + * SetSsidPostfix + */ +TEST_P(SupplicantP2pIfaceAidlTest, SetSsidPostfix) { + const std::vector ssidPostfix = {'t', 'e', 's', 't'}; + EXPECT_TRUE(p2p_iface_->setSsidPostfix(ssidPostfix).isOk()); +} + +/* + * SetWfdDeviceInfo + */ +TEST_P(SupplicantP2pIfaceAidlTest, SetWfdDeviceInfo) { + const std::vector wfdDeviceInfo = std::vector(6, 0x01); + EXPECT_TRUE(p2p_iface_->setWfdDeviceInfo(wfdDeviceInfo).isOk()); +} + +/* + * SetWfdR2DeviceInfo + */ +TEST_P(SupplicantP2pIfaceAidlTest, SetWfdR2DeviceInfo) { + const std::vector wfdR2DeviceInfo = std::vector(4, 0x01); + EXPECT_TRUE(p2p_iface_->setWfdR2DeviceInfo(wfdR2DeviceInfo).isOk()); +} + +/* + * SetGroupIdle + */ +TEST_P(SupplicantP2pIfaceAidlTest, SetGroupIdle) { + // This will fail with fake values. + const uint32_t groupIdleTimeout = 8; + EXPECT_FALSE( + p2p_iface_->setGroupIdle(kTestGroupIfName, groupIdleTimeout).isOk()); +} + +/* + * SetPowerSave + */ +TEST_P(SupplicantP2pIfaceAidlTest, SetPowerSave) { + // This will fail with fake values. + EXPECT_FALSE(p2p_iface_->setPowerSave(kTestGroupIfName, true).isOk()); + EXPECT_FALSE(p2p_iface_->setPowerSave(kTestGroupIfName, false).isOk()); +} + +/* + * SetMiracastMode + */ +TEST_P(SupplicantP2pIfaceAidlTest, SetMiracastMode) { + EXPECT_TRUE(p2p_iface_->setMiracastMode(MiracastMode::DISABLED).isOk()); + EXPECT_TRUE(p2p_iface_->setMiracastMode(MiracastMode::SOURCE).isOk()); + EXPECT_TRUE(p2p_iface_->setMiracastMode(MiracastMode::SINK).isOk()); +} + +/* + * SetDisallowedFrequencies + */ +TEST_P(SupplicantP2pIfaceAidlTest, SetDisallowedFrequencies) { + FreqRange range1; + range1.min = 2412; + range1.max = 2432; + const std::vector ranges = {range1}; + EXPECT_TRUE(p2p_iface_->setDisallowedFrequencies(ranges).isOk()); +} + +/* + * SetListenChannel + */ +TEST_P(SupplicantP2pIfaceAidlTest, SetListenChannel) { + const uint32_t testChannel = 1; + const uint32_t testOperatingClass = 81; + EXPECT_TRUE( + p2p_iface_->setListenChannel(testChannel, testOperatingClass).isOk()); +} + +/* + * SetMacRandomization + */ +TEST_P(SupplicantP2pIfaceAidlTest, EnableMacRandomization) { + // Enable twice + EXPECT_TRUE(p2p_iface_->setMacRandomization(true).isOk()); + EXPECT_TRUE(p2p_iface_->setMacRandomization(true).isOk()); + + // Disable twice + EXPECT_TRUE(p2p_iface_->setMacRandomization(false).isOk()); + EXPECT_TRUE(p2p_iface_->setMacRandomization(false).isOk()); +} + +/* + * AddGroup + */ +TEST_P(SupplicantP2pIfaceAidlTest, AddGroup) { + EXPECT_TRUE(p2p_iface_->addGroup(false, kTestNetworkId).isOk()); +} + +/* + * RemoveGroup + */ +TEST_P(SupplicantP2pIfaceAidlTest, RemoveGroup) { + // This will fail with fake values. + EXPECT_FALSE(p2p_iface_->removeGroup(kTestGroupIfName).isOk()); +} + +/* + * AddGroupWithConfig - success. + */ +TEST_P(SupplicantP2pIfaceAidlTest, AddGroupWithConfig_Success) { + EXPECT_TRUE(p2p_iface_ + ->addGroupWithConfig(kTestSsid, kTestPassphrase, + kTestGroupPersistent, kTestGroupFreq, + kTestZeroMacAddr, kTestGroupIsJoin) + .isOk()); +} + +/* + * AddGroupWithConfig - failure due to invalid SSID. + */ +TEST_P(SupplicantP2pIfaceAidlTest, AddGroupWithConfig_FailureInvalidSsid) { + const std::vector ssid; + EXPECT_FALSE(p2p_iface_ + ->addGroupWithConfig(ssid, kTestPassphrase, + kTestGroupPersistent, kTestGroupFreq, + kTestZeroMacAddr, kTestGroupIsJoin) + .isOk()); +} + +/* + * AddGroupWithConfig - failure due to invalid passphrase. + */ +TEST_P(SupplicantP2pIfaceAidlTest, + AddGroupWithConfig_FailureInvalidPassphrase) { + const std::string passphrase = "1234"; + EXPECT_FALSE(p2p_iface_ + ->addGroupWithConfig(kTestSsid, passphrase, + kTestGroupPersistent, kTestGroupFreq, + kTestZeroMacAddr, kTestGroupIsJoin) + .isOk()); +} + +/* + * AddGroupWithConfig - failure due to invalid frequency. + */ +TEST_P(SupplicantP2pIfaceAidlTest, AddGroupWithConfig_FailureInvalidFrequency) { + const int freq = 9999; + EXPECT_FALSE(p2p_iface_ + ->addGroupWithConfig(kTestSsid, kTestPassphrase, + kTestGroupPersistent, freq, + kTestZeroMacAddr, kTestGroupIsJoin) + .isOk()); +} + +/* + * Find + */ +TEST_P(SupplicantP2pIfaceAidlTest, Find) { + EXPECT_TRUE(p2p_iface_->find(kTestFindTimeout).isOk()); +} + +/* + * StopFind + */ +TEST_P(SupplicantP2pIfaceAidlTest, StopFind) { + EXPECT_TRUE(p2p_iface_->find(kTestFindTimeout).isOk()); + EXPECT_TRUE(p2p_iface_->stopFind().isOk()); +} + +/* + * Flush + */ +TEST_P(SupplicantP2pIfaceAidlTest, Flush) { + EXPECT_TRUE(p2p_iface_->flush().isOk()); +} + +/* + * Connect + */ +TEST_P(SupplicantP2pIfaceAidlTest, Connect) { + /* + * Auto-join is not enabled before R. After enabling auto-join, + * this should always succeed. + */ + std::string pin; + EXPECT_TRUE(p2p_iface_ + ->connect(kTestMacAddr, WpsProvisionMethod::PBC, + kTestConnectPin, false, false, + kTestConnectGoIntent, &pin) + .isOk()); +} + +/* + * CancelConnect + */ +TEST_P(SupplicantP2pIfaceAidlTest, CancelConnect) { + std::string pin; + EXPECT_TRUE(p2p_iface_ + ->connect(kTestMacAddr, WpsProvisionMethod::PBC, + kTestConnectPin, false, false, + kTestConnectGoIntent, &pin) + .isOk()); + EXPECT_TRUE(p2p_iface_->cancelConnect().isOk()); +} + +/* + * ProvisionDiscovery + */ +TEST_P(SupplicantP2pIfaceAidlTest, ProvisionDiscovery) { + // This will fail with fake values. + EXPECT_FALSE( + p2p_iface_->provisionDiscovery(kTestMacAddr, WpsProvisionMethod::PBC) + .isOk()); +} + +/* + * Reject + */ +TEST_P(SupplicantP2pIfaceAidlTest, Reject) { + // This will fail with fake values. + ASSERT_FALSE(p2p_iface_->reject(kTestMacAddr).isOk()); +} + +/* + * Invite + */ +TEST_P(SupplicantP2pIfaceAidlTest, Invite) { + // This will fail with fake values. + EXPECT_FALSE( + p2p_iface_->invite(kTestGroupIfName, kTestMacAddr, kTestPeerMacAddr) + .isOk()); +} + +/* + * Reinvoke + */ +TEST_P(SupplicantP2pIfaceAidlTest, Reinvoke) { + // This will fail with fake values. + EXPECT_FALSE(p2p_iface_->reinvoke(kTestNetworkId, kTestMacAddr).isOk()); +} + +/* + * ConfigureExtListen + */ +TEST_P(SupplicantP2pIfaceAidlTest, ConfigureExtListen) { + const uint32_t extListenPeriod = 400; + const uint32_t extListenInterval = 400; + EXPECT_TRUE( + p2p_iface_->configureExtListen(extListenPeriod, extListenInterval) + .isOk()); +} + +/* + * FlushServices + */ +TEST_P(SupplicantP2pIfaceAidlTest, FlushServices) { + EXPECT_TRUE(p2p_iface_->flushServices().isOk()); +} + +/* + * EnableWfd + */ +TEST_P(SupplicantP2pIfaceAidlTest, EnableWfd) { + EXPECT_TRUE(p2p_iface_->enableWfd(true).isOk()); + EXPECT_TRUE(p2p_iface_->enableWfd(false).isOk()); +} + +/* + * Add/Remove BonjourService + */ +TEST_P(SupplicantP2pIfaceAidlTest, AddAndRemoveBonjourService) { + const std::string serviceQueryStr = "testquery"; + const std::string serviceResponseStr = "testresponse"; + const std::vector bonjourServiceQuery = + std::vector(serviceQueryStr.begin(), serviceQueryStr.end()); + const std::vector bonjourServiceResponse = std::vector( + serviceResponseStr.begin(), serviceResponseStr.end()); + + EXPECT_TRUE( + p2p_iface_ + ->addBonjourService(bonjourServiceQuery, bonjourServiceResponse) + .isOk()); + EXPECT_TRUE(p2p_iface_->removeBonjourService(bonjourServiceQuery).isOk()); + + // This will fail because the boujour service with + // bonjourServiceQuery was already removed. + EXPECT_FALSE(p2p_iface_->removeBonjourService(bonjourServiceQuery).isOk()); +} + +/* + * Add/Remove UpnpService + */ +TEST_P(SupplicantP2pIfaceAidlTest, AddAndRemoveUpnpService) { + const std::string upnpServiceName = "TestServiceName"; + EXPECT_TRUE( + p2p_iface_->addUpnpService(0 /* version */, upnpServiceName).isOk()); + EXPECT_TRUE( + p2p_iface_->removeUpnpService(0 /* version */, upnpServiceName).isOk()); + + // This will fail because Upnp service with + // upnpServiceName was already removed. + EXPECT_FALSE( + p2p_iface_->removeUpnpService(0 /* version */, upnpServiceName).isOk()); +} + +INSTANTIATE_TEST_SUITE_P(Supplicant, SupplicantP2pIfaceAidlTest, + testing::ValuesIn(android::getAidlHalInstanceNames( + ISupplicant::descriptor)), + android::PrintInstanceNameToString); + +int main(int argc, char** argv) { + ::testing::InitGoogleTest(&argc, argv); + ProcessState::self()->setThreadPoolMaxThreadCount(1); + ProcessState::self()->startThreadPool(); + return RUN_ALL_TESTS(); +} diff --git a/wifi/supplicant/aidl/vts/functional/supplicant_sta_iface_aidl_test.cpp b/wifi/supplicant/aidl/vts/functional/supplicant_sta_iface_aidl_test.cpp new file mode 100644 index 0000000000..f51c07f1ad --- /dev/null +++ b/wifi/supplicant/aidl/vts/functional/supplicant_sta_iface_aidl_test.cpp @@ -0,0 +1,782 @@ +/* + * 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. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "supplicant_test_utils.h" + +using aidl::android::hardware::wifi::supplicant::AnqpInfoId; +using aidl::android::hardware::wifi::supplicant::BnSupplicantStaIfaceCallback; +using aidl::android::hardware::wifi::supplicant::BtCoexistenceMode; +using aidl::android::hardware::wifi::supplicant::ConnectionCapabilities; +using aidl::android::hardware::wifi::supplicant::DebugLevel; +using aidl::android::hardware::wifi::supplicant::DppAkm; +using aidl::android::hardware::wifi::supplicant::DppCurve; +using aidl::android::hardware::wifi::supplicant::DppNetRole; +using aidl::android::hardware::wifi::supplicant::DppResponderBootstrapInfo; +using aidl::android::hardware::wifi::supplicant::Hs20AnqpSubtypes; +using aidl::android::hardware::wifi::supplicant::IfaceType; +using aidl::android::hardware::wifi::supplicant::ISupplicant; +using aidl::android::hardware::wifi::supplicant::ISupplicantStaIface; +using aidl::android::hardware::wifi::supplicant::ISupplicantStaNetwork; +using aidl::android::hardware::wifi::supplicant::KeyMgmtMask; +using aidl::android::hardware::wifi::supplicant::RxFilterType; +using aidl::android::hardware::wifi::supplicant::WpaDriverCapabilitiesMask; +using aidl::android::hardware::wifi::supplicant::WpsConfigMethods; +using android::ProcessState; + +static constexpr int TIMEOUT_PERIOD = 60; +class IfaceDppCallback; + +namespace { +const std::vector kTestMacAddr = {0x56, 0x67, 0x67, 0xf4, 0x56, 0x92}; +const std::string kTestUri = + "DPP:C:81/1,117/" + "40;M:48d6d5bd1de1;I:G1197843;K:MDkwEwYHKoZIzj0CAQYIKoZIzj" + "0DAQcDIgAD0edY4X3N//HhMFYsZfMbQJTiNFtNIWF/cIwMB/gzqOM=;;"; +} // namespace + +class SupplicantStaIfaceCallback : public BnSupplicantStaIfaceCallback { + public: + SupplicantStaIfaceCallback() = default; + + ::ndk::ScopedAStatus onAnqpQueryDone( + const std::vector& /* bssid */, + const ::aidl::android::hardware::wifi::supplicant::AnqpData& /* data */, + const ::aidl::android::hardware::wifi::supplicant:: + Hs20AnqpData& /* hs20Data */) override { + return ndk::ScopedAStatus::ok(); + } + ::ndk::ScopedAStatus onAssociationRejected( + const ::aidl::android::hardware::wifi::supplicant:: + AssociationRejectionData& /* assocRejectData */) override { + return ndk::ScopedAStatus::ok(); + } + ::ndk::ScopedAStatus onAuthenticationTimeout( + const std::vector& /* bssid */) override { + return ndk::ScopedAStatus::ok(); + } + ::ndk::ScopedAStatus onBssTmHandlingDone( + const ::aidl::android::hardware::wifi::supplicant:: + BssTmData& /* tmData */) override { + return ndk::ScopedAStatus::ok(); + } + ::ndk::ScopedAStatus onBssidChanged( + ::aidl::android::hardware::wifi::supplicant:: + BssidChangeReason /* reason */, + const std::vector& /* bssid */) override { + return ndk::ScopedAStatus::ok(); + } + ::ndk::ScopedAStatus onDisconnected( + const std::vector& /* bssid */, bool /* locallyGenerated */, + ::aidl::android::hardware::wifi::supplicant:: + StaIfaceReasonCode /* reasonCode */) override { + return ndk::ScopedAStatus::ok(); + } + ::ndk::ScopedAStatus onDppFailure( + ::aidl::android::hardware::wifi::supplicant::DppFailureCode /* code */, + const std::string& /* ssid */, const std::string& /* channelList */, + const std::vector& /* bandList */) override { + return ndk::ScopedAStatus::ok(); + } + ::ndk::ScopedAStatus onDppProgress( + ::aidl::android::hardware::wifi::supplicant::DppProgressCode /* code */) + override { + return ndk::ScopedAStatus::ok(); + } + ::ndk::ScopedAStatus onDppSuccess( + ::aidl::android::hardware::wifi::supplicant::DppEventType /* type */) + override { + return ndk::ScopedAStatus::ok(); + } + ::ndk::ScopedAStatus onDppSuccessConfigReceived( + const std::vector& /* ssid */, + const std::string& /* password */, + const std::vector& /* psk */, + ::aidl::android::hardware::wifi::supplicant::DppAkm /* securityAkm */) + override { + return ndk::ScopedAStatus::ok(); + } + ::ndk::ScopedAStatus onDppSuccessConfigSent() override { + return ndk::ScopedAStatus::ok(); + } + ::ndk::ScopedAStatus onEapFailure(int32_t /* errorCode */) override { + return ndk::ScopedAStatus::ok(); + } + ::ndk::ScopedAStatus onExtRadioWorkStart(int32_t /* id */) override { + return ndk::ScopedAStatus::ok(); + } + ::ndk::ScopedAStatus onExtRadioWorkTimeout(int32_t /* id */) override { + return ndk::ScopedAStatus::ok(); + } + ::ndk::ScopedAStatus onHs20DeauthImminentNotice( + const std::vector& /* bssid */, int32_t /* reasonCode */, + int32_t /* reAuthDelayInSec */, const std::string& /* url */) override { + return ndk::ScopedAStatus::ok(); + } + ::ndk::ScopedAStatus onHs20IconQueryDone( + const std::vector& /* bssid */, + const std::string& /* fileName */, + const std::vector& /* data */) override { + return ndk::ScopedAStatus::ok(); + } + ::ndk::ScopedAStatus onHs20SubscriptionRemediation( + const std::vector& /* bssid */, + ::aidl::android::hardware::wifi::supplicant::OsuMethod /* osuMethod */, + const std::string& /* url */) override { + return ndk::ScopedAStatus::ok(); + } + ::ndk::ScopedAStatus + onHs20TermsAndConditionsAcceptanceRequestedNotification( + const std::vector& /* bssid */, + const std::string& /* url */) override { + return ndk::ScopedAStatus::ok(); + } + ::ndk::ScopedAStatus onNetworkAdded(int32_t /* id */) override { + return ndk::ScopedAStatus::ok(); + } + ::ndk::ScopedAStatus onNetworkNotFound( + const std::vector& /* ssid */) override { + return ndk::ScopedAStatus::ok(); + } + ::ndk::ScopedAStatus onNetworkRemoved(int32_t /* id */) override { + return ndk::ScopedAStatus::ok(); + } + ::ndk::ScopedAStatus onPmkCacheAdded( + int64_t /* expirationTimeInSec */, + const std::vector& /* serializedEntry */) override { + return ndk::ScopedAStatus::ok(); + } + ::ndk::ScopedAStatus onStateChanged( + ::aidl::android::hardware::wifi::supplicant:: + StaIfaceCallbackState /* newState */, + const std::vector& /* bssid */, int32_t /* id */, + const std::vector& /* ssid */, + bool /* filsHlpSent */) override { + return ndk::ScopedAStatus::ok(); + } + ::ndk::ScopedAStatus onWpsEventFail( + const std::vector& /* bssid */, + ::aidl::android::hardware::wifi::supplicant:: + WpsConfigError /* configError */, + ::aidl::android::hardware::wifi::supplicant:: + WpsErrorIndication /* errorInd */) override { + return ndk::ScopedAStatus::ok(); + } + ::ndk::ScopedAStatus onWpsEventPbcOverlap() override { + return ndk::ScopedAStatus::ok(); + } + ::ndk::ScopedAStatus onWpsEventSuccess() override { + return ndk::ScopedAStatus::ok(); + } +}; + +class SupplicantStaIfaceAidlTest : public testing::TestWithParam { + public: + void SetUp() override { + initializeService(); + supplicant_ = ISupplicant::fromBinder(ndk::SpAIBinder( + AServiceManager_waitForService(GetParam().c_str()))); + ASSERT_NE(supplicant_, nullptr); + ASSERT_TRUE(supplicant_ + ->setDebugParams(DebugLevel::EXCESSIVE, + true, // show timestamps + true) + .isOk()); + EXPECT_TRUE(supplicant_->addStaInterface(getStaIfaceName(), &sta_iface_) + .isOk()); + ASSERT_NE(sta_iface_, nullptr); + } + + void TearDown() override { + stopSupplicant(); + startWifiFramework(); + } + + enum DppCallbackType { + ANY_CALLBACK = -2, + INVALID = -1, + EVENT_SUCCESS = 0, + EVENT_PROGRESS, + EVENT_FAILURE, + }; + + DppCallbackType dppCallbackType; + uint32_t code; + + // Used as a mechanism to inform the test about data/event callback + inline void notify() { + std::unique_lock lock(mtx_); + cv_.notify_one(); + } + + // Test code calls this function to wait for data/event callback + inline std::cv_status wait(DppCallbackType waitForCallbackType) { + std::unique_lock lock(mtx_); + EXPECT_NE(INVALID, waitForCallbackType); // can't ASSERT in a + // non-void-returning method + auto now = std::chrono::system_clock::now(); + std::cv_status status = + cv_.wait_until(lock, now + std::chrono::seconds(TIMEOUT_PERIOD)); + return status; + } + + protected: + std::shared_ptr supplicant_; + std::shared_ptr sta_iface_; + + private: + // synchronization objects + std::mutex mtx_; + std::condition_variable cv_; +}; + +/* + * RegisterCallback + */ +TEST_P(SupplicantStaIfaceAidlTest, RegisterCallback) { + std::shared_ptr callback = + ndk::SharedRefBase::make(); + ASSERT_NE(callback, nullptr); + EXPECT_TRUE(sta_iface_->registerCallback(callback).isOk()); +} + +/* + * GetConnectionCapabilities + */ +TEST_P(SupplicantStaIfaceAidlTest, GetConnectionCapabilities) { + ConnectionCapabilities cap; + EXPECT_TRUE(sta_iface_->getConnectionCapabilities(&cap).isOk()); +} + +/* + * GetWpaDriverCapabilities + */ +TEST_P(SupplicantStaIfaceAidlTest, GetWpaDriverCapabilities) { + WpaDriverCapabilitiesMask cap; + EXPECT_TRUE(sta_iface_->getWpaDriverCapabilities(&cap).isOk()); +} + +/* + * GetKeyMgmtCapabilities + */ +TEST_P(SupplicantStaIfaceAidlTest, GetKeyMgmtCapabilities) { + KeyMgmtMask cap; + EXPECT_TRUE(sta_iface_->getKeyMgmtCapabilities(&cap).isOk()); + + // Even though capabilities vary, these two are always set. + EXPECT_TRUE(!!(static_cast(cap) & + static_cast(KeyMgmtMask::NONE))); + EXPECT_TRUE(!!(static_cast(cap) & + static_cast(KeyMgmtMask::IEEE8021X))); +} + +/* + * GetName + */ +TEST_P(SupplicantStaIfaceAidlTest, GetName) { + std::string name; + EXPECT_TRUE(sta_iface_->getName(&name).isOk()); + EXPECT_NE(name.size(), 0); +} + +/* + * GetType + */ +TEST_P(SupplicantStaIfaceAidlTest, GetType) { + IfaceType type; + EXPECT_TRUE(sta_iface_->getType(&type).isOk()); + EXPECT_EQ(type, IfaceType::STA); +} + +/* + * GetMacAddress + */ +TEST_P(SupplicantStaIfaceAidlTest, GetMacAddress) { + std::vector macAddr; + EXPECT_TRUE(sta_iface_->getMacAddress(&macAddr).isOk()); + EXPECT_EQ(macAddr.size(), 6); +} + +/* + * ListNetworks + */ +TEST_P(SupplicantStaIfaceAidlTest, ListNetworks) { + std::vector networks; + EXPECT_TRUE(sta_iface_->listNetworks(&networks).isOk()); +} + +/* + * SetBtCoexistenceMode + */ +TEST_P(SupplicantStaIfaceAidlTest, SetBtCoexistenceMode) { + EXPECT_TRUE( + sta_iface_->setBtCoexistenceMode(BtCoexistenceMode::ENABLED).isOk()); + EXPECT_TRUE( + sta_iface_->setBtCoexistenceMode(BtCoexistenceMode::DISABLED).isOk()); + EXPECT_TRUE( + sta_iface_->setBtCoexistenceMode(BtCoexistenceMode::SENSE).isOk()); +} + +/* + * SetBtCoexistenceScanModeEnabled + */ +TEST_P(SupplicantStaIfaceAidlTest, SetBtCoexistenceScanModeEnabled) { + EXPECT_TRUE(sta_iface_->setBtCoexistenceScanModeEnabled(true).isOk()); + EXPECT_TRUE(sta_iface_->setBtCoexistenceScanModeEnabled(false).isOk()); +} + +/* + * SetSuspendModeEnabled + */ +TEST_P(SupplicantStaIfaceAidlTest, SetSuspendModeEnabled) { + EXPECT_TRUE(sta_iface_->setSuspendModeEnabled(true).isOk()); + EXPECT_TRUE(sta_iface_->setSuspendModeEnabled(false).isOk()); +} + +/* + * SetCountryCode + */ +TEST_P(SupplicantStaIfaceAidlTest, SetCountryCode) { + const std::vector countryCode = {'M', 'X'}; + EXPECT_TRUE(sta_iface_->setCountryCode(countryCode).isOk()); +} + +/* + * SetWpsDeviceName + */ +TEST_P(SupplicantStaIfaceAidlTest, SetWpsDeviceName) { + const std::string deviceName = "TestWpsDeviceName"; + EXPECT_TRUE(sta_iface_->setWpsDeviceName(deviceName).isOk()); +} + +/* + * SetWpsDeviceType + */ +TEST_P(SupplicantStaIfaceAidlTest, SetWpsDeviceType) { + const std::vector deviceType = {8, 0x1}; + EXPECT_TRUE(sta_iface_->setWpsDeviceType(deviceType).isOk()); +} + +/* + * SetWpsManufacturer + */ +TEST_P(SupplicantStaIfaceAidlTest, SetWpsManufacturer) { + const std::string wpsManufacturer = "TestManufacturer"; + EXPECT_TRUE(sta_iface_->setWpsManufacturer(wpsManufacturer).isOk()); +} + +/* + * SetWpsModelName + */ +TEST_P(SupplicantStaIfaceAidlTest, SetWpsModelName) { + const std::string modelName = "TestModelName"; + EXPECT_TRUE(sta_iface_->setWpsModelName(modelName).isOk()); +} + +/* + * SetWpsModelNumber + */ +TEST_P(SupplicantStaIfaceAidlTest, SetWpsModelNumber) { + const std::string modelNumber = "TestModelNumber"; + EXPECT_TRUE(sta_iface_->setWpsModelNumber(modelNumber).isOk()); +} + +/* + * SetWpsSerialNumber + */ +TEST_P(SupplicantStaIfaceAidlTest, SetWpsSerialNumber) { + const std::string serialNumber = "TestSerialNumber"; + EXPECT_TRUE(sta_iface_->setWpsSerialNumber(serialNumber).isOk()); +} + +/* + * SetWpsConfigMethods + */ +TEST_P(SupplicantStaIfaceAidlTest, SetWpsConfigMethods) { + const WpsConfigMethods configMethods = WpsConfigMethods::KEYPAD; + EXPECT_TRUE(sta_iface_->setWpsConfigMethods(configMethods).isOk()); +} + +/* + * SetExternalSim + */ +TEST_P(SupplicantStaIfaceAidlTest, SetExternalSim) { + EXPECT_TRUE(sta_iface_->setExternalSim(true).isOk()); + EXPECT_TRUE(sta_iface_->setExternalSim(false).isOk()); +} + +/* + * SetMboCellularDataStatus + */ +TEST_P(SupplicantStaIfaceAidlTest, SetMboCellularDataStatus) { + WpaDriverCapabilitiesMask cap; + EXPECT_TRUE(sta_iface_->getWpaDriverCapabilities(&cap).isOk()); + + // Operation should succeed if MBO is supported, or fail if it's not. + bool mboSupported = + !!(static_cast(cap) & + static_cast(WpaDriverCapabilitiesMask::MBO)); + EXPECT_EQ(mboSupported, sta_iface_->setMboCellularDataStatus(true).isOk()); +} + +/* + * InitiateTdlsDiscover + */ +TEST_P(SupplicantStaIfaceAidlTest, InitiateTdlsDiscover) { + EXPECT_TRUE(sta_iface_->initiateTdlsDiscover(kTestMacAddr).isOk()); +} + +/* + * InitiateTdlsSetup + */ +TEST_P(SupplicantStaIfaceAidlTest, InitiateTdlsSetup) { + EXPECT_TRUE(sta_iface_->initiateTdlsSetup(kTestMacAddr).isOk()); +} + +/* + * InitiateTdlsTeardown + */ +TEST_P(SupplicantStaIfaceAidlTest, InitiateTdlsTeardown) { + EXPECT_TRUE(sta_iface_->initiateTdlsTeardown(kTestMacAddr).isOk()); +} + +/* + * InitiateAnqpQuery + */ +TEST_P(SupplicantStaIfaceAidlTest, InitiateAnqpQuery) { + const std::vector anqpIds = { + AnqpInfoId::VENUE_NAME, AnqpInfoId::NAI_REALM, AnqpInfoId::DOMAIN_NAME}; + const std::vector hsTypes = { + Hs20AnqpSubtypes::WAN_METRICS, + Hs20AnqpSubtypes::OPERATOR_FRIENDLY_NAME}; + + // Request should fail since the BSSID mentioned + // is not present in the scan results + EXPECT_FALSE( + sta_iface_->initiateAnqpQuery(kTestMacAddr, anqpIds, hsTypes).isOk()); +} + +/* + * InitiateHs20IconQuery + */ +TEST_P(SupplicantStaIfaceAidlTest, InitiateHs20IconQuery) { + // Request should fail since the BSSID mentioned + // is not present in the scan results + const std::string hs20IconFile = "TestFile"; + EXPECT_FALSE( + sta_iface_->initiateHs20IconQuery(kTestMacAddr, hs20IconFile).isOk()); +} + +/* + * InitiateVenueUrlAnqpQuery. + */ +TEST_P(SupplicantStaIfaceAidlTest, InitiateVenueUrlAnqpQuery) { + // Request should fail since the BSSID mentioned + // is not present in the scan results + EXPECT_FALSE(sta_iface_->initiateVenueUrlAnqpQuery(kTestMacAddr).isOk()); +} + +/* + * Reassociate + */ +TEST_P(SupplicantStaIfaceAidlTest, Reassociate) { + EXPECT_TRUE(sta_iface_->reassociate().isOk()); +} + +/* + * Reconnect + */ +TEST_P(SupplicantStaIfaceAidlTest, Reconnect) { + EXPECT_FALSE(sta_iface_->reconnect().isOk()); +} + +/* + * Disconnect + */ +TEST_P(SupplicantStaIfaceAidlTest, Disconnect) { + EXPECT_TRUE(sta_iface_->disconnect().isOk()); +} + +/* + * SetPowerSave + */ +TEST_P(SupplicantStaIfaceAidlTest, SetPowerSave) { + EXPECT_TRUE(sta_iface_->setPowerSave(true).isOk()); + EXPECT_TRUE(sta_iface_->setPowerSave(false).isOk()); +} + +/* + * StartRxFilter + */ +TEST_P(SupplicantStaIfaceAidlTest, StartRxFilter) { + EXPECT_TRUE(sta_iface_->startRxFilter().isOk()); +} + +/* + * StopRxFilter + */ +TEST_P(SupplicantStaIfaceAidlTest, StopRxFilter) { + EXPECT_TRUE(sta_iface_->stopRxFilter().isOk()); +} + +/* + * AddRxFilter + */ +TEST_P(SupplicantStaIfaceAidlTest, AddRxFilter) { + EXPECT_TRUE(sta_iface_->addRxFilter(RxFilterType::V4_MULTICAST).isOk()); + EXPECT_TRUE(sta_iface_->addRxFilter(RxFilterType::V6_MULTICAST).isOk()); +} + +/* + * RemoveRxFilter + */ +TEST_P(SupplicantStaIfaceAidlTest, RemoveRxFilter) { + EXPECT_TRUE(sta_iface_->removeRxFilter(RxFilterType::V4_MULTICAST).isOk()); + EXPECT_TRUE(sta_iface_->removeRxFilter(RxFilterType::V6_MULTICAST).isOk()); +} + +/* + * AddExtRadioWork + */ +TEST_P(SupplicantStaIfaceAidlTest, AddExtRadioWork) { + const std::string radioWorkName = "TestRadioWork"; + const int32_t radioWorkFreq = 2412; + const int32_t radioWorkTimeout = 8; + int32_t radioWorkId; + EXPECT_TRUE(sta_iface_ + ->addExtRadioWork(radioWorkName, radioWorkFreq, + radioWorkTimeout, &radioWorkId) + .isOk()); + // removeExtRadio only succeeds if the added radio work hasn't started yet, + // so there is no guaranteed result from calling removeExtRadioWork here. + // Given that, we can't currently test removeExtRadioWork following + // a call to addExtRadioWork. +} + +/* + * RemoveExtRadioWork + */ +TEST_P(SupplicantStaIfaceAidlTest, RemoveExtRadioWork) { + // This fails because there is no ongoing radio work with radioWorkId + const int32_t radioWorkId = 16; + EXPECT_FALSE(sta_iface_->removeExtRadioWork(radioWorkId).isOk()); +} + +/* + * Add/Remove DppPeerUri + */ +TEST_P(SupplicantStaIfaceAidlTest, AddRemoveDppPeerUri) { + if (!keyMgmtSupported(sta_iface_, KeyMgmtMask::DPP)) { + GTEST_SKIP() << "Missing DPP support"; + } + // Add a peer URI and then remove it. + int32_t peerId; + EXPECT_TRUE(sta_iface_->addDppPeerUri(kTestUri, &peerId).isOk()); + EXPECT_TRUE(sta_iface_->removeDppUri(peerId).isOk()); +} + +/* + * FilsHlpAddRequest + */ +TEST_P(SupplicantStaIfaceAidlTest, FilsHlpAddRequest) { + if (!isFilsSupported(sta_iface_)) { + GTEST_SKIP() + << "Skipping test since driver/supplicant doesn't support FILS"; + } + const std::vector destMacAddr = {0x00, 0x11, 0x22, + 0x33, 0x44, 0x55}; + const std::vector pktBuffer = std::vector(300, 0x3a); + EXPECT_TRUE(sta_iface_->filsHlpAddRequest(destMacAddr, pktBuffer).isOk()); +} + +/* + * FilsHlpFlushRequest + */ +TEST_P(SupplicantStaIfaceAidlTest, FilsHlpFlushRequest) { + if (!isFilsSupported(sta_iface_)) { + GTEST_SKIP() + << "Skipping test since driver/supplicant doesn't support FILS"; + } + EXPECT_TRUE(sta_iface_->filsHlpFlushRequest().isOk()); +} + +/* + * StartDppEnrolleeResponder + */ +TEST_P(SupplicantStaIfaceAidlTest, StartDppEnrolleeResponder) { + if (!keyMgmtSupported(sta_iface_, KeyMgmtMask::DPP)) { + GTEST_SKIP() << "Missing DPP support"; + } + + const std::string deviceInfo = "DPP_Responder_Mode_VTS_Test"; + const std::vector mac_address = {0x22, 0x33, 0x44, + 0x55, 0x66, 0x77}; + + // Generate DPP bootstrap information. + DppResponderBootstrapInfo bootstrapInfo; + EXPECT_TRUE( + sta_iface_ + ->generateDppBootstrapInfoForResponder( + mac_address, deviceInfo, DppCurve::PRIME256V1, &bootstrapInfo) + .isOk()); + EXPECT_NE(-1, bootstrapInfo.bootstrapId); + EXPECT_NE(0, bootstrapInfo.bootstrapId); + EXPECT_NE(0, bootstrapInfo.listenChannel); + const uint32_t bootstrap_id = bootstrapInfo.bootstrapId; + const uint32_t listen_channel = bootstrapInfo.listenChannel; + + // Start DPP as Enrollee-Responder. + EXPECT_TRUE(sta_iface_->startDppEnrolleeResponder(listen_channel).isOk()); + + // Stop DPP Enrollee-Responder mode, ie remove the URI and stop listen. + EXPECT_TRUE(sta_iface_->stopDppResponder(bootstrap_id).isOk()); +} + +class IfaceDppCallback : public SupplicantStaIfaceCallback { + SupplicantStaIfaceAidlTest& parent_; + ::ndk::ScopedAStatus onDppSuccess( + ::aidl::android::hardware::wifi::supplicant::DppEventType event) + override { + parent_.code = (uint32_t)event; + parent_.dppCallbackType = + SupplicantStaIfaceAidlTest::DppCallbackType::EVENT_SUCCESS; + parent_.notify(); + return ndk::ScopedAStatus::ok(); + } + ::ndk::ScopedAStatus onDppProgress( + aidl::android::hardware::wifi::supplicant::DppProgressCode code) + override { + parent_.code = (uint32_t)code; + parent_.dppCallbackType = + SupplicantStaIfaceAidlTest::DppCallbackType::EVENT_PROGRESS; + parent_.notify(); + return ndk::ScopedAStatus::ok(); + } + ::ndk::ScopedAStatus onDppFailure( + aidl::android::hardware::wifi::supplicant::DppFailureCode code, + const std::string& ssid __attribute__((unused)), + const std::string& channelList __attribute__((unused)), + const std::vector& bandList + __attribute__((unused))) override { + parent_.code = (uint32_t)code; + parent_.dppCallbackType = + SupplicantStaIfaceAidlTest::DppCallbackType::EVENT_FAILURE; + parent_.notify(); + return ndk::ScopedAStatus::ok(); + } + + public: + IfaceDppCallback(SupplicantStaIfaceAidlTest& parent) : parent_(parent){}; +}; + +/* + * StartDppEnrolleeInitiator + */ +TEST_P(SupplicantStaIfaceAidlTest, StartDppEnrolleeInitiator) { + if (!keyMgmtSupported(sta_iface_, KeyMgmtMask::DPP)) { + GTEST_SKIP() << "Missing DPP support"; + } + + // Register callback + std::shared_ptr callback = + ndk::SharedRefBase::make(*this); + EXPECT_NE(callback, nullptr); + EXPECT_TRUE(sta_iface_->registerCallback(callback).isOk()); + + // Add a peer URI + int32_t peer_id = 0; + EXPECT_TRUE(sta_iface_->addDppPeerUri(kTestUri, &peer_id).isOk()); + EXPECT_NE(0, peer_id); + EXPECT_NE(-1, peer_id); + + // Start DPP as Enrollee-Initiator. Since this operation requires two + // devices, we start the operation and expect a timeout. + EXPECT_TRUE(sta_iface_->startDppEnrolleeInitiator(peer_id, 0).isOk()); + + // Wait for the timeout callback + EXPECT_EQ(std::cv_status::no_timeout, + wait(SupplicantStaIfaceAidlTest::DppCallbackType::EVENT_FAILURE)); + EXPECT_EQ(SupplicantStaIfaceAidlTest::DppCallbackType::EVENT_FAILURE, + dppCallbackType); + + // ...and then remove the peer URI. + EXPECT_TRUE(sta_iface_->removeDppUri(peer_id).isOk()); +} + +/* + * StartDppConfiguratorInitiator + */ +TEST_P(SupplicantStaIfaceAidlTest, StartDppConfiguratorInitiator) { + if (!keyMgmtSupported(sta_iface_, KeyMgmtMask::DPP)) { + GTEST_SKIP() << "Missing DPP support"; + } + + // Register callback + std::shared_ptr callback = + ndk::SharedRefBase::make(*this); + EXPECT_NE(callback, nullptr); + EXPECT_TRUE(sta_iface_->registerCallback(callback).isOk()); + + // Add a peer URI + int32_t peer_id = 0; + EXPECT_TRUE(sta_iface_->addDppPeerUri(kTestUri, &peer_id).isOk()); + EXPECT_NE(0, peer_id); + EXPECT_NE(-1, peer_id); + + const std::string ssid = + "6D795F746573745F73736964"; // 'my_test_ssid' encoded in hex + const std::string password = + "746F70736563726574"; // 'topsecret' encoded in hex + + // Start DPP as Configurator-Initiator. Since this operation requires two + // devices, we start the operation and expect a timeout. + EXPECT_TRUE(sta_iface_ + ->startDppConfiguratorInitiator(peer_id, 0, ssid, password, + "", DppNetRole::STA, + DppAkm::PSK) + .isOk()); + + // Wait for the timeout callback + ASSERT_EQ(std::cv_status::no_timeout, + wait(SupplicantStaIfaceAidlTest::DppCallbackType::EVENT_FAILURE)); + ASSERT_EQ(SupplicantStaIfaceAidlTest::DppCallbackType::EVENT_FAILURE, + dppCallbackType); + + // ...and then remove the peer URI. + EXPECT_TRUE(sta_iface_->removeDppUri(peer_id).isOk()); +} + +INSTANTIATE_TEST_SUITE_P(Supplicant, SupplicantStaIfaceAidlTest, + testing::ValuesIn(android::getAidlHalInstanceNames( + ISupplicant::descriptor)), + android::PrintInstanceNameToString); + +int main(int argc, char** argv) { + ::testing::InitGoogleTest(&argc, argv); + ProcessState::self()->setThreadPoolMaxThreadCount(1); + ProcessState::self()->startThreadPool(); + return RUN_ALL_TESTS(); +} diff --git a/wifi/supplicant/aidl/vts/functional/supplicant_sta_network_aidl_test.cpp b/wifi/supplicant/aidl/vts/functional/supplicant_sta_network_aidl_test.cpp new file mode 100644 index 0000000000..66c88073cc --- /dev/null +++ b/wifi/supplicant/aidl/vts/functional/supplicant_sta_network_aidl_test.cpp @@ -0,0 +1,791 @@ +/* + * 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. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "supplicant_test_utils.h" + +using aidl::android::hardware::wifi::supplicant::AuthAlgMask; +using aidl::android::hardware::wifi::supplicant::BnSupplicantStaNetworkCallback; +using aidl::android::hardware::wifi::supplicant::DebugLevel; +using aidl::android::hardware::wifi::supplicant::EapMethod; +using aidl::android::hardware::wifi::supplicant::EapPhase2Method; +using aidl::android::hardware::wifi::supplicant::GroupCipherMask; +using aidl::android::hardware::wifi::supplicant::GroupMgmtCipherMask; +using aidl::android::hardware::wifi::supplicant::IfaceType; +using aidl::android::hardware::wifi::supplicant::ISupplicant; +using aidl::android::hardware::wifi::supplicant::ISupplicantStaIface; +using aidl::android::hardware::wifi::supplicant::ISupplicantStaNetwork; +using aidl::android::hardware::wifi::supplicant::KeyMgmtMask; +using aidl::android::hardware::wifi::supplicant:: + NetworkRequestEapSimGsmAuthParams; +using aidl::android::hardware::wifi::supplicant:: + NetworkRequestEapSimUmtsAuthParams; +using aidl::android::hardware::wifi::supplicant:: + NetworkResponseEapSimGsmAuthParams; +using aidl::android::hardware::wifi::supplicant:: + NetworkResponseEapSimUmtsAuthParams; +using aidl::android::hardware::wifi::supplicant::OcspType; +using aidl::android::hardware::wifi::supplicant::PairwiseCipherMask; +using aidl::android::hardware::wifi::supplicant::ProtoMask; +using aidl::android::hardware::wifi::supplicant::SaeH2eMode; +using aidl::android::hardware::wifi::supplicant::TransitionDisableIndication; +using aidl::android::hardware::wifi::supplicant::WpaDriverCapabilitiesMask; +using android::ProcessState; + +namespace { +const std::vector kTestIdentity = {0x45, 0x67, 0x98, 0x67, 0x56}; +const std::vector kTestEncryptedIdentity = {0x35, 0x37, 0x58, 0x57, + 0x26}; +const std::string kTestSsidStr = "TestSsid1234"; +const std::vector kTestSsid = + std::vector(kTestSsidStr.begin(), kTestSsidStr.end()); +const std::vector kTestBssid = {0x56, 0x67, 0x67, 0xf4, 0x56, 0x92}; +const std::string kTestPskPassphrase = + "\"123456780abcdef0123456780abcdef0deadbeef\""; +const std::string kTestEapCert = "keystore://CERT"; +const std::string kTestEapMatch = "match"; +const KeyMgmtMask kTestKeyMgmt = + static_cast(static_cast(KeyMgmtMask::WPA_PSK) | + static_cast(KeyMgmtMask::WPA_EAP)); + +} // namespace + +class SupplicantStaNetworkCallback : public BnSupplicantStaNetworkCallback { + public: + SupplicantStaNetworkCallback() = default; + + ::ndk::ScopedAStatus onNetworkEapIdentityRequest() override { + return ndk::ScopedAStatus::ok(); + } + ::ndk::ScopedAStatus onNetworkEapSimGsmAuthRequest( + const NetworkRequestEapSimGsmAuthParams& /* params */) override { + return ndk::ScopedAStatus::ok(); + } + ::ndk::ScopedAStatus onNetworkEapSimUmtsAuthRequest( + const NetworkRequestEapSimUmtsAuthParams& /* params */) override { + return ndk::ScopedAStatus::ok(); + } + ::ndk::ScopedAStatus onTransitionDisable( + TransitionDisableIndication /* ind */) override { + return ndk::ScopedAStatus::ok(); + } +}; + +class SupplicantStaNetworkAidlTest + : public testing::TestWithParam { + public: + void SetUp() override { + initializeService(); + supplicant_ = ISupplicant::fromBinder(ndk::SpAIBinder( + AServiceManager_waitForService(GetParam().c_str()))); + ASSERT_NE(supplicant_, nullptr); + ASSERT_TRUE(supplicant_ + ->setDebugParams(DebugLevel::EXCESSIVE, + true, // show timestamps + true) + .isOk()); + EXPECT_TRUE(supplicant_->addStaInterface(getStaIfaceName(), &sta_iface_) + .isOk()); + ASSERT_NE(sta_iface_, nullptr); + EXPECT_TRUE(sta_iface_->addNetwork(&sta_network_).isOk()); + ASSERT_NE(sta_network_, nullptr); + } + + void TearDown() override { + stopSupplicant(); + startWifiFramework(); + } + + protected: + std::shared_ptr supplicant_; + std::shared_ptr sta_iface_; + std::shared_ptr sta_network_; + + void removeNetwork() { + ASSERT_NE(sta_iface_, nullptr); + int32_t net_id; + EXPECT_TRUE(sta_network_->getId(&net_id).isOk()); + EXPECT_TRUE(sta_iface_->removeNetwork(net_id).isOk()); + } +}; + +/* + * RegisterCallback + */ +TEST_P(SupplicantStaNetworkAidlTest, RegisterCallback) { + std::shared_ptr callback = + ndk::SharedRefBase::make(); + ASSERT_NE(callback, nullptr); + EXPECT_TRUE(sta_network_->registerCallback(callback).isOk()); +} + +/* + * GetInterfaceName + */ +TEST_P(SupplicantStaNetworkAidlTest, GetInterfaceName) { + std::string name; + EXPECT_TRUE(sta_network_->getInterfaceName(&name).isOk()); + EXPECT_NE(name.size(), 0); +} + +/* + * GetType + */ +TEST_P(SupplicantStaNetworkAidlTest, GetType) { + IfaceType type; + EXPECT_TRUE(sta_network_->getType(&type).isOk()); + EXPECT_EQ(type, IfaceType::STA); +} + +/* + * Set/Get ScanSsid + */ +TEST_P(SupplicantStaNetworkAidlTest, SetGetScanSsid) { + bool scanSsid = false; + EXPECT_TRUE(sta_network_->setScanSsid(true).isOk()); + EXPECT_TRUE(sta_network_->getScanSsid(&scanSsid).isOk()); + EXPECT_TRUE(scanSsid); +} + +/* + * Set/Get RequirePmf + */ +TEST_P(SupplicantStaNetworkAidlTest, SetGetRequirePmf) { + bool requirePmf = false; + EXPECT_TRUE(sta_network_->setRequirePmf(true).isOk()); + EXPECT_TRUE(sta_network_->getRequirePmf(&requirePmf).isOk()); + EXPECT_TRUE(requirePmf); +} + +/* + * Set/Get IdStr + */ +TEST_P(SupplicantStaNetworkAidlTest, SetGetIdStr) { + const std::string savedIdStr = "TestIdstr"; + EXPECT_TRUE(sta_network_->setIdStr(savedIdStr).isOk()); + + std::string retrievedIdStr; + EXPECT_TRUE(sta_network_->getIdStr(&retrievedIdStr).isOk()); + EXPECT_EQ(retrievedIdStr, savedIdStr); +} + +/* + * Set/Get EapMethod + */ +TEST_P(SupplicantStaNetworkAidlTest, SetGetEapMethod) { + const EapMethod savedMethod = EapMethod::PEAP; + EXPECT_TRUE(sta_network_->setEapMethod(savedMethod).isOk()); + + EapMethod retrievedMethod; + EXPECT_TRUE(sta_network_->getEapMethod(&retrievedMethod).isOk()); + EXPECT_EQ(retrievedMethod, savedMethod); +} + +/* + * Set/Get EapPhase2Method + */ +TEST_P(SupplicantStaNetworkAidlTest, SetGetEapPhase2Method) { + const EapMethod savedEapMethod = EapMethod::PEAP; + EXPECT_TRUE(sta_network_->setEapMethod(savedEapMethod).isOk()); + + const EapPhase2Method savedPhase2Method = EapPhase2Method::NONE; + EXPECT_TRUE(sta_network_->setEapPhase2Method(savedPhase2Method).isOk()); + + EapPhase2Method retrievedMethod; + EXPECT_TRUE(sta_network_->getEapPhase2Method(&retrievedMethod).isOk()); + EXPECT_EQ(retrievedMethod, savedPhase2Method); +} + +/* + * Set/Get EapIdentity + */ +TEST_P(SupplicantStaNetworkAidlTest, SetGetEapIdentity) { + EXPECT_TRUE(sta_network_->setEapIdentity(kTestIdentity).isOk()); + + std::vector retrievedIdentity; + EXPECT_TRUE(sta_network_->getEapIdentity(&retrievedIdentity).isOk()); + EXPECT_EQ(retrievedIdentity, kTestIdentity); +} + +/* + * Set/Get EapAnonymousIdentity + */ +TEST_P(SupplicantStaNetworkAidlTest, SetGetEapAnonymousIdentity) { + EXPECT_TRUE(sta_network_->setEapAnonymousIdentity(kTestIdentity).isOk()); + + std::vector retrievedIdentity; + EXPECT_TRUE( + sta_network_->getEapAnonymousIdentity(&retrievedIdentity).isOk()); + EXPECT_EQ(retrievedIdentity, kTestIdentity); +} + +/* + * Set/Get EapPassword + */ +TEST_P(SupplicantStaNetworkAidlTest, SetGetEapPassword) { + const std::string eapPasswdStr = "TestEapPasswd1234"; + const std::vector savedEapPasswd = + std::vector(eapPasswdStr.begin(), eapPasswdStr.end()); + ASSERT_TRUE(sta_network_->setEapPassword(savedEapPasswd).isOk()); + + std::vector retrievedEapPasswd; + ASSERT_TRUE(sta_network_->getEapPassword(&retrievedEapPasswd).isOk()); + ASSERT_EQ(retrievedEapPasswd, savedEapPasswd); +} + +/* + * Set/Get EapCACert + */ +TEST_P(SupplicantStaNetworkAidlTest, SetGetEapCACert) { + EXPECT_TRUE(sta_network_->setEapCACert(kTestEapCert).isOk()); + + std::string retrievedCert; + EXPECT_TRUE(sta_network_->getEapCACert(&retrievedCert).isOk()); + EXPECT_EQ(retrievedCert, kTestEapCert); +} + +/* + * Set/Get EapCAPath + */ +TEST_P(SupplicantStaNetworkAidlTest, SetGetEapCAPath) { + EXPECT_TRUE(sta_network_->setEapCAPath(kTestEapCert).isOk()); + + std::string retrievedCert; + EXPECT_TRUE(sta_network_->getEapCAPath(&retrievedCert).isOk()); + EXPECT_EQ(retrievedCert, kTestEapCert); +} + +/* + * Set/Get EapClientCert + */ +TEST_P(SupplicantStaNetworkAidlTest, SetGetEapClientCert) { + EXPECT_TRUE(sta_network_->setEapClientCert(kTestEapCert).isOk()); + + std::string retrievedCert; + EXPECT_TRUE(sta_network_->getEapClientCert(&retrievedCert).isOk()); + EXPECT_EQ(retrievedCert, kTestEapCert); +} + +/* + * Set/Get EapPrivateKeyId + */ +TEST_P(SupplicantStaNetworkAidlTest, SetGetEapPrivateKeyId) { + std::string savedKeyId = "key_id"; + EXPECT_TRUE(sta_network_->setEapPrivateKeyId(savedKeyId).isOk()); + + std::string retrievedKeyId; + EXPECT_TRUE(sta_network_->getEapPrivateKeyId(&retrievedKeyId).isOk()); + EXPECT_EQ(retrievedKeyId, savedKeyId); +} + +/* + * Set/Get EapAltSubjectMatch + */ +TEST_P(SupplicantStaNetworkAidlTest, SetGetEapAltSubjectMatch) { + EXPECT_TRUE(sta_network_->setEapAltSubjectMatch(kTestEapMatch).isOk()); + + std::string retrievedMatch; + EXPECT_TRUE(sta_network_->getEapAltSubjectMatch(&retrievedMatch).isOk()); + EXPECT_EQ(retrievedMatch, kTestEapMatch); +} + +/* + * Set/Get EapSubjectMatch + */ +TEST_P(SupplicantStaNetworkAidlTest, SetGetEapSubjectMatch) { + EXPECT_TRUE(sta_network_->setEapSubjectMatch(kTestEapMatch).isOk()); + + std::string retrievedMatch; + EXPECT_TRUE(sta_network_->getEapSubjectMatch(&retrievedMatch).isOk()); + EXPECT_EQ(retrievedMatch, kTestEapMatch); +} + +/* + * Set/Get EapDomainSuffixMatch + */ +TEST_P(SupplicantStaNetworkAidlTest, SetGetEapDomainSuffixMatch) { + EXPECT_TRUE(sta_network_->setEapDomainSuffixMatch(kTestEapMatch).isOk()); + + std::string retrievedMatch; + EXPECT_TRUE(sta_network_->getEapDomainSuffixMatch(&retrievedMatch).isOk()); + EXPECT_EQ(retrievedMatch, kTestEapMatch); +} + +/* + * Set/Get EapEngine + */ +TEST_P(SupplicantStaNetworkAidlTest, SetGetEapEngine) { + bool retrievedEapEngine = false; + EXPECT_TRUE(sta_network_->setEapEngine(true).isOk()); + EXPECT_TRUE(sta_network_->getEapEngine(&retrievedEapEngine).isOk()); + EXPECT_TRUE(retrievedEapEngine); +} + +/* + * Set/Get EapEngineID + */ +TEST_P(SupplicantStaNetworkAidlTest, SetGetEapEngineId) { + const std::string savedEngineId = "engine_id"; + EXPECT_TRUE(sta_network_->setEapEngineID(savedEngineId).isOk()); + + std::string retrievedId; + EXPECT_TRUE(sta_network_->getEapEngineId(&retrievedId).isOk()); + EXPECT_EQ(retrievedId, savedEngineId); +} + +/* + * Set/Get Ocsp + */ +TEST_P(SupplicantStaNetworkAidlTest, SetGetOcsp) { + const OcspType savedOcspType = OcspType::REQUEST_CERT_STATUS; + EXPECT_TRUE(sta_network_->setOcsp(savedOcspType).isOk()); + + const OcspType invalidOcspType = static_cast(-1); + EXPECT_FALSE(sta_network_->setOcsp(invalidOcspType).isOk()); + + OcspType retrievedOcspType; + EXPECT_TRUE(sta_network_->getOcsp(&retrievedOcspType).isOk()); + EXPECT_EQ(retrievedOcspType, savedOcspType); +} + +/* + * Set/Get KeyMgmt + */ +TEST_P(SupplicantStaNetworkAidlTest, SetGetKeyMgmt) { + KeyMgmtMask savedKeyMgmt = KeyMgmtMask::WAPI_PSK; + EXPECT_TRUE(sta_network_->setKeyMgmt(savedKeyMgmt).isOk()); + + KeyMgmtMask retrievedKeyMgmt; + EXPECT_TRUE(sta_network_->getKeyMgmt(&retrievedKeyMgmt).isOk()); + EXPECT_EQ(retrievedKeyMgmt, savedKeyMgmt); + + savedKeyMgmt = KeyMgmtMask::WAPI_CERT; + EXPECT_TRUE(sta_network_->setKeyMgmt(savedKeyMgmt).isOk()); + + EXPECT_TRUE(sta_network_->getKeyMgmt(&retrievedKeyMgmt).isOk()); + EXPECT_EQ(retrievedKeyMgmt, savedKeyMgmt); +} + +/* + * Set/Get Proto + */ +TEST_P(SupplicantStaNetworkAidlTest, SetGetProto) { + const ProtoMask savedProto = ProtoMask::WAPI; + EXPECT_TRUE(sta_network_->setProto(savedProto).isOk()); + + ProtoMask retrievedProto; + EXPECT_TRUE(sta_network_->getProto(&retrievedProto).isOk()); + EXPECT_EQ(retrievedProto, savedProto); +} + +/* + * Set/Get GroupCipher + */ +TEST_P(SupplicantStaNetworkAidlTest, SetGetGroupCipher) { + const GroupCipherMask savedCipher = GroupCipherMask::SMS4; + EXPECT_TRUE(sta_network_->setGroupCipher(savedCipher).isOk()); + + GroupCipherMask retrievedCipher; + EXPECT_TRUE(sta_network_->getGroupCipher(&retrievedCipher).isOk()); + EXPECT_EQ(retrievedCipher, savedCipher); +} + +/* + * Set/Get PairwiseCipher + */ +TEST_P(SupplicantStaNetworkAidlTest, SetGetPairwiseCipher) { + const PairwiseCipherMask savedCipher = PairwiseCipherMask::SMS4; + EXPECT_TRUE(sta_network_->setPairwiseCipher(savedCipher).isOk()); + + PairwiseCipherMask retrievedCipher; + EXPECT_TRUE(sta_network_->getPairwiseCipher(&retrievedCipher).isOk()); + EXPECT_EQ(retrievedCipher, savedCipher); +} + +/* + * Set/Get WapiCertSuite + */ +TEST_P(SupplicantStaNetworkAidlTest, SetGetWapiCertSuite) { + if (!keyMgmtSupported(sta_iface_, KeyMgmtMask::WAPI_PSK)) { + GTEST_SKIP() << "Skipping test since WAPI is not supported."; + } + + const std::string savedCertSuite = "suite"; + EXPECT_TRUE(sta_network_->setWapiCertSuite(savedCertSuite).isOk()); + + std::string retrievedCertSuite; + EXPECT_TRUE(sta_network_->getWapiCertSuite(&retrievedCertSuite).isOk()); + EXPECT_EQ(retrievedCertSuite, savedCertSuite); +} + +/* + * Set/Get WapiPsk + */ +TEST_P(SupplicantStaNetworkAidlTest, SetGetWapiPsk) { + if (!keyMgmtSupported(sta_iface_, KeyMgmtMask::WAPI_PSK)) { + GTEST_SKIP() << "Skipping test since WAPI is not supported."; + } + + EXPECT_TRUE(sta_network_->setKeyMgmt(KeyMgmtMask::WAPI_PSK).isOk()); + EXPECT_TRUE(sta_network_->setPskPassphrase(kTestPskPassphrase).isOk()); + + std::string retrievedPassphrase; + EXPECT_TRUE(sta_network_->getPskPassphrase(&retrievedPassphrase).isOk()); + EXPECT_EQ(retrievedPassphrase, kTestPskPassphrase); + + const std::string pskHex = "12345678"; + EXPECT_TRUE(sta_network_->setPskPassphrase(pskHex).isOk()); + + EXPECT_TRUE(sta_network_->getPskPassphrase(&retrievedPassphrase).isOk()); + EXPECT_EQ(retrievedPassphrase, pskHex); +} + +/* + * Set/Get SaePassword + */ +TEST_P(SupplicantStaNetworkAidlTest, SetGetSaePassword) { + const std::string savedPassword = "topsecret"; + EXPECT_TRUE(sta_network_->setSaePassword(savedPassword).isOk()); + + std::string retrievedPassword; + EXPECT_TRUE(sta_network_->getSaePassword(&retrievedPassword).isOk()); + EXPECT_EQ(retrievedPassword, savedPassword); +} + +/* + * Set/Get SaePasswordId + */ +TEST_P(SupplicantStaNetworkAidlTest, SetGetSaePasswordId) { + const std::string savedPasswdId = "id1"; + EXPECT_TRUE(sta_network_->setSaePasswordId(savedPasswdId).isOk()); + + std::string retrievedPasswdId; + EXPECT_TRUE(sta_network_->getSaePasswordId(&retrievedPasswdId).isOk()); + EXPECT_EQ(retrievedPasswdId, savedPasswdId); +} + +/* + * Set/Get GroupMgmtCipher + */ +TEST_P(SupplicantStaNetworkAidlTest, SetGetGroupMgmtCipher) { + const GroupMgmtCipherMask savedCipher = GroupMgmtCipherMask::BIP_GMAC_256; + EXPECT_TRUE(sta_network_->setGroupMgmtCipher(savedCipher).isOk()); + + GroupMgmtCipherMask retrievedCipher; + EXPECT_TRUE(sta_network_->getGroupMgmtCipher(&retrievedCipher).isOk()); + EXPECT_EQ(retrievedCipher, savedCipher); +} + +/* + * Set/Get Ssid + */ +TEST_P(SupplicantStaNetworkAidlTest, SetGetSsid) { + EXPECT_TRUE(sta_network_->setSsid(kTestSsid).isOk()); + + std::vector retrievedSsid; + EXPECT_TRUE(sta_network_->getSsid(&retrievedSsid).isOk()); + EXPECT_EQ(retrievedSsid, kTestSsid); +} + +/* + * Set/Get Bssid + */ +TEST_P(SupplicantStaNetworkAidlTest, SetGetBssid) { + EXPECT_TRUE(sta_network_->setBssid(kTestBssid).isOk()); + + std::vector retrievedBssid; + EXPECT_TRUE(sta_network_->getBssid(&retrievedBssid).isOk()); + EXPECT_EQ(retrievedBssid, kTestBssid); +} + +/* + * Set/Get KeyAuthAlg + */ +TEST_P(SupplicantStaNetworkAidlTest, SetGetAuthAlg) { + const AuthAlgMask savedAlg = + static_cast(static_cast(AuthAlgMask::OPEN) | + static_cast(AuthAlgMask::SHARED)); + EXPECT_TRUE(sta_network_->setAuthAlg(savedAlg).isOk()); + + AuthAlgMask retrievedAlg; + EXPECT_TRUE(sta_network_->getAuthAlg(&retrievedAlg).isOk()); + EXPECT_EQ(retrievedAlg, savedAlg); +} + +/* + * Set/Get WepTxKeyIdx + */ +TEST_P(SupplicantStaNetworkAidlTest, SetGetWepTxKeyIdx) { + const int32_t savedKeyIdx = 2; + EXPECT_TRUE(sta_network_->setWepTxKeyIdx(savedKeyIdx).isOk()); + + int32_t retrievedKeyIdx; + EXPECT_TRUE(sta_network_->getWepTxKeyIdx(&retrievedKeyIdx).isOk()); + EXPECT_EQ(retrievedKeyIdx, savedKeyIdx); +} + +/* + * Set SAE H2E (Hash-to-Element) mode + */ +TEST_P(SupplicantStaNetworkAidlTest, SetSaeH2eMode) { + EXPECT_TRUE(sta_network_->setSaeH2eMode(SaeH2eMode::DISABLED).isOk()); + EXPECT_TRUE(sta_network_->setSaeH2eMode(SaeH2eMode::H2E_MANDATORY).isOk()); + EXPECT_TRUE(sta_network_->setSaeH2eMode(SaeH2eMode::H2E_OPTIONAL).isOk()); +} + +/* + * Set/Get Psk + */ +TEST_P(SupplicantStaNetworkAidlTest, SetGetPsk) { + const std::vector savedPsk = std::vector(32, 0x12); + EXPECT_TRUE(sta_network_->setPsk(savedPsk).isOk()); + + std::vector retrievedPsk; + EXPECT_TRUE(sta_network_->getPsk(&retrievedPsk).isOk()); + EXPECT_EQ(retrievedPsk, savedPsk); +} + +/* + * Set/Get WepKeys + */ +TEST_P(SupplicantStaNetworkAidlTest, SetGetWepKeys) { + const uint32_t maxKeys = 4; + const std::vector testWepKey = {0x56, 0x67, 0x67, 0xf4, 0x56}; + + for (uint32_t i = 0; i < maxKeys; i++) { + std::vector retrievedKey; + EXPECT_TRUE(sta_network_->setWepKey(i, testWepKey).isOk()); + EXPECT_TRUE(sta_network_->getWepKey(i, &retrievedKey).isOk()); + EXPECT_EQ(retrievedKey, testWepKey); + } +} + +/* + * SetPmkCacheEntry + */ +TEST_P(SupplicantStaNetworkAidlTest, SetPmkCache) { + const std::vector serializedEntry(128, 0); + EXPECT_TRUE(sta_network_->setPmkCache(serializedEntry).isOk()); +} + +/* + * SetEapErp + */ +TEST_P(SupplicantStaNetworkAidlTest, SetEapErp) { + if (!isFilsSupported(sta_iface_)) { + GTEST_SKIP() + << "Skipping test since driver/supplicant doesn't support FILS"; + } + EXPECT_TRUE(sta_network_->setEapErp(true).isOk()); +} + +/* + * SetUpdateIdentifier + */ +TEST_P(SupplicantStaNetworkAidlTest, SetUpdateIdentifier) { + const uint32_t updateIdentifier = 21; + EXPECT_TRUE(sta_network_->setUpdateIdentifier(updateIdentifier).isOk()); +} + +/* + * SetProactiveKeyCaching + */ +TEST_P(SupplicantStaNetworkAidlTest, SetProactiveKeyCaching) { + EXPECT_TRUE(sta_network_->setProactiveKeyCaching(true).isOk()); + EXPECT_TRUE(sta_network_->setProactiveKeyCaching(false).isOk()); +} + +/* + * EnableSuiteBEapOpenSslCiphers + */ +TEST_P(SupplicantStaNetworkAidlTest, EnableSuiteBEapOpenSslCiphers) { + EXPECT_TRUE(sta_network_->enableSuiteBEapOpenSslCiphers().isOk()); +} + +/* + * EnableTlsSuiteBEapPhase1Param + */ +TEST_P(SupplicantStaNetworkAidlTest, EnableTlsSuiteBEapPhase1Param) { + EXPECT_TRUE(sta_network_->enableTlsSuiteBEapPhase1Param(true).isOk()); + EXPECT_TRUE(sta_network_->enableTlsSuiteBEapPhase1Param(false).isOk()); +} + +/* + * SetEapEncryptedImsiIdentity + */ +TEST_P(SupplicantStaNetworkAidlTest, SetEapEncryptedImsiIdentity) { + EXPECT_TRUE( + sta_network_->setEapEncryptedImsiIdentity(kTestEncryptedIdentity) + .isOk()); +} + +/* + * SendNetworkEapIdentityResponse + */ +TEST_P(SupplicantStaNetworkAidlTest, SendNetworkEapIdentityResponse) { + EXPECT_TRUE(sta_network_ + ->sendNetworkEapIdentityResponse(kTestIdentity, + kTestEncryptedIdentity) + .isOk()); +} + +/* + * Enable SAE PK only mode + */ +TEST_P(SupplicantStaNetworkAidlTest, EnableSaePkOnlyMode) { + // Check for SAE PK support + WpaDriverCapabilitiesMask caps; + EXPECT_TRUE(sta_iface_->getWpaDriverCapabilities(&caps).isOk()); + const bool saePkSupported = + !!(static_cast(caps) & + static_cast(WpaDriverCapabilitiesMask::SAE_PK)); + LOG(INFO) << "SAE-PK Supported: " << saePkSupported; + + // Operation will succeed if SAE PK is supported, or fail otherwise. + EXPECT_EQ(sta_network_->enableSaePkOnlyMode(true).isOk(), saePkSupported); + EXPECT_EQ(sta_network_->enableSaePkOnlyMode(false).isOk(), saePkSupported); +} + +/* + * Enable + */ +TEST_P(SupplicantStaNetworkAidlTest, Enable) { + // wpa_supplicant won't perform any connection initiation + // unless at least the SSID and key mgmt params are set. + EXPECT_TRUE(sta_network_->setSsid(kTestSsid).isOk()); + EXPECT_TRUE(sta_network_->setKeyMgmt(kTestKeyMgmt).isOk()); + + EXPECT_TRUE(sta_network_->enable(false).isOk()); + EXPECT_TRUE(sta_network_->enable(true).isOk()); + + // Now remove the network and ensure that the call fails. + removeNetwork(); + ASSERT_FALSE(sta_network_->enable(true).isOk()); +} + +/* + * Disable + */ +TEST_P(SupplicantStaNetworkAidlTest, Disable) { + // wpa_supplicant won't perform any connection initiation + // unless at least the SSID and key mgmt params are set. + EXPECT_TRUE(sta_network_->setSsid(kTestSsid).isOk()); + EXPECT_TRUE(sta_network_->setKeyMgmt(kTestKeyMgmt).isOk()); + + EXPECT_TRUE(sta_network_->disable().isOk()); + + // Now remove the network and ensure that the call fails. + removeNetwork(); + EXPECT_FALSE(sta_network_->disable().isOk()); +} + +/* + * Select + */ +TEST_P(SupplicantStaNetworkAidlTest, Select) { + // wpa_supplicant won't perform any connection initiation + // unless at least the SSID and key mgmt params are set. + EXPECT_TRUE(sta_network_->setSsid(kTestSsid).isOk()); + EXPECT_TRUE(sta_network_->setKeyMgmt(kTestKeyMgmt).isOk()); + + EXPECT_TRUE(sta_network_->select().isOk()); + + // Now remove the network and ensure that the call fails. + removeNetwork(); + EXPECT_FALSE(sta_network_->select().isOk()); +} + +/* + * SendNetworkEapSimGsmAuthResponse + */ +TEST_P(SupplicantStaNetworkAidlTest, SendNetworkEapSimGsmAuthResponse) { + NetworkResponseEapSimGsmAuthParams param; + param.kc = + std::vector({0x56, 0x67, 0x67, 0xf4, 0x76, 0x87, 0x98, 0x12}); + param.sres = std::vector({0x56, 0x67, 0x67, 0xf4}); + const std::vector params = {param}; + EXPECT_TRUE(sta_network_->sendNetworkEapSimGsmAuthResponse(params).isOk()); +} + +/* + * SendNetworkEapSimGsmAuthFailure + */ +TEST_P(SupplicantStaNetworkAidlTest, SendNetworkEapSimGsmAuthFailure) { + EXPECT_TRUE(sta_network_->sendNetworkEapSimGsmAuthFailure().isOk()); +} + +/* + * SendNetworkEapSimUmtsAuthResponse + */ +TEST_P(SupplicantStaNetworkAidlTest, SendNetworkEapSimUmtsAuthResponse) { + NetworkResponseEapSimUmtsAuthParams params; + params.res = std::vector({0x56, 0x67, 0x67, 0xf4, 0x67}); + params.ik = std::vector(16, 0x65); + params.ck = std::vector(16, 0x45); + EXPECT_TRUE(sta_network_->sendNetworkEapSimUmtsAuthResponse(params).isOk()); +} + +/* + * SendNetworkEapSimUmtsAuthFailure + */ +TEST_P(SupplicantStaNetworkAidlTest, SendNetworkEapSimUmtsAuthFailure) { + EXPECT_TRUE(sta_network_->sendNetworkEapSimUmtsAuthFailure().isOk()); +} + +/* + * SendNetworkEapSimUmtsAutsResponse + */ +TEST_P(SupplicantStaNetworkAidlTest, SendNetworkEapSimUmtsAutsResponse) { + const std::vector testAutParam = std::vector(14, 0xe1); + EXPECT_TRUE( + sta_network_->sendNetworkEapSimUmtsAutsResponse(testAutParam).isOk()); +} + +/* + * GetWpsNfcConfigurationToken + */ +TEST_P(SupplicantStaNetworkAidlTest, GetWpsNfcConfigurationToken) { + EXPECT_TRUE(sta_network_->setSsid(kTestSsid).isOk()); + EXPECT_TRUE(sta_network_->setKeyMgmt(kTestKeyMgmt).isOk()); + EXPECT_TRUE(sta_network_->setPskPassphrase(kTestPskPassphrase).isOk()); + + std::vector retrievedToken; + EXPECT_TRUE( + sta_network_->getWpsNfcConfigurationToken(&retrievedToken).isOk()); + EXPECT_NE(retrievedToken.size(), 0); +} + +INSTANTIATE_TEST_SUITE_P(Supplicant, SupplicantStaNetworkAidlTest, + testing::ValuesIn(android::getAidlHalInstanceNames( + ISupplicant::descriptor)), + android::PrintInstanceNameToString); + +int main(int argc, char** argv) { + ::testing::InitGoogleTest(&argc, argv); + ProcessState::self()->setThreadPoolMaxThreadCount(1); + ProcessState::self()->startThreadPool(); + return RUN_ALL_TESTS(); +} diff --git a/wifi/supplicant/aidl/vts/functional/supplicant_test_utils.h b/wifi/supplicant/aidl/vts/functional/supplicant_test_utils.h new file mode 100644 index 0000000000..b7e1a800b7 --- /dev/null +++ b/wifi/supplicant/aidl/vts/functional/supplicant_test_utils.h @@ -0,0 +1,112 @@ +/* + * 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. + */ + +#ifndef SUPPLICANT_TEST_UTILS_H +#define SUPPLICANT_TEST_UTILS_H + +#include +#include +#include + +using aidl::android::hardware::wifi::supplicant::ISupplicantStaIface; +using aidl::android::hardware::wifi::supplicant::KeyMgmtMask; +using android::wifi_system::SupplicantManager; + +std::string getStaIfaceName() { + std::array buffer; + property_get("wifi.interface", buffer.data(), "wlan0"); + return std::string(buffer.data()); +} + +std::string getP2pIfaceName() { + std::array buffer; + property_get("wifi.direct.interface", buffer.data(), "p2p0"); + return std::string(buffer.data()); +} + +bool keyMgmtSupported(std::shared_ptr iface, + KeyMgmtMask expected) { + KeyMgmtMask caps; + if (!iface->getKeyMgmtCapabilities(&caps).isOk()) { + return false; + } + return !!(static_cast(caps) & static_cast(expected)); +} + +bool isFilsSupported(std::shared_ptr iface) { + KeyMgmtMask filsMask = static_cast( + static_cast(KeyMgmtMask::FILS_SHA256) | + static_cast(KeyMgmtMask::FILS_SHA384)); + return keyMgmtSupported(iface, filsMask); +} + +bool waitForSupplicantState(bool is_running) { + SupplicantManager supplicant_manager; + int count = 50; /* wait at most 5 seconds for completion */ + while (count-- > 0) { + if (supplicant_manager.IsSupplicantRunning() == is_running) { + return true; + } + usleep(100000); + } + LOG(ERROR) << "Supplicant not " << (is_running ? "running" : "stopped"); + return false; +} + +bool waitForFrameworkReady() { + int waitCount = 15; + do { + // Check whether package service is ready or not. + if (!testing::checkSubstringInCommandOutput( + "/system/bin/service check package", ": not found")) { + return true; + } + LOG(INFO) << "Framework is not ready"; + sleep(1); + } while (waitCount-- > 0); + return false; +} + +bool waitForSupplicantStart() { return waitForSupplicantState(true); } + +bool waitForSupplicantStop() { return waitForSupplicantState(false); } + +void stopSupplicant() { + SupplicantManager supplicant_manager; + ASSERT_TRUE(supplicant_manager.StopSupplicant()); + ASSERT_FALSE(supplicant_manager.IsSupplicantRunning()); +} + +bool startWifiFramework() { + std::system("svc wifi enable"); + std::system("cmd wifi set-scan-always-available enabled"); + return waitForSupplicantStart(); +} + +bool stopWifiFramework() { + std::system("svc wifi disable"); + std::system("cmd wifi set-scan-always-available disabled"); + return waitForSupplicantStop(); +} + +void initializeService() { + ASSERT_TRUE(stopWifiFramework()); + std::system("/system/bin/start"); + ASSERT_TRUE(waitForFrameworkReady()); + stopSupplicant(); +} + +#endif // SUPPLICANT_TEST_UTILS_H \ No newline at end of file