cec: more cleanups. split up cec_adapter_message and cec_command. use cec_command...
[deb_libcec.git] / include / CECExportsCpp.h
index ac00190571599ea9510396faa83f489b25b79cb4..7d70e7fe24c830cf74a36512bf7f316d6a5e0bff 100644 (file)
 
 namespace CEC
 {
-  class ICECDevice
+  class ICECAdapter
   {
   public:
+    virtual ~ICECAdapter() {};
+    /*! @name Adapter methods */
+    //@{
     /*!
      * @see cec_open
      */
-    virtual bool Open(const char *strPort, int iTimeoutMs = 10000) = 0;
+    virtual bool Open(const char *strPort, uint32_t iTimeoutMs = 10000) = 0;
 
     /*!
      * @see cec_close
      */
-    virtual bool Close(int iTimeoutMs = 2000) = 0;
+    virtual void Close(void) = 0;
 
     /*!
-     * @see cec_find_devices
+     * @see cec_find_adapters
      */
-    virtual int  FindDevices(std::vector<cec_device> &deviceList, const char *strDevicePath = NULL) = 0;
+    virtual int8_t FindAdapters(cec_adapter *deviceList, uint8_t iBufSize, const char *strDevicePath = NULL) = 0;
 
     /*!
-     * @see cec_ping
+     * @see cec_ping_adapters
      */
-    virtual bool Ping(void) = 0;
+    virtual bool PingAdapter(void) = 0;
 
     /*!
      * @see cec_start_bootloader
      */
     virtual bool StartBootloader(void) = 0;
+    //@}
 
     /*!
-     * @see cec_power_off_devices
-     */
-    virtual bool PowerOffDevices(cec_logical_address address = CECDEVICE_BROADCAST) = 0;
-
-    /*!
-     * @see cec_power_on_devices
-     */
-    virtual bool PowerOnDevices(cec_logical_address address = CECDEVICE_BROADCAST) = 0;
-
-    /*!
-     * @see cec_standby_devices
-     */
-    virtual bool StandbyDevices(cec_logical_address address = CECDEVICE_BROADCAST) = 0;
-
-    /*!
-     * @see cec_set_active_view
+     * @see cec_get_min_version
      */
-    virtual bool SetActiveView(void) = 0;
+    virtual int8_t GetMinVersion(void) = 0;
 
     /*!
-     * @see cec_set_inactive_view
+     * @see cec_get_lib_version
      */
-    virtual bool SetInactiveView(void) = 0;
+    virtual int8_t GetLibVersion(void) = 0;
 
     /*!
      * @see cec_get_next_log_message
@@ -104,7 +93,7 @@ namespace CEC
     /*!
      * @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_command &data, bool bWaitForAck = true) = 0;
 
     /*!
      * @see cec_set_logical_address
@@ -112,23 +101,31 @@ namespace CEC
     virtual bool SetLogicalAddress(cec_logical_address iLogicalAddress) = 0;
 
     /*!
-     * @deprecated use SetLogicalAddress() instead
+     * @see cec_power_on_devices
      */
-    virtual bool SetAckMask(uint16_t iMask) = 0;
+    virtual bool PowerOnDevices(cec_logical_address address = CECDEVICE_TV) = 0;
 
     /*!
-     * @see cec_get_min_version
+     * @see cec_standby_devices
      */
-    virtual int GetMinVersion(void) = 0;
+    virtual bool StandbyDevices(cec_logical_address address = CECDEVICE_BROADCAST) = 0;
 
     /*!
-     * @see cec_get_lib_version
+     * @see cec_set_active_view
      */
-    virtual int GetLibVersion(void) = 0;
+    virtual bool SetActiveView(void) = 0;
+
+    /*!
+     * @see cec_set_inactive_view
+     */
+    virtual bool SetInactiveView(void) = 0;
+
   };
 };
 
