Skip to content

Commit 08b3562

Browse files
committed
review comments added
1 parent eac3ee0 commit 08b3562

File tree

1 file changed

+154
-140
lines changed

1 file changed

+154
-140
lines changed

HdmiCecSink/HdmiCecSink.cpp

Lines changed: 154 additions & 140 deletions
Original file line numberDiff line numberDiff line change
@@ -692,139 +692,159 @@ namespace WPEFramework
692692
}
693693
const std::string HdmiCecSink::Initialize(PluginHost::IShell *service)
694694
{
695-
InitializePowerManager(service);
696-
profileType = searchRdkProfile();
697-
698-
if (profileType == STB || profileType == NOT_FOUND)
699-
{
700-
LOGINFO("Invalid profile type for TV \n");
701-
return (std::string("Not supported"));
702-
}
703-
704-
HdmiCecSink::_instance = this;
705-
smConnection=NULL;
706-
cecEnableStatus = false;
707-
HdmiCecSink::_instance->m_numberOfDevices = 0;
708-
m_logicalAddressAllocated = LogicalAddress::UNREGISTERED;
709-
m_currentActiveSource = -1;
710-
m_isHdmiInConnected = false;
711-
hdmiCecAudioDeviceConnected = false;
712-
m_isAudioStatusInfoUpdated = false;
713-
m_audioStatusRequestedCount = 0;
714-
m_audioStatusReceived = false;
715-
m_audioStatusTimerStarted = false;
716-
m_audioDevicePowerStatusRequested = false;
717-
m_pollNextState = POLL_THREAD_STATE_NONE;
718-
m_pollThreadState = POLL_THREAD_STATE_NONE;
719-
m_video_latency = DEFAULT_VIDEO_LATENCY;
720-
m_latency_flags = DEFAULT_LATENCY_FLAGS ;
721-
m_audio_output_delay = DEFAULT_AUDIO_OUTPUT_DELAY;
722-
723-
Register(HDMICECSINK_METHOD_SET_ENABLED, &HdmiCecSink::setEnabledWrapper, this);
724-
Register(HDMICECSINK_METHOD_GET_ENABLED, &HdmiCecSink::getEnabledWrapper, this);
725-
Register(HDMICECSINK_METHOD_SET_OSD_NAME, &HdmiCecSink::setOSDNameWrapper, this);
726-
Register(HDMICECSINK_METHOD_GET_OSD_NAME, &HdmiCecSink::getOSDNameWrapper, this);
727-
Register(HDMICECSINK_METHOD_SET_VENDOR_ID, &HdmiCecSink::setVendorIdWrapper, this);
728-
Register(HDMICECSINK_METHOD_GET_VENDOR_ID, &HdmiCecSink::getVendorIdWrapper, this);
729-
Register(HDMICECSINK_METHOD_PRINT_DEVICE_LIST, &HdmiCecSink::printDeviceListWrapper, this);
730-
Register(HDMICECSINK_METHOD_SET_ACTIVE_PATH, &HdmiCecSink::setActivePathWrapper, this);
731-
Register(HDMICECSINK_METHOD_SET_ROUTING_CHANGE, &HdmiCecSink::setRoutingChangeWrapper, this);
732-
Register(HDMICECSINK_METHOD_GET_DEVICE_LIST, &HdmiCecSink::getDeviceListWrapper, this);
733-
Register(HDMICECSINK_METHOD_GET_ACTIVE_SOURCE, &HdmiCecSink::getActiveSourceWrapper, this);
734-
Register(HDMICECSINK_METHOD_SET_ACTIVE_SOURCE, &HdmiCecSink::setActiveSourceWrapper, this);
735-
Register(HDMICECSINK_METHOD_GET_ACTIVE_ROUTE, &HdmiCecSink::getActiveRouteWrapper, this);
736-
Register(HDMICECSINK_METHOD_REQUEST_ACTIVE_SOURCE, &HdmiCecSink::requestActiveSourceWrapper, this);
737-
Register(HDMICECSINK_METHOD_SETUP_ARC, &HdmiCecSink::setArcEnableDisableWrapper, this);
738-
Register(HDMICECSINK_METHOD_SET_MENU_LANGUAGE, &HdmiCecSink::setMenuLanguageWrapper, this);
739-
Register(HDMICECSINK_METHOD_REQUEST_SHORT_AUDIO_DESCRIPTOR, &HdmiCecSink::requestShortAudioDescriptorWrapper, this);
740-
Register(HDMICECSINK_METHOD_SEND_STANDBY_MESSAGE, &HdmiCecSink::sendStandbyMessageWrapper, this);
741-
Register(HDMICECSINK_METHOD_SEND_AUDIO_DEVICE_POWER_ON, &HdmiCecSink::sendAudioDevicePowerOnMsgWrapper, this);
742-
Register(HDMICECSINK_METHOD_SEND_KEY_PRESS,&HdmiCecSink::sendRemoteKeyPressWrapper,this);
743-
Register(HDMICECSINK_METHOD_SEND_USER_CONTROL_PRESSED,&HdmiCecSink::sendUserControlPressedWrapper,this);
744-
Register(HDMICECSINK_METHOD_SEND_USER_CONTROL_RELEASED,&HdmiCecSink::sendUserControlReleasedWrapper,this);
745-
Register(HDMICECSINK_METHOD_SEND_GIVE_AUDIO_STATUS,&HdmiCecSink::sendGiveAudioStatusWrapper,this);
746-
Register(HDMICECSINK_METHOD_GET_AUDIO_DEVICE_CONNECTED_STATUS,&HdmiCecSink::getAudioDeviceConnectedStatusWrapper,this);
747-
Register(HDMICECSINK_METHOD_REQUEST_AUDIO_DEVICE_POWER_STATUS,&HdmiCecSink::requestAudioDevicePowerStatusWrapper,this);
748-
Register(HDMICECSINK_METHOD_SET_LATENCY_INFO, &HdmiCecSink::setLatencyInfoWrapper, this);
749-
logicalAddressDeviceType = "None";
750-
logicalAddress = 0xFF;
751-
// load persistence setting
752-
loadSettings();
753-
754-
int err;
755-
dsHdmiInGetNumberOfInputsParam_t hdmiInput;
695+
string msg = "";
696+
697+
try
698+
{
699+
device::Manager::Initialize();
700+
LOGINFO("device::Manager::Initialize success");
701+
}
702+
catch(const device::Exception& err)
703+
{
704+
LOGINFO("device::Manager::Initialize failed");
705+
msg = "HdmiCecSink plugin Initialize failed";
706+
LOG_DEVICE_EXCEPTION0();
707+
}
708+
709+
if (0 == msg.length())
710+
{
711+
InitializePowerManager(service);
712+
profileType = searchRdkProfile();
713+
714+
if (profileType == STB || profileType == NOT_FOUND)
715+
{
716+
LOGINFO("Invalid profile type for TV \n");
717+
msg = "Not supported";
718+
return msg;
719+
}
720+
721+
HdmiCecSink::_instance = this;
722+
smConnection=NULL;
723+
cecEnableStatus = false;
724+
HdmiCecSink::_instance->m_numberOfDevices = 0;
725+
m_logicalAddressAllocated = LogicalAddress::UNREGISTERED;
726+
m_currentActiveSource = -1;
727+
m_isHdmiInConnected = false;
728+
hdmiCecAudioDeviceConnected = false;
729+
m_isAudioStatusInfoUpdated = false;
730+
m_audioStatusRequestedCount = 0;
731+
m_audioStatusReceived = false;
732+
m_audioStatusTimerStarted = false;
733+
m_audioDevicePowerStatusRequested = false;
734+
m_pollNextState = POLL_THREAD_STATE_NONE;
735+
m_pollThreadState = POLL_THREAD_STATE_NONE;
736+
m_video_latency = DEFAULT_VIDEO_LATENCY;
737+
m_latency_flags = DEFAULT_LATENCY_FLAGS ;
738+
m_audio_output_delay = DEFAULT_AUDIO_OUTPUT_DELAY;
739+
740+
Register(HDMICECSINK_METHOD_SET_ENABLED, &HdmiCecSink::setEnabledWrapper, this);
741+
Register(HDMICECSINK_METHOD_GET_ENABLED, &HdmiCecSink::getEnabledWrapper, this);
742+
Register(HDMICECSINK_METHOD_SET_OSD_NAME, &HdmiCecSink::setOSDNameWrapper, this);
743+
Register(HDMICECSINK_METHOD_GET_OSD_NAME, &HdmiCecSink::getOSDNameWrapper, this);
744+
Register(HDMICECSINK_METHOD_SET_VENDOR_ID, &HdmiCecSink::setVendorIdWrapper, this);
745+
Register(HDMICECSINK_METHOD_GET_VENDOR_ID, &HdmiCecSink::getVendorIdWrapper, this);
746+
Register(HDMICECSINK_METHOD_PRINT_DEVICE_LIST, &HdmiCecSink::printDeviceListWrapper, this);
747+
Register(HDMICECSINK_METHOD_SET_ACTIVE_PATH, &HdmiCecSink::setActivePathWrapper, this);
748+
Register(HDMICECSINK_METHOD_SET_ROUTING_CHANGE, &HdmiCecSink::setRoutingChangeWrapper, this);
749+
Register(HDMICECSINK_METHOD_GET_DEVICE_LIST, &HdmiCecSink::getDeviceListWrapper, this);
750+
Register(HDMICECSINK_METHOD_GET_ACTIVE_SOURCE, &HdmiCecSink::getActiveSourceWrapper, this);
751+
Register(HDMICECSINK_METHOD_SET_ACTIVE_SOURCE, &HdmiCecSink::setActiveSourceWrapper, this);
752+
Register(HDMICECSINK_METHOD_GET_ACTIVE_ROUTE, &HdmiCecSink::getActiveRouteWrapper, this);
753+
Register(HDMICECSINK_METHOD_REQUEST_ACTIVE_SOURCE, &HdmiCecSink::requestActiveSourceWrapper, this);
754+
Register(HDMICECSINK_METHOD_SETUP_ARC, &HdmiCecSink::setArcEnableDisableWrapper, this);
755+
Register(HDMICECSINK_METHOD_SET_MENU_LANGUAGE, &HdmiCecSink::setMenuLanguageWrapper, this);
756+
Register(HDMICECSINK_METHOD_REQUEST_SHORT_AUDIO_DESCRIPTOR, &HdmiCecSink::requestShortAudioDescriptorWrapper, this);
757+
Register(HDMICECSINK_METHOD_SEND_STANDBY_MESSAGE, &HdmiCecSink::sendStandbyMessageWrapper, this);
758+
Register(HDMICECSINK_METHOD_SEND_AUDIO_DEVICE_POWER_ON, &HdmiCecSink::sendAudioDevicePowerOnMsgWrapper, this);
759+
Register(HDMICECSINK_METHOD_SEND_KEY_PRESS,&HdmiCecSink::sendRemoteKeyPressWrapper,this);
760+
Register(HDMICECSINK_METHOD_SEND_USER_CONTROL_PRESSED,&HdmiCecSink::sendUserControlPressedWrapper,this);
761+
Register(HDMICECSINK_METHOD_SEND_USER_CONTROL_RELEASED,&HdmiCecSink::sendUserControlReleasedWrapper,this);
762+
Register(HDMICECSINK_METHOD_SEND_GIVE_AUDIO_STATUS,&HdmiCecSink::sendGiveAudioStatusWrapper,this);
763+
Register(HDMICECSINK_METHOD_GET_AUDIO_DEVICE_CONNECTED_STATUS,&HdmiCecSink::getAudioDeviceConnectedStatusWrapper,this);
764+
Register(HDMICECSINK_METHOD_REQUEST_AUDIO_DEVICE_POWER_STATUS,&HdmiCecSink::requestAudioDevicePowerStatusWrapper,this);
765+
Register(HDMICECSINK_METHOD_SET_LATENCY_INFO, &HdmiCecSink::setLatencyInfoWrapper, this);
766+
logicalAddressDeviceType = "None";
767+
logicalAddress = 0xFF;
768+
// load persistence setting
769+
loadSettings();
770+
771+
int err;
772+
dsHdmiInGetNumberOfInputsParam_t hdmiInput;
756773
#ifdef IO_HCEC_ENABLE_IARM
757-
InitializeIARM();
774+
InitializeIARM();
758775
#else
759-
device::Host::getInstance().Register(baseInterface<device::Host::IHdmiInEvents>(), "WPE[HdmiCecSink]");
776+
device::Host::getInstance().Register(baseInterface<device::Host::IHdmiInEvents>(), "WPE[HdmiCecSink]");
760777
#endif /* IO_HCEC_ENABLE_IARM */
761-
m_sendKeyEventThreadExit = false;
762-
m_sendKeyEventThread = std::thread(threadSendKeyEvent);
763-
764-
m_currentArcRoutingState = ARC_STATE_ARC_TERMINATED;
765-
m_semSignaltoArcRoutingThread.acquire();
766-
m_arcRoutingThread = std::thread(threadArcRouting);
767-
768-
m_audioStatusDetectionTimer.connect( std::bind( &HdmiCecSink::audioStatusTimerFunction, this ) );
769-
m_audioStatusDetectionTimer.setSingleShot(true);
770-
m_arcStartStopTimer.connect( std::bind( &HdmiCecSink::arcStartStopTimerFunction, this ) );
771-
m_arcStartStopTimer.setSingleShot(true);
772-
// get power state:
773-
Core::hresult res = Core::ERROR_GENERAL;
774-
PowerState pwrStateCur = WPEFramework::Exchange::IPowerManager::POWER_STATE_UNKNOWN;
775-
PowerState pwrStatePrev = WPEFramework::Exchange::IPowerManager::POWER_STATE_UNKNOWN;
776-
777-
ASSERT (_powerManagerPlugin);
778-
if (_powerManagerPlugin) {
779-
res = _powerManagerPlugin->GetPowerState(pwrStateCur, pwrStatePrev);
780-
if (Core::ERROR_NONE == res) {
781-
powerState = (pwrStateCur == WPEFramework::Exchange::IPowerManager::POWER_STATE_ON) ? DEVICE_POWER_STATE_ON : DEVICE_POWER_STATE_OFF;
782-
LOGINFO("Current state is PowerManagerPlugin: (%d) powerState :%d \n", pwrStateCur, powerState);
783-
}
784-
}
778+
m_sendKeyEventThreadExit = false;
779+
m_sendKeyEventThread = std::thread(threadSendKeyEvent);
780+
781+
m_currentArcRoutingState = ARC_STATE_ARC_TERMINATED;
782+
m_semSignaltoArcRoutingThread.acquire();
783+
m_arcRoutingThread = std::thread(threadArcRouting);
784+
785+
m_audioStatusDetectionTimer.connect( std::bind( &HdmiCecSink::audioStatusTimerFunction, this ) );
786+
m_audioStatusDetectionTimer.setSingleShot(true);
787+
m_arcStartStopTimer.connect( std::bind( &HdmiCecSink::arcStartStopTimerFunction, this ) );
788+
m_arcStartStopTimer.setSingleShot(true);
789+
// get power state:
790+
Core::hresult res = Core::ERROR_GENERAL;
791+
PowerState pwrStateCur = WPEFramework::Exchange::IPowerManager::POWER_STATE_UNKNOWN;
792+
PowerState pwrStatePrev = WPEFramework::Exchange::IPowerManager::POWER_STATE_UNKNOWN;
793+
794+
ASSERT (_powerManagerPlugin);
795+
if (_powerManagerPlugin) {
796+
res = _powerManagerPlugin->GetPowerState(pwrStateCur, pwrStatePrev);
797+
if (Core::ERROR_NONE == res) {
798+
powerState = (pwrStateCur == WPEFramework::Exchange::IPowerManager::POWER_STATE_ON) ? DEVICE_POWER_STATE_ON : DEVICE_POWER_STATE_OFF;
799+
LOGINFO("Current state is PowerManagerPlugin: (%d) powerState :%d \n", pwrStateCur, powerState);
800+
}
801+
}
785802

786803
#ifdef IO_HCEC_ENABLE_IARM
787-
err = IARM_Bus_Call(IARM_BUS_DSMGR_NAME,
788-
IARM_BUS_DSMGR_API_dsHdmiInGetNumberOfInputs,
789-
(void *)&hdmiInput,
790-
sizeof(hdmiInput));
804+
err = IARM_Bus_Call(IARM_BUS_DSMGR_NAME,
805+
IARM_BUS_DSMGR_API_dsHdmiInGetNumberOfInputs,
806+
(void *)&hdmiInput,
807+
sizeof(hdmiInput));
791808

792-
if (err == IARM_RESULT_SUCCESS && hdmiInput.result == dsERR_NONE)
793-
{
794-
LOGINFO("Number of Inputs [%d] \n", hdmiInput.numHdmiInputs );
795-
m_numofHdmiInput = hdmiInput.numHdmiInputs;
796-
}else{
797-
LOGINFO("Not able to get Numebr of inputs so defaulting to 3 \n");
798-
m_numofHdmiInput = 3;
799-
}
809+
if (err == IARM_RESULT_SUCCESS && hdmiInput.result == dsERR_NONE)
810+
{
811+
LOGINFO("Number of Inputs [%d] \n", hdmiInput.numHdmiInputs );
812+
m_numofHdmiInput = hdmiInput.numHdmiInputs;
813+
}else{
814+
LOGINFO("Not able to get Numebr of inputs so defaulting to 3 \n");
815+
m_numofHdmiInput = 3;
816+
}
800817
#else
801-
m_numofHdmiInput = device::HdmiInput::getInstance().getNumberOfInputs();
818+
m_numofHdmiInput = device::HdmiInput::getInstance().getNumberOfInputs();
802819
#endif /* IO_HCEC_ENABLE_IARM */
803-
LOGINFO("initalize inputs \n");
820+
LOGINFO("initalize inputs \n");
804821

805-
for (int i = 0; i < m_numofHdmiInput; i++){
806-
HdmiPortMap hdmiPort((uint8_t)i);
807-
LOGINFO(" Add to vector [%d] \n", i);
808-
hdmiInputs.push_back(hdmiPort);
809-
}
822+
for (int i = 0; i < m_numofHdmiInput; i++){
823+
HdmiPortMap hdmiPort((uint8_t)i);
824+
LOGINFO(" Add to vector [%d] \n", i);
825+
hdmiInputs.push_back(hdmiPort);
826+
}
810827

811-
LOGINFO("Check the HDMI State \n");
828+
LOGINFO("Check the HDMI State \n");
812829

813-
CheckHdmiInState();
814-
if (cecSettingEnabled)
815-
{
816-
try
817-
{
818-
CECEnable();
819-
}
820-
catch(...)
830+
CheckHdmiInState();
831+
if (cecSettingEnabled)
821832
{
822-
LOGWARN("Exception while enabling CEC settings .\r\n");
833+
try
834+
{
835+
CECEnable();
836+
}
837+
catch(...)
838+
{
839+
LOGWARN("Exception while enabling CEC settings .\r\n");
840+
msg = "Exception while enabling CEC settings";
841+
}
823842
}
824-
}
825-
getCecVersion();
826-
LOGINFO(" HdmiCecSink plugin Initialize completed \n");
827-
return (std::string());
843+
getCecVersion();
844+
}
845+
846+
LOGINFO(" HdmiCecSink plugin Initialize completed \n");
847+
return msg;
828848

829849
}
830850

