CUSBCECAdapterCommunication::~CUSBCECAdapterCommunication(void)
{
Close();
-
- if (m_port)
- {
- delete m_port;
- m_port = NULL;
- }
}
bool CUSBCECAdapterCommunication::Open(uint32_t iTimeoutMs /* = 10000 */)
if (m_outBuffer.Pop(msg))
msg->condition.Broadcast();
+ if (m_port)
+ {
+ delete m_port;
+ m_port = NULL;
+ }
+
return NULL;
}
bool CUSBCECAdapterCommunication::SetAckMask(uint16_t iMask)
{
bool bReturn(false);
- CStdString strLog;
- strLog.Format("setting ackmask to %2x", iMask);
- CLibCEC::AddLog(CEC_LOG_DEBUG, strLog.c_str());
+ CLibCEC::AddLog(CEC_LOG_DEBUG, "setting ackmask to %2x", iMask);
CCECAdapterMessage *output = new CCECAdapterMessage;
return bReturn;
}
+
+bool CUSBCECAdapterCommunication::SetControlledMode(bool controlled)
+{
+ bool bReturn(false);
+ CLibCEC::AddLog(CEC_LOG_DEBUG, "turning controlled mode %s", controlled ? "on" : "off");
+
+ CCECAdapterMessage *output = new CCECAdapterMessage;
+
+ output->PushBack(MSGSTART);
+ output->PushEscaped(MSGCODE_SET_CONTROLLED);
+ output->PushEscaped(controlled);
+ output->PushBack(MSGEND);
+ output->isTransmission = false;
+
+ if ((bReturn = Write(output)) == false)
+ CLibCEC::AddLog(CEC_LOG_ERROR, "could not set controlled mode");
+ delete output;
+
+ return bReturn;
+}
+
bool CUSBCECAdapterCommunication::IsOpen(void)
{
return !IsStopped() && m_port->IsOpen() && IsRunning();
if (m_port->Write(msg->packet.data, msg->Size()) != (ssize_t) msg->Size())
{
- CStdString strError;
- strError.Format("error writing to serial port: %s", m_port->GetError().c_str());
- CLibCEC::AddLog(CEC_LOG_ERROR, strError);
+ CLibCEC::AddLog(CEC_LOG_ERROR, "error writing to serial port: %s", m_port->GetError().c_str());
msg->state = ADAPTER_MESSAGE_STATE_ERROR;
}
else