void CCECProcessor::LogOutput(const cec_command &data)
{
CStdString strTx;
- strTx.Format("<< %02x:%02x", ((uint8_t)data.initiator << 4) + (uint8_t)data.destination, (uint8_t)data.opcode);
+ strTx.Format("<< %02x", ((uint8_t)data.initiator << 4) + (uint8_t)data.destination);
+ if (data.opcode_set)
+ strTx.AppendFormat(":%02x", (uint8_t)data.opcode);
for (uint8_t iPtr = 0; iPtr < data.parameters.size; iPtr++)
strTx.AppendFormat(":%02x", data.parameters[iPtr]);
return SetAckMask(0x1 << (uint8_t)m_iLogicalAddress);
}
+bool CCECProcessor::PollDevice(cec_logical_address iAddress)
+{
+ if (iAddress != CECDEVICE_UNKNOWN && m_busDevices[iAddress])
+ return m_busDevices[iAddress]->PollDevice();
+ return false;
+}
+
cec_version CCECProcessor::GetDeviceCecVersion(cec_logical_address iAddress)
{
return m_busDevices[iAddress]->GetCecVersion();
bool CCECProcessor::Transmit(const cec_command &data)
{
+ bool bReturn(false);
LogOutput(data);
- CCECAdapterMessagePtr output(new CCECAdapterMessage(data));
- return Transmit(output);
+ CCECAdapterMessage *output = new CCECAdapterMessage(data);
+ bReturn = Transmit(output);
+ delete output;
+
+ return bReturn;
}
-bool CCECProcessor::Transmit(CCECAdapterMessagePtr output)
+bool CCECProcessor::Transmit(CCECAdapterMessage *output)
{
bool bReturn(false);
CLockObject lock(&m_mutex);
return bReturn;
else
{
- output->condition.Wait(&output->mutex, 1000);
+ output->condition.Wait(&output->mutex);
if (output->state != ADAPTER_MESSAGE_STATE_SENT)
{
m_controller->AddLog(CEC_LOG_ERROR, "command was not sent");
m_controller->AddCommand(command);
}
+void CCECProcessor::AddKey(cec_keypress &key)
+{
+ m_controller->AddKey(key);
+}
+
void CCECProcessor::AddKey(void)
{
m_controller->AddKey();
bool CCECProcessor::SetAckMask(uint16_t iMask)
{
+ bool bReturn(false);
CStdString strLog;
strLog.Format("setting ackmask to %2x", iMask);
m_controller->AddLog(CEC_LOG_DEBUG, strLog.c_str());
- CCECAdapterMessagePtr output(new CCECAdapterMessage);
+ CCECAdapterMessage *output = new CCECAdapterMessage;
output->push_back(MSGSTART);
output->push_escaped(MSGCODE_SET_ACK_MASK);
output->push_escaped((uint8_t)iMask);
output->push_back(MSGEND);
- if (!Transmit(output))
- {
+ if ((bReturn = Transmit(output)) == false)
m_controller->AddLog(CEC_LOG_ERROR, "could not set the ackmask");
- return false;
- }
- return true;
+ delete output;
+
+ return bReturn;
}