cec: included the logical addresses in the persisted configuration for v2. bugzid...
[deb_libcec.git] / src / lib / LibCEC.cpp
index ef4c84cd024d0960400eee0c5cfce524d082677e..46e428ff3e0da2e9ca3160de36a348c1fc3184f4 100644 (file)
@@ -33,6 +33,7 @@
 #include "LibCEC.h"
 
 #include "adapter/USBCECAdapterDetection.h"
+#include "adapter/USBCECAdapterCommunication.h"
 #include "CECProcessor.h"
 #include "devices/CECBusDevice.h"
 #include "platform/util/timeutils.h"
@@ -59,13 +60,12 @@ CLibCEC::CLibCEC(libcec_configuration *configuration) :
     m_callbacks(configuration->callbacks),
     m_cbParam(configuration->callbackParam)
 {
-  configuration->serverVersion = CEC_SERVER_VERSION_1_5_1;
+  configuration->serverVersion = CEC_SERVER_VERSION_1_5_3;
   m_cec = new CCECProcessor(this, configuration);
 }
 
 CLibCEC::~CLibCEC(void)
 {
-  Close();
   delete m_cec;
 }
 
@@ -504,17 +504,21 @@ void * CECInitialise(libcec_configuration *configuration)
 
 bool CECStartBootloader(void)
 {
-  libcec_configuration dummy;
-  dummy.Clear();
-  CLibCEC *lib = new CLibCEC(&dummy);
-
   bool bReturn(false);
   cec_adapter deviceList[1];
   if (CUSBCECAdapterDetection::FindAdapters(deviceList, 1) > 0)
   {
-    bReturn = lib->m_cec->StartBootloader(deviceList[0].comm);
-    delete lib;
+    CUSBCECAdapterCommunication comm(NULL, deviceList[0].comm);
+    CTimeout timeout(10000);
+    while (timeout.TimeLeft() > 0 && (bReturn = comm.Open(NULL, (timeout.TimeLeft() / CEC_CONNECT_TRIES)), true) == false)
+    {
+      comm.Close();
+      CEvent::Sleep(500);
+    }
+    if (comm.IsOpen())
+      bReturn = comm.StartBootloader();
   }
+
   return bReturn;
 }