X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=src%2Flib%2FCECProcessor.cpp;h=bdcb4d3e816deadbde7385d1dbab0c91e40ddbde;hb=91bea17434cd0cec8c6c7f2a53cb8cdd07e4c446;hp=d094be1341b943d967fd7d598191b5247407642a;hpb=a9232a79cfb71be51caea8aae6c8ea63ae3884ad;p=deb_libcec.git diff --git a/src/lib/CECProcessor.cpp b/src/lib/CECProcessor.cpp index d094be1..bdcb4d3 100644 --- a/src/lib/CECProcessor.cpp +++ b/src/lib/CECProcessor.cpp @@ -157,7 +157,8 @@ bool CCECProcessor::TryLogicalAddress(cec_logical_address address, unsigned int m_busDevices[address]->m_bActiveSource = true; } m_busDevices[address]->m_powerStatus = CEC_POWER_STATUS_STANDBY; - m_busDevices[address]->m_cecVersion = CEC_VERSION_1_3A; + m_busDevices[address]->m_cecVersion = CEC_VERSION_1_3A; + m_logicalAddresses.set(address); // TODO @@ -319,7 +320,7 @@ bool CCECProcessor::SetActiveView(void) return SetActiveSource(); } -bool CCECProcessor::SetDeckControlMode(cec_deck_control_mode mode) +bool CCECProcessor::SetDeckControlMode(cec_deck_control_mode mode, bool bSendUpdate /* = true */) { bool bReturn(false); @@ -327,13 +328,15 @@ bool CCECProcessor::SetDeckControlMode(cec_deck_control_mode mode) if (device) { ((CCECPlaybackDevice *) device)->SetDeckControlMode(mode); + if (bSendUpdate) + ((CCECPlaybackDevice *) device)->TransmitDeckStatus(CECDEVICE_TV); bReturn = true; } return bReturn; } -bool CCECProcessor::SetDeckInfo(cec_deck_info info) +bool CCECProcessor::SetDeckInfo(cec_deck_info info, bool bSendUpdate /* = true */) { bool bReturn(false); @@ -341,6 +344,8 @@ bool CCECProcessor::SetDeckInfo(cec_deck_info info) if (device) { ((CCECPlaybackDevice *) device)->SetDeckStatus(info); + if (bSendUpdate) + ((CCECPlaybackDevice *) device)->TransmitDeckStatus(CECDEVICE_TV); bReturn = true; } @@ -360,10 +365,7 @@ bool CCECProcessor::SetStreamPath(uint16_t iStreamPath) device->m_bActiveSource = true; device->m_powerStatus = CEC_POWER_STATUS_ON; - if (m_logicalAddresses.isset(device->m_iLogicalAddress)) - bReturn = device->TransmitActiveSource(); - else - bReturn = true; + bReturn = true; } return bReturn; @@ -406,6 +408,20 @@ bool CCECProcessor::SetLogicalAddress(cec_logical_address iLogicalAddress) return true; } +bool CCECProcessor::SetMenuState(cec_menu_state state, bool bSendUpdate /* = true */) +{ + for (uint8_t iPtr = 0; iPtr < 16; iPtr++) + { + if (m_logicalAddresses[iPtr]) + m_busDevices[iPtr]->SetMenuState(state); + } + + if (bSendUpdate) + m_busDevices[m_logicalAddresses.primary]->TransmitMenuState(CECDEVICE_TV); + + return true; +} + bool CCECProcessor::SetPhysicalAddress(uint16_t iPhysicalAddress) { if (!m_logicalAddresses.empty() && m_busDevices[m_logicalAddresses.primary])