X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=src%2Flib%2Fadapter%2FUSBCECAdapterCommunication.h;h=0177f0850c7273fdf0e1b102e5324f48243c4d5b;hb=7937b924bc92b9194bc9ad7c12af6aa08cecd819;hp=9d125a7b1080fd1de958f5827d8cd8bb4e2ab39b;hpb=64d46f80cc6f34f531ae26e8677f2f0b0c1f74bb;p=deb_libcec.git diff --git a/src/lib/adapter/USBCECAdapterCommunication.h b/src/lib/adapter/USBCECAdapterCommunication.h index 9d125a7..0177f08 100644 --- a/src/lib/adapter/USBCECAdapterCommunication.h +++ b/src/lib/adapter/USBCECAdapterCommunication.h @@ -61,23 +61,26 @@ namespace CEC * @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; } bool SetControlledMode(bool controlled); @@ -90,7 +93,7 @@ namespace CEC * @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. @@ -124,7 +127,7 @@ namespace CEC * @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). @@ -154,6 +157,11 @@ namespace CEC */ 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 */ @@ -163,6 +171,7 @@ namespace CEC 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