@@ -692,139 +692,159 @@ namespace WPEFramework
692
692
}
693
693
const std::string HdmiCecSink::Initialize (PluginHost::IShell *service)
694
694
{
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;
756
773
#ifdef IO_HCEC_ENABLE_IARM
757
- InitializeIARM ();
774
+ InitializeIARM ();
758
775
#else
759
- device::Host::getInstance ().Register (baseInterface<device::Host::IHdmiInEvents>(), " WPE[HdmiCecSink]" );
776
+ device::Host::getInstance ().Register (baseInterface<device::Host::IHdmiInEvents>(), " WPE[HdmiCecSink]" );
760
777
#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
+ }
785
802
786
803
#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));
791
808
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
+ }
800
817
#else
801
- m_numofHdmiInput = device::HdmiInput::getInstance ().getNumberOfInputs ();
818
+ m_numofHdmiInput = device::HdmiInput::getInstance ().getNumberOfInputs ();
802
819
#endif /* IO_HCEC_ENABLE_IARM */
803
- LOGINFO (" initalize inputs \n " );
820
+ LOGINFO (" initalize inputs \n " );
804
821
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
+ }
810
827
811
- LOGINFO (" Check the HDMI State \n " );
828
+ LOGINFO (" Check the HDMI State \n " );
812
829
813
- CheckHdmiInState ();
814
- if (cecSettingEnabled)
815
- {
816
- try
817
- {
818
- CECEnable ();
819
- }
820
- catch (...)
830
+ CheckHdmiInState ();
831
+ if (cecSettingEnabled)
821
832
{
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
+ }
823
842
}
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;
828
848
829
849
}
830
850
@@ -892,6 +912,17 @@ namespace WPEFramework
892
912
device::Host::getInstance ().UnRegister (baseInterface<device::Host::IHdmiInEvents>());
893
913
#endif /* IO_HCEC_ENABLE_IARM */
894
914
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
+
895
926
LOGWARN (" HdmiCecSink Deinitialize() Done" );
896
927
}
897
928
@@ -3607,34 +3638,18 @@ namespace WPEFramework
3607
3638
} while (retryCount++ <= 6 );
3608
3639
}
3609
3640
#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
-
3626
3641
void HdmiCecSink::getHdmiArcPortID ()
3627
3642
{
3628
3643
int portId;
3629
3644
unsigned int retryCount = 1 ;
3630
3645
do {
3631
3646
usleep (50000 ); // Sleep for 50ms before retrying
3632
3647
portId = -1 ;
3633
- #ifdef TBD_IN_DS_CLIENT
3648
+ #if 0 //just to verify compilation
3634
3649
device::HdmiInput::getInstance().getHDMIARCPortId(&portId);
3635
3650
#else
3636
- portId = 0 ; // just for compilation & testing
3637
- #endif /* TBD_IN_DS_CLIENT */
3651
+ portId = 0 ;
3652
+ #endif
3638
3653
if (-1 != portId)
3639
3654
{
3640
3655
LOGINFO (" HDMI ARC port ID HdmiArcPortID[%d] on retry count[%d]" , portId, retryCount);
@@ -3647,7 +3662,6 @@ namespace WPEFramework
3647
3662
}
3648
3663
} while (retryCount++ <= 6 );
3649
3664
}
3650
-
3651
3665
#endif /* IO_HCEC_ENABLE_IARM */
3652
3666
3653
3667
0 commit comments