+ /*!
+ * @brief Sends a volume up keypress to an audiosystem if it's present.
+ * @param bSendRelease Send a key release after the keypress.
+ * @return The new audio status.
+ */
+ virtual uint8_t VolumeUp(bool bSendRelease = true) = 0;
+
+ /*!
+ * @brief Sends a volume down keypress to an audiosystem if it's present.
+ * @param bSendRelease Send a key release after the keypress.
+ * @return The new audio status.
+ */
+ virtual uint8_t VolumeDown(bool bSendRelease = true) = 0;
+
+ /*!
+ * @deprecated Use AudioToggleMute() instead
+ * @brief Sends a mute keypress to an audiosystem if it's present.
+ * @param bSendRelease Send a key release after the keypress.
+ * @return The new audio status.
+ */
+ virtual uint8_t MuteAudio(bool bSendRelease = true) = 0;
+
+ /*!
+ * @brief Send a keypress to a device on the CEC bus.
+ * @param iDestination The logical address of the device to send the message to.
+ * @param key The key to send.
+ * @param bWait True to wait for a response, false otherwise.
+ * @return True when the keypress was acked, false otherwise.
+ */
+ virtual bool SendKeypress(cec_logical_address iDestination, cec_user_control_code key, bool bWait = false) = 0;
+
+ /*!
+ * @brief Send a key release to a device on the CEC bus.
+ * @param iDestination The logical address of the device to send the message to.
+ * @param bWait True to wait for a response, false otherwise.
+ * @return True when the key release was acked, false otherwise.
+ */
+ virtual bool SendKeyRelease(cec_logical_address iDestination, bool bWait = false) = 0;
+
+ /*!
+ * @brief Get the OSD name of a device on the CEC bus.
+ * @param iLogicalAddress The device to get the OSD name for.
+ * @return The OSD name.
+ */
+ virtual cec_osd_name GetDeviceOSDName(cec_logical_address iLogicalAddress) = 0;
+
+ /*!
+ * @brief Get the logical address of the device that is currently the active source on the CEC bus.
+ * @return The active source or CECDEVICE_UNKNOWN when unknown.
+ */
+ virtual cec_logical_address GetActiveSource(void) = 0;
+
+ /*!
+ * @brief Check whether a device is currently the active source on the CEC bus.
+ * @param iLogicalAddress The logical address of the device to check.
+ * @return True when it is the active source, false otherwise.
+ */
+ virtual bool IsActiveSource(cec_logical_address iLogicalAddress) = 0;
+
+ /*!
+ * @brief Sets the stream path to the device on the given logical address.
+ * @param iLogicalAddress The address to activate.
+ * @return True when the command was sent, false otherwise.
+ */
+ virtual bool SetStreamPath(cec_logical_address iLogicalAddress) = 0;
+
+ /*!
+ * @brief Sets the stream path to the device on the given physical address.
+ * @param iPhysicalAddress The address to activate.
+ * @return True when the command was sent, false otherwise.
+ */
+ virtual bool SetStreamPath(uint16_t iPhysicalAddress) = 0;
+
+ /*!
+ * @return The list of logical addresses that libCEC is controlling
+ */
+ virtual cec_logical_addresses GetLogicalAddresses(void) = 0;
+
+ /*!
+ * @brief Get libCEC's current configuration.
+ * @param configuration The configuration.
+ * @return True when the configuration was updated, false otherwise.
+ */
+ virtual bool GetCurrentConfiguration(libcec_configuration *configuration) = 0;
+
+ /*!
+ * @brief Change libCEC's configuration.
+ * @param configuration The new configuration.
+ * @return True when the configuration was changed successfully, false otherwise.
+ */
+ virtual bool SetConfiguration(const libcec_configuration *configuration) = 0;
+
+ /*!
+ * @return True when this CEC adapter can persist the user configuration, false otherwise.
+ */
+ virtual bool CanPersistConfiguration(void) = 0;
+
+ /*!
+ * @brief Persist the given configuration in adapter (if supported)
+ * @brief configuration The configuration to store.
+ * @return True when the configuration was persisted, false otherwise.
+ */
+ virtual bool PersistConfiguration(libcec_configuration *configuration) = 0;
+
+ /*!
+ * @brief Tell libCEC to poll for active devices on the bus.
+ */
+ virtual void RescanActiveDevices(void) = 0;
+
+ /*!
+ * @return true when libCEC is the active source on the bus, false otherwise.
+ */
+ virtual bool IsLibCECActiveSource(void) = 0;
+
+ /*!
+ * @brief Get information about the given CEC adapter.
+ * @param strPort The port to which the device is connected
+ * @param config The device configuration
+ * @param iTimeoutMs The timeout in milliseconds
+ * @return True when the device was found, false otherwise
+ */
+ virtual bool GetDeviceInformation(const char *strPort, libcec_configuration *config, uint32_t iTimeoutMs = 10000) = 0;
+
+ /*!
+ * @brief Set and enable the callback methods. If this method is not called, the GetNext...() methods will have to be used.
+ * @param cbParam Parameter to pass to callback methods.
+ * @param callbacks The callbacks to set.
+ * @return True when enabled, false otherwise.
+ */
+ virtual bool EnableCallbacks(void *cbParam, ICECCallbacks *callbacks) = 0;
+