cec: removed timeout parameter from Transmit()
authorLars Op den Kamp <lars@opdenkamp.eu>
Sun, 2 Oct 2011 23:43:53 +0000 (01:43 +0200)
committerLars Op den Kamp <lars@opdenkamp.eu>
Sun, 2 Oct 2011 23:43:53 +0000 (01:43 +0200)
include/CECExports.h
include/CECExportsC.h
include/CECExportsCpp.h
src/lib/CECParser.cpp
src/lib/CECParser.h
src/lib/CECParserC.cpp
src/testclient/main.cpp

index 0aef25c30723e72e5b32fa177a1aeaf86b02e775..b5a3b5dbd84a1fbb8627b28471b8fca71a895270 100644 (file)
@@ -56,7 +56,7 @@ extern "C" {
 namespace CEC {
 #endif
   #define CEC_MIN_VERSION      2
-  #define CEC_LIB_VERSION      2
+  #define CEC_LIB_VERSION      3
   #define CEC_SETTLE_DOWN_TIME 1000
 
   typedef std::vector<uint8_t> cec_frame;
index f76e2f39f4e23510ff6115195e64b6c378246472..19706f468f93ddd70f607072c03a0aec79204428 100644 (file)
@@ -158,13 +158,12 @@ extern DECLSPEC bool cec_get_next_command(cec_command *command);
  * @brief Transmit a frame on the CEC line.
  * @param data The frame to send.
  * @param bWaitForAck Wait for an ACK message for 1 second after this frame has been sent.
- * @param iTimeout Timeout if the message could not be sent for this amount of ms. Does not influence the timeout of the wait for the ACK message. That timeout is specified by the CEC standard.
  * @return True when the data was sent and acked, false otherwise.
  */
 #ifdef __cplusplus
-extern DECLSPEC bool cec_transmit(const CEC::cec_frame &data, bool bWaitForAck = true, int64_t iTimeout = (int64_t) 5000);
+extern DECLSPEC bool cec_transmit(const CEC::cec_frame &data, bool bWaitForAck = true);
 #else
-extern DECLSPEC bool cec_transmit(const cec_frame &data, bool bWaitForAck = true, int64_t iTimeout = (int64_t) 5000);
+extern DECLSPEC bool cec_transmit(const cec_frame &data, bool bWaitForAck = true);
 #endif
 
 /*!
index 4f40bfec362b27d5668d46088c42f9f77f57406e..a87c2d018434d19e3ba457113b9f503fbb85f8bd 100644 (file)
@@ -104,7 +104,7 @@ namespace CEC
     /*!
      * @see cec_transmit
      */
-    virtual bool Transmit(const cec_frame &data, bool bWaitForAck = true, int64_t iTimeout = (int64_t) 5000) = 0;
+    virtual bool Transmit(const cec_frame &data, bool bWaitForAck = true) = 0;
 
     /*!
      * @see cec_set_logical_address
index 5ac1d8ea76c0278a24fdccee6d380728aa5790fc..4cbdd6c3c9e12684261ebd0def5c25342c3322b1 100644 (file)
@@ -48,6 +48,7 @@ using namespace CEC;
 using namespace std;
 
 #define CEC_MAX_RETRY 5
+#define CEC_BUTTON_TIMEOUT 500
 
 /*!
  * ICECDevice implementation
@@ -140,7 +141,7 @@ bool CCECParser::Process(void)
   while (m_bRunning)
   {
     cec_frame msg;
-    while (m_bRunning && m_communication->IsOpen() && m_communication->Read(msg, 500))
+    while (m_bRunning && m_communication->IsOpen() && m_communication->Read(msg, CEC_BUTTON_TIMEOUT))
       ParseMessage(msg);
 
     now = GetTimeMs();
@@ -165,7 +166,7 @@ bool CCECParser::Ping(void)
   PushEscaped(output, MSGCODE_PING);
   output.push_back(MSGEND);
 
-  if (!TransmitFormatted(output, false, (int64_t) 5000))
+  if (!TransmitFormatted(output, false))
   {
     AddLog(CEC_LOG_ERROR, "could not send ping command");
     return false;
@@ -188,7 +189,7 @@ bool CCECParser::StartBootloader(void)
   PushEscaped(output, MSGCODE_START_BOOTLOADER);
   output.push_back(MSGEND);
 
-  if (!TransmitFormatted(output, false, (int64_t) 5000))
+  if (!TransmitFormatted(output, false))
   {
     AddLog(CEC_LOG_ERROR, "could not start the bootloader");
     return false;
@@ -376,7 +377,7 @@ void CCECParser::BroadcastActiveSource(void)
   Transmit(frame);
 }
 
-bool CCECParser::TransmitFormatted(const cec_frame &data, bool bWaitForAck /* = true */, int64_t iTimeout /* = 2000 */)
+bool CCECParser::TransmitFormatted(const cec_frame &data, bool bWaitForAck /* = true */)
 {
   if (!m_communication || m_communication->Write(data) != data.size())
     return false;
@@ -391,7 +392,7 @@ bool CCECParser::TransmitFormatted(const cec_frame &data, bool bWaitForAck /* =
   return true;
 }
 
-bool CCECParser::Transmit(const cec_frame &data, bool bWaitForAck /* = true */, int64_t iTimeout /* = 5000 */)
+bool CCECParser::Transmit(const cec_frame &data, bool bWaitForAck /* = true */)
 {
   CStdString txStr = "transmit ";
   for (unsigned int i = 0; i < data.size(); i++)
@@ -432,16 +433,16 @@ bool CCECParser::Transmit(const cec_frame &data, bool bWaitForAck /* = true */,
     output.push_back(MSGEND);
   }
 
-  return TransmitFormatted(output, bWaitForAck, iTimeout);
+  return TransmitFormatted(output, bWaitForAck);
 }
 
-bool CCECParser::WaitForAck(int64_t iTimeout /* = 1000 */)
+bool CCECParser::WaitForAck(int iTimeout /* = 1000 */)
 {
   bool bGotAck(false);
   bool bError(false);
 
   int64_t iNow = GetTimeMs();
-  int64_t iTargetTime = iNow + iTimeout;
+  int64_t iTargetTime = iNow + (int64_t) iTimeout;
 
   while (!bGotAck && !bError && (iTimeout <= 0 || iNow < iTargetTime))
   {
@@ -677,7 +678,7 @@ void CCECParser::PushEscaped(cec_frame &vec, uint8_t byte)
 
 void CCECParser::CheckKeypressTimeout(int64_t now)
 {
-  if (m_iCurrentButton != CEC_USER_CONTROL_CODE_UNKNOWN && now - m_buttontime > 500)
+  if (m_iCurrentButton != CEC_USER_CONTROL_CODE_UNKNOWN && now - m_buttontime > CEC_BUTTON_TIMEOUT)
   {
     AddKey();
     m_iCurrentButton = CEC_USER_CONTROL_CODE_UNKNOWN;
index d429c92ca56c4b71ea394d0cfb2169ac6f9c667d..1c72c1ec56c276f24acfb2bf112f886a48f6aa2a 100644 (file)
@@ -66,7 +66,7 @@ namespace CEC
       virtual bool GetNextLogMessage(cec_log_message *message);
       virtual bool GetNextKeypress(cec_keypress *key);
       virtual bool GetNextCommand(cec_command *command);
-      virtual bool Transmit(const cec_frame &data, bool bWaitForAck = true, int64_t iTimeout = (int64_t) 5000);
+      virtual bool Transmit(const cec_frame &data, bool bWaitForAck = true);
       virtual bool SetLogicalAddress(cec_logical_address iLogicalAddress);
       virtual bool SetAckMask(uint16_t iMask);
       virtual int  GetMinVersion(void);
@@ -77,7 +77,7 @@ namespace CEC
       bool Process(void);
       void AddLog(cec_log_level level, const std::string &strMessage);
     protected:
-      virtual bool TransmitFormatted(const cec_frame &data, bool bWaitForAck = true, int64_t iTimeout = (int64_t) 2000);
+      virtual bool TransmitFormatted(const cec_frame &data, bool bWaitForAck = true);
       virtual void TransmitAbort(cec_logical_address address, cec_opcode opcode, ECecAbortReason reason = CEC_ABORT_REASON_UNRECOGNIZED_OPCODE);
       virtual void ReportCECVersion(cec_logical_address address = CECDEVICE_TV);
       virtual void ReportPowerState(cec_logical_address address = CECDEVICE_TV, bool bOn = true);
@@ -91,7 +91,7 @@ namespace CEC
     private:
       void AddKey(void);
       void AddCommand(cec_logical_address source, cec_logical_address destination, cec_opcode opcode, cec_frame *parameters);
-      bool WaitForAck(int64_t iTimeout = (int64_t) 1000);
+      bool WaitForAck(int iTimeout = 1000);
       bool ReadFromDevice(int iTimeout);
       void ProcessMessages(void);
       bool GetMessage(cec_frame &msg, bool bFromBuffer = true);
index b21f1c0b461a3d17358983e3dfdda9afd8ec4821..7deb982920866b62f31428f71020c1bf2a1543bc 100644 (file)
@@ -135,10 +135,10 @@ bool cec_get_next_command(cec_command *command)
   return false;
 }
 
-bool cec_transmit(const CEC::cec_frame &data, bool bWaitForAck /* = true */, int64_t iTimeout /* = 2000 */)
+bool cec_transmit(const CEC::cec_frame &data, bool bWaitForAck /* = true */)
 {
   if (cec_parser)
-    return cec_parser->Transmit(data, bWaitForAck, iTimeout);
+    return cec_parser->Transmit(data, bWaitForAck);
   return false;
 }
 
index deabed74e54d81594857696a7e13b35cdb101486..37df94d41ac49f79c095672dcb7890806e481616 100644 (file)
@@ -42,7 +42,7 @@
 using namespace CEC;
 using namespace std;
 
-#define CEC_TEST_CLIENT_VERSION 2
+#define CEC_TEST_CLIENT_VERSION 3
 
 void flush_log(ICECDevice *cecParser)
 {