repositories
/
deb_libcec.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
fixed: compile
[deb_libcec.git]
/
src
/
lib
/
adapter
/
USBCECAdapterCommunication.cpp
diff --git
a/src/lib/adapter/USBCECAdapterCommunication.cpp
b/src/lib/adapter/USBCECAdapterCommunication.cpp
index 5400325bb215ff2bf7a41c2e7245df5acaf0541f..e51a861f28579ebe6d5685c883032626e05add52 100644
(file)
--- a/
src/lib/adapter/USBCECAdapterCommunication.cpp
+++ b/
src/lib/adapter/USBCECAdapterCommunication.cpp
@@
-90,20
+90,26
@@
bool CUSBCECAdapterCommunication::CheckAdapter(uint32_t iTimeoutMs /* = 10000 */
while (iNow < iTarget && (bPinged = PingAdapter()) == false)
{
CLibCEC::AddLog(CEC_LOG_ERROR, "the adapter did not respond correctly to a ping (try %d)", ++iPingTry);
while (iNow < iTarget && (bPinged = PingAdapter()) == false)
{
CLibCEC::AddLog(CEC_LOG_ERROR, "the adapter did not respond correctly to a ping (try %d)", ++iPingTry);
- Sleep(500);
+
CEvent::
Sleep(500);
iNow = GetTimeMs();
}
/* try to read the firmware version */
m_iFirmwareVersion = CEC_FW_VERSION_UNKNOWN;
unsigned iFwVersionTry(0);
iNow = GetTimeMs();
}
/* try to read the firmware version */
m_iFirmwareVersion = CEC_FW_VERSION_UNKNOWN;
unsigned iFwVersionTry(0);
- while (bPinged && iNow < iTarget && (m_iFirmwareVersion = GetFirmwareVersion()) == CEC_FW_VERSION_UNKNOWN)
+ while (bPinged && iNow < iTarget && (m_iFirmwareVersion = GetFirmwareVersion()) == CEC_FW_VERSION_UNKNOWN
&& iFwVersionTry < 3
)
{
{
- CLibCEC::AddLog(CEC_LOG_
ERROR
, "the adapter did not respond with a correct firmware version (try %d)", ++iFwVersionTry);
- Sleep(500);
+ CLibCEC::AddLog(CEC_LOG_
WARNING
, "the adapter did not respond with a correct firmware version (try %d)", ++iFwVersionTry);
+
CEvent::
Sleep(500);
iNow = GetTimeMs();
}
iNow = GetTimeMs();
}
+ if (m_iFirmwareVersion == CEC_FW_VERSION_UNKNOWN)
+ {
+ CLibCEC::AddLog(CEC_LOG_DEBUG, "defaulting to firmware version 1");
+ m_iFirmwareVersion = 1;
+ }
+
if (m_iFirmwareVersion >= 2)
{
/* try to set controlled mode */
if (m_iFirmwareVersion >= 2)
{
/* try to set controlled mode */
@@
-112,7
+118,7
@@
bool CUSBCECAdapterCommunication::CheckAdapter(uint32_t iTimeoutMs /* = 10000 */
while (iNow < iTarget && (bControlled = SetControlledMode(true)) == false)
{
CLibCEC::AddLog(CEC_LOG_ERROR, "the adapter did not respond correctly to setting controlled mode (try %d)", ++iControlledTry);
while (iNow < iTarget && (bControlled = SetControlledMode(true)) == false)
{
CLibCEC::AddLog(CEC_LOG_ERROR, "the adapter did not respond correctly to setting controlled mode (try %d)", ++iControlledTry);
- Sleep(500);
+
CEvent::
Sleep(500);
iNow = GetTimeMs();
}
bReturn = bControlled;
iNow = GetTimeMs();
}
bReturn = bControlled;
@@
-181,21
+187,23
@@
bool CUSBCECAdapterCommunication::Open(IAdapterCommunicationCallback *cb, uint32
}
}
}
}
- if (CreateThread())
+ if (!bSkipChecks && !CheckAdapter())
+ {
+ CLibCEC::AddLog(CEC_LOG_ERROR, "the adapter failed to pass basic checks");
+ return false;
+ }
+ else
{
{
- if (
!bSkipChecks && !CheckAdapter
())
+ if (
CreateThread
())
{
{
- StopThread();
- CLibCEC::AddLog(CEC_LOG_ERROR, "the adapter failed to pass basic checks");
- return false;
+ CLibCEC::AddLog(CEC_LOG_DEBUG, "communication thread started");
+ return true;
}
else
{
}
else
{
- CLibCEC::AddLog(CEC_LOG_DEBUG, "communication thread started");
- return true;
+ CLibCEC::AddLog(CEC_LOG_ERROR, "could not create a communication thread");
}
}
}
}
- CLibCEC::AddLog(CEC_LOG_ERROR, "could not create a communication thread");
return false;
}
return false;
}
@@
-374,11
+382,9
@@
bool CUSBCECAdapterCommunication::StartBootloader(void)
bool CUSBCECAdapterCommunication::PingAdapter(void)
{
bool CUSBCECAdapterCommunication::PingAdapter(void)
{
- bool bReturn(false);
- if (!IsRunning())
- return bReturn;
-
+ CLockObject lock(m_mutex);
CLibCEC::AddLog(CEC_LOG_DEBUG, "sending ping");
CLibCEC::AddLog(CEC_LOG_DEBUG, "sending ping");
+
CCECAdapterMessage *output = new CCECAdapterMessage;
output->PushBack(MSGSTART);
CCECAdapterMessage *output = new CCECAdapterMessage;
output->PushBack(MSGSTART);
@@
-386,11
+392,16
@@
bool CUSBCECAdapterCommunication::PingAdapter(void)
output->PushBack(MSGEND);
output->isTransmission = false;
output->PushBack(MSGEND);
output->isTransmission = false;
- if ((bReturn = Write(output)) == false)
-
CLibCEC::AddLog(CEC_LOG_ERROR, "could not ping the adapter")
;
+ SendMessageToAdapter(output);
+
bool bWriteOk = output->state == ADAPTER_MESSAGE_STATE_SENT_ACKED
;
delete output;
delete output;
+ if (!bWriteOk)
+ {
+ CLibCEC::AddLog(CEC_LOG_ERROR, "could not ping the adapter");
+ return false;
+ }
- return
bReturn
;
+ return
true
;
}
bool CUSBCECAdapterCommunication::ParseMessage(const CCECAdapterMessage &msg)
}
bool CUSBCECAdapterCommunication::ParseMessage(const CCECAdapterMessage &msg)
@@
-448,8
+459,6
@@
bool CUSBCECAdapterCommunication::ParseMessage(const CCECAdapterMessage &msg)
uint16_t CUSBCECAdapterCommunication::GetFirmwareVersion(void)
{
uint16_t iReturn(m_iFirmwareVersion);
uint16_t CUSBCECAdapterCommunication::GetFirmwareVersion(void)
{
uint16_t iReturn(m_iFirmwareVersion);
- if (!IsRunning())
- return iReturn;
if (iReturn == CEC_FW_VERSION_UNKNOWN)
{
if (iReturn == CEC_FW_VERSION_UNKNOWN)
{
@@
-550,7
+559,7
@@
bool CUSBCECAdapterCommunication::SetAckMaskInternal(uint16_t iMask, bool bWrite
bool CUSBCECAdapterCommunication::SetControlledMode(bool controlled)
{
bool CUSBCECAdapterCommunication::SetControlledMode(bool controlled)
{
-
bool bReturn(false
);
+
CLockObject lock(m_mutex
);
CLibCEC::AddLog(CEC_LOG_DEBUG, "turning controlled mode %s", controlled ? "on" : "off");
CCECAdapterMessage *output = new CCECAdapterMessage;
CLibCEC::AddLog(CEC_LOG_DEBUG, "turning controlled mode %s", controlled ? "on" : "off");
CCECAdapterMessage *output = new CCECAdapterMessage;
@@
-561,11
+570,16
@@
bool CUSBCECAdapterCommunication::SetControlledMode(bool controlled)
output->PushBack(MSGEND);
output->isTransmission = false;
output->PushBack(MSGEND);
output->isTransmission = false;
- if ((bReturn = Write(output)) == false)
-
CLibCEC::AddLog(CEC_LOG_ERROR, "could not set controlled mode")
;
+ SendMessageToAdapter(output);
+
bool bWriteOk = output->state == ADAPTER_MESSAGE_STATE_SENT
;
delete output;
delete output;
+ if (!bWriteOk)
+ {
+ CLibCEC::AddLog(CEC_LOG_ERROR, "could not set controlled mode");
+ return false;
+ }
- return
bReturn
;
+ return
true
;
}
bool CUSBCECAdapterCommunication::IsOpen(void)
}
bool CUSBCECAdapterCommunication::IsOpen(void)
@@
-619,11
+633,11
@@
bool CUSBCECAdapterCommunication::WaitForAck(CCECAdapterMessage &message)
switch(msg.Message())
{
case MSGCODE_COMMAND_ACCEPTED:
switch(msg.Message())
{
case MSGCODE_COMMAND_ACCEPTED:
- CLibCEC::AddLog(CEC_LOG_DEBUG, msg.ToString());
if (iPacketsLeft > 0)
iPacketsLeft--;
if (!message.isTransmission && iPacketsLeft == 0)
bTransmitSucceeded = true;
if (iPacketsLeft > 0)
iPacketsLeft--;
if (!message.isTransmission && iPacketsLeft == 0)
bTransmitSucceeded = true;
+ CLibCEC::AddLog(CEC_LOG_DEBUG, "%s - waiting for %d more", msg.ToString().c_str(), iPacketsLeft);
break;
case MSGCODE_TRANSMIT_SUCCEEDED:
CLibCEC::AddLog(CEC_LOG_DEBUG, msg.ToString());
break;
case MSGCODE_TRANSMIT_SUCCEEDED:
CLibCEC::AddLog(CEC_LOG_DEBUG, msg.ToString());