denonavr 1.1.2__py3-none-any.whl → 1.3.0__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.
denonavr/const.py CHANGED
@@ -52,6 +52,7 @@ ReceiverURLs = namedtuple(
52
52
  "command_set_all_zone_stereo",
53
53
  "command_pause",
54
54
  "command_play",
55
+ "command_stop",
55
56
  "command_cusor_up",
56
57
  "command_cusor_down",
57
58
  "command_cusor_left",
@@ -114,6 +115,30 @@ ReceiverURLs = namedtuple(
114
115
  "command_panel_and_volume_lock",
115
116
  "command_graphic_eq",
116
117
  "command_headphone_eq",
118
+ "command_denon_hdmi_cec_on",
119
+ "command_denon_hdmi_cec_off",
120
+ "command_marantz_hdmi_cec_on",
121
+ "command_marantz_hdmi_cec_off",
122
+ "command_mdax", # Marantz Only
123
+ "command_dac_filter", # Marantz Only
124
+ "command_illumination", # Marantz Only
125
+ "command_auto_lip_sync", # Marantz Only
126
+ "command_dolby_atmos_toggle_denon",
127
+ "command_dolby_atmos_toggle_marantz",
128
+ "command_page_up_denon",
129
+ "command_page_down_denon",
130
+ "command_page_up_marantz",
131
+ "command_page_down_marantz",
132
+ "command_input_mode_select_denon",
133
+ "command_input_mode_auto_denon",
134
+ "command_input_mode_hdmi_denon",
135
+ "command_input_mode_digital_denon",
136
+ "command_input_mode_analog_denon",
137
+ "command_input_mode_select_marantz",
138
+ "command_input_mode_auto_marantz",
139
+ "command_input_mode_hdmi_marantz",
140
+ "command_input_mode_digital_marantz",
141
+ "command_input_mode_analog_marantz",
117
142
  ],
118
143
  )
