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_BOOT_BIT: u32 = 1 << 31;
117
118pub const MXR_BAY_HDMI_OUT: u32 = 1 << 0;
122
123pub const MXR_BAY_HDMI_IN: u32 = 1 << 1;
125
126pub const MXR_BAY_AUDIO_DIG_OUT: u32 = 1 << 2;
128
129pub const MXR_BAY_AUDIO_DIG_IN: u32 = 1 << 3;
131
132pub const MXR_BAY_AUDIO_ANA_OUT: u32 = 1 << 4;
134
135pub const MXR_BAY_AUDIO_ANA_IN: u32 = 1 << 5;
137
138pub const MXR_BAY_IR_IN: u32 = 1 << 6;
140
141pub const MXR_BAY_IR_OUT: u32 = 1 << 7;
143
144pub const MXR_BAY_AUDIO_AMP_OUT: u32 = 1 << 8;
146
147pub const MXR_BAY_RC_OUT: u32 = 1 << 9;
149
150pub const MXR_BAY_RC_IN: u32 = 1 << 10;
152
153pub const MXR_BAY_DOLBY: u32 = 1 << 11;
155
156pub const MXR_BAY_AUTO_OFF: u32 = 1 << 12;
158
159pub const MXR_BAY_V2IP_SOURCE_REMOTE: u32 = 1 << 13;
161
162pub const MXR_BAY_V2IP_SINK_REMOTE: u32 = 1 << 14;
164
165pub const MXR_BAY_V2IP_SOURCE_LOCAL: u32 = 1 << 15;
167
168pub const MXR_BAY_V2IP_SINK_LOCAL: u32 = 1 << 16;
170
171pub const MXR_BAY_STATUS_FAULT: u32 = 1 << 0;
178
179pub const MXR_BAY_STATUS_HIDDEN: u32 = 1 << 1;
181
182pub const MXR_BAY_STATUS_POWERED: u32 = 1 << 2;
184
185pub const MXR_BAY_STATUS_SIGNAL_DETECTED: u32 = 1 << 3;
187
188pub const MXR_BAY_STATUS_HPD_DETECTED: u32 = 1 << 4;
190
191pub const MXR_BAY_STATUS_SIGNAL_SCRAMBLE: u32 = 1 << 5;
193
194pub const MXR_BAY_STATUS_HDBT_CONNECTED: u32 = 1 << 6;
196
197pub const MXR_BAY_STATUS_CEC_DETECTED: u32 = 1 << 7;
199
200pub const MXR_BAY_STATUS_POWERED_ON: u32 = 1 << 8;
202
203pub const MXR_BAY_STATUS_POWERED_OFF: u32 = 1 << 9;
205
206pub const MXR_BAY_STATUS_AUDIO_ARC_HDMI: u32 = 1 << 10;
208
209pub const MXR_BAY_STATUS_AUDIO_ARC_OPTIC: u32 = 1 << 11;
211
212pub const MXR_BAY_STATUS_AUDIO_ARC_ANALOG: u32 = 1 << 12;
214
215pub const MXR_BAY_STATUS_OFFLINE: u32 = 1 << 13;
217
218pub const MXR_BAY_STATUS_DECODER_DISABLE: u32 = 1 << 14;
220
221pub const MXR_BAY_STATUS_ENCODER_DISABLE: u32 = 1 << 15;
223
224pub const MXR_BAY_STATUS_CEC_DISABLED: u32 = 1 << 20;
226
227pub const MXR_BAY_STATUS_ENCODER_ERROR: u32 = 1 << 21;
229
230pub const MXR_AUDIO_INPUT: u32 = 1 << 0;
234
235pub const MXR_AUDIO_OUTPUT: u32 = 1 << 1;
237
238pub const MXR_AUDIO_V2IP_TX: u32 = 1 << 2;
240
241pub const MXR_AUDIO_V2IP_RX: u32 = 1 << 3;
243
244pub const MXR_AUDIO_HDMI: u32 = 1 << 4;
246
247pub const MXR_AUDIO_RCA: u32 = 1 << 5;
249
250pub const MXR_AUDIO_SPDIF: u32 = 1 << 6;
252
253pub const MXR_AUDIO_TRIGGER: u32 = 1 << 7;
255
256pub const MXR_AUDIO_MUTE: u32 = 1 << 8;
258
259pub const MXR_AUDIO_ROUTE_INPUT: u32 = 1 << 9;
261
262pub const MXR_AUDIO_ROUTE_OUTPUT: u32 = 1 << 10;
264
265pub const MXR_AUDIO_ROUTE_IN_NONE: u32 = 1 << 11;
267
268pub const MXR_AUDIO_AMP_OUTPUT: u32 = 1 << 12;
270
271pub const MXR_AUDIO_VOLUME_CONTROL: u32 = 1 << 13;
273
274pub const MXR_AUDIO_GAIN_CONTROL: u32 = 1 << 14;
276
277pub const MXR_KEY_NUM0: u16 = 0;
285
286pub const MXR_KEY_NUM1: u16 = 1;
288
289pub const MXR_KEY_NUM2: u16 = 2;
291
292pub const MXR_KEY_NUM3: u16 = 3;
294
295pub const MXR_KEY_NUM4: u16 = 4;
297
298pub const MXR_KEY_NUM5: u16 = 5;
300
301pub const MXR_KEY_NUM6: u16 = 6;
303
304pub const MXR_KEY_NUM7: u16 = 7;
306
307pub const MXR_KEY_NUM8: u16 = 8;
309
310pub const MXR_KEY_NUM9: u16 = 9;
312
313pub const MXR_KEY_SELECT: u16 = 10;
315
316pub const MXR_KEY_BACK: u16 = 11;
318
319pub const MXR_KEY_UP: u16 = 12;
321
322pub const MXR_KEY_DOWN: u16 = 13;
324
325pub const MXR_KEY_LEFT: u16 = 14;
327
328pub const MXR_KEY_RIGHT: u16 = 15;
330
331pub const MXR_KEY_MENU: u16 = 16;
333
334pub const MXR_KEY_CONTENT_MENU: u16 = 17;
336
337pub const MXR_KEY_CHANNEL_UP: u16 = 18;
339
340pub const MXR_KEY_CHANNEL_DOWN: u16 = 19;
342
343pub const MXR_KEY_PLAY: u16 = 20;
345
346pub const MXR_KEY_PAUSE: u16 = 21;
348
349pub const MXR_KEY_STOP: u16 = 22;
351
352pub const MXR_KEY_RECORD: u16 = 23;
354
355pub const MXR_KEY_FAST_FORWARD: u16 = 24;
357
358pub const MXR_KEY_REWIND: u16 = 25;
360
361pub const MXR_KEY_RED: u16 = 26;
363
364pub const MXR_KEY_GREEN: u16 = 27;
366
367pub const MXR_KEY_YELLOW: u16 = 28;
369
370pub const MXR_KEY_BLUE: u16 = 29;
372
373pub const MXR_KEY_HELP: u16 = 30;
375
376pub const MXR_KEY_INFORMATION: u16 = 31;
378
379pub const MXR_KEY_TEXT: u16 = 32;
381
382pub const MXR_KEY_GUIDE: u16 = 33;
384
385pub const MXR_KEY_VIDEO_ON_DEMAND: u16 = 34;
387
388pub const MXR_KEY_PREVIOUS_CHANNEL: u16 = 80;
390
391pub const MXR_KEY_MODE_3D: u16 = 81;
393
394pub const MXR_KEY_SUBTITLE: u16 = 82;
396
397pub const MXR_KEY_SOUND_SELECT: u16 = 83;
399
400pub const MXR_KEY_INPUT_SELECT: u16 = 84;
402
403pub const MXR_KEY_EJECT: u16 = 85;
405
406pub const MXR_KEY_NEXT_CHAPTER: u16 = 86;
408
409pub const MXR_KEY_PREV_CHAPTER: u16 = 87;
411
412pub const MXR_KEY_INTERACTIVE: u16 = 128;
414
415pub const MXR_KEY_SEARCH: u16 = 129;
417
418pub const MXR_KEY_SKY: u16 = 130;
420
421pub const MXR_KEY_CUSTOM_CEC: u16 = 1280;
423
424pub const MXR_KEY_CUSTOM_SKY: u16 = 2048;
426
427pub const MXR_MV_VIEW_MODE_UNKNOWN: u8 = 0;
436
437pub const MXR_MV_VIEW_MODE_SINGLE: u8 = 1;
439
440pub const MXR_MV_VIEW_MODE_PIP: u8 = 2;
442
443pub const MXR_MV_VIEW_MODE_TWO_SCREEN_LARGE: u8 = 3;
445
446pub const MXR_MV_VIEW_MODE_TWO_SCREEN_SMALL: u8 = 4;
448
449pub const MXR_MV_VIEW_MODE_THREE_SCREEN_LARGE: u8 = 5;
451
452pub const MXR_MV_VIEW_MODE_THREE_SCREEN_SMALL: u8 = 6;
454
455pub const MXR_MV_VIEW_MODE_FOUR_SCREEN_EQUAL: u8 = 7;
457
458pub const MXR_MV_VIEW_MODE_FOUR_SCREEN_SMALL: u8 = 8;
460
461pub const MXR_MV_PIP_POSITION_UNKNOWN: u8 = 0;
463
464pub const MXR_MV_PIP_POSITION_LEFT_TOP: u8 = 1;
466
467pub const MXR_MV_PIP_POSITION_LEFT_BOTTOM: u8 = 2;
469
470pub const MXR_MV_PIP_POSITION_RIGHT_TOP: u8 = 3;
472
473pub const MXR_MV_PIP_POSITION_RIGHT_BOTTOM: u8 = 4;
475
476pub const MXR_MV_PIP_SIZE_UNKNOWN: u8 = 0;
478
479pub const MXR_MV_PIP_SIZE_SMALL: u8 = 1;
481
482pub const MXR_MV_PIP_SIZE_MEDIUM: u8 = 2;
484
485pub const MXR_MV_PIP_SIZE_LARGE: u8 = 3;
487
488pub const MXR_MV_OUTPUT_UNKNOWN: u8 = 0;
490
491pub const MXR_MV_OUTPUT_DCI4K_P60: u8 = 1;
493
494pub const MXR_MV_OUTPUT_DCI4K_P50: u8 = 2;
496
497pub const MXR_MV_OUTPUT_UHD_P60: u8 = 3;
499
500pub const MXR_MV_OUTPUT_UHD_P50: u8 = 4;
502
503pub const MXR_MV_OUTPUT_UHD_P30: u8 = 5;
505
506pub const MXR_MV_OUTPUT_UHD_P25: u8 = 6;
508
509pub const MXR_MV_OUTPUT_WUXGA_P60_RB: u8 = 7;
511
512pub const MXR_MV_OUTPUT_HD1080_P60: u8 = 8;
514
515pub const MXR_MV_OUTPUT_HD1080_P50: u8 = 9;
517
518pub const MXR_MV_OUTPUT_WXGA_P60: u8 = 10;
520
521pub const MXR_MV_OUTPUT_WXGA800_P60: u8 = 11;
523
524pub const MXR_MV_OUTPUT_HD720_P60: u8 = 12;
526
527pub const MXR_MV_OUTPUT_HD720_P50: u8 = 13;
529
530pub const MXR_MV_OUTPUT_XGA_P60: u8 = 14;
532
533pub const MXR_MV_HDCP_UNKNOWN: u8 = 0;
535
536pub const MXR_MV_HDCP_V14: u8 = 1;
538
539pub const MXR_MV_HDCP_V22: u8 = 2;
541
542pub const MXR_MV_HDCP_OFF: u8 = 3;
544
545pub const MXR_MV_EDID_UNKNOWN: u8 = 0;
547
548pub const MXR_MV_EDID_4K2K60_444_STEREO: u8 = 1;
550
551pub const MXR_MV_EDID_4K2K60_444_DOLBY_DTS_51: u8 = 2;
553
554pub const MXR_MV_EDID_4K2K60_444_HD_AUDIO_71: u8 = 3;
556
557pub const MXR_MV_EDID_4K2K30_444_STEREO: u8 = 4;
559
560pub const MXR_MV_EDID_4K2K30_444_DOLBY_DTS_51: u8 = 5;
562
563pub const MXR_MV_EDID_4K2K30_444_HD_AUDIO_71: u8 = 6;
565
566pub const MXR_MV_EDID_1080P_STEREO: u8 = 7;
568
569pub const MXR_MV_EDID_1080P_DOLBY_DTS_51: u8 = 8;
571
572pub const MXR_MV_EDID_1080P_HD_AUDIO_71: u8 = 9;
574
575pub const MXR_MV_EDID_1920X1200_STEREO: u8 = 10;
577
578pub const MXR_MV_EDID_1680X1050_STEREO: u8 = 11;
580
581pub const MXR_MV_EDID_1600X1200_STEREO: u8 = 12;
583
584pub const MXR_MV_EDID_1440X900_STEREO: u8 = 13;
586
587pub const MXR_MV_EDID_1360X768_STEREO: u8 = 14;
589
590pub const MXR_MV_EDID_1280X1024_STEREO: u8 = 15;
592
593pub const MXR_MV_EDID_1024X768_STEREO: u8 = 16;
595
596pub const MXR_MV_EDID_720P_STEREO: u8 = 17;
598
599pub const MXR_MV_EDID_COPY_OUTPUT: u8 = 18;
602
603pub const MXR_MV_EDID_CUSTOM: u8 = 19;
605
606pub const MXR_MV_ITC_UNKNOWN: u8 = 0;
608
609pub const MXR_MV_ITC_VIDEO: u8 = 1;
611
612pub const MXR_MV_ITC_PC: u8 = 2;
614
615pub const MXR_MV_ASPECT_UNKNOWN: u8 = 0;
617
618pub const MXR_MV_ASPECT_FULL: u8 = 1;
620
621pub const MXR_MV_ASPECT_RATIO_16_9: u8 = 2;
623
624pub const MXR_MV_BOOL_OFF: u8 = 0;
626
627pub const MXR_MV_BOOL_ON: u8 = 1;
629
630pub const MXR_MV_BOOL_UNKNOWN: u8 = 255;
632
633pub const MXR_MV_SOURCE_UNKNOWN: u8 = 0;
635
636pub const MXR_MV_SOURCE_INPUT_1: u8 = 1;
638
639pub const MXR_MV_SOURCE_INPUT_2: u8 = 2;
641
642pub const MXR_MV_SOURCE_INPUT_3: u8 = 3;
644
645pub const MXR_MV_SOURCE_INPUT_4: u8 = 4;
647
648#[no_mangle]
652pub extern "C" fn mxr_bay_status_rc_type(status: u32) -> u8 {
653 guard(0, || BayStatus::from_bits(status).rc_type().to_wire())
654}
655
656#[no_mangle]
658pub extern "C" fn mxr_bay_status_hdcp(status: u32) -> u8 {
659 guard(0, || BayStatus::from_bits(status).hdcp())
660}
661
662#[no_mangle]
664pub extern "C" fn mxr_signal_type_svd(signal_type: mxr_signal_type_t) -> u8 {
665 guard(0, || MxrSignalType::from_wire(signal_type).svd())
666}
667
668#[no_mangle]
670pub extern "C" fn mxr_signal_type_colour_space(signal_type: mxr_signal_type_t) -> u8 {
671 guard(0, || MxrSignalType::from_wire(signal_type).colour_space())
672}
673
674#[no_mangle]
676pub extern "C" fn mxr_signal_type_non_integer(signal_type: mxr_signal_type_t) -> bool {
677 guard(false, || {
678 MxrSignalType::from_wire(signal_type).is_non_integer()
679 })
680}
681
682#[no_mangle]
687pub extern "C" fn mxr_signal_type_bpp(signal_type: mxr_signal_type_t) -> u8 {
688 guard(0, || {
689 MxrSignalType::from_wire(signal_type).bpp().unwrap_or(0)
690 })
691}
692
693#[no_mangle]
697pub extern "C" fn mxr_signal_type_bpp_index(signal_type: mxr_signal_type_t) -> u8 {
698 guard(0, || MxrSignalType::from_wire(signal_type).bpp_index())
699}
700
701#[no_mangle]
709pub extern "C" fn mxr_signal_type_is_set(signal_type: mxr_signal_type_t) -> bool {
710 guard(false, || MxrSignalType::from_wire(signal_type).is_set())
711}