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.
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)
{
}
}
- 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 strLib The name of and/or path to libCEC
- * @return An instance of libCEC or NULL when it failed to load.
+ * @param configuration The configuration to pass to libCEC
+ * @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::CecAdapterConfiguration &configuration)
{
if (!g_libCEC)
{
}
}
- typedef void* _LibCecInit(const char *, CEC::cec_device_type_list);
- _LibCecInit* LibCecInit = (_LibCecInit*) dlsym(g_libCEC, "CECInit");
- if (!LibCecInit)
+ typedef void* _LibCecInitialise(const CEC::CecAdapterConfiguration &);
+ _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);
}
/*!