vsslctrl 0.1.8.dev1__tar.gz → 0.1.9.dev1__tar.gz
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.
- {vsslctrl-0.1.8.dev1 → vsslctrl-0.1.9.dev1}/PKG-INFO +2 -2
- {vsslctrl-0.1.8.dev1 → vsslctrl-0.1.9.dev1}/README.md +1 -1
- {vsslctrl-0.1.8.dev1 → vsslctrl-0.1.9.dev1}/pyproject.toml +1 -1
- {vsslctrl-0.1.8.dev1 → vsslctrl-0.1.9.dev1}/vsslctrl/core.py +6 -2
- {vsslctrl-0.1.8.dev1 → vsslctrl-0.1.9.dev1}/vsslctrl/device.py +39 -24
- {vsslctrl-0.1.8.dev1 → vsslctrl-0.1.9.dev1}/vsslctrl.egg-info/PKG-INFO +2 -2
- {vsslctrl-0.1.8.dev1 → vsslctrl-0.1.9.dev1}/LICENSE +0 -0
- {vsslctrl-0.1.8.dev1 → vsslctrl-0.1.9.dev1}/setup.cfg +0 -0
- {vsslctrl-0.1.8.dev1 → vsslctrl-0.1.9.dev1}/tests/test_event_bus.py +0 -0
- {vsslctrl-0.1.8.dev1 → vsslctrl-0.1.9.dev1}/tests/test_integration.py +0 -0
- {vsslctrl-0.1.8.dev1 → vsslctrl-0.1.9.dev1}/tests/test_settings.py +0 -0
- {vsslctrl-0.1.8.dev1 → vsslctrl-0.1.9.dev1}/tests/test_zone.py +0 -0
- {vsslctrl-0.1.8.dev1 → vsslctrl-0.1.9.dev1}/vsslctrl/__init__.py +0 -0
- {vsslctrl-0.1.8.dev1 → vsslctrl-0.1.9.dev1}/vsslctrl/api_alpha.py +0 -0
- {vsslctrl-0.1.8.dev1 → vsslctrl-0.1.9.dev1}/vsslctrl/api_base.py +0 -0
- {vsslctrl-0.1.8.dev1 → vsslctrl-0.1.9.dev1}/vsslctrl/api_bravo.py +0 -0
- {vsslctrl-0.1.8.dev1 → vsslctrl-0.1.9.dev1}/vsslctrl/data_structure.py +0 -0
- {vsslctrl-0.1.8.dev1 → vsslctrl-0.1.9.dev1}/vsslctrl/decorators.py +0 -0
- {vsslctrl-0.1.8.dev1 → vsslctrl-0.1.9.dev1}/vsslctrl/discovery.py +0 -0
- {vsslctrl-0.1.8.dev1 → vsslctrl-0.1.9.dev1}/vsslctrl/event_bus.py +0 -0
- {vsslctrl-0.1.8.dev1 → vsslctrl-0.1.9.dev1}/vsslctrl/exceptions.py +0 -0
- {vsslctrl-0.1.8.dev1 → vsslctrl-0.1.9.dev1}/vsslctrl/group.py +0 -0
- {vsslctrl-0.1.8.dev1 → vsslctrl-0.1.9.dev1}/vsslctrl/io.py +0 -0
- {vsslctrl-0.1.8.dev1 → vsslctrl-0.1.9.dev1}/vsslctrl/settings.py +0 -0
- {vsslctrl-0.1.8.dev1 → vsslctrl-0.1.9.dev1}/vsslctrl/track.py +0 -0
- {vsslctrl-0.1.8.dev1 → vsslctrl-0.1.9.dev1}/vsslctrl/transport.py +0 -0
- {vsslctrl-0.1.8.dev1 → vsslctrl-0.1.9.dev1}/vsslctrl/utils.py +0 -0
- {vsslctrl-0.1.8.dev1 → vsslctrl-0.1.9.dev1}/vsslctrl/zone.py +0 -0
- {vsslctrl-0.1.8.dev1 → vsslctrl-0.1.9.dev1}/vsslctrl.egg-info/SOURCES.txt +0 -0
- {vsslctrl-0.1.8.dev1 → vsslctrl-0.1.9.dev1}/vsslctrl.egg-info/dependency_links.txt +0 -0
- {vsslctrl-0.1.8.dev1 → vsslctrl-0.1.9.dev1}/vsslctrl.egg-info/requires.txt +0 -0
- {vsslctrl-0.1.8.dev1 → vsslctrl-0.1.9.dev1}/vsslctrl.egg-info/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: vsslctrl
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.9.dev1
|
|
4
4
|
Summary: Package for controlling VSSL's range of streaming amplifiers
|
|
5
5
|
Author-email: vsslctrl <vsslcontrolled@proton.me>
|
|
6
6
|
Classifier: Development Status :: 4 - Beta
|
|
@@ -39,7 +39,7 @@ There should not be any *[VSSL Agent's](https://vssl.gitbook.io/vssl-rest-api/ge
|
|
|
39
39
|
|
|
40
40
|
## TODOs
|
|
41
41
|
|
|
42
|
-
* **
|
|
42
|
+
* **A.1(x)** specific control e.g sub crossover, bluetooth
|
|
43
43
|
* Better test coverage
|
|
44
44
|
|
|
45
45
|
## Basic Usage
|
|
@@ -18,7 +18,7 @@ There should not be any *[VSSL Agent's](https://vssl.gitbook.io/vssl-rest-api/ge
|
|
|
18
18
|
|
|
19
19
|
## TODOs
|
|
20
20
|
|
|
21
|
-
* **
|
|
21
|
+
* **A.1(x)** specific control e.g sub crossover, bluetooth
|
|
22
22
|
* Better test coverage
|
|
23
23
|
|
|
24
24
|
## Basic Usage
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "vsslctrl"
|
|
7
|
-
version = "0.1.
|
|
7
|
+
version = "0.1.9.dev1"
|
|
8
8
|
description = "Package for controlling VSSL's range of streaming amplifiers"
|
|
9
9
|
authors = [
|
|
10
10
|
{ name="vsslctrl", email="vsslcontrolled@proton.me" },
|
|
@@ -87,8 +87,7 @@ class Vssl:
|
|
|
87
87
|
raise VsslCtrlException(message)
|
|
88
88
|
|
|
89
89
|
except VsslCtrlException:
|
|
90
|
-
|
|
91
|
-
message = f"Device model only has {zone_count} zones instead of {len(self.zones)}"
|
|
90
|
+
message = f"Device model {self.model.name} only has {self.model.zone_count} zones not {len(self.zones)}."
|
|
92
91
|
self._log_critical(message)
|
|
93
92
|
await first_zone.disconnect()
|
|
94
93
|
raise VsslCtrlException(message)
|
|
@@ -194,6 +193,11 @@ class Vssl:
|
|
|
194
193
|
#
|
|
195
194
|
# Work out the a model given some device info
|
|
196
195
|
#
|
|
196
|
+
#
|
|
197
|
+
#
|
|
198
|
+
# THIS WONT WORK FOR ORIGINAL A SERIES! TODO!
|
|
199
|
+
#
|
|
200
|
+
#
|
|
197
201
|
def _infer_device_model(self, data: Dict[str, int]):
|
|
198
202
|
# if we dont have a model, default to x series
|
|
199
203
|
if not self.model:
|
|
@@ -205,57 +205,72 @@ class Model:
|
|
|
205
205
|
|
|
206
206
|
|
|
207
207
|
class Models(VsslEnum):
|
|
208
|
-
|
|
208
|
+
A1X = Model(
|
|
209
209
|
{
|
|
210
|
-
"name": "A.
|
|
210
|
+
"name": "A.1x",
|
|
211
211
|
"zones": SINGLE_ZONE,
|
|
212
212
|
"input_sources": INPUT_SOURCES_FOR_1_ZONE_DEVICE,
|
|
213
213
|
"analog_output_sources": ANALOG_OUTPUT_SOURCES_FOR_1_ZONE_DEVICE,
|
|
214
214
|
"features": [Features.BLUETOOTH, Features.SUBWOOFER_CROSSOVER],
|
|
215
215
|
}
|
|
216
216
|
)
|
|
217
|
-
|
|
217
|
+
A3X = Model(
|
|
218
218
|
{
|
|
219
|
-
"name": "A.
|
|
219
|
+
"name": "A.3x",
|
|
220
220
|
"zones": THREE_ZONES,
|
|
221
|
-
"input_sources":
|
|
222
|
-
"analog_output_sources":
|
|
223
|
-
"features": [Features.GROUPING
|
|
221
|
+
"input_sources": INPUT_SOURCES_FOR_3_ZONE_DEVICE,
|
|
222
|
+
"analog_output_sources": ANALOG_OUTPUT_SOURCES_FOR_3_ZONE_DEVICE,
|
|
223
|
+
"features": [Features.GROUPING],
|
|
224
224
|
}
|
|
225
225
|
)
|
|
226
|
-
|
|
226
|
+
A6X = Model(
|
|
227
227
|
{
|
|
228
|
-
"name": "A.
|
|
228
|
+
"name": "A.6x",
|
|
229
229
|
"zones": SIX_ZONES,
|
|
230
|
-
"input_sources":
|
|
231
|
-
"analog_output_sources":
|
|
232
|
-
"features": [Features.GROUPING
|
|
230
|
+
"input_sources": INPUT_SOURCES_FOR_6_ZONE_DEVICE,
|
|
231
|
+
"analog_output_sources": ANALOG_OUTPUT_SOURCES_FOR_6_ZONE_DEVICE,
|
|
232
|
+
"features": [Features.GROUPING],
|
|
233
233
|
}
|
|
234
234
|
)
|
|
235
|
-
|
|
235
|
+
A1 = Model(
|
|
236
236
|
{
|
|
237
|
-
"name": "A.
|
|
237
|
+
"name": "A.1",
|
|
238
238
|
"zones": SINGLE_ZONE,
|
|
239
239
|
"input_sources": INPUT_SOURCES_FOR_1_ZONE_DEVICE,
|
|
240
240
|
"analog_output_sources": ANALOG_OUTPUT_SOURCES_FOR_1_ZONE_DEVICE,
|
|
241
241
|
"features": [Features.BLUETOOTH, Features.SUBWOOFER_CROSSOVER],
|
|
242
242
|
}
|
|
243
243
|
)
|
|
244
|
-
|
|
244
|
+
A3 = Model(
|
|
245
245
|
{
|
|
246
|
-
"name": "A.
|
|
246
|
+
"name": "A.3",
|
|
247
247
|
"zones": THREE_ZONES,
|
|
248
|
-
"input_sources":
|
|
249
|
-
"analog_output_sources":
|
|
250
|
-
"features": [Features.GROUPING],
|
|
248
|
+
"input_sources": INPUT_SOURCES_FOR_A3,
|
|
249
|
+
"analog_output_sources": ANALOG_OUTPUT_SOURCES_FOR_A3,
|
|
250
|
+
"features": [Features.GROUPING, Features.PARTY_MODE],
|
|
251
251
|
}
|
|
252
252
|
)
|
|
253
|
-
|
|
253
|
+
A6 = Model(
|
|
254
254
|
{
|
|
255
|
-
"name": "A.
|
|
255
|
+
"name": "A.6",
|
|
256
256
|
"zones": SIX_ZONES,
|
|
257
|
-
"input_sources":
|
|
258
|
-
"analog_output_sources":
|
|
259
|
-
"features": [Features.GROUPING],
|
|
257
|
+
"input_sources": INPUT_SOURCES_FOR_A6,
|
|
258
|
+
"analog_output_sources": ANALOG_OUTPUT_SOURCES_FOR_A6,
|
|
259
|
+
"features": [Features.GROUPING, Features.PARTY_MODE],
|
|
260
260
|
}
|
|
261
261
|
)
|
|
262
|
+
|
|
263
|
+
@classmethod
|
|
264
|
+
def get_model_names(cls):
|
|
265
|
+
return [model.value.name for model in cls]
|
|
266
|
+
|
|
267
|
+
@classmethod
|
|
268
|
+
def get_model_by_name(cls, name):
|
|
269
|
+
# Preprocess input name: convert to lowercase and remove dots
|
|
270
|
+
name_cleaned = name.lower().replace(".", "")
|
|
271
|
+
|
|
272
|
+
for model in cls:
|
|
273
|
+
# Preprocess model name: convert to lowercase and remove dots
|
|
274
|
+
if model.value.name.lower().replace(".", "") == name_cleaned:
|
|
275
|
+
return model.value
|
|
276
|
+
return None # Return None if no match is found
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: vsslctrl
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.9.dev1
|
|
4
4
|
Summary: Package for controlling VSSL's range of streaming amplifiers
|
|
5
5
|
Author-email: vsslctrl <vsslcontrolled@proton.me>
|
|
6
6
|
Classifier: Development Status :: 4 - Beta
|
|
@@ -39,7 +39,7 @@ There should not be any *[VSSL Agent's](https://vssl.gitbook.io/vssl-rest-api/ge
|
|
|
39
39
|
|
|
40
40
|
## TODOs
|
|
41
41
|
|
|
42
|
-
* **
|
|
42
|
+
* **A.1(x)** specific control e.g sub crossover, bluetooth
|
|
43
43
|
* Better test coverage
|
|
44
44
|
|
|
45
45
|
## Basic Usage
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|