X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=include%2Fcecloader.h;h=1a75169154fed380f059d5f5e941cee3db2bac12;hb=718b36327e63c34d6eaebacfe1d3c9cd76fc86ef;hp=33a2e3feaf666e56e2212afa202b3c4b58744e28;hpb=a4b8e3f0b62e289ad5e0e6bf58949bbdeed1c623;p=deb_libcec.git diff --git a/include/cecloader.h b/include/cecloader.h index 33a2e3f..1a75169 100644 --- a/include/cecloader.h +++ b/include/cecloader.h @@ -66,6 +66,35 @@ CEC::ICECAdapter *LibCecInit(const char *strDeviceName, CEC::cec_device_type_lis return static_cast< CEC::ICECAdapter* > (LibCecInit(strDeviceName, types)); } +/*! + * @brief Create a new libCEC instance. + * @param configuration The configuration to pass to libCEC + * @param strLib The name of and/or path to libCEC + * @return An instance of ICECAdapter or NULL on error. + */ +CEC::ICECAdapter *LibCecInitialise(const CEC::libcec_configuration *configuration, const char *strLib = NULL) +{ + if (!g_libCEC) +#if defined(_WIN64) + g_libCEC = LoadLibrary(strLib ? strLib : "libcec.x64.dll"); +#else + g_libCEC = LoadLibrary(strLib ? strLib : "libcec.dll"); +#endif + if (!g_libCEC) + return NULL; + + typedef void* (__cdecl*_LibCecInitialise)(const CEC::libcec_configuration *); + _LibCecInitialise LibCecInitialise; + LibCecInitialise = (_LibCecInitialise) (GetProcAddress(g_libCEC, "CECInitialise")); + if (!LibCecInitialise) + { + cout << "cannot find CECInitialise" << endl; + return NULL; + } + + return static_cast< CEC::ICECAdapter* > (LibCecInitialise(configuration)); +} + /*! * @brief Destroy an instance of libCEC. * @param device The instance to destroy. @@ -89,9 +118,13 @@ void UnloadLibCec(CEC::ICECAdapter *device) void *g_libCEC = NULL; /*! - * @deprecated Please use LibCecInit() instead + * @brief Create a new libCEC instance. + * @param strDeviceName The name of the primary device to pass to other CEC devices. + * @param types The list of device types to register on the bus. + * @param strLib The name of and/or path to libCEC + * @return An instance of libCEC or NULL when it failed to load. */ -CEC::ICECAdapter *LoadLibCec(const char *strName, CEC::cec_logical_address iLogicalAddress = CEC::CECDEVICE_PLAYBACKDEVICE1, uint16_t iPhysicalAddress = CEC_DEFAULT_PHYSICAL_ADDRESS, const char *strLib = NULL) +CEC::ICECAdapter *LibCecInit(const char *strDeviceName, CEC::cec_device_type_list types, const char *strLib = NULL) { if (!g_libCEC) { @@ -111,25 +144,24 @@ CEC::ICECAdapter *LoadLibCec(const char *strName, CEC::cec_logical_address iLogi } } - typedef void* _CreateLibCec(const char *, uint8_t, uint16_t); - _CreateLibCec* CreateLibCec = (_CreateLibCec*) dlsym(g_libCEC, "CECCreate"); - if (!CreateLibCec) + typedef void* _LibCecInit(const char *, CEC::cec_device_type_list); + _LibCecInit* LibCecInit = (_LibCecInit*) dlsym(g_libCEC, "CECInit"); + if (!LibCecInit) { - cout << "cannot find CECCreate" << endl; + cout << "cannot find CECInit" << endl; return NULL; } - return (CEC::ICECAdapter*) CreateLibCec(strName, iLogicalAddress, iPhysicalAddress); + return (CEC::ICECAdapter*) LibCecInit(strDeviceName, types); } /*! * @brief Create a new libCEC instance. - * @param strDeviceName The name of the primary device to pass to other CEC devices. - * @param types The list of device types to register on the bus. + * @param configuration The configuration to pass to libCEC * @param strLib The name of and/or path to libCEC - * @return An instance of libCEC or NULL when it failed to load. + * @return An instance of ICECAdapter or NULL on error. */ -CEC::ICECAdapter *LibCecInit(const char *strDeviceName, CEC::cec_device_type_list types, const char *strLib = NULL) +CEC::ICECAdapter *LibCecInitialise(const CEC::libcec_configuration *configuration, const char *strLib = NULL) { if (!g_libCEC) { @@ -149,15 +181,15 @@ CEC::ICECAdapter *LibCecInit(const char *strDeviceName, CEC::cec_device_type_lis } } - typedef void* _LibCecInit(const char *, CEC::cec_device_type_list); - _LibCecInit* LibCecInit = (_LibCecInit*) dlsym(g_libCEC, "CECInit"); - if (!LibCecInit) + typedef void* _LibCecInitialise(const CEC::libcec_configuration *); + _LibCecInitialise* LibCecInitialise = (_LibCecInitialise*) dlsym(g_libCEC, "CECInitialise"); + if (!LibCecInitialise) { - cout << "cannot find CECInit" << endl; + cout << "cannot find CECInitialise" << endl; return NULL; } - return (CEC::ICECAdapter*) LibCecInit(strDeviceName, types); + return (CEC::ICECAdapter*) LibCecInitialise(configuration); } /*!