X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;ds=sidebyside;f=src%2Flib%2FCECParser.cpp;h=df2ce10c470100b940ee587748c1d501665cec07;hb=bcd03b376090dafc233889bbf7405221d1a37cb0;hp=af86abe0d83ab98b4a6eaa2802ab0f8bb3f9825d;hpb=df7339c665f732faedee7c1d3cde816cc41e3302;p=deb_libcec.git diff --git a/src/lib/CECParser.cpp b/src/lib/CECParser.cpp index af86abe..df2ce10 100644 --- a/src/lib/CECParser.cpp +++ b/src/lib/CECParser.cpp @@ -90,7 +90,7 @@ bool CCECParser::Open(const char *strPort, int iTimeoutMs /* = 10000 */) m_serialport->Read(buff, sizeof(buff), CEC_SETTLE_DOWN_TIME); if (bReturn) - bReturn = SetAckMask(m_iLogicalAddress); + bReturn = SetLogicalAddress(m_iLogicalAddress); if (!bReturn) { @@ -796,27 +796,34 @@ void CCECParser::CheckKeypressTimeout(int64_t now) } } -bool CCECParser::SetAckMask(cec_logical_address ackmask) +bool CCECParser::SetLogicalAddress(cec_logical_address iLogicalAddress) { CStdString strLog; - strLog.Format("setting ackmask to %d", (uint16_t) ackmask); + strLog.Format("setting logical address to %d", iLogicalAddress); AddLog(CEC_LOG_NOTICE, strLog.c_str()); + m_iLogicalAddress = iLogicalAddress; + return SetAckMask(0x1 << (uint8_t)m_iLogicalAddress); +} + +bool CCECParser::SetAckMask(uint16_t iMask) +{ + CStdString strLog; + strLog.Format("setting ackmask to %2x", iMask); + AddLog(CEC_LOG_DEBUG, strLog.c_str()); + cec_frame output; - m_iLogicalAddress = ackmask; - output.push_back(MSGSTART); + output.push_back(MSGSTART); PushEscaped(output, MSGCODE_SET_ACK_MASK); - PushEscaped(output, (uint8_t) ackmask >> 8); - PushEscaped(output, (uint8_t) ackmask << 2); - + PushEscaped(output, iMask >> 8); + PushEscaped(output, (uint8_t)iMask); output.push_back(MSGEND); if (m_serialport->Write(output) == -1) { - CStdString strDebug; - strDebug.Format("error writing to serial port: %s", m_serialport->GetError().c_str()); - AddLog(CEC_LOG_ERROR, strDebug); + strLog.Format("error writing to serial port: %s", m_serialport->GetError().c_str()); + AddLog(CEC_LOG_ERROR, strLog); return false; } @@ -866,7 +873,7 @@ int CCECParser::FindDevices(std::vector &deviceList, const char *str return CCECDetect::FindDevices(deviceList, strDevicePath); } -DECLSPEC void * CECCreate(const char *strDeviceName, CEC::cec_logical_address iLogicalAddress /* = CEC::CECDEVICE_PLAYBACKDEVICE1 */, int iPhysicalAddress /* = CEC_DEFAULT_PHYSICAL_ADDRESS */) +DECLSPEC void * CECCreate(const char *strDeviceName, CEC::cec_logical_address iLogicalAddress /*= CEC::CECDEVICE_PLAYBACKDEVICE1 */, int iPhysicalAddress /* = CEC_DEFAULT_PHYSICAL_ADDRESS */) { return static_cast< void* > (new CCECParser(strDeviceName, iLogicalAddress, iPhysicalAddress)); }