1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78
|
"""Connection module."""
from enum import Enum, IntEnum
from asusrouter.modules.wlan import Wlan
from asusrouter.tools.converters import get_enum_key_by_value, safe_int
class ConnectionState(IntEnum):
"""Connection state enum."""
UNKNOWN = -999
DISCONNECTED = 0
CONNECTED = 1
class ConnectionStatus(IntEnum):
"""Connection status enum."""
UNKNOWN = -999
ERROR = -1
DISCONNECTED = 0
CONNECTING = 1
CONNECTED = 2
class ConnectionType(str, Enum):
"""Connection type class."""
WIRED = "wired"
WLAN_2G = Wlan.FREQ_2G.value
WLAN_5G = Wlan.FREQ_5G.value
WLAN_5G2 = Wlan.FREQ_5G2.value
WLAN_6G = Wlan.FREQ_6G.value
DISCONNECTED = "disconnected"
CONNECTION_TYPE = {
0: ConnectionType.WIRED,
1: ConnectionType.WLAN_2G,
2: ConnectionType.WLAN_5G,
3: ConnectionType.WLAN_5G2,
4: ConnectionType.WLAN_6G,
}
class InternetMode(str, Enum):
"""Internet mode class."""
ALLOW = "allow"
BLOCK = "block"
TIME = "time"
UNKNOWN = "unknown"
def get_internet_mode(value: str) -> InternetMode:
"""Get internet mode."""
return get_enum_key_by_value(InternetMode, value, InternetMode.UNKNOWN)
def get_connection_type(value: int | None) -> ConnectionType:
"""Get connection type."""
# Check that it's actually an int
# This would actually work with float as well doing direct conversion
value = safe_int(value)
# ------------------------------------------------------ #
# I am officially considering this a feature, not a bug. #
# ------------------------------------------------------ #
if value is None:
value = 0
return CONNECTION_TYPE.get(value, ConnectionType.WIRED)
|