X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=include%2FCECExportsCpp.h;h=635d5056bb8d7004188dc3e1e524f1e5cd05f9af;hb=5f39c4d854ec7441761bc6db870b6bbc73016309;hp=195ddf5c2a49a36636b0f5a37649751717f3a220;hpb=abbca718e0f6b5a20170561beeacafa0b5852500;p=deb_libcec.git diff --git a/include/CECExportsCpp.h b/include/CECExportsCpp.h index 195ddf5..635d505 100644 --- a/include/CECExportsCpp.h +++ b/include/CECExportsCpp.h @@ -41,6 +41,11 @@ namespace CEC */ virtual bool Open(const char *strPort, int iTimeoutMs = 10000) = 0; + /*! + * @see cec_close + */ + virtual void Close(void) = 0; + /*! * @see cec_find_devices */ @@ -57,7 +62,7 @@ namespace CEC virtual bool StartBootloader(void) = 0; /*! - * @see cec_power_off_devices + * @depcrecated Use StandbyDevices() instead */ virtual bool PowerOffDevices(cec_logical_address address = CECDEVICE_BROADCAST) = 0; @@ -91,22 +96,39 @@ namespace CEC */ virtual bool GetNextKeypress(cec_keypress *key) = 0; + /*! + * @see cec_get_next_command + */ + virtual bool GetNextCommand(cec_command *command) = 0; + /*! * @see cec_transmit */ - virtual bool Transmit(const cec_frame &data, bool bWaitForAck = true, int64_t iTimeout = (int64_t) 5000) = 0; + virtual bool Transmit(const cec_frame &data, bool bWaitForAck = true) = 0; /*! - * @see cec_set_ack_mask + * @see cec_set_logical_address */ - virtual bool SetAckMask(cec_logical_address ackmask) = 0; + virtual bool SetLogicalAddress(cec_logical_address iLogicalAddress) = 0; + /*! + * @deprecated use SetLogicalAddress() instead + */ + virtual bool SetAckMask(uint16_t iMask) = 0; + + /*! + * @see cec_get_min_version + */ virtual int GetMinVersion(void) = 0; + + /*! + * @see cec_get_lib_version + */ virtual int GetLibVersion(void) = 0; }; }; -extern DECLSPEC void * CECCreate(const char *strDeviceName); +extern DECLSPEC void * CECCreate(const char *strDeviceName, CEC::cec_logical_address iLogicalAddress = CEC::CECDEVICE_PLAYBACKDEVICE1, int iPhysicalAddress = CEC_DEFAULT_PHYSICAL_ADDRESS); #if !defined(DLL_EXPORT) #if defined(_WIN32) || defined(_WIN64) @@ -114,32 +136,57 @@ extern DECLSPEC void * CECCreate(const char *strDeviceName); #include static HINSTANCE g_libCEC = NULL; -inline CEC::ICECDevice *LoadLibCec(const char *strName) +static int g_iLibCECInstanceCount = 0; + +/*! + * @see cec_init + */ +inline CEC::ICECDevice *LoadLibCec(const char *strName, CEC::cec_logical_address iLogicalAddress = CEC::CECDEVICE_PLAYBACKDEVICE1, int iPhysicalAddress = CEC_DEFAULT_PHYSICAL_ADDRESS) { - typedef void* (__cdecl*_CreateLibCec)(const char *); + typedef void* (__cdecl*_CreateLibCec)(const char *, uint8_t, uint8_t); _CreateLibCec CreateLibCec; - g_libCEC = LoadLibrary("libcec.dll"); + if (!g_libCEC) + g_libCEC = LoadLibrary("libcec.dll"); if (!g_libCEC) return NULL; + + ++g_iLibCECInstanceCount; CreateLibCec = (_CreateLibCec) (GetProcAddress(g_libCEC, "CECCreate")); if (!CreateLibCec) return NULL; - return static_cast< CEC::ICECDevice* > (CreateLibCec(strName)); + return static_cast< CEC::ICECDevice* > (CreateLibCec(strName, iLogicalAddress, iPhysicalAddress)); } +/*! + * @brief Unload the given libcec instance. + * @param device The instance to unload. + */ inline void UnloadLibCec(CEC::ICECDevice *device) { delete device; - FreeLibrary(g_libCEC); + + if (--g_iLibCECInstanceCount == 0) + { + FreeLibrary(g_libCEC); + g_libCEC = NULL; + } }; #else -inline CEC::ICECDevice *LoadLibCec(const char *strName) + +/*! + * @see cec_init + */ +inline CEC::ICECDevice *LoadLibCec(const char *strName, CEC::cec_logical_address iLogicalAddress = CEC::CECDEVICE_PLAYBACKDEVICE1, int iPhysicalAddress = CEC_DEFAULT_PHYSICAL_ADDRESS) { - return (CEC::ICECDevice*) CECCreate(strName); + return (CEC::ICECDevice*) CECCreate(strName, iLogicalAddress, iPhysicalAddress); }; +/*! + * @brief Unload the given libcec instance. + * @param device The instance to unload. + */ inline void UnloadLibCec(CEC::ICECDevice *device) { delete device;