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.
Files changed (32) hide show
  1. {vsslctrl-0.1.8.dev1 → vsslctrl-0.1.9.dev1}/PKG-INFO +2 -2
  2. {vsslctrl-0.1.8.dev1 → vsslctrl-0.1.9.dev1}/README.md +1 -1
  3. {vsslctrl-0.1.8.dev1 → vsslctrl-0.1.9.dev1}/pyproject.toml +1 -1
  4. {vsslctrl-0.1.8.dev1 → vsslctrl-0.1.9.dev1}/vsslctrl/core.py +6 -2
  5. {vsslctrl-0.1.8.dev1 → vsslctrl-0.1.9.dev1}/vsslctrl/device.py +39 -24
  6. {vsslctrl-0.1.8.dev1 → vsslctrl-0.1.9.dev1}/vsslctrl.egg-info/PKG-INFO +2 -2
  7. {vsslctrl-0.1.8.dev1 → vsslctrl-0.1.9.dev1}/LICENSE +0 -0
  8. {vsslctrl-0.1.8.dev1 → vsslctrl-0.1.9.dev1}/setup.cfg +0 -0
  9. {vsslctrl-0.1.8.dev1 → vsslctrl-0.1.9.dev1}/tests/test_event_bus.py +0 -0
  10. {vsslctrl-0.1.8.dev1 → vsslctrl-0.1.9.dev1}/tests/test_integration.py +0 -0
  11. {vsslctrl-0.1.8.dev1 → vsslctrl-0.1.9.dev1}/tests/test_settings.py +0 -0
  12. {vsslctrl-0.1.8.dev1 → vsslctrl-0.1.9.dev1}/tests/test_zone.py +0 -0
  13. {vsslctrl-0.1.8.dev1 → vsslctrl-0.1.9.dev1}/vsslctrl/__init__.py +0 -0
  14. {vsslctrl-0.1.8.dev1 → vsslctrl-0.1.9.dev1}/vsslctrl/api_alpha.py +0 -0
  15. {vsslctrl-0.1.8.dev1 → vsslctrl-0.1.9.dev1}/vsslctrl/api_base.py +0 -0
  16. {vsslctrl-0.1.8.dev1 → vsslctrl-0.1.9.dev1}/vsslctrl/api_bravo.py +0 -0
  17. {vsslctrl-0.1.8.dev1 → vsslctrl-0.1.9.dev1}/vsslctrl/data_structure.py +0 -0
  18. {vsslctrl-0.1.8.dev1 → vsslctrl-0.1.9.dev1}/vsslctrl/decorators.py +0 -0
  19. {vsslctrl-0.1.8.dev1 → vsslctrl-0.1.9.dev1}/vsslctrl/discovery.py +0 -0
  20. {vsslctrl-0.1.8.dev1 → vsslctrl-0.1.9.dev1}/vsslctrl/event_bus.py +0 -0
  21. {vsslctrl-0.1.8.dev1 → vsslctrl-0.1.9.dev1}/vsslctrl/exceptions.py +0 -0
  22. {vsslctrl-0.1.8.dev1 → vsslctrl-0.1.9.dev1}/vsslctrl/group.py +0 -0
  23. {vsslctrl-0.1.8.dev1 → vsslctrl-0.1.9.dev1}/vsslctrl/io.py +0 -0
  24. {vsslctrl-0.1.8.dev1 → vsslctrl-0.1.9.dev1}/vsslctrl/settings.py +0 -0
  25. {vsslctrl-0.1.8.dev1 → vsslctrl-0.1.9.dev1}/vsslctrl/track.py +0 -0
  26. {vsslctrl-0.1.8.dev1 → vsslctrl-0.1.9.dev1}/vsslctrl/transport.py +0 -0
  27. {vsslctrl-0.1.8.dev1 → vsslctrl-0.1.9.dev1}/vsslctrl/utils.py +0 -0
  28. {vsslctrl-0.1.8.dev1 → vsslctrl-0.1.9.dev1}/vsslctrl/zone.py +0 -0
  29. {vsslctrl-0.1.8.dev1 → vsslctrl-0.1.9.dev1}/vsslctrl.egg-info/SOURCES.txt +0 -0
  30. {vsslctrl-0.1.8.dev1 → vsslctrl-0.1.9.dev1}/vsslctrl.egg-info/dependency_links.txt +0 -0
  31. {vsslctrl-0.1.8.dev1 → vsslctrl-0.1.9.dev1}/vsslctrl.egg-info/requires.txt +0 -0
  32. {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.8.dev1
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
- * **A1(.x)** specific control e.g sub crossover, bluetooth
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
- * **A1(.x)** specific control e.g sub crossover, bluetooth
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.8.dev1"
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
- zone_count = self.model.zone_count
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
- A1 = Model(
208
+ A1X = Model(
209
209
  {
210
- "name": "A.1",
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
- A3 = Model(
217
+ A3X = Model(
218
218
  {
219
- "name": "A.3",
219
+ "name": "A.3x",
220
220
  "zones": THREE_ZONES,
221
- "input_sources": INPUT_SOURCES_FOR_A3,
222
- "analog_output_sources": ANALOG_OUTPUT_SOURCES_FOR_A3,
223
- "features": [Features.GROUPING, Features.PARTY_MODE],
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
- A6 = Model(
226
+ A6X = Model(
227
227
  {
228
- "name": "A.6",
228
+ "name": "A.6x",
229
229
  "zones": SIX_ZONES,
230
- "input_sources": INPUT_SOURCES_FOR_A6,
231
- "analog_output_sources": ANALOG_OUTPUT_SOURCES_FOR_A6,
232
- "features": [Features.GROUPING, Features.PARTY_MODE],
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
- A1X = Model(
235
+ A1 = Model(
236
236
  {
237
- "name": "A.1x",
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
- A3X = Model(
244
+ A3 = Model(
245
245
  {
246
- "name": "A.3x",
246
+ "name": "A.3",
247
247
  "zones": THREE_ZONES,
248
- "input_sources": INPUT_SOURCES_FOR_3_ZONE_DEVICE,
249
- "analog_output_sources": ANALOG_OUTPUT_SOURCES_FOR_3_ZONE_DEVICE,
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
- A6X = Model(
253
+ A6 = Model(
254
254
  {
255
- "name": "A.6x",
255
+ "name": "A.6",
256
256
  "zones": SIX_ZONES,
257
- "input_sources": INPUT_SOURCES_FOR_6_ZONE_DEVICE,
258
- "analog_output_sources": ANALOG_OUTPUT_SOURCES_FOR_6_ZONE_DEVICE,
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.8.dev1
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
- * **A1(.x)** specific control e.g sub crossover, bluetooth
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