cec: fix GetTimeMs() on linux. add time in ms since startup to log messages
authorLars Op den Kamp <lars@opdenkamp.eu>
Sat, 8 Oct 2011 09:29:52 +0000 (11:29 +0200)
committerLars Op den Kamp <lars@opdenkamp.eu>
Sat, 8 Oct 2011 09:33:22 +0000 (11:33 +0200)
include/CECExports.h
src/lib/AdapterCommunication.cpp
src/lib/LibCEC.cpp
src/lib/LibCEC.h
src/lib/platform/timeutils.h
src/testclient/main.cpp

index d1a7414242d83f8c389056fa1d66ec245c5bcf18..47dcdff364686801443655a59fd2bccb0328efa1 100644 (file)
@@ -243,6 +243,7 @@ namespace CEC {
   {
     char          message[1024];
     cec_log_level level;
+    int64_t       time;
   } cec_log_message;
 
   typedef struct cec_keypress
index 68f31a42ee9c3249aec52e25b7f64c1018122abf..8ddeaa61b3ff90863a63cd4cb26bba3240b13d5b 100644 (file)
@@ -193,7 +193,7 @@ bool CAdapterCommunication::Write(const cec_frame &data)
 
     m_controller->AddLog(CEC_LOG_DEBUG, "command sent");
 
-    CCondition::Sleep((uint32_t) data.size * (uint32_t)24 /*data*/ + (uint32_t)5 /*start bit (4.5 ms)*/ + (uint32_t)50 /* to be on the safe side */);
+    CCondition::Sleep((uint32_t) data.size * (uint32_t)24 /*data*/ + (uint32_t)5 /*start bit (4.5 ms)*/);
   }
 
   return true;
index 0f88470554dec9957713e9d4e6d318e10634af5f..2f768157887c6e7fa176af4550462967916e9690 100644 (file)
@@ -42,6 +42,7 @@ using namespace std;
 using namespace CEC;
 
 CLibCEC::CLibCEC(const char *strDeviceName, cec_logical_address iLogicalAddress /* = CECDEVICE_PLAYBACKDEVICE1 */, uint16_t iPhysicalAddress /* = CEC_DEFAULT_PHYSICAL_ADDRESS */) :
+    m_iStartTime(GetTimeMs()),
     m_iCurrentButton(CEC_USER_CONTROL_CODE_UNKNOWN),
     m_buttontime(0)
 {
@@ -183,6 +184,7 @@ void CLibCEC::AddLog(cec_log_level level, const string &strMessage)
   {
     cec_log_message message;
     message.level = level;
+    message.time = GetTimeMs() - m_iStartTime;
     snprintf(message.message, sizeof(message.message), "%s", strMessage.c_str());
     m_logBuffer.Push(message);
   }
index 2a849526a323ea0565743ae8b1a05d3030de1f7f..013288e763153319d2e1ab8799ff79977dbefd65 100644 (file)
@@ -80,6 +80,7 @@ namespace CEC
       virtual void SetCurrentButton(cec_user_control_code iButtonCode);
 
     protected:
+      int64_t                    m_iStartTime;
       cec_user_control_code      m_iCurrentButton;
       int64_t                    m_buttontime;
       CCECProcessor             *m_cec;
index c4140203736bc258e3551a31fda001009a985e45..20b6eff8d5e9b6b5669b89f432072bb8ec9ae200 100644 (file)
@@ -19,7 +19,7 @@
  */
 
 #include <stdint.h>
-#include <time.h>
+#include <sys/time.h>
 
 namespace CEC
 {
@@ -38,10 +38,9 @@ namespace CEC
     }
     return -1;
   #else
-    struct timespec time;
-    clock_gettime(CLOCK_MONOTONIC, &time);
-
-    return ((int64_t)time.tv_sec * (int64_t)1000) + (int64_t)time.tv_nsec / (int64_t)1000;
+    timeval time;
+    gettimeofday(&time, NULL);
+    return (int64_t) (time.tv_sec * 1000 + time.tv_usec / 1000);
   #endif
   }
 
index c239d3b1d802312d9369bb79118e742ac4e94951..4156d05ba9c59aed1a59d32a330a03fb5f6cd921 100644 (file)
@@ -105,18 +105,22 @@ void flush_log(ICECAdapter *cecParser)
     switch (message.level)
     {
     case CEC_LOG_ERROR:
-      cout << "ERROR:   " << message.message << endl;
+      cout << "ERROR:   ";
       break;
     case CEC_LOG_WARNING:
-      cout << "WARNING: " << message.message << endl;
+      cout << "WARNING: ";
       break;
     case CEC_LOG_NOTICE:
-      cout << "NOTICE:  " << message.message << endl;
+      cout << "NOTICE:  ";
       break;
     case CEC_LOG_DEBUG:
-      cout << "DEBUG:   " << message.message << endl;
+      cout << "DEBUG:   ";
       break;
     }
+
+    CStdString strMessageTmp;
+    strMessageTmp.Format("[%16lld]\t%s", message.time, message.message);
+    cout << strMessageTmp.c_str() << endl;
   }
 }