Skip to content

Commit 05bd5b7

Browse files
client changes in AVInput
1 parent 3b90d4b commit 05bd5b7

File tree

2 files changed

+167
-91
lines changed

2 files changed

+167
-91
lines changed

.github/workflows/tests-trigger.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ name: main-workflow
44

55
on:
66
push:
7-
branches: [ main, develop, 'sprint/**', 'release/**' ]
7+
branches: [ main, develop, 'sprint/**', 'release/**' , feature/ds-manager_AVInput]
88
pull_request:
99
branches: [ main, develop, 'sprint/**', 'release/**' ]
1010

AVInput/AVInput.cpp

Lines changed: 166 additions & 90 deletions
Original file line numberDiff line numberDiff line change
@@ -113,6 +113,7 @@ AVInput* AVInput::_instance = nullptr;
113113

114114
AVInput::AVInput()
115115
: PluginHost::JSONRPC()
116+
, _registeredHostEventHandlers(false)
116117
{
117118
RegisterAll();
118119
}
@@ -132,7 +133,17 @@ const string AVInput::Initialize(PluginHost::IShell * /* service */)
132133

133134
void AVInput::Deinitialize(PluginHost::IShell * /* service */)
134135
{
136+
_registeredHostEventHandlers = false;
137+
138+
if (_hostListener != nullptr)
139+
{
140+
delete _hostListener;
141+
_hostListener = nullptr;
142+
}
143+
135144
DeinitializeIARM();
145+
_registeredHostEventHandlers = false;
146+
136147
AVInput::_instance = nullptr;
137148
}
138149

@@ -141,95 +152,15 @@ string AVInput::Information() const
141152
return (string());
142153
}
143154

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);
233164
}
234165

235166
void AVInput::RegisterAll()
@@ -923,7 +854,7 @@ void AVInput::AVInputVideoModeUpdate( int port , dsVideoPortResolution_t resolut
923854

924855
sendNotify(AVINPUT_EVENT_ON_VIDEO_MODE_UPDATED, params);
925856
}
926-
857+
#if 0
927858
void AVInput::dsAviContentTypeEventHandler(const char *owner, IARM_EventId_t eventId, void *data, size_t len)
928859
{
929860
if(!AVInput::_instance)
@@ -939,6 +870,7 @@ void AVInput::dsAviContentTypeEventHandler(const char *owner, IARM_EventId_t eve
939870
AVInput::_instance->hdmiInputAviContentTypeChange(hdmi_in_port, avi_content_type);
940871
}
941872
}
873+
#endif
942874

943875
void AVInput::hdmiInputAviContentTypeChange( int port , int content_type)
944876
{
@@ -948,6 +880,7 @@ void AVInput::hdmiInputAviContentTypeChange( int port , int content_type)
948880
sendNotify(AVINPUT_EVENT_ON_AVI_CONTENT_TYPE_CHANGED, params);
949881
}
950882

883+
#if 0
951884
void AVInput::dsAVEventHandler(const char *owner, IARM_EventId_t eventId, void *data, size_t len)
952885
{
953886
if(!AVInput::_instance)
@@ -1071,6 +1004,8 @@ void AVInput::dsAVGameFeatureStatusEventHandler(const char *owner, IARM_EventId_
10711004
}
10721005
}
10731006

1007+
#endif
1008+
10741009
void AVInput::AVInputALLMChange( int port , bool allm_mode)
10751010
{
10761011
JsonObject params;
@@ -1792,5 +1727,146 @@ int AVInput::getEdidVersion(int iPort)
17921727
return edidVersion;
17931728
}
17941729

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+
17951871
} // namespace Plugin
17961872
} // namespace WPEFramework

0 commit comments

Comments
 (0)