1use mx_remote::{BayStatus, MxrSignalType};
22
23use crate::abi::guard;
24
25pub type mxr_signal_type_t = u16;
31
32pub const MXR_FEATURE_IR_RX: u32 = 1 << 0;
36
37pub const MXR_FEATURE_IR_TX: u32 = 1 << 1;
39
40pub const MXR_FEATURE_CEC: u32 = 1 << 2;
42
43pub const MXR_FEATURE_V2IP_SOURCE: u32 = 1 << 3;
45
46pub const MXR_FEATURE_V2IP_SINK: u32 = 1 << 4;
48
49pub const MXR_FEATURE_VIDEO_ROUTING: u32 = 1 << 5;
51
52pub const MXR_FEATURE_AUDIO_ROUTING: u32 = 1 << 6;
54
55pub const MXR_FEATURE_VOLUME_CONTROL: u32 = 1 << 7;
57
58pub const MXR_FEATURE_AUDIO_RETURN: u32 = 1 << 8;
60
61pub const MXR_FEATURE_REMOTE_CONTROL: u32 = 1 << 9;
63
64pub const MXR_FEATURE_SETUP_COMPLETED: u32 = 1 << 10;
66
67pub const MXR_FEATURE_MESH_MASTER: u32 = 1 << 11;
69
70pub const MXR_FEATURE_STATUS_NOTIFY: u32 = 1 << 12;
72
73pub const MXR_FEATURE_STATUS_WARNING: u32 = 1 << 13;
75
76pub const MXR_FEATURE_STATUS_ERROR: u32 = 1 << 14;
78
79pub const MXR_FEATURE_STATUS_REBOOT: u32 = 1 << 15;
81
82pub const MXR_FEATURE_MESH_MEMBER: u32 = 1 << 16;
84
85pub const MXR_FEATURE_AUDIO_AMPLIFIER: u32 = 1 << 17;
87
88pub const MXR_FEATURE_BOOTING: u32 = 1 << 18;
90
91pub const MXR_FEATURE_MANAGER: u32 = 1 << 19;
93
94pub const MXR_FEATURE_STATUS_POWER_SAVE: u32 = 1 << 20;
96
97pub const MXR_FEATURE_MESH: u32 = 1 << 21;
99
100pub const MXR_FEATURE_MULTIVIEWER: u32 = 1 << 22;
102
103pub const MXR_FEATURE_STATUS_CRASHED: u32 = 1 << 23;
105
106pub const MXR_FEATURE_VIDEO_WALL: u32 = 1 << 24;
108
109pub const MXR_FEATURE_CONFIG_INITIALISED: u32 = 1 << 25;
114
115pub const MXR_FEATURE_STATUS_MCAST_FAULT: u32 = 1 << 26;
118
119pub const MXR_FEATURE_POWER_SAVE: u32 = 1 << 27;
122
123pub const MXR_FEATURE_VLAN: u32 = 1 << 28;
126
127pub const MXR_FEATURE_BOOT_BIT: u32 = 1 << 31;
129
130pub const MXR_BAY_HDMI_OUT: u32 = 1 << 0;
134
135pub const MXR_BAY_HDMI_IN: u32 = 1 << 1;
137
138pub const MXR_BAY_AUDIO_DIG_OUT: u32 = 1 << 2;
140
141pub const MXR_BAY_AUDIO_DIG_IN: u32 = 1 << 3;
143
144pub const MXR_BAY_AUDIO_ANA_OUT: u32 = 1 << 4;
146
147pub const MXR_BAY_AUDIO_ANA_IN: u32 = 1 << 5;
149
150pub const MXR_BAY_IR_IN: u32 = 1 << 6;
152
153pub const MXR_BAY_IR_OUT: u32 = 1 << 7;
155
156pub const MXR_BAY_AUDIO_AMP_OUT: u32 = 1 << 8;
158
159pub const MXR_BAY_RC_OUT: u32 = 1 << 9;
161
162pub const MXR_BAY_RC_IN: u32 = 1 << 10;
164
165pub const MXR_BAY_DOLBY: u32 = 1 << 11;
167
168pub const MXR_BAY_AUTO_OFF: u32 = 1 << 12;
170
171pub const MXR_BAY_V2IP_SOURCE_REMOTE: u32 = 1 << 13;
173
174pub const MXR_BAY_V2IP_SINK_REMOTE: u32 = 1 << 14;
176
177pub const MXR_BAY_V2IP_SOURCE_LOCAL: u32 = 1 << 15;
179
180pub const MXR_BAY_V2IP_SINK_LOCAL: u32 = 1 << 16;
182
183pub const MXR_BAY_STATUS_FAULT: u32 = 1 << 0;
190
191pub const MXR_BAY_STATUS_HIDDEN: u32 = 1 << 1;
193
194pub const MXR_BAY_STATUS_POWERED: u32 = 1 << 2;
196
197pub const MXR_BAY_STATUS_SIGNAL_DETECTED: u32 = 1 << 3;
199
200pub const MXR_BAY_STATUS_HPD_DETECTED: u32 = 1 << 4;
202
203pub const MXR_BAY_STATUS_SIGNAL_SCRAMBLE: u32 = 1 << 5;
205
206pub const MXR_BAY_STATUS_HDBT_CONNECTED: u32 = 1 << 6;
208
209pub const MXR_BAY_STATUS_CEC_DETECTED: u32 = 1 << 7;
211
212pub const MXR_BAY_STATUS_POWERED_ON: u32 = 1 << 8;
214
215pub const MXR_BAY_STATUS_POWERED_OFF: u32 = 1 << 9;
217
218pub const MXR_BAY_STATUS_AUDIO_ARC_HDMI: u32 = 1 << 10;
220
221pub const MXR_BAY_STATUS_AUDIO_ARC_OPTIC: u32 = 1 << 11;
223
224pub const MXR_BAY_STATUS_AUDIO_ARC_ANALOG: u32 = 1 << 12;
226
227pub const MXR_BAY_STATUS_OFFLINE: u32 = 1 << 13;
229
230pub const MXR_BAY_STATUS_DECODER_DISABLE: u32 = 1 << 14;
232
233pub const MXR_BAY_STATUS_ENCODER_DISABLE: u32 = 1 << 15;
235
236pub const MXR_BAY_STATUS_CEC_DISABLED: u32 = 1 << 20;
238
239pub const MXR_BAY_STATUS_ENCODER_ERROR: u32 = 1 << 21;
241
242pub const MXR_BAY_STATUS_AUTO_NAME: u32 = 1 << 24;
246
247pub const MXR_AUDIO_INPUT: u32 = 1 << 0;
251
252pub const MXR_AUDIO_OUTPUT: u32 = 1 << 1;
254
255pub const MXR_AUDIO_V2IP_TX: u32 = 1 << 2;
257
258pub const MXR_AUDIO_V2IP_RX: u32 = 1 << 3;
260
261pub const MXR_AUDIO_HDMI: u32 = 1 << 4;
263
264pub const MXR_AUDIO_RCA: u32 = 1 << 5;
266
267pub const MXR_AUDIO_SPDIF: u32 = 1 << 6;
269
270pub const MXR_AUDIO_TRIGGER: u32 = 1 << 7;
272
273pub const MXR_AUDIO_MUTE: u32 = 1 << 8;
275
276pub const MXR_AUDIO_ROUTE_INPUT: u32 = 1 << 9;
278
279pub const MXR_AUDIO_ROUTE_OUTPUT: u32 = 1 << 10;
281
282pub const MXR_AUDIO_ROUTE_IN_NONE: u32 = 1 << 11;
284
285pub const MXR_AUDIO_AMP_OUTPUT: u32 = 1 << 12;
287
288pub const MXR_AUDIO_VOLUME_CONTROL: u32 = 1 << 13;
290
291pub const MXR_AUDIO_GAIN_CONTROL: u32 = 1 << 14;
293
294pub const MXR_AUDIO_AUDIO_LOCK: u32 = 1 << 15;
296
297pub const MXR_KEY_NUM0: u16 = 0;
305
306pub const MXR_KEY_NUM1: u16 = 1;
308
309pub const MXR_KEY_NUM2: u16 = 2;
311
312pub const MXR_KEY_NUM3: u16 = 3;
314
315pub const MXR_KEY_NUM4: u16 = 4;
317
318pub const MXR_KEY_NUM5: u16 = 5;
320
321pub const MXR_KEY_NUM6: u16 = 6;
323
324pub const MXR_KEY_NUM7: u16 = 7;
326
327pub const MXR_KEY_NUM8: u16 = 8;
329
330pub const MXR_KEY_NUM9: u16 = 9;
332
333pub const MXR_KEY_SELECT: u16 = 10;
335
336pub const MXR_KEY_BACK: u16 = 11;
338
339pub const MXR_KEY_UP: u16 = 12;
341
342pub const MXR_KEY_DOWN: u16 = 13;
344
345pub const MXR_KEY_LEFT: u16 = 14;
347
348pub const MXR_KEY_RIGHT: u16 = 15;
350
351pub const MXR_KEY_MENU: u16 = 16;
353
354pub const MXR_KEY_CONTENT_MENU: u16 = 17;
356
357pub const MXR_KEY_CHANNEL_UP: u16 = 18;
359
360pub const MXR_KEY_CHANNEL_DOWN: u16 = 19;
362
363pub const MXR_KEY_PLAY: u16 = 20;
365
366pub const MXR_KEY_PAUSE: u16 = 21;
368
369pub const MXR_KEY_STOP: u16 = 22;
371
372pub const MXR_KEY_RECORD: u16 = 23;
374
375pub const MXR_KEY_FAST_FORWARD: u16 = 24;
377
378pub const MXR_KEY_REWIND: u16 = 25;
380
381pub const MXR_KEY_RED: u16 = 26;
383
384pub const MXR_KEY_GREEN: u16 = 27;
386
387pub const MXR_KEY_YELLOW: u16 = 28;
389
390pub const MXR_KEY_BLUE: u16 = 29;
392
393pub const MXR_KEY_HELP: u16 = 30;
395
396pub const MXR_KEY_INFORMATION: u16 = 31;
398
399pub const MXR_KEY_TEXT: u16 = 32;
401
402pub const MXR_KEY_GUIDE: u16 = 33;
404
405pub const MXR_KEY_VIDEO_ON_DEMAND: u16 = 34;
407
408pub const MXR_KEY_PREVIOUS_CHANNEL: u16 = 80;
410
411pub const MXR_KEY_MODE_3D: u16 = 81;
413
414pub const MXR_KEY_SUBTITLE: u16 = 82;
416
417pub const MXR_KEY_SOUND_SELECT: u16 = 83;
419
420pub const MXR_KEY_INPUT_SELECT: u16 = 84;
422
423pub const MXR_KEY_EJECT: u16 = 85;
425
426pub const MXR_KEY_NEXT_CHAPTER: u16 = 86;
428
429pub const MXR_KEY_PREV_CHAPTER: u16 = 87;
431
432pub const MXR_KEY_INTERACTIVE: u16 = 128;
434
435pub const MXR_KEY_SEARCH: u16 = 129;
437
438pub const MXR_KEY_SKY: u16 = 130;
440
441pub const MXR_KEY_CUSTOM_CEC: u16 = 1280;
443
444pub const MXR_KEY_CUSTOM_SKY: u16 = 2048;
446
447pub const MXR_MV_VIEW_MODE_UNKNOWN: u8 = 0;
456
457pub const MXR_MV_VIEW_MODE_SINGLE: u8 = 1;
459
460pub const MXR_MV_VIEW_MODE_PIP: u8 = 2;
462
463pub const MXR_MV_VIEW_MODE_TWO_SCREEN_LARGE: u8 = 3;
465
466pub const MXR_MV_VIEW_MODE_TWO_SCREEN_SMALL: u8 = 4;
468
469pub const MXR_MV_VIEW_MODE_THREE_SCREEN_LARGE: u8 = 5;
471
472pub const MXR_MV_VIEW_MODE_THREE_SCREEN_SMALL: u8 = 6;
474
475pub const MXR_MV_VIEW_MODE_FOUR_SCREEN_EQUAL: u8 = 7;
477
478pub const MXR_MV_VIEW_MODE_FOUR_SCREEN_SMALL: u8 = 8;
480
481pub const MXR_MV_PIP_POSITION_UNKNOWN: u8 = 0;
483
484pub const MXR_MV_PIP_POSITION_LEFT_TOP: u8 = 1;
486
487pub const MXR_MV_PIP_POSITION_LEFT_BOTTOM: u8 = 2;
489
490pub const MXR_MV_PIP_POSITION_RIGHT_TOP: u8 = 3;
492
493pub const MXR_MV_PIP_POSITION_RIGHT_BOTTOM: u8 = 4;
495
496pub const MXR_MV_PIP_SIZE_UNKNOWN: u8 = 0;
498
499pub const MXR_MV_PIP_SIZE_SMALL: u8 = 1;
501
502pub const MXR_MV_PIP_SIZE_MEDIUM: u8 = 2;
504
505pub const MXR_MV_PIP_SIZE_LARGE: u8 = 3;
507
508pub const MXR_MV_OUTPUT_UNKNOWN: u8 = 0;
510
511pub const MXR_MV_OUTPUT_DCI4K_P60: u8 = 1;
513
514pub const MXR_MV_OUTPUT_DCI4K_P50: u8 = 2;
516
517pub const MXR_MV_OUTPUT_UHD_P60: u8 = 3;
519
520pub const MXR_MV_OUTPUT_UHD_P50: u8 = 4;
522
523pub const MXR_MV_OUTPUT_UHD_P30: u8 = 5;
525
526pub const MXR_MV_OUTPUT_UHD_P25: u8 = 6;
528
529pub const MXR_MV_OUTPUT_WUXGA_P60_RB: u8 = 7;
531
532pub const MXR_MV_OUTPUT_HD1080_P60: u8 = 8;
534
535pub const MXR_MV_OUTPUT_HD1080_P50: u8 = 9;
537
538pub const MXR_MV_OUTPUT_WXGA_P60: u8 = 10;
540
541pub const MXR_MV_OUTPUT_WXGA800_P60: u8 = 11;
543
544pub const MXR_MV_OUTPUT_HD720_P60: u8 = 12;
546
547pub const MXR_MV_OUTPUT_HD720_P50: u8 = 13;
549
550pub const MXR_MV_OUTPUT_XGA_P60: u8 = 14;
552
553pub const MXR_MV_HDCP_UNKNOWN: u8 = 0;
555
556pub const MXR_MV_HDCP_V14: u8 = 1;
558
559pub const MXR_MV_HDCP_V22: u8 = 2;
561
562pub const MXR_MV_HDCP_OFF: u8 = 3;
564
565pub const MXR_MV_EDID_UNKNOWN: u8 = 0;
567
568pub const MXR_MV_EDID_4K2K60_444_STEREO: u8 = 1;
570
571pub const MXR_MV_EDID_4K2K60_444_DOLBY_DTS_51: u8 = 2;
573
574pub const MXR_MV_EDID_4K2K60_444_HD_AUDIO_71: u8 = 3;
576
577pub const MXR_MV_EDID_4K2K30_444_STEREO: u8 = 4;
579
580pub const MXR_MV_EDID_4K2K30_444_DOLBY_DTS_51: u8 = 5;
582
583pub const MXR_MV_EDID_4K2K30_444_HD_AUDIO_71: u8 = 6;
585
586pub const MXR_MV_EDID_1080P_STEREO: u8 = 7;
588
589pub const MXR_MV_EDID_1080P_DOLBY_DTS_51: u8 = 8;
591
592pub const MXR_MV_EDID_1080P_HD_AUDIO_71: u8 = 9;
594
595pub const MXR_MV_EDID_1920X1200_STEREO: u8 = 10;
597
598pub const MXR_MV_EDID_1680X1050_STEREO: u8 = 11;
600
601pub const MXR_MV_EDID_1600X1200_STEREO: u8 = 12;
603
604pub const MXR_MV_EDID_1440X900_STEREO: u8 = 13;
606
607pub const MXR_MV_EDID_1360X768_STEREO: u8 = 14;
609
610pub const MXR_MV_EDID_1280X1024_STEREO: u8 = 15;
612
613pub const MXR_MV_EDID_1024X768_STEREO: u8 = 16;
615
616pub const MXR_MV_EDID_720P_STEREO: u8 = 17;
618
619pub const MXR_MV_EDID_COPY_OUTPUT: u8 = 18;
622
623pub const MXR_MV_EDID_CUSTOM: u8 = 19;
625
626pub const MXR_MV_ITC_UNKNOWN: u8 = 0;
628
629pub const MXR_MV_ITC_VIDEO: u8 = 1;
631
632pub const MXR_MV_ITC_PC: u8 = 2;
634
635pub const MXR_MV_ASPECT_UNKNOWN: u8 = 0;
637
638pub const MXR_MV_ASPECT_FULL: u8 = 1;
640
641pub const MXR_MV_ASPECT_RATIO_16_9: u8 = 2;
643
644pub const MXR_MV_BOOL_OFF: u8 = 0;
646
647pub const MXR_MV_BOOL_ON: u8 = 1;
649
650pub const MXR_MV_BOOL_UNKNOWN: u8 = 255;
652
653pub const MXR_MV_SOURCE_UNKNOWN: u8 = 0;
655
656pub const MXR_MV_SOURCE_INPUT_1: u8 = 1;
658
659pub const MXR_MV_SOURCE_INPUT_2: u8 = 2;
661
662pub const MXR_MV_SOURCE_INPUT_3: u8 = 3;
664
665pub const MXR_MV_SOURCE_INPUT_4: u8 = 4;
667
668pub const MXR_V2IP_SETTING_SINK_CHECK_POWER: u32 = 1 << 0;
672
673pub const MXR_V2IP_SETTING_SINK_OFF_NO_SIGNAL: u32 = 1 << 1;
675
676pub const MXR_V2IP_SETTING_IR_TX_MODULATED: u32 = 1 << 2;
678
679pub const MXR_V2IP_SETTING_STATUS_LED: u32 = 1 << 3;
681
682pub const MXR_V2IP_SETTING_NETWORK_LED: u32 = 1 << 4;
684
685pub const MXR_V2IP_SETTING_FAN_QUIET: u32 = 1 << 5;
687
688pub const MXR_V2IP_SETTING_CEC_COMBO_KEYS: u32 = 1 << 6;
690
691pub const MXR_V2IP_SETTING_CEC_COMBO_INPUT: u32 = 1 << 7;
693
694pub const MXR_V2IP_SETTING_IR_PROFILE: u32 = 1 << 8;
696
697pub const MXR_V2IP_SETTING_IR_PROFILE_SINK: u32 = 1 << 9;
699
700pub const MXR_V2IP_SETTING_IR_PROFILES: u32 = 1 << 10;
702
703pub const MXR_V2IP_SETTING_AUTO_POWER_SAVE: u32 = 1 << 11;
706
707pub const MXR_V2IP_SETTING_POWER_SAVE_SCHEDULE: u32 = 1 << 12;
710
711pub const MXR_V2IP_SETTING_CLOCK_SET: u32 = 1 << 13;
713
714pub const MXR_V2IP_VLAN_VALID: u16 = 1 << 0;
718
719pub const MXR_V2IP_VLAN_TRUNK: u16 = 1 << 1;
722
723pub const MXR_V2IP_VLAN_PENDING: u16 = 1 << 2;
726
727pub const MXR_V2IP_VLAN_CONFIRM: u16 = 1 << 3;
730
731pub const MXR_V2IP_VLAN_HAS_SFP: u16 = 1 << 4;
733
734pub const MXR_V2IP_TEST_PATTERN_OFF: u8 = 0;
738pub const MXR_V2IP_TEST_PATTERN_BARS: u8 = 1;
740pub const MXR_V2IP_TEST_PATTERN_FLAT: u8 = 2;
742pub const MXR_V2IP_TEST_PATTERN_RAMP: u8 = 3;
744pub const MXR_V2IP_TEST_PATTERN_GRID: u8 = 4;
746pub const MXR_V2IP_TEST_PATTERN_STRIP: u8 = 5;
748pub const MXR_V2IP_TEST_PATTERN_CARD: u8 = 6;
750
751pub const MXR_V2IP_TONE_MODE_OFF: u8 = 0;
753pub const MXR_V2IP_TONE_MODE_CONTINUOUS: u8 = 1;
755pub const MXR_V2IP_TONE_MODE_IDENT: u8 = 2;
757pub const MXR_V2IP_TONE_MODE_LINEUP: u8 = 3;
759pub const MXR_V2IP_TONE_MODE_BEEP: u8 = 4;
761
762pub const MXR_V2IP_TESTCARD_SUPPORTED: u8 = 1 << 0;
764pub const MXR_V2IP_TESTCARD_SHOWING: u8 = 1 << 1;
766pub const MXR_V2IP_TESTCARD_PLAYING: u8 = 1 << 2;
768pub const MXR_V2IP_TESTCARD_PATTERN_PENDING: u8 = 1 << 3;
770pub const MXR_V2IP_TESTCARD_TONE_PENDING: u8 = 1 << 4;
772pub const MXR_V2IP_TESTCARD_SYNC_PENDING: u8 = 1 << 5;
774
775#[no_mangle]
779pub extern "C" fn mxr_bay_status_rc_type(status: u32) -> u8 {
780 guard(0, || BayStatus::from_bits(status).rc_type().to_wire())
781}
782
783#[no_mangle]
785pub extern "C" fn mxr_bay_status_hdcp(status: u32) -> u8 {
786 guard(0, || BayStatus::from_bits(status).hdcp())
787}
788
789#[no_mangle]
791pub extern "C" fn mxr_signal_type_svd(signal_type: mxr_signal_type_t) -> u8 {
792 guard(0, || MxrSignalType::from_wire(signal_type).svd())
793}
794
795#[no_mangle]
797pub extern "C" fn mxr_signal_type_colour_space(signal_type: mxr_signal_type_t) -> u8 {
798 guard(0, || MxrSignalType::from_wire(signal_type).colour_space())
799}
800
801#[no_mangle]
803pub extern "C" fn mxr_signal_type_non_integer(signal_type: mxr_signal_type_t) -> bool {
804 guard(false, || {
805 MxrSignalType::from_wire(signal_type).is_non_integer()
806 })
807}
808
809#[no_mangle]
814pub extern "C" fn mxr_signal_type_bpp(signal_type: mxr_signal_type_t) -> u8 {
815 guard(0, || {
816 MxrSignalType::from_wire(signal_type).bpp().unwrap_or(0)
817 })
818}
819
820#[no_mangle]
824pub extern "C" fn mxr_signal_type_bpp_index(signal_type: mxr_signal_type_t) -> u8 {
825 guard(0, || MxrSignalType::from_wire(signal_type).bpp_index())
826}
827
828#[no_mangle]
836pub extern "C" fn mxr_signal_type_is_set(signal_type: mxr_signal_type_t) -> bool {
837 guard(false, || MxrSignalType::from_wire(signal_type).is_set())
838}