37#if defined(_WIN32) || defined(_WIN64) || defined(_M_ARM64)
53#define _libcecc_resolve(lib, tar, name, method) \
55 tar = (method) libcecc_resolve(lib, name); \
58 libcecc_close_library(lib); \
71#if CEC_LIB_VERSION_MAJOR >= 5
106#if CEC_LIB_VERSION_MAJOR >= 5
116#if CEC_LIB_VERSION_MAJOR >= 5
137 void (
CDECL *menu_state_to_string)(
const CEC_NAMESPACE cec_menu_state state,
char* buf,
size_t bufsize);
138 void (
CDECL *cec_version_to_string)(
const CEC_NAMESPACE cec_version version,
char* buf,
size_t bufsize);
139 void (
CDECL *power_status_to_string)(
const CEC_NAMESPACE cec_power_status status,
char* buf,
size_t bufsize);
140 void (
CDECL *logical_address_to_string)(
const CEC_NAMESPACE cec_logical_address address,
char* buf,
size_t bufsize);
141 void (
CDECL *deck_control_mode_to_string)(
const CEC_NAMESPACE cec_deck_control_mode mode,
char* buf,
size_t bufsize);
142 void (
CDECL *deck_status_to_string)(
const CEC_NAMESPACE cec_deck_info status,
char* buf,
size_t bufsize);
144 void (
CDECL *system_audio_status_to_string)(
const CEC_NAMESPACE cec_system_audio_status mode,
char* buf,
size_t bufsize);
145 void (
CDECL *audio_status_to_string)(
const CEC_NAMESPACE cec_audio_status status,
char* buf,
size_t bufsize);
146 void (
CDECL *vendor_id_to_string)(
const CEC_NAMESPACE cec_vendor_id vendor,
char* buf,
size_t bufsize);
147 void (
CDECL *user_control_key_to_string)(
const CEC_NAMESPACE cec_user_control_code key,
char* buf,
size_t bufsize);
148 void (
CDECL *adapter_type_to_string)(
const CEC_NAMESPACE cec_adapter_type type,
char* buf,
size_t bufsize);
149 void (
CDECL *version_to_string)(uint32_t version,
char* buf,
size_t bufsize);
162#if CEC_LIB_VERSION_MAJOR >= 5
197#if CEC_LIB_VERSION_MAJOR >= 5
207#if CEC_LIB_VERSION_MAJOR >= 5
248#if defined(_WIN32) || defined(_WIN64) || defined(_M_ARM64)
249 lib = LoadLibrary(strLib ? strLib :
"cec.dll");
251 printf(
"failed to load cec.dll\n");
253 #if defined(__APPLE__)
254 lib = dlopen(strLib ? strLib :
"libcec." CEC_LIB_VERSION_MAJOR_STR
".dylib", RTLD_LAZY);
256 lib = dlopen(strLib ? strLib :
"libcec.so." CEC_LIB_VERSION_MAJOR_STR, RTLD_LAZY);
259 printf(
"%s\n", dlerror());
266#if defined(_WIN32) || defined(_WIN64) || defined(_M_ARM64)
275#if defined(_WIN32) || defined(_WIN64) || defined(_M_ARM64)
276 return GetProcAddress(lib, name);
278 return dlsym(lib, name);
287 memset(configuration, 0,
sizeof(
CEC_NAMESPACE libcec_configuration));
293 if (_clear_configuration)
294 _clear_configuration(configuration);
317 iface->
connection = _cec_initialise(configuration);
CEC::ICECAdapter * libcec_connection_t
static void libcecc_close_library(libcecc_lib_instance_t lib)
static libcecc_lib_instance_t libcecc_load_library(const char *strLib)
#define _libcecc_resolve(lib, tar, name, method)
static int libcecc_resolve_all(void *lib, libcec_interface_t *iface)
static void * libcecc_resolve(void *lib, const char *name)
void * libcecc_lib_instance_t
void libcecc_reset_configuration(CEC::libcec_configuration *configuration)
void libcecc_destroy(libcec_interface_t *iface)
Destroy an instance of libCEC.
int libcecc_initialise(CEC::libcec_configuration *configuration, libcec_interface_t *iface, const char *strLib)
Create a new libCEC instance.
To create a new libCEC instance, call CECInitialise() and pass the configuration as argument.
const char *(* get_lib_info)(libcec_connection_t connection)
CEC::cec_logical_addresses(* get_active_devices)(libcec_connection_t connection)
int(* volume_down)(libcec_connection_t connection, int bSendRelease)
int(* open)(libcec_connection_t connection, const char *strPort, uint32_t iTimeout)
uint16_t(* get_device_physical_address)(libcec_connection_t connection, CEC::cec_logical_address iLogicalAddress)
void(* audio_status_to_string)(const CEC::cec_audio_status status, char *buf, size_t bufsize)
void(* logical_address_to_string)(const CEC::cec_logical_address address, char *buf, size_t bufsize)
int(* set_configuration)(libcec_connection_t connection, const CEC::libcec_configuration *configuration)
uint8_t(* audio_unmute)(libcec_connection_t connection)
uint16_t(* get_adapter_product_id)(libcec_connection_t connection)
int(* set_logical_address)(libcec_connection_t connection, CEC::cec_logical_address iLogicalAddress)
libcecc_lib_instance_t lib_instance
int(* get_device_menu_language)(libcec_connection_t connection, CEC::cec_logical_address iLogicalAddress, CEC::cec_menu_language language)
void(* version_to_string)(uint32_t version, char *buf, size_t bufsize)
int(* power_on_devices)(libcec_connection_t connection, CEC::cec_logical_address address)
int(* is_active_device)(libcec_connection_t connection, CEC::cec_logical_address address)
int(* get_device_information)(libcec_connection_t connection, const char *strPort, CEC::libcec_configuration *config, uint32_t iTimeoutMs)
uint8_t(* audio_mute)(libcec_connection_t connection)
int(* get_current_configuration)(libcec_connection_t connection, CEC::libcec_configuration *configuration)
uint16_t(* get_adapter_vendor_id)(libcec_connection_t connection)
void(* opcode_to_string)(const CEC::cec_opcode opcode, char *buf, size_t bufsize)
int8_t(* detect_adapters)(libcec_connection_t connection, CEC::cec_adapter_descriptor *deviceList, uint8_t iBufSize, const char *strDevicePath, int bQuickScan)
void(* adapter_type_to_string)(const CEC::cec_adapter_type type, char *buf, size_t bufsize)
uint8_t(* audio_get_status)(libcec_connection_t connection)
int(* send_keypress)(libcec_connection_t connection, CEC::cec_logical_address iDestination, CEC::cec_user_control_code key, int bWait)
CEC::cec_logical_address(* get_active_source)(libcec_connection_t connection)
int(* set_deck_info)(libcec_connection_t connection, CEC::cec_deck_info info, int bSendUpdate)
int(* volume_up)(libcec_connection_t connection, int bSendRelease)
int(* ping_adapters)(libcec_connection_t connection)
int(* set_osd_string)(libcec_connection_t connection, CEC::cec_logical_address iLogicalAddress, CEC::cec_display_control duration, const char *strMessage)
int(* is_active_device_type)(libcec_connection_t connection, CEC::cec_device_type type)
void(* clear_configuration)(CEC::libcec_configuration *configuration)
int(* switch_monitoring)(libcec_connection_t connection, int bEnable)
int(* mute_audio)(libcec_connection_t connection, int bSendRelease)
int(* start_bootloader)(libcec_connection_t connection)
libcec_connection_t connection
void(* menu_state_to_string)(const CEC::cec_menu_state state, char *buf, size_t bufsize)
int(* send_key_release)(libcec_connection_t connection, CEC::cec_logical_address iDestination, int bWait)
int(* is_libcec_active_source)(libcec_connection_t connection)
CEC::cec_power_status(* get_device_power_status)(libcec_connection_t connection, CEC::cec_logical_address iLogicalAddress)
CEC::cec_logical_addresses(* get_logical_addresses)(libcec_connection_t connection)
int(* set_physical_address)(libcec_connection_t connection, uint16_t iPhysicalAddress)
int(* set_menu_state)(libcec_connection_t connection, CEC::cec_menu_state state, int bSendUpdate)
int(* poll_device)(libcec_connection_t connection, CEC::cec_logical_address iLogicalAddress)
int(* set_callbacks)(libcec_connection_t connection, CEC::ICECCallbacks *callbacks, void *cbParam)
int(* system_audio_mode)(libcec_connection_t connection, int bEnable)
void(* init_video_standalone)(libcec_connection_t connection)
void(* cec_version_to_string)(const CEC::cec_version version, char *buf, size_t bufsize)
int(* get_device_osd_name)(libcec_connection_t connection, CEC::cec_logical_address iAddress, CEC::cec_osd_name name)
int(* is_active_source)(libcec_connection_t connection, CEC::cec_logical_address iAddress)
int(* set_deck_control_mode)(libcec_connection_t connection, CEC::cec_deck_control_mode mode, int bSendUpdate)
void(* user_control_key_to_string)(const CEC::cec_user_control_code key, char *buf, size_t bufsize)
int(* transmit)(libcec_connection_t connection, const CEC::cec_command *data)
void(* deck_status_to_string)(const CEC::cec_deck_info status, char *buf, size_t bufsize)
int(* set_active_source)(libcec_connection_t connection, CEC::cec_device_type type)
void(* system_audio_status_to_string)(const CEC::cec_system_audio_status mode, char *buf, size_t bufsize)
CEC::cec_version(* get_device_cec_version)(libcec_connection_t connection, CEC::cec_logical_address iLogicalAddress)
int(* standby_devices)(libcec_connection_t connection, CEC::cec_logical_address address)
int(* can_save_configuration)(libcec_connection_t connection)
void(* close)(libcec_connection_t connection)
int(* disable_callbacks)(libcec_connection_t connection)
int8_t(* find_adapters)(libcec_connection_t connection, CEC::cec_adapter *deviceList, uint8_t iBufSize, const char *strDevicePath)
void(* vendor_id_to_string)(const CEC::cec_vendor_id vendor, char *buf, size_t bufsize)
uint8_t(* system_audio_mode_get_status)(libcec_connection_t connection)
void(* deck_control_mode_to_string)(const CEC::cec_deck_control_mode mode, char *buf, size_t bufsize)
int(* set_hdmi_port)(libcec_connection_t connection, CEC::cec_logical_address baseDevice, uint8_t iPort)
libcec_connection_t(* initialise)(CEC::libcec_configuration *configuration)
int(* set_inactive_view)(libcec_connection_t connection)
int(* set_stream_path_physical)(libcec_connection_t connection, uint16_t iPhysicalAddress)
void(* destroy)(libcec_connection_t connection)
uint32_t(* get_device_vendor_id)(libcec_connection_t connection, CEC::cec_logical_address iLogicalAddress)
int(* set_stream_path_logical)(libcec_connection_t connection, CEC::cec_logical_address iAddress)
void(* power_status_to_string)(const CEC::cec_power_status status, char *buf, size_t bufsize)
void(* rescan_devices)(libcec_connection_t connection)
uint8_t(* audio_toggle_mute)(libcec_connection_t connection)