@@ -892,6 +912,17 @@ namespace WPEFramework
892912
device::Host::getInstance().UnRegister(baseInterface<device::Host::IHdmiInEvents>());
893913
#endif /* IO_HCEC_ENABLE_IARM */
894914

915+
try
916+
{
917+
device::Manager::DeInitialize();
918+
LOGINFO("device::Manager::DeInitialize success");
919+
}
920+
catch(const device::Exception& err)
921+
{
922+
LOGINFO("device::Manager::DeInitialize failed");
923+
LOG_DEVICE_EXCEPTION0();
924+
}
925+
895926
LOGWARN(" HdmiCecSink Deinitialize() Done");
896927
}
897928

@@ -3607,34 +3638,18 @@ namespace WPEFramework
36073638
} while(retryCount++ <= 6);
36083639
}
36093640
#else
3610-
3611-
#ifdef TBD_IN_DS_CLIENT
3612-
void HdmiInput::getHDMIARCPortId(int *portId)
3613-
{
3614-
if(NULL != portId)
3615-
{
3616-
dsError_t error = dsERR_GENERAL;
3617-
error = dsGetHDMIARCPortId(portId);
3618-
if(dsERR_NONE != error)
3619-
{
3620-
*portId = -1;
3621-
}
3622-
}
3623-
}
3624-
#endif /* TBD_IN_DS_CLIENT */
3625-
36263641
void HdmiCecSink::getHdmiArcPortID()
36273642
{
36283643
int portId;
36293644
unsigned int retryCount = 1;
36303645
do {
36313646
usleep(50000); // Sleep for 50ms before retrying
36323647
portId = -1;
3633-
#ifdef TBD_IN_DS_CLIENT
3648+
#if 0 //just to verify compilation
36343649
device::HdmiInput::getInstance().getHDMIARCPortId(&portId);
36353650
#else
3636-
portId = 0; // just for compilation & testing
3637-
#endif /* TBD_IN_DS_CLIENT */
3651+
portId = 0;
3652+
#endif
36383653
if (-1 != portId)
36393654
{
36403655
LOGINFO("HDMI ARC port ID HdmiArcPortID[%d] on retry count[%d]", portId, retryCount);
@@ -3647,7 +3662,6 @@ namespace WPEFramework
36473662
}
36483663
} while(retryCount++ <= 6);
36493664
}
3650-
36513665
#endif /* IO_HCEC_ENABLE_IARM */
36523666

36533667

0 commit comments

Comments
 (0)