-extern DECLSPEC void * CECCreate(const char *strDeviceName, CEC::cec_logical_address iLogicalAddress = CEC::CECDEVICE_PLAYBACKDEVICE1, int iPhysicalAddress = CEC_DEFAULT_PHYSICAL_ADDRESS);
+extern DECLSPEC void * CECCreate(const char *strDeviceName, CEC::cec_logical_address iLogicalAddress = CEC::CECDEVICE_PLAYBACKDEVICE1, uint16_t iPhysicalAddress = CEC_DEFAULT_PHYSICAL_ADDRESS);
+
+extern DECLSPEC void CECDestroy(CEC::ICECAdapter *instance);
 
 #if !defined(DLL_EXPORT)
 #if defined(_WIN32) || defined(_WIN64)
@@ -141,9 +138,9 @@ 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)
+inline CEC::ICECAdapter *LoadLibCec(const char *strName, CEC::cec_logical_address iLogicalAddress = CEC::CECDEVICE_PLAYBACKDEVICE1, uint16_t iPhysicalAddress = CEC_DEFAULT_PHYSICAL_ADDRESS)
 {
-  typedef void* (__cdecl*_CreateLibCec)(const char *, uint8_t, uint8_t);
+  typedef void* (__cdecl*_CreateLibCec)(const char *, uint8_t, uint16_t);
   _CreateLibCec CreateLibCec;
 
   if (!g_libCEC)
@@ -155,16 +152,20 @@ inline CEC::ICECDevice *LoadLibCec(const char *strName, CEC::cec_logical_address
   CreateLibCec = (_CreateLibCec) (GetProcAddress(g_libCEC, "CECCreate"));
   if (!CreateLibCec)
     return NULL;
-  return static_cast< CEC::ICECDevice* > (CreateLibCec(strName, iLogicalAddress, iPhysicalAddress));
+  return static_cast< CEC::ICECAdapter* > (CreateLibCec(strName, (uint8_t) iLogicalAddress, iPhysicalAddress));
 }
 
 /*!
  * @brief Unload the given libcec instance.
  * @param device The instance to unload.
  */
-inline void UnloadLibCec(CEC::ICECDevice *device)
+inline void UnloadLibCec(CEC::ICECAdapter *device)
 {
-  delete device;
+  typedef void (__cdecl*_DestroyLibCec)(void * device);
+  _DestroyLibCec DestroyLibCec;
+  DestroyLibCec = (_DestroyLibCec) (GetProcAddress(g_libCEC, "CECDestroy"));
+  if (DestroyLibCec)
+    DestroyLibCec(device);
 
   if (--g_iLibCECInstanceCount == 0)
   {
@@ -178,18 +179,19 @@ inline void UnloadLibCec(CEC::ICECDevice *device)
 /*!
  * @see cec_init
  */
-inline CEC::ICECDevice *LoadLibCec(const char *strName, CEC::cec_logical_address iLogicalAddress = CEC::CECDEVICE_PLAYBACKDEVICE1, int iPhysicalAddress = CEC_DEFAULT_PHYSICAL_ADDRESS)
+inline CEC::ICECAdapter *LoadLibCec(const char *strName, CEC::cec_logical_address iLogicalAddress = CEC::CECDEVICE_PLAYBACKDEVICE1, uint16_t iPhysicalAddress = CEC_DEFAULT_PHYSICAL_ADDRESS)
 {
-  return (CEC::ICECDevice*) CECCreate(strName, iLogicalAddress, iPhysicalAddress);
+  return (CEC::ICECAdapter*) CECCreate(strName, iLogicalAddress, iPhysicalAddress);
 };
 
 /*!
  * @brief Unload the given libcec instance.
  * @param device The instance to unload.
  */
-inline void UnloadLibCec(CEC::ICECDevice *device)
+inline void UnloadLibCec(CEC::ICECAdapter *device)
 {
-  delete device;
+  device->Close();
+  CECDestroy(device);
 };
 #endif