denonavr 1.2.0__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",
@@ -122,6 +123,22 @@ ReceiverURLs = namedtuple(
122
123
  "command_dac_filter", # Marantz Only
123
124
  "command_illumination", # Marantz Only
124
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",
125
142
  ],
126
143
  )
127
144
  TelnetCommands = namedtuple(
@@ -148,6 +165,7 @@ TelnetCommands = namedtuple(
148
165
  "command_set_all_zone_stereo",
149
166
  "command_pause",
150
167
  "command_play",
168
+ "command_stop",
151
169
  "command_multieq",
152
170
  "command_dynamiceq",
153
171
  "command_reflevoffset",
@@ -225,12 +243,28 @@ TelnetCommands = namedtuple(
225
243
  "command_dac_filter", # Marantz Only
226
244
  "command_illumination", # Marantz Only
227
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",
228
262
  ],
229
263
  )
230
264
 
231
265
  # AVR-X search patterns
232
266
  DEVICEINFO_AVR_X_PATTERN = re.compile(
233
- 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)|."
234
268
  r"*SR70(07|08|09|10|11|12|13)|.*SR501[3-4]|.*NR1604|.*NR1710)"
235
269
  )
236
270
 
@@ -325,39 +359,81 @@ ALL_ZONE_STEREO = "ALL ZONE STEREO"
325
359
 
