Esempio n. 1
0
bool CECStartBootloader(void)
{
  bool bReturn(false);
  cec_adapter deviceList[1];
  if (CAdapterFactory(NULL).FindAdapters(deviceList, 1, 0) > 0)
  {
    CAdapterFactory factory(NULL);
    IAdapterCommunication *comm = factory.GetInstance(deviceList[0].comm);
    if (comm)
    {
      CTimeout timeout(CEC_DEFAULT_CONNECT_TIMEOUT);
      while (timeout.TimeLeft() > 0 &&
          (bReturn = comm->Open(timeout.TimeLeft() / CEC_CONNECT_TRIES, true)) == false)
      {
        comm->Close();
        CEvent::Sleep(500);
      }
      if (comm->IsOpen())
        bReturn = comm->StartBootloader();

      delete comm;
    }
  }

  return bReturn;
}
Esempio n. 2
0
bool CCECProcessor::StartBootloader(const char *strPort /* = NULL */)
{
  bool bReturn(false);
  // open a connection if no connection has been opened
  if (!m_communication && strPort)
  {
    CAdapterFactory factory(this->m_libcec);
    IAdapterCommunication *comm = factory.GetInstance(strPort);
    CTimeout timeout(CEC_DEFAULT_CONNECT_TIMEOUT);
    int iConnectTry(0);
    while (timeout.TimeLeft() > 0 && (bReturn = comm->Open(timeout.TimeLeft() / CEC_CONNECT_TRIES, true)) == false)
    {
      m_libcec->AddLog(CEC_LOG_ERROR, "could not open a connection (try %d)", ++iConnectTry);
      comm->Close();
      Sleep(CEC_DEFAULT_TRANSMIT_RETRY_WAIT);
    }
    if (comm->IsOpen())
    {
      bReturn = comm->StartBootloader();
      DELETE_AND_NULL(comm);
    }
    return bReturn;
  }
  else
  {
    m_communication->StartBootloader();
    Close();
    bReturn = true;
  }

  return bReturn;
}