X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=include%2Fcecloader.h;h=3e48b26ed16abda5d5c6fc3c02f426100b87dabd;hb=66e5bd7231e47eaef8a6472856443b4acffb48bd;hp=d20ca2ff22e22007f0a41fd2e3886e10f9e219e6;hpb=f8513317a5f4bb2d9d0843193c3c98eca19f8e8a;p=deb_libcec.git diff --git a/include/cecloader.h b/include/cecloader.h index d20ca2f..3e48b26 100644 --- a/include/cecloader.h +++ b/include/cecloader.h @@ -1,7 +1,8 @@ +#pragma once /* * This file is part of the libCEC(R) library. * - * libCEC(R) is Copyright (C) 2011 Pulse-Eight Limited. All rights reserved. + * libCEC(R) is Copyright (C) 2011-2012 Pulse-Eight Limited. All rights reserved. * libCEC(R) is an original work, containing original code. * * libCEC(R) is a trademark of Pulse-Eight Limited. @@ -39,10 +40,17 @@ HINSTANCE g_libCEC = NULL; +/*! + * @deprecated Please use LibCecInit() instead + */ 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) { 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; @@ -54,6 +62,36 @@ CEC::ICECAdapter *LoadLibCec(const char *strName, CEC::cec_logical_address iLogi return static_cast< CEC::ICECAdapter* > (CreateLibCec(strName, (uint8_t) iLogicalAddress, iPhysicalAddress)); } +/*! + * @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 *LibCecInit(const char *strDeviceName, CEC::cec_device_type_list types, 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*_LibCecInit)(const char *, CEC::cec_device_type_list); + _LibCecInit LibCecInit; + LibCecInit = (_LibCecInit) (GetProcAddress(g_libCEC, "CECInit")); + if (!LibCecInit) + return NULL; + return static_cast< CEC::ICECAdapter* > (LibCecInit(strDeviceName, types)); +} + +/*! + * @brief Destroy an instance of libCEC. + * @param device The instance to destroy. + */ void UnloadLibCec(CEC::ICECAdapter *device) { typedef void (__cdecl*_DestroyLibCec)(void * device); @@ -72,6 +110,9 @@ void UnloadLibCec(CEC::ICECAdapter *device) void *g_libCEC = NULL; +/*! + * @deprecated Please use LibCecInit() instead + */ 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) { if (!g_libCEC) @@ -103,6 +144,13 @@ CEC::ICECAdapter *LoadLibCec(const char *strName, CEC::cec_logical_address iLogi return (CEC::ICECAdapter*) CreateLibCec(strName, iLogicalAddress, iPhysicalAddress); } +/*! + * @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 *LibCecInit(const char *strDeviceName, CEC::cec_device_type_list types, const char *strLib = NULL) { if (!g_libCEC) @@ -134,6 +182,10 @@ CEC::ICECAdapter *LibCecInit(const char *strDeviceName, CEC::cec_device_type_lis return (CEC::ICECAdapter*) LibCecInit(strDeviceName, types); } +/*! + * @brief Destroy an instance of libCEC. + * @param device The instance to destroy. + */ void UnloadLibCec(CEC::ICECAdapter *device) { typedef void* _DestroyLibCec(CEC::ICECAdapter *);