119
144
  TelnetCommands = namedtuple(
@@ -140,6 +165,7 @@ TelnetCommands = namedtuple(
140
165
  "command_set_all_zone_stereo",
141
166
  "command_pause",
142
167
  "command_play",
168
+ "command_stop",
143
169
  "command_multieq",
144
170
  "command_dynamiceq",
145
171
  "command_reflevoffset",
@@ -209,12 +235,36 @@ TelnetCommands = namedtuple(
209
235
  "command_panel_and_volume_lock",
210
236
  "command_graphic_eq",
211
237
  "command_headphone_eq",
238
+ "command_denon_hdmi_cec_on",
239
+ "command_denon_hdmi_cec_off",
240
+ "command_marantz_hdmi_cec_on",
241
+ "command_marantz_hdmi_cec_off",
242
+ "command_mdax", # Marantz Only
243
+ "command_dac_filter", # Marantz Only
244
+ "command_illumination", # Marantz Only
245
+ "command_auto_lip_sync", # Marantz Only
246
+ "command_dolby_atmos_toggle_denon",
247
+ "command_dolby_atmos_toggle_marantz",
248
+ "command_page_up_denon",
249
+ "command_page_down_denon",
250
+ "command_page_up_marantz",
251
+ "command_page_down_marantz",
252
+ "command_input_mode_select_denon",
253
+ "command_input_mode_auto_denon",
254
+ "command_input_mode_hdmi_denon",
255
+ "command_input_mode_digital_denon",
256
+ "command_input_mode_analog_denon",
257
+ "command_input_mode_select_marantz",
258
+ "command_input_mode_auto_marantz",
259
+ "command_input_mode_hdmi_marantz",
260
+ "command_input_mode_digital_marantz",
261
+ "command_input_mode_analog_marantz",
212
262
  ],
213
263
  )
214
264
 
215
265
  # AVR-X search patterns
216
266
  DEVICEINFO_AVR_X_PATTERN = re.compile(
217
- r"(.*AV(C|R)-(X|S|A).*|.*SR500[6-9]|.*SR60(07|08|09|10|11|12|13)|."
267
+ r"(.*AV([CR])-([XSA]).*|.*SR500[6-9]|.*SR60(07|08|09|10|11|12|13)|."
218
268
  r"*SR70(07|08|09|10|11|12|13)|.*SR501[3-4]|.*NR1604|.*NR1710)"
219
269
  )
220
270
 
@@ -309,39 +359,81 @@ ALL_ZONE_STEREO = "ALL ZONE STEREO"
309
359
 
310
360
  SOUND_MODE_MAPPING = {
311
361
  "MUSIC": [
362
+ "AAC+NEO:X M",
363
+ "AAC+PL2X M",
312
364
  "DOLBY D +NEO:X M",
365
+ "DOLBY D+ +NEO:X M",
366
+ "DOLBY D+ +PL2X M",
367
+ "DOLBY D+NEO:X M",
368
+ "DOLBY D+PL2X M",
369
+ "DOLBY HD+NEO:X M",
370
+ "DOLBY HD+PL2X M",
313
371
  "DOLBY PL2 M",
314
372
  "DOLBY PL2 MUSIC",
315
373
  "DOLBY PL2 X MUSIC",
374
+ "DOLBY PL2X M",
375
+ "DOLBY PLII MS",
376
+ "DTS HD+NEO:X M",
377
+ "DTS HD+PL2X M",
316
378
  "DTS NEO:6 M",
317
379
  "DTS NEO:6 MUSIC",
318
380
  "DTS NEO:X M",
319
381
  "DTS NEO:X MUSIC",
382
+ "DTS+NEO:X M",
383
+ "DTS+PL2X M",
384
+ "M CH IN+NEO:X M",
385
+ "M CH IN+PL2X M",
320
386
  "PLII MUSIC",
321
387
  "PLIIX MUSIC",
322
388
  ],
323
389
  "MOVIE": [
390
+ "AAC+NEO:X C",
391
+ "AAC+PL2X C",
324
392
  "DOLBY D +NEO:X C",
393
+ "DOLBY D+ +NEO:X C",
394
+ "DOLBY D+ +PL2X C",
395
+ "DOLBY D+NEO:X C",
396
+ "DOLBY D+PL2X C",
397
+ "DOLBY HD+NEO:X C",
398
+ "DOLBY HD+PL2X C",
325
399
  "DOLBY PL2 C",
326
400
  "DOLBY PL2 CINEMA",
327
401
  "DOLBY PL2 MOVIE",
328
402
  "DOLBY PL2 X MOVIE",
403
+ "DOLBY PL2X C",
329
404
  "DOLBY PLII MOVIE",
405
+ "DOLBY PLII MV",
406
+ "DTS HD+NEO:X C",
407
+ "DTS HD+PL2X C",
330
408
  "DTS NEO:6 C",
331
409
  "DTS NEO:6 CINEMA",
332
410
  "DTS NEO:X C",
333
411
  "DTS NEO:X CINEMA",
412
+ "DTS+NEO:X C",
413
+ "DTS+PL2X C",
414
+ "M CH IN+NEO:X C",
415
+ "M CH IN+PL2X C",
334
416
  "MULTI IN + VIRTUAL:X",
335
417
  "PLII CINEMA",
336
418
  "PLII MOVIE",
337
419
  "PLIIX CINEMA",
338
420
  ],
339
421
  "GAME": [
422
+ "AAC+NEO:X G",
340
423
  "DOLBY D +NEO:X G",
424
+ "DOLBY D+ +NEO:X G",
425
+ "DOLBY D+NEO:X G",
426
+ "DOLBY HD+NEO:X G",
341
427
  "DOLBY PL2 G",
342
428
  "DOLBY PL2 GAME",
343
429
  "DOLBY PL2 X GAME",
430
+ "DOLBY PL2X G",
344
431
  "DOLBY PLII GAME",
432
+ "DOLBY PLII GM",
433
+ "DTS HD+NEO:X G",
434
+ "DTS NEO:X G",
435
+ "DTS+NEO:X G",
436
+ "M CH IN+NEO:X G",
345
437
  "PLII GAME",
346
438
  ],
347
439
  "AUTO": ["None"],
@@ -352,27 +444,34 @@ SOUND_MODE_MAPPING = {
352
444
  "JAZZ CLUB": ["JAZZ CLUB"],
353
445
  "VIDEO GAME": ["VIDEO GAME"],
354
446
  "MONO MOVIE": ["MONO MOVIE"],
447
+ "SUPER STADIUM": ["SUPER STADIUM"],
448
+ "CLASSIC CONCERT": ["CLASSIC CONCERT"],
449
+ "WIDE SCREEN": ["WIDE SCREEN"],
355
450
  "DIRECT": ["DIRECT"],
356
451
  "PURE DIRECT": ["PURE_DIRECT", "PURE DIRECT"],
357
452
  "DOLBY DIGITAL": [
453
+ "AAC+DOLBY EX",
454
+ "AAC+DSUR",
455
+ "AAC+NEURAL:X",
456
+ "AAC+PL2Z H",
358
457
  "DOLBY ATMOS",
359
458
  "DOLBY AUDIO - DD + DSUR",
360
459
  "DOLBY AUDIO - DD + NEURAL:X",
361
460
  "DOLBY AUDIO - DD+ + DSUR",
362
461
  "DOLBY AUDIO - DD+ + NEURAL:X",
363
- "DOLBY AUDIO - DOLBY DIGITAL PLUS",
364
462
  "DOLBY AUDIO - DOLBY DIGITAL",
463
+ "DOLBY AUDIO - DOLBY DIGITAL PLUS",
365
464
  "DOLBY AUDIO - DOLBY SURROUND",
366
465
  "DOLBY AUDIO - DOLBY TRUEHD",
367
466
  "DOLBY AUDIO - TRUEHD + DSUR",
368
467
  "DOLBY AUDIO - TRUEHD + NEURAL:X",
369
468
  "DOLBY AUDIO-DD",
469
+ "DOLBY AUDIO-DD+",
370
470
  "DOLBY AUDIO-DD+ +DSUR",
371
- # Added both variants as we don't know if type is intentional
471
+ # FY24 specification uses incorrect spelling
372
472
  "DOLBY AUDIO-DD+ +NERUAL:X",
473
+ # FY23 specification uses correct spelling, go figure
373
474
  "DOLBY AUDIO-DD+ +NEURAL:X",
374
- "DOLBY AUDIO-DD+",
375
- "DOLBY AUDIO-DD+",
376
475
  "DOLBY AUDIO-DD+DSUR",
377
476
  "DOLBY AUDIO-DD+NEURAL:X",
378
477
  "DOLBY AUDIO-DSUR",
@@ -382,18 +481,31 @@ SOUND_MODE_MAPPING = {
382
481
  "DOLBY D + +DOLBY SURROUND",
383
482
  "DOLBY D + DOLBY SURROUND",
384
483
  "DOLBY D + NEURAL:X",
385
- "DOLBY D+ +DS",
484
+ "DOLBY D EX",
386
485
  "DOLBY D+",
486
+ "DOLBY D+ +DS",
487
+ "DOLBY D+ +EX",
488
+ "DOLBY D+ +PL2Z H",
387
489
  "DOLBY D+DS",
490
+ "DOLBY D+PL2Z H",
491
+ "DOLBY DIGITAL",
492
+ "DOLBY DIGITAL +",
388
493
  "DOLBY DIGITAL + + NEURAL:X",
389
494
  "DOLBY DIGITAL + NEURAL:X",
390
- "DOLBY DIGITAL +",
391
- "DOLBY DIGITAL",
392
- "DOLBY HD + DOLBY SURROUND",
393
495
  "DOLBY HD",
496
+ "DOLBY HD + DOLBY SURROUND",
497
+ "DOLBY HD+EX",
498
+ "DOLBY HD+PL2Z H",
499
+ "DOLBY PL2Z H",
394
500
  "DOLBY PRO LOGIC",
395
501
  "DOLBY SURROUND",
396
502
  "DOLBY TRUEHD",
503
+ "M CH IN+DOLBY EX",
504
+ "M CH IN+DSUR",
505
+ "M CH IN+PL2Z H",
506
+ "MPEG-H",
507
+ "MPEG2 AAC",
508
+ "MPEG4 AAC",
397
509
  "MULTI IN + DOLBY SURROUND",
398
510
  "MULTI IN + DSUR",
399
511
  "MULTI IN + NEURAL:X",
@@ -401,37 +513,58 @@ SOUND_MODE_MAPPING = {
401
513
  "STANDARD(DOLBY)",
402
514
  ],
403
515
  "DTS SURROUND": [
516
+ "AAC+NEURAL:X",
517
+ "AAC+VIRTUAL:X",
404
518
  "DTS + DOLBY SURROUND",
405
519
  "DTS + NEURAL:X",
406
520
  "DTS + VIRTUAL:X",
407
- "DTS HD MSTR",
521
+ "DTS ES 8CH DSCRT",
522
+ "DTS ES DSCRT+NEURAL:X",
523
+ "DTS ES DSCRT6.1",
524
+ "DTS ES MTRX+NEURAL:X",
525
+ "DTS ES MTRX6.1",
526
+ "DTS EXPRESS",
408
527
  "DTS HD",
528
+ "DTS HD MSTR",
409
529
  "DTS HD+DSUR",
530
+ "DTS HD+NEO:6",
410
531
  "DTS HD+NEURAL:X",
532
+ "DTS HD+PL2Z H",
411
533
  "DTS HD+VIRTUAL:X",
412
534
  "DTS NEURAL:X",
413
535
  "DTS SURROUND",
414
536
  "DTS VIRTUAL:X",
537
+ "DTS-HD",
415
538
  "DTS-HD + DOLBY SURROUND",
416
539
  "DTS-HD + DSUR",
417
540
  "DTS-HD + NEURAL:X",
418
541
  "DTS-HD MSTR",
419
- "DTS-HD",
420
- "DTS:X MSTR",
421
542
  "DTS:X",
543
+ "DTS:X MSTR",
422
544
  "DTS:X+VIRTUAL:X",
423
545
  "DTS+DSUR",
546
+ "DTS+NEO:6",
547
+ "DTS+NEUR",
424
548
  "DTS+NEURAL:X",
549
+ "DTS+PL2Z H",
550
+ "DTS+VIRTU",
425
551
  "DTS+VIRTUAL:X",
552
+ "DTS96 ES MTRX",
553
+ "DTS96/24",
554
+ "IMAX DTS",
426
555
  "IMAX DTS:X",
427
556
  "IMAX DTS:X+VIRTUAL:X",
428
- "IMAX DTS",
429
557
  "IMAX DTS+NEURAL:X",
430
- "M CH IN+DSUR",
558
+ "IMAX DTS+VIRTUAL:X",
431
559
  "M CH IN+NEURAL:X",
432
560
  "M CH IN+VIRTUAL:X",
433
561
  "MAX DTS+VIRTUAL:X",
562
+ # Exists in both DOLBY and DTS in the specification,
563
+ # but can't be in both here, so we it them in DTS only
434
564
  "MULTI CH IN",
565
+ # Exists in both DOLBY and DTS in the specification,
566
+ # but can't be in both here, so we it them in DTS only
567
+ "MULTI CH IN 7.1",
435
568
  "NEURAL:X",
436
569
  "STANDARD(DTS)",
437
570
  "VIRTUAL:X",
@@ -440,7 +573,6 @@ SOUND_MODE_MAPPING = {
440
573
  "AURO2DSURR": ["AURO-2D SURROUND", "AURO2DSURR"],
441
574
  "MCH STEREO": [
442
575
  "MCH STEREO",
443
- "MULTI CH IN 7.1",
444
576
  "MULTI CH STEREO",
445
577
  "MULTI_CH_STEREO",
446
578
  ],
@@ -482,6 +614,7 @@ HDTUNERSTATUS_URL = "/goform/formTuner_HdXml.xml"
482
614
  COMMAND_NETAUDIO_POST_URL = "/NetAudio/index.put.asp"
483
615
  COMMAND_PAUSE = "/goform/formiPhoneAppDirect.xml?NS9B"
484
616
  COMMAND_PLAY = "/goform/formiPhoneAppDirect.xml?NS9A"
617
+ COMMAND_STOP = "/goform/formiPhoneAppDirect.xml?NS9C"
485
618
  COMMAND_ECO_MODE = "/goform/formiPhoneAppDirect.xml?ECO{mode}"
486
619
 
487
620
 
@@ -538,7 +671,7 @@ COMMAND_AUROMATIC_3D_STRENGTH = "/goform/formiPhoneAppDirect.xml?PSAUROST%20{val
538
671
  COMMAND_AURO_3D_MODE = "/goform/formiPhoneAppDirect.xml?PSAUROMODEM%20{mode}"
539
672
  COMMAND_DIRAC_FILTER = "/goform/formiPhoneAppDirect.xml?PSDIRAC%20{filter}"
540
673
  COMMAND_LFC = "/goform/formiPhoneAppDirect.xml?PSLFC%20{mode}"
541
- COMMAND_CONTAMINATION_AMOUNT = "/goform/formiPhoneAppDirect.xml?PSCNTAMT%20{value}"
674
+ COMMAND_CONTAINMENT_AMOUNT = "/goform/formiPhoneAppDirect.xml?PSCNTAMT%20{value}"
542
675
  COMMAND_LOUDNESS_MANAGEMENT = "/goform/formiPhoneAppDirect.xml?PSLOM%20{mode}"
543
676
  COMMAND_BASS_SYNC = "/goform/formiPhoneAppDirect.xml?PSBSC%20{mode}"
544
677
  COMMAND_DIALOG_ENHANCER = "/goform/formiPhoneAppDirect.xml?PSDEH%20{level}"
@@ -572,6 +705,32 @@ COMMAND_PANEL_LOCK = "/goform/formiPhoneAppDirect.xml?SYPANEL%20LOCK%20{mode}"
572
705
  COMMAND_PANEL_AND_VOLUME_LOCK = "/goform/formiPhoneAppDirect.xml?SYPANEL+V%20LOCK%20ON"
573
706
  COMMAND_GRAPHIC_EQ = "/goform/formiPhoneAppDirect.xml?PSGEQ%20{mode}"
574
707
  COMMAND_HEADPHONE_EQ = "/goform/formiPhoneAppDirect.xml?PSHEQ%20{mode}"
708
+ COMMAND_DENON_HDMI_CEC_ON = "/goform/formiPhoneAppDirect.xml?RCKSK0410826"
709
+ COMMAND_DENON_HDMI_CEC_OFF = "/goform/formiPhoneAppDirect.xml?RCKSK0410827"
710
+ COMMAND_MARANTZ_HDMI_CEC_ON = "/goform/formiPhoneAppDirect.xml?RCRC51608408"
711
+ COMMAND_MARANTZ_HDMI_CEC_OFF = "/goform/formiPhoneAppDirect.xml?RCRC51608409"
712
+ COMMAND_MDAX = "/goform/formiPhoneAppDirect.xml?PSMDAX%20{mode}" # Marantz Only
713
+ COMMAND_DAC_FILTER = "/goform/formiPhoneAppDirect.xml?PSDACFIL%20{mode}" # Marantz Only
714
+ COMMAND_ILLUMINATION = "/goform/formiPhoneAppDirect.xml?ILB%20{mode}" # Marantz Only
715
+ COMMAND_AUTO_LIP_SYNC = (
716
+ "/goform/formiPhoneAppDirect.xml?SSHOSALS%20{mode}" # Marantz Only
717
+ )
718
+ COMMAND_DOLBY_ATMOS_TOGGLE_DENON = "/goform/formiPhoneAppDirect.xml?RCKSK0410348"
719
+ COMMAND_DOLBY_ATMOS_TOGGLE_MARANTZ = "/goform/formiPhoneAppDirect.xml?RCRC51606425"
720
+ COMMAND_PAGE_UP_DENON = "/goform/formiPhoneAppDirect.xml?RCKSK0410945"
721
+ COMMAND_PAGE_DOWN_DENON = "/goform/formiPhoneAppDirect.xml?RCKSK0410946"
722
+ COMMAND_PAGE_UP_MARANTZ = "/goform/formiPhoneAppDirect.xml?RCRC52708105"
723
+ COMMAND_PAGE_DOWN_MARANTZ = "/goform/formiPhoneAppDirect.xml?RCRC52708005"
724
+ COMMAND_INPUT_MODE_SELECT_DENON = "/goform/formiPhoneAppDirect.xml?RCKSK0410352"
725
+ COMMAND_INPUT_MODE_AUTO_DENON = "/goform/formiPhoneAppDirect.xml?RCKSK0410358"
726
+ COMMAND_INPUT_MODE_HDMI_DENON = "/goform/formiPhoneAppDirect.xml?RCKSK0410357"
727
+ COMMAND_INPUT_MODE_DIGITAL_DENON = "/goform/formiPhoneAppDirect.xml?RCKSK0410359"
728
+ COMMAND_INPUT_MODE_ANALOG_DENON = "/goform/formiPhoneAppDirect.xml?RCKSK0410353"
729
+ COMMAND_INPUT_MODE_SELECT_MARANTZ = "/goform/formiPhoneAppDirect.xml?RCRC51600101"
730
+ COMMAND_INPUT_MODE_AUTO_MARANTZ = "/goform/formiPhoneAppDirect.xml?RCRC51600115"
731
+ COMMAND_INPUT_MODE_HDMI_MARANTZ = "/goform/formiPhoneAppDirect.xml?RCRC51600116"
732
+ COMMAND_INPUT_MODE_DIGITAL_MARANTZ = "/goform/formiPhoneAppDirect.xml?RCRC51600117"
733
+ COMMAND_INPUT_MODE_ANALOG_MARANTZ = "/goform/formiPhoneAppDirect.xml?RCRC51600118"
575
734
 
576
735
  # Zone 2 URLs
577
736
  STATUS_Z2_URL = "/goform/formZone2_Zone2XmlStatus.xml"
@@ -618,7 +777,7 @@ DENONAVR_URLS = ReceiverURLs(
618
777
  command_sel_sound_mode=COMMAND_SEL_SM_URL,
619
778
  command_neural_x_on_off=COMMAND_NEURAL_X_ON_OFF,
620
779
  command_imax_auto_off=COMMAND_IMAX_AUTO_OFF,
621
- command_imax_audio_settings=COMMAND_IMAX_AUTO_OFF,
780
+ command_imax_audio_settings=COMMAND_IMAX_AUDIO_SETTINGS,
622
781
  command_imax_hpf=COMMAND_IMAX_HPF,
623
782
  command_imax_lpf=COMMAND_IMAX_LPF,
624
783
  command_imax_subwoofer_mode=COMMAND_IMAX_SUBWOOFER_MODE,
@@ -628,6 +787,7 @@ DENONAVR_URLS = ReceiverURLs(
628
787
  command_set_all_zone_stereo=COMMAND_SET_ZST_URL,
629
788
  command_pause=COMMAND_PAUSE,
630
789
  command_play=COMMAND_PLAY,
790
+ command_stop=COMMAND_STOP,
631
791
  command_cusor_up=COMMAND_CURSOR_UP,
632
792
  command_cusor_down=COMMAND_CURSOR_DOWN,
633
793
  command_cusor_left=COMMAND_CURSOR_LEFT,
@@ -658,14 +818,14 @@ DENONAVR_URLS = ReceiverURLs(
658
818
  command_dirac_filter=COMMAND_DIRAC_FILTER,
659
819
  command_eco_mode=COMMAND_ECO_MODE,
660
820
  command_lfc=COMMAND_LFC,
661
- command_containment_amount=COMMAND_CONTAMINATION_AMOUNT,
821
+ command_containment_amount=COMMAND_CONTAINMENT_AMOUNT,
662
822
  command_loudness_management=COMMAND_LOUDNESS_MANAGEMENT,
663
823
  command_bass_sync=COMMAND_BASS_SYNC,
664
824
  command_dialog_enhancer=COMMAND_DIALOG_ENHANCER,
665
825
  command_hdmi_output=COMMAND_HDMI_OUTPUT,
666
826
  command_hdmi_audio_decode=COMMAND_HDMI_AUDIO_DECODE,
667
827
  command_quick_select_mode=COMMAND_QUICK_SELECT_MODE,
668
- command_quick_select_memory=COMMAND_QUICK_SELECT_MODE,
828
+ command_quick_select_memory=COMMAND_QUICK_SELECT_MEMORY,
669
829
  command_smart_select_mode=COMMAND_SMART_SELECT_MODE, # Marantz
670
830
  command_smart_select_memory=COMMAND_SMART_SELECT_MEMORY, # Marantz
671
831
  command_auto_standby=COMMAND_AUTO_STANDBY,
@@ -690,6 +850,30 @@ DENONAVR_URLS = ReceiverURLs(
690
850
  command_panel_and_volume_lock=COMMAND_PANEL_AND_VOLUME_LOCK,
691
851
  command_graphic_eq=COMMAND_GRAPHIC_EQ,
692
852
  command_headphone_eq=COMMAND_HEADPHONE_EQ,
853
+ command_denon_hdmi_cec_on=COMMAND_DENON_HDMI_CEC_ON,
854
+ command_denon_hdmi_cec_off=COMMAND_DENON_HDMI_CEC_OFF,
855
+ command_marantz_hdmi_cec_on=COMMAND_MARANTZ_HDMI_CEC_ON,
856
+ command_marantz_hdmi_cec_off=COMMAND_MARANTZ_HDMI_CEC_OFF,
857
+ command_mdax=COMMAND_MDAX, # Marantz Only
858
+ command_dac_filter=COMMAND_DAC_FILTER, # Marantz Only
859
+ command_illumination=COMMAND_ILLUMINATION, # Marantz Only
860
+ command_auto_lip_sync=COMMAND_AUTO_LIP_SYNC, # Marantz Only
861
+ command_dolby_atmos_toggle_denon=COMMAND_DOLBY_ATMOS_TOGGLE_DENON,
862
+ command_dolby_atmos_toggle_marantz=COMMAND_DOLBY_ATMOS_TOGGLE_MARANTZ,
863
+ command_page_up_denon=COMMAND_PAGE_UP_DENON,
864
+ command_page_down_denon=COMMAND_PAGE_DOWN_DENON,
865
+ command_page_up_marantz=COMMAND_PAGE_UP_MARANTZ,
866
+ command_page_down_marantz=COMMAND_PAGE_DOWN_MARANTZ,
867
+ command_input_mode_select_denon=COMMAND_INPUT_MODE_SELECT_DENON,
868
+ command_input_mode_auto_denon=COMMAND_INPUT_MODE_AUTO_DENON,
869
+ command_input_mode_hdmi_denon=COMMAND_INPUT_MODE_HDMI_DENON,
870
+ command_input_mode_digital_denon=COMMAND_INPUT_MODE_DIGITAL_DENON,
871
+ command_input_mode_analog_denon=COMMAND_INPUT_MODE_ANALOG_DENON,
872
+ command_input_mode_select_marantz=COMMAND_INPUT_MODE_SELECT_MARANTZ,
873
+ command_input_mode_auto_marantz=COMMAND_INPUT_MODE_AUTO_MARANTZ,
874
+ command_input_mode_hdmi_marantz=COMMAND_INPUT_MODE_HDMI_MARANTZ,
875
+ command_input_mode_digital_marantz=COMMAND_INPUT_MODE_DIGITAL_MARANTZ,
876
+ command_input_mode_analog_marantz=COMMAND_INPUT_MODE_ANALOG_MARANTZ,
693
877
  )
694
878
 
695
879
  ZONE2_URLS = ReceiverURLs(
@@ -723,6 +907,7 @@ ZONE2_URLS = ReceiverURLs(
723
907
  command_set_all_zone_stereo=COMMAND_SET_ZST_URL,
724
908
  command_pause=COMMAND_PAUSE,
725
909
  command_play=COMMAND_PLAY,
910
+ command_stop=COMMAND_STOP,
726
911
  command_cusor_up=COMMAND_CURSOR_UP,
727
912
  command_cusor_down=COMMAND_CURSOR_DOWN,
728
913
  command_cusor_left=COMMAND_CURSOR_LEFT,
@@ -753,7 +938,7 @@ ZONE2_URLS = ReceiverURLs(
753
938
  command_dirac_filter=COMMAND_DIRAC_FILTER,
754
939
  command_eco_mode=COMMAND_ECO_MODE,
755
940
  command_lfc=COMMAND_LFC,
756
- command_containment_amount=COMMAND_CONTAMINATION_AMOUNT,
941
+ command_containment_amount=COMMAND_CONTAINMENT_AMOUNT,
757
942
  command_loudness_management=COMMAND_LOUDNESS_MANAGEMENT,
758
943
  command_bass_sync=COMMAND_BASS_SYNC,
759
944
  command_dialog_enhancer=COMMAND_DIALOG_ENHANCER,
@@ -785,6 +970,30 @@ ZONE2_URLS = ReceiverURLs(
785
970
  command_panel_and_volume_lock=COMMAND_PANEL_AND_VOLUME_LOCK,
786
971
  command_graphic_eq=COMMAND_GRAPHIC_EQ,
787
972
  command_headphone_eq=COMMAND_HEADPHONE_EQ,
973
+ command_denon_hdmi_cec_on=COMMAND_DENON_HDMI_CEC_ON,
974
+ command_denon_hdmi_cec_off=COMMAND_DENON_HDMI_CEC_OFF,
975
+ command_marantz_hdmi_cec_on=COMMAND_MARANTZ_HDMI_CEC_ON,
976
+ command_marantz_hdmi_cec_off=COMMAND_MARANTZ_HDMI_CEC_OFF,
977
+ command_mdax=COMMAND_MDAX, # Marantz Only
978
+ command_dac_filter=COMMAND_DAC_FILTER, # Marantz Only
979
+ command_illumination=COMMAND_ILLUMINATION, # Marantz Only
980
+ command_auto_lip_sync=COMMAND_AUTO_LIP_SYNC, # Marantz Only
981
+ command_dolby_atmos_toggle_denon=COMMAND_DOLBY_ATMOS_TOGGLE_DENON,
982
+ command_dolby_atmos_toggle_marantz=COMMAND_DOLBY_ATMOS_TOGGLE_MARANTZ,
983
+ command_page_up_denon=COMMAND_PAGE_UP_DENON,
984
+ command_page_down_denon=COMMAND_PAGE_DOWN_DENON,
985
+ command_page_up_marantz=COMMAND_PAGE_UP_MARANTZ,
986
+ command_page_down_marantz=COMMAND_PAGE_DOWN_MARANTZ,
987
+ command_input_mode_select_denon=COMMAND_INPUT_MODE_SELECT_DENON,
988
+ command_input_mode_auto_denon=COMMAND_INPUT_MODE_AUTO_DENON,
989
+ command_input_mode_hdmi_denon=COMMAND_INPUT_MODE_HDMI_DENON,
990
+ command_input_mode_digital_denon=COMMAND_INPUT_MODE_DIGITAL_DENON,
991
+ command_input_mode_analog_denon=COMMAND_INPUT_MODE_ANALOG_DENON,
992
+ command_input_mode_select_marantz=COMMAND_INPUT_MODE_SELECT_MARANTZ,
993
+ command_input_mode_auto_marantz=COMMAND_INPUT_MODE_AUTO_MARANTZ,
994
+ command_input_mode_hdmi_marantz=COMMAND_INPUT_MODE_HDMI_MARANTZ,
995
+ command_input_mode_digital_marantz=COMMAND_INPUT_MODE_DIGITAL_MARANTZ,
996
+ command_input_mode_analog_marantz=COMMAND_INPUT_MODE_ANALOG_MARANTZ,
788
997
  )
789
998
 
790
999
  ZONE3_URLS = ReceiverURLs(
@@ -818,6 +1027,7 @@ ZONE3_URLS = ReceiverURLs(
818
1027
  command_set_all_zone_stereo=COMMAND_SET_ZST_URL,
819
1028
  command_pause=COMMAND_PAUSE,
820
1029
  command_play=COMMAND_PLAY,
1030
+ command_stop=COMMAND_STOP,
821
1031
  command_cusor_up=COMMAND_CURSOR_UP,
822
1032
  command_cusor_down=COMMAND_CURSOR_DOWN,
823
1033
  command_cusor_left=COMMAND_CURSOR_LEFT,
@@ -848,7 +1058,7 @@ ZONE3_URLS = ReceiverURLs(
848
1058
  command_dirac_filter=COMMAND_DIRAC_FILTER,
849
1059
  command_eco_mode=COMMAND_ECO_MODE,
850
1060
  command_lfc=COMMAND_LFC,
851
- command_containment_amount=COMMAND_CONTAMINATION_AMOUNT,
1061
+ command_containment_amount=COMMAND_CONTAINMENT_AMOUNT,
852
1062
  command_loudness_management=COMMAND_LOUDNESS_MANAGEMENT,
853
1063
  command_bass_sync=COMMAND_BASS_SYNC,
854
1064
  command_dialog_enhancer=COMMAND_DIALOG_ENHANCER,
@@ -880,6 +1090,30 @@ ZONE3_URLS = ReceiverURLs(
880
1090
  command_panel_and_volume_lock=COMMAND_PANEL_AND_VOLUME_LOCK,
881
1091
  command_graphic_eq=COMMAND_GRAPHIC_EQ,
882
1092
  command_headphone_eq=COMMAND_HEADPHONE_EQ,
1093
+ command_denon_hdmi_cec_on=COMMAND_DENON_HDMI_CEC_ON,
1094
+ command_denon_hdmi_cec_off=COMMAND_DENON_HDMI_CEC_OFF,
1095
+ command_marantz_hdmi_cec_on=COMMAND_MARANTZ_HDMI_CEC_ON,
1096
+ command_marantz_hdmi_cec_off=COMMAND_MARANTZ_HDMI_CEC_OFF,
1097
+ command_mdax=COMMAND_MDAX, # Marantz Only
1098
+ command_dac_filter=COMMAND_DAC_FILTER, # Marantz Only
1099
+ command_illumination=COMMAND_ILLUMINATION, # Marantz Only
1100
+ command_auto_lip_sync=COMMAND_AUTO_LIP_SYNC, # Marantz Only
1101
+ command_dolby_atmos_toggle_denon=COMMAND_DOLBY_ATMOS_TOGGLE_DENON,
1102
+ command_dolby_atmos_toggle_marantz=COMMAND_DOLBY_ATMOS_TOGGLE_MARANTZ,
1103
+ command_page_up_denon=COMMAND_PAGE_UP_DENON,
1104
+ command_page_down_denon=COMMAND_PAGE_DOWN_DENON,
1105
+ command_page_up_marantz=COMMAND_PAGE_UP_MARANTZ,
1106
+ command_page_down_marantz=COMMAND_PAGE_DOWN_MARANTZ,
1107
+ command_input_mode_select_denon=COMMAND_INPUT_MODE_SELECT_DENON,
1108
+ command_input_mode_auto_denon=COMMAND_INPUT_MODE_AUTO_DENON,
1109
+ command_input_mode_hdmi_denon=COMMAND_INPUT_MODE_HDMI_DENON,
1110
+ command_input_mode_digital_denon=COMMAND_INPUT_MODE_DIGITAL_DENON,
1111
+ command_input_mode_analog_denon=COMMAND_INPUT_MODE_ANALOG_DENON,
1112
+ command_input_mode_select_marantz=COMMAND_INPUT_MODE_SELECT_MARANTZ,
1113
+ command_input_mode_auto_marantz=COMMAND_INPUT_MODE_AUTO_MARANTZ,
1114
+ command_input_mode_hdmi_marantz=COMMAND_INPUT_MODE_HDMI_MARANTZ,
1115
+ command_input_mode_digital_marantz=COMMAND_INPUT_MODE_DIGITAL_MARANTZ,
1116
+ command_input_mode_analog_marantz=COMMAND_INPUT_MODE_ANALOG_MARANTZ,
883
1117
  )
884
1118
 
885
1119
  # Telnet Events
@@ -925,6 +1159,7 @@ TELNET_EVENTS = {
925
1159
  ALL_ZONE_TELNET_EVENTS = {
926
1160
  "DIM",
927
1161
  "HD",
1162
+ "ILB", # Marantz Only
928
1163
  "NS",
929
1164
  "NSA",
930
1165
  "NSE",
@@ -961,6 +1196,7 @@ DENONAVR_TELNET_COMMANDS = TelnetCommands(
961
1196
  command_set_all_zone_stereo="MN",
962
1197
  command_pause="NS9B",
963
1198
  command_play="NS9A",
1199
+ command_stop="NS9C",
964
1200
  command_multieq="PSMULTEQ:",
965
1201
  command_dynamiceq="PSDYNEQ ",
966
1202
  command_reflevoffset="PSREFLEV ",
@@ -1030,6 +1266,30 @@ DENONAVR_TELNET_COMMANDS = TelnetCommands(
1030
1266
  command_panel_and_volume_lock="SYPANEL+V LOCK ON",
1031
1267
  command_graphic_eq="PSGEQ {mode}",
1032
1268
  command_headphone_eq="PSHEQ {mode}",
1269
+ command_denon_hdmi_cec_on="RCKSK0410826",
1270
+ command_denon_hdmi_cec_off="RCKSK0410827",
1271
+ command_marantz_hdmi_cec_on="RCRC51608408",
1272
+ command_marantz_hdmi_cec_off="RCRC51608409",
1273
+ command_mdax="PSMDAX {mode}", # Marantz Only
1274
+ command_dac_filter="PSDACFIL {mode}", # Marantz Only
1275
+ command_illumination="ILB {mode}", # Marantz Only
1276
+ command_auto_lip_sync="SSHOSALS {mode}", # Marantz Only
1277
+ command_dolby_atmos_toggle_denon="RCKSK0410348",
1278
+ command_dolby_atmos_toggle_marantz="RCRC51606425",
1279
+ command_page_up_denon="RCKSK0410945",
1280
+ command_page_down_denon="RCKSK0410946",
1281
+ command_page_up_marantz="RCRC52708105",
1282
+ command_page_down_marantz="RCRC52708005",
1283
+ command_input_mode_select_denon="RCKSK0410352",
1284
+ command_input_mode_auto_denon="RCKSK0410358",
1285
+ command_input_mode_hdmi_denon="RCKSK0410357",
1286
+ command_input_mode_digital_denon="RCKSK0410359",
1287
+ command_input_mode_analog_denon="RCKSK0410353",
1288
+ command_input_mode_select_marantz="RCRC51600101",
1289
+ command_input_mode_auto_marantz="RCRC51600115",
1290
+ command_input_mode_hdmi_marantz="RCRC51600116",
1291
+ command_input_mode_digital_marantz="RCRC51600117",
1292
+ command_input_mode_analog_marantz="RCRC51600118",
1033
1293
  )
1034
1294
 
1035
1295
  ZONE2_TELNET_COMMANDS = TelnetCommands(
@@ -1054,6 +1314,7 @@ ZONE2_TELNET_COMMANDS = TelnetCommands(
1054
1314
  command_set_all_zone_stereo="MN",
1055
1315
  command_pause="NS9B",
1056
1316
  command_play="NS9A",
1317
+ command_stop="NS9C",
1057
1318
  command_multieq="PSMULTEQ:",
1058
1319
  command_dynamiceq="PSDYNEQ ",
1059
1320
  command_reflevoffset="PSREFLEV ",
@@ -1123,6 +1384,30 @@ ZONE2_TELNET_COMMANDS = TelnetCommands(
1123
1384
  command_panel_and_volume_lock="SYPANEL+V LOCK ON",
1124
1385
  command_graphic_eq="PSGEQ {mode}",
1125
1386
  command_headphone_eq="PSHEQ {mode}",
1387
+ command_denon_hdmi_cec_on="RCKSK0410826",
1388
+ command_denon_hdmi_cec_off="RCKSK0410827",
1389
+ command_marantz_hdmi_cec_on="RCRC51608408",
1390
+ command_marantz_hdmi_cec_off="RCRC51608409",
1391
+ command_mdax="PSMDAX {mode}", # Marantz Only
1392
+ command_dac_filter="PSDACFIL {mode}", # Marantz Only
1393
+ command_illumination="ILB {mode}", # Marantz Only
1394
+ command_auto_lip_sync="SSHOSALS {mode}", # Marantz Only
1395
+ command_dolby_atmos_toggle_denon="RCKSK0410348",
1396
+ command_dolby_atmos_toggle_marantz="RCRC51606425",
1397
+ command_page_up_denon="RCKSK0410945",
1398
+ command_page_down_denon="RCKSK0410946",
1399
+ command_page_up_marantz="RCRC52708105",
1400
+ command_page_down_marantz="RCRC52708005",
1401
+ command_input_mode_select_denon="RCKSK0410352",
1402
+ command_input_mode_auto_denon="RCKSK0410358",
1403
+ command_input_mode_hdmi_denon="RCKSK0410357",
1404
+ command_input_mode_digital_denon="RCKSK0410359",
1405
+ command_input_mode_analog_denon="RCKSK0410353",
1406
+ command_input_mode_select_marantz="RCRC51600101",
1407
+ command_input_mode_auto_marantz="RCRC51600115",
1408
+ command_input_mode_hdmi_marantz="RCRC51600116",
1409
+ command_input_mode_digital_marantz="RCRC51600117",
1410
+ command_input_mode_analog_marantz="RCRC51600118",
1126
1411
  )
1127
1412
 
1128
1413
  ZONE3_TELNET_COMMANDS = TelnetCommands(
@@ -1147,6 +1432,7 @@ ZONE3_TELNET_COMMANDS = TelnetCommands(
1147
1432
  command_set_all_zone_stereo="MN",
1148
1433
  command_pause="NS9B",
1149
1434
  command_play="NS9A",
1435
+ command_stop="NS9C",
1150
1436
  command_multieq="PSMULTEQ:",
1151
1437
  command_dynamiceq="PSDYNEQ ",
1152
1438
  command_reflevoffset="PSREFLEV ",
@@ -1216,6 +1502,30 @@ ZONE3_TELNET_COMMANDS = TelnetCommands(
1216
1502
  command_panel_and_volume_lock="SYPANEL+V LOCK ON",
1217
1503
  command_graphic_eq="PSGEQ {mode}",
1218
1504
  command_headphone_eq="PSHEQ {mode}",
1505
+ command_denon_hdmi_cec_on="RCKSK0410826",
1506
+ command_denon_hdmi_cec_off="RCKSK0410827",
1507
+ command_marantz_hdmi_cec_on="RCRC51608408",
1508
+ command_marantz_hdmi_cec_off="RCRC51608409",
1509
+ command_mdax="PSMDAX {mode}", # Marantz Only
1510
+ command_dac_filter="PSDACFIL {mode}", # Marantz Only
1511
+ command_illumination="ILB {mode}", # Marantz Only
1512
+ command_auto_lip_sync="SSHOSALS {mode}", # Marantz Only
1513
+ command_dolby_atmos_toggle_denon="RCKSK0410348",
1514
+ command_dolby_atmos_toggle_marantz="RCRC51606425",
1515
+ command_page_up_denon="RCKSK0410945",
1516
+ command_page_down_denon="RCKSK0410946",
1517
+ command_page_up_marantz="RCRC52708105",
1518
+ command_page_down_marantz="RCRC52708005",
1519
+ command_input_mode_select_denon="RCKSK0410352",
1520
+ command_input_mode_auto_denon="RCKSK0410358",
1521
+ command_input_mode_hdmi_denon="RCKSK0410357",
1522
+ command_input_mode_digital_denon="RCKSK0410359",
1523
+ command_input_mode_analog_denon="RCKSK0410353",
1524
+ command_input_mode_select_marantz="RCRC51600101",
1525
+ command_input_mode_auto_marantz="RCRC51600115",
1526
+ command_input_mode_hdmi_marantz="RCRC51600116",
1527
+ command_input_mode_digital_marantz="RCRC51600117",
1528
+ command_input_mode_analog_marantz="RCRC51600118",
1219
1529
  )
1220
1530
 
1221
1531
  # States
@@ -1227,6 +1537,7 @@ STATE_ON = "on"
1227
1537
  STATE_OFF = "off"
1228
1538
  STATE_PLAYING = "playing"
1229
1539
  STATE_PAUSED = "paused"
1540
+ STATE_STOPPED = "stopped"
1230
1541
  SETTINGS_MENU_ON = "ON"
1231
1542
  SETTINGS_MENU_OFF = "OFF"
1232
1543
  SETTINGS_MENU_STATES = {SETTINGS_MENU_ON, SETTINGS_MENU_OFF}
@@ -1235,6 +1546,7 @@ DIMER_DIM = "DIM"
1235
1546
  DIMER_DARK = "DAR"
1236
1547
  DIMER_OFF = "OFF"
1237
1548
  DIMMER_STATES = {DIMER_BRIGHT, DIMER_DIM, DIMER_DARK, DIMER_OFF}
1549
+ NETAUDIO_PLAYING = "Now Playing"
1238
1550
 
1239
1551
  # Zones
1240
1552
  ALL_ZONES = "All"
@@ -1253,7 +1565,12 @@ ZONE2_ZONE3_NAME = {ZONE2: None, ZONE3: None}
1253
1565
  APPCOMMAND_CMD_TEXT = "cmd_text"
1254
1566
  APPCOMMAND_NAME = "name"
1255
1567
 
1256
- # Audyssey parameter
1568
+ # _MAP dictionaries map receiver outputs to denonavr properties
1569
+ # _MAP_REVERSE dictionaries map them the opposite way
1570
+
1571
+ MultiEQModes = Literal["Off", "Flat", "L/R Bypass", "Reference", "Manual"]
1572
+ """Multi EQ modes."""
1573
+
1257
1574
  MULTI_EQ_MAP_APPCOMMAND = {"0": "Off", "1": "Flat", "2": "L/R Bypass", "3": "Reference"}
1258
1575
  MULTI_EQ_MAP_TELNET = {
1259
1576
  "OFF": "Off",
@@ -1263,21 +1580,27 @@ MULTI_EQ_MAP_TELNET = {
1263
1580
  "MANUAL": "Manual",
1264
1581
  }
1265
1582
  MULTI_EQ_MAP = {**MULTI_EQ_MAP_APPCOMMAND, **MULTI_EQ_MAP_TELNET}
1266
- MULTI_EQ_MAP_LABELS_APPCOMMAND = {
1583
+ MULTI_EQ_MAP_REVERSE_APPCOMMAND = {
1267
1584
  value: key for key, value in MULTI_EQ_MAP_APPCOMMAND.items()
1268
1585
  }
1269
- MULTI_EQ_MAP_LABELS_TELNET = {value: key for key, value in MULTI_EQ_MAP_TELNET.items()}
1586
+ MULTI_EQ_MAP_REVERSE_TELNET = {value: key for key, value in MULTI_EQ_MAP_TELNET.items()}
1587
+
1588
+ ReferenceLevelOffsets = Literal["0dB", "+5dB", "+10dB", "+15dB"]
1589
+ """Reference Level Offsets."""
1270
1590
 
1271
1591
  REF_LVL_OFFSET_MAP_APPCOMMAND = {"0": "0dB", "1": "+5dB", "2": "+10dB", "3": "+15dB"}
1272
1592
  REF_LVL_OFFSET_MAP_TELNET = {"0": "0dB", "5": "+5dB", "10": "+10dB", "15": "+15dB"}
1273
1593
  REF_LVL_OFFSET_MAP = {**REF_LVL_OFFSET_MAP_APPCOMMAND, **REF_LVL_OFFSET_MAP_TELNET}
1274
- REF_LVL_OFFSET_MAP_LABELS_APPCOMMAND = {
1594
+ REF_LVL_OFFSET_MAP_REVERSE_APPCOMMAND = {
1275
1595
  value: key for key, value in REF_LVL_OFFSET_MAP_APPCOMMAND.items()
1276
1596
  }
1277
- REF_LVL_OFFSET_MAP_LABELS_TELNET = {
1597
+ REF_LVL_OFFSET_MAP_REVERSE_TELNET = {
1278
1598
  value: key for key, value in REF_LVL_OFFSET_MAP_TELNET.items()
1279
1599
  }
1280
1600
 
1601
+ DynamicVolumeSettings = Literal["Off", "Light", "Medium", "Heavy"]
1602
+ """Dynamic Volume Settings."""
1603
+
1281
1604
  DYNAMIC_VOLUME_MAP_APPCOMMAND = {"0": "Off", "1": "Light", "2": "Medium", "3": "Heavy"}
1282
1605
  DYNAMIC_VOLUME_MAP_TELNET = {
1283
1606
  "OFF": "Off",
@@ -1286,10 +1609,10 @@ DYNAMIC_VOLUME_MAP_TELNET = {
1286
1609
  "HEV": "Heavy",
1287
1610
  }
1288
1611
  DYNAMIC_VOLUME_MAP = {**DYNAMIC_VOLUME_MAP_APPCOMMAND, **DYNAMIC_VOLUME_MAP_TELNET}
1289
- DYNAMIC_VOLUME_MAP_LABELS_APPCOMMAND = {
1612
+ DYNAMIC_VOLUME_MAP_REVERSE_APPCOMMAND = {
1290
1613
  value: key for key, value in DYNAMIC_VOLUME_MAP_APPCOMMAND.items()
1291
1614
  }
1292
- DYNAMIC_VOLUME_MAP_LABELS_TELNET = {
1615
+ DYNAMIC_VOLUME_MAP_REVERSE_TELNET = {
1293
1616
  value: key for key, value in DYNAMIC_VOLUME_MAP_TELNET.items()
1294
1617
  }
1295
1618
 
@@ -1297,12 +1620,12 @@ AudioRestorers = Literal["Off", "Low", "Medium", "High"]
1297
1620
  """Audio Restorer settings."""
1298
1621
 
1299
1622
  AUDIO_RESTORER_MAP = {
1300
- "Off": "OFF",
1301
- "Low": "LOW",
1302
- "Medium": "MED",
1303
- "High": "HI",
1623
+ "OFF": "Off",
1624
+ "LOW": "Low",
1625
+ "MED": "Medium",
1626
+ "HI": "High",
1304
1627
  }
1305
- AUDIO_RESTORER_MAP_LABELS = {value: key for key, value in AUDIO_RESTORER_MAP.items()}
1628
+ AUDIO_RESTORER_MAP_REVERSE = {value: key for key, value in AUDIO_RESTORER_MAP.items()}
1306
1629
 
1307
1630
  AuroMatic3DPresets = Literal[
1308
1631
  "Small",
@@ -1314,58 +1637,93 @@ AuroMatic3DPresets = Literal[
1314
1637
  """Auro-Matic 3D Presets."""
1315
1638
 
1316
1639
  AURO_MATIC_3D_PRESET_MAP = {
1317
- "Small": "SMA",
1318
- "Medium": "MED",
1319
- "Large": "LAR",
1320
- "Speech": "SPE",
1321
- "Movie": "MOV",
1640
+ "SMA": "Small",
1641
+ "MED": "Medium",
1642
+ "LAR": "Large",
1643
+ "SPE": "Speech",
1644
+ "MOV": "Movie",
1322
1645
  }
1323
- AURO_MATIC_3D_PRESET_MAP_LABELS = {
1646
+ AURO_MATIC_3D_PRESET_MAP_REVERSE = {
1324
1647
  value: key for key, value in AURO_MATIC_3D_PRESET_MAP.items()
1325
1648
  }
1326
1649
 
1327
1650
  Auro3DModes = Literal["Direct", "Channel Expansion"]
1328
1651
  """Auro 3D Modes."""
1329
1652
 
1330
- AURO_3D_MODE_MAP = {"Direct": "DRCT", "Channel Expansion": "EXP"}
1331
- AURO_3D_MODE_MAP_MAP_LABELS = {value: key for key, value in AURO_3D_MODE_MAP.items()}
1653
+ AURO_3D_MODE_MAP = {"DRCT": "Direct", "EXP": "Channel Expansion"}
1654
+ AURO_3D_MODE_MAP_REVERSE = {value: key for key, value in AURO_3D_MODE_MAP.items()}
1655
+
1656
+ AutoStandbys = Literal["OFF", "15M", "30M", "60M", "2H", "4H", "8H"]
1332
1657
 
1333
- AutoStandbys = Literal["OFF", "15M", "30M", "60M"]
1658
+ AUTO_STANDBY_MAP_APPCOMMAND = {
1659
+ "0": "OFF",
1660
+ "15": "15M",
1661
+ "30": "30M",
1662
+ "60": "60M",
1663
+ "120": "2H",
1664
+ "240": "4H",
1665
+ "480": "8H",
1666
+ }
1667
+ AUTO_STANDBY_MAP_TELNET = {
1668
+ "OFF": "OFF",
1669
+ "15M": "15M",
1670
+ "30M": "30M",
1671
+ "60M": "60M",
1672
+ "2H": "2H",
1673
+ "4H": "4H",
1674
+ "8H": "8H",
1675
+ }
1676
+ AUTO_STANDBY_MAP = {**AUTO_STANDBY_MAP_APPCOMMAND, **AUTO_STANDBY_MAP_TELNET}
1334
1677
 
1335
1678
  BluetoothOutputModes = Literal["Bluetooth + Speakers", "Bluetooth Only"]
1336
1679
  """Bluetooth Output Modes."""
1337
1680
 
1338
1681
  BLUETOOTH_OUTPUT_MODES_MAP = {
1339
- "Bluetooth + Speakers": "SP",
1340
- "Bluetooth Only": "BT",
1682
+ "SP": "Bluetooth + Speakers",
1683
+ "BT": "Bluetooth Only",
1341
1684
  }
1342
- BLUETOOTH_OUTPUT_MAP_LABELS = {
1685
+ BLUETOOTH_OUTPUT_MODES_MAP_REVERSE = {
1343
1686
  value: key for key, value in BLUETOOTH_OUTPUT_MODES_MAP.items()
1344
1687
  }
1345
1688
 
1346
- DIMMER_MODE_MAP = {
1347
- "Off": DIMER_OFF,
1348
- "Dark": DIMER_DARK,
1349
- "Dim": DIMER_DIM,
1350
- "Bright": DIMER_BRIGHT,
1689
+ DIMMER_MODE_MAP_APPCOMMAND = {
1690
+ "0": "Off",
1691
+ "1": "Dark",
1692
+ "2": "Dim",
1693
+ "3": "Bright",
1694
+ }
1695
+ DIMMER_MODE_MAP_TELNET = {
1696
+ DIMER_OFF: "Off",
1697
+ DIMER_DARK: "Dark",
1698
+ DIMER_DIM: "Dim",
1699
+ DIMER_BRIGHT: "Bright",
1351
1700
  }
1352
- DIMMER_MODE_MAP_LABELS = {value: key for key, value in DIMMER_MODE_MAP.items()}
1701
+ DIMMER_MODE_MAP = {**DIMMER_MODE_MAP_TELNET, **DIMMER_MODE_MAP_APPCOMMAND}
1702
+ # Telnet literals are correct for telnet and HTTP setters
1703
+ DIMMER_MODE_MAP_REVERSE = {value: key for key, value in DIMMER_MODE_MAP_TELNET.items()}
1353
1704
 
1354
1705
  DimmerModes = Literal["Off", "Dark", "Dim", "Bright"]
1355
1706
  """Dimmer Modes."""
1356
1707
 
1357
- DIRAC_FILTER_MAP = {"Off": "OFF", "Slot 1": "1", "Slot 2": "2", "Slot 3": "3"}
1358
- DIRAC_FILTER_MAP_LABELS = {value: key for key, value in DIRAC_FILTER_MAP.items()}
1708
+ DIRAC_FILTER_MAP = {"OFF": "Off", "1": "Slot 1", "2": "Slot 2", "3": "Slot 3"}
1709
+ DIRAC_FILTER_MAP_REVERSE = {value: key for key, value in DIRAC_FILTER_MAP.items()}
1359
1710
 
1360
1711
  DiracFilters = Literal["Slot 1", "Slot 2", "Slot 3", "Off"]
1361
1712
  """Dirac Filters."""
1362
1713
 
1363
- ECO_MODE_MAP = {
1364
- "On": "ON",
1365
- "Auto": "AUTO",
1366
- "Off": "OFF",
1714
+ ECO_MODE_MAP_APPCOMMAND = {
1715
+ "0": "Off",
1716
+ "1": "On",
1717
+ "2": "Auto",
1367
1718
  }
1368
- ECO_MODE_MAP_LABELS = {value: key for key, value in ECO_MODE_MAP.items()}
1719
+ ECO_MODE_MAP_TELNET = {
1720
+ "ON": "On",
1721
+ "AUTO": "Auto",
1722
+ "OFF": "Off",
1723
+ }
1724
+ ECO_MODE_MAP = {**ECO_MODE_MAP_APPCOMMAND, **ECO_MODE_MAP_TELNET}
1725
+ # Telnet literals are correct for telnet and HTTP setters
1726
+ ECO_MODE_MAP_REVERSE = {value: key for key, value in ECO_MODE_MAP_TELNET.items()}
1369
1727
 
1370
1728
  EcoModes = Literal["On", "Auto", "Off"]
1371
1729
  """Eco Modes."""
@@ -1384,17 +1742,17 @@ EffectSpeakers = Literal[
1384
1742
  """Effect Speakers."""
1385
1743
 
1386
1744
  EFFECT_SPEAKER_SELECTION_MAP = {
1387
- "Floor": "FL",
1388
- "Front": "FR",
1389
- "Front Height": "FH",
1390
- "Front Wide": "FW",
1391
- "Front Height + Front Wide": "HW",
1392
- "Height + Floor": "HF",
1393
- "Surround Back": "SB",
1394
- "Surround Back + Front Height": "BH",
1395
- "Surround Back + Front Wide": "BW",
1745
+ "FL": "Floor",
1746
+ "FR": "Front",
1747
+ "FH": "Front Height",
1748
+ "FW": "Front Wide",
1749
+ "HW": "Front Height + Front Wide",
1750
+ "HF": "Height + Floor",
1751
+ "SB": "Surround Back",
1752
+ "BH": "Surround Back + Front Height",
1753
+ "BW": "Surround Back + Front Wide",
1396
1754
  }
1397
- EFFECT_SPEAKER_SELECTION_MAP_LABELS = {
1755
+ EFFECT_SPEAKER_SELECTION_MAP_REVERSE = {
1398
1756
  value: key for key, value in EFFECT_SPEAKER_SELECTION_MAP.items()
1399
1757
  }
1400
1758
 
@@ -1402,15 +1760,15 @@ DRCs = Literal["AUTO", "LOW", "MID", "HI", "OFF"]
1402
1760
  """Dynamic Range Control (DRC) Settings."""
1403
1761
 
1404
1762
  HDMI_OUTPUT_MAP = {
1405
- "Auto": "AUTO",
1406
- "HDMI1": "1",
1407
- "HDMI2": "2",
1408
- }
1409
- HDMI_OUTPUT_MAP_LABELS = {
1410
1763
  "MONIAUTO": "Auto",
1411
1764
  "MONI1": "HDMI1",
1412
1765
  "MONI2": "HDMI2",
1413
1766
  }
1767
+ HDMI_OUTPUT_MAP_REVERSE = {
1768
+ "Auto": "AUTO",
1769
+ "HDMI1": "1",
1770
+ "HDMI2": "2",
1771
+ }
1414
1772
 
1415
1773
  HDMIOutputs = Literal["Auto", "HDMI1", "HDMI2"]
1416
1774
  """HDMI Output Modes."""
@@ -1421,56 +1779,55 @@ Subwoofers = Literal["Subwoofer", "Subwoofer 2", "Subwoofer 3", "Subwoofer 4"]
1421
1779
  """Subwoofers."""
1422
1780
 
1423
1781
  SUBWOOFERS_MAP = {
1424
- "Subwoofer": "",
1425
- "Subwoofer 2": "2",
1426
- "Subwoofer 3": "3",
1427
- "Subwoofer 4": "4",
1428
- }
1429
- """Subwoofers."""
1430
-
1431
- SUBWOOFERS_MAP_LABELS = {
1432
1782
  "SWL": "Subwoofer",
1433
1783
  "SWL2": "Subwoofer 2",
1434
1784
  "SWL3": "Subwoofer 3",
1435
1785
  "SWL4": "Subwoofer 4",
1436
1786
  }
1437
1787
 
1788
+ SUBWOOFERS_MAP_REVERSE = {
1789
+ "Subwoofer": "",
1790
+ "Subwoofer 2": "2",
1791
+ "Subwoofer 3": "3",
1792
+ "Subwoofer 4": "4",
1793
+ }
1794
+
1438
1795
  CHANNEL_MAP = {
1439
- "Front Left": "FL",
1440
- "Front Right": "FR",
1441
- "Center": "C",
1442
- "Subwoofer": "SW",
1443
- "Subwoofer 2": "SW2",
1444
- "Subwoofer 3": "SW3",
1445
- "Subwoofer 4": "SW4",
1446
- "Surround Left": "SL",
1447
- "Surround Right": "SR",
1448
- "Surround Back Left": "SBL",
1449
- "Surround Back Right": "SBR",
1450
- "Front Height Left": "FHL",
1451
- "Front Height Right": "FHR",
1452
- "Front Wide Left": "FWL",
1453
- "Front Wide Right": "FWR",
1454
- "Top Front Left": "TFL",
1455
- "Top Front Right": "TFR",
1456
- "Top Middle Left": "TML",
1457
- "Top Middle Right": "TMR",
1458
- "Top Rear Left": "TRL",
1459
- "Top Rear Right": "TRR",
1460
- "Rear Height Left": "RHL",
1461
- "Rear Height Right": "RHR",
1462
- "Front Dolby Left": "FDL",
1463
- "Front Dolby Right": "FDR",
1464
- "Surround Dolby Left": "SDL",
1465
- "Surround Dolby Right": "SDR",
1466
- "Back Dolby Left": "BDL",
1467
- "Back Dolby Right": "BDR",
1468
- "Surround Height Left": "SHL",
1469
- "Surround Height Right": "SHR",
1470
- "Top Surround": "TS",
1471
- "Center Height": "CH",
1796
+ "FL": "Front Left",
1797
+ "FR": "Front Right",
1798
+ "C": "Center",
1799
+ "SW": "Subwoofer",
1800
+ "SW2": "Subwoofer 2",
1801
+ "SW3": "Subwoofer 3",
1802
+ "SW4": "Subwoofer 4",
1803
+ "SL": "Surround Left",
1804
+ "SR": "Surround Right",
1805
+ "SBL": "Surround Back Left",
1806
+ "SBR": "Surround Back Right",
1807
+ "FHL": "Front Height Left",
1808
+ "FHR": "Front Height Right",
1809
+ "FWL": "Front Wide Left",
1810
+ "FWR": "Front Wide Right",
1811
+ "TFL": "Top Front Left",
1812
+ "TFR": "Top Front Right",
1813
+ "TML": "Top Middle Left",
1814
+ "TMR": "Top Middle Right",
1815
+ "TRL": "Top Rear Left",
1816
+ "TRR": "Top Rear Right",
1817
+ "RHL": "Rear Height Left",
1818
+ "RHR": "Rear Height Right",
1819
+ "FDL": "Front Dolby Left",
1820
+ "FDR": "Front Dolby Right",
1821
+ "SDL": "Surround Dolby Left",
1822
+ "SDR": "Surround Dolby Right",
1823
+ "BDL": "Back Dolby Left",
1824
+ "BDR": "Back Dolby Right",
1825
+ "SHL": "Surround Height Left",
1826
+ "SHR": "Surround Height Right",
1827
+ "TS": "Top Surround",
1828
+ "CH": "Center Height",
1472
1829
  }
1473
- CHANNEL_MAP_LABELS = {value: key for key, value in CHANNEL_MAP.items()}
1830
+ CHANNEL_MAP_REVERSE = {value: key for key, value in CHANNEL_MAP.items()}
1474
1831
 
1475
1832
  Channels = Literal[
1476
1833
  "Front Left",
@@ -1560,19 +1917,19 @@ CHANNEL_VOLUME_MAP = {
1560
1917
  "615": 11.5,
1561
1918
  "62": 12.0,
1562
1919
  }
1563
- CHANNEL_VOLUME_MAP_LABELS = {value: key for key, value in CHANNEL_VOLUME_MAP.items()}
1920
+ CHANNEL_VOLUME_MAP_REVERSE = {value: key for key, value in CHANNEL_VOLUME_MAP.items()}
1564
1921
 
1565
1922
  DialogEnhancerLevels = Literal["Off", "Low", "Medium", "High"]
1566
1923
  """Dialog Enhancer Levels."""
1567
1924
 
1568
1925
  DIALOG_ENHANCER_LEVEL_MAP = {
1569
- "Off": "OFF",
1570
- "Low": "LOW",
1571
- "Medium": "MED",
1572
- "High": "HIGH",
1926
+ "OFF": "Off",
1927
+ "LOW": "Low",
1928
+ "MED": "Medium",
1929
+ "HIGH": "High",
1573
1930
  }
1574
1931
 
1575
- DIALOG_ENHANCER_LEVEL_MAP_LABELS = {
1932
+ DIALOG_ENHANCER_LEVEL_MAP_REVERSE = {
1576
1933
  value: key for key, value in DIALOG_ENHANCER_LEVEL_MAP.items()
1577
1934
  }
1578
1935
 
@@ -1615,12 +1972,49 @@ VideoProcessingModes = Literal["Auto", "Game", "Movie", "Bypass"]
1615
1972
  """Video Processing Modes."""
1616
1973
 
1617
1974
  VIDEO_PROCESSING_MODES_MAP = {
1618
- "Auto": "AUTO",
1619
- "Game": "GAME",
1620
- "Movie": "MOVI",
1621
- "Bypass": "BYP",
1975
+ "AUTO": "Auto",
1976
+ "GAME": "Game",
1977
+ "MOVI": "Movie",
1978
+ "BYP": "Bypass",
1622
1979
  }
1623
1980
 
1624
- VIDEO_PROCESSING_MODES_MAP_LABELS = {
1981
+ VIDEO_PROCESSING_MODES_MAP_REVERSE = {
1625
1982
  value: key for key, value in VIDEO_PROCESSING_MODES_MAP.items()
1626
1983
  }
1984
+
1985
+ MDAXs = Literal["Off", "Low", "Medium", "High"]
1986
+ """M-DAX Modes."""
1987
+
1988
+ MDAX_MAP = {
1989
+ "OFF": "Off",
1990
+ "LOW": "Low",
1991
+ "MED": "Medium",
1992
+ "HI": "High",
1993
+ }
1994
+ MDAX_MAP_REVERSE = {value: key for key, value in MDAX_MAP.items()}
1995
+
1996
+ DACFilters = Literal["Mode 1", "Mode 2"]
1997
+ """DAC Filter Modes."""
1998
+
1999
+ DAC_FILTERS_MAP = {
2000
+ "MODE1": "Mode 1",
2001
+ "MODE2": "Mode 2",
2002
+ }
2003
+
2004
+ DAC_FILTERS_MAP_REVERSE = {value: key for key, value in DAC_FILTERS_MAP.items()}
2005
+
2006
+ Illuminations = Literal["Auto", "Bright", "Dim", "Dark", "Off"]
2007
+ """Illumination Modes."""
2008
+
2009
+ ILLUMINATION_MAP = {
2010
+ "AUTO": "Auto",
2011
+ "BRI": "Bright",
2012
+ "DIM": "Dim",
2013
+ "DAR": "Dark",
2014
+ "OFF": "Off",
2015
+ }
2016
+
2017
+ ILLUMINATION_MAP_REVERSE = {value: key for key, value in ILLUMINATION_MAP.items()}
2018
+
2019
+ InputModes = Literal["Select", "Auto", "HDMI", "Digital", "Analog"]
2020
+ """Input Mode Selection."""