+
+ /*!
+ * @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;
+
+ /*!
+ * @brief Changes the active HDMI port.
+ * @param iBaseDevice The device to which this libCEC is connected.
+ * @param iPort The new port number.
+ * @return True when changed, false otherwise.
+ */
+ virtual bool SetHDMIPort(cec_logical_address iBaseDevice, uint8_t iPort) = 0;
+
+ /*!
+ * @brief Get the physical address of the device with the given logical address.
+ * @param iLogicalAddress The logical address of the device to get the physical address for.
+ * @return The physical address or 0 if it wasn't found.
+ */
+ virtual uint16_t GetDevicePhysicalAddress(cec_logical_address iLogicalAddress) = 0;
+
+ /*!
+ * @return A string with information about how libCEC was compiled.
+ */
+ virtual const char *GetLibInfo(void) = 0;
+
+ /*!
+ * @brief Calling this method will initialise the host on which libCEC is running.
+ * Calling this method will initialise the host on which libCEC is running. On the RPi, it calls
+ * bcm_host_init(), which may only be called once per process, and is called by any process using
+ * the video api on that system. So only call this method if libCEC is used in an application that
+ * does not already initialise the video api.
+ *
+ * Should be called as first call to libCEC, directly after CECInitialise() and before using Open()
+ */
+ virtual void InitVideoStandalone(void) = 0;
+
+ /*!
+ * @return The (virtual) USB vendor id
+ */
+ virtual uint16_t GetAdapterVendorId(void) const = 0;
+
+ /*!
+ * @return The (virtual) USB product id
+ */
+ virtual uint16_t GetAdapterProductId(void) const = 0;
+
+ virtual const char *ToString(const cec_menu_state state) = 0;
+ virtual const char *ToString(const cec_version version) = 0;
+ virtual const char *ToString(const cec_power_status status) = 0;
+ virtual const char *ToString(const cec_logical_address address) = 0;
+ virtual const char *ToString(const cec_deck_control_mode mode) = 0;
+ virtual const char *ToString(const cec_deck_info status) = 0;
+ virtual const char *ToString(const cec_opcode opcode) = 0;
+ virtual const char *ToString(const cec_system_audio_status mode) = 0;
+ virtual const char *ToString(const cec_audio_status status) = 0;
+ virtual const char *ToString(const cec_vendor_id vendor) = 0;
+ virtual const char *ToString(const cec_client_version version) = 0;
+ virtual const char *ToString(const cec_server_version version) = 0;
+ virtual const char *ToString(const cec_user_control_code key) = 0;
+ virtual const char *ToString(const cec_adapter_type type) = 0;
+
+ /*!
+ * @brief Toggle the mute status of the AVR (if present)
+ * @return The new audio status.
+ */
+ virtual uint8_t AudioToggleMute(void) = 0;
+
+ /*!
+ * @brief Mute the AVR (if present)
+ * @return The new audio status.
+ */
+ virtual uint8_t AudioMute(void) = 0;
+
+ /*!
+ * @brief Mute the AVR (if connected)
+ * @return The new audio status.
+ */
+ virtual uint8_t AudioUnmute(void) = 0;
+
+ /*!
+ * @brief Get the current audio status (if an AVR is connected)
+ * @return The current audio status, or cec_audio_status if unknown.
+ */
+ virtual uint8_t AudioStatus(void) = 0;
+
+ /*!
+ * @brief Try to find all connected CEC adapters.
+ * @param deviceList The vector to store device descriptors in.
+ * @param iBufSize The size of the deviceList buffer.
+ * @param strDevicePath Optional device path. Only adds device descriptors that match the given device path.
+ * @param bQuickScan True to do a "quick scan", which will not open a connection to the adapter. Firmware version information and the exact device type will be missing
+ * @return The number of devices that were found, or -1 when an error occured.
+ */
+ virtual int8_t DetectAdapters(cec_adapter_descriptor *deviceList, uint8_t iBufSize, const char *strDevicePath = NULL, bool bQuickScan = false) = 0;
+