repositories
/
deb_libcec.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
cec: set the power state to 'powered on' by default
[deb_libcec.git]
/
src
/
lib
/
CECProcessor.cpp
diff --git
a/src/lib/CECProcessor.cpp
b/src/lib/CECProcessor.cpp
index 463e04448ab15aeb03f88e77c28a73bb23d77b05..2c0f876a989bb89bcf9678ab029b50e07dfd5689 100644
(file)
--- a/
src/lib/CECProcessor.cpp
+++ b/
src/lib/CECProcessor.cpp
@@
-157,6
+157,10
@@
bool CCECProcessor::Start(const char *strPort, uint16_t iBaudRate /* = 38400 */,
if (SetHDMIPort(m_iBaseDevice, m_iHDMIPort, true))
{
if (SetHDMIPort(m_iBaseDevice, m_iHDMIPort, true))
{
+ /* init the default handler */
+ if (m_busDevices[CECDEVICE_TV]->GetHandler()->GetVendorId() == CEC_VENDOR_UNKNOWN)
+ m_busDevices[CECDEVICE_TV]->GetHandler()->InitHandler();
+
m_controller->AddLog(CEC_LOG_DEBUG, "processor thread started");
m_busScan = new CCECBusScan(this);
m_busScan->CreateThread(true);
m_controller->AddLog(CEC_LOG_DEBUG, "processor thread started");
m_busScan = new CCECBusScan(this);
m_busScan->CreateThread(true);
@@
-176,12
+180,6
@@
bool CCECProcessor::TryLogicalAddress(cec_logical_address address)
{
if (m_busDevices[address]->TryLogicalAddress())
{
{
if (m_busDevices[address]->TryLogicalAddress())
{
- /* only set our OSD name and active source for the primary device */
- if (m_logicalAddresses.IsEmpty())
- {
- m_busDevices[address]->m_strDeviceName = m_strDeviceName;
- m_busDevices[address]->m_bActiveSource = true;
- }
m_logicalAddresses.Set(address);
return true;
}
m_logicalAddresses.Set(address);
return true;
}
@@
-262,6
+260,10
@@
void *CCECProcessor::Process(void)
}
else
{
}
else
{
+ /* only set our OSD name and active source for the primary device */
+ m_busDevices[m_logicalAddresses.primary]->m_strDeviceName = m_strDeviceName;
+ m_busDevices[m_logicalAddresses.primary]->m_bActiveSource = true;
+
SetAckMask(m_logicalAddresses.AckMask());
CLockObject lock(&m_mutex);
SetAckMask(m_logicalAddresses.AckMask());
CLockObject lock(&m_mutex);
@@
-331,8
+333,8
@@
bool CCECProcessor::SetActiveSource(cec_device_type type /* = CEC_DEVICE_TYPE_RE
}
}
}
}
- bReturn = m_busDevices[addr]->TransmitActiveSource() &&
-
SetStreamPath(m_busDevices[addr]->GetPhysicalAddress(false)
);
+ m_busDevices[addr]->SetActiveSource();
+
bReturn = m_busDevices[addr]->TransmitActiveSource(
);
if (bReturn && (m_busDevices[addr]->GetType() == CEC_DEVICE_TYPE_PLAYBACK_DEVICE ||
m_busDevices[addr]->GetType() == CEC_DEVICE_TYPE_RECORDING_DEVICE))
if (bReturn && (m_busDevices[addr]->GetType() == CEC_DEVICE_TYPE_PLAYBACK_DEVICE ||
m_busDevices[addr]->GetType() == CEC_DEVICE_TYPE_RECORDING_DEVICE))
@@
-343,6
+345,20
@@
bool CCECProcessor::SetActiveSource(cec_device_type type /* = CEC_DEVICE_TYPE_RE
return bReturn;
}
return bReturn;
}
+bool CCECProcessor::SetActiveSource(uint16_t iStreamPath)
+{
+ bool bReturn(false);
+
+ CCECBusDevice *device = GetDeviceByPhysicalAddress(iStreamPath);
+ if (device)
+ {
+ device->SetActiveSource();
+ bReturn = true;
+ }
+
+ return bReturn;
+}
+
void CCECProcessor::SetStandardLineTimeout(uint8_t iTimeout)
{
CLockObject lock(&m_mutex);
void CCECProcessor::SetStandardLineTimeout(uint8_t iTimeout)
{
CLockObject lock(&m_mutex);
@@
-460,20
+476,6
@@
bool CCECProcessor::PhysicalAddressInUse(uint16_t iPhysicalAddress)
return false;
}
return false;
}
-bool CCECProcessor::SetStreamPath(uint16_t iStreamPath)
-{
- bool bReturn(false);
-
- CCECBusDevice *device = GetDeviceByPhysicalAddress(iStreamPath);
- if (device)
- {
- device->SetActiveDevice();
- bReturn = true;
- }
-
- return bReturn;
-}
-
bool CCECProcessor::TransmitInactiveSource(void)
{
if (!IsRunning())
bool CCECProcessor::TransmitInactiveSource(void)
{
if (!IsRunning())
@@
-532,7
+534,7
@@
bool CCECProcessor::SetPhysicalAddress(uint16_t iPhysicalAddress)
for (uint8_t iPtr = 0; iPtr < 15; iPtr++)
if (m_logicalAddresses[iPtr])
{
for (uint8_t iPtr = 0; iPtr < 15; iPtr++)
if (m_logicalAddresses[iPtr])
{
- m_busDevices[iPtr]->SetInactive
Devi
ce();
+ m_busDevices[iPtr]->SetInactive
Sour
ce();
m_busDevices[iPtr]->SetPhysicalAddress(iPhysicalAddress);
m_busDevices[iPtr]->TransmitPhysicalAddress();
}
m_busDevices[iPtr]->SetPhysicalAddress(iPhysicalAddress);
m_busDevices[iPtr]->TransmitPhysicalAddress();
}
@@
-587,29
+589,29
@@
bool CCECProcessor::PollDevice(cec_logical_address iAddress)
return false;
}
return false;
}
-uint8_t CCECProcessor::VolumeUp(
void
)
+uint8_t CCECProcessor::VolumeUp(
bool bSendRelease /* = true */
)
{
uint8_t status = 0;
{
uint8_t status = 0;
- if (Is
Active
Device(CECDEVICE_AUDIOSYSTEM))
- status = ((CCECAudioSystem *)m_busDevices[CECDEVICE_AUDIOSYSTEM])->VolumeUp();
+ if (Is
Present
Device(CECDEVICE_AUDIOSYSTEM))
+ status = ((CCECAudioSystem *)m_busDevices[CECDEVICE_AUDIOSYSTEM])->VolumeUp(
bSendRelease
);
return status;
}
return status;
}
-uint8_t CCECProcessor::VolumeDown(
void
)
+uint8_t CCECProcessor::VolumeDown(
bool bSendRelease /* = true */
)
{
uint8_t status = 0;
{
uint8_t status = 0;
- if (Is
Active
Device(CECDEVICE_AUDIOSYSTEM))
- status = ((CCECAudioSystem *)m_busDevices[CECDEVICE_AUDIOSYSTEM])->VolumeDown();
+ if (Is
Present
Device(CECDEVICE_AUDIOSYSTEM))
+ status = ((CCECAudioSystem *)m_busDevices[CECDEVICE_AUDIOSYSTEM])->VolumeDown(
bSendRelease
);
return status;
}
return status;
}
-uint8_t CCECProcessor::MuteAudio(
void
)
+uint8_t CCECProcessor::MuteAudio(
bool bSendRelease /* = true */
)
{
uint8_t status = 0;
{
uint8_t status = 0;
- if (Is
Active
Device(CECDEVICE_AUDIOSYSTEM))
- status = ((CCECAudioSystem *)m_busDevices[CECDEVICE_AUDIOSYSTEM])->MuteAudio();
+ if (Is
Present
Device(CECDEVICE_AUDIOSYSTEM))
+ status = ((CCECAudioSystem *)m_busDevices[CECDEVICE_AUDIOSYSTEM])->MuteAudio(
bSendRelease
);
return status;
}
return status;
}
@@
-717,6
+719,13
@@
bool CCECProcessor::Transmit(const cec_command &data)
LogOutput(data);
CCECAdapterMessage *output = new CCECAdapterMessage(data);
LogOutput(data);
CCECAdapterMessage *output = new CCECAdapterMessage(data);
+
+ /* set the number of retries */
+ if (data.opcode == CEC_OPCODE_NONE)
+ output->maxTries = 1;
+ else if (data.initiator != CECDEVICE_BROADCAST)
+ output->maxTries = m_busDevices[data.initiator]->GetHandler()->GetTransmitRetries() + 1;
+
bReturn = Transmit(output);
/* set to "not present" on failed ack */
bReturn = Transmit(output);
/* set to "not present" on failed ack */
@@
-926,12
+935,12
@@
cec_logical_addresses CCECProcessor::GetActiveDevices(void)
return addresses;
}
return addresses;
}
-bool CCECProcessor::Is
Active
Device(cec_logical_address address)
+bool CCECProcessor::Is
Present
Device(cec_logical_address address)
{
return m_busDevices[address]->GetStatus() == CEC_DEVICE_STATUS_PRESENT;
}
{
return m_busDevices[address]->GetStatus() == CEC_DEVICE_STATUS_PRESENT;
}
-bool CCECProcessor::Is
Active
DeviceType(cec_device_type type)
+bool CCECProcessor::Is
Present
DeviceType(cec_device_type type)
{
for (unsigned int iPtr = 0; iPtr < 15; iPtr++)
{
{
for (unsigned int iPtr = 0; iPtr < 15; iPtr++)
{
@@
-997,12
+1006,12
@@
bool CCECProcessor::SetAckMask(uint16_t iMask)
return bReturn;
}
return bReturn;
}
-bool CCECProcessor::TransmitKeypress(cec_logical_address iDestination, cec_user_control_code key)
+bool CCECProcessor::TransmitKeypress(cec_logical_address iDestination, cec_user_control_code key
, bool bWait /* = true */
)
{
return m_busDevices[iDestination]->TransmitKeypress(key);
}
{
return m_busDevices[iDestination]->TransmitKeypress(key);
}
-bool CCECProcessor::TransmitKeyRelease(cec_logical_address iDestination)
+bool CCECProcessor::TransmitKeyRelease(cec_logical_address iDestination
, bool bWait /* = true */
)
{
return m_busDevices[iDestination]->TransmitKeyRelease();
}
{
return m_busDevices[iDestination]->TransmitKeyRelease();
}
@@
-1335,7
+1344,7
@@
void *CCECBusScan::Process(void)
while (!IsStopped())
{
while (!IsStopped())
{
- if (++iCounter <
3
0)
+ if (++iCounter <
1
0)
{
Sleep(1000);
continue;
{
Sleep(1000);
continue;
@@
-1365,11
+1374,11
@@
void CCECBusScan::WaitUntilIdle(void)
if (IsStopped())
return;
if (IsStopped())
return;
- int
64_t iWaitTime = 3000 -
(GetTimeMs() - m_processor->GetLastTransmission());
+ int
32_t iWaitTime = 3000 - (int32_t)
(GetTimeMs() - m_processor->GetLastTransmission());
while (iWaitTime > 0)
{
Sleep(iWaitTime);
while (iWaitTime > 0)
{
Sleep(iWaitTime);
- iWaitTime = 3000 - (GetTimeMs() - m_processor->GetLastTransmission());
+ iWaitTime = 3000 - (
int32_t)(
GetTimeMs() - m_processor->GetLastTransmission());
}
}
}
}