quilt-hp-python 0.1.1__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- quilt_hp/__init__.py +22 -0
- quilt_hp/_paths.py +26 -0
- quilt_hp/_proto/__init__.py +0 -0
- quilt_hp/_proto/quilt_device_pairing_pb2.py +56 -0
- quilt_hp/_proto/quilt_device_pairing_pb2.pyi +317 -0
- quilt_hp/_proto/quilt_device_pairing_pb2_grpc.py +24 -0
- quilt_hp/_proto/quilt_hds_pb2.py +292 -0
- quilt_hp/_proto/quilt_hds_pb2.pyi +3947 -0
- quilt_hp/_proto/quilt_hds_pb2_grpc.py +1732 -0
- quilt_hp/_proto/quilt_notifier_pb2.py +55 -0
- quilt_hp/_proto/quilt_notifier_pb2.pyi +258 -0
- quilt_hp/_proto/quilt_notifier_pb2_grpc.py +97 -0
- quilt_hp/_proto/quilt_services_pb2.py +171 -0
- quilt_hp/_proto/quilt_services_pb2.pyi +1320 -0
- quilt_hp/_proto/quilt_services_pb2_grpc.py +1188 -0
- quilt_hp/_proto/quilt_system_pb2.py +53 -0
- quilt_hp/_proto/quilt_system_pb2.pyi +164 -0
- quilt_hp/_proto/quilt_system_pb2_grpc.py +270 -0
- quilt_hp/auth.py +244 -0
- quilt_hp/cli/__init__.py +1 -0
- quilt_hp/cli/main.py +770 -0
- quilt_hp/cli/settings.py +123 -0
- quilt_hp/cli/store.py +105 -0
- quilt_hp/cli/tui.py +2677 -0
- quilt_hp/client.py +616 -0
- quilt_hp/const.py +57 -0
- quilt_hp/exceptions.py +23 -0
- quilt_hp/models/__init__.py +85 -0
- quilt_hp/models/comfort.py +47 -0
- quilt_hp/models/controller.py +135 -0
- quilt_hp/models/energy.py +31 -0
- quilt_hp/models/enums.py +298 -0
- quilt_hp/models/indoor_unit.py +412 -0
- quilt_hp/models/outdoor_unit.py +71 -0
- quilt_hp/models/qsm.py +105 -0
- quilt_hp/models/schedule.py +98 -0
- quilt_hp/models/sensor.py +92 -0
- quilt_hp/models/software_update.py +74 -0
- quilt_hp/models/space.py +177 -0
- quilt_hp/models/system.py +451 -0
- quilt_hp/py.typed +1 -0
- quilt_hp/services/__init__.py +1 -0
- quilt_hp/services/hds.py +480 -0
- quilt_hp/services/streaming.py +561 -0
- quilt_hp/services/system.py +95 -0
- quilt_hp/services/user.py +143 -0
- quilt_hp/tokens.py +119 -0
- quilt_hp/transport.py +192 -0
- quilt_hp_python-0.1.1.dist-info/METADATA +172 -0
- quilt_hp_python-0.1.1.dist-info/RECORD +53 -0
- quilt_hp_python-0.1.1.dist-info/WHEEL +4 -0
- quilt_hp_python-0.1.1.dist-info/entry_points.txt +2 -0
- quilt_hp_python-0.1.1.dist-info/licenses/LICENSE +21 -0
quilt_hp/__init__.py
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"""quilt_hp — Async Python client for Quilt mini-split HVAC systems."""
|
|
2
|
+
|
|
3
|
+
from quilt_hp.client import QuiltClient
|
|
4
|
+
from quilt_hp.const import Environment
|
|
5
|
+
from quilt_hp.exceptions import (
|
|
6
|
+
QuiltAuthError,
|
|
7
|
+
QuiltConnectionError,
|
|
8
|
+
QuiltError,
|
|
9
|
+
QuiltNotFoundError,
|
|
10
|
+
)
|
|
11
|
+
|
|
12
|
+
__version__ = "0.1.1"
|
|
13
|
+
|
|
14
|
+
__all__ = [
|
|
15
|
+
"Environment",
|
|
16
|
+
"QuiltAuthError",
|
|
17
|
+
"QuiltClient",
|
|
18
|
+
"QuiltConnectionError",
|
|
19
|
+
"QuiltError",
|
|
20
|
+
"QuiltNotFoundError",
|
|
21
|
+
"__version__",
|
|
22
|
+
]
|
quilt_hp/_paths.py
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"""Platform-appropriate config directory for quilt-hp.
|
|
2
|
+
|
|
3
|
+
macOS → ~/Library/Application Support/quilt-hp/
|
|
4
|
+
Linux → $XDG_CONFIG_HOME/quilt-hp/ (default ~/.config/quilt-hp/)
|
|
5
|
+
Windows → %APPDATA%\\quilt-hp\\
|
|
6
|
+
|
|
7
|
+
Files
|
|
8
|
+
-----
|
|
9
|
+
tokens.json Cached Cognito tokens, keyed by email
|
|
10
|
+
settings.json CLI/TUI user preferences (email, home, use_fahrenheit, dark)
|
|
11
|
+
"""
|
|
12
|
+
|
|
13
|
+
from __future__ import annotations
|
|
14
|
+
|
|
15
|
+
from pathlib import Path
|
|
16
|
+
|
|
17
|
+
from platformdirs import user_config_dir
|
|
18
|
+
|
|
19
|
+
_APP = "quilt-hp"
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
def app_config_dir() -> Path:
|
|
23
|
+
"""Return the platform-appropriate config directory, creating if needed."""
|
|
24
|
+
d = Path(user_config_dir(_APP))
|
|
25
|
+
d.mkdir(parents=True, exist_ok=True)
|
|
26
|
+
return d
|
|
File without changes
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
# Generated by the protocol buffer compiler. DO NOT EDIT!
|
|
3
|
+
# NO CHECKED-IN PROTOBUF GENCODE
|
|
4
|
+
# source: quilt_device_pairing.proto
|
|
5
|
+
# Protobuf Python Version: 6.31.1
|
|
6
|
+
"""Generated protocol buffer code."""
|
|
7
|
+
from google.protobuf import descriptor as _descriptor
|
|
8
|
+
from google.protobuf import descriptor_pool as _descriptor_pool
|
|
9
|
+
from google.protobuf import runtime_version as _runtime_version
|
|
10
|
+
from google.protobuf import symbol_database as _symbol_database
|
|
11
|
+
from google.protobuf.internal import builder as _builder
|
|
12
|
+
_runtime_version.ValidateProtobufRuntimeVersion(
|
|
13
|
+
_runtime_version.Domain.PUBLIC,
|
|
14
|
+
6,
|
|
15
|
+
31,
|
|
16
|
+
1,
|
|
17
|
+
'',
|
|
18
|
+
'quilt_device_pairing.proto'
|
|
19
|
+
)
|
|
20
|
+
# @@protoc_insertion_point(imports)
|
|
21
|
+
|
|
22
|
+
_sym_db = _symbol_database.Default()
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1aquilt_device_pairing.proto\x12\x10quilt.pairing.v1\x1a\x1fgoogle/protobuf/timestamp.proto\"\x89\x01\n\x08WifiScan\x12\x13\n\x0bmac_address\x18\x01 \x01(\t\x12\x0c\n\x04ssid\x18\x02 \x01(\t\x12\x11\n\tfrequency\x18\x03 \x01(\x05\x12\x0c\n\x04rssi\x18\x04 \x01(\x05\x12\x39\n\rsecurity_type\x18\x05 \x01(\x0e\x32\".quilt.pairing.v1.WifiSecurityType\"9\n\x0cWifiScanList\x12)\n\x05scans\x18\x01 \x03(\x0b\x32\x1a.quilt.pairing.v1.WifiScan\"p\n\x11WifiConfiguration\x12\x39\n\rsecurity_type\x18\x01 \x01(\x0e\x32\".quilt.pairing.v1.WifiSecurityType\x12\x0c\n\x04ssid\x18\x02 \x01(\t\x12\x12\n\npassphrase\x18\x03 \x01(\t\"\xb0\x02\n\x13\x44\x65viceConfiguration\x12\x0f\n\x07version\x18\x01 \x01(\x05\x12\x13\n\x0b\x64\x65vice_uuid\x18\x02 \x01(\t\x12\x31\n\x0b\x64\x65vice_type\x18\x03 \x01(\x0e\x32\x1c.quilt.pairing.v1.DeviceType\x12\x16\n\x0e\x63loud_hostname\x18\x04 \x01(\t\x12\x16\n\x0etoken_hostname\x18\x05 \x01(\t\x12\x17\n\x0f\x63loud_host_port\x18\x06 \x01(\x05\x12\x17\n\x0ftoken_host_port\x18\x07 \x01(\x05\x12\x39\n\x0cwifi_configs\x18\x08 \x03(\x0b\x32#.quilt.pairing.v1.WifiConfiguration\x12\x10\n\x08space_id\x18\t \x01(\t\x12\x11\n\tsystem_id\x18\n \x01(\t\"\x98\x01\n\x1a\x44\x65viceConfigurationRequest\x12\x35\n\x11request_timestamp\x18\x01 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x43\n\x14\x64\x65vice_configuration\x18\x02 \x01(\x0b\x32%.quilt.pairing.v1.DeviceConfiguration\"T\n\x1b\x44\x65vicePairingStatusResponse\x12\x35\n\x06status\x18\x01 \x01(\x0e\x32%.quilt.pairing.v1.DevicePairingStatus\"9\n\x19\x44\x65viceConfigurationResult\x12\x1c\n\x14is_device_configured\x18\x01 \x01(\x08*n\n\x10WifiSecurityType\x12\x1e\n\x1aWIFI_SECURITY_TYPE_UNKNOWN\x10\x00\x12\x1b\n\x17WIFI_SECURITY_TYPE_NONE\x10\x01\x12\x1d\n\x19WIFI_SECURITY_TYPE_WPAPSK\x10\x02*\xed\x01\n\nDeviceType\x12\x17\n\x13\x44\x45VICE_TYPE_UNKNOWN\x10\x00\x12\"\n\x1e\x44\x45VICE_TYPE_QUILT_SMART_MODULE\x10\x01\x12\x1b\n\x17\x44\x45VICE_TYPE_INDOOR_UNIT\x10\x02\x12\x1c\n\x18\x44\x45VICE_TYPE_OUTDOOR_UNIT\x10\x03\x12\x1d\n\x19\x44\x45VICE_TYPE_CLOUD_SERVICE\x10\x04\x12\x1a\n\x16\x44\x45VICE_TYPE_CONTROLLER\x10\x05\x12\x13\n\x0f\x44\x45VICE_TYPE_IOS\x10\x06\x12\x17\n\x13\x44\x45VICE_TYPE_ANDROID\x10\x07*\xa9\x03\n\x13\x44\x65vicePairingStatus\x12!\n\x1d\x44\x45VICE_PAIRING_STATUS_UNKNOWN\x10\x00\x12\x1e\n\x1a\x44\x45VICE_PAIRING_STATUS_IDLE\x10\x01\x12,\n(DEVICE_PAIRING_STATUS_CONNECTING_TO_WIFI\x10\x02\x12\x38\n4DEVICE_PAIRING_STATUS_CONNECTED_TO_WIFI_SUCCESSFULLY\x10\x03\x12*\n&DEVICE_PAIRING_STATUS_WRONG_PASSPHRASE\x10\x04\x12$\n DEVICE_PAIRING_STATUS_WRONG_SSID\x10\x05\x12\x39\n5DEVICE_PAIRING_STATUS_CONNECTED_TO_CLOUD_SUCCESSFULLY\x10\x06\x12,\n(DEVICE_PAIRING_STATUS_ERROR_NO_DEVICE_ID\x10\x07\x12,\n(DEVICE_PAIRING_STATUS_ERROR_NO_SYSTEM_ID\x10\x08\x42\x19\n\x17\x63om.quilt.proto.pairingb\x06proto3')
|
|
29
|
+
|
|
30
|
+
_globals = globals()
|
|
31
|
+
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
|
|
32
|
+
_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'quilt_device_pairing_pb2', _globals)
|
|
33
|
+
if not _descriptor._USE_C_DESCRIPTORS:
|
|
34
|
+
_globals['DESCRIPTOR']._loaded_options = None
|
|
35
|
+
_globals['DESCRIPTOR']._serialized_options = b'\n\027com.quilt.proto.pairing'
|
|
36
|
+
_globals['_WIFISECURITYTYPE']._serialized_start=1001
|
|
37
|
+
_globals['_WIFISECURITYTYPE']._serialized_end=1111
|
|
38
|
+
_globals['_DEVICETYPE']._serialized_start=1114
|
|
39
|
+
_globals['_DEVICETYPE']._serialized_end=1351
|
|
40
|
+
_globals['_DEVICEPAIRINGSTATUS']._serialized_start=1354
|
|
41
|
+
_globals['_DEVICEPAIRINGSTATUS']._serialized_end=1779
|
|
42
|
+
_globals['_WIFISCAN']._serialized_start=82
|
|
43
|
+
_globals['_WIFISCAN']._serialized_end=219
|
|
44
|
+
_globals['_WIFISCANLIST']._serialized_start=221
|
|
45
|
+
_globals['_WIFISCANLIST']._serialized_end=278
|
|
46
|
+
_globals['_WIFICONFIGURATION']._serialized_start=280
|
|
47
|
+
_globals['_WIFICONFIGURATION']._serialized_end=392
|
|
48
|
+
_globals['_DEVICECONFIGURATION']._serialized_start=395
|
|
49
|
+
_globals['_DEVICECONFIGURATION']._serialized_end=699
|
|
50
|
+
_globals['_DEVICECONFIGURATIONREQUEST']._serialized_start=702
|
|
51
|
+
_globals['_DEVICECONFIGURATIONREQUEST']._serialized_end=854
|
|
52
|
+
_globals['_DEVICEPAIRINGSTATUSRESPONSE']._serialized_start=856
|
|
53
|
+
_globals['_DEVICEPAIRINGSTATUSRESPONSE']._serialized_end=940
|
|
54
|
+
_globals['_DEVICECONFIGURATIONRESULT']._serialized_start=942
|
|
55
|
+
_globals['_DEVICECONFIGURATIONRESULT']._serialized_end=999
|
|
56
|
+
# @@protoc_insertion_point(module_scope)
|
|
@@ -0,0 +1,317 @@
|
|
|
1
|
+
"""
|
|
2
|
+
@generated by mypy-protobuf. Do not edit manually!
|
|
3
|
+
isort:skip_file
|
|
4
|
+
quilt_device_pairing.proto
|
|
5
|
+
BLE/WiFi device pairing protocol — serialized over Bluetooth (not gRPC).
|
|
6
|
+
Used during initial setup of Quilt Smart Module (QSM) and Controller devices.
|
|
7
|
+
Reconstructed from Quilt app v1.0.25 KMP source (ProtoSerializationClientService).
|
|
8
|
+
"""
|
|
9
|
+
|
|
10
|
+
from collections import abc as _abc
|
|
11
|
+
from google.protobuf import descriptor as _descriptor
|
|
12
|
+
from google.protobuf import message as _message
|
|
13
|
+
from google.protobuf import timestamp_pb2 as _timestamp_pb2
|
|
14
|
+
from google.protobuf.internal import containers as _containers
|
|
15
|
+
from google.protobuf.internal import enum_type_wrapper as _enum_type_wrapper
|
|
16
|
+
import builtins as _builtins
|
|
17
|
+
import sys
|
|
18
|
+
import typing as _typing
|
|
19
|
+
|
|
20
|
+
if sys.version_info >= (3, 11):
|
|
21
|
+
from typing import TypeAlias as _TypeAlias, Never as _Never
|
|
22
|
+
else:
|
|
23
|
+
from typing_extensions import TypeAlias as _TypeAlias, Never as _Never
|
|
24
|
+
|
|
25
|
+
DESCRIPTOR: _descriptor.FileDescriptor
|
|
26
|
+
|
|
27
|
+
class _WifiSecurityType:
|
|
28
|
+
ValueType = _typing.NewType("ValueType", _builtins.int)
|
|
29
|
+
V: _TypeAlias = ValueType # noqa: Y015
|
|
30
|
+
|
|
31
|
+
class _WifiSecurityTypeEnumTypeWrapper(_enum_type_wrapper._EnumTypeWrapper[_WifiSecurityType.ValueType], _builtins.type):
|
|
32
|
+
DESCRIPTOR: _descriptor.EnumDescriptor
|
|
33
|
+
WIFI_SECURITY_TYPE_UNKNOWN: _WifiSecurityType.ValueType # 0
|
|
34
|
+
WIFI_SECURITY_TYPE_NONE: _WifiSecurityType.ValueType # 1
|
|
35
|
+
WIFI_SECURITY_TYPE_WPAPSK: _WifiSecurityType.ValueType # 2
|
|
36
|
+
|
|
37
|
+
class WifiSecurityType(_WifiSecurityType, metaclass=_WifiSecurityTypeEnumTypeWrapper):
|
|
38
|
+
"""---------------------------------------------------------------------------
|
|
39
|
+
Enums
|
|
40
|
+
---------------------------------------------------------------------------
|
|
41
|
+
"""
|
|
42
|
+
|
|
43
|
+
WIFI_SECURITY_TYPE_UNKNOWN: WifiSecurityType.ValueType # 0
|
|
44
|
+
WIFI_SECURITY_TYPE_NONE: WifiSecurityType.ValueType # 1
|
|
45
|
+
WIFI_SECURITY_TYPE_WPAPSK: WifiSecurityType.ValueType # 2
|
|
46
|
+
Global___WifiSecurityType: _TypeAlias = WifiSecurityType # noqa: Y015
|
|
47
|
+
|
|
48
|
+
class _DeviceType:
|
|
49
|
+
ValueType = _typing.NewType("ValueType", _builtins.int)
|
|
50
|
+
V: _TypeAlias = ValueType # noqa: Y015
|
|
51
|
+
|
|
52
|
+
class _DeviceTypeEnumTypeWrapper(_enum_type_wrapper._EnumTypeWrapper[_DeviceType.ValueType], _builtins.type):
|
|
53
|
+
DESCRIPTOR: _descriptor.EnumDescriptor
|
|
54
|
+
DEVICE_TYPE_UNKNOWN: _DeviceType.ValueType # 0
|
|
55
|
+
DEVICE_TYPE_QUILT_SMART_MODULE: _DeviceType.ValueType # 1
|
|
56
|
+
DEVICE_TYPE_INDOOR_UNIT: _DeviceType.ValueType # 2
|
|
57
|
+
DEVICE_TYPE_OUTDOOR_UNIT: _DeviceType.ValueType # 3
|
|
58
|
+
DEVICE_TYPE_CLOUD_SERVICE: _DeviceType.ValueType # 4
|
|
59
|
+
DEVICE_TYPE_CONTROLLER: _DeviceType.ValueType # 5
|
|
60
|
+
DEVICE_TYPE_IOS: _DeviceType.ValueType # 6
|
|
61
|
+
DEVICE_TYPE_ANDROID: _DeviceType.ValueType # 7
|
|
62
|
+
|
|
63
|
+
class DeviceType(_DeviceType, metaclass=_DeviceTypeEnumTypeWrapper): ...
|
|
64
|
+
|
|
65
|
+
DEVICE_TYPE_UNKNOWN: DeviceType.ValueType # 0
|
|
66
|
+
DEVICE_TYPE_QUILT_SMART_MODULE: DeviceType.ValueType # 1
|
|
67
|
+
DEVICE_TYPE_INDOOR_UNIT: DeviceType.ValueType # 2
|
|
68
|
+
DEVICE_TYPE_OUTDOOR_UNIT: DeviceType.ValueType # 3
|
|
69
|
+
DEVICE_TYPE_CLOUD_SERVICE: DeviceType.ValueType # 4
|
|
70
|
+
DEVICE_TYPE_CONTROLLER: DeviceType.ValueType # 5
|
|
71
|
+
DEVICE_TYPE_IOS: DeviceType.ValueType # 6
|
|
72
|
+
DEVICE_TYPE_ANDROID: DeviceType.ValueType # 7
|
|
73
|
+
Global___DeviceType: _TypeAlias = DeviceType # noqa: Y015
|
|
74
|
+
|
|
75
|
+
class _DevicePairingStatus:
|
|
76
|
+
ValueType = _typing.NewType("ValueType", _builtins.int)
|
|
77
|
+
V: _TypeAlias = ValueType # noqa: Y015
|
|
78
|
+
|
|
79
|
+
class _DevicePairingStatusEnumTypeWrapper(_enum_type_wrapper._EnumTypeWrapper[_DevicePairingStatus.ValueType], _builtins.type):
|
|
80
|
+
DESCRIPTOR: _descriptor.EnumDescriptor
|
|
81
|
+
DEVICE_PAIRING_STATUS_UNKNOWN: _DevicePairingStatus.ValueType # 0
|
|
82
|
+
DEVICE_PAIRING_STATUS_IDLE: _DevicePairingStatus.ValueType # 1
|
|
83
|
+
DEVICE_PAIRING_STATUS_CONNECTING_TO_WIFI: _DevicePairingStatus.ValueType # 2
|
|
84
|
+
DEVICE_PAIRING_STATUS_CONNECTED_TO_WIFI_SUCCESSFULLY: _DevicePairingStatus.ValueType # 3
|
|
85
|
+
DEVICE_PAIRING_STATUS_WRONG_PASSPHRASE: _DevicePairingStatus.ValueType # 4
|
|
86
|
+
DEVICE_PAIRING_STATUS_WRONG_SSID: _DevicePairingStatus.ValueType # 5
|
|
87
|
+
DEVICE_PAIRING_STATUS_CONNECTED_TO_CLOUD_SUCCESSFULLY: _DevicePairingStatus.ValueType # 6
|
|
88
|
+
DEVICE_PAIRING_STATUS_ERROR_NO_DEVICE_ID: _DevicePairingStatus.ValueType # 7
|
|
89
|
+
DEVICE_PAIRING_STATUS_ERROR_NO_SYSTEM_ID: _DevicePairingStatus.ValueType # 8
|
|
90
|
+
|
|
91
|
+
class DevicePairingStatus(_DevicePairingStatus, metaclass=_DevicePairingStatusEnumTypeWrapper): ...
|
|
92
|
+
|
|
93
|
+
DEVICE_PAIRING_STATUS_UNKNOWN: DevicePairingStatus.ValueType # 0
|
|
94
|
+
DEVICE_PAIRING_STATUS_IDLE: DevicePairingStatus.ValueType # 1
|
|
95
|
+
DEVICE_PAIRING_STATUS_CONNECTING_TO_WIFI: DevicePairingStatus.ValueType # 2
|
|
96
|
+
DEVICE_PAIRING_STATUS_CONNECTED_TO_WIFI_SUCCESSFULLY: DevicePairingStatus.ValueType # 3
|
|
97
|
+
DEVICE_PAIRING_STATUS_WRONG_PASSPHRASE: DevicePairingStatus.ValueType # 4
|
|
98
|
+
DEVICE_PAIRING_STATUS_WRONG_SSID: DevicePairingStatus.ValueType # 5
|
|
99
|
+
DEVICE_PAIRING_STATUS_CONNECTED_TO_CLOUD_SUCCESSFULLY: DevicePairingStatus.ValueType # 6
|
|
100
|
+
DEVICE_PAIRING_STATUS_ERROR_NO_DEVICE_ID: DevicePairingStatus.ValueType # 7
|
|
101
|
+
DEVICE_PAIRING_STATUS_ERROR_NO_SYSTEM_ID: DevicePairingStatus.ValueType # 8
|
|
102
|
+
Global___DevicePairingStatus: _TypeAlias = DevicePairingStatus # noqa: Y015
|
|
103
|
+
|
|
104
|
+
@_typing.final
|
|
105
|
+
class WifiScan(_message.Message):
|
|
106
|
+
"""---------------------------------------------------------------------------
|
|
107
|
+
WiFi scan result (device → phone over BLE)
|
|
108
|
+
---------------------------------------------------------------------------
|
|
109
|
+
"""
|
|
110
|
+
|
|
111
|
+
DESCRIPTOR: _descriptor.Descriptor
|
|
112
|
+
|
|
113
|
+
MAC_ADDRESS_FIELD_NUMBER: _builtins.int
|
|
114
|
+
SSID_FIELD_NUMBER: _builtins.int
|
|
115
|
+
FREQUENCY_FIELD_NUMBER: _builtins.int
|
|
116
|
+
RSSI_FIELD_NUMBER: _builtins.int
|
|
117
|
+
SECURITY_TYPE_FIELD_NUMBER: _builtins.int
|
|
118
|
+
mac_address: _builtins.str
|
|
119
|
+
"""Field ordering based on KMP model (WifiScan.kt) and confirmed by
|
|
120
|
+
observed data: field 4 contains negative dBm values (RSSI).
|
|
121
|
+
NM.smali is a DIFFERENT message (WifiState for established connections).
|
|
122
|
+
BSSID
|
|
123
|
+
"""
|
|
124
|
+
ssid: _builtins.str
|
|
125
|
+
frequency: _builtins.int
|
|
126
|
+
"""MHz; >5000 = 5GHz band"""
|
|
127
|
+
rssi: _builtins.int
|
|
128
|
+
"""Signal strength in dBm (negative)"""
|
|
129
|
+
security_type: Global___WifiSecurityType.ValueType
|
|
130
|
+
"""0=UNKNOWN, 1=OPEN, 2=WPAPSK"""
|
|
131
|
+
def __init__(
|
|
132
|
+
self,
|
|
133
|
+
*,
|
|
134
|
+
mac_address: _builtins.str = ...,
|
|
135
|
+
ssid: _builtins.str = ...,
|
|
136
|
+
frequency: _builtins.int = ...,
|
|
137
|
+
rssi: _builtins.int = ...,
|
|
138
|
+
security_type: Global___WifiSecurityType.ValueType = ...,
|
|
139
|
+
) -> None: ...
|
|
140
|
+
_HasFieldArgType: _TypeAlias = _Never # noqa: Y015
|
|
141
|
+
def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
|
|
142
|
+
_ClearFieldArgType: _TypeAlias = _typing.Literal["frequency", b"frequency", "mac_address", b"mac_address", "rssi", b"rssi", "security_type", b"security_type", "ssid", b"ssid"] # noqa: Y015
|
|
143
|
+
def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
|
|
144
|
+
def WhichOneof(self, oneof_group: _Never) -> None: ...
|
|
145
|
+
|
|
146
|
+
Global___WifiScan: _TypeAlias = WifiScan # noqa: Y015
|
|
147
|
+
|
|
148
|
+
@_typing.final
|
|
149
|
+
class WifiScanList(_message.Message):
|
|
150
|
+
DESCRIPTOR: _descriptor.Descriptor
|
|
151
|
+
|
|
152
|
+
SCANS_FIELD_NUMBER: _builtins.int
|
|
153
|
+
@_builtins.property
|
|
154
|
+
def scans(self) -> _containers.RepeatedCompositeFieldContainer[Global___WifiScan]: ...
|
|
155
|
+
def __init__(
|
|
156
|
+
self,
|
|
157
|
+
*,
|
|
158
|
+
scans: _abc.Iterable[Global___WifiScan] | None = ...,
|
|
159
|
+
) -> None: ...
|
|
160
|
+
_HasFieldArgType: _TypeAlias = _Never # noqa: Y015
|
|
161
|
+
def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
|
|
162
|
+
_ClearFieldArgType: _TypeAlias = _typing.Literal["scans", b"scans"] # noqa: Y015
|
|
163
|
+
def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
|
|
164
|
+
def WhichOneof(self, oneof_group: _Never) -> None: ...
|
|
165
|
+
|
|
166
|
+
Global___WifiScanList: _TypeAlias = WifiScanList # noqa: Y015
|
|
167
|
+
|
|
168
|
+
@_typing.final
|
|
169
|
+
class WifiConfiguration(_message.Message):
|
|
170
|
+
"""---------------------------------------------------------------------------
|
|
171
|
+
Device configuration (phone → device over BLE)
|
|
172
|
+
---------------------------------------------------------------------------
|
|
173
|
+
"""
|
|
174
|
+
|
|
175
|
+
DESCRIPTOR: _descriptor.Descriptor
|
|
176
|
+
|
|
177
|
+
SECURITY_TYPE_FIELD_NUMBER: _builtins.int
|
|
178
|
+
SSID_FIELD_NUMBER: _builtins.int
|
|
179
|
+
PASSPHRASE_FIELD_NUMBER: _builtins.int
|
|
180
|
+
security_type: Global___WifiSecurityType.ValueType
|
|
181
|
+
ssid: _builtins.str
|
|
182
|
+
passphrase: _builtins.str
|
|
183
|
+
def __init__(
|
|
184
|
+
self,
|
|
185
|
+
*,
|
|
186
|
+
security_type: Global___WifiSecurityType.ValueType = ...,
|
|
187
|
+
ssid: _builtins.str = ...,
|
|
188
|
+
passphrase: _builtins.str = ...,
|
|
189
|
+
) -> None: ...
|
|
190
|
+
_HasFieldArgType: _TypeAlias = _Never # noqa: Y015
|
|
191
|
+
def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
|
|
192
|
+
_ClearFieldArgType: _TypeAlias = _typing.Literal["passphrase", b"passphrase", "security_type", b"security_type", "ssid", b"ssid"] # noqa: Y015
|
|
193
|
+
def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
|
|
194
|
+
def WhichOneof(self, oneof_group: _Never) -> None: ...
|
|
195
|
+
|
|
196
|
+
Global___WifiConfiguration: _TypeAlias = WifiConfiguration # noqa: Y015
|
|
197
|
+
|
|
198
|
+
@_typing.final
|
|
199
|
+
class DeviceConfiguration(_message.Message):
|
|
200
|
+
DESCRIPTOR: _descriptor.Descriptor
|
|
201
|
+
|
|
202
|
+
VERSION_FIELD_NUMBER: _builtins.int
|
|
203
|
+
DEVICE_UUID_FIELD_NUMBER: _builtins.int
|
|
204
|
+
DEVICE_TYPE_FIELD_NUMBER: _builtins.int
|
|
205
|
+
CLOUD_HOSTNAME_FIELD_NUMBER: _builtins.int
|
|
206
|
+
TOKEN_HOSTNAME_FIELD_NUMBER: _builtins.int
|
|
207
|
+
CLOUD_HOST_PORT_FIELD_NUMBER: _builtins.int
|
|
208
|
+
TOKEN_HOST_PORT_FIELD_NUMBER: _builtins.int
|
|
209
|
+
WIFI_CONFIGS_FIELD_NUMBER: _builtins.int
|
|
210
|
+
SPACE_ID_FIELD_NUMBER: _builtins.int
|
|
211
|
+
SYSTEM_ID_FIELD_NUMBER: _builtins.int
|
|
212
|
+
version: _builtins.int
|
|
213
|
+
device_uuid: _builtins.str
|
|
214
|
+
"""empty during pairing; device self-assigns"""
|
|
215
|
+
device_type: Global___DeviceType.ValueType
|
|
216
|
+
cloud_hostname: _builtins.str
|
|
217
|
+
"""e.g. "api.prod.quilt.cloud" """
|
|
218
|
+
token_hostname: _builtins.str
|
|
219
|
+
"""e.g. "token.prod.quilt.cloud" """
|
|
220
|
+
cloud_host_port: _builtins.int
|
|
221
|
+
"""443"""
|
|
222
|
+
token_host_port: _builtins.int
|
|
223
|
+
space_id: _builtins.str
|
|
224
|
+
system_id: _builtins.str
|
|
225
|
+
"""system UUID from HDS"""
|
|
226
|
+
@_builtins.property
|
|
227
|
+
def wifi_configs(self) -> _containers.RepeatedCompositeFieldContainer[Global___WifiConfiguration]: ...
|
|
228
|
+
def __init__(
|
|
229
|
+
self,
|
|
230
|
+
*,
|
|
231
|
+
version: _builtins.int = ...,
|
|
232
|
+
device_uuid: _builtins.str = ...,
|
|
233
|
+
device_type: Global___DeviceType.ValueType = ...,
|
|
234
|
+
cloud_hostname: _builtins.str = ...,
|
|
235
|
+
token_hostname: _builtins.str = ...,
|
|
236
|
+
cloud_host_port: _builtins.int = ...,
|
|
237
|
+
token_host_port: _builtins.int = ...,
|
|
238
|
+
wifi_configs: _abc.Iterable[Global___WifiConfiguration] | None = ...,
|
|
239
|
+
space_id: _builtins.str = ...,
|
|
240
|
+
system_id: _builtins.str = ...,
|
|
241
|
+
) -> None: ...
|
|
242
|
+
_HasFieldArgType: _TypeAlias = _Never # noqa: Y015
|
|
243
|
+
def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
|
|
244
|
+
_ClearFieldArgType: _TypeAlias = _typing.Literal["cloud_host_port", b"cloud_host_port", "cloud_hostname", b"cloud_hostname", "device_type", b"device_type", "device_uuid", b"device_uuid", "space_id", b"space_id", "system_id", b"system_id", "token_host_port", b"token_host_port", "token_hostname", b"token_hostname", "version", b"version", "wifi_configs", b"wifi_configs"] # noqa: Y015
|
|
245
|
+
def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
|
|
246
|
+
def WhichOneof(self, oneof_group: _Never) -> None: ...
|
|
247
|
+
|
|
248
|
+
Global___DeviceConfiguration: _TypeAlias = DeviceConfiguration # noqa: Y015
|
|
249
|
+
|
|
250
|
+
@_typing.final
|
|
251
|
+
class DeviceConfigurationRequest(_message.Message):
|
|
252
|
+
DESCRIPTOR: _descriptor.Descriptor
|
|
253
|
+
|
|
254
|
+
REQUEST_TIMESTAMP_FIELD_NUMBER: _builtins.int
|
|
255
|
+
DEVICE_CONFIGURATION_FIELD_NUMBER: _builtins.int
|
|
256
|
+
@_builtins.property
|
|
257
|
+
def request_timestamp(self) -> _timestamp_pb2.Timestamp: ...
|
|
258
|
+
@_builtins.property
|
|
259
|
+
def device_configuration(self) -> Global___DeviceConfiguration: ...
|
|
260
|
+
def __init__(
|
|
261
|
+
self,
|
|
262
|
+
*,
|
|
263
|
+
request_timestamp: _timestamp_pb2.Timestamp | None = ...,
|
|
264
|
+
device_configuration: Global___DeviceConfiguration | None = ...,
|
|
265
|
+
) -> None: ...
|
|
266
|
+
_HasFieldArgType: _TypeAlias = _typing.Literal["device_configuration", b"device_configuration", "request_timestamp", b"request_timestamp"] # noqa: Y015
|
|
267
|
+
def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
|
|
268
|
+
_ClearFieldArgType: _TypeAlias = _typing.Literal["device_configuration", b"device_configuration", "request_timestamp", b"request_timestamp"] # noqa: Y015
|
|
269
|
+
def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
|
|
270
|
+
def WhichOneof(self, oneof_group: _Never) -> None: ...
|
|
271
|
+
|
|
272
|
+
Global___DeviceConfigurationRequest: _TypeAlias = DeviceConfigurationRequest # noqa: Y015
|
|
273
|
+
|
|
274
|
+
@_typing.final
|
|
275
|
+
class DevicePairingStatusResponse(_message.Message):
|
|
276
|
+
"""---------------------------------------------------------------------------
|
|
277
|
+
Pairing status (device → phone over BLE)
|
|
278
|
+
---------------------------------------------------------------------------
|
|
279
|
+
"""
|
|
280
|
+
|
|
281
|
+
DESCRIPTOR: _descriptor.Descriptor
|
|
282
|
+
|
|
283
|
+
STATUS_FIELD_NUMBER: _builtins.int
|
|
284
|
+
status: Global___DevicePairingStatus.ValueType
|
|
285
|
+
def __init__(
|
|
286
|
+
self,
|
|
287
|
+
*,
|
|
288
|
+
status: Global___DevicePairingStatus.ValueType = ...,
|
|
289
|
+
) -> None: ...
|
|
290
|
+
_HasFieldArgType: _TypeAlias = _Never # noqa: Y015
|
|
291
|
+
def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
|
|
292
|
+
_ClearFieldArgType: _TypeAlias = _typing.Literal["status", b"status"] # noqa: Y015
|
|
293
|
+
def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
|
|
294
|
+
def WhichOneof(self, oneof_group: _Never) -> None: ...
|
|
295
|
+
|
|
296
|
+
Global___DevicePairingStatusResponse: _TypeAlias = DevicePairingStatusResponse # noqa: Y015
|
|
297
|
+
|
|
298
|
+
@_typing.final
|
|
299
|
+
class DeviceConfigurationResult(_message.Message):
|
|
300
|
+
"""Response from SendDeviceConfigRequest (WiFi gRPC provisioning)"""
|
|
301
|
+
|
|
302
|
+
DESCRIPTOR: _descriptor.Descriptor
|
|
303
|
+
|
|
304
|
+
IS_DEVICE_CONFIGURED_FIELD_NUMBER: _builtins.int
|
|
305
|
+
is_device_configured: _builtins.bool
|
|
306
|
+
def __init__(
|
|
307
|
+
self,
|
|
308
|
+
*,
|
|
309
|
+
is_device_configured: _builtins.bool = ...,
|
|
310
|
+
) -> None: ...
|
|
311
|
+
_HasFieldArgType: _TypeAlias = _Never # noqa: Y015
|
|
312
|
+
def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
|
|
313
|
+
_ClearFieldArgType: _TypeAlias = _typing.Literal["is_device_configured", b"is_device_configured"] # noqa: Y015
|
|
314
|
+
def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
|
|
315
|
+
def WhichOneof(self, oneof_group: _Never) -> None: ...
|
|
316
|
+
|
|
317
|
+
Global___DeviceConfigurationResult: _TypeAlias = DeviceConfigurationResult # noqa: Y015
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT!
|
|
2
|
+
"""Client and server classes corresponding to protobuf-defined services."""
|
|
3
|
+
import grpc
|
|
4
|
+
import warnings
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
GRPC_GENERATED_VERSION = '1.80.0'
|
|
8
|
+
GRPC_VERSION = grpc.__version__
|
|
9
|
+
_version_not_supported = False
|
|
10
|
+
|
|
11
|
+
try:
|
|
12
|
+
from grpc._utilities import first_version_is_lower
|
|
13
|
+
_version_not_supported = first_version_is_lower(GRPC_VERSION, GRPC_GENERATED_VERSION)
|
|
14
|
+
except ImportError:
|
|
15
|
+
_version_not_supported = True
|
|
16
|
+
|
|
17
|
+
if _version_not_supported:
|
|
18
|
+
raise RuntimeError(
|
|
19
|
+
f'The grpc package installed is at version {GRPC_VERSION},'
|
|
20
|
+
+ ' but the generated code in quilt_device_pairing_pb2_grpc.py depends on'
|
|
21
|
+
+ f' grpcio>={GRPC_GENERATED_VERSION}.'
|
|
22
|
+
+ f' Please upgrade your grpc module to grpcio>={GRPC_GENERATED_VERSION}'
|
|
23
|
+
+ f' or downgrade your generated code using grpcio-tools<={GRPC_VERSION}.'
|
|
24
|
+
)
|