@@ -113,6 +113,7 @@ AVInput* AVInput::_instance = nullptr;
113
113
114
114
AVInput::AVInput ()
115
115
: PluginHost::JSONRPC()
116
+ , _registeredHostEventHandlers(false )
116
117
{
117
118
RegisterAll ();
118
119
}
@@ -132,7 +133,17 @@ const string AVInput::Initialize(PluginHost::IShell * /* service */)
132
133
133
134
void AVInput::Deinitialize (PluginHost::IShell * /* service */ )
134
135
{
136
+ _registeredHostEventHandlers = false ;
137
+
138
+ if (_hostListener != nullptr )
139
+ {
140
+ delete _hostListener;
141
+ _hostListener = nullptr ;
142
+ }
143
+
135
144
DeinitializeIARM ();
145
+ _registeredHostEventHandlers = false ;
146
+
136
147
AVInput::_instance = nullptr ;
137
148
}
138
149
@@ -141,95 +152,15 @@ string AVInput::Information() const
141
152
return (string ());
142
153
}
143
154
144
- void AVInput::InitializeIARM ()
145
- {
146
- if (Utils::IARM::init ()) {
147
- IARM_Result_t res;
148
- IARM_CHECK (IARM_Bus_RegisterEventHandler (
149
- IARM_BUS_DSMGR_NAME,
150
- IARM_BUS_DSMGR_EVENT_HDMI_IN_HOTPLUG,
151
- dsAVEventHandler));
152
- IARM_CHECK (IARM_Bus_RegisterEventHandler (
153
- IARM_BUS_DSMGR_NAME,
154
- IARM_BUS_DSMGR_EVENT_HDMI_IN_SIGNAL_STATUS,
155
- dsAVSignalStatusEventHandler));
156
- IARM_CHECK (IARM_Bus_RegisterEventHandler (
157
- IARM_BUS_DSMGR_NAME,
158
- IARM_BUS_DSMGR_EVENT_HDMI_IN_STATUS,
159
- dsAVStatusEventHandler));
160
- IARM_CHECK (IARM_Bus_RegisterEventHandler (
161
- IARM_BUS_DSMGR_NAME,
162
- IARM_BUS_DSMGR_EVENT_HDMI_IN_VIDEO_MODE_UPDATE,
163
- dsAVVideoModeEventHandler));
164
- IARM_CHECK (IARM_Bus_RegisterEventHandler (
165
- IARM_BUS_DSMGR_NAME,
166
- IARM_BUS_DSMGR_EVENT_HDMI_IN_ALLM_STATUS,
167
- dsAVGameFeatureStatusEventHandler));
168
- IARM_CHECK (IARM_Bus_RegisterEventHandler (
169
- IARM_BUS_DSMGR_NAME,
170
- IARM_BUS_DSMGR_EVENT_HDMI_IN_VRR_STATUS,
171
- dsAVGameFeatureStatusEventHandler));
172
- IARM_CHECK (IARM_Bus_RegisterEventHandler (
173
- IARM_BUS_DSMGR_NAME,
174
- IARM_BUS_DSMGR_EVENT_COMPOSITE_IN_HOTPLUG,
175
- dsAVEventHandler));
176
- IARM_CHECK (IARM_Bus_RegisterEventHandler (
177
- IARM_BUS_DSMGR_NAME,
178
- IARM_BUS_DSMGR_EVENT_COMPOSITE_IN_SIGNAL_STATUS,
179
- dsAVSignalStatusEventHandler));
180
- IARM_CHECK (IARM_Bus_RegisterEventHandler (
181
- IARM_BUS_DSMGR_NAME,
182
- IARM_BUS_DSMGR_EVENT_COMPOSITE_IN_STATUS,
183
- dsAVStatusEventHandler));
184
- IARM_CHECK (IARM_Bus_RegisterEventHandler (
185
- IARM_BUS_DSMGR_NAME,
186
- IARM_BUS_DSMGR_EVENT_COMPOSITE_IN_VIDEO_MODE_UPDATE,
187
- dsAVVideoModeEventHandler));
188
- IARM_CHECK (IARM_Bus_RegisterEventHandler (
189
- IARM_BUS_DSMGR_NAME,
190
- IARM_BUS_DSMGR_EVENT_HDMI_IN_AVI_CONTENT_TYPE,
191
- dsAviContentTypeEventHandler));
192
- }
193
- }
194
-
195
- void AVInput::DeinitializeIARM ()
196
- {
197
- if (Utils::IARM::isConnected ()) {
198
- IARM_Result_t res;
199
- IARM_CHECK (IARM_Bus_RemoveEventHandler (
200
- IARM_BUS_DSMGR_NAME,
201
- IARM_BUS_DSMGR_EVENT_HDMI_IN_HOTPLUG, dsAVEventHandler));
202
- IARM_CHECK (IARM_Bus_RemoveEventHandler (
203
- IARM_BUS_DSMGR_NAME,
204
- IARM_BUS_DSMGR_EVENT_HDMI_IN_SIGNAL_STATUS, dsAVSignalStatusEventHandler));
205
- IARM_CHECK (IARM_Bus_RemoveEventHandler (
206
- IARM_BUS_DSMGR_NAME,
207
- IARM_BUS_DSMGR_EVENT_HDMI_IN_STATUS, dsAVStatusEventHandler));
208
- IARM_CHECK (IARM_Bus_RemoveEventHandler (
209
- IARM_BUS_DSMGR_NAME,
210
- IARM_BUS_DSMGR_EVENT_HDMI_IN_VIDEO_MODE_UPDATE, dsAVVideoModeEventHandler));
211
- IARM_CHECK (IARM_Bus_RemoveEventHandler (
212
- IARM_BUS_DSMGR_NAME,
213
- IARM_BUS_DSMGR_EVENT_HDMI_IN_ALLM_STATUS, dsAVGameFeatureStatusEventHandler));
214
- IARM_CHECK (IARM_Bus_RemoveEventHandler (
215
- IARM_BUS_DSMGR_NAME,
216
- IARM_BUS_DSMGR_EVENT_HDMI_IN_VRR_STATUS, dsAVGameFeatureStatusEventHandler));
217
- IARM_CHECK (IARM_Bus_RemoveEventHandler (
218
- IARM_BUS_DSMGR_NAME,
219
- IARM_BUS_DSMGR_EVENT_COMPOSITE_IN_HOTPLUG, dsAVEventHandler));
220
- IARM_CHECK (IARM_Bus_RemoveEventHandler (
221
- IARM_BUS_DSMGR_NAME,
222
- IARM_BUS_DSMGR_EVENT_COMPOSITE_IN_SIGNAL_STATUS, dsAVSignalStatusEventHandler));
223
- IARM_CHECK (IARM_Bus_RemoveEventHandler (
224
- IARM_BUS_DSMGR_NAME,
225
- IARM_BUS_DSMGR_EVENT_COMPOSITE_IN_STATUS, dsAVStatusEventHandler));
226
- IARM_CHECK (IARM_Bus_RemoveEventHandler (
227
- IARM_BUS_DSMGR_NAME,
228
- IARM_BUS_DSMGR_EVENT_COMPOSITE_IN_VIDEO_MODE_UPDATE, dsAVVideoModeEventHandler));
229
- IARM_CHECK (IARM_Bus_RemoveEventHandler (
230
- IARM_BUS_DSMGR_NAME,
231
- IARM_BUS_DSMGR_EVENT_HDMI_IN_AVI_CONTENT_TYPE, dsAviContentTypeEventHandler));
232
- }
155
+ void AVInput::InitializeDeviceManager ()
156
+ {
157
+ registerHostEventHandlers ();
158
+ }
159
+
160
+ void AVInput::DeInitializeDeviceManager ()
161
+ {
162
+ device::Host::getInstance ().Unregister (_hdmiEventNotification);
163
+ device::Host::getInstance ().Unregister (_compositeinEventNotification);
233
164
}
234
165
235
166
void AVInput::RegisterAll ()
@@ -923,7 +854,7 @@ void AVInput::AVInputVideoModeUpdate( int port , dsVideoPortResolution_t resolut
923
854
924
855
sendNotify (AVINPUT_EVENT_ON_VIDEO_MODE_UPDATED, params);
925
856
}
926
-
857
+ # if 0
927
858
void AVInput::dsAviContentTypeEventHandler(const char *owner, IARM_EventId_t eventId, void *data, size_t len)
928
859
{
929
860
if(!AVInput::_instance)
@@ -939,6 +870,7 @@ void AVInput::dsAviContentTypeEventHandler(const char *owner, IARM_EventId_t eve
939
870
AVInput::_instance->hdmiInputAviContentTypeChange(hdmi_in_port, avi_content_type);
940
871
}
941
872
}
873
+ #endif
942
874
943
875
void AVInput::hdmiInputAviContentTypeChange ( int port , int content_type)
944
876
{
@@ -948,6 +880,7 @@ void AVInput::hdmiInputAviContentTypeChange( int port , int content_type)
948
880
sendNotify (AVINPUT_EVENT_ON_AVI_CONTENT_TYPE_CHANGED, params);
949
881
}
950
882
883
+ #if 0
951
884
void AVInput::dsAVEventHandler(const char *owner, IARM_EventId_t eventId, void *data, size_t len)
952
885
{
953
886
if(!AVInput::_instance)
@@ -1071,6 +1004,8 @@ void AVInput::dsAVGameFeatureStatusEventHandler(const char *owner, IARM_EventId_
1071
1004
}
1072
1005
}
1073
1006
1007
+ #endif
1008
+
1074
1009
void AVInput::AVInputALLMChange ( int port , bool allm_mode)
1075
1010
{
1076
1011
JsonObject params;
@@ -1792,5 +1727,146 @@ int AVInput::getEdidVersion(int iPort)
1792
1727
return edidVersion;
1793
1728
}
1794
1729
1730
+ void DisplaySettings::registerHostEventHandlers ()
1731
+ {
1732
+ LOGINFO (" registerHostEventHandlers" );
1733
+ if (!_registeredHostEventHandlers)
1734
+ {
1735
+ _registeredHostEventHandlers = true ;
1736
+ device::Host::getInstance ().Register (_hdmiEventNotification);
1737
+ device::Host::getInstance ().Register (_compositeinEventNotification);
1738
+ }
1739
+ }
1740
+
1741
+ /* HDMIInEventsNotification*/
1742
+
1743
+ void AVInput::OnHdmiInAVIContentType (HDMIInPort port, HDMIInAviContentType aviContentType)
1744
+ {
1745
+ LOGINFO (" Received OnHdmiInAVIContentType callback, port: %d, Content Type: %d" , port, aviContentType);
1746
+
1747
+ if (AVInput::_instance) {
1748
+ AVInput::_instance->hdmiInputAviContentTypeChange (port, aviContentType);
1749
+ }
1750
+ }
1751
+
1752
+ void AVInput::OnHdmiInEventHotPlug (dsHdmiInPort_t port, bool isConnected)
1753
+ {
1754
+ LOGINFO (" Received OnHdmiInEventHotPlug callback, port: %d, isConnected: %s" , port, isConnected ? " true" : " false" );
1755
+
1756
+ if (AVInput::_instance) {
1757
+ AVInput::_instance->AVInputHotplug (port,isConnected ? AV_HOT_PLUG_EVENT_CONNECTED : AV_HOT_PLUG_EVENT_DISCONNECTED, HDMI);
1758
+ }
1759
+ }
1760
+
1761
+ void AVInput::OnHdmiInEventSignalStatus (dsHdmiInPort_t port, dsHdmiInSignalStatus_t signalStatus)
1762
+ {
1763
+ LOGINFO (" Received OnHdmiInEventSignalStatus callback, port: %d, signalStatus: %d" ,port, signalStatus);
1764
+
1765
+ if (AVInput::_instance) {
1766
+ AVInput::_instance->AVInputSignalChange (port, signalStatus, HDMI);
1767
+ }
1768
+ }
1769
+
1770
+ void AVInput::OnHdmiInEventStatus (dsHdmiInPort_t activePort, bool isPresented)
1771
+ {
1772
+ LOGINFO (" Received OnHdmiInEventStatus callback, port: %d, isPresented: %s" ,activePort, isPresented ? " true" : " false" );
1773
+
1774
+ if (AVInput::_instance) {
1775
+ AVInput::_instance->AVInputStatusChange (activePort, isPresented, HDMI);
1776
+ }
1777
+ }
1778
+
1779
+ void AVInput::OnHdmiInVideoModeUpdate (HDMIInPort port, const HDMIVideoPortResolution& videoPortResolution)
1780
+ {
1781
+ LOGINFO (" Received OnHdmiInVideoModeUpdate callback, port: %d, pixelResolution: %d, interlaced: %d, frameRate: %d" ,
1782
+ port,
1783
+ videoPortResolution.pixelResolution ,
1784
+ videoPortResolution.interlaced ,
1785
+ videoPortResolution.frameRate );
1786
+
1787
+ if (AVInput::_instance) {
1788
+ AVInput::_instance->AVInputVideoModeUpdate (port, videoPortResolution, HDMI);
1789
+ }
1790
+ }
1791
+
1792
+ void AVInput::OnHdmiInAllmStatus (HDMIInPort port, bool allmStatus)
1793
+ {
1794
+ LOGINFO (" Received OnHdmiInAllmStatus callback, port: %d, ALLM Mode: %s" ,
1795
+ port, allmStatus ? " true" : " false" );
1796
+
1797
+ if (AVInput::_instance) {
1798
+ AVInput::_instance->AVInputALLMChange (port, allmStatus);
1799
+ }
1800
+ }
1801
+
1802
+ void AVInput::OnHdmiInVRRStatus (HDMIInPort port, HDMIInVRRType vrrType)
1803
+ {
1804
+ LOGINFO (" Received OnHdmiInVRRStatus callback, port: %d, VRR Type: %d" ,
1805
+ port, vrrType);
1806
+
1807
+ if (!AVInput::_instance)
1808
+ return ;
1809
+
1810
+ // Handle transitions
1811
+ if (vrrType == dsVRR_NONE) {
1812
+ if (AVInput::_instance->m_currentVrrType != dsVRR_NONE) {
1813
+ AVInput::_instance->AVInputVRRChange (port,AVInput::_instance->m_currentVrrType ,false );
1814
+ }
1815
+ } else {
1816
+ if (AVInput::_instance->m_currentVrrType != dsVRR_NONE) {
1817
+ AVInput::_instance->AVInputVRRChange (port,AVInput::_instance->m_currentVrrType ,false );
1818
+ }
1819
+ AVInput::_instance->AVInputVRRChange (port,vrrType,true );
1820
+ }
1821
+
1822
+ AVInput::_instance->m_currentVrrType = vrrType;
1823
+ }
1824
+
1825
+
1826
+ /* CompositeInEventsNotification*/
1827
+
1828
+ void AVInput::OnCompositeInHotPlug (dsCompositeInPort_t port, bool isConnected)
1829
+ {
1830
+ LOGINFO (" Received OnCompositeInHotPlug callback, port: %d, isConnected: %s" ,port, isConnected ? " true" : " false" );
1831
+
1832
+ if (AVInput::_instance) {
1833
+ AVInput::_instance->AVInputHotplug (port,isConnected ? AV_HOT_PLUG_EVENT_CONNECTED : AV_HOT_PLUG_EVENT_DISCONNECTED,COMPOSITE);
1834
+ }
1835
+ }
1836
+
1837
+ void AVInput::OnCompositeInSignalStatus (dsCompositeInPort_t port, dsCompInSignalStatus_t signalStatus)
1838
+ {
1839
+ LOGINFO (" Received OnCompositeInSignalStatus callback, port: %d, signalStatus: %d" ,port, signalStatus);
1840
+
1841
+ if (AVInput::_instance) {
1842
+ AVInput::_instance->AVInputSignalChange (port, signalStatus, COMPOSITE);
1843
+ }
1844
+ }
1845
+
1846
+ void AVInput::OnCompositeInStatus (dsCompositeInPort_t activePort, bool isPresented)
1847
+ {
1848
+ LOGINFO (" Received OnCompositeInStatus callback, port: %d, isPresented: %s" ,
1849
+ activePort, isPresented ? " true" : " false" );
1850
+
1851
+ if (AVInput::_instance) {
1852
+ AVInput::_instance->AVInputStatusChange (activePort, isPresented, COMPOSITE);
1853
+ }
1854
+ }
1855
+
1856
+ void AVInput::OnCompositeInVideoModeUpdate (dsCompositeInPort_t activePort, dsVideoPortResolution_t videoResolution)
1857
+ {
1858
+ LOGINFO (" Received OnCompositeInVideoModeUpdate callback, port: %d, pixelResolution: %d, interlaced: %d, frameRate: %d" ,
1859
+ activePort,
1860
+ videoResolution.pixelResolution ,
1861
+ videoResolution.interlaced ,
1862
+ videoResolution.frameRate );
1863
+
1864
+ if (AVInput::_instance) {
1865
+ AVInput::_instance->AVInputVideoModeUpdate (activePort, videoResolution, COMPOSITE);
1866
+ }
1867
+ }
1868
+
1869
+
1870
+
1795
1871
} // namespace Plugin
1796
1872
} // namespace WPEFramework
0 commit comments