diff --git a/AVInput/AVInput.cpp b/AVInput/AVInput.cpp index c7586702..05f2ab1b 100644 --- a/AVInput/AVInput.cpp +++ b/AVInput/AVInput.cpp @@ -18,13 +18,12 @@ **/ #include "AVInput.h" -#include "dsMgr.h" -#include "hdmiIn.hpp" + #include "compositeIn.hpp" +#include "hdmiIn.hpp" #include "UtilsJsonRpc.h" #include "UtilsIarm.h" -#include "host.hpp" #include "exception.hpp" #include @@ -81,9 +80,9 @@ using namespace std; int getTypeOfInput(string sType) { int iType = -1; - if (strcmp (sType.c_str(), "HDMI") == 0) + if (0 == strcmp (sType.c_str(), "HDMI")) iType = HDMI; - else if (strcmp (sType.c_str(), "COMPOSITE") ==0) + else if (0 == strcmp (sType.c_str(), "COMPOSITE")) iType = COMPOSITE; else throw "Invalide type of INPUT, please specify HDMI/COMPOSITE"; @@ -113,6 +112,7 @@ AVInput* AVInput::_instance = nullptr; AVInput::AVInput() : PluginHost::JSONRPC() + , _registeredDsEventHandlers(false) { RegisterAll(); } @@ -125,14 +125,42 @@ AVInput::~AVInput() const string AVInput::Initialize(PluginHost::IShell * /* service */) { AVInput::_instance = this; - InitializeIARM(); + try + { + device::Manager::Initialize(); + LOGINFO("device::Manager::Initialize success"); + if (!_registeredDsEventHandlers) { + _registeredDsEventHandlers = true; + device::Host::getInstance().Register(baseInterface(), "WPE::AVInputHdmi"); + device::Host::getInstance().Register(baseInterface(), "WPE::AVInputComp"); + } + } + catch(const device::Exception& err) + { + LOGINFO("AVInput: Initialization failed due to device::manager::Initialize()"); + LOG_DEVICE_EXCEPTION0(); + } return (string()); } void AVInput::Deinitialize(PluginHost::IShell * /* service */) { - DeinitializeIARM(); + + device::Host::getInstance().UnRegister(baseInterface()); + device::Host::getInstance().UnRegister(baseInterface()); + _registeredDsEventHandlers = false; + try + { + device::Manager::DeInitialize(); + LOGINFO("device::Manager::DeInitialize success"); + } + catch(const device::Exception& err) + { + LOGINFO("device::Manager::DeInitialize failed due to device::Manager::DeInitialize()"); + LOG_DEVICE_EXCEPTION0(); + } + AVInput::_instance = nullptr; } @@ -141,97 +169,6 @@ string AVInput::Information() const return (string()); } -void AVInput::InitializeIARM() -{ - if (Utils::IARM::init()) { - IARM_Result_t res; - IARM_CHECK(IARM_Bus_RegisterEventHandler( - IARM_BUS_DSMGR_NAME, - IARM_BUS_DSMGR_EVENT_HDMI_IN_HOTPLUG, - dsAVEventHandler)); - IARM_CHECK(IARM_Bus_RegisterEventHandler( - IARM_BUS_DSMGR_NAME, - IARM_BUS_DSMGR_EVENT_HDMI_IN_SIGNAL_STATUS, - dsAVSignalStatusEventHandler)); - IARM_CHECK(IARM_Bus_RegisterEventHandler( - IARM_BUS_DSMGR_NAME, - IARM_BUS_DSMGR_EVENT_HDMI_IN_STATUS, - dsAVStatusEventHandler)); - IARM_CHECK(IARM_Bus_RegisterEventHandler( - IARM_BUS_DSMGR_NAME, - IARM_BUS_DSMGR_EVENT_HDMI_IN_VIDEO_MODE_UPDATE, - dsAVVideoModeEventHandler)); - IARM_CHECK(IARM_Bus_RegisterEventHandler( - IARM_BUS_DSMGR_NAME, - IARM_BUS_DSMGR_EVENT_HDMI_IN_ALLM_STATUS, - dsAVGameFeatureStatusEventHandler)); - IARM_CHECK(IARM_Bus_RegisterEventHandler( - IARM_BUS_DSMGR_NAME, - IARM_BUS_DSMGR_EVENT_HDMI_IN_VRR_STATUS, - dsAVGameFeatureStatusEventHandler)); - IARM_CHECK(IARM_Bus_RegisterEventHandler( - IARM_BUS_DSMGR_NAME, - IARM_BUS_DSMGR_EVENT_COMPOSITE_IN_HOTPLUG, - dsAVEventHandler)); - IARM_CHECK(IARM_Bus_RegisterEventHandler( - IARM_BUS_DSMGR_NAME, - IARM_BUS_DSMGR_EVENT_COMPOSITE_IN_SIGNAL_STATUS, - dsAVSignalStatusEventHandler)); - IARM_CHECK(IARM_Bus_RegisterEventHandler( - IARM_BUS_DSMGR_NAME, - IARM_BUS_DSMGR_EVENT_COMPOSITE_IN_STATUS, - dsAVStatusEventHandler)); - IARM_CHECK(IARM_Bus_RegisterEventHandler( - IARM_BUS_DSMGR_NAME, - IARM_BUS_DSMGR_EVENT_COMPOSITE_IN_VIDEO_MODE_UPDATE, - dsAVVideoModeEventHandler)); - IARM_CHECK(IARM_Bus_RegisterEventHandler( - IARM_BUS_DSMGR_NAME, - IARM_BUS_DSMGR_EVENT_HDMI_IN_AVI_CONTENT_TYPE, - dsAviContentTypeEventHandler)); - } -} - -void AVInput::DeinitializeIARM() -{ - if (Utils::IARM::isConnected()) { - IARM_Result_t res; - IARM_CHECK(IARM_Bus_RemoveEventHandler( - IARM_BUS_DSMGR_NAME, - IARM_BUS_DSMGR_EVENT_HDMI_IN_HOTPLUG, dsAVEventHandler)); - IARM_CHECK(IARM_Bus_RemoveEventHandler( - IARM_BUS_DSMGR_NAME, - IARM_BUS_DSMGR_EVENT_HDMI_IN_SIGNAL_STATUS, dsAVSignalStatusEventHandler)); - IARM_CHECK(IARM_Bus_RemoveEventHandler( - IARM_BUS_DSMGR_NAME, - IARM_BUS_DSMGR_EVENT_HDMI_IN_STATUS, dsAVStatusEventHandler)); - IARM_CHECK(IARM_Bus_RemoveEventHandler( - IARM_BUS_DSMGR_NAME, - IARM_BUS_DSMGR_EVENT_HDMI_IN_VIDEO_MODE_UPDATE, dsAVVideoModeEventHandler)); - IARM_CHECK(IARM_Bus_RemoveEventHandler( - IARM_BUS_DSMGR_NAME, - IARM_BUS_DSMGR_EVENT_HDMI_IN_ALLM_STATUS, dsAVGameFeatureStatusEventHandler)); - IARM_CHECK(IARM_Bus_RemoveEventHandler( - IARM_BUS_DSMGR_NAME, - IARM_BUS_DSMGR_EVENT_HDMI_IN_VRR_STATUS, dsAVGameFeatureStatusEventHandler)); - IARM_CHECK(IARM_Bus_RemoveEventHandler( - IARM_BUS_DSMGR_NAME, - IARM_BUS_DSMGR_EVENT_COMPOSITE_IN_HOTPLUG, dsAVEventHandler)); - IARM_CHECK(IARM_Bus_RemoveEventHandler( - IARM_BUS_DSMGR_NAME, - IARM_BUS_DSMGR_EVENT_COMPOSITE_IN_SIGNAL_STATUS, dsAVSignalStatusEventHandler)); - IARM_CHECK(IARM_Bus_RemoveEventHandler( - IARM_BUS_DSMGR_NAME, - IARM_BUS_DSMGR_EVENT_COMPOSITE_IN_STATUS, dsAVStatusEventHandler)); - IARM_CHECK(IARM_Bus_RemoveEventHandler( - IARM_BUS_DSMGR_NAME, - IARM_BUS_DSMGR_EVENT_COMPOSITE_IN_VIDEO_MODE_UPDATE, dsAVVideoModeEventHandler)); - IARM_CHECK(IARM_Bus_RemoveEventHandler( - IARM_BUS_DSMGR_NAME, - IARM_BUS_DSMGR_EVENT_HDMI_IN_AVI_CONTENT_TYPE, dsAviContentTypeEventHandler)); - } -} - void AVInput::RegisterAll() { Register(_T(AVINPUT_METHOD_NUMBER_OF_INPUTS), &AVInput::endpoint_numberOfInputs, this); @@ -404,7 +341,7 @@ uint32_t AVInput::startInput(const JsonObject& parameters, JsonObject& response) try { - if (iType == HDMI) { + if (HDMI == iType) { device::HdmiInput::getInstance().selectPort(portId,audioMix,planeType,topMostPlane); } else if(iType == COMPOSITE) { @@ -445,10 +382,10 @@ uint32_t AVInput::stopInput(const JsonObject& parameters, JsonObject& response) device::Host::getInstance().setAudioMixerLevels(dsAUDIO_INPUT_SYSTEM,DEFAULT_INPUT_VOL_LEVEL); isAudioBalanceSet = false; } - if (iType == HDMI) { + if (HDMI == iType) { device::HdmiInput::getInstance().selectPort(-1); } - else if (iType == COMPOSITE) { + else if (COMPOSITE == iType) { device::CompositeInput::getInstance().selectPort(-1); } } @@ -526,7 +463,7 @@ bool AVInput::setVideoRectangle(int x, int y, int width, int height, int type) try { - if (type == HDMI) { + if (HDMI == type) { device::HdmiInput::getInstance().scaleVideo(x, y, width, height); } else { @@ -616,7 +553,7 @@ JsonArray AVInput::getInputDevices(int iType) try { int num = 0; - if (iType == HDMI) { + if (HDMI == iType) { num = device::HdmiInput::getInstance().getNumberOfInputs(); } else if (iType == COMPOSITE) { @@ -629,11 +566,11 @@ JsonArray AVInput::getInputDevices(int iType) JsonObject hash; hash["id"] = i; std::stringstream locator; - if (iType == HDMI) { + if (HDMI == iType) { locator << "hdmiin://localhost/deviceid/" << i; hash["connected"] = device::HdmiInput::getInstance().isPortConnected(i); } - else if (iType == COMPOSITE) { + else if (COMPOSITE == iType) { locator << "cvbsin://localhost/deviceid/" << i; hash["connected"] = device::CompositeInput::getInstance().isPortConnected(i); } @@ -924,22 +861,6 @@ void AVInput::AVInputVideoModeUpdate( int port , dsVideoPortResolution_t resolut sendNotify(AVINPUT_EVENT_ON_VIDEO_MODE_UPDATED, params); } -void AVInput::dsAviContentTypeEventHandler(const char *owner, IARM_EventId_t eventId, void *data, size_t len) -{ - if(!AVInput::_instance) - return; - - if (IARM_BUS_DSMGR_EVENT_HDMI_IN_AVI_CONTENT_TYPE == eventId) - { - IARM_Bus_DSMgr_EventData_t *eventData = (IARM_Bus_DSMgr_EventData_t *)data; - int hdmi_in_port = eventData->data.hdmi_in_content_type.port; - int avi_content_type = eventData->data.hdmi_in_content_type.aviContentType; - LOGINFO("Received IARM_BUS_DSMGR_EVENT_HDMI_IN_AVI_CONTENT_TYPE event port: %d, Content Type : %d", hdmi_in_port,avi_content_type); - - AVInput::_instance->hdmiInputAviContentTypeChange(hdmi_in_port, avi_content_type); - } -} - void AVInput::hdmiInputAviContentTypeChange( int port , int content_type) { JsonObject params; @@ -948,129 +869,6 @@ void AVInput::hdmiInputAviContentTypeChange( int port , int content_type) sendNotify(AVINPUT_EVENT_ON_AVI_CONTENT_TYPE_CHANGED, params); } -void AVInput::dsAVEventHandler(const char *owner, IARM_EventId_t eventId, void *data, size_t len) -{ - if(!AVInput::_instance) - return; - - IARM_Bus_DSMgr_EventData_t *eventData = (IARM_Bus_DSMgr_EventData_t *)data; - if (IARM_BUS_DSMGR_EVENT_HDMI_IN_HOTPLUG == eventId) { - int hdmiin_hotplug_port = eventData->data.hdmi_in_connect.port; - int hdmiin_hotplug_conn = eventData->data.hdmi_in_connect.isPortConnected; - LOGWARN("Received IARM_BUS_DSMGR_EVENT_HDMI_IN_HOTPLUG event data:%d", hdmiin_hotplug_port); - AVInput::_instance->AVInputHotplug(hdmiin_hotplug_port, hdmiin_hotplug_conn ? AV_HOT_PLUG_EVENT_CONNECTED : AV_HOT_PLUG_EVENT_DISCONNECTED, HDMI); - } - else if (IARM_BUS_DSMGR_EVENT_COMPOSITE_IN_HOTPLUG == eventId) { - int compositein_hotplug_port = eventData->data.composite_in_connect.port; - int compositein_hotplug_conn = eventData->data.composite_in_connect.isPortConnected; - LOGWARN("Received IARM_BUS_DSMGR_EVENT_COMPOSITE_IN_HOTPLUG event data:%d", compositein_hotplug_port); - AVInput::_instance->AVInputHotplug(compositein_hotplug_port, compositein_hotplug_conn ? AV_HOT_PLUG_EVENT_CONNECTED : AV_HOT_PLUG_EVENT_DISCONNECTED, COMPOSITE); - } -} - -void AVInput::dsAVSignalStatusEventHandler(const char *owner, IARM_EventId_t eventId, void *data, size_t len) -{ - if(!AVInput::_instance) - return; - IARM_Bus_DSMgr_EventData_t *eventData = (IARM_Bus_DSMgr_EventData_t *)data; - if (IARM_BUS_DSMGR_EVENT_HDMI_IN_SIGNAL_STATUS == eventId) { - int hdmi_in_port = eventData->data.hdmi_in_sig_status.port; - int hdmi_in_signal_status = eventData->data.hdmi_in_sig_status.status; - LOGWARN("Received IARM_BUS_DSMGR_EVENT_HDMI_IN_SIGNAL_STATUS event port: %d, signal status: %d", hdmi_in_port,hdmi_in_signal_status); - AVInput::_instance->AVInputSignalChange(hdmi_in_port, hdmi_in_signal_status, HDMI); - } - else if (IARM_BUS_DSMGR_EVENT_COMPOSITE_IN_SIGNAL_STATUS == eventId) { - int composite_in_port = eventData->data.composite_in_sig_status.port; - int composite_in_signal_status = eventData->data.composite_in_sig_status.status; - LOGWARN("Received IARM_BUS_DSMGR_EVENT_COMPOSITE_IN_SIGNAL_STATUS event port: %d, signal status: %d", composite_in_port,composite_in_signal_status); - AVInput::_instance->AVInputSignalChange(composite_in_port, composite_in_signal_status, COMPOSITE); - } -} - -void AVInput::dsAVStatusEventHandler(const char *owner, IARM_EventId_t eventId, void *data, size_t len) -{ - if(!AVInput::_instance) - return; - IARM_Bus_DSMgr_EventData_t *eventData = (IARM_Bus_DSMgr_EventData_t *)data; - if (IARM_BUS_DSMGR_EVENT_HDMI_IN_STATUS == eventId) { - int hdmi_in_port = eventData->data.hdmi_in_status.port; - bool hdmi_in_status = eventData->data.hdmi_in_status.isPresented; - LOGWARN("Received IARM_BUS_DSMGR_EVENT_HDMI_IN_STATUS event port: %d, started: %d", hdmi_in_port,hdmi_in_status); - AVInput::_instance->AVInputStatusChange(hdmi_in_port, hdmi_in_status, HDMI); - } - else if (IARM_BUS_DSMGR_EVENT_COMPOSITE_IN_STATUS == eventId) { - int composite_in_port = eventData->data.composite_in_status.port; - bool composite_in_status = eventData->data.composite_in_status.isPresented; - LOGWARN("Received IARM_BUS_DSMGR_EVENT_COMPOSITE_IN_STATUS event port: %d, started: %d", composite_in_port,composite_in_status); - AVInput::_instance->AVInputStatusChange(composite_in_port, composite_in_status, COMPOSITE); - } -} - -void AVInput::dsAVVideoModeEventHandler(const char *owner, IARM_EventId_t eventId, void *data, size_t len) -{ - if(!AVInput::_instance) - return; - - if (IARM_BUS_DSMGR_EVENT_HDMI_IN_VIDEO_MODE_UPDATE == eventId) { - IARM_Bus_DSMgr_EventData_t *eventData = (IARM_Bus_DSMgr_EventData_t *)data; - int hdmi_in_port = eventData->data.hdmi_in_video_mode.port; - dsVideoPortResolution_t resolution = {}; - resolution.pixelResolution = eventData->data.hdmi_in_video_mode.resolution.pixelResolution; - resolution.interlaced = eventData->data.hdmi_in_video_mode.resolution.interlaced; - resolution.frameRate = eventData->data.hdmi_in_video_mode.resolution.frameRate; - LOGWARN("Received IARM_BUS_DSMGR_EVENT_HDMI_IN_VIDEO_MODE_UPDATE event port: %d, pixelResolution: %d, interlaced : %d, frameRate: %d \n", hdmi_in_port,resolution.pixelResolution, resolution.interlaced, resolution.frameRate); - AVInput::_instance->AVInputVideoModeUpdate(hdmi_in_port, resolution,HDMI); - } - else if (IARM_BUS_DSMGR_EVENT_COMPOSITE_IN_VIDEO_MODE_UPDATE == eventId) { - IARM_Bus_DSMgr_EventData_t *eventData = (IARM_Bus_DSMgr_EventData_t *)data; - int composite_in_port = eventData->data.composite_in_video_mode.port; - dsVideoPortResolution_t resolution = {}; - resolution.pixelResolution = eventData->data.composite_in_video_mode.resolution.pixelResolution; - resolution.interlaced = eventData->data.composite_in_video_mode.resolution.interlaced; - resolution.frameRate = eventData->data.composite_in_video_mode.resolution.frameRate; - LOGWARN("Received IARM_BUS_DSMGR_EVENT_COMPOSITE_IN_VIDEO_MODE_UPDATE event port: %d, pixelResolution: %d, interlaced : %d, frameRate: %d \n", composite_in_port,resolution.pixelResolution, resolution.interlaced, resolution.frameRate); - AVInput::_instance->AVInputVideoModeUpdate(composite_in_port, resolution,COMPOSITE); - } -} - -void AVInput::dsAVGameFeatureStatusEventHandler(const char *owner, IARM_EventId_t eventId, void *data, size_t len) -{ - if(!AVInput::_instance) - return; - - if (IARM_BUS_DSMGR_EVENT_HDMI_IN_ALLM_STATUS == eventId) - { - IARM_Bus_DSMgr_EventData_t *eventData = (IARM_Bus_DSMgr_EventData_t *)data; - int hdmi_in_port = eventData->data.hdmi_in_allm_mode.port; - bool allm_mode = eventData->data.hdmi_in_allm_mode.allm_mode; - LOGWARN("Received IARM_BUS_DSMGR_EVENT_HDMI_IN_ALLM_STATUS event port: %d, ALLM Mode: %d", hdmi_in_port,allm_mode); - - AVInput::_instance->AVInputALLMChange(hdmi_in_port, allm_mode); - } - if (IARM_BUS_DSMGR_EVENT_HDMI_IN_VRR_STATUS == eventId) - { - IARM_Bus_DSMgr_EventData_t *eventData = (IARM_Bus_DSMgr_EventData_t *)data; - int hdmi_in_port = eventData->data.hdmi_in_vrr_mode.port; - dsVRRType_t new_vrrType = eventData->data.hdmi_in_vrr_mode.vrr_type; - LOGWARN("Received IARM_BUS_DSMGR_EVENT_HDMI_IN_VRR_STATUS event port: %d, VRR Type: %d", hdmi_in_port,new_vrrType); - - if(new_vrrType == dsVRR_NONE) - { - if(AVInput::_instance->m_currentVrrType != dsVRR_NONE){ - AVInput::_instance->AVInputVRRChange(hdmi_in_port, AVInput::_instance->m_currentVrrType, false); - } - } - else - { - if(AVInput::_instance->m_currentVrrType != dsVRR_NONE){ - AVInput::_instance->AVInputVRRChange(hdmi_in_port, AVInput::_instance->m_currentVrrType, false); - } - AVInput::_instance->AVInputVRRChange(hdmi_in_port, new_vrrType, true); - } - AVInput::_instance->m_currentVrrType = new_vrrType; - } -} - void AVInput::AVInputALLMChange( int port , bool allm_mode) { JsonObject params; @@ -1792,5 +1590,135 @@ int AVInput::getEdidVersion(int iPort) return edidVersion; } +/* HDMIInEventsNotification*/ + +void AVInput::OnHdmiInAVIContentType(dsHdmiInPort_t port, dsAviContentType_t aviContentType) +{ + LOGINFO("Received OnHdmiInAVIContentType callback, port: %d, Content Type: %d", port, aviContentType); + + if(AVInput::_instance) { + AVInput::_instance->hdmiInputAviContentTypeChange(port, aviContentType); + } +} + +void AVInput::OnHdmiInEventHotPlug(dsHdmiInPort_t port, bool isConnected) +{ + LOGINFO("Received OnHdmiInEventHotPlug callback, port: %d, isConnected: %s", port, isConnected ? "true" : "false"); + + if(AVInput::_instance) { + AVInput::_instance->AVInputHotplug(port,isConnected ? AV_HOT_PLUG_EVENT_CONNECTED : AV_HOT_PLUG_EVENT_DISCONNECTED, HDMI); + } +} + +void AVInput::OnHdmiInEventSignalStatus(dsHdmiInPort_t port, dsHdmiInSignalStatus_t signalStatus) +{ + LOGINFO("Received OnHdmiInEventSignalStatus callback, port: %d, signalStatus: %d",port, signalStatus); + + if(AVInput::_instance) { + AVInput::_instance->AVInputSignalChange(port, signalStatus, HDMI); + } +} + +void AVInput::OnHdmiInEventStatus(dsHdmiInPort_t activePort, bool isPresented) +{ + LOGINFO("Received OnHdmiInEventStatus callback, port: %d, isPresented: %s",activePort, isPresented ? "true" : "false"); + + if (AVInput::_instance) { + AVInput::_instance->AVInputStatusChange(activePort, isPresented, HDMI); + } +} + +void AVInput::OnHdmiInVideoModeUpdate(dsHdmiInPort_t port, const dsVideoPortResolution_t& videoPortResolution) +{ + LOGINFO("Received OnHdmiInVideoModeUpdate callback, port: %d, pixelResolution: %d, interlaced: %d, frameRate: %d", + port, + videoPortResolution.pixelResolution, + videoPortResolution.interlaced, + videoPortResolution.frameRate); + + if (AVInput::_instance) { + AVInput::_instance->AVInputVideoModeUpdate(port, videoPortResolution, HDMI); + } +} + +void AVInput::OnHdmiInAllmStatus(dsHdmiInPort_t port, bool allmStatus) +{ + LOGINFO("Received OnHdmiInAllmStatus callback, port: %d, ALLM Mode: %s", + port, allmStatus ? "true" : "false"); + + if (AVInput::_instance) { + AVInput::_instance->AVInputALLMChange(port, allmStatus); + } +} + +void AVInput::OnHdmiInVRRStatus(dsHdmiInPort_t port, dsVRRType_t vrrType) +{ + LOGINFO("Received OnHdmiInVRRStatus callback, port: %d, VRR Type: %d", + port, vrrType); + + if (!AVInput::_instance) + return; + + // Handle transitions + if (dsVRR_NONE == vrrType) { + if (AVInput::_instance->m_currentVrrType != dsVRR_NONE) { + AVInput::_instance->AVInputVRRChange(port,AVInput::_instance->m_currentVrrType,false); + } + } else { + if (AVInput::_instance->m_currentVrrType != dsVRR_NONE) { + AVInput::_instance->AVInputVRRChange(port,AVInput::_instance->m_currentVrrType,false); + } + AVInput::_instance->AVInputVRRChange(port,vrrType,true); + } + + AVInput::_instance->m_currentVrrType = vrrType; +} + + +/*CompositeInEventsNotification*/ + +void AVInput::OnCompositeInHotPlug(dsCompositeInPort_t port, bool isConnected) +{ + LOGINFO("Received OnCompositeInHotPlug callback, port: %d, isConnected: %s",port, isConnected ? "true" : "false"); + + if(AVInput::_instance) { + AVInput::_instance->AVInputHotplug(port,isConnected ? AV_HOT_PLUG_EVENT_CONNECTED : AV_HOT_PLUG_EVENT_DISCONNECTED,COMPOSITE); + } +} + +void AVInput::OnCompositeInSignalStatus(dsCompositeInPort_t port, dsCompInSignalStatus_t signalStatus) +{ + LOGINFO("Received OnCompositeInSignalStatus callback, port: %d, signalStatus: %d",port, signalStatus); + + if(AVInput::_instance) { + AVInput::_instance->AVInputSignalChange(port, signalStatus, COMPOSITE); + } +} + +void AVInput::OnCompositeInStatus(dsCompositeInPort_t activePort, bool isPresented) +{ + LOGINFO("Received OnCompositeInStatus callback, port: %d, isPresented: %s", + activePort, isPresented ? "true" : "false"); + + if (AVInput::_instance) { + AVInput::_instance->AVInputStatusChange(activePort, isPresented, COMPOSITE); + } +} + +void AVInput::OnCompositeInVideoModeUpdate(dsCompositeInPort_t activePort, dsVideoPortResolution_t videoResolution) +{ + LOGINFO("Received OnCompositeInVideoModeUpdate callback, port: %d, pixelResolution: %d, interlaced: %d, frameRate: %d", + activePort, + videoResolution.pixelResolution, + videoResolution.interlaced, + videoResolution.frameRate); + + if (AVInput::_instance) { + AVInput::_instance->AVInputVideoModeUpdate(activePort, videoResolution, COMPOSITE); + } +} + + + } // namespace Plugin } // namespace WPEFramework diff --git a/AVInput/AVInput.h b/AVInput/AVInput.h index b6c86142..aec54372 100644 --- a/AVInput/AVInput.h +++ b/AVInput/AVInput.h @@ -21,7 +21,10 @@ #include "Module.h" #include "libIBus.h" + #include "dsTypes.h" +#include "host.hpp" +#include "manager.hpp" #define DEFAULT_PRIM_VOL_LEVEL 25 #define MAX_PRIM_VOL_LEVEL 100 @@ -30,9 +33,13 @@ namespace WPEFramework { namespace Plugin { -class AVInput: public PluginHost::IPlugin, public PluginHost::JSONRPC -{ +class AVInput: public PluginHost::IPlugin, + public PluginHost::JSONRPC, + public device::Host::IHdmiInEvents, + public device::Host::ICompositeInEvents{ + private: + AVInput(const AVInput &) = delete; AVInput &operator=(const AVInput &) = delete; @@ -45,6 +52,15 @@ class AVInput: public PluginHost::IPlugin, public PluginHost::JSONRPC INTERFACE_ENTRY(PluginHost::IDispatcher) END_INTERFACE_MAP +private: + + template + T* baseInterface() + { + static_assert(std::is_base_of(), "base type mismatch"); + return static_cast(this); + } + int m_primVolume; int m_inputVolume; //Player Volume @@ -57,9 +73,7 @@ class AVInput: public PluginHost::IPlugin, public PluginHost::JSONRPC virtual string Information() const override; protected: - void InitializeIARM(); - void DeinitializeIARM(); - + void RegisterAll(); void UnregisterAll(); @@ -124,6 +138,30 @@ class AVInput: public PluginHost::IPlugin, public PluginHost::JSONRPC void hdmiInputAviContentTypeChange(int port, int content_type); static void dsAviContentTypeEventHandler(const char *owner, IARM_EventId_t eventId, void *data, size_t len); + +private: + + bool _registeredDsEventHandlers; + +public: + + /* HdmiInEventNotification*/ + + void OnHdmiInEventHotPlug(dsHdmiInPort_t port, bool isConnected) override; + void OnHdmiInEventSignalStatus(dsHdmiInPort_t port, dsHdmiInSignalStatus_t signalStatus) override; + void OnHdmiInEventStatus(dsHdmiInPort_t activePort, bool isPresented) override; + void OnHdmiInVideoModeUpdate(dsHdmiInPort_t port, const dsVideoPortResolution_t& videoPortResolution) override; + void OnHdmiInAllmStatus(dsHdmiInPort_t port, bool allmStatus) override; + void OnHdmiInAVIContentType(dsHdmiInPort_t port, dsAviContentType_t aviContentType) override; + void OnHdmiInVRRStatus(dsHdmiInPort_t port, dsVRRType_t vrrType) override; + + /* CompositeInEventNotification */ + + void OnCompositeInHotPlug(dsCompositeInPort_t port, bool isConnected) override; + void OnCompositeInSignalStatus(dsCompositeInPort_t port, dsCompInSignalStatus_t signalStatus) override; + void OnCompositeInStatus(dsCompositeInPort_t activePort, bool isPresented) override; + void OnCompositeInVideoModeUpdate(dsCompositeInPort_t activePort, dsVideoPortResolution_t videoResolution) override; + public: static AVInput* _instance; }; diff --git a/HdcpProfile/CMakeLists.txt b/HdcpProfile/CMakeLists.txt index 9341cc08..36c7f9b5 100644 --- a/HdcpProfile/CMakeLists.txt +++ b/HdcpProfile/CMakeLists.txt @@ -67,7 +67,6 @@ target_link_libraries(${PLUGIN_IMPLEMENTATION} PRIVATE ${NAMESPACE}Protocols::${ endif (USE_THUNDER_R4) find_package(DS) -find_package(IARMBus) find_package(CEC) if (RDK_SERVICE_L2_TEST) @@ -82,14 +81,13 @@ if (RDK_SERVICE_L2_TEST) endif() -target_include_directories(${PLUGIN_IMPLEMENTATION} PRIVATE ${IARMBUS_INCLUDE_DIRS}) target_include_directories(${PLUGIN_IMPLEMENTATION} PRIVATE ${DS_INCLUDE_DIRS}) target_include_directories(${PLUGIN_IMPLEMENTATION} PRIVATE ../helpers) set_source_files_properties(HdcpProfile.cpp PROPERTIES COMPILE_FLAGS "-fexceptions") -target_link_libraries(${PLUGIN_IMPLEMENTATION} PUBLIC ${NAMESPACE}Plugins::${NAMESPACE}Plugins ${IARMBUS_LIBRARIES} ${DS_LIBRARIES}) +target_link_libraries(${PLUGIN_IMPLEMENTATION} PUBLIC ${NAMESPACE}Plugins::${NAMESPACE}Plugins ${DS_LIBRARIES}) install(TARGETS ${PLUGIN_IMPLEMENTATION} DESTINATION lib/${STORAGE_DIRECTORY}/plugins) diff --git a/HdcpProfile/HdcpProfileImplementation.cpp b/HdcpProfile/HdcpProfileImplementation.cpp index 69b55a21..341219ba 100644 --- a/HdcpProfile/HdcpProfileImplementation.cpp +++ b/HdcpProfile/HdcpProfileImplementation.cpp @@ -23,14 +23,9 @@ #include "videoOutputPort.hpp" #include "videoOutputPortConfig.hpp" - #include "dsMgr.h" #include "manager.hpp" - #include "host.hpp" #include "UtilsJsonRpc.h" - #include "UtilsIarm.h" - - #include "UtilsSynchroIarm.hpp" #define HDMI_HOT_PLUG_EVENT_CONNECTED 0 #define HDMI_HOT_PLUG_EVENT_DISCONNECTED 1 @@ -61,6 +56,8 @@ HdcpProfileImplementation::~HdcpProfileImplementation() { LOGINFO("Call HdcpProfileImplementation destructor\n"); + device::Host::getInstance().UnRegister(baseInterface()); + device::Host::getInstance().UnRegister(baseInterface()); if (_powerManagerPlugin) { _powerManagerPlugin.Reset(); } @@ -68,7 +65,6 @@ { _service->Release(); } - DeinitializeIARM(); HdcpProfileImplementation::_instance = nullptr; mShell = nullptr; } @@ -82,26 +78,7 @@ .createInterface(); } - void HdcpProfileImplementation::InitializeIARM() - { - Utils::IARM::init(); - - IARM_Result_t res; - IARM_CHECK( Utils::Synchro::RegisterLockedIarmEventHandler(IARM_BUS_DSMGR_NAME,IARM_BUS_DSMGR_EVENT_HDMI_HOTPLUG, dsHdmiEventHandler) ); - IARM_CHECK( Utils::Synchro::RegisterLockedIarmEventHandler(IARM_BUS_DSMGR_NAME,IARM_BUS_DSMGR_EVENT_HDCP_STATUS, dsHdmiEventHandler) ); - } - - void HdcpProfileImplementation::DeinitializeIARM() - { - if (Utils::IARM::isConnected()) - { - IARM_Result_t res; - IARM_CHECK( Utils::Synchro::RemoveLockedEventHandler(IARM_BUS_DSMGR_NAME,IARM_BUS_DSMGR_EVENT_HDMI_HOTPLUG, dsHdmiEventHandler) ); - IARM_CHECK( Utils::Synchro::RemoveLockedEventHandler(IARM_BUS_DSMGR_NAME,IARM_BUS_DSMGR_EVENT_HDCP_STATUS, dsHdmiEventHandler) ); - } - } - - void HdcpProfileImplementation::onHdmiOutputHotPlug(int connectStatus) + void HdcpProfileImplementation::onHdmiOutputHotPlug(dsDisplayEvent_t connectStatus) { if (HDMI_HOT_PLUG_EVENT_CONNECTED == connectStatus) { @@ -137,49 +114,36 @@ status.hdcpReason); } - void HdcpProfileImplementation::onHdmiOutputHDCPStatusEvent(int hdcpStatus) + void HdcpProfileImplementation::onHdmiOutputHDCPStatusEvent(dsHdcpStatus_t hdcpStatus) { LOGINFO("hdcpStatus[%d]",hdcpStatus); onHdcpProfileDisplayConnectionChanged(); } - void HdcpProfileImplementation::dsHdmiEventHandler(const char *owner, IARM_EventId_t eventId, void *data, size_t len) + void HdcpProfileImplementation::OnDisplayHDMIHotPlug(dsDisplayEvent_t displayEvent) + { + LOGINFO("Received OnDisplayHDMIHotPlug event data:%d \r\n", displayEvent); + HdcpProfileImplementation::_instance->onHdmiOutputHotPlug(displayEvent); + } + + void HdcpProfileImplementation::OnHDCPStatusChange(dsHdcpStatus_t hdcpStatus) { uint32_t res = Core::ERROR_GENERAL; PowerState pwrStateCur = WPEFramework::Exchange::IPowerManager::POWER_STATE_UNKNOWN; PowerState pwrStatePrev = WPEFramework::Exchange::IPowerManager::POWER_STATE_UNKNOWN; - - if(!HdcpProfileImplementation::_instance) - return; - - if (IARM_BUS_DSMGR_EVENT_HDMI_HOTPLUG == eventId) - { - IARM_Bus_DSMgr_EventData_t *eventData = (IARM_Bus_DSMgr_EventData_t *)data; - int hdmi_hotplug_event = eventData->data.hdmi_hpd.event; - LOGINFO("Received IARM_BUS_DSMGR_EVENT_HDMI_HOTPLUG event data:%d \r\n", hdmi_hotplug_event); - - HdcpProfileImplementation::_instance->onHdmiOutputHotPlug(hdmi_hotplug_event); - } - else if (IARM_BUS_DSMGR_EVENT_HDCP_STATUS == eventId) - { - ASSERT (_powerManagerPlugin); - if (_powerManagerPlugin){ - res = _powerManagerPlugin->GetPowerState(pwrStateCur, pwrStatePrev); - if (Core::ERROR_NONE != res) - { - LOGWARN("Failed to Invoke RPC method: GetPowerState"); - } - else - { - IARM_Bus_DSMgr_EventData_t *eventData = (IARM_Bus_DSMgr_EventData_t *)data; - int hdcpStatus = eventData->data.hdmi_hdcp.hdcpStatus; - LOGINFO("Received IARM_BUS_DSMGR_EVENT_HDCP_STATUS event data:%d param.curState: %d \r\n", hdcpStatus,pwrStateCur); - HdcpProfileImplementation::_instance->onHdmiOutputHDCPStatusEvent(hdcpStatus); - } + + ASSERT (_powerManagerPlugin); + if (_powerManagerPlugin){ + res = _powerManagerPlugin->GetPowerState(pwrStateCur, pwrStatePrev); + if (Core::ERROR_NONE != res) + { + LOGWARN("Failed to Invoke RPC method: GetPowerState"); } + LOGINFO("Received OnHDCPStatusChange event data:%d param.curState: %d \r\n", hdcpStatus,pwrStateCur); + HdcpProfileImplementation::_instance->onHdmiOutputHDCPStatusEvent(hdcpStatus); } } - + /** * Register a notification callback */ @@ -243,7 +207,8 @@ _service = service; _service->AddRef(); ASSERT(service != nullptr); - InitializeIARM(); + device::Host::getInstance().Register(baseInterface(),"WPE::HdcpProfile"); + device::Host::getInstance().Register(baseInterface(),"WPE::HdcpProfile"); InitializePowerManager(service); return result; } diff --git a/HdcpProfile/HdcpProfileImplementation.h b/HdcpProfile/HdcpProfileImplementation.h index 8e0530d4..ea916e43 100644 --- a/HdcpProfile/HdcpProfileImplementation.h +++ b/HdcpProfile/HdcpProfileImplementation.h @@ -29,9 +29,9 @@ #include #include #include - - #include "libIBus.h" - + +#include "host.hpp" + #include "PowerManagerInterface.h" namespace WPEFramework @@ -39,14 +39,17 @@ namespace Plugin { - class HdcpProfileImplementation : public Exchange::IHdcpProfile, public Exchange::IConfiguration + class HdcpProfileImplementation : public Exchange::IHdcpProfile, public Exchange::IConfiguration, public device::Host::IVideoOutputPortEvents, public device::Host::IDisplayDeviceEvents // , public Exchange::IConfiguration { public: // We do not allow this plugin to be copied !! HdcpProfileImplementation(); ~HdcpProfileImplementation() override; - + + virtual void OnDisplayHDMIHotPlug(dsDisplayEvent_t displayEvent) override; + virtual void OnHDCPStatusChange(dsHdcpStatus_t hdcpStatus) override; + static HdcpProfileImplementation *instance(HdcpProfileImplementation *HdcpProfileImpl = nullptr); // We do not allow this plugin to be copied !! @@ -110,6 +113,13 @@ public: + template + T* baseInterface() + { + static_assert(std::is_base_of(), "base type mismatch"); + return static_cast(this); + } + Core::hresult Register(Exchange::IHdcpProfile::INotification *notification) override; Core::hresult Unregister(Exchange::IHdcpProfile::INotification *notification) override; @@ -117,11 +127,8 @@ Core::hresult GetSettopHDCPSupport(string& supportedHDCPVersion,bool& isHDCPSupported,bool& success) override; bool GetHDCPStatusInternal(HDCPStatus& hdcpstatus); void InitializePowerManager(PluginHost::IShell *service); - void InitializeIARM(); - void DeinitializeIARM(); - static void dsHdmiEventHandler(const char *owner, IARM_EventId_t eventId, void *data, size_t len); - void onHdmiOutputHotPlug(int connectStatus); - void onHdmiOutputHDCPStatusEvent(int); + void onHdmiOutputHotPlug(dsDisplayEvent_t connectStatus); + void onHdmiOutputHDCPStatusEvent(dsHdcpStatus_t); void logHdcpStatus (const char *trigger, HDCPStatus& status); void onHdcpProfileDisplayConnectionChanged(); static PowerManagerInterfaceRef _powerManagerPlugin; @@ -143,4 +150,4 @@ }; } // namespace Plugin - } // namespace WPEFramework \ No newline at end of file + } // namespace WPEFramework diff --git a/HdmiCecSink/HdmiCecSinkImplementation.cpp b/HdmiCecSink/HdmiCecSinkImplementation.cpp index 16531229..f4260da9 100644 --- a/HdmiCecSink/HdmiCecSinkImplementation.cpp +++ b/HdmiCecSink/HdmiCecSinkImplementation.cpp @@ -23,11 +23,8 @@ #include "ccec/Connection.hpp" #include "ccec/CECFrame.hpp" #include "ccec/MessageEncoder.hpp" -#include "host.hpp" #include "UtilsgetRFCConfig.h" -#include "dsMgr.h" -#include "dsRpc.h" #include "dsDisplay.h" #include "videoOutputPort.hpp" #include "manager.hpp" @@ -36,6 +33,9 @@ #include "UtilsIarm.h" #include "UtilsJsonRpc.h" #include "UtilssyncPersistFile.h" +#include "exception.hpp" +#include "hdmiIn.hpp" +#include "dsError.h" using CCECRequestActiveSource = ::RequestActiveSource; using CCECSetMenuLanguage = ::SetMenuLanguage; @@ -692,7 +692,18 @@ namespace WPEFramework } HdmiCecSinkImplementation::_instance = nullptr; - DeinitializeIARM(); + device::Host::getInstance().UnRegister(baseInterface()); + + try + { + device::Manager::DeInitialize(); + LOGINFO("HdmiCecSink plugin device::Manager::DeInitialize success"); + } + catch(const device::Exception& err) + { + LOGINFO("HdmiCecSink plugin device::Manager::DeInitialize failed"); + LOG_DEVICE_EXCEPTION0(); + } } Core::hresult HdmiCecSinkImplementation::Configure(PluginHost::IShell *service) @@ -719,12 +730,22 @@ namespace WPEFramework logicalAddressDeviceType = "None"; logicalAddress = 0xFF; + + try + { + device::Manager::Initialize(); + LOGINFO("HdmiCecSink plugin device::Manager::Initialize success"); + } + catch(const device::Exception& err) + { + LOGINFO("HdmiCecSink plugin device::Manager::Initialize failed"); + LOG_DEVICE_EXCEPTION0(); + } + // load persistence setting loadSettings(); + device::Host::getInstance().Register(baseInterface(), "WPE::CecSink"); - int err; - dsHdmiInGetNumberOfInputsParam_t hdmiInput; - InitializeIARM(); m_sendKeyEventThreadExit = false; m_sendKeyEventThread = std::thread(threadSendKeyEvent); @@ -751,18 +772,16 @@ namespace WPEFramework } } - err = IARM_Bus_Call(IARM_BUS_DSMGR_NAME, - IARM_BUS_DSMGR_API_dsHdmiInGetNumberOfInputs, - (void *)&hdmiInput, - sizeof(hdmiInput)); - - if (err == IARM_RESULT_SUCCESS && hdmiInput.result == dsERR_NONE) - { - LOGINFO("Number of Inputs [%d] \n", hdmiInput.numHdmiInputs ); - m_numofHdmiInput = hdmiInput.numHdmiInputs; - }else{ - LOGINFO("Not able to get Numebr of inputs so defaulting to 3 \n"); - m_numofHdmiInput = 3; + try + { + m_numofHdmiInput = device::HdmiInput::getInstance().getNumberOfInputs(); + LOGINFO("HdmiCecSink plugin m_numofHdmiInput %d", m_numofHdmiInput); + } + catch(const device::Exception& err) + { + LOGINFO("HdmiCecSink plugin device::HdmiInput::getInstance().getNumberOfInputs failed so defaulting to 3"); + m_numofHdmiInput = 3; + LOG_DEVICE_EXCEPTION0(); } LOGINFO("initalize inputs \n"); @@ -834,25 +853,6 @@ namespace WPEFramework return Core::ERROR_NONE; } - - void HdmiCecSinkImplementation::InitializeIARM() - { - if (Utils::IARM::init()) - { - IARM_Result_t res; - IARM_CHECK( IARM_Bus_RegisterEventHandler(IARM_BUS_DSMGR_NAME,IARM_BUS_DSMGR_EVENT_HDMI_IN_HOTPLUG, dsHdmiEventHandler) ); - } - } - - void HdmiCecSinkImplementation::DeinitializeIARM() - { - if (Utils::IARM::isConnected()) - { - IARM_Result_t res; - IARM_CHECK( IARM_Bus_RemoveEventHandler(IARM_BUS_DSMGR_NAME,IARM_BUS_DSMGR_EVENT_HDMI_IN_HOTPLUG, dsHdmiEventHandler) ); - } - } - void HdmiCecSinkImplementation::InitializePowerManager(PluginHost::IShell *service) { _powerManagerPlugin = PowerManagerInterfaceBuilder(_T("org.rdk.PowerManager")) @@ -872,21 +872,13 @@ namespace WPEFramework } } - void HdmiCecSinkImplementation::dsHdmiEventHandler(const char *owner, IARM_EventId_t eventId, void *data, size_t len) + void HdmiCecSinkImplementation::OnHdmiInEventHotPlug(dsHdmiInPort_t port, bool isConnected) { - if(!HdmiCecSinkImplementation::_instance) - { + if(!HdmiCecSinkImplementation::_instance) return; - } - if (IARM_BUS_DSMGR_EVENT_HDMI_IN_HOTPLUG == eventId) - { - IARM_Bus_DSMgr_EventData_t *eventData = (IARM_Bus_DSMgr_EventData_t *)data; - bool isHdmiConnected = eventData->data.hdmi_in_connect.isPortConnected; - dsHdmiInPort_t portId = eventData->data.hdmi_in_connect.port; - LOGINFO("Received IARM_BUS_DSMGR_EVENT_HDMI_IN_HOTPLUG event port: %d data:%d \r\n",portId, isHdmiConnected); - HdmiCecSinkImplementation::_instance->onHdmiHotPlug(portId,isHdmiConnected); - } + LOGINFO("Received HdmiCecSink::OnHdmiInEventHotPlug event port: %d isConnected: %d \r\n", port, isConnected); + HdmiCecSinkImplementation::_instance->onHdmiHotPlug((int) port, isConnected); } void HdmiCecSinkImplementation::onPowerModeChanged(const PowerState ¤tState, const PowerState &newState) @@ -2020,28 +2012,18 @@ namespace WPEFramework void HdmiCecSinkImplementation::CheckHdmiInState() { - int err; bool isAnyPortConnected = false; - dsHdmiInGetStatusParam_t params; - err = IARM_Bus_Call(IARM_BUS_DSMGR_NAME, - IARM_BUS_DSMGR_API_dsHdmiInGetStatus, - (void *)¶ms, - sizeof(params)); - - if(err == IARM_RESULT_SUCCESS && params.result == dsERR_NONE ) + for( int i = 0; i < m_numofHdmiInput; i++ ) { - for( int i = 0; i < m_numofHdmiInput; i++ ) - { - LOGINFO("Is HDMI In Port [%d] connected [%d] \n",i, params.status.isPortConnected[i]); - if ( params.status.isPortConnected[i] ) - { - isAnyPortConnected = true; - } + LOGINFO("update Port Status [%d] \n", i); + hdmiInputs[i].update(device::HdmiInput::getInstance().isPortConnected(i)); - LOGINFO("update Port Status [%d] \n", i); - hdmiInputs[i].update(params.status.isPortConnected[i]); - } + LOGINFO("Is HDMI In Port [%d] connected [%d] \n",i, hdmiInputs[i].m_isConnected); + if ( hdmiInputs[i].m_isConnected ) + { + isAnyPortConnected = true; + } } if ( isAnyPortConnected ) { @@ -3590,17 +3572,17 @@ namespace WPEFramework void HdmiCecSinkImplementation::getHdmiArcPortID() { - int err; - dsGetHDMIARCPortIdParam_t param; - err = IARM_Bus_Call(IARM_BUS_DSMGR_NAME, - (char *)IARM_BUS_DSMGR_API_dsGetHDMIARCPortId, - (void *)¶m, - sizeof(param)); - if (IARM_RESULT_SUCCESS == err) - { - LOGINFO("HDMI ARC port ID HdmiArcPortID=[%d] \n", param.portId); - HdmiArcPortID = param.portId; - } + int portId = -1; + dsError_t error = device::HdmiInput::getInstance().getHDMIARCPortId(portId); + if (dsERR_NONE == error) + { + LOGINFO("HDMI ARC port ID HdmiArcPortID[%d]", portId); + HdmiArcPortID = portId; + } + else + { + LOGWARN("getHDMIARCPortId failed"); + } } void HdmiCecSinkImplementation::getCecVersion() diff --git a/HdmiCecSink/HdmiCecSinkImplementation.h b/HdmiCecSink/HdmiCecSinkImplementation.h index fd62e727..8eb735ff 100644 --- a/HdmiCecSink/HdmiCecSinkImplementation.h +++ b/HdmiCecSink/HdmiCecSinkImplementation.h @@ -42,6 +42,7 @@ #include #include "PowerManagerInterface.h" #include +#include "host.hpp" using namespace WPEFramework; using PowerState = WPEFramework::Exchange::IPowerManager::PowerState; @@ -483,7 +484,7 @@ namespace WPEFramework { // As the registration/unregistration of notifications is realized by the class PluginHost::JSONRPC, // this class exposes a public method called, Notify(), using this methods, all subscribed clients // will receive a JSONRPC message as a notification, in case this method is called. - class HdmiCecSinkImplementation : public Exchange::IHdmiCecSink { + class HdmiCecSinkImplementation : public Exchange::IHdmiCecSink, public device::Host::IHdmiInEvents { enum { POLL_THREAD_STATE_NONE, @@ -670,8 +671,6 @@ namespace WPEFramework { PowerManagerInterfaceRef _powerManagerPlugin; Core::Sink _pwrMgrNotification; bool _registeredEventHandlers; - void InitializeIARM(); - void DeinitializeIARM(); void allocateLogicalAddress(int deviceType); void allocateLAforTV(); void pingDevices(std::vector &connected , std::vector &disconnected); @@ -681,7 +680,6 @@ namespace WPEFramework { int requestStatus(const int logicalAddress); static void threadRun(); void cecMonitoringThread(); - static void dsHdmiEventHandler(const char *owner, IARM_EventId_t eventId, void *data, size_t len); void onHdmiHotPlug(int portId, int connectStatus); bool loadSettings(); void persistSettings(bool enableStatus); @@ -743,7 +741,16 @@ namespace WPEFramework { Core::hresult SetMenuLanguage(const string &language, HdmiCecSinkSuccess &successResult) override; Core::hresult RequestAudioDevicePowerStatus(HdmiCecSinkSuccess &successResult) override; - private: + /*devicesetting APIs*/ + virtual void OnHdmiInEventHotPlug(dsHdmiInPort_t port, bool isConnected) override; + + private: + template + T* baseInterface() + { + static_assert(std::is_base_of(), "base type mismatch"); + return static_cast(this); + } std::list _hdmiCecSinkNotifications; mutable Core::CriticalSection _adminLock; }; diff --git a/HdmiCecSource/HdmiCecSourceImplementation.cpp b/HdmiCecSource/HdmiCecSourceImplementation.cpp index 4a4e3e64..f3757620 100644 --- a/HdmiCecSource/HdmiCecSourceImplementation.cpp +++ b/HdmiCecSource/HdmiCecSourceImplementation.cpp @@ -25,7 +25,6 @@ #include "ccec/MessageEncoder.hpp" #include "host.hpp" -#include "dsMgr.h" #include "dsDisplay.h" #include "videoOutputPort.hpp" #include "manager.hpp" @@ -389,8 +388,7 @@ namespace WPEFramework _powerManagerPlugin.Reset(); } _registeredEventHandlers = false; - - DeinitializeIARM(); + device::Host::getInstance().UnRegister(baseInterface()); } Core::hresult HdmiCecSourceImplementation::Configure(PluginHost::IShell* service) @@ -409,7 +407,6 @@ namespace WPEFramework logicalAddress = 0xFF; //CEC plugin functionalities will only work if CECmgr is available. If plugin Initialize failure upper layer will call dtor directly. - InitializeIARM(); InitializePowerManager(service); // load persistence setting @@ -418,6 +415,8 @@ namespace WPEFramework { //TODO(MROLLINS) this is probably per process so we either need to be running in our own process or be carefull no other plugin is calling it device::Manager::Initialize(); + device::Host::getInstance().Register(baseInterface(), "WPE::CecSource"); + std::string strVideoPort = device::Host::getInstance().getDefaultVideoPortName(); device::VideoOutputPort vPort = device::Host::getInstance().getVideoOutputPort(strVideoPort.c_str()); if (vPort.isDisplayConnected()) @@ -731,20 +730,6 @@ namespace WPEFramework registerEventHandlers(); } - const void HdmiCecSourceImplementation::InitializeIARM() - { - IARM_Result_t res; - IARM_CHECK( IARM_Bus_RegisterEventHandler(IARM_BUS_DSMGR_NAME,IARM_BUS_DSMGR_EVENT_HDMI_HOTPLUG, dsHdmiEventHandler) ); - } - - void HdmiCecSourceImplementation::DeinitializeIARM() - { - if (Utils::IARM::isConnected()) - { - IARM_Result_t res; - IARM_CHECK( IARM_Bus_RemoveEventHandler(IARM_BUS_DSMGR_NAME,IARM_BUS_DSMGR_EVENT_HDMI_HOTPLUG,dsHdmiEventHandler) ); - } - } void HdmiCecSourceImplementation::threadHotPlugEventHandler(int data) { LOGINFO("entry threadHotPlugEventHandler \r\n"); @@ -759,25 +744,22 @@ namespace WPEFramework LOGINFO("Exit threadHotPlugEventHandler \r\n"); } - void HdmiCecSourceImplementation::dsHdmiEventHandler(const char *owner, IARM_EventId_t eventId, void *data, size_t len) + void HdmiCecSourceImplementation::OnDisplayHDMIHotPlug(dsDisplayEvent_t displayEvent) { - if(!HdmiCecSourceImplementation::_instance || !_instance->cecEnableStatus) - { - LOGINFO("Return from dsHdmiEventHandler due HdmiCecSourceImplementation::_instance:%p cecEnableStatus:%d \r\n", HdmiCecSourceImplementation::_instance, _instance->cecEnableStatus); - return; - } + LOGINFO("HdmiCecSourceImplementation::OnDisplayHDMIHotPlug : displayEvent = %d ", displayEvent); + + if(!HdmiCecSourceImplementation::_instance || !_instance->cecEnableStatus) + { + bool cecEnableStatus = _instance ? _instance->cecEnableStatus : false; + LOGINFO("HdmiCecSourceImplementation::OnDisplayHDMIHotPlug failed _instance:%p cecEnableStatus:%d \r\n", HdmiCecSourceImplementation::_instance, cecEnableStatus); + return; + } + + int hdmi_hotplug_event = (int) displayEvent; + LOGINFO("Received IARM_BUS_DSMGR_EVENT_HDMI_HOTPLUG event data:%d \r\n", hdmi_hotplug_event); + std::thread worker(threadHotPlugEventHandler,hdmi_hotplug_event); + worker.detach(); - if (owner && !strcmp(owner, IARM_BUS_DSMGR_NAME) && (IARM_BUS_DSMGR_EVENT_HDMI_HOTPLUG == eventId)) - { - IARM_Bus_DSMgr_EventData_t *eventData = (IARM_Bus_DSMgr_EventData_t *)data; - if(eventData) - { - int hdmi_hotplug_event = eventData->data.hdmi_hpd.event; - LOGINFO("Received IARM_BUS_DSMGR_EVENT_HDMI_HOTPLUG event data:%d \r\n", hdmi_hotplug_event); - std::thread worker(threadHotPlugEventHandler,hdmi_hotplug_event); - worker.detach(); - } - } } void HdmiCecSourceImplementation::onPowerModeChanged(const PowerState currentState, const PowerState newState) diff --git a/HdmiCecSource/HdmiCecSourceImplementation.h b/HdmiCecSource/HdmiCecSourceImplementation.h index 4a0abbd7..3f7ff6a4 100644 --- a/HdmiCecSource/HdmiCecSourceImplementation.h +++ b/HdmiCecSource/HdmiCecSourceImplementation.h @@ -42,6 +42,8 @@ #include #include "PowerManagerInterface.h" #include +#include "host.hpp" + using namespace WPEFramework; using PowerState = WPEFramework::Exchange::IPowerManager::PowerState; @@ -170,7 +172,7 @@ namespace WPEFramework { // As the registration/unregistration of notifications is realized by the class PluginHost::JSONRPC, // this class exposes a public method called, Notify(), using this methods, all subscribed clients // will receive a JSONRPC message as a notification, in case this method is called. - class HdmiCecSourceImplementation : public Exchange::IHdmiCecSource { + class HdmiCecSourceImplementation : public Exchange::IHdmiCecSource, public device::Host::IDisplayDeviceEvents { enum { VOLUME_UP = 0x41, VOLUME_DOWN = 0x42, @@ -196,6 +198,7 @@ namespace WPEFramework { public: HdmiCecSourceImplementation(); virtual ~HdmiCecSourceImplementation(); + virtual void OnDisplayHDMIHotPlug(dsDisplayEvent_t displayEvent) override; void onPowerModeChanged(const PowerState currentState, const PowerState newState); void registerEventHandlers(); static HdmiCecSourceImplementation* _instance; @@ -226,6 +229,13 @@ namespace WPEFramework { private: + template + T* baseInterface() + { + static_assert(std::is_base_of(), "base type mismatch"); + return static_cast(this); + } + class PowerManagerNotification : public Exchange::IPowerManager::IModeChangedNotification { private: PowerManagerNotification(const PowerManagerNotification&) = delete; diff --git a/Tests/L1Tests/tests/test_AVInput.cpp b/Tests/L1Tests/tests/test_AVInput.cpp index 0d0be6bd..771e73b7 100644 --- a/Tests/L1Tests/tests/test_AVInput.cpp +++ b/Tests/L1Tests/tests/test_AVInput.cpp @@ -24,6 +24,7 @@ #include "CompositeInputMock.h" #include "FactoriesImplementation.h" #include "HdmiInputMock.h" +#include "ManagerMock.h" #include "HostMock.h" #include "IarmBusMock.h" #include "ServiceMock.h" @@ -54,12 +55,6 @@ class AVInputDsTest : public AVInputTest { HdmiInputImplMock* p_hdmiInputImplMock = nullptr; CompositeInputImplMock* p_compositeInputImplMock = nullptr; HostImplMock* p_HostImplMock = nullptr; - IARM_EventHandler_t dsAVGameFeatureStatusEventHandler; - IARM_EventHandler_t dsAVEventHandler; - IARM_EventHandler_t dsAVSignalStatusEventHandler; - IARM_EventHandler_t dsAVStatusEventHandler; - IARM_EventHandler_t dsAVVideoModeEventHandler; - IARM_EventHandler_t dsAviContentTypeEventHandler; AVInputDsTest() : AVInputTest() @@ -100,6 +95,7 @@ class AVInputInit : public AVInputDsTest { protected: IarmBusImplMock* p_iarmBusImplMock = nullptr; NiceMock factoriesImplementation; + ManagerImplMock *p_managerImplMock = nullptr ; PLUGINHOST_DISPATCHER* dispatcher; NiceMock service; Core::JSONRPC::Message message; @@ -110,55 +106,13 @@ class AVInputInit : public AVInputDsTest { p_iarmBusImplMock = new NiceMock; IarmBus::setImpl(p_iarmBusImplMock); - ON_CALL(*p_iarmBusImplMock, IARM_Bus_RegisterEventHandler(::testing::_, ::testing::_, ::testing::_)) - .WillByDefault(::testing::Invoke( - [&](const char* ownerName, IARM_EventId_t eventId, IARM_EventHandler_t handler) { - if ((string(IARM_BUS_DSMGR_NAME) == string(ownerName)) && (eventId == IARM_BUS_DSMGR_EVENT_HDMI_IN_HOTPLUG)) { - EXPECT_TRUE(handler != nullptr); - dsAVEventHandler = handler; - } - if ((string(IARM_BUS_DSMGR_NAME) == string(ownerName)) && (eventId == IARM_BUS_DSMGR_EVENT_HDMI_IN_STATUS)) { - EXPECT_TRUE(handler != nullptr); - dsAVStatusEventHandler = handler; - } - if ((string(IARM_BUS_DSMGR_NAME) == string(ownerName)) && (eventId == IARM_BUS_DSMGR_EVENT_HDMI_IN_SIGNAL_STATUS)) { - EXPECT_TRUE(handler != nullptr); - dsAVSignalStatusEventHandler = handler; - } - if ((string(IARM_BUS_DSMGR_NAME) == string(ownerName)) && (eventId == IARM_BUS_DSMGR_EVENT_HDMI_IN_VIDEO_MODE_UPDATE)) { - EXPECT_TRUE(handler != nullptr); - dsAVVideoModeEventHandler = handler; - } - if ((string(IARM_BUS_DSMGR_NAME) == string(ownerName)) && (eventId == IARM_BUS_DSMGR_EVENT_HDMI_IN_ALLM_STATUS)) { - EXPECT_TRUE(handler != nullptr); - dsAVGameFeatureStatusEventHandler = handler; - } - if ((string(IARM_BUS_DSMGR_NAME) == string(ownerName)) && (eventId == IARM_BUS_DSMGR_EVENT_HDMI_IN_VRR_STATUS)) { - EXPECT_TRUE(handler != nullptr); - dsAVGameFeatureStatusEventHandler = handler; - } - if ((string(IARM_BUS_DSMGR_NAME) == string(ownerName)) && (eventId == IARM_BUS_DSMGR_EVENT_COMPOSITE_IN_HOTPLUG)) { - EXPECT_TRUE(handler != nullptr); - dsAVEventHandler = handler; - } - if ((string(IARM_BUS_DSMGR_NAME) == string(ownerName)) && (eventId == IARM_BUS_DSMGR_EVENT_COMPOSITE_IN_SIGNAL_STATUS)) { - EXPECT_TRUE(handler != nullptr); - dsAVSignalStatusEventHandler = handler; - } - if ((string(IARM_BUS_DSMGR_NAME) == string(ownerName)) && (eventId == IARM_BUS_DSMGR_EVENT_COMPOSITE_IN_STATUS)) { - EXPECT_TRUE(handler != nullptr); - dsAVStatusEventHandler = handler; - } - if ((string(IARM_BUS_DSMGR_NAME) == string(ownerName)) && (eventId == IARM_BUS_DSMGR_EVENT_COMPOSITE_IN_VIDEO_MODE_UPDATE)) { - EXPECT_TRUE(handler != nullptr); - dsAVVideoModeEventHandler = handler; - } - if ((string(IARM_BUS_DSMGR_NAME) == string(ownerName)) && (eventId == IARM_BUS_DSMGR_EVENT_HDMI_IN_AVI_CONTENT_TYPE)) { - EXPECT_TRUE(handler != nullptr); - dsAviContentTypeEventHandler = handler; - } - return IARM_RESULT_SUCCESS; - })); + p_managerImplMock = new NiceMock ; + device::Manager::setImpl(p_managerImplMock); + + EXPECT_CALL(*p_managerImplMock, Initialize()) + .Times(::testing::AnyNumber()) + .WillRepeatedly(::testing::Return()); + EXPECT_EQ(string(""), plugin->Initialize(&service)); PluginHost::IFactories::Assign(&factoriesImplementation); @@ -180,6 +134,12 @@ class AVInputInit : public AVInputDsTest { delete p_iarmBusImplMock; p_iarmBusImplMock = nullptr; } + device::Manager::setImpl(nullptr); + if (p_managerImplMock != nullptr) + { + delete p_managerImplMock; + p_managerImplMock = nullptr; + } } }; @@ -615,11 +575,7 @@ TEST_F(AVInputInit, onDevicesChangedHDMI) EVENT_SUBSCRIBE(0, _T("onDevicesChanged"), _T("org.rdk.AVInput"), message); - ASSERT_TRUE(dsAVEventHandler != nullptr); - IARM_Bus_DSMgr_EventData_t eventData; - eventData.data.hdmi_in_connect.port = dsHDMI_IN_PORT_0; - eventData.data.hdmi_in_connect.isPortConnected = true; - dsAVEventHandler(IARM_BUS_DSMGR_NAME, IARM_BUS_DSMGR_EVENT_HDMI_IN_HOTPLUG, &eventData, 0); + plugin->OnHdmiInEventHotPlug(dsHDMI_IN_PORT_0, true); EXPECT_EQ(Core::ERROR_NONE, onDevicesChanged.Lock()); @@ -645,11 +601,7 @@ TEST_F(AVInputInit, onDevicesChangedCOMPOSITE) EVENT_SUBSCRIBE(0, _T("onDevicesChanged"), _T("org.rdk.AVInput"), message); - ASSERT_TRUE(dsAVEventHandler != nullptr); - IARM_Bus_DSMgr_EventData_t eventData; - eventData.data.composite_in_connect.port = dsCOMPOSITE_IN_PORT_0; - eventData.data.composite_in_connect.isPortConnected = true; - dsAVEventHandler(IARM_BUS_DSMGR_NAME, IARM_BUS_DSMGR_EVENT_COMPOSITE_IN_HOTPLUG, &eventData, 0); + plugin->OnCompositeInHotPlug(dsCOMPOSITE_IN_PORT_0, true); EXPECT_EQ(Core::ERROR_NONE, onDevicesChanged.Lock()); @@ -676,11 +628,7 @@ TEST_F(AVInputInit, onSignalChangedStableHDMI) EVENT_SUBSCRIBE(0, _T("onSignalChanged"), _T("org.rdk.AVInput"), message); - ASSERT_TRUE(dsAVSignalStatusEventHandler != nullptr); - IARM_Bus_DSMgr_EventData_t eventData; - eventData.data.hdmi_in_sig_status.port = dsHDMI_IN_PORT_0; - eventData.data.hdmi_in_sig_status.status = dsHDMI_IN_SIGNAL_STATUS_STABLE; - dsAVSignalStatusEventHandler(IARM_BUS_DSMGR_NAME, IARM_BUS_DSMGR_EVENT_HDMI_IN_SIGNAL_STATUS, &eventData, 0); + plugin->OnHdmiInEventSignalStatus(dsHDMI_IN_PORT_0, dsHDMI_IN_SIGNAL_STATUS_STABLE); EXPECT_EQ(Core::ERROR_NONE, onSignalChanged.Lock()); @@ -706,12 +654,8 @@ TEST_F(AVInputInit, onSignalChangedNoSignalHDMI) })); EVENT_SUBSCRIBE(0, _T("onSignalChanged"), _T("org.rdk.AVInput"), message); - ASSERT_TRUE(dsAVSignalStatusEventHandler != nullptr); - IARM_Bus_DSMgr_EventData_t eventData; - eventData.data.hdmi_in_sig_status.port = dsHDMI_IN_PORT_0; - eventData.data.hdmi_in_sig_status.status = dsHDMI_IN_SIGNAL_STATUS_NOSIGNAL; - dsAVSignalStatusEventHandler(IARM_BUS_DSMGR_NAME, IARM_BUS_DSMGR_EVENT_HDMI_IN_SIGNAL_STATUS, &eventData, 0); + plugin->OnHdmiInEventSignalStatus(dsHDMI_IN_PORT_0, dsHDMI_IN_SIGNAL_STATUS_NOSIGNAL); EXPECT_EQ(Core::ERROR_NONE, onSignalChanged.Lock()); @@ -737,12 +681,8 @@ TEST_F(AVInputInit, onSignalChangedUnstableHDMI) })); EVENT_SUBSCRIBE(0, _T("onSignalChanged"), _T("org.rdk.AVInput"), message); - ASSERT_TRUE(dsAVSignalStatusEventHandler != nullptr); - IARM_Bus_DSMgr_EventData_t eventData; - eventData.data.hdmi_in_sig_status.port = dsHDMI_IN_PORT_0; - eventData.data.hdmi_in_sig_status.status = dsHDMI_IN_SIGNAL_STATUS_UNSTABLE; - dsAVSignalStatusEventHandler(IARM_BUS_DSMGR_NAME, IARM_BUS_DSMGR_EVENT_HDMI_IN_SIGNAL_STATUS, &eventData, 0); + plugin->OnHdmiInEventSignalStatus(dsHDMI_IN_PORT_0,dsHDMI_IN_SIGNAL_STATUS_UNSTABLE); EXPECT_EQ(Core::ERROR_NONE, onSignalChanged.Lock()); @@ -767,12 +707,8 @@ TEST_F(AVInputInit, onSignalChangedNotSupportedHDMI) })); EVENT_SUBSCRIBE(0, _T("onSignalChanged"), _T("org.rdk.AVInput"), message); - ASSERT_TRUE(dsAVSignalStatusEventHandler != nullptr); - IARM_Bus_DSMgr_EventData_t eventData; - eventData.data.hdmi_in_sig_status.port = dsHDMI_IN_PORT_0; - eventData.data.hdmi_in_sig_status.status = dsHDMI_IN_SIGNAL_STATUS_NOTSUPPORTED; - dsAVSignalStatusEventHandler(IARM_BUS_DSMGR_NAME, IARM_BUS_DSMGR_EVENT_HDMI_IN_SIGNAL_STATUS, &eventData, 0); + plugin->OnHdmiInEventSignalStatus(dsHDMI_IN_PORT_0, dsHDMI_IN_SIGNAL_STATUS_NOTSUPPORTED); EXPECT_EQ(Core::ERROR_NONE, onSignalChanged.Lock()); @@ -797,12 +733,7 @@ TEST_F(AVInputInit, onSignalChangedDefaultHDMI) })); EVENT_SUBSCRIBE(0, _T("onSignalChanged"), _T("org.rdk.AVInput"), message); - ASSERT_TRUE(dsAVSignalStatusEventHandler != nullptr); - - IARM_Bus_DSMgr_EventData_t eventData; - eventData.data.hdmi_in_sig_status.port = dsHDMI_IN_PORT_0; - eventData.data.hdmi_in_sig_status.status = dsHDMI_IN_SIGNAL_STATUS_MAX; - dsAVSignalStatusEventHandler(IARM_BUS_DSMGR_NAME, IARM_BUS_DSMGR_EVENT_HDMI_IN_SIGNAL_STATUS, &eventData, 0); + plugin->OnHdmiInEventSignalStatus(dsHDMI_IN_PORT_0, dsHDMI_IN_SIGNAL_STATUS_MAX); EXPECT_EQ(Core::ERROR_NONE, onSignalChanged.Lock()); @@ -827,12 +758,7 @@ TEST_F(AVInputInit, onSignalChangedStableCOMPOSITE) })); EVENT_SUBSCRIBE(0, _T("onSignalChanged"), _T("org.rdk.AVInput"), message); - ASSERT_TRUE(dsAVSignalStatusEventHandler != nullptr); - - IARM_Bus_DSMgr_EventData_t eventData; - eventData.data.composite_in_sig_status.port = dsCOMPOSITE_IN_PORT_0; - eventData.data.composite_in_sig_status.status = dsCOMP_IN_SIGNAL_STATUS_STABLE; - dsAVSignalStatusEventHandler(IARM_BUS_DSMGR_NAME, IARM_BUS_DSMGR_EVENT_COMPOSITE_IN_SIGNAL_STATUS, &eventData, 0); + plugin->OnCompositeInSignalStatus(dsCOMPOSITE_IN_PORT_0, dsCOMP_IN_SIGNAL_STATUS_STABLE); EXPECT_EQ(Core::ERROR_NONE, onSignalChanged.Lock()); @@ -857,12 +783,8 @@ TEST_F(AVInputInit, onSignalChangedNoSignalCOMPOSITE) })); EVENT_SUBSCRIBE(0, _T("onSignalChanged"), _T("org.rdk.AVInput"), message); - ASSERT_TRUE(dsAVSignalStatusEventHandler != nullptr); - IARM_Bus_DSMgr_EventData_t eventData; - eventData.data.composite_in_sig_status.port = dsCOMPOSITE_IN_PORT_0; - eventData.data.composite_in_sig_status.status = dsCOMP_IN_SIGNAL_STATUS_NOSIGNAL; - dsAVSignalStatusEventHandler(IARM_BUS_DSMGR_NAME, IARM_BUS_DSMGR_EVENT_COMPOSITE_IN_SIGNAL_STATUS, &eventData, 0); + plugin->OnCompositeInSignalStatus(dsCOMPOSITE_IN_PORT_0, dsCOMP_IN_SIGNAL_STATUS_NOSIGNAL); EXPECT_EQ(Core::ERROR_NONE, onSignalChanged.Lock()); @@ -887,12 +809,8 @@ TEST_F(AVInputInit, onSignalChangedUnstableCOMPOSITE) })); EVENT_SUBSCRIBE(0, _T("onSignalChanged"), _T("org.rdk.AVInput"), message); - ASSERT_TRUE(dsAVSignalStatusEventHandler != nullptr); - IARM_Bus_DSMgr_EventData_t eventData; - eventData.data.composite_in_sig_status.port = dsCOMPOSITE_IN_PORT_0; - eventData.data.composite_in_sig_status.status = dsCOMP_IN_SIGNAL_STATUS_UNSTABLE; - dsAVSignalStatusEventHandler(IARM_BUS_DSMGR_NAME, IARM_BUS_DSMGR_EVENT_COMPOSITE_IN_SIGNAL_STATUS, &eventData, 0); + plugin->OnCompositeInSignalStatus(dsCOMPOSITE_IN_PORT_0, dsCOMP_IN_SIGNAL_STATUS_UNSTABLE); EXPECT_EQ(Core::ERROR_NONE, onSignalChanged.Lock()); @@ -917,12 +835,7 @@ TEST_F(AVInputInit, onSignalChangedNotSupportedCOMPOSITE) })); EVENT_SUBSCRIBE(0, _T("onSignalChanged"), _T("org.rdk.AVInput"), message); - ASSERT_TRUE(dsAVSignalStatusEventHandler != nullptr); - - IARM_Bus_DSMgr_EventData_t eventData; - eventData.data.composite_in_sig_status.port = dsCOMPOSITE_IN_PORT_0; - eventData.data.composite_in_sig_status.status = dsCOMP_IN_SIGNAL_STATUS_NOTSUPPORTED; - dsAVSignalStatusEventHandler(IARM_BUS_DSMGR_NAME, IARM_BUS_DSMGR_EVENT_COMPOSITE_IN_SIGNAL_STATUS, &eventData, 0); + plugin->OnCompositeInSignalStatus(dsCOMPOSITE_IN_PORT_0, dsCOMP_IN_SIGNAL_STATUS_NOTSUPPORTED); EXPECT_EQ(Core::ERROR_NONE, onSignalChanged.Lock()); @@ -947,12 +860,7 @@ TEST_F(AVInputInit, onSignalChangedDefaultCOMPOSITE) })); EVENT_SUBSCRIBE(0, _T("onSignalChanged"), _T("org.rdk.AVInput"), message); - ASSERT_TRUE(dsAVSignalStatusEventHandler != nullptr); - - IARM_Bus_DSMgr_EventData_t eventData; - eventData.data.composite_in_sig_status.port = dsCOMPOSITE_IN_PORT_0; - eventData.data.composite_in_sig_status.status = dsCOMP_IN_SIGNAL_STATUS_MAX; - dsAVSignalStatusEventHandler(IARM_BUS_DSMGR_NAME, IARM_BUS_DSMGR_EVENT_COMPOSITE_IN_SIGNAL_STATUS, &eventData, 0); + plugin->OnCompositeInSignalStatus(dsCOMPOSITE_IN_PORT_0, dsCOMP_IN_SIGNAL_STATUS_MAX); EXPECT_EQ(Core::ERROR_NONE, onSignalChanged.Lock()); @@ -977,15 +885,11 @@ TEST_F(AVInputInit, onInputStatusChangeOn_HDMI) })); EVENT_SUBSCRIBE(0, _T("onInputStatusChanged"), _T("org.rdk.AVInput"), message); - ASSERT_TRUE(dsAVSignalStatusEventHandler != nullptr); EXPECT_EQ(Core::ERROR_NONE, handler.Invoke(connection, _T("startInput"), _T("{\"portId\": \"0\" , \"typeOfInput\":\"HDMI\", \"requestAudioMix\": true, \"plane\" : 1, \"topMost\" : true}"), response)); EXPECT_EQ(response, string("{\"success\":true}")); - IARM_Bus_DSMgr_EventData_t eventData; - eventData.data.hdmi_in_status.port = dsHDMI_IN_PORT_0; - eventData.data.hdmi_in_status.isPresented = true; - dsAVStatusEventHandler(IARM_BUS_DSMGR_NAME, IARM_BUS_DSMGR_EVENT_HDMI_IN_STATUS, &eventData, 0); + plugin->OnHdmiInEventStatus(dsHDMI_IN_PORT_0, true); EXPECT_EQ(Core::ERROR_NONE, onInputStatusChanged.Lock()); @@ -1010,15 +914,12 @@ TEST_F(AVInputInit, onInputStatusChangeOff_HDMI) })); EVENT_SUBSCRIBE(0, _T("onInputStatusChanged"), _T("org.rdk.AVInput"), message); - ASSERT_TRUE(dsAVSignalStatusEventHandler != nullptr); + EXPECT_EQ(Core::ERROR_NONE, handler.Invoke(connection, _T("stopInput"), _T("{\"typeOfInput\":\"HDMI\"}"), response)); EXPECT_EQ(response, string("{\"success\":true}")); - IARM_Bus_DSMgr_EventData_t eventData; - eventData.data.hdmi_in_status.port = dsHDMI_IN_PORT_0; - eventData.data.hdmi_in_status.isPresented = false; + plugin->OnHdmiInEventStatus(dsHDMI_IN_PORT_0, false); - dsAVStatusEventHandler(IARM_BUS_DSMGR_NAME, IARM_BUS_DSMGR_EVENT_HDMI_IN_STATUS, &eventData, 0); EXPECT_EQ(Core::ERROR_NONE, onInputStatusChanged.Lock()); @@ -1043,14 +944,10 @@ TEST_F(AVInputInit, onInputStatusChangeOn_COMPOSITE) })); EVENT_SUBSCRIBE(0, _T("onInputStatusChanged"), _T("org.rdk.AVInput"), message); - ASSERT_TRUE(dsAVSignalStatusEventHandler != nullptr); EXPECT_EQ(Core::ERROR_NONE, handler.Invoke(connection, _T("startInput"), _T("{\"portId\": \"0\" , \"typeOfInput\":\"COMPOSITE\", \"requestAudioMix\": true, \"plane\" : 1, \"topMost\" : true}"), response)); EXPECT_EQ(response, string("{\"success\":true}")); - IARM_Bus_DSMgr_EventData_t eventData; - eventData.data.composite_in_status.port = dsCOMPOSITE_IN_PORT_0; - eventData.data.composite_in_status.isPresented = true; - dsAVStatusEventHandler(IARM_BUS_DSMGR_NAME, IARM_BUS_DSMGR_EVENT_COMPOSITE_IN_STATUS, &eventData, 0); + plugin->OnCompositeInStatus(dsCOMPOSITE_IN_PORT_0, true); EXPECT_EQ(Core::ERROR_NONE, onInputStatusChanged.Lock()); @@ -1075,14 +972,10 @@ TEST_F(AVInputInit, onInputStatusChangeOff_COMPOSITE) })); EVENT_SUBSCRIBE(0, _T("onInputStatusChanged"), _T("org.rdk.AVInput"), message); - ASSERT_TRUE(dsAVSignalStatusEventHandler != nullptr); EXPECT_EQ(Core::ERROR_NONE, handler.Invoke(connection, _T("stopInput"), _T("{\"typeOfInput\":\"COMPOSITE\"}"), response)); EXPECT_EQ(response, string("{\"success\":true}")); - IARM_Bus_DSMgr_EventData_t eventData; - eventData.data.composite_in_status.port = dsCOMPOSITE_IN_PORT_0; - eventData.data.composite_in_status.isPresented = false; - dsAVStatusEventHandler(IARM_BUS_DSMGR_NAME, IARM_BUS_DSMGR_EVENT_COMPOSITE_IN_STATUS, &eventData, 0); + plugin->OnCompositeInStatus(dsCOMPOSITE_IN_PORT_0, false); EXPECT_EQ(Core::ERROR_NONE, onInputStatusChanged.Lock()); @@ -1107,12 +1000,8 @@ TEST_F(AVInputInit, hdmiGameFeatureStatusUpdate) })); EVENT_SUBSCRIBE(0, _T("gameFeatureStatusUpdate"), _T("org.rdk.AVInput"), message); - ASSERT_TRUE(dsAVSignalStatusEventHandler != nullptr); - IARM_Bus_DSMgr_EventData_t eventData; - eventData.data.hdmi_in_allm_mode.port = dsHDMI_IN_PORT_0; - eventData.data.hdmi_in_allm_mode.allm_mode = true; - dsAVGameFeatureStatusEventHandler(IARM_BUS_DSMGR_NAME, IARM_BUS_DSMGR_EVENT_HDMI_IN_ALLM_STATUS, &eventData, 0); + plugin->OnHdmiInAllmStatus(dsHDMI_IN_PORT_0,true); EXPECT_EQ(Core::ERROR_NONE, gameFeatureStatusUpdate.Lock()); @@ -1137,12 +1026,8 @@ TEST_F(AVInputInit, hdmiGameFeatureStatusUpdate_HDMI_VRR) })); EVENT_SUBSCRIBE(0, _T("gameFeatureStatusUpdate"), _T("org.rdk.AVInput"), message); - ASSERT_TRUE(dsAVSignalStatusEventHandler != nullptr); - IARM_Bus_DSMgr_EventData_t eventData; - eventData.data.hdmi_in_vrr_mode.port = dsHDMI_IN_PORT_0; - eventData.data.hdmi_in_vrr_mode.vrr_type = dsVRR_HDMI_VRR; - dsAVGameFeatureStatusEventHandler(IARM_BUS_DSMGR_NAME, IARM_BUS_DSMGR_EVENT_HDMI_IN_VRR_STATUS, &eventData, 0); + plugin->OnHdmiInVRRStatus(dsHDMI_IN_PORT_0,dsVRR_HDMI_VRR); EXPECT_EQ(Core::ERROR_NONE, gameFeatureStatusUpdate.Lock()); @@ -1167,12 +1052,8 @@ TEST_F(AVInputInit, hdmiGameFeatureStatusUpdate_AMD_FREESYNC) })); EVENT_SUBSCRIBE(0, _T("gameFeatureStatusUpdate"), _T("org.rdk.AVInput"), message); - ASSERT_TRUE(dsAVSignalStatusEventHandler != nullptr); - IARM_Bus_DSMgr_EventData_t eventData; - eventData.data.hdmi_in_vrr_mode.port = dsHDMI_IN_PORT_0; - eventData.data.hdmi_in_vrr_mode.vrr_type = dsVRR_AMD_FREESYNC; - dsAVGameFeatureStatusEventHandler(IARM_BUS_DSMGR_NAME, IARM_BUS_DSMGR_EVENT_HDMI_IN_VRR_STATUS, &eventData, 0); + plugin->OnHdmiInVRRStatus(dsHDMI_IN_PORT_0, dsVRR_AMD_FREESYNC); EXPECT_EQ(Core::ERROR_NONE, gameFeatureStatusUpdate.Lock()); @@ -1197,12 +1078,8 @@ TEST_F(AVInputInit, hdmiGameFeatureStatusUpdate_AMD_FREESYNC_PREMIUM) })); EVENT_SUBSCRIBE(0, _T("gameFeatureStatusUpdate"), _T("org.rdk.AVInput"), message); - ASSERT_TRUE(dsAVSignalStatusEventHandler != nullptr); - - IARM_Bus_DSMgr_EventData_t eventData; - eventData.data.hdmi_in_vrr_mode.port = dsHDMI_IN_PORT_0; - eventData.data.hdmi_in_vrr_mode.vrr_type = dsVRR_AMD_FREESYNC_PREMIUM; - dsAVGameFeatureStatusEventHandler(IARM_BUS_DSMGR_NAME, IARM_BUS_DSMGR_EVENT_HDMI_IN_VRR_STATUS, &eventData, 0); + + plugin->OnHdmiInVRRStatus(dsHDMI_IN_PORT_0, dsVRR_AMD_FREESYNC_PREMIUM); EXPECT_EQ(Core::ERROR_NONE, gameFeatureStatusUpdate.Lock()); @@ -1227,12 +1104,8 @@ TEST_F(AVInputInit, hdmiGameFeatureStatusUpdate_AMD_FREESYNC_PREMIUM_PRO) })); EVENT_SUBSCRIBE(0, _T("gameFeatureStatusUpdate"), _T("org.rdk.AVInput"), message); - ASSERT_TRUE(dsAVSignalStatusEventHandler != nullptr); - IARM_Bus_DSMgr_EventData_t eventData; - eventData.data.hdmi_in_vrr_mode.port = dsHDMI_IN_PORT_0; - eventData.data.hdmi_in_vrr_mode.vrr_type = dsVRR_AMD_FREESYNC_PREMIUM_PRO; - dsAVGameFeatureStatusEventHandler(IARM_BUS_DSMGR_NAME, IARM_BUS_DSMGR_EVENT_HDMI_IN_VRR_STATUS, &eventData, 0); + plugin->OnHdmiInVRRStatus(dsHDMI_IN_PORT_0, dsVRR_AMD_FREESYNC_PREMIUM_PRO); EXPECT_EQ(Core::ERROR_NONE, gameFeatureStatusUpdate.Lock()); @@ -1257,14 +1130,13 @@ TEST_F(AVInputInit, videoStreamInfoUpdate1_HDMI) })); EVENT_SUBSCRIBE(0, _T("videoStreamInfoUpdate"), _T("org.rdk.AVInput"), message); - ASSERT_TRUE(dsAVSignalStatusEventHandler != nullptr); - IARM_Bus_DSMgr_EventData_t eventData; - eventData.data.hdmi_in_video_mode.port = dsHDMI_IN_PORT_0; - eventData.data.hdmi_in_video_mode.resolution.pixelResolution = dsVIDEO_PIXELRES_1920x1080; - eventData.data.hdmi_in_video_mode.resolution.interlaced = true; - eventData.data.hdmi_in_video_mode.resolution.frameRate = dsVIDEO_FRAMERATE_59dot94; - dsAVVideoModeEventHandler(IARM_BUS_DSMGR_NAME, IARM_BUS_DSMGR_EVENT_HDMI_IN_VIDEO_MODE_UPDATE, &eventData, 0); + dsVideoPortResolution_t videoPortResolution; + videoPortResolution.pixelResolution = dsVIDEO_PIXELRES_1920x1080; + videoPortResolution.interlaced = true; + videoPortResolution.frameRate = dsVIDEO_FRAMERATE_59dot94; + + plugin->OnHdmiInVideoModeUpdate(dsHDMI_IN_PORT_0,videoPortResolution); EXPECT_EQ(Core::ERROR_NONE, videoStreamInfoUpdate.Lock()); @@ -1289,14 +1161,13 @@ TEST_F(AVInputInit, videoStreamInfoUpdate2_HDMI) })); EVENT_SUBSCRIBE(0, _T("videoStreamInfoUpdate"), _T("org.rdk.AVInput"), message); - ASSERT_TRUE(dsAVSignalStatusEventHandler != nullptr); - IARM_Bus_DSMgr_EventData_t eventData; - eventData.data.hdmi_in_video_mode.port = dsHDMI_IN_PORT_0; - eventData.data.hdmi_in_video_mode.resolution.pixelResolution = dsVIDEO_PIXELRES_720x480; - eventData.data.hdmi_in_video_mode.resolution.interlaced = true; - eventData.data.hdmi_in_video_mode.resolution.frameRate = dsVIDEO_FRAMERATE_24; - dsAVVideoModeEventHandler(IARM_BUS_DSMGR_NAME, IARM_BUS_DSMGR_EVENT_HDMI_IN_VIDEO_MODE_UPDATE, &eventData, 0); + dsVideoPortResolution_t videoPortResolution; + videoPortResolution.pixelResolution = dsVIDEO_PIXELRES_720x480; + videoPortResolution.interlaced = true; + videoPortResolution.frameRate = dsVIDEO_FRAMERATE_24; + + plugin->OnHdmiInVideoModeUpdate(dsHDMI_IN_PORT_0, videoPortResolution); EXPECT_EQ(Core::ERROR_NONE, videoStreamInfoUpdate.Lock()); @@ -1321,14 +1192,13 @@ TEST_F(AVInputInit, videoStreamInfoUpdate3_HDMI) })); EVENT_SUBSCRIBE(0, _T("videoStreamInfoUpdate"), _T("org.rdk.AVInput"), message); - ASSERT_TRUE(dsAVSignalStatusEventHandler != nullptr); - IARM_Bus_DSMgr_EventData_t eventData; - eventData.data.hdmi_in_video_mode.port = dsHDMI_IN_PORT_0; - eventData.data.hdmi_in_video_mode.resolution.pixelResolution = dsVIDEO_PIXELRES_720x576; - eventData.data.hdmi_in_video_mode.resolution.interlaced = true; - eventData.data.hdmi_in_video_mode.resolution.frameRate = dsVIDEO_FRAMERATE_25; - dsAVVideoModeEventHandler(IARM_BUS_DSMGR_NAME, IARM_BUS_DSMGR_EVENT_HDMI_IN_VIDEO_MODE_UPDATE, &eventData, 0); + dsVideoPortResolution_t videoPortResolution; + videoPortResolution.pixelResolution = dsVIDEO_PIXELRES_720x576; + videoPortResolution.interlaced = true; + videoPortResolution.frameRate = dsVIDEO_FRAMERATE_25; + + plugin->OnHdmiInVideoModeUpdate(dsHDMI_IN_PORT_0, videoPortResolution); EXPECT_EQ(Core::ERROR_NONE, videoStreamInfoUpdate.Lock()); @@ -1353,14 +1223,14 @@ TEST_F(AVInputInit, videoStreamInfoUpdate4_HDMI) })); EVENT_SUBSCRIBE(0, _T("videoStreamInfoUpdate"), _T("org.rdk.AVInput"), message); - ASSERT_TRUE(dsAVSignalStatusEventHandler != nullptr); - IARM_Bus_DSMgr_EventData_t eventData; - eventData.data.hdmi_in_video_mode.port = dsHDMI_IN_PORT_0; - eventData.data.hdmi_in_video_mode.resolution.pixelResolution = dsVIDEO_PIXELRES_3840x2160; - eventData.data.hdmi_in_video_mode.resolution.interlaced = true; - eventData.data.hdmi_in_video_mode.resolution.frameRate = dsVIDEO_FRAMERATE_30; - dsAVVideoModeEventHandler(IARM_BUS_DSMGR_NAME, IARM_BUS_DSMGR_EVENT_HDMI_IN_VIDEO_MODE_UPDATE, &eventData, 0); + dsVideoPortResolution_t videoPortResolution; + + videoPortResolution.pixelResolution = dsVIDEO_PIXELRES_3840x2160; + videoPortResolution.interlaced = true; + videoPortResolution.frameRate = dsVIDEO_FRAMERATE_30; + + plugin->OnHdmiInVideoModeUpdate(dsHDMI_IN_PORT_0, videoPortResolution); EXPECT_EQ(Core::ERROR_NONE, videoStreamInfoUpdate.Lock()); @@ -1385,15 +1255,14 @@ TEST_F(AVInputInit, videoStreamInfoUpdate5_HDMI) })); EVENT_SUBSCRIBE(0, _T("videoStreamInfoUpdate"), _T("org.rdk.AVInput"), message); - ASSERT_TRUE(dsAVSignalStatusEventHandler != nullptr); - - IARM_Bus_DSMgr_EventData_t eventData; - eventData.data.hdmi_in_video_mode.port = dsHDMI_IN_PORT_0; - eventData.data.hdmi_in_video_mode.resolution.pixelResolution = dsVIDEO_PIXELRES_4096x2160; - eventData.data.hdmi_in_video_mode.resolution.interlaced = true; - eventData.data.hdmi_in_video_mode.resolution.frameRate = dsVIDEO_FRAMERATE_50; - dsAVVideoModeEventHandler(IARM_BUS_DSMGR_NAME, IARM_BUS_DSMGR_EVENT_HDMI_IN_VIDEO_MODE_UPDATE, &eventData, 0); + dsVideoPortResolution_t videoPortResolution; + + videoPortResolution.pixelResolution = dsVIDEO_PIXELRES_4096x2160; + videoPortResolution.interlaced = true; + videoPortResolution.frameRate = dsVIDEO_FRAMERATE_50; + + plugin->OnHdmiInVideoModeUpdate(dsHDMI_IN_PORT_0, videoPortResolution); EXPECT_EQ(Core::ERROR_NONE, videoStreamInfoUpdate.Lock()); EVENT_UNSUBSCRIBE(0, _T("videoStreamInfoUpdate"), _T("org.rdk.AVInput"), message); @@ -1417,14 +1286,14 @@ TEST_F(AVInputInit, videoStreamInfoUpdate6_HDMI) })); EVENT_SUBSCRIBE(0, _T("videoStreamInfoUpdate"), _T("org.rdk.AVInput"), message); - ASSERT_TRUE(dsAVSignalStatusEventHandler != nullptr); + + dsVideoPortResolution_t videoPortResolution; + + videoPortResolution.pixelResolution = dsVIDEO_PIXELRES_4096x2160; + videoPortResolution.interlaced = true; + videoPortResolution.frameRate = dsVIDEO_FRAMERATE_60; - IARM_Bus_DSMgr_EventData_t eventData; - eventData.data.hdmi_in_video_mode.port = dsHDMI_IN_PORT_0; - eventData.data.hdmi_in_video_mode.resolution.pixelResolution = dsVIDEO_PIXELRES_4096x2160; - eventData.data.hdmi_in_video_mode.resolution.interlaced = true; - eventData.data.hdmi_in_video_mode.resolution.frameRate = dsVIDEO_FRAMERATE_60; - dsAVVideoModeEventHandler(IARM_BUS_DSMGR_NAME, IARM_BUS_DSMGR_EVENT_HDMI_IN_VIDEO_MODE_UPDATE, &eventData, 0); + plugin->OnHdmiInVideoModeUpdate(dsHDMI_IN_PORT_0, videoPortResolution); EXPECT_EQ(Core::ERROR_NONE, videoStreamInfoUpdate.Lock()); @@ -1449,14 +1318,14 @@ TEST_F(AVInputInit, videoStreamInfoUpdate7_HDMI) })); EVENT_SUBSCRIBE(0, _T("videoStreamInfoUpdate"), _T("org.rdk.AVInput"), message); - ASSERT_TRUE(dsAVSignalStatusEventHandler != nullptr); - IARM_Bus_DSMgr_EventData_t eventData; - eventData.data.hdmi_in_video_mode.port = dsHDMI_IN_PORT_0; - eventData.data.hdmi_in_video_mode.resolution.pixelResolution = dsVIDEO_PIXELRES_4096x2160; - eventData.data.hdmi_in_video_mode.resolution.interlaced = true; - eventData.data.hdmi_in_video_mode.resolution.frameRate = dsVIDEO_FRAMERATE_23dot98; - dsAVVideoModeEventHandler(IARM_BUS_DSMGR_NAME, IARM_BUS_DSMGR_EVENT_HDMI_IN_VIDEO_MODE_UPDATE, &eventData, 0); + dsVideoPortResolution_t videoPortResolution; + + videoPortResolution.pixelResolution = dsVIDEO_PIXELRES_4096x2160; + videoPortResolution.interlaced = true; + videoPortResolution.frameRate = dsVIDEO_FRAMERATE_23dot98; + + plugin->OnHdmiInVideoModeUpdate(dsHDMI_IN_PORT_0, videoPortResolution); EXPECT_EQ(Core::ERROR_NONE, videoStreamInfoUpdate.Lock()); @@ -1481,14 +1350,14 @@ TEST_F(AVInputInit, videoStreamInfoUpdate8_HDMI) })); EVENT_SUBSCRIBE(0, _T("videoStreamInfoUpdate"), _T("org.rdk.AVInput"), message); - ASSERT_TRUE(dsAVSignalStatusEventHandler != nullptr); - IARM_Bus_DSMgr_EventData_t eventData; - eventData.data.hdmi_in_video_mode.port = dsHDMI_IN_PORT_0; - eventData.data.hdmi_in_video_mode.resolution.pixelResolution = dsVIDEO_PIXELRES_4096x2160; - eventData.data.hdmi_in_video_mode.resolution.interlaced = true; - eventData.data.hdmi_in_video_mode.resolution.frameRate = dsVIDEO_FRAMERATE_29dot97; - dsAVVideoModeEventHandler(IARM_BUS_DSMGR_NAME, IARM_BUS_DSMGR_EVENT_HDMI_IN_VIDEO_MODE_UPDATE, &eventData, 0); + dsVideoPortResolution_t videoPortResolution; + + videoPortResolution.pixelResolution = dsVIDEO_PIXELRES_4096x2160; + videoPortResolution.interlaced = true; + videoPortResolution.frameRate = dsVIDEO_FRAMERATE_29dot97; + + plugin->OnHdmiInVideoModeUpdate(dsHDMI_IN_PORT_0, videoPortResolution); EXPECT_EQ(Core::ERROR_NONE, videoStreamInfoUpdate.Lock()); @@ -1513,14 +1382,14 @@ TEST_F(AVInputInit, videoStreamInfoUpdate9_HDMI) })); EVENT_SUBSCRIBE(0, _T("videoStreamInfoUpdate"), _T("org.rdk.AVInput"), message); - ASSERT_TRUE(dsAVSignalStatusEventHandler != nullptr); - - IARM_Bus_DSMgr_EventData_t eventData; - eventData.data.hdmi_in_video_mode.port = dsHDMI_IN_PORT_0; - eventData.data.hdmi_in_video_mode.resolution.pixelResolution = dsVIDEO_PIXELRES_1280x720; - eventData.data.hdmi_in_video_mode.resolution.interlaced = true; - eventData.data.hdmi_in_video_mode.resolution.frameRate = dsVIDEO_FRAMERATE_29dot97; - dsAVVideoModeEventHandler(IARM_BUS_DSMGR_NAME, IARM_BUS_DSMGR_EVENT_HDMI_IN_VIDEO_MODE_UPDATE, &eventData, 0); + + dsVideoPortResolution_t videoPortResolution; + + videoPortResolution.pixelResolution = dsVIDEO_PIXELRES_1280x720; + videoPortResolution.interlaced = true; + videoPortResolution.frameRate = dsVIDEO_FRAMERATE_29dot97; + + plugin->OnHdmiInVideoModeUpdate(dsHDMI_IN_PORT_0, videoPortResolution); EXPECT_EQ(Core::ERROR_NONE, videoStreamInfoUpdate.Lock()); @@ -1545,14 +1414,14 @@ TEST_F(AVInputInit, videoStreamInfoUpdate10_HDMI) })); EVENT_SUBSCRIBE(0, _T("videoStreamInfoUpdate"), _T("org.rdk.AVInput"), message); - ASSERT_TRUE(dsAVSignalStatusEventHandler != nullptr); - IARM_Bus_DSMgr_EventData_t eventData; - eventData.data.hdmi_in_video_mode.port = dsHDMI_IN_PORT_0; - eventData.data.hdmi_in_video_mode.resolution.pixelResolution = dsVIDEO_PIXELRES_1280x720; - eventData.data.hdmi_in_video_mode.resolution.interlaced = true; - eventData.data.hdmi_in_video_mode.resolution.frameRate = dsVIDEO_FRAMERATE_100; - dsAVVideoModeEventHandler(IARM_BUS_DSMGR_NAME, IARM_BUS_DSMGR_EVENT_HDMI_IN_VIDEO_MODE_UPDATE, &eventData, 0); + dsVideoPortResolution_t videoPortResolution; + + videoPortResolution.pixelResolution = dsVIDEO_PIXELRES_1280x720; + videoPortResolution.interlaced = true; + videoPortResolution.frameRate = dsVIDEO_FRAMERATE_100; + + plugin->OnHdmiInVideoModeUpdate(dsHDMI_IN_PORT_0, videoPortResolution); EXPECT_EQ(Core::ERROR_NONE, videoStreamInfoUpdate.Lock()); @@ -1577,14 +1446,14 @@ TEST_F(AVInputInit, videoStreamInfoUpdate11_HDMI) })); EVENT_SUBSCRIBE(0, _T("videoStreamInfoUpdate"), _T("org.rdk.AVInput"), message); - ASSERT_TRUE(dsAVSignalStatusEventHandler != nullptr); - IARM_Bus_DSMgr_EventData_t eventData; - eventData.data.hdmi_in_video_mode.port = dsHDMI_IN_PORT_0; - eventData.data.hdmi_in_video_mode.resolution.pixelResolution = dsVIDEO_PIXELRES_1280x720; - eventData.data.hdmi_in_video_mode.resolution.interlaced = true; - eventData.data.hdmi_in_video_mode.resolution.frameRate = dsVIDEO_FRAMERATE_119dot88; - dsAVVideoModeEventHandler(IARM_BUS_DSMGR_NAME, IARM_BUS_DSMGR_EVENT_HDMI_IN_VIDEO_MODE_UPDATE, &eventData, 0); + dsVideoPortResolution_t videoPortResolution; + + videoPortResolution.pixelResolution = dsVIDEO_PIXELRES_1280x720; + videoPortResolution.interlaced = true; + videoPortResolution.frameRate = dsVIDEO_FRAMERATE_119dot88; + + plugin->OnHdmiInVideoModeUpdate(dsHDMI_IN_PORT_0, videoPortResolution); EXPECT_EQ(Core::ERROR_NONE, videoStreamInfoUpdate.Lock()); @@ -1609,14 +1478,14 @@ TEST_F(AVInputInit, videoStreamInfoUpdate12_HDMI) })); EVENT_SUBSCRIBE(0, _T("videoStreamInfoUpdate"), _T("org.rdk.AVInput"), message); - ASSERT_TRUE(dsAVSignalStatusEventHandler != nullptr); - IARM_Bus_DSMgr_EventData_t eventData; - eventData.data.hdmi_in_video_mode.port = dsHDMI_IN_PORT_0; - eventData.data.hdmi_in_video_mode.resolution.pixelResolution = dsVIDEO_PIXELRES_1280x720; - eventData.data.hdmi_in_video_mode.resolution.interlaced = true; - eventData.data.hdmi_in_video_mode.resolution.frameRate = dsVIDEO_FRAMERATE_120; - dsAVVideoModeEventHandler(IARM_BUS_DSMGR_NAME, IARM_BUS_DSMGR_EVENT_HDMI_IN_VIDEO_MODE_UPDATE, &eventData, 0); + dsVideoPortResolution_t videoPortResolution; + + videoPortResolution.pixelResolution = dsVIDEO_PIXELRES_1280x720; + videoPortResolution.interlaced = true; + videoPortResolution.frameRate = dsVIDEO_FRAMERATE_120; + + plugin->OnHdmiInVideoModeUpdate(dsHDMI_IN_PORT_0, videoPortResolution); EXPECT_EQ(Core::ERROR_NONE, videoStreamInfoUpdate.Lock()); @@ -1641,14 +1510,14 @@ TEST_F(AVInputInit, videoStreamInfoUpdate13_HDMI) })); EVENT_SUBSCRIBE(0, _T("videoStreamInfoUpdate"), _T("org.rdk.AVInput"), message); - ASSERT_TRUE(dsAVSignalStatusEventHandler != nullptr); - IARM_Bus_DSMgr_EventData_t eventData; - eventData.data.hdmi_in_video_mode.port = dsHDMI_IN_PORT_0; - eventData.data.hdmi_in_video_mode.resolution.pixelResolution = dsVIDEO_PIXELRES_1280x720; - eventData.data.hdmi_in_video_mode.resolution.interlaced = true; - eventData.data.hdmi_in_video_mode.resolution.frameRate = dsVIDEO_FRAMERATE_200; - dsAVVideoModeEventHandler(IARM_BUS_DSMGR_NAME, IARM_BUS_DSMGR_EVENT_HDMI_IN_VIDEO_MODE_UPDATE, &eventData, 0); + dsVideoPortResolution_t videoPortResolution; + + videoPortResolution.pixelResolution = dsVIDEO_PIXELRES_1280x720; + videoPortResolution.interlaced = true; + videoPortResolution.frameRate = dsVIDEO_FRAMERATE_200; + + plugin->OnHdmiInVideoModeUpdate(dsHDMI_IN_PORT_0, videoPortResolution); EXPECT_EQ(Core::ERROR_NONE, videoStreamInfoUpdate.Lock()); @@ -1673,14 +1542,14 @@ TEST_F(AVInputInit, videoStreamInfoUpdate14_HDMI) })); EVENT_SUBSCRIBE(0, _T("videoStreamInfoUpdate"), _T("org.rdk.AVInput"), message); - ASSERT_TRUE(dsAVSignalStatusEventHandler != nullptr); - IARM_Bus_DSMgr_EventData_t eventData; - eventData.data.hdmi_in_video_mode.port = dsHDMI_IN_PORT_0; - eventData.data.hdmi_in_video_mode.resolution.pixelResolution = dsVIDEO_PIXELRES_1280x720; - eventData.data.hdmi_in_video_mode.resolution.interlaced = true; - eventData.data.hdmi_in_video_mode.resolution.frameRate = dsVIDEO_FRAMERATE_239dot76; - dsAVVideoModeEventHandler(IARM_BUS_DSMGR_NAME, IARM_BUS_DSMGR_EVENT_HDMI_IN_VIDEO_MODE_UPDATE, &eventData, 0); + dsVideoPortResolution_t videoPortResolution; + + videoPortResolution.pixelResolution = dsVIDEO_PIXELRES_1280x720; + videoPortResolution.interlaced = true; + videoPortResolution.frameRate = dsVIDEO_FRAMERATE_239dot76; + + plugin->OnHdmiInVideoModeUpdate(dsHDMI_IN_PORT_0, videoPortResolution); EXPECT_EQ(Core::ERROR_NONE, videoStreamInfoUpdate.Lock()); @@ -1705,14 +1574,14 @@ TEST_F(AVInputInit, videoStreamInfoUpdate15_HDMI) })); EVENT_SUBSCRIBE(0, _T("videoStreamInfoUpdate"), _T("org.rdk.AVInput"), message); - ASSERT_TRUE(dsAVSignalStatusEventHandler != nullptr); - IARM_Bus_DSMgr_EventData_t eventData; - eventData.data.hdmi_in_video_mode.port = dsHDMI_IN_PORT_0; - eventData.data.hdmi_in_video_mode.resolution.pixelResolution = dsVIDEO_PIXELRES_1280x720; - eventData.data.hdmi_in_video_mode.resolution.interlaced = true; - eventData.data.hdmi_in_video_mode.resolution.frameRate = dsVIDEO_FRAMERATE_240; - dsAVVideoModeEventHandler(IARM_BUS_DSMGR_NAME, IARM_BUS_DSMGR_EVENT_HDMI_IN_VIDEO_MODE_UPDATE, &eventData, 0); + dsVideoPortResolution_t videoPortResolution; + + videoPortResolution.pixelResolution = dsVIDEO_PIXELRES_1280x720; + videoPortResolution.interlaced = true; + videoPortResolution.frameRate = dsVIDEO_FRAMERATE_240; + + plugin->OnHdmiInVideoModeUpdate(dsHDMI_IN_PORT_0, videoPortResolution); EXPECT_EQ(Core::ERROR_NONE, videoStreamInfoUpdate.Lock()); @@ -1737,14 +1606,14 @@ TEST_F(AVInputInit, videoStreamInfoUpdateDefault_HDMI) })); EVENT_SUBSCRIBE(0, _T("videoStreamInfoUpdate"), _T("org.rdk.AVInput"), message); - ASSERT_TRUE(dsAVSignalStatusEventHandler != nullptr); - IARM_Bus_DSMgr_EventData_t eventData; - eventData.data.hdmi_in_video_mode.port = dsHDMI_IN_PORT_0; - eventData.data.hdmi_in_video_mode.resolution.pixelResolution = dsVIDEO_PIXELRES_MAX; - eventData.data.hdmi_in_video_mode.resolution.interlaced = true; - eventData.data.hdmi_in_video_mode.resolution.frameRate = dsVIDEO_FRAMERATE_MAX; - dsAVVideoModeEventHandler(IARM_BUS_DSMGR_NAME, IARM_BUS_DSMGR_EVENT_HDMI_IN_VIDEO_MODE_UPDATE, &eventData, 0); + dsVideoPortResolution_t videoPortResolution; + + videoPortResolution.pixelResolution = dsVIDEO_PIXELRES_MAX; + videoPortResolution.interlaced = true; + videoPortResolution.frameRate = dsVIDEO_FRAMERATE_MAX; + + plugin->OnHdmiInVideoModeUpdate(dsHDMI_IN_PORT_0, videoPortResolution); EXPECT_EQ(Core::ERROR_NONE, videoStreamInfoUpdate.Lock()); @@ -1770,13 +1639,12 @@ TEST_F(AVInputInit, videoStreamInfoUpdate1_COMPOSITE) })); EVENT_SUBSCRIBE(0, _T("videoStreamInfoUpdate"), _T("org.rdk.AVInput"), message); - ASSERT_TRUE(dsAVSignalStatusEventHandler != nullptr); - IARM_Bus_DSMgr_EventData_t eventData; - eventData.data.composite_in_video_mode.port = dsCOMPOSITE_IN_PORT_0; - eventData.data.composite_in_video_mode.resolution.pixelResolution = dsVIDEO_PIXELRES_720x480; - eventData.data.composite_in_video_mode.resolution.frameRate = dsVIDEO_FRAMERATE_24; - dsAVVideoModeEventHandler(IARM_BUS_DSMGR_NAME, IARM_BUS_DSMGR_EVENT_COMPOSITE_IN_VIDEO_MODE_UPDATE, &eventData, 0); + dsVideoPortResolution_t videoPortResolution; + videoPortResolution.pixelResolution = dsVIDEO_PIXELRES_720x480; + videoPortResolution.frameRate = dsVIDEO_FRAMERATE_24; + + plugin->OnCompositeInVideoModeUpdate(dsCOMPOSITE_IN_PORT_0, videoPortResolution); EXPECT_EQ(Core::ERROR_NONE, videoStreamInfoUpdate.Lock()); @@ -1802,13 +1670,12 @@ TEST_F(AVInputInit, videoStreamInfoUpdate2_COMPOSITE) })); EVENT_SUBSCRIBE(0, _T("videoStreamInfoUpdate"), _T("org.rdk.AVInput"), message); - ASSERT_TRUE(dsAVSignalStatusEventHandler != nullptr); - IARM_Bus_DSMgr_EventData_t eventData; - eventData.data.composite_in_video_mode.port = dsCOMPOSITE_IN_PORT_0; - eventData.data.composite_in_video_mode.resolution.pixelResolution = dsVIDEO_PIXELRES_720x576; - eventData.data.composite_in_video_mode.resolution.frameRate = dsVIDEO_FRAMERATE_25; - dsAVVideoModeEventHandler(IARM_BUS_DSMGR_NAME, IARM_BUS_DSMGR_EVENT_COMPOSITE_IN_VIDEO_MODE_UPDATE, &eventData, 0); + dsVideoPortResolution_t videoPortResolution; + videoPortResolution.pixelResolution = dsVIDEO_PIXELRES_720x576; + videoPortResolution.frameRate = dsVIDEO_FRAMERATE_25; + + plugin->OnCompositeInVideoModeUpdate(dsCOMPOSITE_IN_PORT_0, videoPortResolution); EXPECT_EQ(Core::ERROR_NONE, videoStreamInfoUpdate.Lock()); @@ -1833,13 +1700,12 @@ TEST_F(AVInputInit, videoStreamInfoUpdateDefault_COMPOSITE) })); EVENT_SUBSCRIBE(0, _T("videoStreamInfoUpdate"), _T("org.rdk.AVInput"), message); - ASSERT_TRUE(dsAVSignalStatusEventHandler != nullptr); - IARM_Bus_DSMgr_EventData_t eventData; - eventData.data.composite_in_video_mode.port = dsCOMPOSITE_IN_PORT_0; - eventData.data.composite_in_video_mode.resolution.pixelResolution = dsVIDEO_PIXELRES_MAX; - eventData.data.composite_in_video_mode.resolution.frameRate = dsVIDEO_FRAMERATE_MAX; - dsAVVideoModeEventHandler(IARM_BUS_DSMGR_NAME, IARM_BUS_DSMGR_EVENT_COMPOSITE_IN_VIDEO_MODE_UPDATE, &eventData, 0); + dsVideoPortResolution_t videoPortResolution; + videoPortResolution.pixelResolution = dsVIDEO_PIXELRES_MAX; + videoPortResolution.frameRate = dsVIDEO_FRAMERATE_MAX; + + plugin->OnCompositeInVideoModeUpdate(dsCOMPOSITE_IN_PORT_0, videoPortResolution); EXPECT_EQ(Core::ERROR_NONE, videoStreamInfoUpdate.Lock()); @@ -1863,13 +1729,9 @@ TEST_F(AVInputInit, aviContentTypeUpdate_HDMI) return Core::ERROR_NONE; })); - EVENT_SUBSCRIBE(0, _T("aviContentTypeUpdate"), _T("org.rdk.AVInput"), message); - ASSERT_TRUE(dsAVSignalStatusEventHandler != nullptr); + EVENT_SUBSCRIBE(0, _T("aviContentTypeUpdate"), _T("org.rdk.AVInput"), message); - IARM_Bus_DSMgr_EventData_t eventData; - eventData.data.hdmi_in_content_type.port = dsHDMI_IN_PORT_0; - eventData.data.hdmi_in_content_type.aviContentType = dsAVICONTENT_TYPE_GRAPHICS; - dsAviContentTypeEventHandler(IARM_BUS_DSMGR_NAME, IARM_BUS_DSMGR_EVENT_HDMI_IN_AVI_CONTENT_TYPE, &eventData, 0); + plugin->OnHdmiInAVIContentType(dsHDMI_IN_PORT_0, dsAVICONTENT_TYPE_GRAPHICS); EXPECT_EQ(Core::ERROR_NONE, aviContentTypeUpdate.Lock()); diff --git a/Tests/L1Tests/tests/test_HdcpProfile.cpp b/Tests/L1Tests/tests/test_HdcpProfile.cpp index c474adea..20d4e64c 100755 --- a/Tests/L1Tests/tests/test_HdcpProfile.cpp +++ b/Tests/L1Tests/tests/test_HdcpProfile.cpp @@ -26,9 +26,7 @@ #include "ManagerMock.h" #include "VideoOutputPortConfigMock.h" #include "VideoOutputPortMock.h" -#include "IarmBusMock.h" #include "ServiceMock.h" -#include "dsMgr.h" #include "dsDisplay.h" #include "ThunderPortability.h" #include "PowerManagerMock.h" @@ -39,10 +37,10 @@ #include #include "COMLinkMock.h" #include "WrapsMock.h" -#include "IarmBusMock.h" #include "WorkerPoolImplementation.h" #include "HdcpProfileImplementation.h" +#define TEST_LOG(x, ...) fprintf(stderr, "\033[1;32m[%s:%d](%s)" x "\n\033[0m", __FILE__, __LINE__, __FUNCTION__, getpid(), gettid(), ##__VA_ARGS__); fflush(stderr); using namespace WPEFramework; using ::testing::NiceMock; @@ -55,15 +53,15 @@ class HDCPProfileTest : public ::testing::Test { Core::JSONRPC::Message message; string response; + HostImplMock *p_hostImplMock = nullptr ; WrapsImplMock *p_wrapsImplMock = nullptr; - IarmBusImplMock *p_iarmBusImplMock = nullptr; Core::ProxyType hdcpProfileImpl; NiceMock comLinkMock; NiceMock service; PLUGINHOST_DISPATCHER* dispatcher; Core::ProxyType workerPool; - + NiceMock factoriesImplementation; HDCPProfileTest() @@ -72,14 +70,14 @@ class HDCPProfileTest : public ::testing::Test { , INIT_CONX(1, 0) , workerPool(Core::ProxyType::Create(2, Core::Thread::DefaultStackSize(), 16)) { + p_hostImplMock = new NiceMock ; p_wrapsImplMock = new NiceMock; printf("Pass created wrapsImplMock: %p ", p_wrapsImplMock); + device::Host::setImpl(p_hostImplMock); Wraps::setImpl(p_wrapsImplMock); - - p_iarmBusImplMock = new NiceMock ; - IarmBus::setImpl(p_iarmBusImplMock); - + + ON_CALL(service, COMLink()) .WillByDefault(::testing::Invoke( [this]() { @@ -87,30 +85,29 @@ class HDCPProfileTest : public ::testing::Test { return &comLinkMock; })); +#ifdef USE_THUNDER_R4 + ON_CALL(comLinkMock, Instantiate(::testing::_, ::testing::_, ::testing::_)) + .WillByDefault(::testing::Invoke( + [&](const RPC::Object& object, const uint32_t waitTime, uint32_t& connectionId) { + hdcpProfileImpl = Core::ProxyType::Create(); + TEST_LOG("Pass created hdcpProfileImpl: %p ", &hdcpProfileImpl); + return &hdcpProfileImpl; + })); +#else + ON_CALL(comLinkMock, Instantiate(::testing::_, ::testing::_, ::testing::_, ::testing::_, ::testing::_)) + .WillByDefault(::testing::Return(hdcpProfileImpl)); +#endif /*USE_THUNDER_R4 */ - #ifdef USE_THUNDER_R4 - ON_CALL(comLinkMock, Instantiate(::testing::_, ::testing::_, ::testing::_)) - .WillByDefault(::testing::Invoke( - [&](const RPC::Object& object, const uint32_t waitTime, uint32_t& connectionId) { - hdcpProfileImpl = Core::ProxyType::Create(); - TEST_LOG("Pass created hdcpProfileImpl: %p ", &hdcpProfileImpl); - return &hdcpProfileImpl; - })); - #else - ON_CALL(comLinkMock, Instantiate(::testing::_, ::testing::_, ::testing::_, ::testing::_, ::testing::_)) - .WillByDefault(::testing::Return(hdcpProfileImpl)); - #endif /*USE_THUNDER_R4 */ - - PluginHost::IFactories::Assign(&factoriesImplementation); - - Core::IWorkerPool::Assign(&(*workerPool)); - workerPool->Run(); - - dispatcher = static_cast( - plugin->QueryInterface(PLUGINHOST_DISPATCHER_ID)); - dispatcher->Activate(&service); - - EXPECT_EQ(string(""), plugin->Initialize(&service)); + PluginHost::IFactories::Assign(&factoriesImplementation); + + Core::IWorkerPool::Assign(&(*workerPool)); + workerPool->Run(); + + dispatcher = static_cast( + plugin->QueryInterface(PLUGINHOST_DISPATCHER_ID)); + dispatcher->Activate(&service); + + EXPECT_EQ(string(""), plugin->Initialize(&service)); } virtual ~HDCPProfileTest() override @@ -132,11 +129,11 @@ class HDCPProfileTest : public ::testing::Test { p_wrapsImplMock = nullptr; } PluginHost::IFactories::Assign(nullptr); - IarmBus::setImpl(nullptr); - if (p_iarmBusImplMock != nullptr) + device::Host::setImpl(nullptr); + if (p_hostImplMock != nullptr) { - delete p_iarmBusImplMock; - p_iarmBusImplMock = nullptr; + delete p_hostImplMock; + p_hostImplMock = nullptr; } } @@ -144,15 +141,12 @@ class HDCPProfileTest : public ::testing::Test { class HDCPProfileDsTest : public HDCPProfileTest { protected: - HostImplMock *p_hostImplMock = nullptr ; VideoOutputPortConfigImplMock *p_videoOutputPortConfigImplMock = nullptr ; VideoOutputPortMock *p_videoOutputPortMock = nullptr ; HDCPProfileDsTest() : HDCPProfileTest() { - p_hostImplMock = new NiceMock ; - device::Host::setImpl(p_hostImplMock); p_videoOutputPortConfigImplMock = new NiceMock ; device::VideoOutputPortConfig::setImpl(p_videoOutputPortConfigImplMock); p_videoOutputPortMock = new NiceMock ; @@ -172,12 +166,6 @@ class HDCPProfileDsTest : public HDCPProfileTest { delete p_videoOutputPortConfigImplMock; p_videoOutputPortConfigImplMock = nullptr; } - device::Host::setImpl(nullptr); - if (p_hostImplMock != nullptr) - { - delete p_hostImplMock; - p_hostImplMock = nullptr; - } } }; @@ -208,9 +196,12 @@ class HDCPProfileEventTest : public HDCPProfileDsTest { }; class HDCPProfileEventIarmTest : public HDCPProfileEventTest { +public: + device::Host::IDisplayDeviceEvents* _displayDeviceEvents = nullptr; + device::Host::IVideoOutputPortEvents* _videoOutputPortEvents = nullptr; + protected: ManagerImplMock *p_managerImplMock = nullptr ; - IARM_EventHandler_t dsHdmiEventHandler; HDCPProfileEventIarmTest() : HDCPProfileEventTest() @@ -222,18 +213,6 @@ class HDCPProfileEventIarmTest : public HDCPProfileEventTest { .Times(::testing::AnyNumber()) .WillRepeatedly(::testing::Return()); - ON_CALL(*p_iarmBusImplMock, IARM_Bus_RegisterEventHandler(::testing::_, ::testing::_, ::testing::_)) - .WillByDefault(::testing::Invoke( - [&](const char* ownerName, IARM_EventId_t eventId, IARM_EventHandler_t handler) { - if ((string(IARM_BUS_DSMGR_NAME) == string(ownerName)) && (eventId == IARM_BUS_DSMGR_EVENT_HDMI_HOTPLUG)) { - dsHdmiEventHandler = handler; - } - if ((string(IARM_BUS_DSMGR_NAME) == string(ownerName)) && (eventId == IARM_BUS_DSMGR_EVENT_HDCP_STATUS)) { - dsHdmiEventHandler = handler; - } - return IARM_RESULT_SUCCESS; - })); - EXPECT_EQ(string(""), plugin->Initialize(&service)); } @@ -381,8 +360,6 @@ TEST_F(HDCPProfileDsTest, getSettopHDCPSupport_Hdcp_v2x) TEST_F(HDCPProfileEventIarmTest, onDisplayConnectionChanged) { - ASSERT_TRUE(dsHdmiEventHandler != nullptr); - Core::Event onDisplayConnectionChanged(false, true); NiceMock videoOutputPortMock; @@ -439,9 +416,7 @@ TEST_F(HDCPProfileEventIarmTest, onDisplayConnectionChanged) EVENT_SUBSCRIBE(0, _T("onDisplayConnectionChanged"), _T("client.events"), message); - IARM_Bus_DSMgr_EventData_t eventData; - eventData.data.hdmi_hpd.event = dsDISPLAY_EVENT_CONNECTED; - dsHdmiEventHandler(IARM_BUS_DSMGR_NAME, IARM_BUS_DSMGR_EVENT_HDMI_HOTPLUG, &eventData, 0); + Plugin::HdcpProfileImplementation::_instance->OnDisplayHDMIHotPlug(dsDISPLAY_EVENT_CONNECTED); EXPECT_EQ(Core::ERROR_NONE, onDisplayConnectionChanged.Lock()); @@ -450,8 +425,6 @@ TEST_F(HDCPProfileEventIarmTest, onDisplayConnectionChanged) TEST_F(HDCPProfileEventIarmTest, onHdmiOutputHDCPStatusEvent) { - ASSERT_TRUE(dsHdmiEventHandler != nullptr); - Core::Event onDisplayConnectionChanged(false, true); NiceMock videoOutputPortMock; @@ -507,9 +480,7 @@ TEST_F(HDCPProfileEventIarmTest, onHdmiOutputHDCPStatusEvent) EVENT_SUBSCRIBE(0, _T("onDisplayConnectionChanged"), _T("client.events"), message); - IARM_Bus_DSMgr_EventData_t eventData; - eventData.data.hdmi_hdcp.hdcpStatus = dsDISPLAY_HDCPPROTOCOL_CHANGE; - dsHdmiEventHandler(IARM_BUS_DSMGR_NAME, IARM_BUS_DSMGR_EVENT_HDCP_STATUS, &eventData, 0); + Plugin::HdcpProfileImplementation::_instance->OnHDCPStatusChange(dsHDCP_STATUS_AUTHENTICATED); EXPECT_EQ(Core::ERROR_NONE, onDisplayConnectionChanged.Lock()); diff --git a/Tests/L1Tests/tests/test_HdmiCecSink.cpp b/Tests/L1Tests/tests/test_HdmiCecSink.cpp index 22df165c..c9d03879 100755 --- a/Tests/L1Tests/tests/test_HdmiCecSink.cpp +++ b/Tests/L1Tests/tests/test_HdmiCecSink.cpp @@ -34,6 +34,10 @@ #include "RfcApiMock.h" #include "ThunderPortability.h" #include "PowerManagerMock.h" +#include "ManagerMock.h" +#include "HostMock.h" +#include "HdmiInputMock.h" +#include "HdmiCecSinkImplementation.h" using namespace WPEFramework; using ::testing::NiceMock; @@ -67,6 +71,9 @@ namespace class HdmiCecSinkWOInitializeTest : public ::testing::Test { protected: IarmBusImplMock *p_iarmBusImplMock = nullptr ; + ManagerImplMock *p_managerImplMock = nullptr ; + HostImplMock *p_hostImplMock = nullptr ; + HdmiInputImplMock *p_hdmiInputImplMock = nullptr; ConnectionImplMock *p_connectionImplMock = nullptr ; MessageEncoderMock *p_messageEncoderMock = nullptr ; LibCCECImplMock *p_libCCECImplMock = nullptr ; @@ -88,6 +95,15 @@ class HdmiCecSinkWOInitializeTest : public ::testing::Test { p_iarmBusImplMock = new NiceMock ; IarmBus::setImpl(p_iarmBusImplMock); + p_managerImplMock = new NiceMock ; + device::Manager::setImpl(p_managerImplMock); + + p_hostImplMock = new NiceMock ; + device::Host::setImpl(p_hostImplMock); + + p_hdmiInputImplMock = new NiceMock ; + device::HdmiInput::setImpl(p_hdmiInputImplMock); + p_libCCECImplMock = new testing::NiceMock ; LibCCEC::setImpl(p_libCCECImplMock); @@ -121,15 +137,9 @@ class HdmiCecSinkWOInitializeTest : public ::testing::Test { ON_CALL(*p_messageEncoderMock, encode(::testing::Matcher(::testing::_))) .WillByDefault(::testing::ReturnRef(CECFrame::getInstance())); - ON_CALL(*p_iarmBusImplMock, IARM_Bus_RegisterEventHandler(::testing::_, ::testing::_, ::testing::_)) - .WillByDefault(::testing::Invoke( - [&](const char* ownerName, IARM_EventId_t eventId, IARM_EventHandler_t handler) { - if ((string(IARM_BUS_DSMGR_NAME) == string(ownerName)) && (eventId == IARM_BUS_DSMGR_EVENT_HDMI_IN_HOTPLUG)) { - EXPECT_TRUE(handler != nullptr); - dsHdmiEventHandler = handler; - } - return IARM_RESULT_SUCCESS; - })); + EXPECT_CALL(*p_managerImplMock, Initialize()) + .Times(::testing::AnyNumber()) + .WillRepeatedly(::testing::Return()); ON_CALL(*p_connectionImplMock, open()) .WillByDefault(::testing::Return()); @@ -144,6 +154,24 @@ class HdmiCecSinkWOInitializeTest : public ::testing::Test { delete p_iarmBusImplMock; p_iarmBusImplMock = nullptr; } + device::Manager::setImpl(nullptr); + if (p_managerImplMock != nullptr) + { + delete p_managerImplMock; + p_managerImplMock = nullptr; + } + device::Host::setImpl(nullptr); + if (p_hostImplMock != nullptr) + { + delete p_hostImplMock; + p_hostImplMock = nullptr; + } + device::HdmiInput::setImpl(nullptr); + if (p_hdmiInputImplMock != nullptr) + { + delete p_hdmiInputImplMock; + p_hdmiInputImplMock = nullptr; + } LibCCEC::setImpl(nullptr); if (p_libCCECImplMock != nullptr) { @@ -211,31 +239,23 @@ class HdmiCecSinkDsTest : public HdmiCecSinkTest { HdmiCecSinkDsTest(): HdmiCecSinkTest() { - ON_CALL(*p_iarmBusImplMock, IARM_Bus_Call) - .WillByDefault( - [](const char* ownerName, const char* methodName, void* arg, size_t argLen) { - if (strcmp(methodName, IARM_BUS_PWRMGR_API_GetPowerState) == 0) { - auto* param = static_cast(arg); - param->curState = IARM_BUS_PWRMGR_POWERSTATE_ON; - } - if (strcmp(methodName, IARM_BUS_DSMGR_API_dsHdmiInGetNumberOfInputs) == 0) { - auto* param = static_cast(arg); - param->result = dsERR_NONE; - param->numHdmiInputs = 3; - } - if (strcmp(methodName, IARM_BUS_DSMGR_API_dsHdmiInGetStatus) == 0) { - auto* param = static_cast(arg); - param->result = dsERR_NONE; - param->status.isPortConnected[1] = 1; - } - if (strcmp(methodName, IARM_BUS_DSMGR_API_dsGetHDMIARCPortId) == 0) { - auto* param = static_cast(arg); - param->portId = 1; - } - return IARM_RESULT_SUCCESS; - }); - - EXPECT_EQ(Core::ERROR_NONE, handler.Invoke(connection, _T("setEnabled"), _T("{\"enabled\": true}"), response)); + EXPECT_CALL(*p_hdmiInputImplMock, getNumberOfInputs()) + .WillRepeatedly(::testing::Return(3)); + + ON_CALL(*p_hdmiInputImplMock, isPortConnected(::testing::_)) + .WillByDefault(::testing::Invoke( + [](int8_t port) { + return port == 1? true : false; + })); + + ON_CALL(*p_hdmiInputImplMock, getHDMIARCPortId(::testing::_)) + .WillByDefault(::testing::Invoke( + [](int &portId) { + portId = 1; + return dsERR_NONE; + })); + + EXPECT_EQ(Core::ERROR_NONE, handler.Invoke(connection, _T("setEnabled"), _T("{\"enabled\": true}"), response)); EXPECT_EQ(response, string("{\"success\":true}")); } virtual ~HdmiCecSinkDsTest() override { @@ -459,15 +479,8 @@ TEST_F(HdmiCecSinkDsTest, sendKeyPressEvent) TEST_F(HdmiCecSinkInitializedEventDsTest, onHdmiOutputHDCPStatusEvent) { - ASSERT_TRUE(dsHdmiEventHandler != nullptr); - - IARM_Bus_DSMgr_EventData_t eventData; - eventData.data.hdmi_in_connect.port =dsHDMI_IN_PORT_1; - eventData.data.hdmi_in_connect.isPortConnected = true; - EVENT_SUBSCRIBE(0, _T("onDevicesChanged"), _T("client.events.onDevicesChanged"), message); - - dsHdmiEventHandler(IARM_BUS_DSMGR_NAME, IARM_BUS_DSMGR_EVENT_HDMI_IN_HOTPLUG, &eventData , 0); + Plugin::HdmiCecSinkImplementation::_instance->OnHdmiInEventHotPlug(dsHDMI_IN_PORT_1, true); EVENT_UNSUBSCRIBE(0, _T("onDevicesChanged"), _T("client.events.onDevicesChanged"), message); } diff --git a/Tests/L1Tests/tests/test_HdmiCecSource.cpp b/Tests/L1Tests/tests/test_HdmiCecSource.cpp index 3ae56adb..6ec43d33 100755 --- a/Tests/L1Tests/tests/test_HdmiCecSource.cpp +++ b/Tests/L1Tests/tests/test_HdmiCecSource.cpp @@ -342,29 +342,9 @@ class HdmiCecSourceTest : public ::testing::Test { .WillByDefault(::testing::Return()); ON_CALL(*p_connectionImplMock, addFrameListener(::testing::_)) .WillByDefault(::testing::Return()); - ON_CALL(*p_iarmBusImplMock, IARM_Bus_RegisterEventHandler(::testing::_, ::testing::_, ::testing::_)) - .WillByDefault(::testing::Invoke( - [&](const char* ownerName, IARM_EventId_t eventId, IARM_EventHandler_t handler) { - if ((string(IARM_BUS_CECMGR_NAME) == string(ownerName)) && (eventId == IARM_BUS_CECMGR_EVENT_DAEMON_INITIALIZED)) { - EXPECT_TRUE(handler != nullptr); - cecMgrEventHandler = handler; - } - if ((string(IARM_BUS_CECMGR_NAME) == string(ownerName)) && (eventId == IARM_BUS_CECMGR_EVENT_STATUS_UPDATED)) { - EXPECT_TRUE(handler != nullptr); - cecMgrEventHandler = handler; - } - if ((string(IARM_BUS_DSMGR_NAME) == string(ownerName)) && (eventId == IARM_BUS_DSMGR_EVENT_HDMI_HOTPLUG)) { - EXPECT_TRUE(handler != nullptr); - dsHdmiEventHandler = handler; - } - if ((string(IARM_BUS_PWRMGR_NAME) == string(ownerName)) && (eventId == IARM_BUS_PWRMGR_EVENT_MODECHANGED)) { - EXPECT_TRUE(handler != nullptr); - pwrMgrEventHandler = handler; - } - - return IARM_RESULT_SUCCESS; - })); - + EXPECT_CALL(*p_managerImplMock, Initialize()) + .Times(::testing::AnyNumber()) + .WillRepeatedly(::testing::Return()); } virtual ~HdmiCecSourceTest() override { @@ -1408,18 +1388,13 @@ TEST_F(HdmiCecSourceInitializedEventTest, hdmiEventHandler) iCounter ++; } - ASSERT_TRUE(dsHdmiEventHandler != nullptr); EXPECT_CALL(*p_hostImplMock, getDefaultVideoPortName()) .Times(1) .WillOnce(::testing::Return("TEST")); - - IARM_Bus_DSMgr_EventData_t eventData; - eventData.data.hdmi_hpd.event = 0; - EVENT_SUBSCRIBE(0, _T("onHdmiHotPlug"), _T("client.events.onHdmiHotPlug"), message); - dsHdmiEventHandler(IARM_BUS_DSMGR_NAME, IARM_BUS_DSMGR_EVENT_HDMI_HOTPLUG, &eventData , 0); + Plugin::HdmiCecSourceImplementation::_instance->OnDisplayHDMIHotPlug(dsDISPLAY_EVENT_CONNECTED); EVENT_UNSUBSCRIBE(0, _T("onHdmiHotPlug"), _T("client.events.onHdmiHotPlug"), message); }