23
23
#include " ccec/Connection.hpp"
24
24
#include " ccec/CECFrame.hpp"
25
25
#include " ccec/MessageEncoder.hpp"
26
- #include " host.hpp"
27
26
#include " UtilsgetRFCConfig.h"
28
27
29
- #include " dsMgr.h"
30
- #include " dsRpc.h"
31
28
#include " dsDisplay.h"
32
29
#include " videoOutputPort.hpp"
33
30
#include " manager.hpp"
36
33
#include " UtilsIarm.h"
37
34
#include " UtilsJsonRpc.h"
38
35
#include " UtilssyncPersistFile.h"
36
+ #include " exception.hpp"
37
+ #include " hdmiIn.hpp"
38
+ #include " dsError.h"
39
39
40
40
using CCECRequestActiveSource = ::RequestActiveSource;
41
41
using CCECSetMenuLanguage = ::SetMenuLanguage;
@@ -692,7 +692,18 @@ namespace WPEFramework
692
692
}
693
693
694
694
HdmiCecSinkImplementation::_instance = nullptr ;
695
- DeinitializeIARM ();
695
+ device::Host::getInstance ().UnRegister (baseInterface<device::Host::IHdmiInEvents>());
696
+
697
+ try
698
+ {
699
+ device::Manager::DeInitialize ();
700
+ LOGINFO (" HdmiCecSink plugin device::Manager::DeInitialize success" );
701
+ }
702
+ catch (const device::Exception& err)
703
+ {
704
+ LOGINFO (" HdmiCecSink plugin device::Manager::DeInitialize failed" );
705
+ LOG_DEVICE_EXCEPTION0 ();
706
+ }
696
707
}
697
708
698
709
Core::hresult HdmiCecSinkImplementation::Configure (PluginHost::IShell *service)
@@ -719,12 +730,22 @@ namespace WPEFramework
719
730
720
731
logicalAddressDeviceType = " None" ;
721
732
logicalAddress = 0xFF ;
733
+
734
+ try
735
+ {
736
+ device::Manager::Initialize ();
737
+ LOGINFO (" HdmiCecSink plugin device::Manager::Initialize success" );
738
+ }
739
+ catch (const device::Exception& err)
740
+ {
741
+ LOGINFO (" HdmiCecSink plugin device::Manager::Initialize failed" );
742
+ LOG_DEVICE_EXCEPTION0 ();
743
+ }
744
+
722
745
// load persistence setting
723
746
loadSettings ();
747
+ device::Host::getInstance ().Register (baseInterface<device::Host::IHdmiInEvents>(), " WPE::CecSink" );
724
748
725
- int err;
726
- dsHdmiInGetNumberOfInputsParam_t hdmiInput;
727
- InitializeIARM ();
728
749
m_sendKeyEventThreadExit = false ;
729
750
m_sendKeyEventThread = std::thread (threadSendKeyEvent);
730
751
@@ -751,18 +772,16 @@ namespace WPEFramework
751
772
}
752
773
}
753
774
754
- err = IARM_Bus_Call (IARM_BUS_DSMGR_NAME,
755
- IARM_BUS_DSMGR_API_dsHdmiInGetNumberOfInputs,
756
- (void *)&hdmiInput,
757
- sizeof (hdmiInput));
758
-
759
- if (err == IARM_RESULT_SUCCESS && hdmiInput.result == dsERR_NONE)
760
- {
761
- LOGINFO (" Number of Inputs [%d] \n " , hdmiInput.numHdmiInputs );
762
- m_numofHdmiInput = hdmiInput.numHdmiInputs ;
763
- }else {
764
- LOGINFO (" Not able to get Numebr of inputs so defaulting to 3 \n " );
765
- m_numofHdmiInput = 3 ;
775
+ try
776
+ {
777
+ m_numofHdmiInput = device::HdmiInput::getInstance ().getNumberOfInputs ();
778
+ LOGINFO (" HdmiCecSink plugin m_numofHdmiInput %d" , m_numofHdmiInput);
779
+ }
780
+ catch (const device::Exception& err)
781
+ {
782
+ LOGINFO (" HdmiCecSink plugin device::HdmiInput::getInstance().getNumberOfInputs failed so defaulting to 3" );
783
+ m_numofHdmiInput = 3 ;
784
+ LOG_DEVICE_EXCEPTION0 ();
766
785
}
767
786
768
787
LOGINFO (" initalize inputs \n " );
@@ -834,25 +853,6 @@ namespace WPEFramework
834
853
return Core::ERROR_NONE;
835
854
}
836
855
837
-
838
- void HdmiCecSinkImplementation::InitializeIARM ()
839
- {
840
- if (Utils::IARM::init ())
841
- {
842
- IARM_Result_t res;
843
- IARM_CHECK ( IARM_Bus_RegisterEventHandler (IARM_BUS_DSMGR_NAME,IARM_BUS_DSMGR_EVENT_HDMI_IN_HOTPLUG, dsHdmiEventHandler) );
844
- }
845
- }
846
-
847
- void HdmiCecSinkImplementation::DeinitializeIARM ()
848
- {
849
- if (Utils::IARM::isConnected ())
850
- {
851
- IARM_Result_t res;
852
- IARM_CHECK ( IARM_Bus_RemoveEventHandler (IARM_BUS_DSMGR_NAME,IARM_BUS_DSMGR_EVENT_HDMI_IN_HOTPLUG, dsHdmiEventHandler) );
853
- }
854
- }
855
-
856
856
void HdmiCecSinkImplementation::InitializePowerManager (PluginHost::IShell *service)
857
857
{
858
858
_powerManagerPlugin = PowerManagerInterfaceBuilder (_T (" org.rdk.PowerManager" ))
@@ -872,21 +872,13 @@ namespace WPEFramework
872
872
}
873
873
}
874
874
875
- void HdmiCecSinkImplementation::dsHdmiEventHandler ( const char *owner, IARM_EventId_t eventId, void *data, size_t len )
875
+ void HdmiCecSink::OnHdmiInEventHotPlug (dsHdmiInPort_t port, bool isConnected )
876
876
{
877
- if (!HdmiCecSinkImplementation::_instance)
878
- {
877
+ if (!HdmiCecSink::_instance)
879
878
return ;
880
- }
881
879
882
- if (IARM_BUS_DSMGR_EVENT_HDMI_IN_HOTPLUG == eventId)
883
- {
884
- IARM_Bus_DSMgr_EventData_t *eventData = (IARM_Bus_DSMgr_EventData_t *)data;
885
- bool isHdmiConnected = eventData->data .hdmi_in_connect .isPortConnected ;
886
- dsHdmiInPort_t portId = eventData->data .hdmi_in_connect .port ;
887
- LOGINFO (" Received IARM_BUS_DSMGR_EVENT_HDMI_IN_HOTPLUG event port: %d data:%d \r\n " ,portId, isHdmiConnected);
888
- HdmiCecSinkImplementation::_instance->onHdmiHotPlug (portId,isHdmiConnected);
889
- }
880
+ LOGINFO (" Received HdmiCecSink::OnHdmiInEventHotPlug event port: %d isConnected: %d \r\n " , port, isConnected);
881
+ HdmiCecSink::_instance->onHdmiHotPlug ((int ) port, isConnected);
890
882
}
891
883
892
884
void HdmiCecSinkImplementation::onPowerModeChanged (const PowerState ¤tState, const PowerState &newState)
@@ -2020,28 +2012,18 @@ namespace WPEFramework
2020
2012
2021
2013
void HdmiCecSinkImplementation::CheckHdmiInState ()
2022
2014
{
2023
- int err;
2024
2015
bool isAnyPortConnected = false ;
2025
2016
2026
- dsHdmiInGetStatusParam_t params;
2027
- err = IARM_Bus_Call (IARM_BUS_DSMGR_NAME,
2028
- IARM_BUS_DSMGR_API_dsHdmiInGetStatus,
2029
- (void *)¶ms,
2030
- sizeof (params));
2031
-
2032
- if (err == IARM_RESULT_SUCCESS && params.result == dsERR_NONE )
2017
+ for ( int i = 0 ; i < m_numofHdmiInput; i++ )
2033
2018
{
2034
- for ( int i = 0 ; i < m_numofHdmiInput; i++ )
2035
- {
2036
- LOGINFO (" Is HDMI In Port [%d] connected [%d] \n " ,i, params.status .isPortConnected [i]);
2037
- if ( params.status .isPortConnected [i] )
2038
- {
2039
- isAnyPortConnected = true ;
2040
- }
2019
+ LOGINFO (" update Port Status [%d] \n " , i);
2020
+ hdmiInputs[i].update (device::HdmiInput::getInstance ().isPortConnected (i));
2041
2021
2042
- LOGINFO (" update Port Status [%d] \n " , i);
2043
- hdmiInputs[i].update (params.status .isPortConnected [i]);
2044
- }
2022
+ LOGINFO (" Is HDMI In Port [%d] connected [%d] \n " ,i, hdmiInputs[i].m_isConnected );
2023
+ if ( hdmiInputs[i].m_isConnected )
2024
+ {
2025
+ isAnyPortConnected = true ;
2026
+ }
2045
2027
}
2046
2028
2047
2029
if ( isAnyPortConnected ) {
@@ -3590,17 +3572,17 @@ namespace WPEFramework
3590
3572
3591
3573
void HdmiCecSinkImplementation::getHdmiArcPortID ()
3592
3574
{
3593
- int err ;
3594
- dsGetHDMIARCPortIdParam_t param ;
3595
- err = IARM_Bus_Call (IARM_BUS_DSMGR_NAME,
3596
- ( char *)IARM_BUS_DSMGR_API_dsGetHDMIARCPortId,
3597
- ( void *)¶m,
3598
- sizeof (param)) ;
3599
- if (IARM_RESULT_SUCCESS == err)
3600
- {
3601
- LOGINFO ( " HDMI ARC port ID HdmiArcPortID=[%d] \n " , param. portId );
3602
- HdmiArcPortID = param. portId ;
3603
- }
3575
+ int portId = - 1 ;
3576
+ dsError_t error = device::HdmiInput::getInstance (). getHDMIARCPortId (portId) ;
3577
+ if (dsERR_NONE == error)
3578
+ {
3579
+ LOGINFO ( " HDMI ARC port ID HdmiArcPortID[%d] " , portId);
3580
+ HdmiArcPortID = portId ;
3581
+ }
3582
+ else
3583
+ {
3584
+ LOGWARN ( " getHDMIARCPortId failed " ) ;
3585
+ }
3604
3586
}
3605
3587
3606
3588
void HdmiCecSinkImplementation::getCecVersion ()
0 commit comments