+ /*!
+ * @brief Open a connection to the CEC adapter
+ * @param cb The callback struct. if set to NULL, the Read() method has to be used to read commands. if set, OnCommandReceived() will be called for each command that was received
+ * @param iTimeoutMs Connection timeout in ms
+ * @return True when connected, false otherwise
+ */
+ virtual bool Open(IAdapterCommunicationCallback *cb, uint32_t iTimeoutMs = 10000) = 0;
+
+ /*!
+ * @brief Close an open connection
+ */
+ virtual void Close(void) = 0;
+
+ /*!
+ * @return True when the connection is open, false otherwise
+ */
+ virtual bool IsOpen(void) = 0;
+
+ /*!
+ * @return The last error message, or an empty string if there was none
+ */
+ virtual CStdString GetError(void) const = 0;
+
+ /*!
+ * @brief Reads one cec_command from the adapter
+ * @param command The command that will be read (output)
+ * @param iTimeout The read timeout
+ * @return True when a command has been read, false otherwise.
+ */
+ virtual bool Read(cec_command &command, uint32_t iTimeout) = 0;
+
+ /*!
+ * @brief Write a cec_command to the adapter
+ * @param data The command to write
+ * @param iMaxTries The maximum number of tries
+ * @param iLineTimeout The line timeout for the first try
+ * @param iRetryLineTimeout The line timeout for each next try
+ * @return The last state of the transmitted command
+ */
+ virtual cec_adapter_message_state Write(const cec_command &data, uint8_t iMaxTries, uint8_t iLineTimeout = 3, uint8_t iRetryLineTimeout = 3) = 0;