* @param strPort The name of the com port to use.
* @param iBaudRate The baudrate to use on the com port connection.
*/
- CUSBCECAdapterCommunication(IAdapterCommunicationCallback *callback, const char *strPort, uint16_t iBaudRate = 38400);
+ CUSBCECAdapterCommunication(IAdapterCommunicationCallback *callback, const char *strPort, uint16_t iBaudRate = CEC_SERIAL_DEFAULT_BAUDRATE);
virtual ~CUSBCECAdapterCommunication(void);
/** @name IAdapterCommunication implementation */
///{
- bool Open(uint32_t iTimeoutMs = 10000, bool bSkipChecks = false, bool bStartListening = true);
+ bool Open(uint32_t iTimeoutMs = CEC_DEFAULT_CONNECT_TIMEOUT, bool bSkipChecks = false, bool bStartListening = true);
void Close(void);
bool IsOpen(void);
CStdString GetError(void) const;
- cec_adapter_message_state Write(const cec_command &data, uint8_t iMaxTries, uint8_t iLineTimeout = 3, uint8_t iRetryLineTimeout = 3);
+ cec_adapter_message_state Write(const cec_command &data, bool &bRetry, uint8_t iLineTimeout = 3);
bool StartBootloader(void);
bool SetAckMask(uint16_t iMask);
+ uint16_t GetAckMask(void);
bool PingAdapter(void);
uint16_t GetFirmwareVersion(void);
- bool PersistConfiguration(libcec_configuration *configuration);
- bool GetConfiguration(libcec_configuration *configuration);
+ uint32_t GetFirmwareBuildDate(void);
+ bool IsRunningLatestFirmware(void);
+ bool PersistConfiguration(const libcec_configuration &configuration);
+ bool GetConfiguration(libcec_configuration &configuration);
CStdString GetPortName(void);
- uint16_t GetPhysicalAddress(void) { return 0; }
+ uint16_t GetPhysicalAddress(void);
bool SetControlledMode(bool controlled);
///}
* @brief Clear all input bytes.
* @param iTimeout Timeout when anything was received.
*/
- void ClearInputBytes(uint32_t iTimeout = 1000);
+ void ClearInputBytes(uint32_t iTimeout = CEC_CLEAR_INPUT_DEFAULT_WAIT);
/*!
* @brief Change the current CEC line timeout.
* @param iTimeoutMs The timeout after which this fails if no proper data was received.
* @return True when the checks passed, false otherwise.
*/
- bool CheckAdapter(uint32_t iTimeoutMs = 10000);
+ bool CheckAdapter(uint32_t iTimeoutMs = CEC_DEFAULT_CONNECT_TIMEOUT);
/*!
* @brief Handle a poll message inside the adapter message (checks if one is present).
*/
void MarkAsWaiting(const cec_logical_address dest);
+ /*!
+ * @brief Clear and reset the message queue.
+ */
+ void ResetMessageQueue(void);
+
PLATFORM::ISocket * m_port; /**< the com port connection */
PLATFORM::CMutex m_mutex; /**< mutex for changes in this class */
uint8_t m_iLineTimeout; /**< the current line timeout on the CEC line */
CAdapterPingThread * m_pingThread; /**< ping thread, that pings the adapter every 15 seconds */
CUSBCECAdapterCommands * m_commands; /**< commands that can be sent to the adapter */
CCECAdapterMessageQueue * m_adapterMessageQueue; /**< the incoming and outgoing message queue */
+ uint16_t m_iAckMask;
};
class CAdapterPingThread : public PLATFORM::CThread