326
360
  SOUND_MODE_MAPPING = {
327
361
  "MUSIC": [
362
+ "AAC+NEO:X M",
363
+ "AAC+PL2X M",
328
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",
329
371
  "DOLBY PL2 M",
330
372
  "DOLBY PL2 MUSIC",
331
373
  "DOLBY PL2 X MUSIC",
374
+ "DOLBY PL2X M",
375
+ "DOLBY PLII MS",
376
+ "DTS HD+NEO:X M",
377
+ "DTS HD+PL2X M",
332
378
  "DTS NEO:6 M",
333
379
  "DTS NEO:6 MUSIC",
334
380
  "DTS NEO:X M",
335
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",
336
386
  "PLII MUSIC",
337
387
  "PLIIX MUSIC",
338
388
  ],
339
389
  "MOVIE": [
390
+ "AAC+NEO:X C",
391
+ "AAC+PL2X C",
340
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",
341
399
  "DOLBY PL2 C",
342
400
  "DOLBY PL2 CINEMA",
343
401
  "DOLBY PL2 MOVIE",
344
402
  "DOLBY PL2 X MOVIE",
403
+ "DOLBY PL2X C",
345
404
  "DOLBY PLII MOVIE",
405
+ "DOLBY PLII MV",
406
+ "DTS HD+NEO:X C",
407
+ "DTS HD+PL2X C",
346
408
  "DTS NEO:6 C",
347
409
  "DTS NEO:6 CINEMA",
348
410
  "DTS NEO:X C",
349
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",
350
416
  "MULTI IN + VIRTUAL:X",
351
417
  "PLII CINEMA",
352
418
  "PLII MOVIE",
353
419
  "PLIIX CINEMA",
354
420
  ],
355
421
  "GAME": [
422
+ "AAC+NEO:X G",
356
423
  "DOLBY D +NEO:X G",
424
+ "DOLBY D+ +NEO:X G",
425
+ "DOLBY D+NEO:X G",
426
+ "DOLBY HD+NEO:X G",
357
427
  "DOLBY PL2 G",
358
428
  "DOLBY PL2 GAME",
359
429
  "DOLBY PL2 X GAME",
430
+ "DOLBY PL2X G",
360
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",
361
437
  "PLII GAME",
362
438
  ],
363
439
  "AUTO": ["None"],
@@ -368,27 +444,34 @@ SOUND_MODE_MAPPING = {
368
444
  "JAZZ CLUB": ["JAZZ CLUB"],
369
445
  "VIDEO GAME": ["VIDEO GAME"],
370
446
  "MONO MOVIE": ["MONO MOVIE"],
447
+ "SUPER STADIUM": ["SUPER STADIUM"],
448
+ "CLASSIC CONCERT": ["CLASSIC CONCERT"],
449
+ "WIDE SCREEN": ["WIDE SCREEN"],
371
450
  "DIRECT": ["DIRECT"],
372
451
  "PURE DIRECT": ["PURE_DIRECT", "PURE DIRECT"],
373
452
  "DOLBY DIGITAL": [
453
+ "AAC+DOLBY EX",
454
+ "AAC+DSUR",
455
+ "AAC+NEURAL:X",
456
+ "AAC+PL2Z H",
374
457
  "DOLBY ATMOS",
375
458
  "DOLBY AUDIO - DD + DSUR",
376
459
  "DOLBY AUDIO - DD + NEURAL:X",
377
460
  "DOLBY AUDIO - DD+ + DSUR",
378
461
  "DOLBY AUDIO - DD+ + NEURAL:X",
379
- "DOLBY AUDIO - DOLBY DIGITAL PLUS",
380
462
  "DOLBY AUDIO - DOLBY DIGITAL",
463
+ "DOLBY AUDIO - DOLBY DIGITAL PLUS",
381
464
  "DOLBY AUDIO - DOLBY SURROUND",
382
465
  "DOLBY AUDIO - DOLBY TRUEHD",
383
466
  "DOLBY AUDIO - TRUEHD + DSUR",
384
467
  "DOLBY AUDIO - TRUEHD + NEURAL:X",
385
468
  "DOLBY AUDIO-DD",
469
+ "DOLBY AUDIO-DD+",
386
470
  "DOLBY AUDIO-DD+ +DSUR",
387
- # Added both variants as we don't know if type is intentional
471
+ # FY24 specification uses incorrect spelling
388
472
  "DOLBY AUDIO-DD+ +NERUAL:X",
473
+ # FY23 specification uses correct spelling, go figure
389
474
  "DOLBY AUDIO-DD+ +NEURAL:X",
390
- "DOLBY AUDIO-DD+",
391
- "DOLBY AUDIO-DD+",
392
475
  "DOLBY AUDIO-DD+DSUR",
393
476
  "DOLBY AUDIO-DD+NEURAL:X",
394
477
  "DOLBY AUDIO-DSUR",
@@ -398,18 +481,31 @@ SOUND_MODE_MAPPING = {
398
481
  "DOLBY D + +DOLBY SURROUND",
399
482
  "DOLBY D + DOLBY SURROUND",
400
483
  "DOLBY D + NEURAL:X",
401
- "DOLBY D+ +DS",
484
+ "DOLBY D EX",
402
485
  "DOLBY D+",
486
+ "DOLBY D+ +DS",
487
+ "DOLBY D+ +EX",
488
+ "DOLBY D+ +PL2Z H",
403
489
  "DOLBY D+DS",
490
+ "DOLBY D+PL2Z H",
491
+ "DOLBY DIGITAL",
492
+ "DOLBY DIGITAL +",
404
493
  "DOLBY DIGITAL + + NEURAL:X",
405
494
  "DOLBY DIGITAL + NEURAL:X",
406
- "DOLBY DIGITAL +",
407
- "DOLBY DIGITAL",
408
- "DOLBY HD + DOLBY SURROUND",
409
495
  "DOLBY HD",
496
+ "DOLBY HD + DOLBY SURROUND",
497
+ "DOLBY HD+EX",
498
+ "DOLBY HD+PL2Z H",
499
+ "DOLBY PL2Z H",
410
500
  "DOLBY PRO LOGIC",
411
501
  "DOLBY SURROUND",
412
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",
413
509
  "MULTI IN + DOLBY SURROUND",
414
510
  "MULTI IN + DSUR",
415
511
  "MULTI IN + NEURAL:X",
@@ -417,37 +513,58 @@ SOUND_MODE_MAPPING = {
417
513
  "STANDARD(DOLBY)",
418
514
  ],
419
515
  "DTS SURROUND": [
516
+ "AAC+NEURAL:X",
517
+ "AAC+VIRTUAL:X",
420
518
  "DTS + DOLBY SURROUND",
421
519
  "DTS + NEURAL:X",
422
520
  "DTS + VIRTUAL:X",
423
- "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",
424
527
  "DTS HD",
528
+ "DTS HD MSTR",
425
529
  "DTS HD+DSUR",
530
+ "DTS HD+NEO:6",
426
531
  "DTS HD+NEURAL:X",
532
+ "DTS HD+PL2Z H",
427
533
  "DTS HD+VIRTUAL:X",
428
534
  "DTS NEURAL:X",
429
535
  "DTS SURROUND",
430
536
  "DTS VIRTUAL:X",
537
+ "DTS-HD",
431
538
  "DTS-HD + DOLBY SURROUND",
432
539
  "DTS-HD + DSUR",
433
540
  "DTS-HD + NEURAL:X",
434
541
  "DTS-HD MSTR",
435
- "DTS-HD",
436
- "DTS:X MSTR",
437
542
  "DTS:X",
543
+ "DTS:X MSTR",
438
544
  "DTS:X+VIRTUAL:X",
439
545
  "DTS+DSUR",
546
+ "DTS+NEO:6",
547
+ "DTS+NEUR",
440
548
  "DTS+NEURAL:X",
549
+ "DTS+PL2Z H",
550
+ "DTS+VIRTU",
441
551
  "DTS+VIRTUAL:X",
552
+ "DTS96 ES MTRX",
553
+ "DTS96/24",
554
+ "IMAX DTS",
442
555
  "IMAX DTS:X",
443
556
  "IMAX DTS:X+VIRTUAL:X",
444
- "IMAX DTS",
445
557
  "IMAX DTS+NEURAL:X",
446
- "M CH IN+DSUR",
558
+ "IMAX DTS+VIRTUAL:X",
447
559
  "M CH IN+NEURAL:X",
448
560
  "M CH IN+VIRTUAL:X",
449
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
450
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",
451
568
  "NEURAL:X",
452
569
  "STANDARD(DTS)",
453
570
  "VIRTUAL:X",
@@ -456,7 +573,6 @@ SOUND_MODE_MAPPING = {
456
573
  "AURO2DSURR": ["AURO-2D SURROUND", "AURO2DSURR"],
457
574
  "MCH STEREO": [
458
575
  "MCH STEREO",
459
- "MULTI CH IN 7.1",
460
576
  "MULTI CH STEREO",
461
577
  "MULTI_CH_STEREO",
462
578
  ],
@@ -498,6 +614,7 @@ HDTUNERSTATUS_URL = "/goform/formTuner_HdXml.xml"
498
614
  COMMAND_NETAUDIO_POST_URL = "/NetAudio/index.put.asp"
499
615
  COMMAND_PAUSE = "/goform/formiPhoneAppDirect.xml?NS9B"
500
616
  COMMAND_PLAY = "/goform/formiPhoneAppDirect.xml?NS9A"
617
+ COMMAND_STOP = "/goform/formiPhoneAppDirect.xml?NS9C"
501
618
  COMMAND_ECO_MODE = "/goform/formiPhoneAppDirect.xml?ECO{mode}"
502
619
 
503
620
 
@@ -554,7 +671,7 @@ COMMAND_AUROMATIC_3D_STRENGTH = "/goform/formiPhoneAppDirect.xml?PSAUROST%20{val
554
671
  COMMAND_AURO_3D_MODE = "/goform/formiPhoneAppDirect.xml?PSAUROMODEM%20{mode}"
555
672
  COMMAND_DIRAC_FILTER = "/goform/formiPhoneAppDirect.xml?PSDIRAC%20{filter}"
556
673
  COMMAND_LFC = "/goform/formiPhoneAppDirect.xml?PSLFC%20{mode}"
557
- COMMAND_CONTAMINATION_AMOUNT = "/goform/formiPhoneAppDirect.xml?PSCNTAMT%20{value}"
674
+ COMMAND_CONTAINMENT_AMOUNT = "/goform/formiPhoneAppDirect.xml?PSCNTAMT%20{value}"
558
675
  COMMAND_LOUDNESS_MANAGEMENT = "/goform/formiPhoneAppDirect.xml?PSLOM%20{mode}"
559
676
  COMMAND_BASS_SYNC = "/goform/formiPhoneAppDirect.xml?PSBSC%20{mode}"
560
677
  COMMAND_DIALOG_ENHANCER = "/goform/formiPhoneAppDirect.xml?PSDEH%20{level}"
@@ -598,6 +715,22 @@ COMMAND_ILLUMINATION = "/goform/formiPhoneAppDirect.xml?ILB%20{mode}" # Marantz
598
715
  COMMAND_AUTO_LIP_SYNC = (
599
716
  "/goform/formiPhoneAppDirect.xml?SSHOSALS%20{mode}" # Marantz Only
600
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"
601
734
 
602
735
  # Zone 2 URLs
603
736
  STATUS_Z2_URL = "/goform/formZone2_Zone2XmlStatus.xml"
@@ -644,7 +777,7 @@ DENONAVR_URLS = ReceiverURLs(
644
777
  command_sel_sound_mode=COMMAND_SEL_SM_URL,
645
778
  command_neural_x_on_off=COMMAND_NEURAL_X_ON_OFF,
646
779
  command_imax_auto_off=COMMAND_IMAX_AUTO_OFF,
647
- command_imax_audio_settings=COMMAND_IMAX_AUTO_OFF,
780
+ command_imax_audio_settings=COMMAND_IMAX_AUDIO_SETTINGS,
648
781
  command_imax_hpf=COMMAND_IMAX_HPF,
649
782
  command_imax_lpf=COMMAND_IMAX_LPF,
650
783
  command_imax_subwoofer_mode=COMMAND_IMAX_SUBWOOFER_MODE,
@@ -654,6 +787,7 @@ DENONAVR_URLS = ReceiverURLs(
654
787
  command_set_all_zone_stereo=COMMAND_SET_ZST_URL,
655
788
  command_pause=COMMAND_PAUSE,
656
789
  command_play=COMMAND_PLAY,
790
+ command_stop=COMMAND_STOP,
657
791
  command_cusor_up=COMMAND_CURSOR_UP,
658
792
  command_cusor_down=COMMAND_CURSOR_DOWN,
659
793
  command_cusor_left=COMMAND_CURSOR_LEFT,
@@ -684,14 +818,14 @@ DENONAVR_URLS = ReceiverURLs(
684
818
  command_dirac_filter=COMMAND_DIRAC_FILTER,
685
819
  command_eco_mode=COMMAND_ECO_MODE,
686
820
  command_lfc=COMMAND_LFC,
687
- command_containment_amount=COMMAND_CONTAMINATION_AMOUNT,
821
+ command_containment_amount=COMMAND_CONTAINMENT_AMOUNT,
688
822
  command_loudness_management=COMMAND_LOUDNESS_MANAGEMENT,
689
823
  command_bass_sync=COMMAND_BASS_SYNC,
690
824
  command_dialog_enhancer=COMMAND_DIALOG_ENHANCER,
691
825
  command_hdmi_output=COMMAND_HDMI_OUTPUT,
692
826
  command_hdmi_audio_decode=COMMAND_HDMI_AUDIO_DECODE,
693
827
  command_quick_select_mode=COMMAND_QUICK_SELECT_MODE,
694
- command_quick_select_memory=COMMAND_QUICK_SELECT_MODE,
828
+ command_quick_select_memory=COMMAND_QUICK_SELECT_MEMORY,
695
829
  command_smart_select_mode=COMMAND_SMART_SELECT_MODE, # Marantz
696
830
  command_smart_select_memory=COMMAND_SMART_SELECT_MEMORY, # Marantz
697
831
  command_auto_standby=COMMAND_AUTO_STANDBY,
@@ -724,6 +858,22 @@ DENONAVR_URLS = ReceiverURLs(
724
858
  command_dac_filter=COMMAND_DAC_FILTER, # Marantz Only
725
859
  command_illumination=COMMAND_ILLUMINATION, # Marantz Only
726
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,
727
877
  )
728
878
 
729
879
  ZONE2_URLS = ReceiverURLs(
@@ -757,6 +907,7 @@ ZONE2_URLS = ReceiverURLs(
757
907
  command_set_all_zone_stereo=COMMAND_SET_ZST_URL,
758
908
  command_pause=COMMAND_PAUSE,
759
909
  command_play=COMMAND_PLAY,
910
+ command_stop=COMMAND_STOP,
760
911
  command_cusor_up=COMMAND_CURSOR_UP,
761
912
  command_cusor_down=COMMAND_CURSOR_DOWN,
762
913
  command_cusor_left=COMMAND_CURSOR_LEFT,
@@ -787,7 +938,7 @@ ZONE2_URLS = ReceiverURLs(
787
938
  command_dirac_filter=COMMAND_DIRAC_FILTER,
788
939
  command_eco_mode=COMMAND_ECO_MODE,
789
940
  command_lfc=COMMAND_LFC,
790
- command_containment_amount=COMMAND_CONTAMINATION_AMOUNT,
941
+ command_containment_amount=COMMAND_CONTAINMENT_AMOUNT,
791
942
  command_loudness_management=COMMAND_LOUDNESS_MANAGEMENT,
792
943
  command_bass_sync=COMMAND_BASS_SYNC,
793
944
  command_dialog_enhancer=COMMAND_DIALOG_ENHANCER,
@@ -827,6 +978,22 @@ ZONE2_URLS = ReceiverURLs(
827
978
  command_dac_filter=COMMAND_DAC_FILTER, # Marantz Only
828
979
  command_illumination=COMMAND_ILLUMINATION, # Marantz Only
829
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,
830
997
  )
831
998
 
832
999
  ZONE3_URLS = ReceiverURLs(
@@ -860,6 +1027,7 @@ ZONE3_URLS = ReceiverURLs(
860
1027
  command_set_all_zone_stereo=COMMAND_SET_ZST_URL,
861
1028
  command_pause=COMMAND_PAUSE,
862
1029
  command_play=COMMAND_PLAY,
1030
+ command_stop=COMMAND_STOP,
863
1031
  command_cusor_up=COMMAND_CURSOR_UP,
864
1032
  command_cusor_down=COMMAND_CURSOR_DOWN,
865
1033
  command_cusor_left=COMMAND_CURSOR_LEFT,
@@ -890,7 +1058,7 @@ ZONE3_URLS = ReceiverURLs(
890
1058
  command_dirac_filter=COMMAND_DIRAC_FILTER,
891
1059
  command_eco_mode=COMMAND_ECO_MODE,
892
1060
  command_lfc=COMMAND_LFC,
893
- command_containment_amount=COMMAND_CONTAMINATION_AMOUNT,
1061
+ command_containment_amount=COMMAND_CONTAINMENT_AMOUNT,
894
1062
  command_loudness_management=COMMAND_LOUDNESS_MANAGEMENT,
895
1063
  command_bass_sync=COMMAND_BASS_SYNC,
896
1064
  command_dialog_enhancer=COMMAND_DIALOG_ENHANCER,
@@ -930,6 +1098,22 @@ ZONE3_URLS = ReceiverURLs(
930
1098
  command_dac_filter=COMMAND_DAC_FILTER, # Marantz Only
931
1099
  command_illumination=COMMAND_ILLUMINATION, # Marantz Only
932
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,
933
1117
  )
934
1118
 
935
1119
  # Telnet Events
@@ -941,7 +1125,6 @@ TELNET_EVENTS = {
941
1125
  "DIM",
942
1126
  "ECO",
943
1127
  "HD",
944
- "ILB", # Marantz Only
945
1128
  "MN",
946
1129
  "MS",
947
1130
  "MU",
@@ -976,6 +1159,7 @@ TELNET_EVENTS = {
976
1159
  ALL_ZONE_TELNET_EVENTS = {
977
1160
  "DIM",
978
1161
  "HD",
1162
+ "ILB", # Marantz Only
979
1163
  "NS",
980
1164
  "NSA",
981
1165
  "NSE",
@@ -1012,6 +1196,7 @@ DENONAVR_TELNET_COMMANDS = TelnetCommands(
1012
1196
  command_set_all_zone_stereo="MN",
1013
1197
  command_pause="NS9B",
1014
1198
  command_play="NS9A",
1199
+ command_stop="NS9C",
1015
1200
  command_multieq="PSMULTEQ:",
1016
1201
  command_dynamiceq="PSDYNEQ ",
1017
1202
  command_reflevoffset="PSREFLEV ",
@@ -1089,6 +1274,22 @@ DENONAVR_TELNET_COMMANDS = TelnetCommands(
1089
1274
  command_dac_filter="PSDACFIL {mode}", # Marantz Only
1090
1275
  command_illumination="ILB {mode}", # Marantz Only
1091
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",
1092
1293
  )
1093
1294
 
1094
1295
  ZONE2_TELNET_COMMANDS = TelnetCommands(
@@ -1113,6 +1314,7 @@ ZONE2_TELNET_COMMANDS = TelnetCommands(
1113
1314
  command_set_all_zone_stereo="MN",
1114
1315
  command_pause="NS9B",
1115
1316
  command_play="NS9A",
1317
+ command_stop="NS9C",
1116
1318
  command_multieq="PSMULTEQ:",
1117
1319
  command_dynamiceq="PSDYNEQ ",
1118
1320
  command_reflevoffset="PSREFLEV ",
@@ -1190,6 +1392,22 @@ ZONE2_TELNET_COMMANDS = TelnetCommands(
1190
1392
  command_dac_filter="PSDACFIL {mode}", # Marantz Only
1191
1393
  command_illumination="ILB {mode}", # Marantz Only
1192
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",
1193
1411
  )
1194
1412
 
1195
1413
  ZONE3_TELNET_COMMANDS = TelnetCommands(
@@ -1214,6 +1432,7 @@ ZONE3_TELNET_COMMANDS = TelnetCommands(
1214
1432
  command_set_all_zone_stereo="MN",
1215
1433
  command_pause="NS9B",
1216
1434
  command_play="NS9A",
1435
+ command_stop="NS9C",
1217
1436
  command_multieq="PSMULTEQ:",
1218
1437
  command_dynamiceq="PSDYNEQ ",
1219
1438
  command_reflevoffset="PSREFLEV ",
@@ -1291,6 +1510,22 @@ ZONE3_TELNET_COMMANDS = TelnetCommands(
1291
1510
  command_dac_filter="PSDACFIL {mode}", # Marantz Only
1292
1511
  command_illumination="ILB {mode}", # Marantz Only
1293
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",
1294
1529
  )
1295
1530
 
1296
1531
  # States
@@ -1302,6 +1537,7 @@ STATE_ON = "on"
1302
1537
  STATE_OFF = "off"
1303
1538
  STATE_PLAYING = "playing"
1304
1539
  STATE_PAUSED = "paused"
1540
+ STATE_STOPPED = "stopped"
1305
1541
  SETTINGS_MENU_ON = "ON"
1306
1542
  SETTINGS_MENU_OFF = "OFF"
1307
1543
  SETTINGS_MENU_STATES = {SETTINGS_MENU_ON, SETTINGS_MENU_OFF}
@@ -1310,6 +1546,7 @@ DIMER_DIM = "DIM"
1310
1546
  DIMER_DARK = "DAR"
1311
1547
  DIMER_OFF = "OFF"
1312
1548
  DIMMER_STATES = {DIMER_BRIGHT, DIMER_DIM, DIMER_DARK, DIMER_OFF}
1549
+ NETAUDIO_PLAYING = "Now Playing"
1313
1550
 
1314
1551
  # Zones
1315
1552
  ALL_ZONES = "All"
@@ -1328,7 +1565,12 @@ ZONE2_ZONE3_NAME = {ZONE2: None, ZONE3: None}
1328
1565
  APPCOMMAND_CMD_TEXT = "cmd_text"
1329
1566
  APPCOMMAND_NAME = "name"
1330
1567
 
1331
- # 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
+
1332
1574
  MULTI_EQ_MAP_APPCOMMAND = {"0": "Off", "1": "Flat", "2": "L/R Bypass", "3": "Reference"}
1333
1575
  MULTI_EQ_MAP_TELNET = {
1334
1576
  "OFF": "Off",
@@ -1338,21 +1580,27 @@ MULTI_EQ_MAP_TELNET = {
1338
1580
  "MANUAL": "Manual",
1339
1581
  }
1340
1582
  MULTI_EQ_MAP = {**MULTI_EQ_MAP_APPCOMMAND, **MULTI_EQ_MAP_TELNET}
1341
- MULTI_EQ_MAP_LABELS_APPCOMMAND = {
1583
+ MULTI_EQ_MAP_REVERSE_APPCOMMAND = {
1342
1584
  value: key for key, value in MULTI_EQ_MAP_APPCOMMAND.items()
1343
1585
  }
1344
- 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."""
1345
1590
 
1346
1591
  REF_LVL_OFFSET_MAP_APPCOMMAND = {"0": "0dB", "1": "+5dB", "2": "+10dB", "3": "+15dB"}
1347
1592
  REF_LVL_OFFSET_MAP_TELNET = {"0": "0dB", "5": "+5dB", "10": "+10dB", "15": "+15dB"}
1348
1593
  REF_LVL_OFFSET_MAP = {**REF_LVL_OFFSET_MAP_APPCOMMAND, **REF_LVL_OFFSET_MAP_TELNET}
1349
- REF_LVL_OFFSET_MAP_LABELS_APPCOMMAND = {
1594
+ REF_LVL_OFFSET_MAP_REVERSE_APPCOMMAND = {
1350
1595
  value: key for key, value in REF_LVL_OFFSET_MAP_APPCOMMAND.items()
1351
1596
  }
1352
- REF_LVL_OFFSET_MAP_LABELS_TELNET = {
1597
+ REF_LVL_OFFSET_MAP_REVERSE_TELNET = {
1353
1598
  value: key for key, value in REF_LVL_OFFSET_MAP_TELNET.items()
1354
1599
  }
1355
1600
 
1601
+ DynamicVolumeSettings = Literal["Off", "Light", "Medium", "Heavy"]
1602
+ """Dynamic Volume Settings."""
1603
+
1356
1604
  DYNAMIC_VOLUME_MAP_APPCOMMAND = {"0": "Off", "1": "Light", "2": "Medium", "3": "Heavy"}
1357
1605
  DYNAMIC_VOLUME_MAP_TELNET = {
1358
1606
  "OFF": "Off",
@@ -1361,10 +1609,10 @@ DYNAMIC_VOLUME_MAP_TELNET = {
1361
1609
  "HEV": "Heavy",
1362
1610
  }
1363
1611
  DYNAMIC_VOLUME_MAP = {**DYNAMIC_VOLUME_MAP_APPCOMMAND, **DYNAMIC_VOLUME_MAP_TELNET}
1364
- DYNAMIC_VOLUME_MAP_LABELS_APPCOMMAND = {
1612
+ DYNAMIC_VOLUME_MAP_REVERSE_APPCOMMAND = {
1365
1613
  value: key for key, value in DYNAMIC_VOLUME_MAP_APPCOMMAND.items()
1366
1614
  }
1367
- DYNAMIC_VOLUME_MAP_LABELS_TELNET = {
1615
+ DYNAMIC_VOLUME_MAP_REVERSE_TELNET = {
1368
1616
  value: key for key, value in DYNAMIC_VOLUME_MAP_TELNET.items()
1369
1617
  }
1370
1618
 
@@ -1372,12 +1620,12 @@ AudioRestorers = Literal["Off", "Low", "Medium", "High"]
1372
1620
  """Audio Restorer settings."""
1373
1621
 
1374
1622
  AUDIO_RESTORER_MAP = {
1375
- "Off": "OFF",
1376
- "Low": "LOW",
1377
- "Medium": "MED",
1378
- "High": "HI",
1623
+ "OFF": "Off",
1624
+ "LOW": "Low",
1625
+ "MED": "Medium",
1626
+ "HI": "High",
1379
1627
  }
1380
- 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()}
1381
1629
 
1382
1630
  AuroMatic3DPresets = Literal[
1383
1631
  "Small",
@@ -1389,58 +1637,93 @@ AuroMatic3DPresets = Literal[
1389
1637
  """Auro-Matic 3D Presets."""
1390
1638
 
1391
1639
  AURO_MATIC_3D_PRESET_MAP = {
1392
- "Small": "SMA",
1393
- "Medium": "MED",
1394
- "Large": "LAR",
1395
- "Speech": "SPE",
1396
- "Movie": "MOV",
1640
+ "SMA": "Small",
1641
+ "MED": "Medium",
1642
+ "LAR": "Large",
1643
+ "SPE": "Speech",
1644
+ "MOV": "Movie",
1397
1645
  }
1398
- AURO_MATIC_3D_PRESET_MAP_LABELS = {
1646
+ AURO_MATIC_3D_PRESET_MAP_REVERSE = {
1399
1647
  value: key for key, value in AURO_MATIC_3D_PRESET_MAP.items()
1400
1648
  }
1401
1649
 
1402
1650
  Auro3DModes = Literal["Direct", "Channel Expansion"]
1403
1651
  """Auro 3D Modes."""
1404
1652
 
1405
- AURO_3D_MODE_MAP = {"Direct": "DRCT", "Channel Expansion": "EXP"}
1406
- 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()}
1407
1655
 
1408
- AutoStandbys = Literal["OFF", "15M", "30M", "60M"]
1656
+ AutoStandbys = Literal["OFF", "15M", "30M", "60M", "2H", "4H", "8H"]
1657
+
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}
1409
1677
 
1410
1678
  BluetoothOutputModes = Literal["Bluetooth + Speakers", "Bluetooth Only"]
1411
1679
  """Bluetooth Output Modes."""
1412
1680
 
1413
1681
  BLUETOOTH_OUTPUT_MODES_MAP = {
1414
- "Bluetooth + Speakers": "SP",
1415
- "Bluetooth Only": "BT",
1682
+ "SP": "Bluetooth + Speakers",
1683
+ "BT": "Bluetooth Only",
1416
1684
  }
1417
- BLUETOOTH_OUTPUT_MAP_LABELS = {
1685
+ BLUETOOTH_OUTPUT_MODES_MAP_REVERSE = {
1418
1686
  value: key for key, value in BLUETOOTH_OUTPUT_MODES_MAP.items()
1419
1687
  }
1420
1688
 
1421
- DIMMER_MODE_MAP = {
1422
- "Off": DIMER_OFF,
1423
- "Dark": DIMER_DARK,
1424
- "Dim": DIMER_DIM,
1425
- "Bright": DIMER_BRIGHT,
1689
+ DIMMER_MODE_MAP_APPCOMMAND = {
1690
+ "0": "Off",
1691
+ "1": "Dark",
1692
+ "2": "Dim",
1693
+ "3": "Bright",
1426
1694
  }
1427
- DIMMER_MODE_MAP_LABELS = {value: key for key, value in DIMMER_MODE_MAP.items()}
1695
+ DIMMER_MODE_MAP_TELNET = {
1696
+ DIMER_OFF: "Off",
1697
+ DIMER_DARK: "Dark",
1698
+ DIMER_DIM: "Dim",
1699
+ DIMER_BRIGHT: "Bright",
1700
+ }
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()}
1428
1704
 
1429
1705
  DimmerModes = Literal["Off", "Dark", "Dim", "Bright"]
1430
1706
  """Dimmer Modes."""
1431
1707
 
1432
- DIRAC_FILTER_MAP = {"Off": "OFF", "Slot 1": "1", "Slot 2": "2", "Slot 3": "3"}
1433
- 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()}
1434
1710
 
1435
1711
  DiracFilters = Literal["Slot 1", "Slot 2", "Slot 3", "Off"]
1436
1712
  """Dirac Filters."""
1437
1713
 
1438
- ECO_MODE_MAP = {
1439
- "On": "ON",
1440
- "Auto": "AUTO",
1441
- "Off": "OFF",
1714
+ ECO_MODE_MAP_APPCOMMAND = {
1715
+ "0": "Off",
1716
+ "1": "On",
1717
+ "2": "Auto",
1442
1718
  }
1443
- 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()}
1444
1727
 
1445
1728
  EcoModes = Literal["On", "Auto", "Off"]
1446
1729
  """Eco Modes."""
@@ -1459,17 +1742,17 @@ EffectSpeakers = Literal[
1459
1742
  """Effect Speakers."""
1460
1743
 
1461
1744
  EFFECT_SPEAKER_SELECTION_MAP = {
1462
- "Floor": "FL",
1463
- "Front": "FR",
1464
- "Front Height": "FH",
1465
- "Front Wide": "FW",
1466
- "Front Height + Front Wide": "HW",
1467
- "Height + Floor": "HF",
1468
- "Surround Back": "SB",
1469
- "Surround Back + Front Height": "BH",
1470
- "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",
1471
1754
  }
1472
- EFFECT_SPEAKER_SELECTION_MAP_LABELS = {
1755
+ EFFECT_SPEAKER_SELECTION_MAP_REVERSE = {
1473
1756
  value: key for key, value in EFFECT_SPEAKER_SELECTION_MAP.items()
1474
1757
  }
1475
1758
 
@@ -1477,15 +1760,15 @@ DRCs = Literal["AUTO", "LOW", "MID", "HI", "OFF"]
1477
1760
  """Dynamic Range Control (DRC) Settings."""
1478
1761
 
1479
1762
  HDMI_OUTPUT_MAP = {
1480
- "Auto": "AUTO",
1481
- "HDMI1": "1",
1482
- "HDMI2": "2",
1483
- }
1484
- HDMI_OUTPUT_MAP_LABELS = {
1485
1763
  "MONIAUTO": "Auto",
1486
1764
  "MONI1": "HDMI1",
1487
1765
  "MONI2": "HDMI2",
1488
1766
  }
1767
+ HDMI_OUTPUT_MAP_REVERSE = {
1768
+ "Auto": "AUTO",
1769
+ "HDMI1": "1",
1770
+ "HDMI2": "2",
1771
+ }
1489
1772
 
1490
1773
  HDMIOutputs = Literal["Auto", "HDMI1", "HDMI2"]
1491
1774
  """HDMI Output Modes."""
@@ -1496,56 +1779,55 @@ Subwoofers = Literal["Subwoofer", "Subwoofer 2", "Subwoofer 3", "Subwoofer 4"]
1496
1779
  """Subwoofers."""
1497
1780
 
1498
1781
  SUBWOOFERS_MAP = {
1499
- "Subwoofer": "",
1500
- "Subwoofer 2": "2",
1501
- "Subwoofer 3": "3",
1502
- "Subwoofer 4": "4",
1503
- }
1504
- """Subwoofers."""
1505
-
1506
- SUBWOOFERS_MAP_LABELS = {
1507
1782
  "SWL": "Subwoofer",
1508
1783
  "SWL2": "Subwoofer 2",
1509
1784
  "SWL3": "Subwoofer 3",
1510
1785
  "SWL4": "Subwoofer 4",
1511
1786
  }
1512
1787
 
1788
+ SUBWOOFERS_MAP_REVERSE = {
1789
+ "Subwoofer": "",
1790
+ "Subwoofer 2": "2",
1791
+ "Subwoofer 3": "3",
1792
+ "Subwoofer 4": "4",
1793
+ }
1794
+
1513
1795
  CHANNEL_MAP = {
1514
- "Front Left": "FL",
1515
- "Front Right": "FR",
1516
- "Center": "C",
1517
- "Subwoofer": "SW",
1518
- "Subwoofer 2": "SW2",
1519
- "Subwoofer 3": "SW3",
1520
- "Subwoofer 4": "SW4",
1521
- "Surround Left": "SL",
1522
- "Surround Right": "SR",
1523
- "Surround Back Left": "SBL",
1524
- "Surround Back Right": "SBR",
1525
- "Front Height Left": "FHL",
1526
- "Front Height Right": "FHR",
1527
- "Front Wide Left": "FWL",
1528
- "Front Wide Right": "FWR",
1529
- "Top Front Left": "TFL",
1530
- "Top Front Right": "TFR",
1531
- "Top Middle Left": "TML",
1532
- "Top Middle Right": "TMR",
1533
- "Top Rear Left": "TRL",
1534
- "Top Rear Right": "TRR",
1535
- "Rear Height Left": "RHL",
1536
- "Rear Height Right": "RHR",
1537
- "Front Dolby Left": "FDL",
1538
- "Front Dolby Right": "FDR",
1539
- "Surround Dolby Left": "SDL",
1540
- "Surround Dolby Right": "SDR",
1541
- "Back Dolby Left": "BDL",
1542
- "Back Dolby Right": "BDR",
1543
- "Surround Height Left": "SHL",
1544
- "Surround Height Right": "SHR",
1545
- "Top Surround": "TS",
1546
- "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",
1547
1829
  }
1548
- 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()}
1549
1831
 
1550
1832
  Channels = Literal[
1551
1833
  "Front Left",
@@ -1635,19 +1917,19 @@ CHANNEL_VOLUME_MAP = {
1635
1917
  "615": 11.5,
1636
1918
  "62": 12.0,
1637
1919
  }
1638
- 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()}
1639
1921
 
1640
1922
  DialogEnhancerLevels = Literal["Off", "Low", "Medium", "High"]
1641
1923
  """Dialog Enhancer Levels."""
1642
1924
 
1643
1925
  DIALOG_ENHANCER_LEVEL_MAP = {
1644
- "Off": "OFF",
1645
- "Low": "LOW",
1646
- "Medium": "MED",
1647
- "High": "HIGH",
1926
+ "OFF": "Off",
1927
+ "LOW": "Low",
1928
+ "MED": "Medium",
1929
+ "HIGH": "High",
1648
1930
  }
1649
1931
 
1650
- DIALOG_ENHANCER_LEVEL_MAP_LABELS = {
1932
+ DIALOG_ENHANCER_LEVEL_MAP_REVERSE = {
1651
1933
  value: key for key, value in DIALOG_ENHANCER_LEVEL_MAP.items()
1652
1934
  }
1653
1935
 
@@ -1690,13 +1972,13 @@ VideoProcessingModes = Literal["Auto", "Game", "Movie", "Bypass"]
1690
1972
  """Video Processing Modes."""
1691
1973
 
1692
1974
  VIDEO_PROCESSING_MODES_MAP = {
1693
- "Auto": "AUTO",
1694
- "Game": "GAME",
1695
- "Movie": "MOVI",
1696
- "Bypass": "BYP",
1975
+ "AUTO": "Auto",
1976
+ "GAME": "Game",
1977
+ "MOVI": "Movie",
1978
+ "BYP": "Bypass",
1697
1979
  }
1698
1980
 
1699
- VIDEO_PROCESSING_MODES_MAP_LABELS = {
1981
+ VIDEO_PROCESSING_MODES_MAP_REVERSE = {
1700
1982
  value: key for key, value in VIDEO_PROCESSING_MODES_MAP.items()
1701
1983
  }
1702
1984
 
@@ -1704,32 +1986,35 @@ MDAXs = Literal["Off", "Low", "Medium", "High"]
1704
1986
  """M-DAX Modes."""
1705
1987
 
1706
1988
  MDAX_MAP = {
1707
- "Off": "OFF",
1708
- "Low": "LOW",
1709
- "Medium": "MED",
1710
- "High": "HI",
1989
+ "OFF": "Off",
1990
+ "LOW": "Low",
1991
+ "MED": "Medium",
1992
+ "HI": "High",
1711
1993
  }
1712
- MDAX_MAP_LABELS = {value: key for key, value in MDAX_MAP.items()}
1994
+ MDAX_MAP_REVERSE = {value: key for key, value in MDAX_MAP.items()}
1713
1995
 
1714
1996
  DACFilters = Literal["Mode 1", "Mode 2"]
1715
1997
  """DAC Filter Modes."""
1716
1998
 
1717
1999
  DAC_FILTERS_MAP = {
1718
- "Mode 1": "MODE1",
1719
- "Mode 2": "MODE2",
2000
+ "MODE1": "Mode 1",
2001
+ "MODE2": "Mode 2",
1720
2002
  }
1721
2003
 
1722
- DAC_FILTERS_MAP_LABELS = {value: key for key, value in DAC_FILTERS_MAP.items()}
2004
+ DAC_FILTERS_MAP_REVERSE = {value: key for key, value in DAC_FILTERS_MAP.items()}
1723
2005
 
1724
2006
  Illuminations = Literal["Auto", "Bright", "Dim", "Dark", "Off"]
1725
2007
  """Illumination Modes."""
1726
2008
 
1727
2009
  ILLUMINATION_MAP = {
1728
- "Auto": "AUTO",
1729
- "Bright": "BRI",
1730
- "Dim": "DIM",
1731
- "Dark": "DAR",
1732
- "Off": "OFF",
2010
+ "AUTO": "Auto",
2011
+ "BRI": "Bright",
2012
+ "DIM": "Dim",
2013
+ "DAR": "Dark",
2014
+ "OFF": "Off",
1733
2015
  }
1734
2016
 
1735
- ILLUMINATION_MAP_LABELS = {value: key for key, value in ILLUMINATION_MAP.items()}
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."""