| #!/usr/bin/env fuchsia-vendored-python |
| # Copyright 2023 The Fuchsia Authors. All rights reserved. |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| """Data types used by wlan affordance.""" |
| |
| from __future__ import annotations |
| |
| import enum |
| from dataclasses import dataclass |
| from typing import Protocol |
| |
| |
| # pylint: disable=line-too-long |
| # TODO(b/299995309): Add lint if change presubmit checks to keep enums and fidl |
| # definitions consistent. |
| class SecurityType(enum.StrEnum): |
| """Fuchsia supported security types. |
| |
| Defined by https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.wlan.policy/types.fidl |
| """ |
| |
| NONE = "none" |
| WEP = "wep" |
| WPA = "wpa" |
| WPA2 = "wpa2" |
| WPA3 = "wpa3" |
| |
| |
| class WlanClientState(enum.StrEnum): |
| """Wlan operating state for client connections. |
| |
| Defined by https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.wlan.policy/client_provider.fidl |
| """ |
| |
| CONNECTIONS_DISABLED = "ConnectionsDisabled" |
| CONNECTIONS_ENABLED = "ConnectionsEnabled" |
| |
| |
| class ConnectionState(enum.StrEnum): |
| """Connection states used to update registered wlan observers. |
| |
| Defined by https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.wlan.policy/client_provider.fidl |
| """ |
| |
| FAILED = "Failed" |
| DISCONNECTED = "Disconnected" |
| CONNECTING = "Connecting" |
| CONNECTED = "Connected" |
| |
| |
| class DisconnectStatus(enum.StrEnum): |
| """Disconnect and connection attempt failure status codes. |
| |
| Defined by https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.wlan.policy/client_provider.fidl |
| """ |
| |
| TIMED_OUT = "TimedOut" |
| CREDENTIALS_FAILED = "CredentialsFailed" |
| CONNECTION_STOPPED = "ConnectionStopped" |
| CONNECTION_FAILED = "ConnectionFailed" |
| |
| |
| class RequestStatus(enum.StrEnum): |
| """Connect request response. |
| |
| Defined by https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.wlan.common/wlan_common.fidl |
| """ |
| |
| ACKNOWLEDGED = "Acknowledged" |
| REJECTED_NOT_SUPPORTED = "RejectedNotSupported" |
| REJECTED_INCOMPATIBLE_MODE = "RejectedIncompatibleMode" |
| REJECTED_ALREADY_IN_USE = "RejectedAlreadyInUse" |
| REJECTED_DUPLICATE_REQUEST = "RejectedDuplicateRequest" |
| |
| |
| class WlanMacRole(enum.StrEnum): |
| """Role of the WLAN MAC interface. |
| |
| Loosely matches the fuchsia.wlan.common.WlanMacRole FIDL enum. |
| See https://cs.opensource.google/fuchsia/fuchsia/+/main:src/testing/sl4f/src/wlan/types.rs |
| """ |
| |
| CLIENT = "Client" |
| AP = "Ap" |
| MESH = "Mesh" |
| UNKNOWN = "Unknown" |
| |
| |
| class BssType(enum.IntEnum): |
| """BssType |
| |
| Defined by https://cs.opensource.google/fuchsia/fuchsia/+/main:src/testing/sl4f/src/wlan/types.rs |
| """ |
| |
| INFRASTRUCTURE = 1 |
| PERSONAL = 2 |
| INDEPENDENT = 3 |
| MESH = 4 |
| |
| |
| class ChannelBandwidth(enum.StrEnum): |
| """Channel Bandwidth |
| |
| Defined by https://cs.opensource.google/fuchsia/fuchsia/+/main:src/testing/sl4f/src/wlan/types.rs |
| """ |
| |
| CBW20 = "Cbw20" |
| CBW40 = "Cbw40" |
| CBW40BELOW = "Cbw40Below" |
| CBW80 = "Cbw80" |
| CBW160 = "Cbw160" |
| CBW80P80 = "Cbw80P80" |
| UNKNOWN = "Unknown" |
| |
| |
| class Protection(enum.IntEnum): |
| """Protection |
| |
| Defined by https://cs.opensource.google/fuchsia/fuchsia/+/main:src/testing/sl4f/src/wlan/types.rs |
| """ |
| |
| UNKNOWN = 0 |
| OPEN = 1 |
| WEP = 2 |
| WPA1 = 3 |
| WPA1_WPA2_PERSONAL_TKIP_ONLY = 4 |
| WPA2_PERSONAL_TKIP_ONLY = 5 |
| WPA1_WPA2_PERSONAL = 6 |
| WPA2_PERSONAL = 7 |
| WPA2_WPA3_PERSONAL = 8 |
| WPA3_PERSONAL = 9 |
| WPA2_ENTERPRISE = 10 |
| WPA3_ENTERPRISE = 11 |
| |
| |
| @dataclass(frozen=True) |
| class NetworkConfig: |
| """Network information used to establish a connection. |
| |
| Defined by https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.wlan.policy/types.fidl |
| """ |
| |
| ssid: str |
| security_type: SecurityType |
| credential_type: str |
| credential_value: str |
| |
| def __lt__(self, other: NetworkConfig) -> bool: |
| return self.ssid < other.ssid |
| |
| |
| @dataclass(frozen=True) |
| class NetworkIdentifier: |
| """Combination of ssid and the security type. |
| |
| Primary means of distinguishing between available networks. |
| Defined by https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.wlan.policy/types.fidl |
| """ |
| |
| ssid: str |
| security_type: SecurityType |
| |
| def __lt__(self, other: NetworkIdentifier) -> bool: |
| return self.ssid < other.ssid |
| |
| |
| @dataclass(frozen=True) |
| class NetworkState: |
| """Information about a network's current connections and attempts. |
| |
| Defined by https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.wlan.policy/client_provider.fidl |
| """ |
| |
| network_identifier: NetworkIdentifier |
| connection_state: ConnectionState |
| disconnect_status: DisconnectStatus |
| |
| def __lt__(self, other: NetworkState) -> bool: |
| return self.network_identifier < other.network_identifier |
| |
| |
| @dataclass(frozen=True) |
| class ClientStateSummary: |
| """Information about the current client state for the device. |
| |
| This includes if the device will attempt to connect to access points |
| (when applicable), any existing connections and active connection attempts |
| and their outcomes. |
| Defined by https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.wlan.policy/client_provider.fidl |
| """ |
| |
| state: WlanClientState |
| networks: list[NetworkState] |
| |
| def __eq__(self, other: object) -> bool: |
| if not isinstance(other, ClientStateSummary): |
| return NotImplemented |
| return self.state == other.state and sorted(self.networks) == sorted( |
| other.networks |
| ) |
| |
| |
| @dataclass(frozen=True) |
| class WlanChannel: |
| """Wlan channel information. |
| |
| Defined by https://cs.opensource.google/fuchsia/fuchsia/+/main:src/testing/sl4f/src/wlan/types.rs |
| """ |
| |
| primary: int |
| cbw: ChannelBandwidth |
| secondary80: int |
| |
| |
| @dataclass(frozen=True) |
| class QueryIfaceResponse: |
| """Queryiface response |
| |
| Defined by https://cs.opensource.google/fuchsia/fuchsia/+/main:src/testing/sl4f/src/wlan/types.rs |
| """ |
| |
| role: WlanMacRole |
| id: int |
| phy_id: int |
| phy_assigned_id: int |
| sta_addr: list[int] |
| |
| |
| @dataclass(frozen=True) |
| class BssDescription: |
| """BssDescription |
| |
| Defined by https://cs.opensource.google/fuchsia/fuchsia/+/main:src/testing/sl4f/src/wlan/types.rs |
| """ |
| |
| bssid: list[int] |
| bss_type: BssType |
| beacon_period: int |
| capability_info: int |
| ies: list[int] |
| channel: WlanChannel |
| rssi_dbm: int |
| snr_db: int |
| |
| |
| @dataclass(frozen=True) |
| class ClientStatusResponse(Protocol): |
| def status(self) -> str: |
| ... |
| |
| |
| @dataclass(frozen=True) |
| class ClientStatusConnected(ClientStatusResponse): |
| """ServingApInfo, returned as a part of ClientStatusResponse. |
| |
| Defined by https://cs.opensource.google/fuchsia/fuchsia/+/main:src/testing/sl4f/src/wlan/types.rs |
| """ |
| |
| bssid: list[int] |
| ssid: list[int] |
| rssi_dbm: int |
| snr_db: int |
| channel: WlanChannel |
| protection: Protection |
| |
| def status(self) -> str: |
| return "Connected" |
| |
| |
| @dataclass(frozen=True) |
| class ClientStatusConnecting(ClientStatusResponse): |
| ssid: list[int] |
| |
| def status(self) -> str: |
| return "Connecting" |
| |
| |
| @dataclass(frozen=True) |
| class ClientStatusIdle(ClientStatusResponse): |
| def status(self) -> str: |
| return "Idle" |
| |
| |
| class CountryCodeList(enum.StrEnum): |
| """Country codes used for configuring WLAN. |
| |
| This includes a list of countries and their respective Alpha-2 codes. |
| |
| Defined by https://en.wikipedia.org/wiki/ISO_3166-1 |
| """ |
| |
| AFGHANISTAN = "AF" |
| ALAND_ISLANDS = "AX" |
| ALBANIA = "AL" |
| ALGERIA = "DZ" |
| AMERICAN_SAMOA = "AS" |
| ANDORRA = "AD" |
| ANGOLA = "AO" |
| ANGUILLA = "AI" |
| ANTARCTICA = "AQ" |
| ANTIGUA_AND_BARBUDA = "AG" |
| ARGENTINA = "AR" |
| ARMENIA = "AM" |
| ARUBA = "AW" |
| AUSTRALIA = "AU" |
| AUSTRIA = "AT" |
| AZERBAIJAN = "AZ" |
| BAHAMAS = "BS" |
| BAHRAIN = "BH" |
| BANGLADESH = "BD" |
| BARBADOS = "BB" |
| BELARUS = "BY" |
| BELGIUM = "BE" |
| BELIZE = "BZ" |
| BENIN = "BJ" |
| BERMUDA = "BM" |
| BHUTAN = "BT" |
| BOLIVIA = "BO" |
| BONAIRE = "BQ" |
| BOSNIA_AND_HERZEGOVINA = "BA" |
| BOTSWANA = "BW" |
| BOUVET_ISLAND = "BV" |
| BRAZIL = "BR" |
| BRITISH_INDIAN_OCEAN_TERRITORY = "IO" |
| BRUNEI_DARUSSALAM = "BN" |
| BULGARIA = "BG" |
| BURKINA_FASO = "BF" |
| BURUNDI = "BI" |
| CAMBODIA = "KH" |
| CAMEROON = "CM" |
| CANADA = "CA" |
| CAPE_VERDE = "CV" |
| CAYMAN_ISLANDS = "KY" |
| CENTRAL_AFRICAN_REPUBLIC = "CF" |
| CHAD = "TD" |
| CHILE = "CL" |
| CHINA = "CN" |
| CHRISTMAS_ISLAND = "CX" |
| COCOS_ISLANDS = "CC" |
| COLOMBIA = "CO" |
| COMOROS = "KM" |
| CONGO = "CG" |
| DEMOCRATIC_REPUBLIC_CONGO = "CD" |
| COOK_ISLANDS = "CK" |
| COSTA_RICA = "CR" |
| COTE_D_IVOIRE = "CI" |
| CROATIA = "HR" |
| CUBA = "CU" |
| CURACAO = "CW" |
| CYPRUS = "CY" |
| CZECH_REPUBLIC = "CZ" |
| DENMARK = "DK" |
| DJIBOUTI = "DJ" |
| DOMINICA = "DM" |
| DOMINICAN_REPUBLIC = "DO" |
| ECUADOR = "EC" |
| EGYPT = "EG" |
| EL_SALVADOR = "SV" |
| EQUATORIAL_GUINEA = "GQ" |
| ERITREA = "ER" |
| ESTONIA = "EE" |
| ETHIOPIA = "ET" |
| FALKLAND_ISLANDS_MALVINAS = "FK" |
| FAROE_ISLANDS = "FO" |
| FIJI = "FJ" |
| FINLAND = "FI" |
| FRANCE = "FR" |
| FRENCH_GUIANA = "GF" |
| FRENCH_POLYNESIA = "PF" |
| FRENCH_SOUTHERN_TERRITORIES = "TF" |
| GABON = "GA" |
| GAMBIA = "GM" |
| GEORGIA = "GE" |
| GERMANY = "DE" |
| GHANA = "GH" |
| GIBRALTAR = "GI" |
| GREECE = "GR" |
| GREENLAND = "GL" |
| GRENADA = "GD" |
| GUADELOUPE = "GP" |
| GUAM = "GU" |
| GUATEMALA = "GT" |
| GUERNSEY = "GG" |
| GUINEA = "GN" |
| GUINEA_BISSAU = "GW" |
| GUYANA = "GY" |
| HAITI = "HT" |
| HEARD_ISLAND_AND_MCDONALD_ISLANDS = "HM" |
| VATICAN_CITY_STATE = "VA" |
| HONDURAS = "HN" |
| HONG_KONG = "HK" |
| HUNGARY = "HU" |
| ICELAND = "IS" |
| INDIA = "IN" |
| INDONESIA = "ID" |
| IRAN = "IR" |
| IRAQ = "IQ" |
| IRELAND = "IE" |
| ISLE_OF_MAN = "IM" |
| ISRAEL = "IL" |
| ITALY = "IT" |
| JAMAICA = "JM" |
| JAPAN = "JP" |
| JERSEY = "JE" |
| JORDAN = "JO" |
| KAZAKHSTAN = "KZ" |
| KENYA = "KE" |
| KIRIBATI = "KI" |
| DEMOCRATIC_PEOPLE_S_REPUBLIC_OF_KOREA = "KP" |
| REPUBLIC_OF_KOREA = "KR" |
| KUWAIT = "KW" |
| KYRGYZSTAN = "KG" |
| LAO = "LA" |
| LATVIA = "LV" |
| LEBANON = "LB" |
| LESOTHO = "LS" |
| LIBERIA = "LR" |
| LIBYA = "LY" |
| LIECHTENSTEIN = "LI" |
| LITHUANIA = "LT" |
| LUXEMBOURG = "LU" |
| MACAO = "MO" |
| MACEDONIA = "MK" |
| MADAGASCAR = "MG" |
| MALAWI = "MW" |
| MALAYSIA = "MY" |
| MALDIVES = "MV" |
| MALI = "ML" |
| MALTA = "MT" |
| MARSHALL_ISLANDS = "MH" |
| MARTINIQUE = "MQ" |
| MAURITANIA = "MR" |
| MAURITIUS = "MU" |
| MAYOTTE = "YT" |
| MEXICO = "MX" |
| MICRONESIA = "FM" |
| MOLDOVA = "MD" |
| MONACO = "MC" |
| MONGOLIA = "MN" |
| MONTENEGRO = "ME" |
| MONTSERRAT = "MS" |
| MOROCCO = "MA" |
| MOZAMBIQUE = "MZ" |
| MYANMAR = "MM" |
| NAMIBIA = "NA" |
| NAURU = "NR" |
| NEPAL = "NP" |
| NETHERLANDS = "NL" |
| NEW_CALEDONIA = "NC" |
| NEW_ZEALAND = "NZ" |
| NICARAGUA = "NI" |
| NIGER = "NE" |
| NIGERIA = "NG" |
| NIUE = "NU" |
| NORFOLK_ISLAND = "NF" |
| NORTHERN_MARIANA_ISLANDS = "MP" |
| NORWAY = "NO" |
| OMAN = "OM" |
| PAKISTAN = "PK" |
| PALAU = "PW" |
| PALESTINE = "PS" |
| PANAMA = "PA" |
| PAPUA_NEW_GUINEA = "PG" |
| PARAGUAY = "PY" |
| PERU = "PE" |
| PHILIPPINES = "PH" |
| PITCAIRN = "PN" |
| POLAND = "PL" |
| PORTUGAL = "PT" |
| PUERTO_RICO = "PR" |
| QATAR = "QA" |
| REUNION = "RE" |
| ROMANIA = "RO" |
| RUSSIAN_FEDERATION = "RU" |
| RWANDA = "RW" |
| SAINT_BARTHELEMY = "BL" |
| SAINT_KITTS_AND_NEVIS = "KN" |
| SAINT_LUCIA = "LC" |
| SAINT_MARTIN = "MF" |
| SAINT_PIERRE_AND_MIQUELON = "PM" |
| SAINT_VINCENT_AND_THE_GRENADINES = "VC" |
| SAMOA = "WS" |
| SAN_MARINO = "SM" |
| SAO_TOME_AND_PRINCIPE = "ST" |
| SAUDI_ARABIA = "SA" |
| SENEGAL = "SN" |
| SERBIA = "RS" |
| SEYCHELLES = "SC" |
| SIERRA_LEONE = "SL" |
| SINGAPORE = "SG" |
| SINT_MAARTEN = "SX" |
| SLOVAKIA = "SK" |
| SLOVENIA = "SI" |
| SOLOMON_ISLANDS = "SB" |
| SOMALIA = "SO" |
| SOUTH_AFRICA = "ZA" |
| SOUTH_GEORGIA = "GS" |
| SOUTH_SUDAN = "SS" |
| SPAIN = "ES" |
| SRI_LANKA = "LK" |
| SUDAN = "SD" |
| SURINAME = "SR" |
| SVALBARD_AND_JAN_MAYEN = "SJ" |
| SWAZILAND = "SZ" |
| SWEDEN = "SE" |
| SWITZERLAND = "CH" |
| SYRIAN_ARAB_REPUBLIC = "SY" |
| TAIWAN = "TW" |
| TAJIKISTAN = "TJ" |
| TANZANIA = "TZ" |
| THAILAND = "TH" |
| TIMOR_LESTE = "TL" |
| TOGO = "TG" |
| TOKELAU = "TK" |
| TONGA = "TO" |
| TRINIDAD_AND_TOBAGO = "TT" |
| TUNISIA = "TN" |
| TURKEY = "TR" |
| TURKMENISTAN = "TM" |
| TURKS_AND_CAICOS_ISLANDS = "TC" |
| TUVALU = "TV" |
| UGANDA = "UG" |
| UKRAINE = "UA" |
| UNITED_ARAB_EMIRATES = "AE" |
| UNITED_KINGDOM = "GB" |
| UNITED_STATES = "US" |
| UNITED_STATES_MINOR_OUTLYING_ISLANDS = "UM" |
| URUGUAY = "UY" |
| UZBEKISTAN = "UZ" |
| VANUATU = "VU" |
| VENEZUELA = "VE" |
| VIETNAM = "VN" |
| VIRGIN_ISLANDS_BRITISH = "VG" |
| VIRGIN_ISLANDS_US = "VI" |
| WALLIS_AND_FUTUNA = "WF" |
| WESTERN_SAHARA = "EH" |
| YEMEN = "YE" |
| ZAMBIA = "ZM" |
| ZIMBABWE = "ZW" |
| NON_COUNTRY = "XX" |