#ifndef MX_REMOTE_H
#define MX_REMOTE_H
#include <stdarg.h>
#include <stdbool.h>
#include <stddef.h>
#include <stdint.h>
#include <stdlib.h>
#define MXR_UID_STRING_LEN 36
#define MXR_NAME_LEN 32
#define MXR_SERIAL_LEN 32
#define MXR_MODEL_LEN 48
#define MXR_VERSION_LEN 129
#define MXR_SIGNAL_TYPE_LEN 48
#define MXR_MESSAGE_LEN 128
#define MXR_AMP_EQ_BANDS 5
#define MXR_IP_STRING_LEN 16
#define MXR_MULTIVIEWER_INPUTS 4
#define MXR_UTP_PAIRS 4
#define MXR_PDU_OUTLETS 8
#define MXR_SCALING_FLAG_MODE_VALID (1 << 0)
#define MXR_SCALING_FLAG_OPTIONS_VALID (1 << 1)
#define MXR_SCALING_FLAG_AUTO_SCALING (1 << 7)
enum mxr_arc_status_t
#ifdef __cplusplus
: int32_t
#endif {
MXR_ARC_INACTIVE = 0,
MXR_ARC_HDMI = 1,
MXR_ARC_OPTICAL = 2,
MXR_ARC_ANALOG = 3,
};
#ifndef __cplusplus
typedef int32_t mxr_arc_status_t;
#endif
enum mxr_device_status_t
#ifdef __cplusplus
: int32_t
#endif {
MXR_DEVICE_ONLINE = 0,
MXR_DEVICE_OFFLINE = 1,
MXR_DEVICE_REBOOTING = 2,
MXR_DEVICE_BOOTING = 3,
MXR_DEVICE_INACTIVE = 4,
};
#ifndef __cplusplus
typedef int32_t mxr_device_status_t;
#endif
enum mxr_power_status_t
#ifdef __cplusplus
: int32_t
#endif {
MXR_POWER_UNKNOWN = 0,
MXR_POWER_ON = 1,
MXR_POWER_OFF = 2,
};
#ifndef __cplusplus
typedef int32_t mxr_power_status_t;
#endif
enum mxr_result_t
#ifdef __cplusplus
: int32_t
#endif {
MXR_OK = 0,
MXR_ERR_INVALID_ARGUMENT = -1,
MXR_ERR_NOT_FOUND = -2,
MXR_ERR_PROTOCOL_TOO_OLD = -3,
MXR_ERR_NOT_CONNECTED = -4,
MXR_ERR_IO = -5,
MXR_ERR_UNSUPPORTED = -6,
MXR_ERR_NOT_REPORTED = -7,
MXR_ERR_PANIC = -8,
};
#ifndef __cplusplus
typedef int32_t mxr_result_t;
#endif
enum mxr_stream_kind_t
#ifdef __cplusplus
: int32_t
#endif {
MXR_STREAM_VIDEO = 0,
MXR_STREAM_AUDIO = 1,
MXR_STREAM_ANC = 2,
MXR_STREAM_ARC = 3,
};
#ifndef __cplusplus
typedef int32_t mxr_stream_kind_t;
#endif
enum mxr_tribool_t
#ifdef __cplusplus
: int8_t
#endif {
MXR_UNKNOWN = -1,
MXR_FALSE = 0,
MXR_TRUE = 1,
};
#ifndef __cplusplus
typedef int8_t mxr_tribool_t;
#endif
typedef struct mxr_remote_t mxr_remote_t;
typedef struct {
uint8_t bytes[16];
} mxr_uid_t;
typedef struct {
mxr_uid_t device;
uint16_t port;
} mxr_bay_uid_t;
typedef struct {
uint32_t sample_rate;
uint8_t channels;
} mxr_audio_format_t;
typedef struct {
uint8_t gain_left;
uint8_t gain_right;
uint8_t volume_min;
uint8_t volume_max;
uint8_t bass;
uint8_t treble;
uint8_t bridged;
uint8_t power_mode;
uint8_t power_level;
uint32_t delay_left;
uint32_t delay_right;
uint32_t power_timeout;
uint8_t eq_left[MXR_AMP_EQ_BANDS];
uint8_t eq_right[MXR_AMP_EQ_BANDS];
} mxr_amp_zone_settings_t;
typedef struct {
mxr_uid_t uid;
char name[MXR_NAME_LEN];
char serial[MXR_SERIAL_LEN];
char model[MXR_MODEL_LEN];
char version[MXR_VERSION_LEN];
uint16_t supported_protocol;
uint32_t features;
char address[MXR_IP_STRING_LEN];
mxr_device_status_t status;
bool online;
bool configuration_complete;
bool config_initialised;
mxr_uid_t mesh_master;
uint8_t hdbt_outputs;
mxr_tribool_t setup_done;
int32_t installer_id;
bool has_system_status;
uint16_t system_status;
char system_message[MXR_MESSAGE_LEN];
size_t temperature_count;
size_t bay_count;
} mxr_device_info_t;
typedef struct {
mxr_bay_uid_t uid;
char port_name[MXR_NAME_LEN];
char user_name[MXR_NAME_LEN];
uint8_t bay_num;
uint32_t features;
bool is_input;
bool is_output;
bool is_audio;
bool has_dolby;
bool is_local;
mxr_bay_uid_t video_source;
mxr_bay_uid_t audio_source;
mxr_power_status_t power_status;
mxr_tribool_t hidden;
mxr_tribool_t faulty;
mxr_tribool_t poe_powered;
mxr_tribool_t hdbt_connected;
mxr_tribool_t signal_detected;
mxr_tribool_t hpd_detected;
mxr_tribool_t cec_detected;
mxr_tribool_t encoder_disabled;
mxr_tribool_t decoder_disabled;
char signal_type[MXR_SIGNAL_TYPE_LEN];
uint16_t signal_mode;
mxr_arc_status_t arc;
bool has_volume;
uint8_t volume;
mxr_tribool_t muted;
bool has_rc_type;
uint8_t rc_type;
bool has_edid_profile;
uint16_t edid_profile;
mxr_bay_uid_t mirror;
int16_t audio_endpoint;
mxr_bay_uid_t linked_bay;
mxr_uid_t v2ip_uid;
size_t filtered_count;
} mxr_bay_info_t;
typedef struct {
double frame_rate;
uint32_t tmds_clock;
uint32_t clock_rate;
uint32_t status;
uint16_t scaling;
} mxr_signal_details_t;
typedef struct {
const char *target_ip;
uint16_t port;
bool broadcast;
const char *local_ip;
const char *interface;
const char *name;
const char *uid;
const char *uid_path;
} mxr_config_t;
typedef void (*mxr_device_cb)(void *userdata, mxr_uid_t device);
typedef void (*mxr_bay_cb)(void *userdata, mxr_bay_uid_t bay);
typedef void (*mxr_device_bool_cb)(void *userdata, mxr_uid_t device, bool value);
typedef void (*mxr_system_status_cb)(void *userdata,
mxr_uid_t device,
uint16_t status,
const char *message);
typedef void (*mxr_device_uid_cb)(void *userdata, mxr_uid_t device, mxr_uid_t other);
typedef void (*mxr_device_u16_cb)(void *userdata, mxr_uid_t device, uint16_t value);
typedef struct {
mxr_uid_t target;
uint8_t op;
const uint8_t *params;
size_t params_len;
} mxr_multiviewer_command_t;
typedef void (*mxr_multiviewer_command_cb)(void *userdata,
mxr_uid_t device,
const mxr_multiviewer_command_t *command);
typedef struct {
mxr_uid_t source_uid;
uint16_t source_id;
mxr_uid_t target_uid;
uint16_t target_id;
} mxr_audio_change_source_t;
typedef void (*mxr_audio_select_cb)(void *userdata,
mxr_uid_t device,
const mxr_audio_change_source_t *change);
typedef void (*mxr_endpoint_bool_cb)(void *userdata, mxr_uid_t device, uint16_t endpoint, bool value);
typedef void (*mxr_endpoint_u32_cb)(void *userdata,
mxr_uid_t device,
uint16_t endpoint,
uint32_t value);
typedef struct {
const char *serial;
uint16_t sink_bay;
uint16_t source_bay;
bool no_power_on;
bool audio_only;
} mxr_set_route_request_t;
typedef void (*mxr_set_route_cb)(void *userdata,
mxr_uid_t device,
const mxr_set_route_request_t *request);
typedef struct {
mxr_uid_t target;
bool output;
} mxr_edid_request_t;
typedef void (*mxr_edid_request_cb)(void *userdata,
mxr_uid_t device,
const mxr_edid_request_t *request);
typedef struct {
bool output;
const uint8_t *data;
size_t data_len;
} mxr_edid_record_t;
typedef void (*mxr_edid_record_cb)(void *userdata, mxr_uid_t device, const mxr_edid_record_t *record);
typedef struct {
mxr_uid_t target;
uint16_t port;
const char *name;
} mxr_bay_name_change_t;
typedef void (*mxr_bay_name_change_cb)(void *userdata,
mxr_uid_t device,
const mxr_bay_name_change_t *change);
typedef struct {
mxr_uid_t target;
uint16_t profile;
} mxr_edid_profile_change_t;
typedef void (*mxr_edid_profile_change_cb)(void *userdata,
mxr_uid_t device,
const mxr_edid_profile_change_t *change);
typedef struct {
bool all;
mxr_uid_t target;
} mxr_factory_reset_request_t;
typedef void (*mxr_factory_reset_cb)(void *userdata,
mxr_uid_t device,
const mxr_factory_reset_request_t *request);
typedef struct {
mxr_uid_t target;
bool enabled;
} mxr_power_save_request_t;
typedef void (*mxr_power_save_cb)(void *userdata,
mxr_uid_t device,
const mxr_power_save_request_t *request);
typedef struct {
mxr_uid_t target;
uint16_t local_bay;
uint16_t key;
} mxr_key_transmit_request_t;
typedef void (*mxr_key_transmit_cb)(void *userdata,
mxr_uid_t device,
const mxr_key_transmit_request_t *request);
typedef struct {
mxr_uid_t target;
uint16_t local_bay;
uint16_t action;
} mxr_action_transmit_request_t;
typedef void (*mxr_action_transmit_cb)(void *userdata,
mxr_uid_t device,
const mxr_action_transmit_request_t *request);
typedef struct {
uint16_t timer_resolution;
uint16_t frequency;
uint16_t nb_timings;
uint16_t repeat_offset;
uint8_t status;
} mxr_ir_meta_t;
typedef struct {
mxr_uid_t target;
uint8_t local_mode;
uint8_t local_bay;
uint32_t timestamp;
mxr_ir_meta_t meta;
const uint8_t *timings;
size_t timings_len;
} mxr_ir_transmit_request_t;
typedef void (*mxr_ir_transmit_cb)(void *userdata,
mxr_uid_t device,
const mxr_ir_transmit_request_t *request);
typedef struct {
mxr_uid_t target;
bool registered;
} mxr_blacklist_change_t;
typedef void (*mxr_blacklist_cb)(void *userdata,
mxr_uid_t device,
const mxr_blacklist_change_t *change);
typedef struct {
mxr_uid_t target;
uint16_t pos_x;
uint16_t pos_y;
uint16_t width;
uint16_t height;
uint16_t raster_w;
uint16_t raster_h;
uint8_t op;
} mxr_video_wall_command_t;
typedef void (*mxr_video_wall_cb)(void *userdata,
mxr_uid_t device,
const mxr_video_wall_command_t *command);
typedef void (*mxr_bay_bay_cb)(void *userdata, mxr_bay_uid_t bay, mxr_bay_uid_t other);
typedef void (*mxr_volume_cb)(void *userdata, mxr_bay_uid_t bay, uint8_t volume, mxr_tribool_t muted);
typedef void (*mxr_power_cb)(void *userdata, mxr_bay_uid_t bay, mxr_power_status_t power);
typedef void (*mxr_bay_str_cb)(void *userdata, mxr_bay_uid_t bay, const char *value);
typedef void (*mxr_bay_bool_cb)(void *userdata, mxr_bay_uid_t bay, bool value);
typedef void (*mxr_arc_cb)(void *userdata, mxr_bay_uid_t bay, mxr_arc_status_t arc);
typedef void (*mxr_bay_u16_cb)(void *userdata, mxr_bay_uid_t bay, uint16_t value);
typedef void (*mxr_bay_u8_cb)(void *userdata, mxr_bay_uid_t bay, uint8_t value);
typedef struct {
uint32_t timestamp;
uint32_t last_change;
mxr_ir_meta_t meta;
const uint8_t *timings;
size_t timings_len;
} mxr_ir_capture_t;
typedef void (*mxr_ir_capture_cb)(void *userdata, mxr_bay_uid_t bay, const mxr_ir_capture_t *capture);
typedef void (*mxr_bay_linked_cb)(void *userdata,
mxr_bay_uid_t bay,
const char *linked_serial,
const char *bay_name,
uint32_t features);
typedef void (*mxr_bay_unlinked_cb)(void *userdata,
mxr_bay_uid_t bay,
const char *linked_serial,
const char *bay_name);
typedef struct {
mxr_device_cb on_device_update;
mxr_bay_cb on_bay_update;
mxr_device_cb on_device_config_changed;
mxr_device_cb on_device_config_complete;
mxr_device_bool_cb on_device_online_changed;
mxr_device_cb on_device_temperature_changed;
mxr_device_cb on_firmware_version_changed;
mxr_system_status_cb on_system_status_changed;
mxr_device_cb on_network_status_changed;
mxr_device_cb on_v2ip_stats_changed;
mxr_device_cb on_v2ip_sources_changed;
mxr_device_cb on_v2ip_details_changed;
mxr_device_cb on_v2ip_sink_changed;
mxr_device_cb on_multiviewer_status_changed;
mxr_device_cb on_audio_endpoints_changed;
mxr_device_uid_cb on_mesh_master_changed;
mxr_device_cb on_topology_changed;
mxr_device_cb on_amp_dolby_settings_changed;
mxr_device_cb on_pdu_state_changed;
mxr_device_bool_cb on_setup_status_changed;
mxr_device_u16_cb on_installer_id_changed;
mxr_device_cb on_tiling_changed;
mxr_device_cb on_rc_settings_changed;
mxr_device_uid_cb on_v2ip_link_changed;
mxr_multiviewer_command_cb on_multiviewer_command;
mxr_audio_select_cb on_audio_select_input;
mxr_endpoint_bool_cb on_audio_endpoint_mute;
mxr_endpoint_bool_cb on_audio_endpoint_trigger;
mxr_endpoint_u32_cb on_audio_endpoint_volume;
mxr_device_cb on_discover_request;
mxr_set_route_cb on_set_route_requested;
mxr_edid_request_cb on_edid_requested;
mxr_edid_record_cb on_edid_received;
mxr_bay_name_change_cb on_bay_name_change_requested;
mxr_edid_profile_change_cb on_edid_profile_change_requested;
mxr_device_uid_cb on_reboot_requested;
mxr_factory_reset_cb on_factory_reset_requested;
mxr_device_cb on_monitoring_pulse;
mxr_device_cb on_upgrade_fpga_requested;
mxr_device_cb on_detect_bays_requested;
mxr_power_save_cb on_power_save_requested;
mxr_key_transmit_cb on_key_transmit_requested;
mxr_action_transmit_cb on_action_transmit_requested;
mxr_ir_transmit_cb on_ir_transmit_requested;
mxr_blacklist_cb on_blacklist_changed;
mxr_video_wall_cb on_video_wall_command;
mxr_bay_cb on_bay_registered;
mxr_bay_bay_cb on_video_source_changed;
mxr_bay_bay_cb on_audio_source_changed;
mxr_volume_cb on_volume_changed;
mxr_power_cb on_power_changed;
mxr_bay_str_cb on_name_changed;
mxr_bay_bool_cb on_signal_detected_changed;
mxr_bay_bool_cb on_faulty_changed;
mxr_bay_bool_cb on_hidden_changed;
mxr_bay_bool_cb on_poe_powered_changed;
mxr_bay_bool_cb on_hdbt_connected_changed;
mxr_bay_str_cb on_signal_type_changed;
mxr_bay_bool_cb on_hpd_detected_changed;
mxr_bay_bool_cb on_cec_detected_changed;
mxr_arc_cb on_arc_changed;
mxr_bay_u16_cb on_edid_profile_changed;
mxr_bay_u8_cb on_rc_type_changed;
mxr_bay_u16_cb on_key_pressed;
mxr_bay_u16_cb on_action_received;
mxr_bay_bay_cb on_mirror_status_changed;
mxr_bay_cb on_amp_zone_settings_changed;
mxr_bay_bool_cb on_volume_step;
mxr_bay_u8_cb on_audio_clip;
mxr_ir_capture_cb on_ir_captured;
mxr_bay_cb on_filtered_devices_changed;
mxr_bay_u8_cb on_audio_endpoint_changed;
mxr_bay_bool_cb on_encoder_disabled_changed;
mxr_bay_bool_cb on_decoder_disabled_changed;
mxr_bay_linked_cb on_bay_linked;
mxr_bay_unlinked_cb on_bay_unlinked;
} mxr_callbacks_t;
typedef struct {
uint32_t video;
uint32_t audio;
uint32_t anc;
uint32_t stream_down;
uint32_t overflow;
} mxr_v2ip_tx_stats_t;
typedef struct {
uint32_t video_total;
uint32_t video_dropped;
uint32_t video_seq_errors;
uint32_t wdt_timeout;
uint32_t audio_total;
uint32_t audio_dropped;
uint32_t audio_seq_errors;
uint32_t anc_total;
uint32_t anc_dropped;
uint32_t anc_seq_errors;
uint8_t decoder_state;
} mxr_v2ip_rx_stats_t;
typedef struct {
mxr_v2ip_tx_stats_t tx;
mxr_v2ip_tx_stats_t tx_per_minute;
mxr_v2ip_rx_stats_t rx;
mxr_v2ip_rx_stats_t rx_per_minute;
} mxr_v2ip_stats_t;
typedef struct {
mxr_stream_kind_t kind;
char ip[MXR_IP_STRING_LEN];
uint16_t port;
bool valid;
} mxr_stream_source_t;
typedef struct {
mxr_stream_source_t video;
mxr_stream_source_t audio;
mxr_stream_source_t anc;
mxr_stream_source_t arc;
int16_t tx_rate;
int16_t dscp_video;
int16_t dscp_audio;
int16_t dscp_anc;
uint16_t scaling_mode;
uint16_t scaling_refresh;
uint8_t scaling_flags;
} mxr_v2ip_details_t;
typedef struct {
mxr_uid_t uid;
mxr_stream_source_t video;
mxr_stream_source_t audio;
mxr_stream_source_t anc;
bool has_arc;
mxr_stream_source_t arc;
} mxr_stream_sources_t;
typedef struct {
mxr_stream_sources_t addresses;
bool has_audio_format;
mxr_audio_format_t audio_format;
} mxr_v2ip_sink_t;
typedef struct {
mxr_uid_t target;
uint16_t pos_x;
uint16_t pos_y;
uint16_t width;
uint16_t height;
} mxr_tiling_config_t;
typedef struct {
mxr_uid_t uid;
mxr_uid_t mappings[MXR_MULTIVIEWER_INPUTS];
char mcu_version[MXR_NAME_LEN];
char scaler_version[MXR_NAME_LEN];
uint8_t hw_view_mode;
uint8_t view_mode;
uint8_t pip_position;
uint8_t pip_size;
uint8_t output_mode;
uint8_t hdcp_mode;
uint8_t output_itc;
uint8_t edid_template;
uint8_t aspect_ratio;
uint8_t auto_switch;
uint8_t audio_source;
bool has_audio_volume;
uint8_t audio_volume;
uint8_t audio_muted;
uint8_t video_sources[MXR_MULTIVIEWER_INPUTS];
uint8_t remote_control;
} mxr_multiviewer_status_t;
typedef struct {
uint8_t mode;
bool pcm_upmix;
bool dolby_detected;
bool pcm_upmix_active;
} mxr_dolby_settings_t;
typedef struct {
double current;
double voltage;
double power;
double dissipation;
double frequency;
uint8_t outlets[MXR_PDU_OUTLETS];
} mxr_pdu_state_t;
typedef struct {
mxr_uid_t target;
uint8_t rc_target;
char ip[MXR_IP_STRING_LEN];
bool cec_enabled;
bool cec_auto_on;
bool forward_rc;
bool forward_ir;
uint8_t rc_status;
char status_name[MXR_NAME_LEN];
} mxr_rc_settings_t;
typedef struct {
bool polarity;
uint8_t pair;
uint32_t skew;
uint32_t length;
} mxr_cable_status_t;
typedef struct {
uint16_t port;
char name[MXR_NAME_LEN];
uint8_t link_speed;
bool link_full_duplex;
char ip[MXR_IP_STRING_LEN];
char querier[MXR_IP_STRING_LEN];
bool has_mac_address;
uint8_t mac_address[6];
bool has_errors;
bool in_error;
bool in_fcs_error;
bool in_collision;
bool out_deferred;
bool out_excessive;
bool polarity_error;
bool skew_warning;
bool length_warning;
bool has_vct_status;
bool vct_warning[MXR_UTP_PAIRS];
size_t cable_status_count;
mxr_cable_status_t cable_status[MXR_UTP_PAIRS];
} mxr_network_port_t;
typedef struct {
mxr_uid_t uid;
uint32_t mask;
} mxr_topology_entry_t;
typedef struct {
uint8_t firmware_type;
uint32_t timestamp;
uint32_t hash;
char version[MXR_VERSION_LEN];
} mxr_firmware_version_t;
typedef struct {
uint8_t id;
uint32_t features;
bool has_address;
mxr_stream_source_t address;
int16_t parent;
size_t child_count;
bool has_inputs_available;
uint32_t inputs_available;
bool has_inputs_routed;
uint32_t inputs_routed;
mxr_uid_t linked_device;
int16_t linked_endpoint;
} mxr_audio_endpoint_t;
#ifdef __cplusplus
extern "C" {
#endif
const char *mxr_version(void);
const char *mxr_last_error(void);
bool mxr_uid_is_zero(mxr_uid_t uid);
mxr_result_t mxr_uid_to_string(mxr_uid_t uid, char *out, size_t cap);
mxr_result_t mxr_uid_from_string(const char *text, mxr_uid_t *out);
mxr_result_t mxr_select_video_source(const mxr_remote_t *remote,
mxr_bay_uid_t sink,
uint16_t source_port);
mxr_result_t mxr_select_audio_source(const mxr_remote_t *remote,
mxr_bay_uid_t sink,
uint16_t source_port);
mxr_result_t mxr_select_video_source_by_name(const mxr_remote_t *remote,
mxr_bay_uid_t sink,
const char *name);
mxr_result_t mxr_select_audio_source_by_name(const mxr_remote_t *remote,
mxr_bay_uid_t sink,
const char *name,
const mxr_audio_format_t *format);
mxr_result_t mxr_select_audio_source_addr(const mxr_remote_t *remote,
mxr_bay_uid_t sink,
const char *audio_ip,
uint16_t audio_port,
const mxr_audio_format_t *format);
mxr_result_t mxr_set_bay_name(const mxr_remote_t *remote, mxr_bay_uid_t bay, const char *name);
mxr_result_t mxr_set_bay_hidden(const mxr_remote_t *remote, mxr_bay_uid_t bay, bool hidden);
mxr_result_t mxr_select_edid_profile(const mxr_remote_t *remote,
mxr_bay_uid_t bay,
uint16_t profile);
mxr_result_t mxr_send_action(const mxr_remote_t *remote, mxr_bay_uid_t bay, uint16_t action);
mxr_result_t mxr_power_on(const mxr_remote_t *remote, mxr_bay_uid_t bay);
mxr_result_t mxr_power_off(const mxr_remote_t *remote, mxr_bay_uid_t bay);
mxr_result_t mxr_set_volume(const mxr_remote_t *remote,
mxr_bay_uid_t bay,
uint8_t volume,
mxr_tribool_t muted);
mxr_result_t mxr_volume_up(const mxr_remote_t *remote, mxr_bay_uid_t bay);
mxr_result_t mxr_volume_down(const mxr_remote_t *remote, mxr_bay_uid_t bay);
mxr_result_t mxr_set_muted(const mxr_remote_t *remote, mxr_bay_uid_t bay, bool muted);
mxr_result_t mxr_set_amp_zone_settings(const mxr_remote_t *remote,
mxr_bay_uid_t bay,
const mxr_amp_zone_settings_t *settings);
mxr_result_t mxr_set_audio_endpoint_muted(const mxr_remote_t *remote,
mxr_uid_t device,
uint16_t endpoint,
bool muted);
mxr_result_t mxr_set_audio_endpoint_trigger(const mxr_remote_t *remote,
mxr_uid_t device,
uint16_t endpoint,
bool active);
mxr_result_t mxr_set_audio_endpoint_volume(const mxr_remote_t *remote,
mxr_uid_t device,
uint16_t endpoint,
uint32_t volume);
mxr_result_t mxr_select_audio_endpoint_input(const mxr_remote_t *remote,
mxr_uid_t sink,
uint16_t sink_endpoint,
mxr_uid_t source,
uint16_t source_endpoint);
mxr_result_t mxr_subscribe_v2ip_stats(const mxr_remote_t *remote, mxr_uid_t device, bool subscribe);
mxr_result_t mxr_reboot(const mxr_remote_t *remote, mxr_uid_t device);
mxr_result_t mxr_send_monitoring_pulse(const mxr_remote_t *remote);
mxr_result_t mxr_set_multiviewer_view_mode(const mxr_remote_t *remote,
mxr_uid_t device,
uint8_t mode);
mxr_result_t mxr_set_multiviewer_video_source(const mxr_remote_t *remote,
mxr_uid_t device,
uint8_t screen,
uint8_t source);
mxr_result_t mxr_set_multiviewer_audio_source(const mxr_remote_t *remote,
mxr_uid_t device,
uint8_t source);
mxr_result_t mxr_set_multiviewer_audio_volume(const mxr_remote_t *remote,
mxr_uid_t device,
uint8_t volume,
bool muted);
mxr_result_t mxr_set_multiviewer_edid_template(const mxr_remote_t *remote,
mxr_uid_t device,
uint8_t template_);
mxr_result_t mxr_set_multiviewer_remote_control(const mxr_remote_t *remote,
mxr_uid_t device,
uint8_t source);
mxr_result_t mxr_set_multiviewer_pip_size(const mxr_remote_t *remote,
mxr_uid_t device,
uint8_t size);
mxr_result_t mxr_set_multiviewer_pip_position(const mxr_remote_t *remote,
mxr_uid_t device,
uint8_t position);
mxr_result_t mxr_set_multiviewer_aspect_ratio(const mxr_remote_t *remote,
mxr_uid_t device,
uint8_t aspect);
mxr_result_t mxr_set_multiviewer_auto_switch(const mxr_remote_t *remote,
mxr_uid_t device,
bool enable);
mxr_result_t mxr_set_multiviewer_output_mode(const mxr_remote_t *remote,
mxr_uid_t device,
uint8_t mode);
mxr_result_t mxr_set_multiviewer_output_itc(const mxr_remote_t *remote,
mxr_uid_t device,
uint8_t mode);
mxr_result_t mxr_set_multiviewer_hdcp_mode(const mxr_remote_t *remote,
mxr_uid_t device,
uint8_t mode);
mxr_result_t mxr_set_multiviewer_input_source(const mxr_remote_t *remote,
mxr_uid_t device,
uint8_t input,
mxr_uid_t source);
mxr_result_t mxr_multiviewer_auto_route(const mxr_remote_t *remote, mxr_uid_t device);
mxr_result_t mxr_device(const mxr_remote_t *remote, mxr_uid_t uid, mxr_device_info_t *out);
mxr_result_t mxr_bay(const mxr_remote_t *remote, mxr_bay_uid_t bay, mxr_bay_info_t *out);
mxr_result_t mxr_bay_signal_details(const mxr_remote_t *remote,
mxr_bay_uid_t bay,
mxr_signal_details_t *out);
mxr_result_t mxr_bay_amp_settings(const mxr_remote_t *remote,
mxr_bay_uid_t bay,
mxr_amp_zone_settings_t *out);
size_t mxr_device_bays(const mxr_remote_t *remote, mxr_uid_t uid, mxr_bay_uid_t *out, size_t cap);
size_t mxr_device_temperatures(const mxr_remote_t *remote, mxr_uid_t uid, uint8_t *out, size_t cap);
size_t mxr_bay_filtered(const mxr_remote_t *remote, mxr_bay_uid_t bay, mxr_uid_t *out, size_t cap);
mxr_remote_t *mxr_remote_new(const mxr_config_t *config,
const mxr_callbacks_t *callbacks,
void *userdata);
mxr_result_t mxr_remote_start(const mxr_remote_t *remote);
void mxr_remote_close(const mxr_remote_t *remote);
void mxr_remote_free(mxr_remote_t *remote);
mxr_result_t mxr_remote_uid(const mxr_remote_t *remote, mxr_uid_t *out);
mxr_result_t mxr_remote_name(const mxr_remote_t *remote, char *out, size_t cap);
mxr_result_t mxr_remote_target(const mxr_remote_t *remote, char *ip, size_t cap, uint16_t *port);
size_t mxr_devices(const mxr_remote_t *remote, mxr_uid_t *out, size_t cap);
mxr_result_t mxr_device_by_serial(const mxr_remote_t *remote, const char *serial, mxr_uid_t *out);
mxr_result_t mxr_resolve_device(const mxr_remote_t *remote, const char *name, mxr_uid_t *out);
mxr_result_t mxr_bay_by_name(const mxr_remote_t *remote,
mxr_uid_t device,
const char *port_name,
mxr_bay_uid_t *out);
mxr_result_t mxr_bay_by_stream_ip(const mxr_remote_t *remote,
const char *ip,
bool audio,
mxr_bay_uid_t *out);
mxr_result_t mxr_remote_update_config(const mxr_remote_t *remote,
const char *local_ip,
bool broadcast);
mxr_result_t mxr_discover(const mxr_remote_t *remote);
mxr_result_t mxr_v2ip_stats(const mxr_remote_t *remote, mxr_uid_t uid, mxr_v2ip_stats_t *out);
mxr_result_t mxr_v2ip_details(const mxr_remote_t *remote, mxr_uid_t uid, mxr_v2ip_details_t *out);
mxr_result_t mxr_v2ip_sink(const mxr_remote_t *remote, mxr_uid_t uid, mxr_v2ip_sink_t *out);
mxr_result_t mxr_v2ip_tiling(const mxr_remote_t *remote, mxr_uid_t uid, mxr_tiling_config_t *out);
mxr_result_t mxr_multiviewer_status(const mxr_remote_t *remote,
mxr_uid_t uid,
mxr_multiviewer_status_t *out);
mxr_result_t mxr_dolby_settings(const mxr_remote_t *remote,
mxr_uid_t uid,
mxr_dolby_settings_t *out);
mxr_result_t mxr_pdu_state(const mxr_remote_t *remote, mxr_uid_t uid, mxr_pdu_state_t *out);
mxr_result_t mxr_rc_settings(const mxr_remote_t *remote, mxr_uid_t uid, mxr_rc_settings_t *out);
size_t mxr_v2ip_sources(const mxr_remote_t *remote,
mxr_uid_t uid,
mxr_stream_sources_t *out,
size_t cap);
size_t mxr_network_status(const mxr_remote_t *remote,
mxr_uid_t uid,
mxr_network_port_t *out,
size_t cap);
size_t mxr_topology(const mxr_remote_t *remote,
mxr_uid_t uid,
mxr_topology_entry_t *out,
size_t cap);
size_t mxr_device_firmware(const mxr_remote_t *remote,
mxr_uid_t uid,
mxr_firmware_version_t *out,
size_t cap);
size_t mxr_audio_endpoints(const mxr_remote_t *remote,
mxr_uid_t uid,
mxr_audio_endpoint_t *out,
size_t cap);
size_t mxr_audio_endpoint_children(const mxr_remote_t *remote,
mxr_uid_t uid,
uint8_t endpoint,
uint8_t *out,
size_t cap);
#ifdef __cplusplus
} #endif
#endif