From 6825b9d9c8bc49bc1fd144752e658cdf5225341b Mon Sep 17 00:00:00 2001 From: Shrinivas Kamath Date: Wed, 20 Aug 2025 11:29:21 +0000 Subject: [PATCH 001/103] RDKEMW-6161 devicesettings interface changes --- ds/audioOutputPort.cpp | 22 ++ ds/compositeIn.cpp | 25 +- ds/frontPanelConfig.cpp | 25 +- ds/hdmiIn.cpp | 27 +- ds/host.cpp | 70 +++- ds/include/audioOutputPort.hpp | 73 +++- ds/include/compositeIn.hpp | 34 +- .../displayConnectionChangeListener.hpp | 40 +- ds/include/frontPanelTextDisplay.hpp | 16 +- ds/include/hdmiIn.hpp | 65 +++- ds/include/host.hpp | 19 +- ds/include/videoDevice.hpp | 20 +- ds/include/videoOutputPort.hpp | 41 ++- ds/videoDevice.cpp | 26 +- ds/videoOutputPort.cpp | 28 +- rpc/include/dsMgrNtf.h | 345 ++++++++++++++++++ 16 files changed, 852 insertions(+), 24 deletions(-) create mode 100755 rpc/include/dsMgrNtf.h diff --git a/ds/audioOutputPort.cpp b/ds/audioOutputPort.cpp index e5c8fabc..1af09018 100644 --- a/ds/audioOutputPort.cpp +++ b/ds/audioOutputPort.cpp @@ -27,6 +27,7 @@ **/ + #include "audioEncoding.hpp" #include "audioCompression.hpp" #include "audioStereoMode.hpp" @@ -2001,9 +2002,30 @@ void AudioOutputPort::getHdmiArcPortId(int *portId) } +/** + * @fn void AudioOutputPort::Register(IEvent *listener) + * @brief This API is used to register the Events + * + * @return unint32_t + */ +uint32_t AudioOutputPort::Register(IEvent *listener) +{ + return 0; +} + +/** + * @fn void AudioOutputPort::UnRegister(IEvent *listener) + * @brief This API is used to UnRegister the Events + * + * @return unint32_t + */ +uint32_t AudioOutputPort::UnRegister(IEvent *listener) +{ + return 0; } +} /** @} */ /** @} */ diff --git a/ds/compositeIn.cpp b/ds/compositeIn.cpp index b126f3d3..0e7459b1 100644 --- a/ds/compositeIn.cpp +++ b/ds/compositeIn.cpp @@ -2,7 +2,7 @@ * If not stated otherwise in this file or this component's LICENSE file the * following copyright and licenses apply: * - * Copyright 2016 RDK Management + * Copyright 2025 RDK Management * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -270,8 +270,31 @@ void CompositeInput::scaleVideo (int32_t x, int32_t y, int32_t width, int32_t he } } + +/** + * @fn void CompositeInput::Register(IEvent *listener) + * @brief This API is used to register the Events + * + * @return unint32_t + */ +uint32_t CompositeInput::Register(IEvent *listener) +{ + return 0; } +/** + * @fn void CompositeInput::UnRegister(IEvent *listener) + * @brief This API is used to UnRegister the Events + * + * @return unint32_t + */ +uint32_t CompositeInput::UnRegister(IEvent *listener) +{ + return 0; +} + +} + /** @} */ /** @} */ diff --git a/ds/frontPanelConfig.cpp b/ds/frontPanelConfig.cpp index e20b0321..1c7a2cd8 100644 --- a/ds/frontPanelConfig.cpp +++ b/ds/frontPanelConfig.cpp @@ -2,7 +2,7 @@ * If not stated otherwise in this file or this component's LICENSE file the * following copyright and licenses apply: * - * Copyright 2016 RDK Management + * Copyright 2025 RDK Management * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -264,6 +264,29 @@ FrontPanelTextDisplay &FrontPanelConfig::getTextDisplay(const string &name) } +/** + * @fn void FrontPanelTextDisplay::Register(IEvent *listener) + * @brief This API is used to register the Events + * + * @return unint32_t + */ +uint32_t FrontPanelTextDisplay::Register(IEvent *listener) +{ + return 0; +} + + +/** + * @fn void FrontPanelTextDisplay::UnRegister(IEvent *listener) + * @brief This API is used to UnRegister the Events + * + * @return unint32_t + */ +uint32_t FrontPanelTextDisplay::UnRegister(IEvent *listener) +{ + return 0; +} + /** * @fn FrontPanelConfig::getColors() * @brief This API gets the list of colors supported by front panel indicators. diff --git a/ds/hdmiIn.cpp b/ds/hdmiIn.cpp index 18b2ac97..e2e65559 100755 --- a/ds/hdmiIn.cpp +++ b/ds/hdmiIn.cpp @@ -2,7 +2,7 @@ * If not stated otherwise in this file or this component's LICENSE file the * following copyright and licenses apply: * - * Copyright 2016 RDK Management + * Copyright 2025 RDK Management * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -678,6 +678,31 @@ void HdmiInput::getHdmiVersion (int iHdmiPort, dsHdmiMaxCapabilityVersion_t *cap printf ("%s:%d - HDMI Compatibility Version = %d\n", __PRETTY_FUNCTION__, __LINE__, *capversion); } + +/** + * @fn void HdmiInput::Register(IEvent *listener) + * @brief This API is used to register the Events + * + * @return unint32_t + */ +uint32_t HdmiInput::Register(IEvent *listener) +{ + return 0; +} + + +/** + * @fn void CompositeInput::UnRegister(IEvent *listener) + * @brief This API is used to UnRegister the Events + * + * @return unint32_t + */ +uint32_t HdmiInput::UnRegister(IEvent *listener) +{ + return 0; +} + + } diff --git a/ds/host.cpp b/ds/host.cpp index d621e479..9dc2e0a9 100644 --- a/ds/host.cpp +++ b/ds/host.cpp @@ -2,7 +2,7 @@ * If not stated otherwise in this file or this component's LICENSE file the * following copyright and licenses apply: * - * Copyright 2016 RDK Management + * Copyright 2025 RDK Management * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -241,7 +241,6 @@ namespace device } } - /** * @fn bool Host::setPowerMode(int mode) * @brief This API is used to change the power mode of the device. @@ -913,6 +912,73 @@ namespace device printf ("%s:%d - Set Audio Mixer levels for audio input: %d with volume = %d\n", __PRETTY_FUNCTION__, __LINE__,aInput, volume); } +/** + * @fn void Host::Register(IEvent *listener) + * @brief This API is used to register the Events + * + * @return unint32_t + */ +uint32_t Host::Register(IEvent *listener) +{ + return 0; +} + + +/** + * @fn void Host::UnRegister(IEvent *listener) + * @brief This API is used to UnRegister the Events + * + * @return unint32_t + */ +uint32_t Host::UnRegister(IEvent *listener) +{ + return 0; +} + +/** + * @fn void DisplayConnectionChangeListener::Register(IEvent *Evtnotification) + * @brief This API is used to register the Events + * + * @return unint32_t + */ +uint32_t DisplayConnectionChangeListener::Register(IEvent *listener) +{ + return 0; +} + +/** + * @fn void DisplayConnectionChangeListener::UnRegister(IEvent *Evtnotification) + * @brief This API is used to UnRegister the Events + * + * @return unint32_t + */ +uint32_t DisplayConnectionChangeListener::UnRegister(IEvent *listener) +{ + return 0; +} + +/** + * @fn void DisplayConnectionChangeListener::UnRegister(IDisplayHDMIHotPlugEvent *Evtnotification) + * @brief This API is used to UnRegister the Events + * + * @return unint32_t + */ +uint32_t DisplayConnectionChangeListener::Register(IDisplayHDMIHotPlugEvent *listener) +{ + return 0; +} + + +/** + * @fn void DisplayConnectionChangeListener::UnRegister(IEvent *Evtnotification) + * @brief This API is used to UnRegister the Events + * + * @return unint32_t + */ +uint32_t DisplayConnectionChangeListener::UnRegister(IDisplayHDMIHotPlugEvent *listener) +{ + return 0; +} } diff --git a/ds/include/audioOutputPort.hpp b/ds/include/audioOutputPort.hpp index 9dec5126..fad7b58b 100644 --- a/ds/include/audioOutputPort.hpp +++ b/ds/include/audioOutputPort.hpp @@ -2,7 +2,7 @@ * If not stated otherwise in this file or this component's LICENSE file the * following copyright and licenses apply: * - * Copyright 2016 RDK Management + * Copyright 2025 RDK Management * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -35,9 +35,8 @@ #include "list.hpp" #include "enumerable.hpp" #include "dsTypes.h" - #include "dsError.h" - +#include "dsMgrNtf.h" #include #include @@ -52,6 +51,9 @@ class AudioOutputPortType; class AudioOutputPortConfig; + + + /** * @class AudioOutputPort * @brief Class extending Enumerable to implement the audiooutputport interface. @@ -82,8 +84,73 @@ class AudioOutputPort : public Enumerable { bool _muted; //!< Method variable to check whether audio is muted or not. + + + public: + struct IEvent{ + + // @brief Associated Audio mixing changed + // @text onAssociatedAudioMixingChanged + // @param mixing: true or false + virtual void OnAssociatedAudioMixingChanged(bool mixing) { }; + + // @brief Audio Fader balance changed + // @text onAudioFaderControlChanged + // @param mixerBalance: applied mixer balance value + virtual void OnAudioFaderControlChanged(int mixerBalance) { }; + + // @brief Primary language for Audio changed + // @text onAudioPrimaryLanguageChanged + // @param primaryLanguage: current primary language for audio + virtual void OnAudioPrimaryLanguageChanged(const std::string& primaryLanguage) { }; + + // @brief Secondary language for Audio changed + // @text onAudioSecondaryLanguageChanged + // @param secondaryLanguage: current secondary language for audio + virtual void OnAudioSecondaryLanguageChanged(const std::string& secondaryLanguage) { }; + + // @brief Audio output hot plug event + // @text onAudioOutHotPlug + // @param portType: Type of audio port see AudioPortType + // @param uiPortNumber: The port number assigned by UI + // @param isPortConnected: true (connected) or false (not connected) + virtual void OnAudioOutHotPlug(AudioPortType portType, int uiPortNumber, bool isPortConnected) { }; + + + // @brief Dolby Atmos capabilities changed + // @text onDolbyAtmosCapabilitiesChanged + // @param atmosCapability: the dolby atmos capability + // @param status: true (available) or false (not available) + virtual void OnDolbyAtmosCapabilitiesChanged(DolbyAtmosCapability atmosCapability, bool status) { }; + + // @brief Audio port state changed + // @text onAudioPortStateChanged + // @param audioPortState: audio port state + virtual void OnAudioPortStateChanged(AudioPortState audioPortState) { }; + + // @brief Audio mode for the respective audio port - raised for every type of port + // @text onAudioModeEvent + // @param audioPortType: audio port type see AudioPortType + // @param audioMode: audio mode - see audioStereoMode + virtual void OnAudioModeEvent(AudioPortType audioPortType, AudioStereoMode audioStereoMode) { }; + + // @brief Audio level changed + // @text OnAudioLevelChangedEvent + // @param audioiLevel: audio level value + virtual void OnAudioLevelChangedEvent(int audioLevel) { }; + + // @brief Audio Output format changed + // @text onAudioFormatUpdate + // @param audioFormat: Type of audio format see AudioFormat + virtual void OnAudioFormatUpdate(AudioFormat audioFormat) { }; + + }; + + uint32_t Register(IEvent *listener); + uint32_t UnRegister(IEvent *listener); + static AudioOutputPort & getInstance(int id); static AudioOutputPort & getInstance(const std::string &name); diff --git a/ds/include/compositeIn.hpp b/ds/include/compositeIn.hpp index c0565658..ba097b82 100644 --- a/ds/include/compositeIn.hpp +++ b/ds/include/compositeIn.hpp @@ -1,8 +1,9 @@ + /* * If not stated otherwise in this file or this component's LICENSE file the * following copyright and licenses apply: * - * Copyright 2016 RDK Management + * Copyright 2025 RDK Management * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -49,6 +50,7 @@ #define _DS_COMPOSITEIN_HPP_ #include +#include "dsMgrNtf.h" /** * @file compositeIn.hpp @@ -70,6 +72,36 @@ class CompositeInput { public: + struct IEvent { + // @brief Composite In Hotplug event + // @text onCompositeInHotPlug + // @param port: Port of the hotplug + // @param isConnected: Is it connected (true) or not(false) + virtual void OnCompositeInHotPlug(CompositeInPort port, bool isConnected) { }; + + // @brief Composite In Signal status + // @text onCompositeInSignalStatus + // @param port: Port of the hotplug + // @param signalStatus: Signal status + virtual void OnCompositeInSignalStatus(CompositeInPort port, CompositeInSignalStatus signalStatus) { }; + + // @brief Composite In status + // @text onCompositeInStatus + // @param activePort: Active port + // @param isPresented: is it presented to user + virtual void OnCompositeInStatus(CompositeInPort activePort, bool isPresented) { }; + + + // @brief Composite In Video Mode Update + // @text OnCompositeInVideoModeUpdate + // @param activePort: Active port + // @param videoResolution: See DisplayVideoPortResolution + virtual void OnCompositeInVideoModeUpdate(CompositeInPort activePort, DisplayVideoPortResolution videoResolution) = 0; + }; + + uint32_t Register(IEvent *listener); + uint32_t UnRegister(IEvent *listener); + static CompositeInput & getInstance(); uint8_t getNumberOfInputs () const; diff --git a/ds/include/displayConnectionChangeListener.hpp b/ds/include/displayConnectionChangeListener.hpp index 736cfd04..15aaa650 100644 --- a/ds/include/displayConnectionChangeListener.hpp +++ b/ds/include/displayConnectionChangeListener.hpp @@ -1,8 +1,9 @@ + /* * If not stated otherwise in this file or this component's LICENSE file the * following copyright and licenses apply: * - * Copyright 2016 RDK Management + * Copyright 2025 RDK Management * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -17,8 +18,6 @@ * limitations under the License. */ - - /** * @defgroup devicesettings @@ -32,14 +31,47 @@ #define _DS_DISPLAYCONNECTIONCHANGELISTENER_H_ #include "videoOutputPort.hpp" +#include "dsMgrNtf.h" namespace device { class DisplayConnectionChangeListener { public: + + struct IDisplayHDMIHotPlugEvent{ + + // @brief Display HDMI Hot plug event + // @text onDisplayHDMIHotPlug + // @param displayEvent: DS_DISPLAY_EVENT_CONNECTED or DS_DISPLAY_EVENT_DISCONNECTED + virtual void OnDisplayHDMIHotPlug(DisplayEvent displayEvent) = 0; + }; + + uint32_t Register(IDisplayHDMIHotPlugEvent*listener); + uint32_t UnRegister(IDisplayHDMIHotPlugEvent *listener); + + + + struct IEvent{ + + // @brief Display RX Sense event + // @text onDisplayRxSense + // @param displayEvent: DS_DISPLAY_RXSENSE_ON or DS_DISPLAY_RXSENSE_OFF + virtual void OnDisplayRxSense(DisplayEvent displayEvent) = 0; + + // @brief Display HDCP Status + // @text OnDisplayHDCPStatus + virtual void OnDisplayHDCPStatus() = 0; + + }; + + uint32_t Register(IEvent *listener); + uint32_t UnRegister(IEvent *listener); + + DisplayConnectionChangeListener() {} virtual ~DisplayConnectionChangeListener() {} - virtual void displayConnectionChanged(VideoOutputPort &port, int newConnectionStatus) = 0; + virtual void displayConnectionChanged(VideoOutputPort &port, int newConnectionStatus) = 0; + }; } diff --git a/ds/include/frontPanelTextDisplay.hpp b/ds/include/frontPanelTextDisplay.hpp index 588a3352..4b9d015e 100644 --- a/ds/include/frontPanelTextDisplay.hpp +++ b/ds/include/frontPanelTextDisplay.hpp @@ -1,8 +1,9 @@ + /* * If not stated otherwise in this file or this component's LICENSE file the * following copyright and licenses apply: * - * Copyright 2016 RDK Management + * Copyright 2025 RDK Management * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -32,6 +33,7 @@ #include "dsConstant.hpp" #include "list" #include "frontPanelIndicator.hpp" +#include "dsMgrNtf.h" /** @@ -131,6 +133,18 @@ class FrontPanelTextDisplay : public FrontPanelIndicator { static const char * kPropertyBrightness; public: + + struct IEvent { + + // @brief On Front Panel display time format changed + // @text OnFPDTimeFormatChanged + // @param timeFormat: current time format 12 or 24 hour + virtual void OnFPDTimeFormatChanged(FPDTimeFormat timeFormat) { }; + }; + + uint32_t Register(IEvent *listener); + uint32_t UnRegister(IEvent *listener); + static const int kModeClock12Hr; //!< Indicates 12 hour time format. static const int kModeClock24Hr; //!< Indicates 24 hour time format. static const int kModeString; //!< Indicates text string. diff --git a/ds/include/hdmiIn.hpp b/ds/include/hdmiIn.hpp index eb2da3dc..e217fe18 100755 --- a/ds/include/hdmiIn.hpp +++ b/ds/include/hdmiIn.hpp @@ -2,7 +2,7 @@ * If not stated otherwise in this file or this component's LICENSE file the * following copyright and licenses apply: * - * Copyright 2016 RDK Management + * Copyright 2025 RDK Management * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -52,7 +52,7 @@ #include #include "dsTypes.h" - +#include "dsMgrNtf.h" /** * @file hdmiIn.hpp @@ -74,6 +74,67 @@ class HdmiInput { public: + + + struct IEvent { + + // @brief HDMI Event Hot Plug + // @text onHDMIInEventHotPlug + // @param port: port 0 or 1 et al + // @param isConnected: is it connected (true) or not (false) + virtual void OnHDMIInEventHotPlug(HDMIInPort port, bool isConnected) { }; + + // @brief HDMI Event Signal status + // @text OnHDMIInEventSignalStatus + // @param port: port 0 or 1 et al + // @param signalStatus: Signal Status + virtual void OnHDMIInEventSignalStatus(HDMIInPort port, HDMIInSignalStatus signalStatus) { }; + + // @brief HDMI Event Signal status + // @text onHDMIInEventStatus + // @param activePort: port 0 or 1 et al + // @param isPresented: is it presented or not + virtual void OnHDMIInEventStatus(HDMIInPort activePort, bool isPresented) { }; + + // @brief HDMI Video Mode update + // @text onHDMInVideoModeUpdate + // @param port: port 0 or 1 et al + // @param videoPortResolution: Video port resolution + virtual void OnHDMInVideoModeUpdate(HDMIInPort port, const HDMIVideoPortResolution& videoPortResolution) { }; + + // @brief HDMI ALLM (Auto Low Latency Mode) status + // @text onHDMInAllmStatus + // @param port: port 0 or 1 et al + // @param allmStatus: allm status + virtual void OnHDMInAllmStatus(HDMIInPort port, bool allmStatus) { }; + + // @brief HDMI Event AVI content type + // @text OnHDMInAVIContentType + // @param port: port 0 or 1 et al + // @param aviContentType: AVI content type + virtual void OnHDMInAVIContentType(HDMIInPort port, HDMIInAviContentType aviContentType) { }; + + // @brief HDMI Event AV Latency + // @text OnHDMInAVLatency + // @param audioDelay: audio delay (in millisecs) + // @param videoDelay: video delay (in millisecs) + virtual void OnHDMInAVLatency(int audioDelay, int videoDelay) { }; + + // @brief HDMI VRR status + // @text OnHDMInVRRStatus + // @param port: port 0 or 1 et al + // @param vrrType: VRR type + virtual void OnHDMInVRRStatus(HDMIInPort port, HDMIInVRRType vrrType) { }; + + // @brief Zoom settings changed + // @text OnZoomSettingsChanged + // @param zoomSetting: Currently applied zoom setting + virtual void OnZoomSettingsChanged(VideoZoom zoomSetting) { }; + }; + + uint32_t Register(IEvent *listener); + uint32_t UnRegister(IEvent *listener); + static HdmiInput & getInstance(); uint8_t getNumberOfInputs () const; diff --git a/ds/include/host.hpp b/ds/include/host.hpp index d14d42dc..bf5332fb 100644 --- a/ds/include/host.hpp +++ b/ds/include/host.hpp @@ -2,7 +2,7 @@ * If not stated otherwise in this file or this component's LICENSE file the * following copyright and licenses apply: * - * Copyright 2016 RDK Management + * Copyright 2025 RDK Management * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -17,8 +17,6 @@ * limitations under the License. */ - - /** * @defgroup devicesettings * @{ @@ -38,6 +36,7 @@ #include "videoDevice.hpp" #include "sleepMode.hpp" #include "list.hpp" +#include "dsMgrNtf.h" #include #include @@ -59,6 +58,20 @@ namespace device { */ class Host { public: + + struct IEvent{ + + // @brief Sleep mode changed + // @text onSleepModeChanged + // @param sleepMode: see SleepMode + virtual void OnSleepModeChanged(SleepMode sleepMode) { }; + + + }; + + uint32_t Register(IEvent *listener); + uint32_t UnRegister(IEvent *listener); + static const int kPowerOn; static const int kPowerOff; static const int kPowerStandby; diff --git a/ds/include/videoDevice.hpp b/ds/include/videoDevice.hpp index 61ec375d..506ad337 100644 --- a/ds/include/videoDevice.hpp +++ b/ds/include/videoDevice.hpp @@ -2,7 +2,7 @@ * If not stated otherwise in this file or this component's LICENSE file the * following copyright and licenses apply: * - * Copyright 2016 RDK Management + * Copyright 2025 RDK Management * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -18,7 +18,6 @@ */ - /** * @defgroup devicesettings * @{ @@ -36,6 +35,7 @@ #include "list.hpp" #include #include +#include "dsMgrNtf.h" /** @@ -60,6 +60,22 @@ class VideoDevice : public DSConstant { static const char * kPropertyDFC; public: + + struct IEvent { + // @brief Display Framerate Pre-change + // @text OnDisplayFrameratePreChange + // @param frameRate: PreChange framerate + virtual void OnDisplayFrameratePreChange(const std::string& frameRate) { }; + + // @brief Display Framerate Post-change + // @text OnDisplayFrameratePostChange + // @param frameRate: framerate post change + virtual void OnDisplayFrameratePostChange(const std::string& frameRate) { }; + }; + + uint32_t Register(IEvent *listener); + uint32_t UnRegister(IEvent *listener); + static VideoDevice & getInstance(int id); static VideoDevice & getInstance(const std::string &name); diff --git a/ds/include/videoOutputPort.hpp b/ds/include/videoOutputPort.hpp index a9b71ade..c0fcba68 100644 --- a/ds/include/videoOutputPort.hpp +++ b/ds/include/videoOutputPort.hpp @@ -1,8 +1,9 @@ + /* * If not stated otherwise in this file or this component's LICENSE file the * following copyright and licenses apply: * - * Copyright 2016 RDK Management + * Copyright 2025 RDK Management * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -38,6 +39,7 @@ #include #include "dsTypes.h" +#include "dsMgrNtf.h" /** * @file videoOutputPort.hpp @@ -77,6 +79,43 @@ class VideoOutputPort : public Enumerable { public: + struct ResolutionChange { + uint32_t width; + uint32_t height; + }; + + struct IEvent { + + // @brief On Resolution Pre changed + // @text OnResolutionPreChange + // @param resolution: resolution + virtual void OnResolutionPreChange(const ResolutionChange& resolution) { }; + + // @brief On Resolution Post change + // @text onResolutionPostChange + // @param resolution: resolution + virtual void OnResolutionPostChange(const ResolutionChange& resolution) { }; + + // @brief On HDCP Status change + // @text OnHDCPStatusChange + // @param hdcpStatus: HDCP Status + virtual void OnHDCPStatusChange(HDCPStatus hdcpStatus) { }; + + // @brief On Video Format update + // @text OnVideoFormatUpdate + // @param videoFormatHDR: Video format HDR standard + virtual void OnVideoFormatUpdate(HDRStandard videoFormatHDR) { }; + + // @brief HDCP Protocol version change + // @text OnHDCPProtocolChangeStatus + virtual void OnHDCPProtocolChangeStatus() { }; + + }; + + uint32_t Register(IEvent *listener); + uint32_t UnRegister(IEvent *listener); + + class Display { friend class VideoOutputPort; intptr_t _handle; diff --git a/ds/videoDevice.cpp b/ds/videoDevice.cpp index 37452a0c..8cee04c2 100644 --- a/ds/videoDevice.cpp +++ b/ds/videoDevice.cpp @@ -2,7 +2,7 @@ * If not stated otherwise in this file or this component's LICENSE file the * following copyright and licenses apply: * - * Copyright 2016 RDK Management + * Copyright 2025 RDK Management * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -332,6 +332,30 @@ int VideoDevice::getCurrentDisframerate(char *framerate) const return 0; } + +/** + * @fn void VideoDevice::Register(IEvent *listener) + * @brief This API is used to register the Events + * + * @return unint32_t + */ +uint32_t VideoDevice::Register(IEvent *listener) +{ + return 0; +} + + +/** + * @fn void VideoDevice::UnRegister(IEvent *listener) + * @brief This API is used to UnRegister the Events + * + * @return unint32_t + */ +uint32_t VideoDevice::UnRegister(IEvent *listener) +{ + return 0; +} + } /** @} */ diff --git a/ds/videoOutputPort.cpp b/ds/videoOutputPort.cpp index 5445e0dd..02924c2e 100644 --- a/ds/videoOutputPort.cpp +++ b/ds/videoOutputPort.cpp @@ -2,7 +2,7 @@ * If not stated otherwise in this file or this component's LICENSE file the * following copyright and licenses apply: * - * Copyright 2016 RDK Management + * Copyright 2025 RDK Management * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -949,6 +949,32 @@ void VideoOutputPort::Display::setAVIScanInformation(dsAVIScanInformation_t scan } } + +/** + * @fn void VideoOutputPort::Register(IEvent *listener) + * @brief This API is used to register the Events + * + * @return unint32_t + */ +uint32_t VideoOutputPort::Register(IEvent *listener) +{ + return 0; +} + + +/** + * @fn void VideoOutputPort::UnRegister(IEvent *listener) + * @brief This API is used to UnRegister the Events + * + * @return unint32_t + */ +uint32_t VideoOutputPort::UnRegister(IEvent *listener) +{ + return 0; +} + + + } /** @} */ //End of Doxygen tag diff --git a/rpc/include/dsMgrNtf.h b/rpc/include/dsMgrNtf.h new file mode 100755 index 00000000..c2762aa4 --- /dev/null +++ b/rpc/include/dsMgrNtf.h @@ -0,0 +1,345 @@ +/* + * If not stated otherwise in this file or this component's LICENSE file the + * following copyright and licenses apply: + * + * Copyright 2025 RDK Management + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. +*/ + + + +/** +* @defgroup devicesettings +* @{ +* @defgroup rpc +* @{ +**/ + + +#ifndef RPDSMGRNTF_H_ +#define RPDSMGRNTF_H_ + +#ifdef __cplusplus +extern "C" { +#endif + + +typedef enum _AudioPortState { + AUDIO_PORT_STATE_UNKNOWN = 0, + AUDIO_PORT_STATE_UNINITIALIZED = 1, + AUDIO_PORT_STATE_INITIALIZED = 2 +}AudioPortState; + + +typedef enum _AudioPortType { + AUDIO_PORT_TYPE_LR = 0, + AUDIO_PORT_TYPE_HDMI = 1, + AUDIO_PORT_TYPE_SPDIF = 2, + AUDIO_PORT_TYPE_SPEAKER = 3, + AUDIO_PORT_TYPE_HDMIARC = 4, + AUDIO_PORT_TYPE_HEADPHONE = 5, + AUDIO_PORT_TYPE_MAX = 6 + }AudioPortType; + +typedef enum _DolbyAtmosCapability { + AUDIO_DOLBYATMOS_NOT_SUPPORTED = 0, + AUDIO_DOLBYATMOS_DDPLUS_STREAM = 1, + AUDIO_DOLBYATMOS_ATMOS_METADATA = 2, + AUDIO_DOLBYATMOS_MAX = 3 + }DolbyAtmosCapability; + + +typedef enum _AudioStereoMode { + AUDIO_STEREO_UNKNOWN = 0, + AUDIO_STEREO_MONO = 1, + AUDIO_STEREO_STEREO = 2, + AUDIO_STEREO_SURROUND = 3, + AUDIO_STEREO_PASSTHROUGH = 4, + AUDIO_STEREO_DD = 5, + AUDIO_STEREO_DDPLUS = 6, + AUDIO_STEREO_MAX = 7 + }AudioStereoMode; + +typedef enum _AudioFormat { + AUDIO_FORMAT_NONE = 0, + AUDIO_FORMAT_PCM = 1, + AUDIO_FORMAT_DOLBY_AC3 = 2, + AUDIO_FORMAT_DOLBY_EAC3 = 3, + AUDIO_FORMAT_DOLBY_AC4 = 4, + AUDIO_FORMAT_DOLBY_MAT = 5, + AUDIO_FORMAT_DOLBY_TRUEHD = 6, + AUDIO_FORMAT_DOLBY_EAC3_ATMOS = 7, + AUDIO_FORMAT_DOLBY_TRUEHD_ATMOS = 8, + AUDIO_FORMAT_DOLBY_MAT_ATMOS = 0, + AUDIO_FORMAT_DOLBY_AC4_ATMOS = 10, + AUDIO_FORMAT_AAC = 11, + AUDIO_FORMAT_VORBIS = 12, + AUDIO_FORMAT_WMA = 13, + AUDIO_FORMAT_UNKNOWN = 14, + AUDIO_FORMAT_MAX = 15 + }AudioFormat; + + +typedef enum _HDMIInPort { + DS_HDMI_IN_PORT_NONE = -1, + DS_HDMI_IN_PORT_0 = 0, + DS_HDMI_IN_PORT_1 = 1, + DS_HDMI_IN_PORT_2 = 2, + DS_HDMI_IN_PORT_3 = 3, + DS_HDMI_IN_PORT_4 = 4, + DS_HDMI_IN_PORT_MAX = 5 + }HDMIInPort; + + + typedef enum _VideoZoom{ + DS_VIDEO_DEVICE_ZOOM_UNKNOWN = -1, + DS_VIDEO_DEVICE_ZOOM_NONE = 0, + DS_VIDEO_DEVICE_ZOOM_FULL = 1, + DS_VIDEO_DEVICE_ZOOM_LB_16_9 = 2, + DS_VIDEO_DEVICE_ZOOM_LB_14_9 = 3, + DS_VIDEO_DEVICE_ZOOM_CCO = 4, + DS_VIDEO_DEVICE_ZOOM_PAN_SCAN = 5, + DS_VIDEO_DEVICE_ZOOM_LB_2_21_1_ON_4_3 = 6, + DS_VIDEO_DEVICE_ZOOM_LB_2_21_1_ON_16_9 = 7, + DS_VIDEO_DEVICE_ZOOM_PLATFORM = 8, + DS_VIDEO_DEVICE_ZOOM_16_9_ZOOM = 9, + DS_VIDEO_DEVICE_ZOOM_PILLARBOX_4_3 = 10, + DS_VIDEO_DEVICE_ZOOM_WIDE_4_3 = 11, + DS_VIDEO_DEVICE_ZOOM_MAX = 12 + }VideoZoom; + + +typedef enum _HDMIInVRRType{ + DS_HDMIIN_VRR_NONE = 0, + DS_HDMIIN_HDMI_VRR = 1, + DS_HDMIIN_AMD_FREESYNC = 2, + DS_HDMIIN_AMD_FREESYNC_PREMIUM = 3, + DS_HDMIIN_AMD_FREESYNC_PREMIUM_PRO = 4 + }HDMIInVRRType; + +typedef enum _HDMIInAviContentType { + DS_HDMIIN_AVICONTENT_TYPE_GRAPHICS =0, + DS_HDMIIN_AVICONTENT_TYPE_PHOTO =1, + DS_HDMIIN_AVICONTENT_TYPE_CINEMA =2, + DS_HDMIIN_AVICONTENT_TYPE_GAME =3, + DS_HDMIIN_AVICONTENT_TYPE_NOT_SIGNALLED =4, + DS_HDMIIN_AVICONTENT_TYPE_MAX =5 + }HDMIInAviContentType; + + +typedef enum _HDMIInTVResolution { + DS_HDMIIN_RESOLUTION_480I = 0x000001, + DS_HDMIIN_RESOLUTION_480P = 0x000002, + DS_HDMIIN_RESOLUTION_576I = 0x000004, + DS_HDMIIN_RESOLUTION_576P = 0x000008, + DS_HDMIIN_RESOLUTION_576P50 = 0x000010, + DS_HDMIIN_RESOLUTION_720P = 0x000020, + DS_HDMIIN_RESOLUTION_720P50 = 0x000040, + DS_HDMIIN_RESOLUTION_1080I = 0x000080, + DS_HDMIIN_RESOLUTION_1080P = 0x000100, + DS_HDMIIN_RESOLUTION_1080P24 = 0x000200, + DS_HDMIIN_RESOLUTION_1080I25 = 0x000400, + DS_HDMIIN_RESOLUTION_1080P30 = 0x001000, + DS_HDMIIN_RESOLUTION_1080I50 = 0x002000, + DS_HDMIIN_RESOLUTION_1080P50 = 0x004000, + DS_HDMIIN_RESOLUTION_1080P60 = 0x008000, + DS_HDMIIN_RESOLUTION_2160P24 = 0x010000, + DS_HDMIIN_RESOLUTION_2160P25 = 0x020000, + DS_HDMIIN_RESOLUTION_2160P30 = 0x040000, + DS_HDMIIN_RESOLUTION_2160P50 = 0x080000, + DS_HDMIIN_RESOLUTION_2160P60 = 0x100000 + }HDMIInTVResolution; + +typedef enum _HDMIVideoAspectRatio { + DS_HDMIIN_ASPECT_RATIO_UNKNOWN = 0 /* @text Video Aspect Ratio UNKNOWN */, + DS_HDMIIN_ASPECT_RATIO_4X3 = 1 /* @text Video Aspect Ratio 4X3 */, + DS_HDMIIN_ASPECT_RATIO_16x9 = 2 /* @text Video Aspect Ratio 16x9 */ + }HDMIVideoAspectRatio; + +typedef enum _HDMIInVideoStereoScopicMode{ + DS_HDMIIN_SSMODE_UNKNOWN = 0, + DS_HDMIIN_SSMODE_2D = 1, + DS_HDMIIN_SSMODE_3D_SIDE_BY_SIDE = 2, + DS_HDMIIN_SSMODE_3D_TOP_AND_BOTTOM = 3 + }HDMIInVideoStereoScopicMode; + + typedef enum HDMIInVideoFrameRate { + DS_HDMIIN_FRAMERATE_UNKNOWN = 0, + DS_HDMIIN_FRAMERATE_24 = 1, + DS_HDMIIN_FRAMERATE_25 = 2, + DS_HDMIIN_FRAMERATE_30 = 3, + DS_HDMIIN_FRAMERATE_60 = 4, + DS_HDMIIN_FRAMERATE_23_98 = 5, + DS_HDMIIN_FRAMERATE_29_97 = 6, + DS_HDMIIN_FRAMERATE_50 = 7, + DS_HDMIIN_FRAMERATE_59_94 = 8 + }HDMIInVideoFrameRate; + +typedef struct _HDMIVideoPortResolution { + std::string name; + HDMIInTVResolution pixelResolution; + HDMIVideoAspectRatio aspectRatio; + HDMIInVideoStereoScopicMode stereoScopicMode; + HDMIInVideoFrameRate frameRate; + bool interlaced; + }HDMIVideoPortResolution; + + +typedef enum _HDMIInSignalStatus{ + DS_HDMI_IN_SIGNAL_STATUS_NONE = -1, + DS_HDMI_IN_SIGNAL_STATUS_NOSIGNAL = 0, + DS_HDMI_IN_SIGNAL_STATUS_UNSTABLE = 1, + DS_HDMI_IN_SIGNAL_STATUS_NOTSUPPORTED = 2, + DS_HDMI_IN_SIGNAL_STATUS_STABLE = 3, + DS_HDMI_IN_SIGNAL_STATUS_MAX = 4 + }HDMIInSignalStatus; + + + typedef enum _SleepMode { + DS_HOST_SLEEPMODE_LIGHT = 0, + DS_HOST_SLEEPMODE_DEEP = 1, + DS_HOST_SLEEPMODE_MAX = 2 + }SleepMode; + + + typedef enum _CompositeInPort{ + DS_COMPOSITE_IN_PORT_NONE = -1 /* @text UNKNOWN */, + DS_COMPOSITE_IN_PORT_0 = 0 /* @text CompositeIn Port 0 */, + DS_COMPOSITE_IN_PORT_1 = 1 /* @text CompositeIn Port 1 */, + DS_COMPOSITE_IN_PORT_MAX = 2 /* @text CompositeIn Port MAX */, + }CompositeInPort; + + +typedef enum _CompositeInSignalStatus{ + DS_COMPOSITE_IN_SIGNAL_STATUS_NONE = -1 /* @text Signal Status None */, + DS_COMPOSITE_IN_SIGNAL_STATUS_NOSIGNAL = 0 /* @text Signal Status No Signal */, + DS_COMPOSITE_IN_SIGNAL_STATUS_UNSTABLE = 1 /* @text Signal Status Unstable */, + DS_COMPOSITE_IN_SIGNAL_STATUS_NOTSUPPORTED = 2 /* @text Signal Status Not supported */, + DS_COMPOSITE_IN_SIGNAL_STATUS_STABLE = 3 /* @text Signal Status Stable */, + DS_COMPOSITE_IN_SIGNAL_STATUS_MAX = 4 /* @test Signal Status MAX */ + }CompositeInSignalStatus; + +typedef enum _DisplayTVResolution{ + DS_DISPLAY_RESOLUTION_480I = 0x000001, + DS_DISPLAY_RESOLUTION_480P = 0x000002, + DS_DISPLAY_RESOLUTION_576I = 0x000004, + DS_DISPLAY_RESOLUTION_576P = 0x000008, + DS_DISPLAY_RESOLUTION_576P50 = 0x000010, + DS_DISPLAY_RESOLUTION_720P = 0x000020, + DS_DISPLAY_RESOLUTION_720P50 = 0x000040, + DS_DISPLAY_RESOLUTION_1080I = 0x000080, + DS_DISPLAY_RESOLUTION_1080P = 0x000100, + DS_DISPLAY_RESOLUTION_1080P24 = 0x000200, + DS_DISPLAY_RESOLUTION_1080I25 = 0x000400, + DS_DISPLAY_RESOLUTION_1080P30 = 0x001000, + DS_DISPLAY_RESOLUTION_1080I50 = 0x002000, + DS_DISPLAY_RESOLUTION_1080P50 = 0x004000, + DS_DISPLAY_RESOLUTION_1080P60 = 0x008000, + DS_DISPLAY_RESOLUTION_2160P24 = 0x010000, + DS_DISPLAY_RESOLUTION_2160P25 = 0x020000, + DS_DISPLAY_RESOLUTION_2160P30 = 0x040000, + DS_DISPLAY_RESOLUTION_2160P50 = 0x080000, + DS_DISPLAY_RESOLUTION_2160P60 = 0x100000 + }DisplayTVResolution; + + +typedef enum _DisplayVideoAspectRatio{ + DS_DISPLAY_ASPECT_RATIO_UNKNOWN = 0 /* @text Video Aspect Ratio UNKNOWN */, + DS_DISPLAY_ASPECT_RATIO_4X3 = 1 /* @text Video Aspect Ratio 4X3 */, + DS_DISPLAY_ASPECT_RATIO_16x9 = 2 /* @text Video Aspect Ratio 16x9 */ + }DisplayVideoAspectRatio; + +typedef enum _DisplayInVideoStereoScopicMode{ + DS_DISPLAY_SSMODE_UNKNOWN = 0, + DS_DISPLAY_SSMODE_2D = 1, + DS_DISPLAY_SSMODE_3D_SIDE_BY_SIDE = 2, + DS_DISPLAY_SSMODE_3D_TOP_AND_BOTTOM = 3 + }DisplayInVideoStereoScopicMode; + + typedef enum _DisplayInVideoFrameRate { + DS_DISPLAY_FRAMERATE_UNKNOWN = 0, + DS_DISPLAY_FRAMERATE_24 = 1, + DS_DISPLAY_FRAMERATE_25 = 2, + DS_DISPLAY_FRAMERATE_30 = 3, + DS_DISPLAY_FRAMERATE_60 = 4, + DS_DISPLAY_FRAMERATE_23_98 = 5, + DS_DISPLAY_FRAMERATE_29_97 = 6, + DS_DISPLAY_FRAMERATE_50 = 7, + DS_DISPLAY_FRAMERATE_59_94 = 8, + DS_DISPLAY_FRAMERATE_100 = 9, + DS_DISPLAY_FRAMERATE_119_88 = 10, + DS_DISPLAY_FRAMERATE_120 = 11, + DS_DISPLAY_FRAMERATE_200 = 12, + DS_DISPLAY_FRAMERATE_239_76 = 13, + DS_DISPLAY_FRAMERATE_240 = 14, + DS_DISPLAY_FRAMERATE_MAX = 15 + }DisplayInVideoFrameRate; + + typedef struct _DisplayVideoPortResolution { + std::string name; + DisplayTVResolution pixelResolution; + DisplayVideoAspectRatio aspectRatio; + DisplayInVideoStereoScopicMode stereoScopicMode; + DisplayInVideoFrameRate frameRate; + bool interlaced; + }DisplayVideoPortResolution; + + + typedef enum _DisplayEvent { + DS_DISPLAY_EVENT_CONNECTED =0, ///< Display connected event + DS_DISPLAY_EVENT_DISCONNECTED =1, ///< Display disconnected event + DS_DISPLAY_RXSENSE_ON =2, ///< Rx Sense ON event + DS_DISPLAY_RXSENSE_OFF =3, ///< Rx Sense OFF event + DS_DISPLAY_HDCPPROTOCOL_CHANGE=4, ///< HDCP Protocol Version Change event + DS_DISPLAY_EVENT_MAX ///< Display max event + }DisplayEvent; + + + typedef enum _FPDTimeFormat{ + DS_FPD_TIMEFORMAT_12_HOUR = 0, + DS_FPD_TIMEFORMAT_24_HOUR = 1, + DS_FPD_TIMEFORMAT_MAX = 2 + }FPDTimeFormat; + + typedef enum _HDCPStatus{ + DS_HDCP_STATUS_UNPOWERED = 0, + DS_HDCP_STATUS_UNAUTHENTICATED = 1, + DS_HDCP_STATUS_AUTHENTICATED = 2, + DS_HDCP_STATUS_AUTHENTICATIONFAILURE = 3, + DS_HDCP_STATUS_INPROGRESS = 4, + DS_HDCP_STATUS_PORTDISABLED = 5, + DS_HDCP_STATUS_MAX = 6 + }HDCPStatus; + + typedef enum _HDRStandard{ + DS_HDRSTANDARD_NONE = 0x0, + DS_HDRSTANDARD_HDR10 = 0x01, + DS_HDRSTANDARD_HLG = 0x02, + DS_HDRSTANDARD_DOLBYVISION = 0x04, + DS_HDRSTANDARD_TECHNICOLORPRIME = 0x08, + DS_HDRSTANDARD_HDR10PLUS = 0x10, + DS_HDRSTANDARD_SDR = 0x20, + DS_HDRSTANDARD_INVALID = 0x80 + }HDRStandard; + + +#ifdef __cplusplus +} +#endif + +#endif /* RPDSMGRNTF_H_ */ + + +/** @} */ +/** @} */ From f9d38b7b1469b3247c55a86ac63daa87fedb9d31 Mon Sep 17 00:00:00 2001 From: Shrinivas Kamath Date: Thu, 21 Aug 2025 09:21:27 +0000 Subject: [PATCH 002/103] wip --- .gitignore | 47 ++++++++++++++++ ds/iarm/VideoDevicePriv.cpp | 104 ++++++++++++++++++++++++++++++++++++ ds/iarm/VideoDevicePriv.h | 62 +++++++++++++++++++++ ds/include/videoDevice.hpp | 17 ++++-- ds/videoDevice.cpp | 42 ++++++--------- 5 files changed, 242 insertions(+), 30 deletions(-) create mode 100644 ds/iarm/VideoDevicePriv.cpp create mode 100644 ds/iarm/VideoDevicePriv.h diff --git a/.gitignore b/.gitignore index ec702b33..d33eb219 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,49 @@ /install/bin/TODO /install/lib/TODO + +*.o +*.so +# test samples +sample/IsOutputHDR +sample/enableSurroundDecoder +sample/getAudioConfig +sample/getCPUTemp +sample/getDSHalVersion +sample/getDisplayAttributes +sample/getDrmHdmiStatus +sample/getEDIDBytes +sample/getFPBrightness +sample/getHDCPStatus +sample/getHdmiPreference +sample/getHostEDID +sample/getSocIDFromSDK +sample/getVideoOutputPorts +sample/getZoomSettings +sample/hdmiIn +sample/isDisplayConnected +sample/ms12ProfileTest +sample/powerModeTest +sample/resetOutputToSDR +sample/setARCSAD +sample/setAudioDucking +sample/setAudioEnable +sample/setAudioGain +sample/setAudioLevel +sample/setAudioMode +sample/setAudioMute +sample/setBassEnhancer +sample/setDRCMode +sample/setDialogEnhancement +sample/setFPBrightness +sample/setFPColor +sample/setFPColorRGB +sample/setFPTextDisplay +sample/setFPTextTimeFormat +sample/setGraphicEQ +sample/setHdmiPreference +sample/setMISteering +sample/setResolution +sample/setSurroundVirtualizer +sample/setVolumeLeveller +sample/setZoomSettings +sample/testFrontPanel diff --git a/ds/iarm/VideoDevicePriv.cpp b/ds/iarm/VideoDevicePriv.cpp new file mode 100644 index 00000000..27de31ea --- /dev/null +++ b/ds/iarm/VideoDevicePriv.cpp @@ -0,0 +1,104 @@ +/* + * If not stated otherwise in this file or this component's LICENSE file the + * following copyright and licenses apply: + * + * Copyright 2016 2025 Management + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "dsMgr.h" +#include "dsRpc.h" +#include "dslogger.h" + +#include "iarm/VideoDevicePriv.h" + +using IEvent = device::VideoDevice::IEvent; + +namespace iarm { + +VideoDevicePriv::EventHandlerMapping VideoDevicePriv::eventHandlers[] = { + {IARM_BUS_DSMGR_EVENT_DISPLAY_FRAMRATE_PRECHANGE, + &VideoDevicePriv::OnDisplayFrameratePreChangeHandler}, + {IARM_BUS_DSMGR_EVENT_DISPLAY_FRAMRATE_POSTCHANGE, + &VideoDevicePriv::OnDisplayFrameratePostChangeHandler}, +}; + +const char *VideoDevicePriv::to_string(IARM_EventId_t eventId) { + switch (eventId) { + case IARM_BUS_DSMGR_EVENT_DISPLAY_FRAMRATE_PRECHANGE: + return "IARM_BUS_DSMGR_EVENT_DISPLAY_FRAMRATE_PRECHANGE"; + case IARM_BUS_DSMGR_EVENT_DISPLAY_FRAMRATE_POSTCHANGE: + return "IARM_BUS_DSMGR_EVENT_DISPLAY_FRAMRATE_POSTCHANGE"; + default: + return "Unknown Event"; + } +} + +VideoDevicePriv::VideoDevicePriv() {} + +VideoDevicePriv::~VideoDevicePriv() {} + +void VideoDevicePriv::SubscribeForIarmEvents() { + IARM_Result_t status = IARM_RESULT_INVALID_STATE; + for (const auto &eh : eventHandlers) { + status = IARM_Bus_RegisterEventHandler(IARM_BUS_DSMGR_NAME, eh.eventId, + eh.handler); + if (IARM_RESULT_SUCCESS != status) { + INT_ERROR("Failed to register event handler for %s, status: %d", + to_string(eh.eventId), status); + } + } +} + +VideoDevicePriv::OnDisplayFrameratePreChangeHandler(const char *, + IARM_EventId_t eventId, + void *data, size_t len) { + Dispatch([&](IEvent *listener) { + listener->OnDisplayFrameratePreChangeHandler(frameRate); + }); +} + +uint32_t VideoDevicePriv::Register(IEvent *listener) { + { + std::lock_guard lock(s_mutex); + auto it = std::find(s_listeners.begin(), s_listeners.end(), listener); + + bool found = (it != s_listeners.end()); + + if (found) { + // Listener already registered, no need to add again + return 0; + } + + if (it != s_listeners.end()) { + // Listener already registered, no need to add again + return 0; + } + s_listeners.push_back(listener); + } + return 0; +} + +uint32_t VideoDevicePriv::UnRegister(IEvent *listener) { + auto it = std::find(s_listeners.begin(), s_listeners.end(), listener); + + if (it != s_listeners.end()) { + s_listeners.erase(it); + } else { + } + + return 0; +} + +} // namespace iarm diff --git a/ds/iarm/VideoDevicePriv.h b/ds/iarm/VideoDevicePriv.h new file mode 100644 index 00000000..9cbf54aa --- /dev/null +++ b/ds/iarm/VideoDevicePriv.h @@ -0,0 +1,62 @@ +/* + * If not stated otherwise in this file or this component's LICENSE file the + * following copyright and licenses apply: + * + * Copyright 2016 2025 Management + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. +*/ +#pragma once + +#include +#include + +#include "videoDevice.hpp" + +#include "libIBus.h" + + +namespace iarm { + +class VideoDevicePriv { + using IEvent = device::VideoDevice::IEvent; + +public: + VideoDevicePriv(); + uint32_t Register(IEvent *listener); + uint32_t UnRegister(IEvent *listener); + +private: + static void OnDisplayFrameratePreChangeHandler(const std::string& frameRate); + static void OnDisplayFrameratePostChangeHandler(const std::string& frameRate); + + + template + static void Dispatch(F&& fn); + + struct EventHandlerMapping { + IARM_EventId_t eventId; + IARM_EventHandler_t handler; + }; + + static EventHandlerMapping eventHandlers[]; + + // util methods + const char* to_string(IARM_EventId_t eventId); + +private: + static std::mutex s_mutex; + static std::list s_listeners; +}; + +} // namespace iarm diff --git a/ds/include/videoDevice.hpp b/ds/include/videoDevice.hpp index 506ad337..fbca4844 100644 --- a/ds/include/videoDevice.hpp +++ b/ds/include/videoDevice.hpp @@ -29,14 +29,18 @@ #ifndef _DS_VIDEODEVICE_HPP_ #define _DS_VIDEODEVICE_HPP_ +#include +#include +#include + #include "dsConstant.hpp" #include "videoDFC.hpp" #include "videoResolution.hpp" #include "list.hpp" -#include -#include #include "dsMgrNtf.h" +namespace iarm { class VideoDevicePriv; } +using VideoDevicePriv = iarm::VideoDevicePriv; /** * @file videoDevice.hpp @@ -51,13 +55,16 @@ namespace device { * @ingroup devicesettingsclass */ class VideoDevice : public DSConstant { + std::unique_ptr _impl; intptr_t _handle; int _dfc; //!< Decoder format converter variable. List _supportedDFCs; //!< List of supported dfc's. + void setDFC(const VideoDFC & dfc); void setDFC(); static const char * kPropertyDFC; + VideoDevicePriv& impl(); public: @@ -65,14 +72,14 @@ class VideoDevice : public DSConstant { // @brief Display Framerate Pre-change // @text OnDisplayFrameratePreChange // @param frameRate: PreChange framerate - virtual void OnDisplayFrameratePreChange(const std::string& frameRate) { }; + virtual void OnDisplayFrameratePreChange(const std::string& frameRate) = 0; // @brief Display Framerate Post-change // @text OnDisplayFrameratePostChange // @param frameRate: framerate post change - virtual void OnDisplayFrameratePostChange(const std::string& frameRate) { }; + virtual void OnDisplayFrameratePostChange(const std::string& frameRate) = 0; }; - + uint32_t Register(IEvent *listener); uint32_t UnRegister(IEvent *listener); diff --git a/ds/videoDevice.cpp b/ds/videoDevice.cpp index 8cee04c2..bc079df6 100644 --- a/ds/videoDevice.cpp +++ b/ds/videoDevice.cpp @@ -46,6 +46,8 @@ #include "safec_lib.h" +#include "iarm/VideoDevicePriv.h" + /** * @file videoDevice.cpp * @brief Video Device is also called "Decoder". @@ -298,62 +300,52 @@ int VideoDevice::forceDisableHDRSupport(bool disable) int VideoDevice::setFRFMode(int frfmode) const { - dsError_t ret; - ret = dsSetFRFMode(_handle, frfmode); + dsSetFRFMode(_handle, frfmode); return 0; } int VideoDevice::getFRFMode(int *frfmode) const { - dsError_t ret; int frfmode1; - ret = dsGetFRFMode(_handle, &frfmode1); + dsGetFRFMode(_handle, &frfmode1); *frfmode = frfmode1; return 0; } int VideoDevice::setDisplayframerate(const char *framerate) const { - dsError_t ret; char buf[20] = {0}; strncpy(buf, framerate, sizeof(buf)-1); - ret = dsSetDisplayframerate(_handle, buf); + dsSetDisplayframerate(_handle, buf); return 0; } int VideoDevice::getCurrentDisframerate(char *framerate) const { - dsError_t ret; char getframerate[20]; - ret = dsGetCurrentDisplayframerate(_handle, getframerate); - strncpy(framerate, getframerate, 20); + dsGetCurrentDisplayframerate(_handle, getframerate); + strncpy(framerate, getframerate, 20); - return 0; + return 0; } +VideoDevicePriv& VideoDevice::impl() +{ + if (!_impl) { + _impl = std::unique_ptr(new VideoDevicePriv()); + } + return *_impl; +} -/** - * @fn void VideoDevice::Register(IEvent *listener) - * @brief This API is used to register the Events - * - * @return unint32_t - */ uint32_t VideoDevice::Register(IEvent *listener) { - return 0; + return impl().Register(listener); } - -/** - * @fn void VideoDevice::UnRegister(IEvent *listener) - * @brief This API is used to UnRegister the Events - * - * @return unint32_t - */ uint32_t VideoDevice::UnRegister(IEvent *listener) { - return 0; + return impl().UnRegister(listener); } } From b1d3e6fda66be11771e77cc5d9a20c407c7ed06f Mon Sep 17 00:00:00 2001 From: Shrinivas Kamath Date: Thu, 21 Aug 2025 14:59:36 +0530 Subject: [PATCH 003/103] pc build done --- .gitignore | 3 +++ build_dependencies.sh | 6 +++--- cov_build.sh | 4 +++- rpc/srv/dsDisplay.c | 2 +- 4 files changed, 10 insertions(+), 5 deletions(-) mode change 100644 => 100755 build_dependencies.sh mode change 100644 => 100755 cov_build.sh diff --git a/.gitignore b/.gitignore index d33eb219..3eccd03c 100644 --- a/.gitignore +++ b/.gitignore @@ -47,3 +47,6 @@ sample/setSurroundVirtualizer sample/setVolumeLeveller sample/setZoomSettings sample/testFrontPanel + +.cache +compile_commands.json diff --git a/build_dependencies.sh b/build_dependencies.sh old mode 100644 new mode 100755 index 090f105a..c6debf9b --- a/build_dependencies.sh +++ b/build_dependencies.sh @@ -15,7 +15,7 @@ export NM=nm export RANLIB=ranlib export STRIP=strip -apt-get update && apt-get install -y libsoup-3.0 libcjson-dev libdbus-1-dev +sudo apt-get update && sudo apt-get install -y libsoup-3.0 libcjson-dev libdbus-1-dev git wget autoconf automake libtool libcurl4-openssl-dev mkdir -p /usr/local/include/wdmp-c cp $WORKDIR/stubs/wdmp-c.h /usr/local/include/wdmp-c/ @@ -47,8 +47,8 @@ cd rfc autoreconf -i ./configure --enable-rfctool=yes --enable-tr181set=yes cd rfcapi -make librfcapi_la_CPPFLAGS="-I/usr/include/cjson" -make install +make CXXFLAGS="-DUSE_IARMBUS" librfcapi_la_CPPFLAGS="-I/usr/include/cjson" +sudo make install export RFC_PATH=$ROOT/rfc cd $ROOT diff --git a/cov_build.sh b/cov_build.sh old mode 100644 new mode 100755 index 22e8d7d4..2b70212c --- a/cov_build.sh +++ b/cov_build.sh @@ -70,4 +70,6 @@ find $WORKDIR -iname "*.o" -exec rm -v {} \; find $WORKDIR -iname "*.so*" -exec rm -v {} \; echo "##### Triggering make" -make CFLAGS+='-fPIC -DDSMGR_LOGGER_ENABLED=ON -DRDK_DSHAL_NAME=\"libdshal.so\" -I${DS_IF_PATH}/include -I${DS_HAL_PATH} -I${DS_MGRS}/stubs -I${IARMBUS_PATH}/core -I${IARMBUS_PATH}/core/include -I${IARM_MGRS}/sysmgr/include -I${DS_MGRS}/ds/include -I${DS_MGRS}/rpc/include -I${POWER_IF_PATH}/include/ -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I${IARM_MGRS}/mfr/include/ -I${IARM_MGRS}/mfr/common -I${DEEPSLEEP_IF_PATH}/include -I${IARM_MGRS}/hal/include -I${IARM_MGRS}/power -I${IARM_MGRS}/power/include' LDFLAGS="-L/usr/lib/x86_64-linux-gnu/ -L/usr/local/include -lglib-2.0 -lIARMBus -lWPEFrameworkPowerController -ldshal" \ No newline at end of file +echo make CFLAGS+='-fPIC -DDSMGR_LOGGER_ENABLED=ON -DRDK_DSHAL_NAME=\"libdshal.so\" -I${DS_IF_PATH}/include -I${DS_HAL_PATH} -I${DS_MGRS}/stubs -I${IARMBUS_PATH}/core -I${IARMBUS_PATH}/core/include -I${IARM_MGRS}/sysmgr/include -I${DS_MGRS}/ds/include -I${DS_MGRS}/rpc/include -I${POWER_IF_PATH}/include/ -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I${IARM_MGRS}/mfr/include/ -I${IARM_MGRS}/mfr/common -I${DEEPSLEEP_IF_PATH}/include -I${IARM_MGRS}/hal/include -I${IARM_MGRS}/power -I${IARM_MGRS}/power/include' LDFLAGS="-L/usr/lib/x86_64-linux-gnu/ -L/usr/local/include -lglib-2.0 -lIARMBus -lWPEFrameworkPowerController -ldshal" + +make CFLAGS+='-fPIC -DDSMGR_LOGGER_ENABLED=ON -DRDK_DSHAL_NAME=\"libdshal.so\" -I${DS_IF_PATH}/include -I${DS_HAL_PATH} -I${DS_MGRS}/stubs -I${IARMBUS_PATH}/core -I${IARMBUS_PATH}/core/include -I${IARM_MGRS}/sysmgr/include -I${DS_MGRS}/ds/include -I${DS_MGRS}/rpc/include -I${POWER_IF_PATH}/include/ -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I${IARM_MGRS}/mfr/include/ -I${IARM_MGRS}/mfr/common -I${DEEPSLEEP_IF_PATH}/include -I${IARM_MGRS}/hal/include -I${IARM_MGRS}/power -I${IARM_MGRS}/power/include' LDFLAGS="-L/usr/lib/x86_64-linux-gnu/ -L/usr/local/include -lglib-2.0 -lIARMBus -lWPEFrameworkPowerController -ldshal" diff --git a/rpc/srv/dsDisplay.c b/rpc/srv/dsDisplay.c index 561881e5..53dee489 100644 --- a/rpc/srv/dsDisplay.c +++ b/rpc/srv/dsDisplay.c @@ -72,7 +72,7 @@ IARM_Result_t _dsSetAllmEnabled(void *arg); IARM_Result_t _dsSetAVIContentType(void *arg); IARM_Result_t _dsSetAVIScanInformation(void *arg); IARM_Result_t _dsDisplayTerm(void *arg); -void _dsDisplayEventCallback(intptr_t handle, dsDisplayEvent_t event, void *eventData); +void _dsDisplayEventCallback(int handle, dsDisplayEvent_t event, void *eventData); static void filterEDIDResolution(intptr_t Shandle, dsDisplayEDID_t *edid); static void dumpEDIDInformation( dsDisplayEDID_t *edid); static dsVideoPortType_t _GetDisplayPortType(intptr_t handle); From e6f79bbe4fbe883521063542461e3b500548b2cb Mon Sep 17 00:00:00 2001 From: Shrinivas Kamath Date: Fri, 22 Aug 2025 12:31:02 +0530 Subject: [PATCH 004/103] remove power event listener --- ds/host.cpp | 72 ---------------------------- ds/include/host.hpp | 114 ++++++++++++++++++++------------------------ 2 files changed, 53 insertions(+), 133 deletions(-) diff --git a/ds/host.cpp b/ds/host.cpp index 9dc2e0a9..ce2e4c8d 100644 --- a/ds/host.cpp +++ b/ds/host.cpp @@ -103,60 +103,6 @@ namespace device return instance; } - -/** - * @fn void Host::addPowerModeListener(PowerModeChangeListener *l) - * @brief This API is used to register listeners for Power Mode change event. - * The listener object is created by application and should be released by the application once the listener is removed. - * Listeners will be notified with the new mode via the listener's powerModeChanged() callback. - * - * @param[in] PowerModeChangeListener Pointer to Power Mode change listener - * - * @return None - */ - void Host::addPowerModeListener(PowerModeChangeListener *l) - { - std::list < PowerModeChangeListener* > ::iterator it; - - it = find (powerEvntListeners.begin(),powerEvntListeners.end(), l); - if (it == powerEvntListeners.end()) - { - powerEvntListeners.push_back (l); - cout << "Added Power Mode listener...!\n"; - } - else - { - cout << "Already register for Power Mode Change\n"; - } - return ; - } - - -/** - * @fn void Host::removePowerModeChangeListener(PowerModeChangeListener *l) - * @brief This API is used to remove a listener from Power Mode change listener list. - * - * @param[in]PowerModeChangeListener The listener to remove. - * - * @return None - */ - void Host::removePowerModeChangeListener(PowerModeChangeListener *l) - { - std::list < PowerModeChangeListener* > ::iterator it ; - it = find (powerEvntListeners.begin(),powerEvntListeners.end(), l); - if (it == powerEvntListeners.end()) - { - cout << "Not Registered for Power Mode change yet...!\n"; - } - else - { - powerEvntListeners.erase (it); - cout << "Removed from Power Mode listener group..!\n"; - } - return; - } - - /** * @fn void Host::addDisplayConnectionListener (DisplayConnectionChangeListener *l) * @brief This API is used to register listeners for Display connection change event. @@ -189,7 +135,6 @@ namespace device return ; } - /** * @fn void Host::removeDisplayConnectionListener (DisplayConnectionChangeListener *l) * @brief This API is used to remove listeners from the Display connection change event list. @@ -214,23 +159,6 @@ namespace device return; } - -/** - * @fn void Host::notifyPowerChange (const int mode) - * @brief This function is used to get the current power state. - * - * @param[in] mode Power mode of the decoder. - * @return None. - */ - void Host::notifyPowerChange (const int mode) - { - std::list < PowerModeChangeListener* > ::iterator it; - for ( it = powerEvntListeners.begin() ; it != powerEvntListeners.end(); it++ ) - { - (*it)->powerModeChanged (mode); - } - } - void Host::notifyDisplayConnectionChange (int portHandle, bool newConnectionStatus) { std::list < DisplayConnectionChangeListener* > ::iterator it; diff --git a/ds/include/host.hpp b/ds/include/host.hpp index bf5332fb..2da12fb6 100644 --- a/ds/include/host.hpp +++ b/ds/include/host.hpp @@ -15,33 +15,31 @@ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. -*/ + */ /** -* @defgroup devicesettings -* @{ -* @defgroup ds -* @{ -**/ - + * @defgroup devicesettings + * @{ + * @defgroup ds + * @{ + **/ #ifndef _DS_HOST_HPP_ #define _DS_HOST_HPP_ -#include -#include "powerModeChangeListener.hpp" -#include "displayConnectionChangeListener.hpp" #include "audioOutputPort.hpp" -#include "videoOutputPort.hpp" -#include "videoDevice.hpp" -#include "sleepMode.hpp" -#include "list.hpp" +#include "displayConnectionChangeListener.hpp" #include "dsMgrNtf.h" +#include "list.hpp" +#include "powerModeChangeListener.hpp" +#include "sleepMode.hpp" +#include "videoDevice.hpp" +#include "videoOutputPort.hpp" +#include -#include +#include #include - /** * @file host.hpp * @brief It contains class,structures referenced by host.cpp file. @@ -50,7 +48,6 @@ using namespace std; namespace device { - /** * @class Host * @brief Class to implement the Host interface. @@ -58,74 +55,70 @@ namespace device { */ class Host { public: - - struct IEvent{ - - // @brief Sleep mode changed - // @text onSleepModeChanged - // @param sleepMode: see SleepMode - virtual void OnSleepModeChanged(SleepMode sleepMode) { }; - - + struct IEvent { + + // @brief Sleep mode changed + // @text onSleepModeChanged + // @param sleepMode: see SleepMode + virtual void OnSleepModeChanged(SleepMode sleepMode) { }; }; - - uint32_t Register(IEvent *listener); - uint32_t UnRegister(IEvent *listener); + + uint32_t Register(IEvent* listener); + uint32_t UnRegister(IEvent* listener); static const int kPowerOn; static const int kPowerOff; static const int kPowerStandby; - bool setPowerMode(int mode); - int getPowerMode(); + bool setPowerMode(int mode); + int getPowerMode(); SleepMode getPreferredSleepMode(); int setPreferredSleepMode(const SleepMode); - List getAvailableSleepModes(); - void addPowerModeListener(PowerModeChangeListener *l); - void removePowerModeChangeListener(PowerModeChangeListener *l); - void addDisplayConnectionListener(DisplayConnectionChangeListener *l); - void removeDisplayConnectionListener(DisplayConnectionChangeListener *l); + List getAvailableSleepModes(); + void addPowerModeListener(PowerModeChangeListener* l); + void removePowerModeChangeListener(PowerModeChangeListener* l); + void addDisplayConnectionListener(DisplayConnectionChangeListener* l); + void removeDisplayConnectionListener(DisplayConnectionChangeListener* l); - static Host& getInstance(void); + static Host& getInstance(void); List getVideoOutputPorts(); List getAudioOutputPorts(); List getVideoDevices(); - VideoOutputPort &getVideoOutputPort(const std::string &name); - VideoOutputPort &getVideoOutputPort(int id); - AudioOutputPort &getAudioOutputPort(const std::string &name); - AudioOutputPort &getAudioOutputPort(int id); - void notifyPowerChange(const int mode); + VideoOutputPort& getVideoOutputPort(const std::string& name); + VideoOutputPort& getVideoOutputPort(int id); + AudioOutputPort& getAudioOutputPort(const std::string& name); + AudioOutputPort& getAudioOutputPort(int id); float getCPUTemperature(); - uint32_t getVersion(void); + uint32_t getVersion(void); void setVersion(uint32_t versionNumber); - void getHostEDID(std::vector &edid) const; + void getHostEDID(std::vector& edid) const; std::string getSocIDFromSDK(); - void getSinkDeviceAtmosCapability(dsATMOSCapability_t & atmosCapability); + void getSinkDeviceAtmosCapability(dsATMOSCapability_t& atmosCapability); void setAudioAtmosOutputMode(bool enable); void setAssociatedAudioMixing(const bool mixing); - void getAssociatedAudioMixing(bool *mixing); + void getAssociatedAudioMixing(bool* mixing); void setFaderControl(const int mixerbalance); - void getFaderControl(int *mixerBalance); + void getFaderControl(int* mixerBalance); void setPrimaryLanguage(const std::string pLang); - void getPrimaryLanguage(std::string &pLang); + void getPrimaryLanguage(std::string& pLang); void setSecondaryLanguage(const std::string sLang); - void getSecondaryLanguage(std::string &sLang); + void getSecondaryLanguage(std::string& sLang); bool isHDMIOutPortPresent(); std::string getDefaultVideoPortName(); std::string getDefaultAudioPortName(); - void getCurrentAudioFormat(dsAudioFormat_t &audioFormat); - void getMS12ConfigDetails(std::string &configType); - void setAudioMixerLevels (dsAudioInput_t aInput, int volume); + void getCurrentAudioFormat(dsAudioFormat_t& audioFormat); + void getMS12ConfigDetails(std::string& configType); + void setAudioMixerLevels(dsAudioInput_t aInput, int volume); + private: - Host(); - virtual ~Host(); - //To Make the instance as thread-safe, using = delete, the result is, automatically generated methods (constructor, for example) from the compiler will not be created and, therefore, can not be called - Host (const Host&)= delete; - Host& operator=(const Host&)= delete; - - std::list < PowerModeChangeListener* > powerEvntListeners; - std::list < DisplayConnectionChangeListener* > dispEvntListeners; + Host(); + virtual ~Host(); + // To Make the instance as thread-safe, using = delete, the result is, automatically generated methods (constructor, for example) from the compiler will not be created and, therefore, can not be called + Host(const Host&) = delete; + Host& operator=(const Host&) = delete; + + std::list dispEvntListeners; void notifyDisplayConnectionChange(int portHandle, bool newConnectionStatus); }; @@ -133,6 +126,5 @@ class Host { #endif /* _DS_HOST_HPP_ */ - /** @} */ /** @} */ From d395b23906f6ae9149c090d64b0dc90a4c46010b Mon Sep 17 00:00:00 2001 From: Shrinivas Kamath Date: Fri, 22 Aug 2025 13:03:45 +0530 Subject: [PATCH 005/103] added .clang-format --- .clang-format | 192 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 192 insertions(+) create mode 100644 .clang-format diff --git a/.clang-format b/.clang-format new file mode 100644 index 00000000..c8e7b33e --- /dev/null +++ b/.clang-format @@ -0,0 +1,192 @@ +--- +Language: Cpp +# BasedOnStyle: WebKit +AccessModifierOffset: -4 +AlignAfterOpenBracket: DontAlign +AlignArrayOfStructures: None +AlignConsecutiveMacros: None +AlignConsecutiveAssignments: None +AlignConsecutiveBitFields: None +AlignConsecutiveDeclarations: None +AlignEscapedNewlines: Right +AlignOperands: DontAlign +AlignTrailingComments: false +AllowAllArgumentsOnNextLine: true +AllowAllParametersOfDeclarationOnNextLine: true +AllowShortEnumsOnASingleLine: true +AllowShortBlocksOnASingleLine: Empty +AllowShortCaseLabelsOnASingleLine: false +AllowShortFunctionsOnASingleLine: All +AllowShortLambdasOnASingleLine: All +AllowShortIfStatementsOnASingleLine: Never +AllowShortLoopsOnASingleLine: false +AlwaysBreakAfterDefinitionReturnType: None +AlwaysBreakAfterReturnType: None +AlwaysBreakBeforeMultilineStrings: false +AlwaysBreakTemplateDeclarations: MultiLine +AttributeMacros: + - __capability +BinPackArguments: true +BinPackParameters: true +BraceWrapping: + AfterCaseLabel: false + AfterClass: false + AfterControlStatement: Never + AfterEnum: false + AfterFunction: true + AfterNamespace: false + AfterObjCDeclaration: false + AfterStruct: false + AfterUnion: false + AfterExternBlock: false + BeforeCatch: false + BeforeElse: false + BeforeLambdaBody: false + BeforeWhile: false + IndentBraces: false + SplitEmptyFunction: true + SplitEmptyRecord: true + SplitEmptyNamespace: true +BreakBeforeBinaryOperators: All +BreakBeforeConceptDeclarations: true +BreakBeforeBraces: WebKit +BreakBeforeInheritanceComma: false +BreakInheritanceList: BeforeColon +BreakBeforeTernaryOperators: true +BreakConstructorInitializersBeforeComma: false +BreakConstructorInitializers: BeforeComma +BreakAfterJavaFieldAnnotations: false +BreakStringLiterals: true +ColumnLimit: 0 +CommentPragmas: '^ IWYU pragma:' +QualifierAlignment: Leave +CompactNamespaces: false +ConstructorInitializerIndentWidth: 4 +ContinuationIndentWidth: 4 +Cpp11BracedListStyle: false +DeriveLineEnding: true +DerivePointerAlignment: false +DisableFormat: false +EmptyLineAfterAccessModifier: Never +EmptyLineBeforeAccessModifier: LogicalBlock +ExperimentalAutoDetectBinPacking: false +PackConstructorInitializers: BinPack +BasedOnStyle: '' +ConstructorInitializerAllOnOneLineOrOnePerLine: false +AllowAllConstructorInitializersOnNextLine: true +FixNamespaceComments: false +ForEachMacros: + - foreach + - Q_FOREACH + - BOOST_FOREACH +IfMacros: + - KJ_IF_MAYBE +IncludeBlocks: Preserve +IncludeCategories: + - Regex: '^"(llvm|llvm-c|clang|clang-c)/' + Priority: 2 + SortPriority: 0 + CaseSensitive: false + - Regex: '^(<|"(gtest|gmock|isl|json)/)' + Priority: 3 + SortPriority: 0 + CaseSensitive: false + - Regex: '.*' + Priority: 1 + SortPriority: 0 + CaseSensitive: false +IncludeIsMainRegex: '(Test)?$' +IncludeIsMainSourceRegex: '' +IndentAccessModifiers: false +IndentCaseLabels: false +IndentCaseBlocks: false +IndentGotoLabels: true +IndentPPDirectives: None +IndentExternBlock: AfterExternBlock +IndentRequires: false +IndentWidth: 4 +IndentWrappedFunctionNames: false +InsertTrailingCommas: None +JavaScriptQuotes: Leave +JavaScriptWrapImports: true +KeepEmptyLinesAtTheStartOfBlocks: true +LambdaBodyIndentation: Signature +MacroBlockBegin: '' +MacroBlockEnd: '' +MaxEmptyLinesToKeep: 1 +NamespaceIndentation: Inner +ObjCBinPackProtocolList: Auto +ObjCBlockIndentWidth: 4 +ObjCBreakBeforeNestedBlockParam: true +ObjCSpaceAfterProperty: true +ObjCSpaceBeforeProtocolList: true +PenaltyBreakAssignment: 2 +PenaltyBreakBeforeFirstCallParameter: 19 +PenaltyBreakComment: 300 +PenaltyBreakFirstLessLess: 120 +PenaltyBreakOpenParenthesis: 0 +PenaltyBreakString: 1000 +PenaltyBreakTemplateDeclaration: 10 +PenaltyExcessCharacter: 1000000 +PenaltyReturnTypeOnItsOwnLine: 60 +PenaltyIndentedWhitespace: 0 +PointerAlignment: Left +PPIndentWidth: -1 +ReferenceAlignment: Pointer +ReflowComments: true +RemoveBracesLLVM: false +SeparateDefinitionBlocks: Leave +ShortNamespaceLines: 1 +SortIncludes: CaseSensitive +SortJavaStaticImport: Before +SortUsingDeclarations: true +SpaceAfterCStyleCast: false +SpaceAfterLogicalNot: false +SpaceAfterTemplateKeyword: true +SpaceBeforeAssignmentOperators: true +SpaceBeforeCaseColon: false +SpaceBeforeCpp11BracedList: true +SpaceBeforeCtorInitializerColon: true +SpaceBeforeInheritanceColon: true +SpaceBeforeParens: ControlStatements +SpaceBeforeParensOptions: + AfterControlStatements: true + AfterForeachMacros: true + AfterFunctionDefinitionName: false + AfterFunctionDeclarationName: false + AfterIfMacros: true + AfterOverloadedOperator: false + BeforeNonEmptyParentheses: false +SpaceAroundPointerQualifiers: Default +SpaceBeforeRangeBasedForLoopColon: true +SpaceInEmptyBlock: true +SpaceInEmptyParentheses: false +SpacesBeforeTrailingComments: 1 +SpacesInAngles: Never +SpacesInConditionalStatement: false +SpacesInContainerLiterals: true +SpacesInCStyleCastParentheses: false +SpacesInLineCommentPrefix: + Minimum: 1 + Maximum: -1 +SpacesInParentheses: false +SpacesInSquareBrackets: false +SpaceBeforeSquareBrackets: false +BitFieldColonSpacing: Both +Standard: Latest +StatementAttributeLikeMacros: + - Q_EMIT +StatementMacros: + - Q_UNUSED + - QT_REQUIRE_VERSION +TabWidth: 8 +UseCRLF: false +UseTab: Never +WhitespaceSensitiveMacros: + - STRINGIZE + - PP_STRINGIZE + - BOOST_PP_STRINGIZE + - NS_SWIFT_NAME + - CF_SWIFT_NAME +... + From 9e967b48a6607016823685afcbb65bcea608648b Mon Sep 17 00:00:00 2001 From: Shrinivas Kamath Date: Fri, 22 Aug 2025 13:05:24 +0530 Subject: [PATCH 006/103] Revert "wip" This reverts commit f9d38b7b1469b3247c55a86ac63daa87fedb9d31. --- ds/iarm/VideoDevicePriv.cpp | 104 ------------------------------------ ds/iarm/VideoDevicePriv.h | 62 --------------------- ds/include/videoDevice.hpp | 17 ++---- ds/videoDevice.cpp | 42 +++++++++------ 4 files changed, 30 insertions(+), 195 deletions(-) delete mode 100644 ds/iarm/VideoDevicePriv.cpp delete mode 100644 ds/iarm/VideoDevicePriv.h diff --git a/ds/iarm/VideoDevicePriv.cpp b/ds/iarm/VideoDevicePriv.cpp deleted file mode 100644 index 27de31ea..00000000 --- a/ds/iarm/VideoDevicePriv.cpp +++ /dev/null @@ -1,104 +0,0 @@ -/* - * If not stated otherwise in this file or this component's LICENSE file the - * following copyright and licenses apply: - * - * Copyright 2016 2025 Management - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "dsMgr.h" -#include "dsRpc.h" -#include "dslogger.h" - -#include "iarm/VideoDevicePriv.h" - -using IEvent = device::VideoDevice::IEvent; - -namespace iarm { - -VideoDevicePriv::EventHandlerMapping VideoDevicePriv::eventHandlers[] = { - {IARM_BUS_DSMGR_EVENT_DISPLAY_FRAMRATE_PRECHANGE, - &VideoDevicePriv::OnDisplayFrameratePreChangeHandler}, - {IARM_BUS_DSMGR_EVENT_DISPLAY_FRAMRATE_POSTCHANGE, - &VideoDevicePriv::OnDisplayFrameratePostChangeHandler}, -}; - -const char *VideoDevicePriv::to_string(IARM_EventId_t eventId) { - switch (eventId) { - case IARM_BUS_DSMGR_EVENT_DISPLAY_FRAMRATE_PRECHANGE: - return "IARM_BUS_DSMGR_EVENT_DISPLAY_FRAMRATE_PRECHANGE"; - case IARM_BUS_DSMGR_EVENT_DISPLAY_FRAMRATE_POSTCHANGE: - return "IARM_BUS_DSMGR_EVENT_DISPLAY_FRAMRATE_POSTCHANGE"; - default: - return "Unknown Event"; - } -} - -VideoDevicePriv::VideoDevicePriv() {} - -VideoDevicePriv::~VideoDevicePriv() {} - -void VideoDevicePriv::SubscribeForIarmEvents() { - IARM_Result_t status = IARM_RESULT_INVALID_STATE; - for (const auto &eh : eventHandlers) { - status = IARM_Bus_RegisterEventHandler(IARM_BUS_DSMGR_NAME, eh.eventId, - eh.handler); - if (IARM_RESULT_SUCCESS != status) { - INT_ERROR("Failed to register event handler for %s, status: %d", - to_string(eh.eventId), status); - } - } -} - -VideoDevicePriv::OnDisplayFrameratePreChangeHandler(const char *, - IARM_EventId_t eventId, - void *data, size_t len) { - Dispatch([&](IEvent *listener) { - listener->OnDisplayFrameratePreChangeHandler(frameRate); - }); -} - -uint32_t VideoDevicePriv::Register(IEvent *listener) { - { - std::lock_guard lock(s_mutex); - auto it = std::find(s_listeners.begin(), s_listeners.end(), listener); - - bool found = (it != s_listeners.end()); - - if (found) { - // Listener already registered, no need to add again - return 0; - } - - if (it != s_listeners.end()) { - // Listener already registered, no need to add again - return 0; - } - s_listeners.push_back(listener); - } - return 0; -} - -uint32_t VideoDevicePriv::UnRegister(IEvent *listener) { - auto it = std::find(s_listeners.begin(), s_listeners.end(), listener); - - if (it != s_listeners.end()) { - s_listeners.erase(it); - } else { - } - - return 0; -} - -} // namespace iarm diff --git a/ds/iarm/VideoDevicePriv.h b/ds/iarm/VideoDevicePriv.h deleted file mode 100644 index 9cbf54aa..00000000 --- a/ds/iarm/VideoDevicePriv.h +++ /dev/null @@ -1,62 +0,0 @@ -/* - * If not stated otherwise in this file or this component's LICENSE file the - * following copyright and licenses apply: - * - * Copyright 2016 2025 Management - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. -*/ -#pragma once - -#include -#include - -#include "videoDevice.hpp" - -#include "libIBus.h" - - -namespace iarm { - -class VideoDevicePriv { - using IEvent = device::VideoDevice::IEvent; - -public: - VideoDevicePriv(); - uint32_t Register(IEvent *listener); - uint32_t UnRegister(IEvent *listener); - -private: - static void OnDisplayFrameratePreChangeHandler(const std::string& frameRate); - static void OnDisplayFrameratePostChangeHandler(const std::string& frameRate); - - - template - static void Dispatch(F&& fn); - - struct EventHandlerMapping { - IARM_EventId_t eventId; - IARM_EventHandler_t handler; - }; - - static EventHandlerMapping eventHandlers[]; - - // util methods - const char* to_string(IARM_EventId_t eventId); - -private: - static std::mutex s_mutex; - static std::list s_listeners; -}; - -} // namespace iarm diff --git a/ds/include/videoDevice.hpp b/ds/include/videoDevice.hpp index fbca4844..506ad337 100644 --- a/ds/include/videoDevice.hpp +++ b/ds/include/videoDevice.hpp @@ -29,18 +29,14 @@ #ifndef _DS_VIDEODEVICE_HPP_ #define _DS_VIDEODEVICE_HPP_ -#include -#include -#include - #include "dsConstant.hpp" #include "videoDFC.hpp" #include "videoResolution.hpp" #include "list.hpp" +#include +#include #include "dsMgrNtf.h" -namespace iarm { class VideoDevicePriv; } -using VideoDevicePriv = iarm::VideoDevicePriv; /** * @file videoDevice.hpp @@ -55,16 +51,13 @@ namespace device { * @ingroup devicesettingsclass */ class VideoDevice : public DSConstant { - std::unique_ptr _impl; intptr_t _handle; int _dfc; //!< Decoder format converter variable. List _supportedDFCs; //!< List of supported dfc's. - void setDFC(const VideoDFC & dfc); void setDFC(); static const char * kPropertyDFC; - VideoDevicePriv& impl(); public: @@ -72,14 +65,14 @@ class VideoDevice : public DSConstant { // @brief Display Framerate Pre-change // @text OnDisplayFrameratePreChange // @param frameRate: PreChange framerate - virtual void OnDisplayFrameratePreChange(const std::string& frameRate) = 0; + virtual void OnDisplayFrameratePreChange(const std::string& frameRate) { }; // @brief Display Framerate Post-change // @text OnDisplayFrameratePostChange // @param frameRate: framerate post change - virtual void OnDisplayFrameratePostChange(const std::string& frameRate) = 0; + virtual void OnDisplayFrameratePostChange(const std::string& frameRate) { }; }; - + uint32_t Register(IEvent *listener); uint32_t UnRegister(IEvent *listener); diff --git a/ds/videoDevice.cpp b/ds/videoDevice.cpp index bc079df6..8cee04c2 100644 --- a/ds/videoDevice.cpp +++ b/ds/videoDevice.cpp @@ -46,8 +46,6 @@ #include "safec_lib.h" -#include "iarm/VideoDevicePriv.h" - /** * @file videoDevice.cpp * @brief Video Device is also called "Decoder". @@ -300,52 +298,62 @@ int VideoDevice::forceDisableHDRSupport(bool disable) int VideoDevice::setFRFMode(int frfmode) const { - dsSetFRFMode(_handle, frfmode); + dsError_t ret; + ret = dsSetFRFMode(_handle, frfmode); return 0; } int VideoDevice::getFRFMode(int *frfmode) const { + dsError_t ret; int frfmode1; - dsGetFRFMode(_handle, &frfmode1); + ret = dsGetFRFMode(_handle, &frfmode1); *frfmode = frfmode1; return 0; } int VideoDevice::setDisplayframerate(const char *framerate) const { + dsError_t ret; char buf[20] = {0}; strncpy(buf, framerate, sizeof(buf)-1); - dsSetDisplayframerate(_handle, buf); + ret = dsSetDisplayframerate(_handle, buf); return 0; } int VideoDevice::getCurrentDisframerate(char *framerate) const { + dsError_t ret; char getframerate[20]; - dsGetCurrentDisplayframerate(_handle, getframerate); - strncpy(framerate, getframerate, 20); + ret = dsGetCurrentDisplayframerate(_handle, getframerate); + strncpy(framerate, getframerate, 20); - return 0; + return 0; } -VideoDevicePriv& VideoDevice::impl() -{ - if (!_impl) { - _impl = std::unique_ptr(new VideoDevicePriv()); - } - return *_impl; -} +/** + * @fn void VideoDevice::Register(IEvent *listener) + * @brief This API is used to register the Events + * + * @return unint32_t + */ uint32_t VideoDevice::Register(IEvent *listener) { - return impl().Register(listener); + return 0; } + +/** + * @fn void VideoDevice::UnRegister(IEvent *listener) + * @brief This API is used to UnRegister the Events + * + * @return unint32_t + */ uint32_t VideoDevice::UnRegister(IEvent *listener) { - return impl().UnRegister(listener); + return 0; } } From d7e99cad81381e3ee5217d58b44b55ef3c9c98c2 Mon Sep 17 00:00:00 2001 From: Shrinivas Kamath Date: Fri, 22 Aug 2025 13:29:34 +0530 Subject: [PATCH 007/103] remove unused Display Connection Change Listener --- ds/host.cpp | 67 --------------------------------------------- ds/include/host.hpp | 9 +----- 2 files changed, 1 insertion(+), 75 deletions(-) diff --git a/ds/host.cpp b/ds/host.cpp index ce2e4c8d..c925e91b 100644 --- a/ds/host.cpp +++ b/ds/host.cpp @@ -103,72 +103,6 @@ namespace device return instance; } -/** - * @fn void Host::addDisplayConnectionListener (DisplayConnectionChangeListener *l) - * @brief This API is used to register listeners for Display connection change event. - * The listener will be notified if Display device is connected/disconnected from the video output port. - * The notification only carries the state change of the connection. - * It does not carry any other system state change that may have been triggered by the connection. - * The application is responsible to query the various parts of system to detect any such change. - * For example, when a TV device is replaced, the application shall query the video output port again upon the connection - * for the new resolution supported by the TV. - * The listener object is created by application and should be released by the application once the listener is removed. - * - * @param[in] DisplayConnectionChangeListener Pointer to Display connection change listener - * - * @return None - */ - void Host::addDisplayConnectionListener (DisplayConnectionChangeListener *l) - { - std::list < DisplayConnectionChangeListener* > ::iterator it; - - it = find (dispEvntListeners.begin(), dispEvntListeners.end(), l); - if (it == dispEvntListeners.end()) - { - dispEvntListeners.push_back (l); - cout << "Added Display listener...!\n"; - } - else - { - cout << "Already registered to the Display listener\n"; - } - return ; - } - -/** - * @fn void Host::removeDisplayConnectionListener (DisplayConnectionChangeListener *l) - * @brief This API is used to remove listeners from the Display connection change event list. - * - * @param[in] DisplayConnectionChangeListener The listener to remove - * - * @return None - */ - void Host::removeDisplayConnectionListener (DisplayConnectionChangeListener *l) - { - std::list < DisplayConnectionChangeListener* > ::iterator it ; - it = find (dispEvntListeners.begin(), dispEvntListeners.end(), l); - if (it == dispEvntListeners.end()) - { - cout << "Not Registered to Display Listener yet...!\n"; - } - else - { - dispEvntListeners.erase (it); - cout << "Removed from the Display listener...!\n"; - } - return; - } - - void Host::notifyDisplayConnectionChange (int portHandle, bool newConnectionStatus) - { - std::list < DisplayConnectionChangeListener* > ::iterator it; - for ( it = dispEvntListeners.begin() ; it != dispEvntListeners.end(); it++ ) - { - (*it)->displayConnectionChanged(getVideoOutputPort(portHandle), newConnectionStatus); - getVideoOutputPort(portHandle).setDisplayConnected(newConnectionStatus); - } - } - /** * @fn bool Host::setPowerMode(int mode) * @brief This API is used to change the power mode of the device. @@ -851,7 +785,6 @@ uint32_t Host::Register(IEvent *listener) return 0; } - /** * @fn void Host::UnRegister(IEvent *listener) * @brief This API is used to UnRegister the Events diff --git a/ds/include/host.hpp b/ds/include/host.hpp index 2da12fb6..cd3a83c3 100644 --- a/ds/include/host.hpp +++ b/ds/include/host.hpp @@ -75,10 +75,6 @@ class Host { SleepMode getPreferredSleepMode(); int setPreferredSleepMode(const SleepMode); List getAvailableSleepModes(); - void addPowerModeListener(PowerModeChangeListener* l); - void removePowerModeChangeListener(PowerModeChangeListener* l); - void addDisplayConnectionListener(DisplayConnectionChangeListener* l); - void removeDisplayConnectionListener(DisplayConnectionChangeListener* l); static Host& getInstance(void); @@ -114,12 +110,9 @@ class Host { private: Host(); virtual ~Host(); - // To Make the instance as thread-safe, using = delete, the result is, automatically generated methods (constructor, for example) from the compiler will not be created and, therefore, can not be called + // Avoid copies Host(const Host&) = delete; Host& operator=(const Host&) = delete; - - std::list dispEvntListeners; - void notifyDisplayConnectionChange(int portHandle, bool newConnectionStatus); }; } From 014ffdcc5b5565a63a26410c288ddb43a1adf227 Mon Sep 17 00:00:00 2001 From: Shrinivas Kamath Date: Fri, 22 Aug 2025 13:53:55 +0530 Subject: [PATCH 008/103] script to build devicesettings alone --- cmd | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ cov_build.sh | 4 ---- 2 files changed, 48 insertions(+), 4 deletions(-) create mode 100755 cmd diff --git a/cmd b/cmd new file mode 100755 index 00000000..c807a019 --- /dev/null +++ b/cmd @@ -0,0 +1,48 @@ +#!/usr/bin/env bash +set -euo pipefail + +# ----- Common includes ----- +INCLUDES=( + -I/usr/rdk-halif-device_settings/include + -I/usr/rdkvhal-devicesettings-raspberrypi4 + -I/home/skamath/del/devicesettings/stubs + -I/usr/iarmbus/core + -I/usr/iarmbus/core/include + -I/sysmgr/include + -I/home/skamath/del/devicesettings/ds/include + -I/home/skamath/del/devicesettings/rpc/include + -I/usr/rdk-halif-power_manager/include/ + -I/mfr/include/ + -I/mfr/common + -I/usr/rdk-halif-deepsleep_manager/include + -I/hal/include + -I/power + -I/power/include +) + +# ----- Base flags ----- +CFLAGS_BASE='-fPIC -DDSMGR_LOGGER_ENABLED=ON -DRDK_DSHAL_NAME="libdshal.so"' +CFLAGS_BASE+=" ${INCLUDES[*]}" + +# GLib via pkg-config if available; otherwise fallback to hardcoded paths +if command -v pkg-config >/dev/null 2>&1 && pkg-config --exists glib-2.0; then + CFLAGS_BASE+=" $(pkg-config --cflags glib-2.0)" + LDFLAGS_BASE="$(pkg-config --libs glib-2.0) -lIARMBus -lWPEFrameworkPowerController -ldshal" +else + CFLAGS_BASE+=" -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include" + LDFLAGS_BASE='-L/usr/lib/x86_64-linux-gnu/ -L/usr/local/include -lglib-2.0 -lIARMBus -lWPEFrameworkPowerController -ldshal' +fi + +# Parallelism (optional): uncomment to use all cores +# PAR="-j$(nproc)" + +build() { + local dir=$1 + echo "==> Building $dir" + make ${PAR:-} -C "$dir" CFLAGS+="$CFLAGS_BASE" LDFLAGS="$LDFLAGS_BASE" +} + +build rpc/srv +build rpc/cli +build ds + diff --git a/cov_build.sh b/cov_build.sh index 2b70212c..a4ded3fb 100755 --- a/cov_build.sh +++ b/cov_build.sh @@ -66,10 +66,6 @@ cd ${RDK_SOURCE_PATH} export STANDALONE_BUILD_ENABLED=y export DS_MGRS=$WORKDIR -find $WORKDIR -iname "*.o" -exec rm -v {} \; -find $WORKDIR -iname "*.so*" -exec rm -v {} \; - echo "##### Triggering make" -echo make CFLAGS+='-fPIC -DDSMGR_LOGGER_ENABLED=ON -DRDK_DSHAL_NAME=\"libdshal.so\" -I${DS_IF_PATH}/include -I${DS_HAL_PATH} -I${DS_MGRS}/stubs -I${IARMBUS_PATH}/core -I${IARMBUS_PATH}/core/include -I${IARM_MGRS}/sysmgr/include -I${DS_MGRS}/ds/include -I${DS_MGRS}/rpc/include -I${POWER_IF_PATH}/include/ -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I${IARM_MGRS}/mfr/include/ -I${IARM_MGRS}/mfr/common -I${DEEPSLEEP_IF_PATH}/include -I${IARM_MGRS}/hal/include -I${IARM_MGRS}/power -I${IARM_MGRS}/power/include' LDFLAGS="-L/usr/lib/x86_64-linux-gnu/ -L/usr/local/include -lglib-2.0 -lIARMBus -lWPEFrameworkPowerController -ldshal" make CFLAGS+='-fPIC -DDSMGR_LOGGER_ENABLED=ON -DRDK_DSHAL_NAME=\"libdshal.so\" -I${DS_IF_PATH}/include -I${DS_HAL_PATH} -I${DS_MGRS}/stubs -I${IARMBUS_PATH}/core -I${IARMBUS_PATH}/core/include -I${IARM_MGRS}/sysmgr/include -I${DS_MGRS}/ds/include -I${DS_MGRS}/rpc/include -I${POWER_IF_PATH}/include/ -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I${IARM_MGRS}/mfr/include/ -I${IARM_MGRS}/mfr/common -I${DEEPSLEEP_IF_PATH}/include -I${IARM_MGRS}/hal/include -I${IARM_MGRS}/power -I${IARM_MGRS}/power/include' LDFLAGS="-L/usr/lib/x86_64-linux-gnu/ -L/usr/local/include -lglib-2.0 -lIARMBus -lWPEFrameworkPowerController -ldshal" From 89609995550457532fe873767cb7f7c23e673ebc Mon Sep 17 00:00:00 2001 From: Shrinivas Kamath Date: Fri, 22 Aug 2025 13:56:15 +0530 Subject: [PATCH 009/103] remove unused OnSleepModeChanged --- ds/host.cpp | 22 ---------------------- ds/include/host.hpp | 11 ----------- 2 files changed, 33 deletions(-) diff --git a/ds/host.cpp b/ds/host.cpp index c925e91b..1d3b0ed2 100644 --- a/ds/host.cpp +++ b/ds/host.cpp @@ -774,28 +774,6 @@ namespace device printf ("%s:%d - Set Audio Mixer levels for audio input: %d with volume = %d\n", __PRETTY_FUNCTION__, __LINE__,aInput, volume); } -/** - * @fn void Host::Register(IEvent *listener) - * @brief This API is used to register the Events - * - * @return unint32_t - */ -uint32_t Host::Register(IEvent *listener) -{ - return 0; -} - -/** - * @fn void Host::UnRegister(IEvent *listener) - * @brief This API is used to UnRegister the Events - * - * @return unint32_t - */ -uint32_t Host::UnRegister(IEvent *listener) -{ - return 0; -} - /** * @fn void DisplayConnectionChangeListener::Register(IEvent *Evtnotification) * @brief This API is used to register the Events diff --git a/ds/include/host.hpp b/ds/include/host.hpp index cd3a83c3..5cbe3716 100644 --- a/ds/include/host.hpp +++ b/ds/include/host.hpp @@ -55,17 +55,6 @@ namespace device { */ class Host { public: - struct IEvent { - - // @brief Sleep mode changed - // @text onSleepModeChanged - // @param sleepMode: see SleepMode - virtual void OnSleepModeChanged(SleepMode sleepMode) { }; - }; - - uint32_t Register(IEvent* listener); - uint32_t UnRegister(IEvent* listener); - static const int kPowerOn; static const int kPowerOff; static const int kPowerStandby; From 33100b13a7c8f29189afff90f80d53485f305ace Mon Sep 17 00:00:00 2001 From: Shrinivas Kamath Date: Fri, 22 Aug 2025 19:17:11 +0530 Subject: [PATCH 010/103] Video implementation --- ds/Makefile | 4 +- ds/host.cpp | 86 ++++------ ds/iarm/IarmHostImpl.cpp | 331 +++++++++++++++++++++++++++++++++++++++ ds/iarm/IarmHostImpl.hpp | 68 ++++++++ ds/include/host.hpp | 69 +++++++- 5 files changed, 497 insertions(+), 61 deletions(-) create mode 100644 ds/iarm/IarmHostImpl.cpp create mode 100644 ds/iarm/IarmHostImpl.hpp diff --git a/ds/Makefile b/ds/Makefile index e7c41ddd..ac6c291e 100644 --- a/ds/Makefile +++ b/ds/Makefile @@ -20,9 +20,11 @@ RM := rm -rf CFLAGS += -std=c++0x -g -fPIC -D_REENTRANT -Wall LIBNAME := ds LIBNAMEFULL := lib$(LIBNAME).so -LIBNAMECLI := lib$(LIBNAME)-cli.so +LIBNAMECLI := lib$(LIBNAME)-cli.so INSTALL := $(PWD)/install OBJS := $(patsubst %.cpp,%.o,$(wildcard *.cpp)) +# In furure add a conditional to choose implementation class based on build configuration +OBJS += iarm/IarmHostImpl.o #$(PWD)/config should be first include path # to override generic configs ifneq ($(STANDALONE_BUILD_ENABLED),y) diff --git a/ds/host.cpp b/ds/host.cpp index 1d3b0ed2..a241450d 100644 --- a/ds/host.cpp +++ b/ds/host.cpp @@ -28,7 +28,6 @@ #include -#include #include #include "iarmProxy.hpp" #include "audioOutputPortConfig.hpp" @@ -47,6 +46,8 @@ #include "hostEDID.hpp" #include "dsInternal.h" +#include "iarm/IarmHostImpl.hpp" + /** * @file host.cpp * @brief The host module is the central module of the Device Settings module. @@ -56,24 +57,23 @@ using namespace std; namespace device { - - const int Host::kPowerOn = dsPOWER_ON; - const int Host::kPowerOff = dsPOWER_OFF; - const int Host::kPowerStandby = dsPOWER_STANDBY; - - - Host::Host() - { - // TODO Auto-generated destructor stub - } - - Host::~Host() { - if (true) - { - IARMProxy::getInstance().UnRegisterPowerEventHandler(); - } - } +const int Host::kPowerOn = dsPOWER_ON; +const int Host::kPowerOff = dsPOWER_OFF; +const int Host::kPowerStandby = dsPOWER_STANDBY; + +Host::Host() + : m_impl(nullptr) +{ + // TODO Auto-generated destructor stub +} + +Host::~Host() +{ + if (true) { + IARMProxy::getInstance().UnRegisterPowerEventHandler(); + } +} /** * @addtogroup dssettingshostapi @@ -774,55 +774,37 @@ namespace device printf ("%s:%d - Set Audio Mixer levels for audio input: %d with volume = %d\n", __PRETTY_FUNCTION__, __LINE__,aInput, volume); } -/** - * @fn void DisplayConnectionChangeListener::Register(IEvent *Evtnotification) - * @brief This API is used to register the Events - * - * @return unint32_t - */ -uint32_t DisplayConnectionChangeListener::Register(IEvent *listener) +DefaultImpl& Host::impl() { - return 0; + if (!m_impl) { + m_impl = std::make_unique(); + } + return *m_impl; } -/** - * @fn void DisplayConnectionChangeListener::UnRegister(IEvent *Evtnotification) - * @brief This API is used to UnRegister the Events - * - * @return unint32_t - */ -uint32_t DisplayConnectionChangeListener::UnRegister(IEvent *listener) +uint32_t Host::Register(IVideoDeviceEvents* listener) { - return 0; + return impl().Register(listener); } -/** - * @fn void DisplayConnectionChangeListener::UnRegister(IDisplayHDMIHotPlugEvent *Evtnotification) - * @brief This API is used to UnRegister the Events - * - * @return unint32_t - */ -uint32_t DisplayConnectionChangeListener::Register(IDisplayHDMIHotPlugEvent *listener) +uint32_t Host::UnRegister(IVideoDeviceEvents* listener) { - return 0; + return impl().UnRegister(listener); } - -/** - * @fn void DisplayConnectionChangeListener::UnRegister(IEvent *Evtnotification) - * @brief This API is used to UnRegister the Events - * - * @return unint32_t - */ -uint32_t DisplayConnectionChangeListener::UnRegister(IDisplayHDMIHotPlugEvent *listener) +uint32_t Host::Register(IVideoPortEvents* listener) { - return 0; + return impl().Register(listener); } +uint32_t Host::UnRegister(IVideoPortEvents* listener) +{ + return impl().UnRegister(listener); } - /** @} */ +} // namespace device /** @} */ + /** @} */ diff --git a/ds/iarm/IarmHostImpl.cpp b/ds/iarm/IarmHostImpl.cpp new file mode 100644 index 00000000..6d03bad4 --- /dev/null +++ b/ds/iarm/IarmHostImpl.cpp @@ -0,0 +1,331 @@ +#include +#include + +#include "IarmHostImpl.hpp" + +#include "dsMgr.h" +/*#include "dsTypes.h"*/ +#include "dslogger.h" + +#include "libIBus.h" + +using IVideoDeviceEvents = device::Host::IVideoDeviceEvents; +using IVideoPortEvents = device::Host::IVideoPortEvents; + +namespace device { + +struct EventHandlerMapping { + IARM_EventId_t eventId; + IARM_EventHandler_t handler; +}; + +// IARM c to c++ shim (all methods are static) +// Thread safety to be ensured by the caller +class IarmHostPriv { + +public: + // ------------------------------------- video device events ----------------------------------- + static bool RegisterVideoDeviceEvents() + { + s_isVideoDeviceEventsRegistered = RegisterIarmEvents(s_videoDeviceHandlers); + + return s_isVideoDeviceEventsRegistered; + } + + static bool UnRegisterVideoDeviceEvents() + { + s_isVideoDeviceEventsRegistered = !UnregisterIarmEvents(s_videoDeviceHandlers); + + return !s_isVideoDeviceEventsRegistered; + } + + static bool isVideoDeviceEventsRegistered() { return s_isVideoDeviceEventsRegistered; } + + static void iarmDisplayFrameratePreChangeHandler(const char* owner, IARM_EventId_t eventId, void* data, size_t len) + { + INT_INFO("IARM_BUS_DSMGR_EVENT_DISPLAY_FRAMRATE_PRECHANGE received %s %d", owner, eventId); + + IARM_Bus_DSMgr_EventData_t* eventData = (IARM_Bus_DSMgr_EventData_t*)data; + + if (eventData) { + std::string framerate(eventData->data.DisplayFrameRateChange.framerate, sizeof(eventData->data.DisplayFrameRateChange.framerate)); + + IarmHostImpl::DispatchVideoDeviceEvents([&framerate](IVideoDeviceEvents* listener) { + listener->OnDisplayFrameratePreChange(framerate); + }); + } else { + INT_ERROR("Invalid data received for display framerate pre-change"); + } + } + + static void iarmDisplayFrameratePostChangeHandler(const char* owner, IARM_EventId_t eventId, void* data, size_t len) + { + INT_INFO("IARM_BUS_DSMGR_EVENT_DISPLAY_FRAMRATE_POSTCHANGE received %s %d", owner, eventId); + + IARM_Bus_DSMgr_EventData_t* eventData = (IARM_Bus_DSMgr_EventData_t*)data; + + if (eventData) { + std::string framerate(eventData->data.DisplayFrameRateChange.framerate, sizeof(eventData->data.DisplayFrameRateChange.framerate)); + + IarmHostImpl::DispatchVideoDeviceEvents([&framerate](IVideoDeviceEvents* listener) { + listener->OnDisplayFrameratePostChange(framerate); + }); + } else { + INT_ERROR("Invalid data received for display framerate post-change"); + } + } + + // ------------------------ video port events ------------------------------ + static bool RegisterVideoPortEvents() + { + s_isVideoPortEventsRegistered = RegisterIarmEvents(s_videoPortHandlers); + return s_isVideoPortEventsRegistered; + } + + static bool UnRegisterVideoPortEvents() + { + s_isVideoPortEventsRegistered = !UnregisterIarmEvents(s_videoPortHandlers); + return !s_isVideoPortEventsRegistered; + } + + static bool isVideoPortEventsRegistered() { return s_isVideoPortEventsRegistered; } + + static void iarmResolutionPreChangeHandler(const char*, IARM_EventId_t eventId, void* data, size_t len) + { + INT_INFO("IARM_BUS_DSMGR_EVENT_RES_PRECHANGE received, eventId = %d", eventId); + + IARM_Bus_DSMgr_EventData_t* eventData = (IARM_Bus_DSMgr_EventData_t*)data; + + if (eventData) { + int width = eventData->data.resn.width; + int height = eventData->data.resn.height; + + IarmHostImpl::DispatchVideoPortEvents([width, height](IVideoPortEvents* listener) { + listener->OnResolutionPreChange(width, height); + }); + } else { + INT_ERROR("Invalid data received for resolution pre-change"); + } + } + + static void iarmResolutionPostChangeHandler(const char*, IARM_EventId_t eventId, void* data, size_t len) + { + INT_INFO("IARM_BUS_DSMGR_EVENT_RES_POSTCHANGE received, eventId = %d", eventId); + + IARM_Bus_DSMgr_EventData_t* eventData = (IARM_Bus_DSMgr_EventData_t*)data; + + if (eventData) { + int width = eventData->data.resn.width; + int height = eventData->data.resn.height; + + IarmHostImpl::DispatchVideoPortEvents([width, height](IVideoPortEvents* listener) { + listener->OnResolutionPostChange(width, height); + }); + } else { + INT_ERROR("Invalid data received for resolution post-change"); + } + } + static void iarmHDCPStatusChangeHandler(const char*, IARM_EventId_t eventId, void* data, size_t len) + { + INT_INFO("IARM_BUS_DSMGR_EVENT_HDCP_STATUS received, eventId=%d", eventId); + + IARM_Bus_DSMgr_EventData_t* eventData = (IARM_Bus_DSMgr_EventData_t*)data; + + if (eventData) { + // TODO + } else { + INT_ERROR("Invalid data received for HDCP status change"); + } + } + + static void iarmVideoFormatUpdateHandler(const char* owner, IARM_EventId_t eventId, void* data, size_t len) + { + INT_INFO("IARM_BUS_DSMGR_EVENT_VIDEO_FORMAT_UPDATE received %s %d", owner, eventId); + + IARM_Bus_DSMgr_EventData_t* eventData = (IARM_Bus_DSMgr_EventData_t*)data; + + if (eventData) { + dsHDRStandard_t videoFormat = eventData->data.VideoFormatInfo.videoFormat; + + IarmHostImpl::DispatchVideoPortEvents([videoFormat](IVideoPortEvents* listener) { + listener->OnVideoFormatUpdate(videoFormat); + }); + } else { + INT_ERROR("Invalid data received for video format update"); + } + } + static void iarmHDCPProtocolChangeStatusHandler(const char* owner, IARM_EventId_t eventId, void* data, size_t len) { } + +private: + static bool s_isVideoDeviceEventsRegistered; + static bool s_isVideoPortEventsRegistered; + + static constexpr EventHandlerMapping s_videoDeviceHandlers[] = { + { IARM_BUS_DSMGR_EVENT_DISPLAY_FRAMRATE_PRECHANGE, &IarmHostPriv::iarmDisplayFrameratePreChangeHandler }, + { IARM_BUS_DSMGR_EVENT_DISPLAY_FRAMRATE_POSTCHANGE, &IarmHostPriv::iarmDisplayFrameratePostChangeHandler }, + }; + + static constexpr EventHandlerMapping s_videoPortHandlers[] = { + { IARM_BUS_DSMGR_EVENT_RES_PRECHANGE, &IarmHostPriv::iarmResolutionPreChangeHandler }, + { IARM_BUS_DSMGR_EVENT_RES_POSTCHANGE, &IarmHostPriv::iarmResolutionPostChangeHandler }, + { IARM_BUS_DSMGR_EVENT_HDCP_STATUS, &IarmHostPriv::iarmHDCPStatusChangeHandler }, + { IARM_BUS_DSMGR_EVENT_VIDEO_FORMAT_UPDATE, &IarmHostPriv::iarmVideoFormatUpdateHandler }, + // {TODO: ?? , &IarmHostPriv::iarmHDCPProtocolChangeStatusHandler}, + }; + + template + static bool RegisterIarmEvents(const EventHandlerMapping (&handlers)[N]) + { + bool subscribed = true; + + for (const auto& eh : handlers) { + if (IARM_RESULT_SUCCESS != IARM_Bus_RegisterEventHandler(IARM_BUS_DSMGR_NAME, eh.eventId, eh.handler)) { + INT_ERROR("Failed to register IARM event handler for %d", eh.eventId); + subscribed = false; + } + } + + if (!subscribed) { + // in case of failure / partial failure + // we should unregister any handlers that were registered + UnregisterIarmEvents(handlers); + } + + return subscribed; + } + + template + static bool UnregisterIarmEvents(const EventHandlerMapping (&handlers)[N]) + { + bool unsubscribed = true; + + for (const auto& eh : handlers) { + if (IARM_RESULT_SUCCESS != IARM_Bus_UnRegisterEventHandler(IARM_BUS_DSMGR_NAME, eh.eventId)) { + INT_ERROR("Failed to unregister IARM event handler for %d", eh.eventId); + unsubscribed = false; + } + } + return unsubscribed; + } +}; + +// static data +bool IarmHostPriv::s_isVideoDeviceEventsRegistered { false }; +bool IarmHostPriv::s_isVideoPortEventsRegistered { false }; + +std::mutex IarmHostImpl::s_mutex; +std::list IarmHostImpl::s_videoDeviceListeners; +std::list IarmHostImpl::s_videoPortListeners; + +IarmHostImpl::~IarmHostImpl() +{ + std::lock_guard lock(s_mutex); + + IarmHostPriv::UnRegisterVideoPortEvents(); + IarmHostPriv::UnRegisterVideoDeviceEvents(); + + s_videoPortListeners.clear(); + s_videoDeviceListeners.clear(); +} + +uint32_t IarmHostImpl::Register(IVideoDeviceEvents* listener) +{ + std::lock_guard lock(s_mutex); + + // NULL check is already handled by the caller + + // Check if listener is already registered + if (!IarmHostPriv::isVideoDeviceEventsRegistered()) { + if (!IarmHostPriv::RegisterVideoDeviceEvents()) { + INT_ERROR("Failed to subscribe to IARM Video device events"); + return 1; // Error: Failed to register video device events + } + } + + auto it = std::find(s_videoDeviceListeners.begin(), s_videoDeviceListeners.end(), listener); + if (it != s_videoDeviceListeners.end()) { + // Listener already registered + INT_ERROR("IVideoDeviceEvent %p is already registered", listener); + return 0; + } + + s_videoDeviceListeners.push_back(listener); + INT_INFO("IVideoDeviceEvent %p registered", listener); + return 0; +} + +template +uint32_t IarmHostImpl::Register(std::list& listeners, T* listener) +{ + std::lock_guard lock(s_mutex); + + // NULL check is already handled by the caller + + // Check if listener is already registered + auto it = std::find(listeners.begin(), listeners.end(), listener); + if (it != listeners.end()) { + // Listener already registered + INT_ERROR("%p is already registered", listener); + return 0; + } + + listeners.push_back(listener); + INT_INFO("%p registered", listener); + return 0; +} + +uint32_t IarmHostImpl::UnRegister(IVideoDeviceEvents* listener) +{ + std::lock_guard lock(s_mutex); + + auto it = std::find(s_videoDeviceListeners.begin(), s_videoDeviceListeners.end(), listener); + + if (it == s_videoDeviceListeners.end()) { + // Listener not found + INT_ERROR("IVideoDeviceEvent %p is not registered", listener); + return 1; // Error: Listener not found + } + + s_videoDeviceListeners.erase(it); + INT_INFO("IVideoDeviceEvent %p unregistered", listener); + + if (s_videoDeviceListeners.empty()) { + // No more listeners, unregister from IARM + if (!IarmHostPriv::UnRegisterVideoDeviceEvents()) { + INT_ERROR("Failed to unsubscribe from IARM Video device events"); + } + } + + return 0; +} + +template +void IarmHostImpl::DispatchVideoDeviceEvents(F&& fn) +{ + std::lock_guard lock(s_mutex); + + for (auto* listener : s_videoDeviceListeners) { + fn(listener); + } +} + +template +void IarmHostImpl::DispatchVideoPortEvents(F&& fn) +{ + std::lock_guard lock(s_mutex); + + for (auto* listener : s_videoPortListeners) { + fn(listener); + } +} + +uint32_t IarmHostImpl::Register(IVideoPortEvents* listener) +{ + return 0; +} + +uint32_t IarmHostImpl::UnRegister(IVideoPortEvents* listener) +{ + return 0; +} +} // namespace device diff --git a/ds/iarm/IarmHostImpl.hpp b/ds/iarm/IarmHostImpl.hpp new file mode 100644 index 00000000..f63f8ef3 --- /dev/null +++ b/ds/iarm/IarmHostImpl.hpp @@ -0,0 +1,68 @@ +/* + * If not stated otherwise in this file or this component's LICENSE file the + * following copyright and licenses apply: + * + * Copyright 2025 RDK Management + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#pragma once + +#include +#include + +#include "host.hpp" + +namespace device { +class IarmHostImpl { + +public: + using IVideoDeviceEvents = device::Host::IVideoDeviceEvents; + using IVideoPortEvents = device::Host::IVideoPortEvents; + + IarmHostImpl(); + ~IarmHostImpl(); + + // @brief Register a listener for video device events + // @param listener: class object implementing the listener + uint32_t Register(IVideoDeviceEvents* listener); + + // @brief UnRegister a listener for video device events + // @param listener: class object implementing the listener + uint32_t UnRegister(IVideoDeviceEvents* listener); + + // @brief Register a listener for video port events + // @param listener: class object implementing the listener + uint32_t Register(IVideoPortEvents* listener); + + // @brief UnRegister a listener for video port events + // @param listener: class object implementing the listener + uint32_t UnRegister(IVideoPortEvents* listener); + +private: + static std::mutex s_mutex; + static std::list s_videoDeviceListeners; + static std::list s_videoPortListeners; + + template + static void DispatchVideoDeviceEvents(F&& fn); + + template + static void DispatchVideoPortEvents(F&& fn); + + template + uint32_t Register(std::list& listeners, T* listener); + + friend class IarmHostPriv; +}; +} // namespace device diff --git a/ds/include/host.hpp b/ds/include/host.hpp index 5cbe3716..5e83bf7a 100644 --- a/ds/include/host.hpp +++ b/ds/include/host.hpp @@ -26,28 +26,28 @@ #ifndef _DS_HOST_HPP_ #define _DS_HOST_HPP_ +#include +#include #include "audioOutputPort.hpp" -#include "displayConnectionChangeListener.hpp" -#include "dsMgrNtf.h" #include "list.hpp" -#include "powerModeChangeListener.hpp" #include "sleepMode.hpp" #include "videoDevice.hpp" #include "videoOutputPort.hpp" -#include - -#include -#include /** * @file host.hpp - * @brief It contains class,structures referenced by host.cpp file. + * @brief It contains class, structures referenced by host.cpp file. */ using namespace std; namespace device { +// Forward declaration of the implementation class +class IarmHostImpl; +// In future add a conditional to choose implementation class based on build configuration +using DefaultImpl = IarmHostImpl; + /** * @class Host * @brief Class to implement the Host interface. @@ -59,6 +59,56 @@ class Host { static const int kPowerOff; static const int kPowerStandby; + struct IVideoDeviceEvents { + // @brief Display Frame rate Pre-change notification + // @param frameRate: new framerate + virtual void OnDisplayFrameratePreChange(const std::string& frameRate) { }; + + // @brief Display Frame rate Post-change notification + // @param frameRate: new framerate + virtual void OnDisplayFrameratePostChange(const std::string& frameRate) { }; + }; + + // @brief Register a listener for video device events + // @param listener: class object implementing the listener + uint32_t Register(IVideoDeviceEvents* listener); + + // @brief UnRegister a listener for video device events + // @param listener: class object implementing the listener + uint32_t UnRegister(IVideoDeviceEvents* listener); + + struct IVideoPortEvents { + + // @brief On Resolution Pre changed + // @param width: width of the resolution + // @param height: height of the resolution + virtual void OnResolutionPreChange(int width, int height) { }; + + // @brief On Resolution Post change + // @param width: width of the resolution + // @param height: height of the resolution + virtual void OnResolutionPostChange(int width, int height) { }; + + // @brief On HDCP Status change + // @param hdcpStatus: HDCP Status + virtual void OnHDCPStatusChange(dsHdcpStatus_t hdcpStatus) { }; + + // @brief On Video Format update + // @param videoFormatHDR: Video format HDR standard + virtual void OnVideoFormatUpdate(dsHDRStandard_t videoFormatHDR) { }; + + // @brief HDCP Protocol version change + virtual void OnHDCPProtocolChangeStatus() { }; + }; + + // @brief Register a listener for video port events + // @param listener: class object implementing the listener + uint32_t Register(IVideoPortEvents* listener); + + // @brief UnRegister a listener for video port events + // @param listener: class object implementing the listener + uint32_t UnRegister(IVideoPortEvents* listener); + bool setPowerMode(int mode); int getPowerMode(); SleepMode getPreferredSleepMode(); @@ -97,11 +147,14 @@ class Host { void setAudioMixerLevels(dsAudioInput_t aInput, int volume); private: + std::unique_ptr m_impl; Host(); virtual ~Host(); // Avoid copies Host(const Host&) = delete; Host& operator=(const Host&) = delete; + + DefaultImpl& impl(); }; } From d658324123fc83009d2e62b2a41efc5e4f4a0e3b Mon Sep 17 00:00:00 2001 From: Shrinivas Kamath Date: Fri, 22 Aug 2025 22:26:01 +0530 Subject: [PATCH 011/103] major refactoring --- .gitignore | 2 + ds/host.cpp | 1 - ds/iarm/IarmHostImpl.cpp | 264 ++++++++++++++++----------------------- ds/iarm/IarmHostImpl.hpp | 85 ++++++++++++- ds/iarmProxy.cpp | 61 ++++----- 5 files changed, 219 insertions(+), 194 deletions(-) diff --git a/.gitignore b/.gitignore index 3eccd03c..5156add3 100644 --- a/.gitignore +++ b/.gitignore @@ -50,3 +50,5 @@ sample/testFrontPanel .cache compile_commands.json + +.harper-dictionary.txt diff --git a/ds/host.cpp b/ds/host.cpp index a241450d..32aec199 100644 --- a/ds/host.cpp +++ b/ds/host.cpp @@ -65,7 +65,6 @@ const int Host::kPowerStandby = dsPOWER_STANDBY; Host::Host() : m_impl(nullptr) { - // TODO Auto-generated destructor stub } Host::~Host() diff --git a/ds/iarm/IarmHostImpl.cpp b/ds/iarm/IarmHostImpl.cpp index 6d03bad4..ee13aa1b 100644 --- a/ds/iarm/IarmHostImpl.cpp +++ b/ds/iarm/IarmHostImpl.cpp @@ -1,5 +1,7 @@ #include +#include #include +#include #include "IarmHostImpl.hpp" @@ -19,28 +21,58 @@ struct EventHandlerMapping { IARM_EventHandler_t handler; }; -// IARM c to c++ shim (all methods are static) -// Thread safety to be ensured by the caller -class IarmHostPriv { +// UnregisterIarmEvents can be called by RegisterIarmEvents in case of failure. +// Nence defined before RegisterIarmEvents +template +static bool UnregisterIarmEvents(const EventHandlerMapping (&handlers)[N]) +{ + bool unsubscribed = true; -public: - // ------------------------------------- video device events ----------------------------------- - static bool RegisterVideoDeviceEvents() - { - s_isVideoDeviceEventsRegistered = RegisterIarmEvents(s_videoDeviceHandlers); + for (const auto& eh : handlers) { + if (IARM_RESULT_SUCCESS != IARM_Bus_UnRegisterEventHandler(IARM_BUS_DSMGR_NAME, eh.eventId)) { + INT_ERROR("Failed to unregister IARM event handler for %d", eh.eventId); + unsubscribed = false; + } + } + return unsubscribed; +} - return s_isVideoDeviceEventsRegistered; +template +static bool RegisterIarmEvents(const EventHandlerMapping (&handlers)[N]) +{ + bool subscribed = true; + + for (const auto& eh : handlers) { + if (IARM_RESULT_SUCCESS != IARM_Bus_RegisterEventHandler(IARM_BUS_DSMGR_NAME, eh.eventId, eh.handler)) { + INT_ERROR("Failed to register IARM event handler for %d", eh.eventId); + subscribed = false; + } } - static bool UnRegisterVideoDeviceEvents() - { - s_isVideoDeviceEventsRegistered = !UnregisterIarmEvents(s_videoDeviceHandlers); + if (!subscribed) { + // in case of failure / partial failure + // we should unregister any handlers that were registered + UnregisterIarmEvents(handlers); + } - return !s_isVideoDeviceEventsRegistered; + return subscribed; +} + +// IARMGroupXYZ are c to c++ shim (all methods are static) +// Thread safety to be ensured by the caller +class IARMGroupVideoDevice { +public: + static bool Register() + { + return RegisterIarmEvents(handlers); } - static bool isVideoDeviceEventsRegistered() { return s_isVideoDeviceEventsRegistered; } + static bool UnRegister() + { + return UnregisterIarmEvents(handlers); + } +private: static void iarmDisplayFrameratePreChangeHandler(const char* owner, IARM_EventId_t eventId, void* data, size_t len) { INT_INFO("IARM_BUS_DSMGR_EVENT_DISPLAY_FRAMRATE_PRECHANGE received %s %d", owner, eventId); @@ -50,7 +82,7 @@ class IarmHostPriv { if (eventData) { std::string framerate(eventData->data.DisplayFrameRateChange.framerate, sizeof(eventData->data.DisplayFrameRateChange.framerate)); - IarmHostImpl::DispatchVideoDeviceEvents([&framerate](IVideoDeviceEvents* listener) { + IarmHostImpl::Dispatch([&framerate](IVideoDeviceEvents* listener) { listener->OnDisplayFrameratePreChange(framerate); }); } else { @@ -67,7 +99,7 @@ class IarmHostPriv { if (eventData) { std::string framerate(eventData->data.DisplayFrameRateChange.framerate, sizeof(eventData->data.DisplayFrameRateChange.framerate)); - IarmHostImpl::DispatchVideoDeviceEvents([&framerate](IVideoDeviceEvents* listener) { + IarmHostImpl::Dispatch([&framerate](IVideoDeviceEvents* listener) { listener->OnDisplayFrameratePostChange(framerate); }); } else { @@ -75,21 +107,25 @@ class IarmHostPriv { } } - // ------------------------ video port events ------------------------------ - static bool RegisterVideoPortEvents() + static constexpr EventHandlerMapping handlers[] = { + { IARM_BUS_DSMGR_EVENT_DISPLAY_FRAMRATE_PRECHANGE, &IARMGroupVideoDevice::iarmDisplayFrameratePreChangeHandler }, + { IARM_BUS_DSMGR_EVENT_DISPLAY_FRAMRATE_POSTCHANGE, &IARMGroupVideoDevice::iarmDisplayFrameratePostChangeHandler }, + }; +}; + +class IARMGroupVideoPort { +public: + static bool Register() { - s_isVideoPortEventsRegistered = RegisterIarmEvents(s_videoPortHandlers); - return s_isVideoPortEventsRegistered; + return RegisterIarmEvents(handlers); } - static bool UnRegisterVideoPortEvents() + static bool UnRegister() { - s_isVideoPortEventsRegistered = !UnregisterIarmEvents(s_videoPortHandlers); - return !s_isVideoPortEventsRegistered; + return UnregisterIarmEvents(handlers); } - static bool isVideoPortEventsRegistered() { return s_isVideoPortEventsRegistered; } - +private: static void iarmResolutionPreChangeHandler(const char*, IARM_EventId_t eventId, void* data, size_t len) { INT_INFO("IARM_BUS_DSMGR_EVENT_RES_PRECHANGE received, eventId = %d", eventId); @@ -100,7 +136,7 @@ class IarmHostPriv { int width = eventData->data.resn.width; int height = eventData->data.resn.height; - IarmHostImpl::DispatchVideoPortEvents([width, height](IVideoPortEvents* listener) { + IarmHostImpl::Dispatch([width, height](IVideoPortEvents* listener) { listener->OnResolutionPreChange(width, height); }); } else { @@ -118,13 +154,14 @@ class IarmHostPriv { int width = eventData->data.resn.width; int height = eventData->data.resn.height; - IarmHostImpl::DispatchVideoPortEvents([width, height](IVideoPortEvents* listener) { + IarmHostImpl::Dispatch([width, height](IVideoPortEvents* listener) { listener->OnResolutionPostChange(width, height); }); } else { INT_ERROR("Invalid data received for resolution post-change"); } } + static void iarmHDCPStatusChangeHandler(const char*, IARM_EventId_t eventId, void* data, size_t len) { INT_INFO("IARM_BUS_DSMGR_EVENT_HDCP_STATUS received, eventId=%d", eventId); @@ -147,185 +184,104 @@ class IarmHostPriv { if (eventData) { dsHDRStandard_t videoFormat = eventData->data.VideoFormatInfo.videoFormat; - IarmHostImpl::DispatchVideoPortEvents([videoFormat](IVideoPortEvents* listener) { + IarmHostImpl::Dispatch([videoFormat](IVideoPortEvents* listener) { listener->OnVideoFormatUpdate(videoFormat); }); } else { INT_ERROR("Invalid data received for video format update"); } } - static void iarmHDCPProtocolChangeStatusHandler(const char* owner, IARM_EventId_t eventId, void* data, size_t len) { } - -private: - static bool s_isVideoDeviceEventsRegistered; - static bool s_isVideoPortEventsRegistered; - static constexpr EventHandlerMapping s_videoDeviceHandlers[] = { - { IARM_BUS_DSMGR_EVENT_DISPLAY_FRAMRATE_PRECHANGE, &IarmHostPriv::iarmDisplayFrameratePreChangeHandler }, - { IARM_BUS_DSMGR_EVENT_DISPLAY_FRAMRATE_POSTCHANGE, &IarmHostPriv::iarmDisplayFrameratePostChangeHandler }, - }; - - static constexpr EventHandlerMapping s_videoPortHandlers[] = { - { IARM_BUS_DSMGR_EVENT_RES_PRECHANGE, &IarmHostPriv::iarmResolutionPreChangeHandler }, - { IARM_BUS_DSMGR_EVENT_RES_POSTCHANGE, &IarmHostPriv::iarmResolutionPostChangeHandler }, - { IARM_BUS_DSMGR_EVENT_HDCP_STATUS, &IarmHostPriv::iarmHDCPStatusChangeHandler }, - { IARM_BUS_DSMGR_EVENT_VIDEO_FORMAT_UPDATE, &IarmHostPriv::iarmVideoFormatUpdateHandler }, - // {TODO: ?? , &IarmHostPriv::iarmHDCPProtocolChangeStatusHandler}, - }; - - template - static bool RegisterIarmEvents(const EventHandlerMapping (&handlers)[N]) + static void iarmHDCPProtocolChangeStatusHandler(const char* owner, IARM_EventId_t eventId, void* data, size_t len) { - bool subscribed = true; - - for (const auto& eh : handlers) { - if (IARM_RESULT_SUCCESS != IARM_Bus_RegisterEventHandler(IARM_BUS_DSMGR_NAME, eh.eventId, eh.handler)) { - INT_ERROR("Failed to register IARM event handler for %d", eh.eventId); - subscribed = false; - } - } - - if (!subscribed) { - // in case of failure / partial failure - // we should unregister any handlers that were registered - UnregisterIarmEvents(handlers); - } - - return subscribed; + // TODO: some confusion related to IARM event enum } - template - static bool UnregisterIarmEvents(const EventHandlerMapping (&handlers)[N]) - { - bool unsubscribed = true; - - for (const auto& eh : handlers) { - if (IARM_RESULT_SUCCESS != IARM_Bus_UnRegisterEventHandler(IARM_BUS_DSMGR_NAME, eh.eventId)) { - INT_ERROR("Failed to unregister IARM event handler for %d", eh.eventId); - unsubscribed = false; - } - } - return unsubscribed; - } + static constexpr EventHandlerMapping handlers[] = { + { IARM_BUS_DSMGR_EVENT_RES_PRECHANGE, &IARMGroupVideoPort::iarmResolutionPreChangeHandler }, + { IARM_BUS_DSMGR_EVENT_RES_POSTCHANGE, &IARMGroupVideoPort::iarmResolutionPostChangeHandler }, + { IARM_BUS_DSMGR_EVENT_HDCP_STATUS, &IARMGroupVideoPort::iarmHDCPStatusChangeHandler }, + { IARM_BUS_DSMGR_EVENT_VIDEO_FORMAT_UPDATE, &IARMGroupVideoPort::iarmVideoFormatUpdateHandler }, + // {TODO: ?? , &IarmHostPriv::iarmHDCPProtocolChangeStatusHandler}, + }; }; // static data -bool IarmHostPriv::s_isVideoDeviceEventsRegistered { false }; -bool IarmHostPriv::s_isVideoPortEventsRegistered { false }; - std::mutex IarmHostImpl::s_mutex; -std::list IarmHostImpl::s_videoDeviceListeners; -std::list IarmHostImpl::s_videoPortListeners; +IarmHostImpl::CallbackList IarmHostImpl::s_videoDeviceHandlers; +IarmHostImpl::CallbackList IarmHostImpl::s_videoPortHandlers; IarmHostImpl::~IarmHostImpl() { std::lock_guard lock(s_mutex); - IarmHostPriv::UnRegisterVideoPortEvents(); - IarmHostPriv::UnRegisterVideoDeviceEvents(); - - s_videoPortListeners.clear(); - s_videoDeviceListeners.clear(); + s_videoDeviceHandlers.clear(); + s_videoPortHandlers.clear(); } uint32_t IarmHostImpl::Register(IVideoDeviceEvents* listener) { std::lock_guard lock(s_mutex); - - // NULL check is already handled by the caller - - // Check if listener is already registered - if (!IarmHostPriv::isVideoDeviceEventsRegistered()) { - if (!IarmHostPriv::RegisterVideoDeviceEvents()) { - INT_ERROR("Failed to subscribe to IARM Video device events"); - return 1; // Error: Failed to register video device events - } - } - - auto it = std::find(s_videoDeviceListeners.begin(), s_videoDeviceListeners.end(), listener); - if (it != s_videoDeviceListeners.end()) { - // Listener already registered - INT_ERROR("IVideoDeviceEvent %p is already registered", listener); - return 0; - } - - s_videoDeviceListeners.push_back(listener); - INT_INFO("IVideoDeviceEvent %p registered", listener); - return 0; + return s_videoDeviceHandlers.Register(listener); } -template -uint32_t IarmHostImpl::Register(std::list& listeners, T* listener) +uint32_t IarmHostImpl::UnRegister(IVideoDeviceEvents* listener) { std::lock_guard lock(s_mutex); - - // NULL check is already handled by the caller - - // Check if listener is already registered - auto it = std::find(listeners.begin(), listeners.end(), listener); - if (it != listeners.end()) { - // Listener already registered - INT_ERROR("%p is already registered", listener); - return 0; - } - - listeners.push_back(listener); - INT_INFO("%p registered", listener); - return 0; + return s_videoDeviceHandlers.UnRegister(listener); } -uint32_t IarmHostImpl::UnRegister(IVideoDeviceEvents* listener) +template +void IarmHostImpl::Dispatch(const std::list& listeners, F&& fn) { + std::stringstream ss; std::lock_guard lock(s_mutex); - auto it = std::find(s_videoDeviceListeners.begin(), s_videoDeviceListeners.end(), listener); - - if (it == s_videoDeviceListeners.end()) { - // Listener not found - INT_ERROR("IVideoDeviceEvent %p is not registered", listener); - return 1; // Error: Listener not found - } + for (auto* listener : listeners) { + auto start = std::chrono::steady_clock::now(); - s_videoDeviceListeners.erase(it); - INT_INFO("IVideoDeviceEvent %p unregistered", listener); + fn(listener); - if (s_videoDeviceListeners.empty()) { - // No more listeners, unregister from IARM - if (!IarmHostPriv::UnRegisterVideoDeviceEvents()) { - INT_ERROR("Failed to unsubscribe from IARM Video device events"); - } + auto end = std::chrono::steady_clock::now(); + auto elapsed = std::chrono::duration_cast(end - start); + ss << "\t" << listener << ", elapsed: " << elapsed.count() << " ms\n"; } - return 0; + INT_INFO("%s Dispatch done to %zu listeners\n%s", typeid(T).name(), listeners.size(), ss.str().c_str()); } template -void IarmHostImpl::DispatchVideoDeviceEvents(F&& fn) +void IarmHostImpl::Dispatch(F&& fn) { - std::lock_guard lock(s_mutex); - - for (auto* listener : s_videoDeviceListeners) { - fn(listener); - } + // Always expect template specialization + // static_assert(sizeof(F) == 0, "Dispatch should be specialized for specific event types"); + // TODO: make this compile time error + INT_ERROR("FATAL: Dispatch should be specialized for specific event types, but was called with a generic function"); } -template -void IarmHostImpl::DispatchVideoPortEvents(F&& fn) +// Specialization for IVideoDeviceEvents +template <> +void IarmHostImpl::Dispatch(std::function&& fn) { - std::lock_guard lock(s_mutex); + Dispatch(s_videoDeviceHandlers, std::move(fn)); +} - for (auto* listener : s_videoPortListeners) { - fn(listener); - } +// Specialization for IVideoPortEvents +template <> +void IarmHostImpl::Dispatch(std::function&& fn) +{ + Dispatch(s_videoPortHandlers, std::move(fn)); } uint32_t IarmHostImpl::Register(IVideoPortEvents* listener) { - return 0; + std::lock_guard lock(s_mutex); + return s_videoPortHandlers.Register(listener); } uint32_t IarmHostImpl::UnRegister(IVideoPortEvents* listener) { - return 0; + std::lock_guard lock(s_mutex); + return s_videoPortHandlers.UnRegister(listener); } } // namespace device diff --git a/ds/iarm/IarmHostImpl.hpp b/ds/iarm/IarmHostImpl.hpp index f63f8ef3..52421597 100644 --- a/ds/iarm/IarmHostImpl.hpp +++ b/ds/iarm/IarmHostImpl.hpp @@ -18,14 +18,84 @@ */ #pragma once +#include #include #include +#include "dslogger.h" #include "host.hpp" namespace device { + +// Forward declaration for IARM Implementation Groups +struct IARMGroupVideoDevice; +struct IARMGroupVideoPort; + class IarmHostImpl { + template + class CallbackList : public std::list { + public: + uint32_t Register(T listener) + { + if (listener == nullptr) { + INT_ERROR("%s listener is null", typeid(T).name()); + return 1; // Error: Listener is null + } + + if (!m_registered) { + m_registered = IARMGroup::Register(); + } + + if (!m_registered) { + INT_ERROR("Failed to register IARMGroup %s", typeid(IARMGroup).name()); + return 1; // Error: Failed to register IARM group + } + + auto it = std::find(this->begin(), this->end(), listener); + if (it != this->end()) { + // Listener already registered + INT_ERROR("%s %p is already registered", typeid(T).name(), listener); + return 0; + } + + this->push_back(listener); + + INT_INFO("%s %p registered", typeid(T).name(), listener); + + return 0; + } + + uint32_t UnRegister(T listener) + { + if (listener == nullptr) { + INT_ERROR("%s listener is null", typeid(T).name()); + return 1; // Error: Listener is null + } + + auto it = std::find(this->begin(), this->end(), listener); + if (it == this->end()) { + // Listener not found + INT_ERROR("%s %p is not registered", typeid(T).name(), listener); + return 1; // Error: Listener not found + } + + this->erase(it); + + INT_INFO("%s %p unregistered", typeid(T).name(), listener); + + if (this->empty() && m_registered) { + m_registered = false; + IARMGroup::UnRegister(); + } + + return 0; + } + + private: + bool m_registered = false; // really required ? + }; + public: using IVideoDeviceEvents = device::Host::IVideoDeviceEvents; using IVideoPortEvents = device::Host::IVideoPortEvents; @@ -49,20 +119,25 @@ class IarmHostImpl { // @param listener: class object implementing the listener uint32_t UnRegister(IVideoPortEvents* listener); + // TODO: avoid public + template + static void Dispatch(F&& fn); + private: static std::mutex s_mutex; - static std::list s_videoDeviceListeners; static std::list s_videoPortListeners; - template - static void DispatchVideoDeviceEvents(F&& fn); + static CallbackList s_videoDeviceHandlers; + static CallbackList s_videoPortHandlers; + + template + static void Dispatch(const std::list& listeners, F&& fn); - template - static void DispatchVideoPortEvents(F&& fn); template uint32_t Register(std::list& listeners, T* listener); friend class IarmHostPriv; + friend class IARMGroupVideoDevice; }; } // namespace device diff --git a/ds/iarmProxy.cpp b/ds/iarmProxy.cpp index 8146a2f2..cc97a6df 100644 --- a/ds/iarmProxy.cpp +++ b/ds/iarmProxy.cpp @@ -15,55 +15,48 @@ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. -*/ - - + */ /** -* @defgroup devicesettings -* @{ -* @defgroup ds -* @{ -**/ - + * @defgroup devicesettings + * @{ + * @defgroup ds + * @{ + **/ -#include #include "iarmProxy.hpp" +#include "dslogger.h" #include "libIBus.h" #include "libIBusDaemon.h" -#include "dslogger.h" - +#include using namespace std; namespace device { - IARMProxy::IARMProxy() - { - } +IARMProxy::IARMProxy() +{ +} - IARMProxy::~IARMProxy() - { - } +IARMProxy::~IARMProxy() +{ +} - IARMProxy& IARMProxy::getInstance() - { - static IARMProxy instance; - return instance; - } +IARMProxy& IARMProxy::getInstance() +{ + static IARMProxy instance; + return instance; +} - void IARMProxy::registerPowerEventHandler(IARM_EventHandler_t _eventHandler) - { - ; - } +void IARMProxy::registerPowerEventHandler(IARM_EventHandler_t _eventHandler) +{ + ; +} - void IARMProxy::UnRegisterPowerEventHandler() - { - ; - } - - - +void IARMProxy::UnRegisterPowerEventHandler() +{ + ; } +} /** @} */ /** @} */ From 9ae2ea9f6483e8e153c96992bcfc0efb414e5219 Mon Sep 17 00:00:00 2001 From: Shrinivas Kamath Date: Sat, 23 Aug 2025 00:22:38 +0530 Subject: [PATCH 012/103] self review --- ds/host.cpp | 5 +++ ds/iarm/IarmHostImpl.cpp | 6 ---- ds/iarm/IarmHostImpl.hpp | 5 --- ds/iarmProxy.cpp | 61 +++++++++++++++++++--------------- ds/include/host.hpp | 3 -- ds/include/videoDevice.hpp | 20 ++--------- ds/include/videoOutputPort.hpp | 41 +---------------------- ds/videoDevice.cpp | 26 +-------------- ds/videoOutputPort.cpp | 28 +--------------- 9 files changed, 44 insertions(+), 151 deletions(-) diff --git a/ds/host.cpp b/ds/host.cpp index 32aec199..8055e6ca 100644 --- a/ds/host.cpp +++ b/ds/host.cpp @@ -69,6 +69,10 @@ Host::Host() Host::~Host() { + if (m_impl) { + m_impl.reset(); + } + if (true) { IARMProxy::getInstance().UnRegisterPowerEventHandler(); } @@ -775,6 +779,7 @@ Host::~Host() DefaultImpl& Host::impl() { + // lazy instantiation if (!m_impl) { m_impl = std::make_unique(); } diff --git a/ds/iarm/IarmHostImpl.cpp b/ds/iarm/IarmHostImpl.cpp index ee13aa1b..12b613af 100644 --- a/ds/iarm/IarmHostImpl.cpp +++ b/ds/iarm/IarmHostImpl.cpp @@ -192,17 +192,11 @@ class IARMGroupVideoPort { } } - static void iarmHDCPProtocolChangeStatusHandler(const char* owner, IARM_EventId_t eventId, void* data, size_t len) - { - // TODO: some confusion related to IARM event enum - } - static constexpr EventHandlerMapping handlers[] = { { IARM_BUS_DSMGR_EVENT_RES_PRECHANGE, &IARMGroupVideoPort::iarmResolutionPreChangeHandler }, { IARM_BUS_DSMGR_EVENT_RES_POSTCHANGE, &IARMGroupVideoPort::iarmResolutionPostChangeHandler }, { IARM_BUS_DSMGR_EVENT_HDCP_STATUS, &IARMGroupVideoPort::iarmHDCPStatusChangeHandler }, { IARM_BUS_DSMGR_EVENT_VIDEO_FORMAT_UPDATE, &IARMGroupVideoPort::iarmVideoFormatUpdateHandler }, - // {TODO: ?? , &IarmHostPriv::iarmHDCPProtocolChangeStatusHandler}, }; }; diff --git a/ds/iarm/IarmHostImpl.hpp b/ds/iarm/IarmHostImpl.hpp index 52421597..2af30eb3 100644 --- a/ds/iarm/IarmHostImpl.hpp +++ b/ds/iarm/IarmHostImpl.hpp @@ -125,7 +125,6 @@ class IarmHostImpl { private: static std::mutex s_mutex; - static std::list s_videoPortListeners; static CallbackList s_videoDeviceHandlers; static CallbackList s_videoPortHandlers; @@ -133,10 +132,6 @@ class IarmHostImpl { template static void Dispatch(const std::list& listeners, F&& fn); - - template - uint32_t Register(std::list& listeners, T* listener); - friend class IarmHostPriv; friend class IARMGroupVideoDevice; }; diff --git a/ds/iarmProxy.cpp b/ds/iarmProxy.cpp index cc97a6df..8146a2f2 100644 --- a/ds/iarmProxy.cpp +++ b/ds/iarmProxy.cpp @@ -15,48 +15,55 @@ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - */ +*/ + + /** - * @defgroup devicesettings - * @{ - * @defgroup ds - * @{ - **/ +* @defgroup devicesettings +* @{ +* @defgroup ds +* @{ +**/ + +#include #include "iarmProxy.hpp" -#include "dslogger.h" #include "libIBus.h" #include "libIBusDaemon.h" -#include +#include "dslogger.h" + using namespace std; namespace device { -IARMProxy::IARMProxy() -{ -} + IARMProxy::IARMProxy() + { + } -IARMProxy::~IARMProxy() -{ -} + IARMProxy::~IARMProxy() + { + } -IARMProxy& IARMProxy::getInstance() -{ - static IARMProxy instance; - return instance; -} + IARMProxy& IARMProxy::getInstance() + { + static IARMProxy instance; + return instance; + } -void IARMProxy::registerPowerEventHandler(IARM_EventHandler_t _eventHandler) -{ - ; -} + void IARMProxy::registerPowerEventHandler(IARM_EventHandler_t _eventHandler) + { + ; + } -void IARMProxy::UnRegisterPowerEventHandler() -{ - ; + void IARMProxy::UnRegisterPowerEventHandler() + { + ; + } + + + } -} /** @} */ /** @} */ diff --git a/ds/include/host.hpp b/ds/include/host.hpp index 5e83bf7a..b7982f23 100644 --- a/ds/include/host.hpp +++ b/ds/include/host.hpp @@ -96,9 +96,6 @@ class Host { // @brief On Video Format update // @param videoFormatHDR: Video format HDR standard virtual void OnVideoFormatUpdate(dsHDRStandard_t videoFormatHDR) { }; - - // @brief HDCP Protocol version change - virtual void OnHDCPProtocolChangeStatus() { }; }; // @brief Register a listener for video port events diff --git a/ds/include/videoDevice.hpp b/ds/include/videoDevice.hpp index 506ad337..61ec375d 100644 --- a/ds/include/videoDevice.hpp +++ b/ds/include/videoDevice.hpp @@ -2,7 +2,7 @@ * If not stated otherwise in this file or this component's LICENSE file the * following copyright and licenses apply: * - * Copyright 2025 RDK Management + * Copyright 2016 RDK Management * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -18,6 +18,7 @@ */ + /** * @defgroup devicesettings * @{ @@ -35,7 +36,6 @@ #include "list.hpp" #include #include -#include "dsMgrNtf.h" /** @@ -60,22 +60,6 @@ class VideoDevice : public DSConstant { static const char * kPropertyDFC; public: - - struct IEvent { - // @brief Display Framerate Pre-change - // @text OnDisplayFrameratePreChange - // @param frameRate: PreChange framerate - virtual void OnDisplayFrameratePreChange(const std::string& frameRate) { }; - - // @brief Display Framerate Post-change - // @text OnDisplayFrameratePostChange - // @param frameRate: framerate post change - virtual void OnDisplayFrameratePostChange(const std::string& frameRate) { }; - }; - - uint32_t Register(IEvent *listener); - uint32_t UnRegister(IEvent *listener); - static VideoDevice & getInstance(int id); static VideoDevice & getInstance(const std::string &name); diff --git a/ds/include/videoOutputPort.hpp b/ds/include/videoOutputPort.hpp index c0fcba68..a9b71ade 100644 --- a/ds/include/videoOutputPort.hpp +++ b/ds/include/videoOutputPort.hpp @@ -1,9 +1,8 @@ - /* * If not stated otherwise in this file or this component's LICENSE file the * following copyright and licenses apply: * - * Copyright 2025 RDK Management + * Copyright 2016 RDK Management * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -39,7 +38,6 @@ #include #include "dsTypes.h" -#include "dsMgrNtf.h" /** * @file videoOutputPort.hpp @@ -79,43 +77,6 @@ class VideoOutputPort : public Enumerable { public: - struct ResolutionChange { - uint32_t width; - uint32_t height; - }; - - struct IEvent { - - // @brief On Resolution Pre changed - // @text OnResolutionPreChange - // @param resolution: resolution - virtual void OnResolutionPreChange(const ResolutionChange& resolution) { }; - - // @brief On Resolution Post change - // @text onResolutionPostChange - // @param resolution: resolution - virtual void OnResolutionPostChange(const ResolutionChange& resolution) { }; - - // @brief On HDCP Status change - // @text OnHDCPStatusChange - // @param hdcpStatus: HDCP Status - virtual void OnHDCPStatusChange(HDCPStatus hdcpStatus) { }; - - // @brief On Video Format update - // @text OnVideoFormatUpdate - // @param videoFormatHDR: Video format HDR standard - virtual void OnVideoFormatUpdate(HDRStandard videoFormatHDR) { }; - - // @brief HDCP Protocol version change - // @text OnHDCPProtocolChangeStatus - virtual void OnHDCPProtocolChangeStatus() { }; - - }; - - uint32_t Register(IEvent *listener); - uint32_t UnRegister(IEvent *listener); - - class Display { friend class VideoOutputPort; intptr_t _handle; diff --git a/ds/videoDevice.cpp b/ds/videoDevice.cpp index 8cee04c2..37452a0c 100644 --- a/ds/videoDevice.cpp +++ b/ds/videoDevice.cpp @@ -2,7 +2,7 @@ * If not stated otherwise in this file or this component's LICENSE file the * following copyright and licenses apply: * - * Copyright 2025 RDK Management + * Copyright 2016 RDK Management * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -332,30 +332,6 @@ int VideoDevice::getCurrentDisframerate(char *framerate) const return 0; } - -/** - * @fn void VideoDevice::Register(IEvent *listener) - * @brief This API is used to register the Events - * - * @return unint32_t - */ -uint32_t VideoDevice::Register(IEvent *listener) -{ - return 0; -} - - -/** - * @fn void VideoDevice::UnRegister(IEvent *listener) - * @brief This API is used to UnRegister the Events - * - * @return unint32_t - */ -uint32_t VideoDevice::UnRegister(IEvent *listener) -{ - return 0; -} - } /** @} */ diff --git a/ds/videoOutputPort.cpp b/ds/videoOutputPort.cpp index 02924c2e..5445e0dd 100644 --- a/ds/videoOutputPort.cpp +++ b/ds/videoOutputPort.cpp @@ -2,7 +2,7 @@ * If not stated otherwise in this file or this component's LICENSE file the * following copyright and licenses apply: * - * Copyright 2025 RDK Management + * Copyright 2016 RDK Management * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -949,32 +949,6 @@ void VideoOutputPort::Display::setAVIScanInformation(dsAVIScanInformation_t scan } } - -/** - * @fn void VideoOutputPort::Register(IEvent *listener) - * @brief This API is used to register the Events - * - * @return unint32_t - */ -uint32_t VideoOutputPort::Register(IEvent *listener) -{ - return 0; -} - - -/** - * @fn void VideoOutputPort::UnRegister(IEvent *listener) - * @brief This API is used to UnRegister the Events - * - * @return unint32_t - */ -uint32_t VideoOutputPort::UnRegister(IEvent *listener) -{ - return 0; -} - - - } /** @} */ //End of Doxygen tag From 7fe119353812df15e9068fb683c45e2f30ea3a4c Mon Sep 17 00:00:00 2001 From: Shrinivas Kamath Date: Sat, 23 Aug 2025 00:36:27 +0530 Subject: [PATCH 013/103] cov_build.sh cleanup --- cov_build.sh | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/cov_build.sh b/cov_build.sh index a4ded3fb..b1b04726 100755 --- a/cov_build.sh +++ b/cov_build.sh @@ -66,6 +66,8 @@ cd ${RDK_SOURCE_PATH} export STANDALONE_BUILD_ENABLED=y export DS_MGRS=$WORKDIR -echo "##### Triggering make" +find $WORKDIR -iname "*.o" -exec rm -v {} \; +find $WORKDIR -iname "*.so*" -exec rm -v {} \; +echo "##### Triggering make" make CFLAGS+='-fPIC -DDSMGR_LOGGER_ENABLED=ON -DRDK_DSHAL_NAME=\"libdshal.so\" -I${DS_IF_PATH}/include -I${DS_HAL_PATH} -I${DS_MGRS}/stubs -I${IARMBUS_PATH}/core -I${IARMBUS_PATH}/core/include -I${IARM_MGRS}/sysmgr/include -I${DS_MGRS}/ds/include -I${DS_MGRS}/rpc/include -I${POWER_IF_PATH}/include/ -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I${IARM_MGRS}/mfr/include/ -I${IARM_MGRS}/mfr/common -I${DEEPSLEEP_IF_PATH}/include -I${IARM_MGRS}/hal/include -I${IARM_MGRS}/power -I${IARM_MGRS}/power/include' LDFLAGS="-L/usr/lib/x86_64-linux-gnu/ -L/usr/local/include -lglib-2.0 -lIARMBus -lWPEFrameworkPowerController -ldshal" From 94b3d538bdaf6979a6541abf8acefc977ef23e10 Mon Sep 17 00:00:00 2001 From: Shrinivas Kamath Date: Sat, 23 Aug 2025 00:44:12 +0530 Subject: [PATCH 014/103] dtor to clean up CallbackList --- ds/iarm/IarmHostImpl.cpp | 51 ++++++++++++++++++++-------------------- ds/iarm/IarmHostImpl.hpp | 29 +++++++++++++++++++++-- 2 files changed, 53 insertions(+), 27 deletions(-) diff --git a/ds/iarm/IarmHostImpl.cpp b/ds/iarm/IarmHostImpl.cpp index 12b613af..9034547b 100644 --- a/ds/iarm/IarmHostImpl.cpp +++ b/ds/iarm/IarmHostImpl.cpp @@ -202,27 +202,15 @@ class IARMGroupVideoPort { // static data std::mutex IarmHostImpl::s_mutex; -IarmHostImpl::CallbackList IarmHostImpl::s_videoDeviceHandlers; -IarmHostImpl::CallbackList IarmHostImpl::s_videoPortHandlers; +IarmHostImpl::CallbackList IarmHostImpl::s_videoDeviceListeners; +IarmHostImpl::CallbackList IarmHostImpl::s_videoPortListeners; IarmHostImpl::~IarmHostImpl() { std::lock_guard lock(s_mutex); - s_videoDeviceHandlers.clear(); - s_videoPortHandlers.clear(); -} - -uint32_t IarmHostImpl::Register(IVideoDeviceEvents* listener) -{ - std::lock_guard lock(s_mutex); - return s_videoDeviceHandlers.Register(listener); -} - -uint32_t IarmHostImpl::UnRegister(IVideoDeviceEvents* listener) -{ - std::lock_guard lock(s_mutex); - return s_videoDeviceHandlers.UnRegister(listener); + s_videoDeviceListeners.Release(); + s_videoPortListeners.Release(); } template @@ -253,29 +241,42 @@ void IarmHostImpl::Dispatch(F&& fn) INT_ERROR("FATAL: Dispatch should be specialized for specific event types, but was called with a generic function"); } -// Specialization for IVideoDeviceEvents -template <> -void IarmHostImpl::Dispatch(std::function&& fn) +uint32_t IarmHostImpl::Register(IVideoDeviceEvents* listener) { - Dispatch(s_videoDeviceHandlers, std::move(fn)); + std::lock_guard lock(s_mutex); + return s_videoDeviceListeners.Register(listener); } -// Specialization for IVideoPortEvents +uint32_t IarmHostImpl::UnRegister(IVideoDeviceEvents* listener) +{ + std::lock_guard lock(s_mutex); + return s_videoDeviceListeners.UnRegister(listener); +} + +// Specialization for IVideoDeviceEvents template <> -void IarmHostImpl::Dispatch(std::function&& fn) +void IarmHostImpl::Dispatch(std::function&& fn) { - Dispatch(s_videoPortHandlers, std::move(fn)); + Dispatch(s_videoDeviceListeners, std::move(fn)); } uint32_t IarmHostImpl::Register(IVideoPortEvents* listener) { std::lock_guard lock(s_mutex); - return s_videoPortHandlers.Register(listener); + return s_videoPortListeners.Register(listener); } uint32_t IarmHostImpl::UnRegister(IVideoPortEvents* listener) { std::lock_guard lock(s_mutex); - return s_videoPortHandlers.UnRegister(listener); + return s_videoPortListeners.UnRegister(listener); } + +// Specialization for IVideoPortEvents +template <> +void IarmHostImpl::Dispatch(std::function&& fn) +{ + Dispatch(s_videoPortListeners, std::move(fn)); +} + } // namespace device diff --git a/ds/iarm/IarmHostImpl.hpp b/ds/iarm/IarmHostImpl.hpp index 2af30eb3..0f90af95 100644 --- a/ds/iarm/IarmHostImpl.hpp +++ b/ds/iarm/IarmHostImpl.hpp @@ -36,6 +36,19 @@ class IarmHostImpl { template class CallbackList : public std::list { public: + CallbackList() = default; + + ~CallbackList() + { + Release(); + } + + // disable copy and move semantics + CallbackList(const CallbackList&) = delete; + CallbackList& operator=(const CallbackList&) = delete; + CallbackList(CallbackList&&) = delete; + CallbackList& operator=(CallbackList&&) = delete; + uint32_t Register(T listener) { if (listener == nullptr) { @@ -92,6 +105,18 @@ class IarmHostImpl { return 0; } + uint32_t Release() + { + if (m_registered) { + m_registered = false; + IARMGroup::UnRegister(); + } + + this->clear(); + INT_INFO("%s released", typeid(T).name()); + return 0; // Success + } + private: bool m_registered = false; // really required ? }; @@ -126,8 +151,8 @@ class IarmHostImpl { private: static std::mutex s_mutex; - static CallbackList s_videoDeviceHandlers; - static CallbackList s_videoPortHandlers; + static CallbackList s_videoDeviceListeners; + static CallbackList s_videoPortListeners; template static void Dispatch(const std::list& listeners, F&& fn); From 7a95632499e1f035f1f24e9f9bd50a4d1d29900a Mon Sep 17 00:00:00 2001 From: Shrinivas Kamath Date: Sat, 23 Aug 2025 01:30:04 +0530 Subject: [PATCH 015/103] minor cleanup before stating audio --- ds/iarm/IarmHostImpl.cpp | 3 +-- ds/iarm/IarmHostImpl.hpp | 4 ++-- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/ds/iarm/IarmHostImpl.cpp b/ds/iarm/IarmHostImpl.cpp index 9034547b..a5e05b1f 100644 --- a/ds/iarm/IarmHostImpl.cpp +++ b/ds/iarm/IarmHostImpl.cpp @@ -1,4 +1,3 @@ -#include #include #include #include @@ -177,7 +176,7 @@ class IARMGroupVideoPort { static void iarmVideoFormatUpdateHandler(const char* owner, IARM_EventId_t eventId, void* data, size_t len) { - INT_INFO("IARM_BUS_DSMGR_EVENT_VIDEO_FORMAT_UPDATE received %s %d", owner, eventId); + INT_INFO("IARM_BUS_DSMGR_EVENT_VIDEO_FORMAT_UPDATE received, eventId=%d", owner, eventId); IARM_Bus_DSMgr_EventData_t* eventData = (IARM_Bus_DSMgr_EventData_t*)data; diff --git a/ds/iarm/IarmHostImpl.hpp b/ds/iarm/IarmHostImpl.hpp index 0f90af95..4c6e69a1 100644 --- a/ds/iarm/IarmHostImpl.hpp +++ b/ds/iarm/IarmHostImpl.hpp @@ -28,8 +28,8 @@ namespace device { // Forward declaration for IARM Implementation Groups -struct IARMGroupVideoDevice; -struct IARMGroupVideoPort; +class IARMGroupVideoDevice; +class IARMGroupVideoPort; class IarmHostImpl { From 5a0acad133d9b1ee1caf37b25ae1fa735156beab Mon Sep 17 00:00:00 2001 From: Shrinivas Kamath Date: Sat, 23 Aug 2025 01:54:32 +0530 Subject: [PATCH 016/103] added implementation for IAudioPortEvents --- ds/host.cpp | 10 ++ ds/iarm/IarmHostImpl.cpp | 224 +++++++++++++++++++++++++++++++++++++++ ds/iarm/IarmHostImpl.hpp | 12 +++ ds/include/host.hpp | 57 ++++++++++ 4 files changed, 303 insertions(+) diff --git a/ds/host.cpp b/ds/host.cpp index 8055e6ca..69300e21 100644 --- a/ds/host.cpp +++ b/ds/host.cpp @@ -806,6 +806,16 @@ uint32_t Host::UnRegister(IVideoPortEvents* listener) return impl().UnRegister(listener); } +uint32_t Host::Register(IAudioPortEvents* listener) +{ + return impl().Register(listener); +} + +uint32_t Host::UnRegister(IAudioPortEvents* listener) +{ + return impl().UnRegister(listener); +} + /** @} */ } // namespace device diff --git a/ds/iarm/IarmHostImpl.cpp b/ds/iarm/IarmHostImpl.cpp index a5e05b1f..0ab1db65 100644 --- a/ds/iarm/IarmHostImpl.cpp +++ b/ds/iarm/IarmHostImpl.cpp @@ -12,6 +12,7 @@ using IVideoDeviceEvents = device::Host::IVideoDeviceEvents; using IVideoPortEvents = device::Host::IVideoPortEvents; +using IAudioPortEvents = device::Host::IAudioPortEvents; namespace device { @@ -199,10 +200,213 @@ class IARMGroupVideoPort { }; }; +class IARMGroupAudioPort { +public: + static bool Register() + { + return RegisterIarmEvents(handlers); + } + + static bool UnRegister() + { + return UnregisterIarmEvents(handlers); + } + +private: + static void iarmAssociatedAudioMixingChangedHandler(const char*, IARM_EventId_t eventId, void* data, size_t len) + { + INT_INFO("IARM_BUS_DSMGR_EVENT_AUDIO_ASSOCIATED_AUDIO_MIXING_CHANGED received, eventId=%d", eventId); + + IARM_Bus_DSMgr_EventData_t* eventData = (IARM_Bus_DSMgr_EventData_t*)data; + + if (eventData) { + bool isEnabled = eventData->data.AssociatedAudioMixingInfo.mixing; + + IarmHostImpl::Dispatch([isEnabled](IAudioPortEvents* listener) { + listener->OnAssociatedAudioMixingChanged(isEnabled); + }); + } else { + INT_ERROR("Invalid data received for associated audio mixing change"); + } + }; + + static void iarmAudioFaderControlChangedHandler(const char*, IARM_EventId_t eventId, void* data, size_t len) + { + INT_INFO("IARM_BUS_DSMGR_EVENT_AUDIO_FADER_CONTROL_CHANGED received, eventId=%d", eventId); + + IARM_Bus_DSMgr_EventData_t* eventData = (IARM_Bus_DSMgr_EventData_t*)data; + + if (eventData) { + int mixerBalance = eventData->data.FaderControlInfo.mixerbalance; + + IarmHostImpl::Dispatch([mixerBalance](IAudioPortEvents* listener) { + listener->OnAudioFaderControlChanged(mixerBalance); + }); + } else { + INT_ERROR("Invalid data received for audio fader control change"); + } + }; + + static void iarmAudioPrimaryLanguageChangedHandler(const char*, IARM_EventId_t eventId, void* data, size_t len) + { + INT_INFO("IARM_BUS_DSMGR_EVENT_AUDIO_PRIMARY_LANGUAGE_CHANGED received, eventId=%d", eventId); + + IARM_Bus_DSMgr_EventData_t* eventData = (IARM_Bus_DSMgr_EventData_t*)data; + + if (eventData) { + std::string primaryLanguage(eventData->data.AudioLanguageInfo.audioLanguage, sizeof(eventData->data.AudioLanguageInfo.audioLanguage)); + + IarmHostImpl::Dispatch([&primaryLanguage](IAudioPortEvents* listener) { + listener->OnAudioPrimaryLanguageChanged(primaryLanguage); + }); + } else { + INT_ERROR("Invalid data received for primary language change"); + } + }; + + static void iarmAudioSecondaryLanguageChangedHandler(const char*, IARM_EventId_t eventId, void* data, size_t len) + { + INT_INFO("IARM_BUS_DSMGR_EVENT_AUDIO_SECONDARY_LANGUAGE_CHANGED received, eventId=%d", eventId); + + IARM_Bus_DSMgr_EventData_t* eventData = (IARM_Bus_DSMgr_EventData_t*)data; + + if (eventData) { + std::string secondaryLanguage(eventData->data.AudioLanguageInfo.audioLanguage, sizeof(eventData->data.AudioLanguageInfo.audioLanguage)); + + IarmHostImpl::Dispatch([&secondaryLanguage](IAudioPortEvents* listener) { + listener->OnAudioSecondaryLanguageChanged(secondaryLanguage); + }); + } else { + INT_ERROR("Invalid data received for secondary language change"); + } + }; + + static void iarmAudioOutHotPlugHandler(const char*, IARM_EventId_t eventId, void* data, size_t len) + { + INT_INFO("IARM_BUS_DSMGR_EVENT_AUDIO_OUT_HOTPLUG received, eventId=%d", eventId); + IARM_Bus_DSMgr_EventData_t* eventData = (IARM_Bus_DSMgr_EventData_t*)data; + if (eventData) { + dsAudioPortType_t portType = eventData->data.audio_out_connect.portType; + int uiPortNumber = eventData->data.audio_out_connect.uiPortNo; + bool isPortConnected = eventData->data.audio_out_connect.isPortConnected; + + IarmHostImpl::Dispatch([portType, uiPortNumber, isPortConnected](IAudioPortEvents* listener) { + listener->OnAudioOutHotPlug(portType, uiPortNumber, isPortConnected); + }); + } else { + INT_ERROR("Invalid data received for audio out hot plug change"); + } + }; + + static void iarmDolbyAtmosCapabilitiesChangedHandler(const char*, IARM_EventId_t eventId, void* data, size_t len) + { + INT_INFO("IARM_BUS_DSMGR_EVENT_ATMOS_CAPS_CHANGED received, eventId=%d", eventId); + IARM_Bus_DSMgr_EventData_t* eventData = (IARM_Bus_DSMgr_EventData_t*)data; + if (eventData) { + dsATMOSCapability_t atmosCapability = eventData->data.AtmosCapsChange.caps; + bool status = eventData->data.AtmosCapsChange.status; + + IarmHostImpl::Dispatch([atmosCapability, status](IAudioPortEvents* listener) { + listener->OnDolbyAtmosCapabilitiesChanged(atmosCapability, status); + }); + + } else { + INT_ERROR("Invalid data received for Dolby Atmos capabilities change"); + } + }; + + // TODO: requires dsMgr.h header for dsAudioPortState_t ? + static void iarmAudioPortStateChangedHandler(const char*, IARM_EventId_t eventId, void* data, size_t len) + { + INT_INFO("IARM_BUS_DSMGR_EVENT_AUDIO_PORT_STATE received, eventId=%d", eventId); + + IARM_Bus_DSMgr_EventData_t* eventData = (IARM_Bus_DSMgr_EventData_t*)data; + + if (eventData) { + dsAudioPortState_t audioPortState = eventData->data.AudioPortStateInfo.audioPortState; + + IarmHostImpl::Dispatch([audioPortState](IAudioPortEvents* listener) { + // TODO: + // listener->OnAudioPortStateChanged(audioPortState); + }); + } else { + INT_ERROR("Invalid data received for audio port state change"); + } + }; + + static void iarmAudioModeEventHandler(const char*, IARM_EventId_t eventId, void* data, size_t len) + { + INT_INFO("IARM_BUS_DSMGR_EVENT_AUDIO_MODE received, eventId=%d", eventId); + + IARM_Bus_DSMgr_EventData_t* eventData = (IARM_Bus_DSMgr_EventData_t*)data; + + if (eventData) { + // TODO: recheck as using static_cast here + dsAudioPortType_t audioPortType = static_cast(eventData->data.Audioport.type); + dsAudioStereoMode_t audioStereoMode = static_cast(eventData->data.Audioport.mode); + + IarmHostImpl::Dispatch([audioPortType, audioStereoMode](IAudioPortEvents* listener) { + listener->OnAudioModeEvent(audioPortType, audioStereoMode); + }); + } else { + INT_ERROR("Invalid data received for audio mode change"); + } + }; + + static void iarmAudioLevelChangedEventHandler(const char*, IARM_EventId_t eventId, void* data, size_t len) + { + INT_INFO("IARM_BUS_DSMGR_EVENT_AUDIO_LEVEL_CHANGED received, eventId=%d", eventId); + + IARM_Bus_DSMgr_EventData_t* eventData = (IARM_Bus_DSMgr_EventData_t*)data; + + if (eventData) { + int audioLevel = eventData->data.AudioLevelInfo.level; + + IarmHostImpl::Dispatch([audioLevel](IAudioPortEvents* listener) { + listener->OnAudioLevelChangedEvent(audioLevel); + }); + } else { + INT_ERROR("Invalid data received for audio level change"); + } + }; + + static void iarmAudioFormatUpdateHandler(const char*, IARM_EventId_t eventId, void* data, size_t len) + { + INT_INFO("IARM_BUS_DSMGR_EVENT_AUDIO_FORMAT_UPDATE received, eventId=%d", eventId); + + IARM_Bus_DSMgr_EventData_t* eventData = (IARM_Bus_DSMgr_EventData_t*)data; + + if (eventData) { + dsAudioFormat_t audioFormat = eventData->data.AudioFormatInfo.audioFormat; + + IarmHostImpl::Dispatch([audioFormat](IAudioPortEvents* listener) { + listener->OnAudioFormatUpdate(audioFormat); + }); + } else { + INT_ERROR("Invalid data received for audio format update"); + } + }; + +private: + static constexpr EventHandlerMapping handlers[] = { + { IARM_BUS_DSMGR_EVENT_AUDIO_ASSOCIATED_AUDIO_MIXING_CHANGED, &IARMGroupAudioPort::iarmAssociatedAudioMixingChangedHandler }, + { IARM_BUS_DSMGR_EVENT_AUDIO_FADER_CONTROL_CHANGED, &IARMGroupAudioPort::iarmAudioFaderControlChangedHandler }, + { IARM_BUS_DSMGR_EVENT_AUDIO_PRIMARY_LANGUAGE_CHANGED, &IARMGroupAudioPort::iarmAudioPrimaryLanguageChangedHandler }, + { IARM_BUS_DSMGR_EVENT_AUDIO_SECONDARY_LANGUAGE_CHANGED, &IARMGroupAudioPort::iarmAudioSecondaryLanguageChangedHandler }, + { IARM_BUS_DSMGR_EVENT_AUDIO_OUT_HOTPLUG, &IARMGroupAudioPort::iarmAudioOutHotPlugHandler }, + { IARM_BUS_DSMGR_EVENT_ATMOS_CAPS_CHANGED, &IARMGroupAudioPort::iarmDolbyAtmosCapabilitiesChangedHandler }, + { IARM_BUS_DSMGR_EVENT_AUDIO_PORT_STATE, &IARMGroupAudioPort::iarmAudioPortStateChangedHandler }, + { IARM_BUS_DSMGR_EVENT_AUDIO_MODE, &IARMGroupAudioPort::iarmAudioModeEventHandler }, + { IARM_BUS_DSMGR_EVENT_AUDIO_LEVEL_CHANGED, &IARMGroupAudioPort::iarmAudioLevelChangedEventHandler }, + { IARM_BUS_DSMGR_EVENT_AUDIO_FORMAT_UPDATE, &IARMGroupAudioPort::iarmAudioFormatUpdateHandler }, + }; +}; + // static data std::mutex IarmHostImpl::s_mutex; IarmHostImpl::CallbackList IarmHostImpl::s_videoDeviceListeners; IarmHostImpl::CallbackList IarmHostImpl::s_videoPortListeners; +IarmHostImpl::CallbackList IarmHostImpl::s_audioPortListeners; IarmHostImpl::~IarmHostImpl() { @@ -210,6 +414,7 @@ IarmHostImpl::~IarmHostImpl() s_videoDeviceListeners.Release(); s_videoPortListeners.Release(); + s_audioPortListeners.Release(); } template @@ -278,4 +483,23 @@ void IarmHostImpl::Dispatch(std::function&& fn Dispatch(s_videoPortListeners, std::move(fn)); } +uint32_t IarmHostImpl::Register(IAudioPortEvents* listener) +{ + std::lock_guard lock(s_mutex); + return s_audioPortListeners.Register(listener); +} + +uint32_t IarmHostImpl::UnRegister(IAudioPortEvents* listener) +{ + std::lock_guard lock(s_mutex); + return s_audioPortListeners.UnRegister(listener); +} + +// Specialization for IAudioPortEvents +template <> +void IarmHostImpl::Dispatch(std::function&& fn) +{ + Dispatch(s_audioPortListeners, std::move(fn)); +} + } // namespace device diff --git a/ds/iarm/IarmHostImpl.hpp b/ds/iarm/IarmHostImpl.hpp index 4c6e69a1..8f28f576 100644 --- a/ds/iarm/IarmHostImpl.hpp +++ b/ds/iarm/IarmHostImpl.hpp @@ -30,6 +30,7 @@ namespace device { // Forward declaration for IARM Implementation Groups class IARMGroupVideoDevice; class IARMGroupVideoPort; +class IARMGroupAudioPort; class IarmHostImpl { @@ -124,6 +125,7 @@ class IarmHostImpl { public: using IVideoDeviceEvents = device::Host::IVideoDeviceEvents; using IVideoPortEvents = device::Host::IVideoPortEvents; + using IAudioPortEvents = device::Host::IAudioPortEvents; IarmHostImpl(); ~IarmHostImpl(); @@ -144,6 +146,14 @@ class IarmHostImpl { // @param listener: class object implementing the listener uint32_t UnRegister(IVideoPortEvents* listener); + // @brief Register a listener for audio port events + // @param listener: class object implementing the listener + uint32_t Register(IAudioPortEvents* listener); + + // @brief UnRegister a listener for audio port events + // @param listener: class object implementing the listener + uint32_t UnRegister(IAudioPortEvents* listener); + // TODO: avoid public template static void Dispatch(F&& fn); @@ -153,11 +163,13 @@ class IarmHostImpl { static CallbackList s_videoDeviceListeners; static CallbackList s_videoPortListeners; + static CallbackList s_audioPortListeners; template static void Dispatch(const std::list& listeners, F&& fn); friend class IarmHostPriv; friend class IARMGroupVideoDevice; + friend class IARMGroupVideoPort; }; } // namespace device diff --git a/ds/include/host.hpp b/ds/include/host.hpp index b7982f23..a5b27186 100644 --- a/ds/include/host.hpp +++ b/ds/include/host.hpp @@ -30,6 +30,7 @@ #include #include "audioOutputPort.hpp" +#include "dsAVDTypes.h" #include "list.hpp" #include "sleepMode.hpp" #include "videoDevice.hpp" @@ -106,6 +107,62 @@ class Host { // @param listener: class object implementing the listener uint32_t UnRegister(IVideoPortEvents* listener); + struct IAudioPortEvents { + + // @brief Associated Audio mixing changed + // @param mixing: true or false + virtual void OnAssociatedAudioMixingChanged(bool mixing) { }; + + // @brief Audio Fader balance changed + // @param mixerBalance: applied mixer balance value + virtual void OnAudioFaderControlChanged(int mixerBalance) { }; + + // @brief Primary language for Audio changed + // @param primaryLanguage: current primary language for audio + virtual void OnAudioPrimaryLanguageChanged(const std::string& primaryLanguage) { }; + + // @brief Secondary language for Audio changed + // @param secondaryLanguage: current secondary language for audio + virtual void OnAudioSecondaryLanguageChanged(const std::string& secondaryLanguage) { }; + + // @brief Audio output hot plug event + // @param portType: Type of audio port see AudioPortType + // @param uiPortNumber: The port number assigned by UI + // @param isPortConnected: true (connected) or false (not connected) + virtual void OnAudioOutHotPlug(dsAudioPortType_t portType, int uiPortNumber, bool isPortConnected) { }; + + // @brief Dolby Atmos capabilities changed + // @param atmosCapability: the Dolby Atmos capability + // @param status: true (available) or false (not available) + virtual void OnDolbyAtmosCapabilitiesChanged(dsATMOSCapability_t atmosCapability, bool status) { }; + + // @brief Audio port state changed + // @param audioPortState: audio port state + // TODO: requires dsMgr.h header include ?? + // virtual void OnAudioPortStateChanged(dsAudioPortState_t audioPortState) { }; + + // @brief Audio mode for the respective audio port - raised for every type of port + // @param audioPortType: audio port type see dsAudioPortType_t + // @param audioStereoMode: audio stereo mode - see dsAudioStereoMode_t + virtual void OnAudioModeEvent(dsAudioPortType_t audioPortType, dsAudioStereoMode_t audioStereoMode) { }; + + // @brief Audio level changed + // @param audioiLevel: audio level value + virtual void OnAudioLevelChangedEvent(int audioLevel) { }; + + // @brief Audio Output format changed + // @param audioFormat: Type of audio format see AudioFormat + virtual void OnAudioFormatUpdate(dsAudioFormat_t audioFormat) { }; + }; + + // @brief Register a listener for audio port events + // @param listener: class object implementing the listener + uint32_t Register(IAudioPortEvents* listener); + + // @brief UnRegister a listener for audio port events + // @param listener: class object implementing the listener + uint32_t UnRegister(IAudioPortEvents* listener); + bool setPowerMode(int mode); int getPowerMode(); SleepMode getPreferredSleepMode(); From aa3d8dfd5588b5f934a58b39b22bffe399883ccc Mon Sep 17 00:00:00 2001 From: Shrinivas Kamath Date: Sat, 23 Aug 2025 02:03:35 +0530 Subject: [PATCH 017/103] revert / clean up audioOutputPort --- ds/audioOutputPort.cpp | 22 ---------------------- 1 file changed, 22 deletions(-) diff --git a/ds/audioOutputPort.cpp b/ds/audioOutputPort.cpp index 1af09018..e5c8fabc 100644 --- a/ds/audioOutputPort.cpp +++ b/ds/audioOutputPort.cpp @@ -27,7 +27,6 @@ **/ - #include "audioEncoding.hpp" #include "audioCompression.hpp" #include "audioStereoMode.hpp" @@ -2002,30 +2001,9 @@ void AudioOutputPort::getHdmiArcPortId(int *portId) } -/** - * @fn void AudioOutputPort::Register(IEvent *listener) - * @brief This API is used to register the Events - * - * @return unint32_t - */ -uint32_t AudioOutputPort::Register(IEvent *listener) -{ - return 0; -} - -/** - * @fn void AudioOutputPort::UnRegister(IEvent *listener) - * @brief This API is used to UnRegister the Events - * - * @return unint32_t - */ -uint32_t AudioOutputPort::UnRegister(IEvent *listener) -{ - return 0; } -} /** @} */ /** @} */ From f6ea35a3e1a3a5a654f28c360065fd3b0f9b920a Mon Sep 17 00:00:00 2001 From: Shrinivas Kamath Date: Sat, 23 Aug 2025 02:17:50 +0530 Subject: [PATCH 018/103] make dispatch private --- ds/iarm/IarmHostImpl.hpp | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/ds/iarm/IarmHostImpl.hpp b/ds/iarm/IarmHostImpl.hpp index 8f28f576..07e724b8 100644 --- a/ds/iarm/IarmHostImpl.hpp +++ b/ds/iarm/IarmHostImpl.hpp @@ -154,10 +154,6 @@ class IarmHostImpl { // @param listener: class object implementing the listener uint32_t UnRegister(IAudioPortEvents* listener); - // TODO: avoid public - template - static void Dispatch(F&& fn); - private: static std::mutex s_mutex; @@ -168,8 +164,11 @@ class IarmHostImpl { template static void Dispatch(const std::list& listeners, F&& fn); - friend class IarmHostPriv; + template + static void Dispatch(F&& fn); + friend class IARMGroupVideoDevice; friend class IARMGroupVideoPort; + friend class IARMGroupAudioPort; }; } // namespace device From 7fba7beb304a39214ffb2c38efc97aaf61ea9532 Mon Sep 17 00:00:00 2001 From: Shrinivas Kamath Date: Sat, 23 Aug 2025 02:24:32 +0530 Subject: [PATCH 019/103] copilot review rework --- ds/Makefile | 2 +- ds/iarm/IarmHostImpl.cpp | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/ds/Makefile b/ds/Makefile index ac6c291e..132782e2 100644 --- a/ds/Makefile +++ b/ds/Makefile @@ -23,7 +23,7 @@ LIBNAMEFULL := lib$(LIBNAME).so LIBNAMECLI := lib$(LIBNAME)-cli.so INSTALL := $(PWD)/install OBJS := $(patsubst %.cpp,%.o,$(wildcard *.cpp)) -# In furure add a conditional to choose implementation class based on build configuration +# In future add a conditional to choose implementation class based on build configuration OBJS += iarm/IarmHostImpl.o #$(PWD)/config should be first include path # to override generic configs diff --git a/ds/iarm/IarmHostImpl.cpp b/ds/iarm/IarmHostImpl.cpp index 0ab1db65..8f48f050 100644 --- a/ds/iarm/IarmHostImpl.cpp +++ b/ds/iarm/IarmHostImpl.cpp @@ -175,9 +175,9 @@ class IARMGroupVideoPort { } } - static void iarmVideoFormatUpdateHandler(const char* owner, IARM_EventId_t eventId, void* data, size_t len) + static void iarmVideoFormatUpdateHandler(const char*, IARM_EventId_t eventId, void* data, size_t len) { - INT_INFO("IARM_BUS_DSMGR_EVENT_VIDEO_FORMAT_UPDATE received, eventId=%d", owner, eventId); + INT_INFO("IARM_BUS_DSMGR_EVENT_VIDEO_FORMAT_UPDATE received, eventId=%d", eventId); IARM_Bus_DSMgr_EventData_t* eventData = (IARM_Bus_DSMgr_EventData_t*)data; From 072e09b04990acacbdbe5d282739ff0890393293 Mon Sep 17 00:00:00 2001 From: Shrinivas Kamath Date: Sat, 23 Aug 2025 02:27:10 +0530 Subject: [PATCH 020/103] clean up audioOutputPort --- ds/include/audioOutputPort.hpp | 73 ++-------------------------------- 1 file changed, 3 insertions(+), 70 deletions(-) diff --git a/ds/include/audioOutputPort.hpp b/ds/include/audioOutputPort.hpp index fad7b58b..9dec5126 100644 --- a/ds/include/audioOutputPort.hpp +++ b/ds/include/audioOutputPort.hpp @@ -2,7 +2,7 @@ * If not stated otherwise in this file or this component's LICENSE file the * following copyright and licenses apply: * - * Copyright 2025 RDK Management + * Copyright 2016 RDK Management * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -35,8 +35,9 @@ #include "list.hpp" #include "enumerable.hpp" #include "dsTypes.h" + #include "dsError.h" -#include "dsMgrNtf.h" + #include #include @@ -51,9 +52,6 @@ class AudioOutputPortType; class AudioOutputPortConfig; - - - /** * @class AudioOutputPort * @brief Class extending Enumerable to implement the audiooutputport interface. @@ -84,73 +82,8 @@ class AudioOutputPort : public Enumerable { bool _muted; //!< Method variable to check whether audio is muted or not. - - - public: - struct IEvent{ - - // @brief Associated Audio mixing changed - // @text onAssociatedAudioMixingChanged - // @param mixing: true or false - virtual void OnAssociatedAudioMixingChanged(bool mixing) { }; - - // @brief Audio Fader balance changed - // @text onAudioFaderControlChanged - // @param mixerBalance: applied mixer balance value - virtual void OnAudioFaderControlChanged(int mixerBalance) { }; - - // @brief Primary language for Audio changed - // @text onAudioPrimaryLanguageChanged - // @param primaryLanguage: current primary language for audio - virtual void OnAudioPrimaryLanguageChanged(const std::string& primaryLanguage) { }; - - // @brief Secondary language for Audio changed - // @text onAudioSecondaryLanguageChanged - // @param secondaryLanguage: current secondary language for audio - virtual void OnAudioSecondaryLanguageChanged(const std::string& secondaryLanguage) { }; - - // @brief Audio output hot plug event - // @text onAudioOutHotPlug - // @param portType: Type of audio port see AudioPortType - // @param uiPortNumber: The port number assigned by UI - // @param isPortConnected: true (connected) or false (not connected) - virtual void OnAudioOutHotPlug(AudioPortType portType, int uiPortNumber, bool isPortConnected) { }; - - - // @brief Dolby Atmos capabilities changed - // @text onDolbyAtmosCapabilitiesChanged - // @param atmosCapability: the dolby atmos capability - // @param status: true (available) or false (not available) - virtual void OnDolbyAtmosCapabilitiesChanged(DolbyAtmosCapability atmosCapability, bool status) { }; - - // @brief Audio port state changed - // @text onAudioPortStateChanged - // @param audioPortState: audio port state - virtual void OnAudioPortStateChanged(AudioPortState audioPortState) { }; - - // @brief Audio mode for the respective audio port - raised for every type of port - // @text onAudioModeEvent - // @param audioPortType: audio port type see AudioPortType - // @param audioMode: audio mode - see audioStereoMode - virtual void OnAudioModeEvent(AudioPortType audioPortType, AudioStereoMode audioStereoMode) { }; - - // @brief Audio level changed - // @text OnAudioLevelChangedEvent - // @param audioiLevel: audio level value - virtual void OnAudioLevelChangedEvent(int audioLevel) { }; - - // @brief Audio Output format changed - // @text onAudioFormatUpdate - // @param audioFormat: Type of audio format see AudioFormat - virtual void OnAudioFormatUpdate(AudioFormat audioFormat) { }; - - }; - - uint32_t Register(IEvent *listener); - uint32_t UnRegister(IEvent *listener); - static AudioOutputPort & getInstance(int id); static AudioOutputPort & getInstance(const std::string &name); From e4bbd3d63bc751f32ab807ed921b4dff9d53eb8b Mon Sep 17 00:00:00 2001 From: Shrinivas Kamath Date: Sat, 23 Aug 2025 02:51:04 +0530 Subject: [PATCH 021/103] some more cleanupgit add . --- ds/host.cpp | 19 ++++--------------- ds/iarm/IarmHostImpl.cpp | 30 +++++++++++++++--------------- ds/iarm/IarmHostImpl.hpp | 6 +++--- 3 files changed, 22 insertions(+), 33 deletions(-) diff --git a/ds/host.cpp b/ds/host.cpp index 69300e21..223c6106 100644 --- a/ds/host.cpp +++ b/ds/host.cpp @@ -28,22 +28,17 @@ #include -#include -#include "iarmProxy.hpp" +#include + #include "audioOutputPortConfig.hpp" #include "videoOutputPortConfig.hpp" #include "list.hpp" #include "host.hpp" #include "videoDeviceConfig.hpp" -#include "dsVideoPort.h" -#include "dsVideoDevice.h" #include "dsAudio.h" -#include "dsDisplay.h" -#include "dslogger.h" #include "dsHost.h" -#include "dsTypes.h" #include "unsupportedOperationException.hpp" -#include "hostEDID.hpp" +/*#include "hostEDID.hpp"*/ #include "dsInternal.h" #include "iarm/IarmHostImpl.hpp" @@ -69,13 +64,7 @@ Host::Host() Host::~Host() { - if (m_impl) { - m_impl.reset(); - } - - if (true) { - IARMProxy::getInstance().UnRegisterPowerEventHandler(); - } + m_impl = nullptr; } /** diff --git a/ds/iarm/IarmHostImpl.cpp b/ds/iarm/IarmHostImpl.cpp index 8f48f050..1e4234af 100644 --- a/ds/iarm/IarmHostImpl.cpp +++ b/ds/iarm/IarmHostImpl.cpp @@ -24,7 +24,7 @@ struct EventHandlerMapping { // UnregisterIarmEvents can be called by RegisterIarmEvents in case of failure. // Nence defined before RegisterIarmEvents template -static bool UnregisterIarmEvents(const EventHandlerMapping (&handlers)[N]) +static bool unregisterIarmEvents(const EventHandlerMapping (&handlers)[N]) { bool unsubscribed = true; @@ -38,7 +38,7 @@ static bool UnregisterIarmEvents(const EventHandlerMapping (&handlers)[N]) } template -static bool RegisterIarmEvents(const EventHandlerMapping (&handlers)[N]) +static bool registerIarmEvents(const EventHandlerMapping (&handlers)[N]) { bool subscribed = true; @@ -52,7 +52,7 @@ static bool RegisterIarmEvents(const EventHandlerMapping (&handlers)[N]) if (!subscribed) { // in case of failure / partial failure // we should unregister any handlers that were registered - UnregisterIarmEvents(handlers); + unregisterIarmEvents(handlers); } return subscribed; @@ -62,14 +62,14 @@ static bool RegisterIarmEvents(const EventHandlerMapping (&handlers)[N]) // Thread safety to be ensured by the caller class IARMGroupVideoDevice { public: - static bool Register() + static bool RegisterIarmEvents() { - return RegisterIarmEvents(handlers); + return registerIarmEvents(handlers); } - static bool UnRegister() + static bool UnRegisterIarmEvents() { - return UnregisterIarmEvents(handlers); + return unregisterIarmEvents(handlers); } private: @@ -115,14 +115,14 @@ class IARMGroupVideoDevice { class IARMGroupVideoPort { public: - static bool Register() + static bool RegisterIarmEvents() { - return RegisterIarmEvents(handlers); + return registerIarmEvents(handlers); } - static bool UnRegister() + static bool UnRegisterIarmEvents() { - return UnregisterIarmEvents(handlers); + return unregisterIarmEvents(handlers); } private: @@ -202,14 +202,14 @@ class IARMGroupVideoPort { class IARMGroupAudioPort { public: - static bool Register() + static bool RegisterIarmEvents() { - return RegisterIarmEvents(handlers); + return registerIarmEvents(handlers); } - static bool UnRegister() + static bool UnRegisterIarmEvents() { - return UnregisterIarmEvents(handlers); + return unregisterIarmEvents(handlers); } private: diff --git a/ds/iarm/IarmHostImpl.hpp b/ds/iarm/IarmHostImpl.hpp index 07e724b8..16fe866a 100644 --- a/ds/iarm/IarmHostImpl.hpp +++ b/ds/iarm/IarmHostImpl.hpp @@ -58,7 +58,7 @@ class IarmHostImpl { } if (!m_registered) { - m_registered = IARMGroup::Register(); + m_registered = IARMGroup::RegisterIarmEvents(); } if (!m_registered) { @@ -100,7 +100,7 @@ class IarmHostImpl { if (this->empty() && m_registered) { m_registered = false; - IARMGroup::UnRegister(); + IARMGroup::UnRegisterIarmEvents(); } return 0; @@ -110,7 +110,7 @@ class IarmHostImpl { { if (m_registered) { m_registered = false; - IARMGroup::UnRegister(); + IARMGroup::UnRegisterIarmEvents(); } this->clear(); From afc86a44ab904494997b7ba403194adffcb9bd56 Mon Sep 17 00:00:00 2001 From: Shrinivas Kamath Date: Sat, 23 Aug 2025 02:58:37 +0530 Subject: [PATCH 022/103] some more cleanupgit status --- ds/iarm/IarmHostImpl.cpp | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/ds/iarm/IarmHostImpl.cpp b/ds/iarm/IarmHostImpl.cpp index 1e4234af..b22e294d 100644 --- a/ds/iarm/IarmHostImpl.cpp +++ b/ds/iarm/IarmHostImpl.cpp @@ -22,40 +22,40 @@ struct EventHandlerMapping { }; // UnregisterIarmEvents can be called by RegisterIarmEvents in case of failure. -// Nence defined before RegisterIarmEvents +// Hence defined before RegisterIarmEvents template static bool unregisterIarmEvents(const EventHandlerMapping (&handlers)[N]) { - bool unsubscribed = true; + bool registered = true; for (const auto& eh : handlers) { if (IARM_RESULT_SUCCESS != IARM_Bus_UnRegisterEventHandler(IARM_BUS_DSMGR_NAME, eh.eventId)) { INT_ERROR("Failed to unregister IARM event handler for %d", eh.eventId); - unsubscribed = false; + registered = false; } } - return unsubscribed; + return registered; } template static bool registerIarmEvents(const EventHandlerMapping (&handlers)[N]) { - bool subscribed = true; + bool unregistered = true; for (const auto& eh : handlers) { if (IARM_RESULT_SUCCESS != IARM_Bus_RegisterEventHandler(IARM_BUS_DSMGR_NAME, eh.eventId, eh.handler)) { INT_ERROR("Failed to register IARM event handler for %d", eh.eventId); - subscribed = false; + unregistered = false; } } - if (!subscribed) { + if (!unregistered) { // in case of failure / partial failure // we should unregister any handlers that were registered unregisterIarmEvents(handlers); } - return subscribed; + return unregistered; } // IARMGroupXYZ are c to c++ shim (all methods are static) From 97f054a309ce813344c2c5447cd3b6524e1592e2 Mon Sep 17 00:00:00 2001 From: Shrinivas Kamath Date: Sat, 23 Aug 2025 03:14:24 +0530 Subject: [PATCH 023/103] some more cleanup!! --- ds/iarm/IarmHostImpl.cpp | 27 +++++++++++++++------------ ds/iarm/IarmHostImpl.hpp | 8 ++++---- 2 files changed, 19 insertions(+), 16 deletions(-) diff --git a/ds/iarm/IarmHostImpl.cpp b/ds/iarm/IarmHostImpl.cpp index b22e294d..a61ec019 100644 --- a/ds/iarm/IarmHostImpl.cpp +++ b/ds/iarm/IarmHostImpl.cpp @@ -21,41 +21,44 @@ struct EventHandlerMapping { IARM_EventHandler_t handler; }; -// UnregisterIarmEvents can be called by RegisterIarmEvents in case of failure. -// Hence defined before RegisterIarmEvents +// unregisterIarmEvents can be called by registerIarmEvents in case of failure. +// Hence defined before registerIarmEvents template static bool unregisterIarmEvents(const EventHandlerMapping (&handlers)[N]) { - bool registered = true; + bool unregistered = true; for (const auto& eh : handlers) { if (IARM_RESULT_SUCCESS != IARM_Bus_UnRegisterEventHandler(IARM_BUS_DSMGR_NAME, eh.eventId)) { INT_ERROR("Failed to unregister IARM event handler for %d", eh.eventId); - registered = false; + unregistered = false; + // don't break here, try to unregister all handlers } } - return registered; + return unregistered; } template static bool registerIarmEvents(const EventHandlerMapping (&handlers)[N]) { - bool unregistered = true; + bool registered = true; for (const auto& eh : handlers) { if (IARM_RESULT_SUCCESS != IARM_Bus_RegisterEventHandler(IARM_BUS_DSMGR_NAME, eh.eventId, eh.handler)) { INT_ERROR("Failed to register IARM event handler for %d", eh.eventId); - unregistered = false; + registered = false; + // no point in continuing as we will attempt to unregister anyway + break; } } - if (!unregistered) { + if (!registered) { // in case of failure / partial failure // we should unregister any handlers that were registered unregisterIarmEvents(handlers); } - return unregistered; + return registered; } // IARMGroupXYZ are c to c++ shim (all methods are static) @@ -220,10 +223,10 @@ class IARMGroupAudioPort { IARM_Bus_DSMgr_EventData_t* eventData = (IARM_Bus_DSMgr_EventData_t*)data; if (eventData) { - bool isEnabled = eventData->data.AssociatedAudioMixingInfo.mixing; + bool mixing = eventData->data.AssociatedAudioMixingInfo.mixing; - IarmHostImpl::Dispatch([isEnabled](IAudioPortEvents* listener) { - listener->OnAssociatedAudioMixingChanged(isEnabled); + IarmHostImpl::Dispatch([mixing](IAudioPortEvents* listener) { + listener->OnAssociatedAudioMixingChanged(mixing); }); } else { INT_ERROR("Invalid data received for associated audio mixing change"); diff --git a/ds/iarm/IarmHostImpl.hpp b/ds/iarm/IarmHostImpl.hpp index 16fe866a..5d4c3573 100644 --- a/ds/iarm/IarmHostImpl.hpp +++ b/ds/iarm/IarmHostImpl.hpp @@ -59,11 +59,11 @@ class IarmHostImpl { if (!m_registered) { m_registered = IARMGroup::RegisterIarmEvents(); - } - if (!m_registered) { - INT_ERROR("Failed to register IARMGroup %s", typeid(IARMGroup).name()); - return 1; // Error: Failed to register IARM group + if (!m_registered) { + INT_ERROR("Failed to register IARMGroup %s", typeid(IARMGroup).name()); + return 1; // Error: Failed to register IARM group + } } auto it = std::find(this->begin(), this->end(), listener); From 83a0dd410c1f9bd9a50cd233a0b59012f6ee27fc Mon Sep 17 00:00:00 2001 From: Shrinivas Kamath Date: Sat, 23 Aug 2025 11:53:05 +0530 Subject: [PATCH 024/103] treat all c string to be null terminated error handling will require more work & buggy --- ds/iarm/IarmHostImpl.cpp | 10 +++++----- ds/iarm/IarmHostImpl.hpp | 3 ++- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/ds/iarm/IarmHostImpl.cpp b/ds/iarm/IarmHostImpl.cpp index a61ec019..ae15e6f4 100644 --- a/ds/iarm/IarmHostImpl.cpp +++ b/ds/iarm/IarmHostImpl.cpp @@ -83,7 +83,7 @@ class IARMGroupVideoDevice { IARM_Bus_DSMgr_EventData_t* eventData = (IARM_Bus_DSMgr_EventData_t*)data; if (eventData) { - std::string framerate(eventData->data.DisplayFrameRateChange.framerate, sizeof(eventData->data.DisplayFrameRateChange.framerate)); + std::string framerate(eventData->data.DisplayFrameRateChange.framerate); IarmHostImpl::Dispatch([&framerate](IVideoDeviceEvents* listener) { listener->OnDisplayFrameratePreChange(framerate); @@ -100,7 +100,7 @@ class IARMGroupVideoDevice { IARM_Bus_DSMgr_EventData_t* eventData = (IARM_Bus_DSMgr_EventData_t*)data; if (eventData) { - std::string framerate(eventData->data.DisplayFrameRateChange.framerate, sizeof(eventData->data.DisplayFrameRateChange.framerate)); + std::string framerate(eventData->data.DisplayFrameRateChange.framerate); IarmHostImpl::Dispatch([&framerate](IVideoDeviceEvents* listener) { listener->OnDisplayFrameratePostChange(framerate); @@ -257,7 +257,7 @@ class IARMGroupAudioPort { IARM_Bus_DSMgr_EventData_t* eventData = (IARM_Bus_DSMgr_EventData_t*)data; if (eventData) { - std::string primaryLanguage(eventData->data.AudioLanguageInfo.audioLanguage, sizeof(eventData->data.AudioLanguageInfo.audioLanguage)); + std::string primaryLanguage(eventData->data.AudioLanguageInfo.audioLanguage); IarmHostImpl::Dispatch([&primaryLanguage](IAudioPortEvents* listener) { listener->OnAudioPrimaryLanguageChanged(primaryLanguage); @@ -274,7 +274,7 @@ class IARMGroupAudioPort { IARM_Bus_DSMgr_EventData_t* eventData = (IARM_Bus_DSMgr_EventData_t*)data; if (eventData) { - std::string secondaryLanguage(eventData->data.AudioLanguageInfo.audioLanguage, sizeof(eventData->data.AudioLanguageInfo.audioLanguage)); + std::string secondaryLanguage(eventData->data.AudioLanguageInfo.audioLanguage); IarmHostImpl::Dispatch([&secondaryLanguage](IAudioPortEvents* listener) { listener->OnAudioSecondaryLanguageChanged(secondaryLanguage); @@ -433,7 +433,7 @@ void IarmHostImpl::Dispatch(const std::list& listeners, F&& fn) auto end = std::chrono::steady_clock::now(); auto elapsed = std::chrono::duration_cast(end - start); - ss << "\t" << listener << ", elapsed: " << elapsed.count() << " ms\n"; + ss << "\t client =" << listener << ", elapsed = " << elapsed.count() << " ms\n"; } INT_INFO("%s Dispatch done to %zu listeners\n%s", typeid(T).name(), listeners.size(), ss.str().c_str()); diff --git a/ds/iarm/IarmHostImpl.hpp b/ds/iarm/IarmHostImpl.hpp index 5d4c3573..cca2a207 100644 --- a/ds/iarm/IarmHostImpl.hpp +++ b/ds/iarm/IarmHostImpl.hpp @@ -34,6 +34,7 @@ class IARMGroupAudioPort; class IarmHostImpl { + // Manages a list of listeners and corresponding IARM registration (for event group). template class CallbackList : public std::list { public: @@ -119,7 +120,7 @@ class IarmHostImpl { } private: - bool m_registered = false; // really required ? + bool m_registered = false; // really required? }; public: From 5c36bc442e97b8abd2d7e082e8d1f8e858b706d5 Mon Sep 17 00:00:00 2001 From: Shrinivas Kamath Date: Sat, 23 Aug 2025 11:54:41 +0530 Subject: [PATCH 025/103] avoid templates for dispatch handling templates would have been fine too, but then I was not able to enable static compilation erorr, without that new devs could get confused. Moreover there are limited callback lists and specialization was required anyway. --- ds/iarm/IarmHostImpl.cpp | 27 ++++++++------------------- ds/iarm/IarmHostImpl.hpp | 6 ++++-- 2 files changed, 12 insertions(+), 21 deletions(-) mode change 100644 => 100755 ds/iarm/IarmHostImpl.hpp diff --git a/ds/iarm/IarmHostImpl.cpp b/ds/iarm/IarmHostImpl.cpp index ae15e6f4..6133e716 100644 --- a/ds/iarm/IarmHostImpl.cpp +++ b/ds/iarm/IarmHostImpl.cpp @@ -62,6 +62,7 @@ static bool registerIarmEvents(const EventHandlerMapping (&handlers)[N]) } // IARMGroupXYZ are c to c++ shim (all methods are static) +// Required to perform group event register and unregister with IARM // Thread safety to be ensured by the caller class IARMGroupVideoDevice { public: @@ -421,7 +422,7 @@ IarmHostImpl::~IarmHostImpl() } template -void IarmHostImpl::Dispatch(const std::list& listeners, F&& fn) +/* static */ void IarmHostImpl::Dispatch(const std::list& listeners, F&& fn) { std::stringstream ss; std::lock_guard lock(s_mutex); @@ -439,15 +440,6 @@ void IarmHostImpl::Dispatch(const std::list& listeners, F&& fn) INT_INFO("%s Dispatch done to %zu listeners\n%s", typeid(T).name(), listeners.size(), ss.str().c_str()); } -template -void IarmHostImpl::Dispatch(F&& fn) -{ - // Always expect template specialization - // static_assert(sizeof(F) == 0, "Dispatch should be specialized for specific event types"); - // TODO: make this compile time error - INT_ERROR("FATAL: Dispatch should be specialized for specific event types, but was called with a generic function"); -} - uint32_t IarmHostImpl::Register(IVideoDeviceEvents* listener) { std::lock_guard lock(s_mutex); @@ -460,9 +452,8 @@ uint32_t IarmHostImpl::UnRegister(IVideoDeviceEvents* listener) return s_videoDeviceListeners.UnRegister(listener); } -// Specialization for IVideoDeviceEvents -template <> -void IarmHostImpl::Dispatch(std::function&& fn) +// Dispatcher for IARMGroupVideoDevice +/* static */ void IarmHostImpl::Dispatch(std::function&& fn) { Dispatch(s_videoDeviceListeners, std::move(fn)); } @@ -479,9 +470,8 @@ uint32_t IarmHostImpl::UnRegister(IVideoPortEvents* listener) return s_videoPortListeners.UnRegister(listener); } -// Specialization for IVideoPortEvents -template <> -void IarmHostImpl::Dispatch(std::function&& fn) +// Dispatcher for IARMGroupVideoPort +/* static */ void IarmHostImpl::Dispatch(std::function&& fn) { Dispatch(s_videoPortListeners, std::move(fn)); } @@ -498,9 +488,8 @@ uint32_t IarmHostImpl::UnRegister(IAudioPortEvents* listener) return s_audioPortListeners.UnRegister(listener); } -// Specialization for IAudioPortEvents -template <> -void IarmHostImpl::Dispatch(std::function&& fn) +// Dispatcher for IARMGroupAudioPort +/* static */ void IarmHostImpl::Dispatch(std::function&& fn) { Dispatch(s_audioPortListeners, std::move(fn)); } diff --git a/ds/iarm/IarmHostImpl.hpp b/ds/iarm/IarmHostImpl.hpp old mode 100644 new mode 100755 index cca2a207..b02bf31e --- a/ds/iarm/IarmHostImpl.hpp +++ b/ds/iarm/IarmHostImpl.hpp @@ -165,9 +165,11 @@ class IarmHostImpl { template static void Dispatch(const std::list& listeners, F&& fn); - template - static void Dispatch(F&& fn); + static void Dispatch(std::function&& fn); + static void Dispatch(std::function&& fn); + static void Dispatch(std::function&& fn); + // Dispatch is private, so all IARMGroup implementations will need to be friends friend class IARMGroupVideoDevice; friend class IARMGroupVideoPort; friend class IARMGroupAudioPort; From 27e17a18bff3a2fe888c8ff2cf707c6313fc6405 Mon Sep 17 00:00:00 2001 From: Shrinivas Kamath Date: Sat, 23 Aug 2025 12:30:29 +0530 Subject: [PATCH 026/103] better indentation --- .clang-format | 4 ++-- ds/iarm/IarmHostImpl.cpp | 48 ++++++++++++++++++++-------------------- ds/iarm/IarmHostImpl.hpp | 10 ++++----- ds/include/host.hpp | 2 +- 4 files changed, 32 insertions(+), 32 deletions(-) diff --git a/.clang-format b/.clang-format index c8e7b33e..38c2ff7c 100644 --- a/.clang-format +++ b/.clang-format @@ -3,9 +3,9 @@ Language: Cpp # BasedOnStyle: WebKit AccessModifierOffset: -4 AlignAfterOpenBracket: DontAlign -AlignArrayOfStructures: None +AlignArrayOfStructures: Left AlignConsecutiveMacros: None -AlignConsecutiveAssignments: None +AlignConsecutiveAssignments: Consecutive AlignConsecutiveBitFields: None AlignConsecutiveDeclarations: None AlignEscapedNewlines: Right diff --git a/ds/iarm/IarmHostImpl.cpp b/ds/iarm/IarmHostImpl.cpp index 6133e716..73c93d73 100644 --- a/ds/iarm/IarmHostImpl.cpp +++ b/ds/iarm/IarmHostImpl.cpp @@ -11,8 +11,8 @@ #include "libIBus.h" using IVideoDeviceEvents = device::Host::IVideoDeviceEvents; -using IVideoPortEvents = device::Host::IVideoPortEvents; -using IAudioPortEvents = device::Host::IAudioPortEvents; +using IVideoPortEvents = device::Host::IVideoPortEvents; +using IAudioPortEvents = device::Host::IAudioPortEvents; namespace device { @@ -112,7 +112,7 @@ class IARMGroupVideoDevice { } static constexpr EventHandlerMapping handlers[] = { - { IARM_BUS_DSMGR_EVENT_DISPLAY_FRAMRATE_PRECHANGE, &IARMGroupVideoDevice::iarmDisplayFrameratePreChangeHandler }, + { IARM_BUS_DSMGR_EVENT_DISPLAY_FRAMRATE_PRECHANGE, &IARMGroupVideoDevice::iarmDisplayFrameratePreChangeHandler }, { IARM_BUS_DSMGR_EVENT_DISPLAY_FRAMRATE_POSTCHANGE, &IARMGroupVideoDevice::iarmDisplayFrameratePostChangeHandler }, }; }; @@ -137,7 +137,7 @@ class IARMGroupVideoPort { IARM_Bus_DSMgr_EventData_t* eventData = (IARM_Bus_DSMgr_EventData_t*)data; if (eventData) { - int width = eventData->data.resn.width; + int width = eventData->data.resn.width; int height = eventData->data.resn.height; IarmHostImpl::Dispatch([width, height](IVideoPortEvents* listener) { @@ -155,7 +155,7 @@ class IARMGroupVideoPort { IARM_Bus_DSMgr_EventData_t* eventData = (IARM_Bus_DSMgr_EventData_t*)data; if (eventData) { - int width = eventData->data.resn.width; + int width = eventData->data.resn.width; int height = eventData->data.resn.height; IarmHostImpl::Dispatch([width, height](IVideoPortEvents* listener) { @@ -197,10 +197,10 @@ class IARMGroupVideoPort { } static constexpr EventHandlerMapping handlers[] = { - { IARM_BUS_DSMGR_EVENT_RES_PRECHANGE, &IARMGroupVideoPort::iarmResolutionPreChangeHandler }, - { IARM_BUS_DSMGR_EVENT_RES_POSTCHANGE, &IARMGroupVideoPort::iarmResolutionPostChangeHandler }, - { IARM_BUS_DSMGR_EVENT_HDCP_STATUS, &IARMGroupVideoPort::iarmHDCPStatusChangeHandler }, - { IARM_BUS_DSMGR_EVENT_VIDEO_FORMAT_UPDATE, &IARMGroupVideoPort::iarmVideoFormatUpdateHandler }, + { IARM_BUS_DSMGR_EVENT_RES_PRECHANGE, &IARMGroupVideoPort::iarmResolutionPreChangeHandler }, + { IARM_BUS_DSMGR_EVENT_RES_POSTCHANGE, &IARMGroupVideoPort::iarmResolutionPostChangeHandler }, + { IARM_BUS_DSMGR_EVENT_HDCP_STATUS, &IARMGroupVideoPort::iarmHDCPStatusChangeHandler }, + { IARM_BUS_DSMGR_EVENT_VIDEO_FORMAT_UPDATE, &IARMGroupVideoPort::iarmVideoFormatUpdateHandler }, }; }; @@ -291,8 +291,8 @@ class IARMGroupAudioPort { IARM_Bus_DSMgr_EventData_t* eventData = (IARM_Bus_DSMgr_EventData_t*)data; if (eventData) { dsAudioPortType_t portType = eventData->data.audio_out_connect.portType; - int uiPortNumber = eventData->data.audio_out_connect.uiPortNo; - bool isPortConnected = eventData->data.audio_out_connect.isPortConnected; + int uiPortNumber = eventData->data.audio_out_connect.uiPortNo; + bool isPortConnected = eventData->data.audio_out_connect.isPortConnected; IarmHostImpl::Dispatch([portType, uiPortNumber, isPortConnected](IAudioPortEvents* listener) { listener->OnAudioOutHotPlug(portType, uiPortNumber, isPortConnected); @@ -308,7 +308,7 @@ class IARMGroupAudioPort { IARM_Bus_DSMgr_EventData_t* eventData = (IARM_Bus_DSMgr_EventData_t*)data; if (eventData) { dsATMOSCapability_t atmosCapability = eventData->data.AtmosCapsChange.caps; - bool status = eventData->data.AtmosCapsChange.status; + bool status = eventData->data.AtmosCapsChange.status; IarmHostImpl::Dispatch([atmosCapability, status](IAudioPortEvents* listener) { listener->OnDolbyAtmosCapabilitiesChanged(atmosCapability, status); @@ -346,7 +346,7 @@ class IARMGroupAudioPort { if (eventData) { // TODO: recheck as using static_cast here - dsAudioPortType_t audioPortType = static_cast(eventData->data.Audioport.type); + dsAudioPortType_t audioPortType = static_cast(eventData->data.Audioport.type); dsAudioStereoMode_t audioStereoMode = static_cast(eventData->data.Audioport.mode); IarmHostImpl::Dispatch([audioPortType, audioStereoMode](IAudioPortEvents* listener) { @@ -393,16 +393,16 @@ class IARMGroupAudioPort { private: static constexpr EventHandlerMapping handlers[] = { - { IARM_BUS_DSMGR_EVENT_AUDIO_ASSOCIATED_AUDIO_MIXING_CHANGED, &IARMGroupAudioPort::iarmAssociatedAudioMixingChangedHandler }, - { IARM_BUS_DSMGR_EVENT_AUDIO_FADER_CONTROL_CHANGED, &IARMGroupAudioPort::iarmAudioFaderControlChangedHandler }, - { IARM_BUS_DSMGR_EVENT_AUDIO_PRIMARY_LANGUAGE_CHANGED, &IARMGroupAudioPort::iarmAudioPrimaryLanguageChangedHandler }, - { IARM_BUS_DSMGR_EVENT_AUDIO_SECONDARY_LANGUAGE_CHANGED, &IARMGroupAudioPort::iarmAudioSecondaryLanguageChangedHandler }, - { IARM_BUS_DSMGR_EVENT_AUDIO_OUT_HOTPLUG, &IARMGroupAudioPort::iarmAudioOutHotPlugHandler }, - { IARM_BUS_DSMGR_EVENT_ATMOS_CAPS_CHANGED, &IARMGroupAudioPort::iarmDolbyAtmosCapabilitiesChangedHandler }, - { IARM_BUS_DSMGR_EVENT_AUDIO_PORT_STATE, &IARMGroupAudioPort::iarmAudioPortStateChangedHandler }, - { IARM_BUS_DSMGR_EVENT_AUDIO_MODE, &IARMGroupAudioPort::iarmAudioModeEventHandler }, - { IARM_BUS_DSMGR_EVENT_AUDIO_LEVEL_CHANGED, &IARMGroupAudioPort::iarmAudioLevelChangedEventHandler }, - { IARM_BUS_DSMGR_EVENT_AUDIO_FORMAT_UPDATE, &IARMGroupAudioPort::iarmAudioFormatUpdateHandler }, + { IARM_BUS_DSMGR_EVENT_AUDIO_ASSOCIATED_AUDIO_MIXING_CHANGED, &IARMGroupAudioPort::iarmAssociatedAudioMixingChangedHandler }, + { IARM_BUS_DSMGR_EVENT_AUDIO_FADER_CONTROL_CHANGED, &IARMGroupAudioPort::iarmAudioFaderControlChangedHandler }, + { IARM_BUS_DSMGR_EVENT_AUDIO_PRIMARY_LANGUAGE_CHANGED, &IARMGroupAudioPort::iarmAudioPrimaryLanguageChangedHandler }, + { IARM_BUS_DSMGR_EVENT_AUDIO_SECONDARY_LANGUAGE_CHANGED, &IARMGroupAudioPort::iarmAudioSecondaryLanguageChangedHandler }, + { IARM_BUS_DSMGR_EVENT_AUDIO_OUT_HOTPLUG, &IARMGroupAudioPort::iarmAudioOutHotPlugHandler }, + { IARM_BUS_DSMGR_EVENT_ATMOS_CAPS_CHANGED, &IARMGroupAudioPort::iarmDolbyAtmosCapabilitiesChangedHandler }, + { IARM_BUS_DSMGR_EVENT_AUDIO_PORT_STATE, &IARMGroupAudioPort::iarmAudioPortStateChangedHandler }, + { IARM_BUS_DSMGR_EVENT_AUDIO_MODE, &IARMGroupAudioPort::iarmAudioModeEventHandler }, + { IARM_BUS_DSMGR_EVENT_AUDIO_LEVEL_CHANGED, &IARMGroupAudioPort::iarmAudioLevelChangedEventHandler }, + { IARM_BUS_DSMGR_EVENT_AUDIO_FORMAT_UPDATE, &IARMGroupAudioPort::iarmAudioFormatUpdateHandler }, }; }; @@ -432,7 +432,7 @@ template fn(listener); - auto end = std::chrono::steady_clock::now(); + auto end = std::chrono::steady_clock::now(); auto elapsed = std::chrono::duration_cast(end - start); ss << "\t client =" << listener << ", elapsed = " << elapsed.count() << " ms\n"; } diff --git a/ds/iarm/IarmHostImpl.hpp b/ds/iarm/IarmHostImpl.hpp index b02bf31e..57c1a1b4 100755 --- a/ds/iarm/IarmHostImpl.hpp +++ b/ds/iarm/IarmHostImpl.hpp @@ -46,10 +46,10 @@ class IarmHostImpl { } // disable copy and move semantics - CallbackList(const CallbackList&) = delete; + CallbackList(const CallbackList&) = delete; CallbackList& operator=(const CallbackList&) = delete; - CallbackList(CallbackList&&) = delete; - CallbackList& operator=(CallbackList&&) = delete; + CallbackList(CallbackList&&) = delete; + CallbackList& operator=(CallbackList&&) = delete; uint32_t Register(T listener) { @@ -125,8 +125,8 @@ class IarmHostImpl { public: using IVideoDeviceEvents = device::Host::IVideoDeviceEvents; - using IVideoPortEvents = device::Host::IVideoPortEvents; - using IAudioPortEvents = device::Host::IAudioPortEvents; + using IVideoPortEvents = device::Host::IVideoPortEvents; + using IAudioPortEvents = device::Host::IAudioPortEvents; IarmHostImpl(); ~IarmHostImpl(); diff --git a/ds/include/host.hpp b/ds/include/host.hpp index a5b27186..102c0a4a 100644 --- a/ds/include/host.hpp +++ b/ds/include/host.hpp @@ -205,7 +205,7 @@ class Host { Host(); virtual ~Host(); // Avoid copies - Host(const Host&) = delete; + Host(const Host&) = delete; Host& operator=(const Host&) = delete; DefaultImpl& impl(); From bcb69ce6fbf6e05de1bc688a28e2db433a54da16 Mon Sep 17 00:00:00 2001 From: Shrinivas Kamath Date: Sat, 23 Aug 2025 12:51:28 +0530 Subject: [PATCH 027/103] some more documentation --- ds/iarm/IarmHostImpl.cpp | 1 - ds/iarm/IarmHostImpl.hpp | 17 +++++++++++------ 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/ds/iarm/IarmHostImpl.cpp b/ds/iarm/IarmHostImpl.cpp index 73c93d73..aeeba825 100644 --- a/ds/iarm/IarmHostImpl.cpp +++ b/ds/iarm/IarmHostImpl.cpp @@ -345,7 +345,6 @@ class IARMGroupAudioPort { IARM_Bus_DSMgr_EventData_t* eventData = (IARM_Bus_DSMgr_EventData_t*)data; if (eventData) { - // TODO: recheck as using static_cast here dsAudioPortType_t audioPortType = static_cast(eventData->data.Audioport.type); dsAudioStereoMode_t audioStereoMode = static_cast(eventData->data.Audioport.mode); diff --git a/ds/iarm/IarmHostImpl.hpp b/ds/iarm/IarmHostImpl.hpp index 57c1a1b4..e4f649b9 100755 --- a/ds/iarm/IarmHostImpl.hpp +++ b/ds/iarm/IarmHostImpl.hpp @@ -34,7 +34,7 @@ class IARMGroupAudioPort; class IarmHostImpl { - // Manages a list of listeners and corresponding IARM registration (for event group). + // Manages a list of listeners and corresponding IARM Event Group operations. template class CallbackList : public std::list { public: @@ -51,6 +51,9 @@ class IarmHostImpl { CallbackList(CallbackList&&) = delete; CallbackList& operator=(CallbackList&&) = delete; + // @brief Register a listener, also register IARM events if not already registered + // if the listener is already registered, listener will not be added again + // if IARM event registration fails, listener will not be added uint32_t Register(T listener) { if (listener == nullptr) { @@ -81,6 +84,8 @@ class IarmHostImpl { return 0; } + // @brief UnRegister a listener, also unregister IARM events if no listeners are left + // if the listener is not registered, it will not be removed uint32_t UnRegister(T listener) { if (listener == nullptr) { @@ -100,22 +105,22 @@ class IarmHostImpl { INT_INFO("%s %p unregistered", typeid(T).name(), listener); if (this->empty() && m_registered) { - m_registered = false; - IARMGroup::UnRegisterIarmEvents(); + m_registered = !IARMGroup::UnRegisterIarmEvents(); } return 0; } + // @brief Release all listeners and unregister IARM events + // This will clear the list and unregister IARM events if no listeners are left uint32_t Release() { if (m_registered) { - m_registered = false; - IARMGroup::UnRegisterIarmEvents(); + m_registered = !IARMGroup::UnRegisterIarmEvents(); } this->clear(); - INT_INFO("%s released", typeid(T).name()); + INT_INFO("CallbackList[T=%s] released, status: %d", typeid(T).name(), m_registered); return 0; // Success } From ea8ad1b0892731363ba5e7b1b4fff47f3ad1cafa Mon Sep 17 00:00:00 2001 From: Shrinivas Kamath Date: Sat, 23 Aug 2025 13:01:18 +0530 Subject: [PATCH 028/103] some more documentation --- ds/iarm/IarmHostImpl.hpp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/ds/iarm/IarmHostImpl.hpp b/ds/iarm/IarmHostImpl.hpp index e4f649b9..4b61e88a 100755 --- a/ds/iarm/IarmHostImpl.hpp +++ b/ds/iarm/IarmHostImpl.hpp @@ -35,13 +35,19 @@ class IARMGroupAudioPort; class IarmHostImpl { // Manages a list of listeners and corresponding IARM Event Group operations. + // Private internal class, not to be used directly by clients. template class CallbackList : public std::list { public: - CallbackList() = default; + CallbackList() + : m_registered(false) + { + } ~CallbackList() { + // As best practise caller is supposed to call Release() explicitly + // this is just for safety (see IarmHostImpl destructor) Release(); } @@ -125,7 +131,7 @@ class IarmHostImpl { } private: - bool m_registered = false; // really required? + bool m_registered = false; // To track if IARM events are registered }; public: From 465bb280a0242ad86f1250099e3f21b9a1c1dfa0 Mon Sep 17 00:00:00 2001 From: Shrinivas Kamath Date: Tue, 26 Aug 2025 10:26:57 +0530 Subject: [PATCH 029/103] revert some interface changes --- ds/frontPanelConfig.cpp | 25 +- ds/hdmiIn.cpp | 27 +- .../displayConnectionChangeListener.hpp | 83 ----- ds/include/frontPanelTextDisplay.hpp | 16 +- ds/include/hdmiIn.hpp | 65 +--- rpc/include/dsMgrNtf.h | 345 ------------------ 6 files changed, 5 insertions(+), 556 deletions(-) delete mode 100644 ds/include/displayConnectionChangeListener.hpp delete mode 100755 rpc/include/dsMgrNtf.h diff --git a/ds/frontPanelConfig.cpp b/ds/frontPanelConfig.cpp index 1c7a2cd8..e20b0321 100644 --- a/ds/frontPanelConfig.cpp +++ b/ds/frontPanelConfig.cpp @@ -2,7 +2,7 @@ * If not stated otherwise in this file or this component's LICENSE file the * following copyright and licenses apply: * - * Copyright 2025 RDK Management + * Copyright 2016 RDK Management * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -264,29 +264,6 @@ FrontPanelTextDisplay &FrontPanelConfig::getTextDisplay(const string &name) } -/** - * @fn void FrontPanelTextDisplay::Register(IEvent *listener) - * @brief This API is used to register the Events - * - * @return unint32_t - */ -uint32_t FrontPanelTextDisplay::Register(IEvent *listener) -{ - return 0; -} - - -/** - * @fn void FrontPanelTextDisplay::UnRegister(IEvent *listener) - * @brief This API is used to UnRegister the Events - * - * @return unint32_t - */ -uint32_t FrontPanelTextDisplay::UnRegister(IEvent *listener) -{ - return 0; -} - /** * @fn FrontPanelConfig::getColors() * @brief This API gets the list of colors supported by front panel indicators. diff --git a/ds/hdmiIn.cpp b/ds/hdmiIn.cpp index e2e65559..18b2ac97 100755 --- a/ds/hdmiIn.cpp +++ b/ds/hdmiIn.cpp @@ -2,7 +2,7 @@ * If not stated otherwise in this file or this component's LICENSE file the * following copyright and licenses apply: * - * Copyright 2025 RDK Management + * Copyright 2016 RDK Management * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -678,31 +678,6 @@ void HdmiInput::getHdmiVersion (int iHdmiPort, dsHdmiMaxCapabilityVersion_t *cap printf ("%s:%d - HDMI Compatibility Version = %d\n", __PRETTY_FUNCTION__, __LINE__, *capversion); } - -/** - * @fn void HdmiInput::Register(IEvent *listener) - * @brief This API is used to register the Events - * - * @return unint32_t - */ -uint32_t HdmiInput::Register(IEvent *listener) -{ - return 0; -} - - -/** - * @fn void CompositeInput::UnRegister(IEvent *listener) - * @brief This API is used to UnRegister the Events - * - * @return unint32_t - */ -uint32_t HdmiInput::UnRegister(IEvent *listener) -{ - return 0; -} - - } diff --git a/ds/include/displayConnectionChangeListener.hpp b/ds/include/displayConnectionChangeListener.hpp deleted file mode 100644 index 15aaa650..00000000 --- a/ds/include/displayConnectionChangeListener.hpp +++ /dev/null @@ -1,83 +0,0 @@ - -/* - * If not stated otherwise in this file or this component's LICENSE file the - * following copyright and licenses apply: - * - * Copyright 2025 RDK Management - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. -*/ - - -/** -* @defgroup devicesettings -* @{ -* @defgroup ds -* @{ -**/ - - -#ifndef _DS_DISPLAYCONNECTIONCHANGELISTENER_H_ -#define _DS_DISPLAYCONNECTIONCHANGELISTENER_H_ - -#include "videoOutputPort.hpp" -#include "dsMgrNtf.h" - -namespace device { - -class DisplayConnectionChangeListener { -public: - - struct IDisplayHDMIHotPlugEvent{ - - // @brief Display HDMI Hot plug event - // @text onDisplayHDMIHotPlug - // @param displayEvent: DS_DISPLAY_EVENT_CONNECTED or DS_DISPLAY_EVENT_DISCONNECTED - virtual void OnDisplayHDMIHotPlug(DisplayEvent displayEvent) = 0; - }; - - uint32_t Register(IDisplayHDMIHotPlugEvent*listener); - uint32_t UnRegister(IDisplayHDMIHotPlugEvent *listener); - - - - struct IEvent{ - - // @brief Display RX Sense event - // @text onDisplayRxSense - // @param displayEvent: DS_DISPLAY_RXSENSE_ON or DS_DISPLAY_RXSENSE_OFF - virtual void OnDisplayRxSense(DisplayEvent displayEvent) = 0; - - // @brief Display HDCP Status - // @text OnDisplayHDCPStatus - virtual void OnDisplayHDCPStatus() = 0; - - }; - - uint32_t Register(IEvent *listener); - uint32_t UnRegister(IEvent *listener); - - - DisplayConnectionChangeListener() {} - virtual ~DisplayConnectionChangeListener() {} - virtual void displayConnectionChanged(VideoOutputPort &port, int newConnectionStatus) = 0; - -}; - -} - -#endif /* DISPLAYCONNECTIONCHANGELISTENER_H_ */ - - -/** @} */ -/** @} */ diff --git a/ds/include/frontPanelTextDisplay.hpp b/ds/include/frontPanelTextDisplay.hpp index 4b9d015e..588a3352 100644 --- a/ds/include/frontPanelTextDisplay.hpp +++ b/ds/include/frontPanelTextDisplay.hpp @@ -1,9 +1,8 @@ - /* * If not stated otherwise in this file or this component's LICENSE file the * following copyright and licenses apply: * - * Copyright 2025 RDK Management + * Copyright 2016 RDK Management * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -33,7 +32,6 @@ #include "dsConstant.hpp" #include "list" #include "frontPanelIndicator.hpp" -#include "dsMgrNtf.h" /** @@ -133,18 +131,6 @@ class FrontPanelTextDisplay : public FrontPanelIndicator { static const char * kPropertyBrightness; public: - - struct IEvent { - - // @brief On Front Panel display time format changed - // @text OnFPDTimeFormatChanged - // @param timeFormat: current time format 12 or 24 hour - virtual void OnFPDTimeFormatChanged(FPDTimeFormat timeFormat) { }; - }; - - uint32_t Register(IEvent *listener); - uint32_t UnRegister(IEvent *listener); - static const int kModeClock12Hr; //!< Indicates 12 hour time format. static const int kModeClock24Hr; //!< Indicates 24 hour time format. static const int kModeString; //!< Indicates text string. diff --git a/ds/include/hdmiIn.hpp b/ds/include/hdmiIn.hpp index e217fe18..eb2da3dc 100755 --- a/ds/include/hdmiIn.hpp +++ b/ds/include/hdmiIn.hpp @@ -2,7 +2,7 @@ * If not stated otherwise in this file or this component's LICENSE file the * following copyright and licenses apply: * - * Copyright 2025 RDK Management + * Copyright 2016 RDK Management * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -52,7 +52,7 @@ #include #include "dsTypes.h" -#include "dsMgrNtf.h" + /** * @file hdmiIn.hpp @@ -74,67 +74,6 @@ class HdmiInput { public: - - - struct IEvent { - - // @brief HDMI Event Hot Plug - // @text onHDMIInEventHotPlug - // @param port: port 0 or 1 et al - // @param isConnected: is it connected (true) or not (false) - virtual void OnHDMIInEventHotPlug(HDMIInPort port, bool isConnected) { }; - - // @brief HDMI Event Signal status - // @text OnHDMIInEventSignalStatus - // @param port: port 0 or 1 et al - // @param signalStatus: Signal Status - virtual void OnHDMIInEventSignalStatus(HDMIInPort port, HDMIInSignalStatus signalStatus) { }; - - // @brief HDMI Event Signal status - // @text onHDMIInEventStatus - // @param activePort: port 0 or 1 et al - // @param isPresented: is it presented or not - virtual void OnHDMIInEventStatus(HDMIInPort activePort, bool isPresented) { }; - - // @brief HDMI Video Mode update - // @text onHDMInVideoModeUpdate - // @param port: port 0 or 1 et al - // @param videoPortResolution: Video port resolution - virtual void OnHDMInVideoModeUpdate(HDMIInPort port, const HDMIVideoPortResolution& videoPortResolution) { }; - - // @brief HDMI ALLM (Auto Low Latency Mode) status - // @text onHDMInAllmStatus - // @param port: port 0 or 1 et al - // @param allmStatus: allm status - virtual void OnHDMInAllmStatus(HDMIInPort port, bool allmStatus) { }; - - // @brief HDMI Event AVI content type - // @text OnHDMInAVIContentType - // @param port: port 0 or 1 et al - // @param aviContentType: AVI content type - virtual void OnHDMInAVIContentType(HDMIInPort port, HDMIInAviContentType aviContentType) { }; - - // @brief HDMI Event AV Latency - // @text OnHDMInAVLatency - // @param audioDelay: audio delay (in millisecs) - // @param videoDelay: video delay (in millisecs) - virtual void OnHDMInAVLatency(int audioDelay, int videoDelay) { }; - - // @brief HDMI VRR status - // @text OnHDMInVRRStatus - // @param port: port 0 or 1 et al - // @param vrrType: VRR type - virtual void OnHDMInVRRStatus(HDMIInPort port, HDMIInVRRType vrrType) { }; - - // @brief Zoom settings changed - // @text OnZoomSettingsChanged - // @param zoomSetting: Currently applied zoom setting - virtual void OnZoomSettingsChanged(VideoZoom zoomSetting) { }; - }; - - uint32_t Register(IEvent *listener); - uint32_t UnRegister(IEvent *listener); - static HdmiInput & getInstance(); uint8_t getNumberOfInputs () const; diff --git a/rpc/include/dsMgrNtf.h b/rpc/include/dsMgrNtf.h deleted file mode 100755 index c2762aa4..00000000 --- a/rpc/include/dsMgrNtf.h +++ /dev/null @@ -1,345 +0,0 @@ -/* - * If not stated otherwise in this file or this component's LICENSE file the - * following copyright and licenses apply: - * - * Copyright 2025 RDK Management - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. -*/ - - - -/** -* @defgroup devicesettings -* @{ -* @defgroup rpc -* @{ -**/ - - -#ifndef RPDSMGRNTF_H_ -#define RPDSMGRNTF_H_ - -#ifdef __cplusplus -extern "C" { -#endif - - -typedef enum _AudioPortState { - AUDIO_PORT_STATE_UNKNOWN = 0, - AUDIO_PORT_STATE_UNINITIALIZED = 1, - AUDIO_PORT_STATE_INITIALIZED = 2 -}AudioPortState; - - -typedef enum _AudioPortType { - AUDIO_PORT_TYPE_LR = 0, - AUDIO_PORT_TYPE_HDMI = 1, - AUDIO_PORT_TYPE_SPDIF = 2, - AUDIO_PORT_TYPE_SPEAKER = 3, - AUDIO_PORT_TYPE_HDMIARC = 4, - AUDIO_PORT_TYPE_HEADPHONE = 5, - AUDIO_PORT_TYPE_MAX = 6 - }AudioPortType; - -typedef enum _DolbyAtmosCapability { - AUDIO_DOLBYATMOS_NOT_SUPPORTED = 0, - AUDIO_DOLBYATMOS_DDPLUS_STREAM = 1, - AUDIO_DOLBYATMOS_ATMOS_METADATA = 2, - AUDIO_DOLBYATMOS_MAX = 3 - }DolbyAtmosCapability; - - -typedef enum _AudioStereoMode { - AUDIO_STEREO_UNKNOWN = 0, - AUDIO_STEREO_MONO = 1, - AUDIO_STEREO_STEREO = 2, - AUDIO_STEREO_SURROUND = 3, - AUDIO_STEREO_PASSTHROUGH = 4, - AUDIO_STEREO_DD = 5, - AUDIO_STEREO_DDPLUS = 6, - AUDIO_STEREO_MAX = 7 - }AudioStereoMode; - -typedef enum _AudioFormat { - AUDIO_FORMAT_NONE = 0, - AUDIO_FORMAT_PCM = 1, - AUDIO_FORMAT_DOLBY_AC3 = 2, - AUDIO_FORMAT_DOLBY_EAC3 = 3, - AUDIO_FORMAT_DOLBY_AC4 = 4, - AUDIO_FORMAT_DOLBY_MAT = 5, - AUDIO_FORMAT_DOLBY_TRUEHD = 6, - AUDIO_FORMAT_DOLBY_EAC3_ATMOS = 7, - AUDIO_FORMAT_DOLBY_TRUEHD_ATMOS = 8, - AUDIO_FORMAT_DOLBY_MAT_ATMOS = 0, - AUDIO_FORMAT_DOLBY_AC4_ATMOS = 10, - AUDIO_FORMAT_AAC = 11, - AUDIO_FORMAT_VORBIS = 12, - AUDIO_FORMAT_WMA = 13, - AUDIO_FORMAT_UNKNOWN = 14, - AUDIO_FORMAT_MAX = 15 - }AudioFormat; - - -typedef enum _HDMIInPort { - DS_HDMI_IN_PORT_NONE = -1, - DS_HDMI_IN_PORT_0 = 0, - DS_HDMI_IN_PORT_1 = 1, - DS_HDMI_IN_PORT_2 = 2, - DS_HDMI_IN_PORT_3 = 3, - DS_HDMI_IN_PORT_4 = 4, - DS_HDMI_IN_PORT_MAX = 5 - }HDMIInPort; - - - typedef enum _VideoZoom{ - DS_VIDEO_DEVICE_ZOOM_UNKNOWN = -1, - DS_VIDEO_DEVICE_ZOOM_NONE = 0, - DS_VIDEO_DEVICE_ZOOM_FULL = 1, - DS_VIDEO_DEVICE_ZOOM_LB_16_9 = 2, - DS_VIDEO_DEVICE_ZOOM_LB_14_9 = 3, - DS_VIDEO_DEVICE_ZOOM_CCO = 4, - DS_VIDEO_DEVICE_ZOOM_PAN_SCAN = 5, - DS_VIDEO_DEVICE_ZOOM_LB_2_21_1_ON_4_3 = 6, - DS_VIDEO_DEVICE_ZOOM_LB_2_21_1_ON_16_9 = 7, - DS_VIDEO_DEVICE_ZOOM_PLATFORM = 8, - DS_VIDEO_DEVICE_ZOOM_16_9_ZOOM = 9, - DS_VIDEO_DEVICE_ZOOM_PILLARBOX_4_3 = 10, - DS_VIDEO_DEVICE_ZOOM_WIDE_4_3 = 11, - DS_VIDEO_DEVICE_ZOOM_MAX = 12 - }VideoZoom; - - -typedef enum _HDMIInVRRType{ - DS_HDMIIN_VRR_NONE = 0, - DS_HDMIIN_HDMI_VRR = 1, - DS_HDMIIN_AMD_FREESYNC = 2, - DS_HDMIIN_AMD_FREESYNC_PREMIUM = 3, - DS_HDMIIN_AMD_FREESYNC_PREMIUM_PRO = 4 - }HDMIInVRRType; - -typedef enum _HDMIInAviContentType { - DS_HDMIIN_AVICONTENT_TYPE_GRAPHICS =0, - DS_HDMIIN_AVICONTENT_TYPE_PHOTO =1, - DS_HDMIIN_AVICONTENT_TYPE_CINEMA =2, - DS_HDMIIN_AVICONTENT_TYPE_GAME =3, - DS_HDMIIN_AVICONTENT_TYPE_NOT_SIGNALLED =4, - DS_HDMIIN_AVICONTENT_TYPE_MAX =5 - }HDMIInAviContentType; - - -typedef enum _HDMIInTVResolution { - DS_HDMIIN_RESOLUTION_480I = 0x000001, - DS_HDMIIN_RESOLUTION_480P = 0x000002, - DS_HDMIIN_RESOLUTION_576I = 0x000004, - DS_HDMIIN_RESOLUTION_576P = 0x000008, - DS_HDMIIN_RESOLUTION_576P50 = 0x000010, - DS_HDMIIN_RESOLUTION_720P = 0x000020, - DS_HDMIIN_RESOLUTION_720P50 = 0x000040, - DS_HDMIIN_RESOLUTION_1080I = 0x000080, - DS_HDMIIN_RESOLUTION_1080P = 0x000100, - DS_HDMIIN_RESOLUTION_1080P24 = 0x000200, - DS_HDMIIN_RESOLUTION_1080I25 = 0x000400, - DS_HDMIIN_RESOLUTION_1080P30 = 0x001000, - DS_HDMIIN_RESOLUTION_1080I50 = 0x002000, - DS_HDMIIN_RESOLUTION_1080P50 = 0x004000, - DS_HDMIIN_RESOLUTION_1080P60 = 0x008000, - DS_HDMIIN_RESOLUTION_2160P24 = 0x010000, - DS_HDMIIN_RESOLUTION_2160P25 = 0x020000, - DS_HDMIIN_RESOLUTION_2160P30 = 0x040000, - DS_HDMIIN_RESOLUTION_2160P50 = 0x080000, - DS_HDMIIN_RESOLUTION_2160P60 = 0x100000 - }HDMIInTVResolution; - -typedef enum _HDMIVideoAspectRatio { - DS_HDMIIN_ASPECT_RATIO_UNKNOWN = 0 /* @text Video Aspect Ratio UNKNOWN */, - DS_HDMIIN_ASPECT_RATIO_4X3 = 1 /* @text Video Aspect Ratio 4X3 */, - DS_HDMIIN_ASPECT_RATIO_16x9 = 2 /* @text Video Aspect Ratio 16x9 */ - }HDMIVideoAspectRatio; - -typedef enum _HDMIInVideoStereoScopicMode{ - DS_HDMIIN_SSMODE_UNKNOWN = 0, - DS_HDMIIN_SSMODE_2D = 1, - DS_HDMIIN_SSMODE_3D_SIDE_BY_SIDE = 2, - DS_HDMIIN_SSMODE_3D_TOP_AND_BOTTOM = 3 - }HDMIInVideoStereoScopicMode; - - typedef enum HDMIInVideoFrameRate { - DS_HDMIIN_FRAMERATE_UNKNOWN = 0, - DS_HDMIIN_FRAMERATE_24 = 1, - DS_HDMIIN_FRAMERATE_25 = 2, - DS_HDMIIN_FRAMERATE_30 = 3, - DS_HDMIIN_FRAMERATE_60 = 4, - DS_HDMIIN_FRAMERATE_23_98 = 5, - DS_HDMIIN_FRAMERATE_29_97 = 6, - DS_HDMIIN_FRAMERATE_50 = 7, - DS_HDMIIN_FRAMERATE_59_94 = 8 - }HDMIInVideoFrameRate; - -typedef struct _HDMIVideoPortResolution { - std::string name; - HDMIInTVResolution pixelResolution; - HDMIVideoAspectRatio aspectRatio; - HDMIInVideoStereoScopicMode stereoScopicMode; - HDMIInVideoFrameRate frameRate; - bool interlaced; - }HDMIVideoPortResolution; - - -typedef enum _HDMIInSignalStatus{ - DS_HDMI_IN_SIGNAL_STATUS_NONE = -1, - DS_HDMI_IN_SIGNAL_STATUS_NOSIGNAL = 0, - DS_HDMI_IN_SIGNAL_STATUS_UNSTABLE = 1, - DS_HDMI_IN_SIGNAL_STATUS_NOTSUPPORTED = 2, - DS_HDMI_IN_SIGNAL_STATUS_STABLE = 3, - DS_HDMI_IN_SIGNAL_STATUS_MAX = 4 - }HDMIInSignalStatus; - - - typedef enum _SleepMode { - DS_HOST_SLEEPMODE_LIGHT = 0, - DS_HOST_SLEEPMODE_DEEP = 1, - DS_HOST_SLEEPMODE_MAX = 2 - }SleepMode; - - - typedef enum _CompositeInPort{ - DS_COMPOSITE_IN_PORT_NONE = -1 /* @text UNKNOWN */, - DS_COMPOSITE_IN_PORT_0 = 0 /* @text CompositeIn Port 0 */, - DS_COMPOSITE_IN_PORT_1 = 1 /* @text CompositeIn Port 1 */, - DS_COMPOSITE_IN_PORT_MAX = 2 /* @text CompositeIn Port MAX */, - }CompositeInPort; - - -typedef enum _CompositeInSignalStatus{ - DS_COMPOSITE_IN_SIGNAL_STATUS_NONE = -1 /* @text Signal Status None */, - DS_COMPOSITE_IN_SIGNAL_STATUS_NOSIGNAL = 0 /* @text Signal Status No Signal */, - DS_COMPOSITE_IN_SIGNAL_STATUS_UNSTABLE = 1 /* @text Signal Status Unstable */, - DS_COMPOSITE_IN_SIGNAL_STATUS_NOTSUPPORTED = 2 /* @text Signal Status Not supported */, - DS_COMPOSITE_IN_SIGNAL_STATUS_STABLE = 3 /* @text Signal Status Stable */, - DS_COMPOSITE_IN_SIGNAL_STATUS_MAX = 4 /* @test Signal Status MAX */ - }CompositeInSignalStatus; - -typedef enum _DisplayTVResolution{ - DS_DISPLAY_RESOLUTION_480I = 0x000001, - DS_DISPLAY_RESOLUTION_480P = 0x000002, - DS_DISPLAY_RESOLUTION_576I = 0x000004, - DS_DISPLAY_RESOLUTION_576P = 0x000008, - DS_DISPLAY_RESOLUTION_576P50 = 0x000010, - DS_DISPLAY_RESOLUTION_720P = 0x000020, - DS_DISPLAY_RESOLUTION_720P50 = 0x000040, - DS_DISPLAY_RESOLUTION_1080I = 0x000080, - DS_DISPLAY_RESOLUTION_1080P = 0x000100, - DS_DISPLAY_RESOLUTION_1080P24 = 0x000200, - DS_DISPLAY_RESOLUTION_1080I25 = 0x000400, - DS_DISPLAY_RESOLUTION_1080P30 = 0x001000, - DS_DISPLAY_RESOLUTION_1080I50 = 0x002000, - DS_DISPLAY_RESOLUTION_1080P50 = 0x004000, - DS_DISPLAY_RESOLUTION_1080P60 = 0x008000, - DS_DISPLAY_RESOLUTION_2160P24 = 0x010000, - DS_DISPLAY_RESOLUTION_2160P25 = 0x020000, - DS_DISPLAY_RESOLUTION_2160P30 = 0x040000, - DS_DISPLAY_RESOLUTION_2160P50 = 0x080000, - DS_DISPLAY_RESOLUTION_2160P60 = 0x100000 - }DisplayTVResolution; - - -typedef enum _DisplayVideoAspectRatio{ - DS_DISPLAY_ASPECT_RATIO_UNKNOWN = 0 /* @text Video Aspect Ratio UNKNOWN */, - DS_DISPLAY_ASPECT_RATIO_4X3 = 1 /* @text Video Aspect Ratio 4X3 */, - DS_DISPLAY_ASPECT_RATIO_16x9 = 2 /* @text Video Aspect Ratio 16x9 */ - }DisplayVideoAspectRatio; - -typedef enum _DisplayInVideoStereoScopicMode{ - DS_DISPLAY_SSMODE_UNKNOWN = 0, - DS_DISPLAY_SSMODE_2D = 1, - DS_DISPLAY_SSMODE_3D_SIDE_BY_SIDE = 2, - DS_DISPLAY_SSMODE_3D_TOP_AND_BOTTOM = 3 - }DisplayInVideoStereoScopicMode; - - typedef enum _DisplayInVideoFrameRate { - DS_DISPLAY_FRAMERATE_UNKNOWN = 0, - DS_DISPLAY_FRAMERATE_24 = 1, - DS_DISPLAY_FRAMERATE_25 = 2, - DS_DISPLAY_FRAMERATE_30 = 3, - DS_DISPLAY_FRAMERATE_60 = 4, - DS_DISPLAY_FRAMERATE_23_98 = 5, - DS_DISPLAY_FRAMERATE_29_97 = 6, - DS_DISPLAY_FRAMERATE_50 = 7, - DS_DISPLAY_FRAMERATE_59_94 = 8, - DS_DISPLAY_FRAMERATE_100 = 9, - DS_DISPLAY_FRAMERATE_119_88 = 10, - DS_DISPLAY_FRAMERATE_120 = 11, - DS_DISPLAY_FRAMERATE_200 = 12, - DS_DISPLAY_FRAMERATE_239_76 = 13, - DS_DISPLAY_FRAMERATE_240 = 14, - DS_DISPLAY_FRAMERATE_MAX = 15 - }DisplayInVideoFrameRate; - - typedef struct _DisplayVideoPortResolution { - std::string name; - DisplayTVResolution pixelResolution; - DisplayVideoAspectRatio aspectRatio; - DisplayInVideoStereoScopicMode stereoScopicMode; - DisplayInVideoFrameRate frameRate; - bool interlaced; - }DisplayVideoPortResolution; - - - typedef enum _DisplayEvent { - DS_DISPLAY_EVENT_CONNECTED =0, ///< Display connected event - DS_DISPLAY_EVENT_DISCONNECTED =1, ///< Display disconnected event - DS_DISPLAY_RXSENSE_ON =2, ///< Rx Sense ON event - DS_DISPLAY_RXSENSE_OFF =3, ///< Rx Sense OFF event - DS_DISPLAY_HDCPPROTOCOL_CHANGE=4, ///< HDCP Protocol Version Change event - DS_DISPLAY_EVENT_MAX ///< Display max event - }DisplayEvent; - - - typedef enum _FPDTimeFormat{ - DS_FPD_TIMEFORMAT_12_HOUR = 0, - DS_FPD_TIMEFORMAT_24_HOUR = 1, - DS_FPD_TIMEFORMAT_MAX = 2 - }FPDTimeFormat; - - typedef enum _HDCPStatus{ - DS_HDCP_STATUS_UNPOWERED = 0, - DS_HDCP_STATUS_UNAUTHENTICATED = 1, - DS_HDCP_STATUS_AUTHENTICATED = 2, - DS_HDCP_STATUS_AUTHENTICATIONFAILURE = 3, - DS_HDCP_STATUS_INPROGRESS = 4, - DS_HDCP_STATUS_PORTDISABLED = 5, - DS_HDCP_STATUS_MAX = 6 - }HDCPStatus; - - typedef enum _HDRStandard{ - DS_HDRSTANDARD_NONE = 0x0, - DS_HDRSTANDARD_HDR10 = 0x01, - DS_HDRSTANDARD_HLG = 0x02, - DS_HDRSTANDARD_DOLBYVISION = 0x04, - DS_HDRSTANDARD_TECHNICOLORPRIME = 0x08, - DS_HDRSTANDARD_HDR10PLUS = 0x10, - DS_HDRSTANDARD_SDR = 0x20, - DS_HDRSTANDARD_INVALID = 0x80 - }HDRStandard; - - -#ifdef __cplusplus -} -#endif - -#endif /* RPDSMGRNTF_H_ */ - - -/** @} */ -/** @} */ From 7e828d1a94b437507ea1d28afdccd4b6e8fc4ee2 Mon Sep 17 00:00:00 2001 From: Shrinivas Kamath Date: Tue, 26 Aug 2025 10:27:45 +0530 Subject: [PATCH 030/103] some rename, remove OnAudioLevelChangedEvent --- ds/host.cpp | 8 +++--- ds/iarm/IarmHostImpl.cpp | 62 ++++++++++++++-------------------------- ds/iarm/IarmHostImpl.hpp | 22 +++++++------- ds/include/host.hpp | 21 +++++++------- 4 files changed, 48 insertions(+), 65 deletions(-) diff --git a/ds/host.cpp b/ds/host.cpp index 223c6106..580074e5 100644 --- a/ds/host.cpp +++ b/ds/host.cpp @@ -785,22 +785,22 @@ uint32_t Host::UnRegister(IVideoDeviceEvents* listener) return impl().UnRegister(listener); } -uint32_t Host::Register(IVideoPortEvents* listener) +uint32_t Host::Register(IVideoOutputPortEvents* listener) { return impl().Register(listener); } -uint32_t Host::UnRegister(IVideoPortEvents* listener) +uint32_t Host::UnRegister(IVideoOutputPortEvents* listener) { return impl().UnRegister(listener); } -uint32_t Host::Register(IAudioPortEvents* listener) +uint32_t Host::Register(IAudioOutputPortEvents* listener) { return impl().Register(listener); } -uint32_t Host::UnRegister(IAudioPortEvents* listener) +uint32_t Host::UnRegister(IAudioOutputPortEvents* listener) { return impl().UnRegister(listener); } diff --git a/ds/iarm/IarmHostImpl.cpp b/ds/iarm/IarmHostImpl.cpp index aeeba825..d8eb9b44 100644 --- a/ds/iarm/IarmHostImpl.cpp +++ b/ds/iarm/IarmHostImpl.cpp @@ -11,8 +11,8 @@ #include "libIBus.h" using IVideoDeviceEvents = device::Host::IVideoDeviceEvents; -using IVideoPortEvents = device::Host::IVideoPortEvents; -using IAudioPortEvents = device::Host::IAudioPortEvents; +using IVideoOutputPortEvents = device::Host::IVideoOutputPortEvents; +using IAudioOutputPortEvents = device::Host::IAudioOutputPortEvents; namespace device { @@ -140,7 +140,7 @@ class IARMGroupVideoPort { int width = eventData->data.resn.width; int height = eventData->data.resn.height; - IarmHostImpl::Dispatch([width, height](IVideoPortEvents* listener) { + IarmHostImpl::Dispatch([width, height](IVideoOutputPortEvents* listener) { listener->OnResolutionPreChange(width, height); }); } else { @@ -158,7 +158,7 @@ class IARMGroupVideoPort { int width = eventData->data.resn.width; int height = eventData->data.resn.height; - IarmHostImpl::Dispatch([width, height](IVideoPortEvents* listener) { + IarmHostImpl::Dispatch([width, height](IVideoOutputPortEvents* listener) { listener->OnResolutionPostChange(width, height); }); } else { @@ -188,7 +188,7 @@ class IARMGroupVideoPort { if (eventData) { dsHDRStandard_t videoFormat = eventData->data.VideoFormatInfo.videoFormat; - IarmHostImpl::Dispatch([videoFormat](IVideoPortEvents* listener) { + IarmHostImpl::Dispatch([videoFormat](IVideoOutputPortEvents* listener) { listener->OnVideoFormatUpdate(videoFormat); }); } else { @@ -226,7 +226,7 @@ class IARMGroupAudioPort { if (eventData) { bool mixing = eventData->data.AssociatedAudioMixingInfo.mixing; - IarmHostImpl::Dispatch([mixing](IAudioPortEvents* listener) { + IarmHostImpl::Dispatch([mixing](IAudioOutputPortEvents* listener) { listener->OnAssociatedAudioMixingChanged(mixing); }); } else { @@ -243,7 +243,7 @@ class IARMGroupAudioPort { if (eventData) { int mixerBalance = eventData->data.FaderControlInfo.mixerbalance; - IarmHostImpl::Dispatch([mixerBalance](IAudioPortEvents* listener) { + IarmHostImpl::Dispatch([mixerBalance](IAudioOutputPortEvents* listener) { listener->OnAudioFaderControlChanged(mixerBalance); }); } else { @@ -260,7 +260,7 @@ class IARMGroupAudioPort { if (eventData) { std::string primaryLanguage(eventData->data.AudioLanguageInfo.audioLanguage); - IarmHostImpl::Dispatch([&primaryLanguage](IAudioPortEvents* listener) { + IarmHostImpl::Dispatch([&primaryLanguage](IAudioOutputPortEvents* listener) { listener->OnAudioPrimaryLanguageChanged(primaryLanguage); }); } else { @@ -277,7 +277,7 @@ class IARMGroupAudioPort { if (eventData) { std::string secondaryLanguage(eventData->data.AudioLanguageInfo.audioLanguage); - IarmHostImpl::Dispatch([&secondaryLanguage](IAudioPortEvents* listener) { + IarmHostImpl::Dispatch([&secondaryLanguage](IAudioOutputPortEvents* listener) { listener->OnAudioSecondaryLanguageChanged(secondaryLanguage); }); } else { @@ -294,7 +294,7 @@ class IARMGroupAudioPort { int uiPortNumber = eventData->data.audio_out_connect.uiPortNo; bool isPortConnected = eventData->data.audio_out_connect.isPortConnected; - IarmHostImpl::Dispatch([portType, uiPortNumber, isPortConnected](IAudioPortEvents* listener) { + IarmHostImpl::Dispatch([portType, uiPortNumber, isPortConnected](IAudioOutputPortEvents* listener) { listener->OnAudioOutHotPlug(portType, uiPortNumber, isPortConnected); }); } else { @@ -310,7 +310,7 @@ class IARMGroupAudioPort { dsATMOSCapability_t atmosCapability = eventData->data.AtmosCapsChange.caps; bool status = eventData->data.AtmosCapsChange.status; - IarmHostImpl::Dispatch([atmosCapability, status](IAudioPortEvents* listener) { + IarmHostImpl::Dispatch([atmosCapability, status](IAudioOutputPortEvents* listener) { listener->OnDolbyAtmosCapabilitiesChanged(atmosCapability, status); }); @@ -329,7 +329,7 @@ class IARMGroupAudioPort { if (eventData) { dsAudioPortState_t audioPortState = eventData->data.AudioPortStateInfo.audioPortState; - IarmHostImpl::Dispatch([audioPortState](IAudioPortEvents* listener) { + IarmHostImpl::Dispatch([audioPortState](IAudioOutputPortEvents* listener) { // TODO: // listener->OnAudioPortStateChanged(audioPortState); }); @@ -348,7 +348,7 @@ class IARMGroupAudioPort { dsAudioPortType_t audioPortType = static_cast(eventData->data.Audioport.type); dsAudioStereoMode_t audioStereoMode = static_cast(eventData->data.Audioport.mode); - IarmHostImpl::Dispatch([audioPortType, audioStereoMode](IAudioPortEvents* listener) { + IarmHostImpl::Dispatch([audioPortType, audioStereoMode](IAudioOutputPortEvents* listener) { listener->OnAudioModeEvent(audioPortType, audioStereoMode); }); } else { @@ -356,23 +356,6 @@ class IARMGroupAudioPort { } }; - static void iarmAudioLevelChangedEventHandler(const char*, IARM_EventId_t eventId, void* data, size_t len) - { - INT_INFO("IARM_BUS_DSMGR_EVENT_AUDIO_LEVEL_CHANGED received, eventId=%d", eventId); - - IARM_Bus_DSMgr_EventData_t* eventData = (IARM_Bus_DSMgr_EventData_t*)data; - - if (eventData) { - int audioLevel = eventData->data.AudioLevelInfo.level; - - IarmHostImpl::Dispatch([audioLevel](IAudioPortEvents* listener) { - listener->OnAudioLevelChangedEvent(audioLevel); - }); - } else { - INT_ERROR("Invalid data received for audio level change"); - } - }; - static void iarmAudioFormatUpdateHandler(const char*, IARM_EventId_t eventId, void* data, size_t len) { INT_INFO("IARM_BUS_DSMGR_EVENT_AUDIO_FORMAT_UPDATE received, eventId=%d", eventId); @@ -382,7 +365,7 @@ class IARMGroupAudioPort { if (eventData) { dsAudioFormat_t audioFormat = eventData->data.AudioFormatInfo.audioFormat; - IarmHostImpl::Dispatch([audioFormat](IAudioPortEvents* listener) { + IarmHostImpl::Dispatch([audioFormat](IAudioOutputPortEvents* listener) { listener->OnAudioFormatUpdate(audioFormat); }); } else { @@ -400,7 +383,6 @@ class IARMGroupAudioPort { { IARM_BUS_DSMGR_EVENT_ATMOS_CAPS_CHANGED, &IARMGroupAudioPort::iarmDolbyAtmosCapabilitiesChangedHandler }, { IARM_BUS_DSMGR_EVENT_AUDIO_PORT_STATE, &IARMGroupAudioPort::iarmAudioPortStateChangedHandler }, { IARM_BUS_DSMGR_EVENT_AUDIO_MODE, &IARMGroupAudioPort::iarmAudioModeEventHandler }, - { IARM_BUS_DSMGR_EVENT_AUDIO_LEVEL_CHANGED, &IARMGroupAudioPort::iarmAudioLevelChangedEventHandler }, { IARM_BUS_DSMGR_EVENT_AUDIO_FORMAT_UPDATE, &IARMGroupAudioPort::iarmAudioFormatUpdateHandler }, }; }; @@ -408,8 +390,8 @@ class IARMGroupAudioPort { // static data std::mutex IarmHostImpl::s_mutex; IarmHostImpl::CallbackList IarmHostImpl::s_videoDeviceListeners; -IarmHostImpl::CallbackList IarmHostImpl::s_videoPortListeners; -IarmHostImpl::CallbackList IarmHostImpl::s_audioPortListeners; +IarmHostImpl::CallbackList IarmHostImpl::s_videoPortListeners; +IarmHostImpl::CallbackList IarmHostImpl::s_audioPortListeners; IarmHostImpl::~IarmHostImpl() { @@ -457,38 +439,38 @@ uint32_t IarmHostImpl::UnRegister(IVideoDeviceEvents* listener) Dispatch(s_videoDeviceListeners, std::move(fn)); } -uint32_t IarmHostImpl::Register(IVideoPortEvents* listener) +uint32_t IarmHostImpl::Register(IVideoOutputPortEvents* listener) { std::lock_guard lock(s_mutex); return s_videoPortListeners.Register(listener); } -uint32_t IarmHostImpl::UnRegister(IVideoPortEvents* listener) +uint32_t IarmHostImpl::UnRegister(IVideoOutputPortEvents* listener) { std::lock_guard lock(s_mutex); return s_videoPortListeners.UnRegister(listener); } // Dispatcher for IARMGroupVideoPort -/* static */ void IarmHostImpl::Dispatch(std::function&& fn) +/* static */ void IarmHostImpl::Dispatch(std::function&& fn) { Dispatch(s_videoPortListeners, std::move(fn)); } -uint32_t IarmHostImpl::Register(IAudioPortEvents* listener) +uint32_t IarmHostImpl::Register(IAudioOutputPortEvents* listener) { std::lock_guard lock(s_mutex); return s_audioPortListeners.Register(listener); } -uint32_t IarmHostImpl::UnRegister(IAudioPortEvents* listener) +uint32_t IarmHostImpl::UnRegister(IAudioOutputPortEvents* listener) { std::lock_guard lock(s_mutex); return s_audioPortListeners.UnRegister(listener); } // Dispatcher for IARMGroupAudioPort -/* static */ void IarmHostImpl::Dispatch(std::function&& fn) +/* static */ void IarmHostImpl::Dispatch(std::function&& fn) { Dispatch(s_audioPortListeners, std::move(fn)); } diff --git a/ds/iarm/IarmHostImpl.hpp b/ds/iarm/IarmHostImpl.hpp index 4b61e88a..85c7f660 100755 --- a/ds/iarm/IarmHostImpl.hpp +++ b/ds/iarm/IarmHostImpl.hpp @@ -135,9 +135,9 @@ class IarmHostImpl { }; public: - using IVideoDeviceEvents = device::Host::IVideoDeviceEvents; - using IVideoPortEvents = device::Host::IVideoPortEvents; - using IAudioPortEvents = device::Host::IAudioPortEvents; + using IVideoDeviceEvents = device::Host::IVideoDeviceEvents; + using IVideoOutputPortEvents = device::Host::IVideoOutputPortEvents; + using IAudioOutputPortEvents = device::Host::IAudioOutputPortEvents; IarmHostImpl(); ~IarmHostImpl(); @@ -152,33 +152,33 @@ class IarmHostImpl { // @brief Register a listener for video port events // @param listener: class object implementing the listener - uint32_t Register(IVideoPortEvents* listener); + uint32_t Register(IVideoOutputPortEvents* listener); // @brief UnRegister a listener for video port events // @param listener: class object implementing the listener - uint32_t UnRegister(IVideoPortEvents* listener); + uint32_t UnRegister(IVideoOutputPortEvents* listener); // @brief Register a listener for audio port events // @param listener: class object implementing the listener - uint32_t Register(IAudioPortEvents* listener); + uint32_t Register(IAudioOutputPortEvents* listener); // @brief UnRegister a listener for audio port events // @param listener: class object implementing the listener - uint32_t UnRegister(IAudioPortEvents* listener); + uint32_t UnRegister(IAudioOutputPortEvents* listener); private: static std::mutex s_mutex; static CallbackList s_videoDeviceListeners; - static CallbackList s_videoPortListeners; - static CallbackList s_audioPortListeners; + static CallbackList s_videoPortListeners; + static CallbackList s_audioPortListeners; template static void Dispatch(const std::list& listeners, F&& fn); static void Dispatch(std::function&& fn); - static void Dispatch(std::function&& fn); - static void Dispatch(std::function&& fn); + static void Dispatch(std::function&& fn); + static void Dispatch(std::function&& fn); // Dispatch is private, so all IARMGroup implementations will need to be friends friend class IARMGroupVideoDevice; diff --git a/ds/include/host.hpp b/ds/include/host.hpp index 102c0a4a..f4e4918e 100644 --- a/ds/include/host.hpp +++ b/ds/include/host.hpp @@ -68,6 +68,11 @@ class Host { // @brief Display Frame rate Post-change notification // @param frameRate: new framerate virtual void OnDisplayFrameratePostChange(const std::string& frameRate) { }; + + // @brief Zoom settings changed + // @text OnZoomSettingsChanged + // @param zoomSetting: Currently applied zoom setting + virtual void OnZoomSettingsChanged(dsVideoZoom_t zoomSetting) { }; }; // @brief Register a listener for video device events @@ -78,7 +83,7 @@ class Host { // @param listener: class object implementing the listener uint32_t UnRegister(IVideoDeviceEvents* listener); - struct IVideoPortEvents { + struct IVideoOutputPortEvents { // @brief On Resolution Pre changed // @param width: width of the resolution @@ -101,13 +106,13 @@ class Host { // @brief Register a listener for video port events // @param listener: class object implementing the listener - uint32_t Register(IVideoPortEvents* listener); + uint32_t Register(IVideoOutputPortEvents* listener); // @brief UnRegister a listener for video port events // @param listener: class object implementing the listener - uint32_t UnRegister(IVideoPortEvents* listener); + uint32_t UnRegister(IVideoOutputPortEvents* listener); - struct IAudioPortEvents { + struct IAudioOutputPortEvents { // @brief Associated Audio mixing changed // @param mixing: true or false @@ -146,10 +151,6 @@ class Host { // @param audioStereoMode: audio stereo mode - see dsAudioStereoMode_t virtual void OnAudioModeEvent(dsAudioPortType_t audioPortType, dsAudioStereoMode_t audioStereoMode) { }; - // @brief Audio level changed - // @param audioiLevel: audio level value - virtual void OnAudioLevelChangedEvent(int audioLevel) { }; - // @brief Audio Output format changed // @param audioFormat: Type of audio format see AudioFormat virtual void OnAudioFormatUpdate(dsAudioFormat_t audioFormat) { }; @@ -157,11 +158,11 @@ class Host { // @brief Register a listener for audio port events // @param listener: class object implementing the listener - uint32_t Register(IAudioPortEvents* listener); + uint32_t Register(IAudioOutputPortEvents* listener); // @brief UnRegister a listener for audio port events // @param listener: class object implementing the listener - uint32_t UnRegister(IAudioPortEvents* listener); + uint32_t UnRegister(IAudioOutputPortEvents* listener); bool setPowerMode(int mode); int getPowerMode(); From d9535eb78ae62efde1559b9f9eb2f283263ecf2e Mon Sep 17 00:00:00 2001 From: Shrinivas Kamath Date: Tue, 26 Aug 2025 11:15:19 +0530 Subject: [PATCH 031/103] restore OnAudioLevelChanged, implement OnZoomSettingsChanged --- ds/iarm/IarmHostImpl.cpp | 42 +++++++++++++++++++++++++++++++++++++--- ds/include/host.hpp | 4 ++++ 2 files changed, 43 insertions(+), 3 deletions(-) diff --git a/ds/iarm/IarmHostImpl.cpp b/ds/iarm/IarmHostImpl.cpp index d8eb9b44..ed4a23b8 100644 --- a/ds/iarm/IarmHostImpl.cpp +++ b/ds/iarm/IarmHostImpl.cpp @@ -10,9 +10,9 @@ #include "libIBus.h" -using IVideoDeviceEvents = device::Host::IVideoDeviceEvents; -using IVideoOutputPortEvents = device::Host::IVideoOutputPortEvents; -using IAudioOutputPortEvents = device::Host::IAudioOutputPortEvents; +using IVideoDeviceEvents = device::Host::IVideoDeviceEvents; +using IVideoOutputPortEvents = device::Host::IVideoOutputPortEvents; +using IAudioOutputPortEvents = device::Host::IAudioOutputPortEvents; namespace device { @@ -111,9 +111,27 @@ class IARMGroupVideoDevice { } } + static void iarmZoomSettingsChangedHandler(const char* owner, IARM_EventId_t eventId, void* data, size_t len) + { + INT_INFO("IARM_BUS_DSMGR_EVENT_ZOOM_SETTINGS received %s %d", owner, eventId); + + IARM_Bus_DSMgr_EventData_t* eventData = (IARM_Bus_DSMgr_EventData_t*)data; + + if (eventData) { + dsVideoZoom_t zoomSetting = static_cast(eventData->data.dfc.zoomsettings); + + IarmHostImpl::Dispatch([zoomSetting](IVideoDeviceEvents* listener) { + listener->OnZoomSettingsChanged(zoomSetting); + }); + } else { + INT_ERROR("Invalid data received for zoom settings change"); + } + }; + static constexpr EventHandlerMapping handlers[] = { { IARM_BUS_DSMGR_EVENT_DISPLAY_FRAMRATE_PRECHANGE, &IARMGroupVideoDevice::iarmDisplayFrameratePreChangeHandler }, { IARM_BUS_DSMGR_EVENT_DISPLAY_FRAMRATE_POSTCHANGE, &IARMGroupVideoDevice::iarmDisplayFrameratePostChangeHandler }, + { IARM_BUS_DSMGR_EVENT_ZOOM_SETTINGS, &IARMGroupVideoDevice::iarmZoomSettingsChangedHandler }, }; }; @@ -356,6 +374,23 @@ class IARMGroupAudioPort { } }; + static void iarmAudioLevelChangedEventHandler(const char*, IARM_EventId_t eventId, void* data, size_t len) + { + INT_INFO("IARM_BUS_DSMGR_EVENT_AUDIO_LEVEL_CHANGED received, eventId=%d", eventId); + + IARM_Bus_DSMgr_EventData_t* eventData = (IARM_Bus_DSMgr_EventData_t*)data; + + if (eventData) { + int audioLevel = eventData->data.AudioLevelInfo.level; + + IarmHostImpl::Dispatch([audioLevel](IAudioOutputPortEvents* listener) { + listener->OnAudioLevelChangedEvent(audioLevel); + }); + } else { + INT_ERROR("Invalid data received for audio level change"); + } + }; + static void iarmAudioFormatUpdateHandler(const char*, IARM_EventId_t eventId, void* data, size_t len) { INT_INFO("IARM_BUS_DSMGR_EVENT_AUDIO_FORMAT_UPDATE received, eventId=%d", eventId); @@ -383,6 +418,7 @@ class IARMGroupAudioPort { { IARM_BUS_DSMGR_EVENT_ATMOS_CAPS_CHANGED, &IARMGroupAudioPort::iarmDolbyAtmosCapabilitiesChangedHandler }, { IARM_BUS_DSMGR_EVENT_AUDIO_PORT_STATE, &IARMGroupAudioPort::iarmAudioPortStateChangedHandler }, { IARM_BUS_DSMGR_EVENT_AUDIO_MODE, &IARMGroupAudioPort::iarmAudioModeEventHandler }, + { IARM_BUS_DSMGR_EVENT_AUDIO_LEVEL_CHANGED, &IARMGroupAudioPort::iarmAudioLevelChangedEventHandler }, { IARM_BUS_DSMGR_EVENT_AUDIO_FORMAT_UPDATE, &IARMGroupAudioPort::iarmAudioFormatUpdateHandler }, }; }; diff --git a/ds/include/host.hpp b/ds/include/host.hpp index f4e4918e..6c5c8dea 100644 --- a/ds/include/host.hpp +++ b/ds/include/host.hpp @@ -151,6 +151,10 @@ class Host { // @param audioStereoMode: audio stereo mode - see dsAudioStereoMode_t virtual void OnAudioModeEvent(dsAudioPortType_t audioPortType, dsAudioStereoMode_t audioStereoMode) { }; + // @brief Audio level changed + // @param audioiLevel: audio level value + virtual void OnAudioLevelChangedEvent(int audioLevel) { }; + // @brief Audio Output format changed // @param audioFormat: Type of audio format see AudioFormat virtual void OnAudioFormatUpdate(dsAudioFormat_t audioFormat) { }; From b81e7584de8ee0ed87cbc305240cb5b0f5c9251f Mon Sep 17 00:00:00 2001 From: Shrinivas Kamath Date: Tue, 26 Aug 2025 11:52:58 +0530 Subject: [PATCH 032/103] improv error handling --- ds/host.cpp | 12 +-- ds/iarm/IarmHostImpl.cpp | 154 +++++++++++++++++++++++++++++---------- ds/iarm/IarmHostImpl.hpp | 35 ++++----- ds/include/host.hpp | 13 ++-- 4 files changed, 147 insertions(+), 67 deletions(-) diff --git a/ds/host.cpp b/ds/host.cpp index 580074e5..c1023285 100644 --- a/ds/host.cpp +++ b/ds/host.cpp @@ -775,32 +775,32 @@ DefaultImpl& Host::impl() return *m_impl; } -uint32_t Host::Register(IVideoDeviceEvents* listener) +dsError_t Host::Register(IVideoDeviceEvents* listener) { return impl().Register(listener); } -uint32_t Host::UnRegister(IVideoDeviceEvents* listener) +dsError_t Host::UnRegister(IVideoDeviceEvents* listener) { return impl().UnRegister(listener); } -uint32_t Host::Register(IVideoOutputPortEvents* listener) +dsError_t Host::Register(IVideoOutputPortEvents* listener) { return impl().Register(listener); } -uint32_t Host::UnRegister(IVideoOutputPortEvents* listener) +dsError_t Host::UnRegister(IVideoOutputPortEvents* listener) { return impl().UnRegister(listener); } -uint32_t Host::Register(IAudioOutputPortEvents* listener) +dsError_t Host::Register(IAudioOutputPortEvents* listener) { return impl().Register(listener); } -uint32_t Host::UnRegister(IAudioOutputPortEvents* listener) +dsError_t Host::UnRegister(IAudioOutputPortEvents* listener) { return impl().UnRegister(listener); } diff --git a/ds/iarm/IarmHostImpl.cpp b/ds/iarm/IarmHostImpl.cpp index ed4a23b8..486ce686 100644 --- a/ds/iarm/IarmHostImpl.cpp +++ b/ds/iarm/IarmHostImpl.cpp @@ -5,7 +5,6 @@ #include "IarmHostImpl.hpp" #include "dsMgr.h" -/*#include "dsTypes.h"*/ #include "dslogger.h" #include "libIBus.h" @@ -61,6 +60,15 @@ static bool registerIarmEvents(const EventHandlerMapping (&handlers)[N]) return registered; } +inline bool isValidOwner(const char* owner) +{ + if (std::string(IARM_BUS_DSMGR_NAME) != std::string(owner)) { + INT_ERROR("Invalid owner %s, expected %s", owner, IARM_BUS_DSMGR_NAME); + return false; + } + return true; +} + // IARMGroupXYZ are c to c++ shim (all methods are static) // Required to perform group event register and unregister with IARM // Thread safety to be ensured by the caller @@ -79,7 +87,11 @@ class IARMGroupVideoDevice { private: static void iarmDisplayFrameratePreChangeHandler(const char* owner, IARM_EventId_t eventId, void* data, size_t len) { - INT_INFO("IARM_BUS_DSMGR_EVENT_DISPLAY_FRAMRATE_PRECHANGE received %s %d", owner, eventId); + INT_INFO("IARM_BUS_DSMGR_EVENT_DISPLAY_FRAMRATE_PRECHANGE received owner = %s, eventId = %d", owner, eventId); + + if (!isValidOwner(owner)) { + return; + } IARM_Bus_DSMgr_EventData_t* eventData = (IARM_Bus_DSMgr_EventData_t*)data; @@ -96,7 +108,11 @@ class IARMGroupVideoDevice { static void iarmDisplayFrameratePostChangeHandler(const char* owner, IARM_EventId_t eventId, void* data, size_t len) { - INT_INFO("IARM_BUS_DSMGR_EVENT_DISPLAY_FRAMRATE_POSTCHANGE received %s %d", owner, eventId); + INT_INFO("IARM_BUS_DSMGR_EVENT_DISPLAY_FRAMRATE_POSTCHANGE received owner = %s, eventId = %d", owner, eventId); + + if (!isValidOwner(owner)) { + return; + } IARM_Bus_DSMgr_EventData_t* eventData = (IARM_Bus_DSMgr_EventData_t*)data; @@ -113,7 +129,11 @@ class IARMGroupVideoDevice { static void iarmZoomSettingsChangedHandler(const char* owner, IARM_EventId_t eventId, void* data, size_t len) { - INT_INFO("IARM_BUS_DSMGR_EVENT_ZOOM_SETTINGS received %s %d", owner, eventId); + INT_INFO("IARM_BUS_DSMGR_EVENT_ZOOM_SETTINGS received owner = %s, eventId = %d", owner, eventId); + + if (!isValidOwner(owner)) { + return; + } IARM_Bus_DSMgr_EventData_t* eventData = (IARM_Bus_DSMgr_EventData_t*)data; @@ -148,9 +168,13 @@ class IARMGroupVideoPort { } private: - static void iarmResolutionPreChangeHandler(const char*, IARM_EventId_t eventId, void* data, size_t len) + static void iarmResolutionPreChangeHandler(const char* owner, IARM_EventId_t eventId, void* data, size_t len) { - INT_INFO("IARM_BUS_DSMGR_EVENT_RES_PRECHANGE received, eventId = %d", eventId); + INT_INFO("IARM_BUS_DSMGR_EVENT_RES_PRECHANGE received owner = %s, eventId = %d", owner, eventId); + + if (!isValidOwner(owner)) { + return; + } IARM_Bus_DSMgr_EventData_t* eventData = (IARM_Bus_DSMgr_EventData_t*)data; @@ -166,9 +190,13 @@ class IARMGroupVideoPort { } } - static void iarmResolutionPostChangeHandler(const char*, IARM_EventId_t eventId, void* data, size_t len) + static void iarmResolutionPostChangeHandler(const char* owner, IARM_EventId_t eventId, void* data, size_t len) { - INT_INFO("IARM_BUS_DSMGR_EVENT_RES_POSTCHANGE received, eventId = %d", eventId); + INT_INFO("IARM_BUS_DSMGR_EVENT_RES_POSTCHANGE received owner = %s, eventId = %d", owner, eventId); + + if (!isValidOwner(owner)) { + return; + } IARM_Bus_DSMgr_EventData_t* eventData = (IARM_Bus_DSMgr_EventData_t*)data; @@ -184,9 +212,13 @@ class IARMGroupVideoPort { } } - static void iarmHDCPStatusChangeHandler(const char*, IARM_EventId_t eventId, void* data, size_t len) + static void iarmHDCPStatusChangeHandler(const char* owner, IARM_EventId_t eventId, void* data, size_t len) { - INT_INFO("IARM_BUS_DSMGR_EVENT_HDCP_STATUS received, eventId=%d", eventId); + INT_INFO("IARM_BUS_DSMGR_EVENT_HDCP_STATUS received owner = %s, eventId = %d", owner, eventId); + + if (!isValidOwner(owner)) { + return; + } IARM_Bus_DSMgr_EventData_t* eventData = (IARM_Bus_DSMgr_EventData_t*)data; @@ -197,9 +229,13 @@ class IARMGroupVideoPort { } } - static void iarmVideoFormatUpdateHandler(const char*, IARM_EventId_t eventId, void* data, size_t len) + static void iarmVideoFormatUpdateHandler(const char* owner, IARM_EventId_t eventId, void* data, size_t len) { - INT_INFO("IARM_BUS_DSMGR_EVENT_VIDEO_FORMAT_UPDATE received, eventId=%d", eventId); + INT_INFO("IARM_BUS_DSMGR_EVENT_VIDEO_FORMAT_UPDATE received owner = %s, eventId = %d", owner, eventId); + + if (!isValidOwner(owner)) { + return; + } IARM_Bus_DSMgr_EventData_t* eventData = (IARM_Bus_DSMgr_EventData_t*)data; @@ -235,9 +271,13 @@ class IARMGroupAudioPort { } private: - static void iarmAssociatedAudioMixingChangedHandler(const char*, IARM_EventId_t eventId, void* data, size_t len) + static void iarmAssociatedAudioMixingChangedHandler(const char* owner, IARM_EventId_t eventId, void* data, size_t len) { - INT_INFO("IARM_BUS_DSMGR_EVENT_AUDIO_ASSOCIATED_AUDIO_MIXING_CHANGED received, eventId=%d", eventId); + INT_INFO("IARM_BUS_DSMGR_EVENT_AUDIO_ASSOCIATED_AUDIO_MIXING_CHANGED received owner = %s, eventId = %d", owner, eventId); + + if (!isValidOwner(owner)) { + return; + } IARM_Bus_DSMgr_EventData_t* eventData = (IARM_Bus_DSMgr_EventData_t*)data; @@ -252,9 +292,13 @@ class IARMGroupAudioPort { } }; - static void iarmAudioFaderControlChangedHandler(const char*, IARM_EventId_t eventId, void* data, size_t len) + static void iarmAudioFaderControlChangedHandler(const char* owner, IARM_EventId_t eventId, void* data, size_t len) { - INT_INFO("IARM_BUS_DSMGR_EVENT_AUDIO_FADER_CONTROL_CHANGED received, eventId=%d", eventId); + INT_INFO("IARM_BUS_DSMGR_EVENT_AUDIO_FADER_CONTROL_CHANGED received owner = %s, eventId = %d", owner, eventId); + + if (!isValidOwner(owner)) { + return; + } IARM_Bus_DSMgr_EventData_t* eventData = (IARM_Bus_DSMgr_EventData_t*)data; @@ -269,9 +313,13 @@ class IARMGroupAudioPort { } }; - static void iarmAudioPrimaryLanguageChangedHandler(const char*, IARM_EventId_t eventId, void* data, size_t len) + static void iarmAudioPrimaryLanguageChangedHandler(const char* owner, IARM_EventId_t eventId, void* data, size_t len) { - INT_INFO("IARM_BUS_DSMGR_EVENT_AUDIO_PRIMARY_LANGUAGE_CHANGED received, eventId=%d", eventId); + INT_INFO("IARM_BUS_DSMGR_EVENT_AUDIO_PRIMARY_LANGUAGE_CHANGED received owner = %s, eventId = %d", owner, eventId); + + if (!isValidOwner(owner)) { + return; + } IARM_Bus_DSMgr_EventData_t* eventData = (IARM_Bus_DSMgr_EventData_t*)data; @@ -286,9 +334,13 @@ class IARMGroupAudioPort { } }; - static void iarmAudioSecondaryLanguageChangedHandler(const char*, IARM_EventId_t eventId, void* data, size_t len) + static void iarmAudioSecondaryLanguageChangedHandler(const char* owner, IARM_EventId_t eventId, void* data, size_t len) { - INT_INFO("IARM_BUS_DSMGR_EVENT_AUDIO_SECONDARY_LANGUAGE_CHANGED received, eventId=%d", eventId); + INT_INFO("IARM_BUS_DSMGR_EVENT_AUDIO_SECONDARY_LANGUAGE_CHANGED received owner = %s, eventId = %d", owner, eventId); + + if (!isValidOwner(owner)) { + return; + } IARM_Bus_DSMgr_EventData_t* eventData = (IARM_Bus_DSMgr_EventData_t*)data; @@ -303,9 +355,14 @@ class IARMGroupAudioPort { } }; - static void iarmAudioOutHotPlugHandler(const char*, IARM_EventId_t eventId, void* data, size_t len) + static void iarmAudioOutHotPlugHandler(const char* owner, IARM_EventId_t eventId, void* data, size_t len) { - INT_INFO("IARM_BUS_DSMGR_EVENT_AUDIO_OUT_HOTPLUG received, eventId=%d", eventId); + INT_INFO("IARM_BUS_DSMGR_EVENT_AUDIO_OUT_HOTPLUG received owner = %s, eventId = %d", owner, eventId); + + if (!isValidOwner(owner)) { + return; + } + IARM_Bus_DSMgr_EventData_t* eventData = (IARM_Bus_DSMgr_EventData_t*)data; if (eventData) { dsAudioPortType_t portType = eventData->data.audio_out_connect.portType; @@ -320,9 +377,14 @@ class IARMGroupAudioPort { } }; - static void iarmDolbyAtmosCapabilitiesChangedHandler(const char*, IARM_EventId_t eventId, void* data, size_t len) + static void iarmDolbyAtmosCapabilitiesChangedHandler(const char* owner, IARM_EventId_t eventId, void* data, size_t len) { - INT_INFO("IARM_BUS_DSMGR_EVENT_ATMOS_CAPS_CHANGED received, eventId=%d", eventId); + INT_INFO("IARM_BUS_DSMGR_EVENT_ATMOS_CAPS_CHANGED received owner = %s, eventId = %d", owner, eventId); + + if (!isValidOwner(owner)) { + return; + } + IARM_Bus_DSMgr_EventData_t* eventData = (IARM_Bus_DSMgr_EventData_t*)data; if (eventData) { dsATMOSCapability_t atmosCapability = eventData->data.AtmosCapsChange.caps; @@ -338,9 +400,13 @@ class IARMGroupAudioPort { }; // TODO: requires dsMgr.h header for dsAudioPortState_t ? - static void iarmAudioPortStateChangedHandler(const char*, IARM_EventId_t eventId, void* data, size_t len) + static void iarmAudioPortStateChangedHandler(const char* owner, IARM_EventId_t eventId, void* data, size_t len) { - INT_INFO("IARM_BUS_DSMGR_EVENT_AUDIO_PORT_STATE received, eventId=%d", eventId); + INT_INFO("IARM_BUS_DSMGR_EVENT_AUDIO_PORT_STATE received owner = %s, eventId = %d", owner, eventId); + + if (!isValidOwner(owner)) { + return; + } IARM_Bus_DSMgr_EventData_t* eventData = (IARM_Bus_DSMgr_EventData_t*)data; @@ -356,9 +422,13 @@ class IARMGroupAudioPort { } }; - static void iarmAudioModeEventHandler(const char*, IARM_EventId_t eventId, void* data, size_t len) + static void iarmAudioModeEventHandler(const char* owner, IARM_EventId_t eventId, void* data, size_t len) { - INT_INFO("IARM_BUS_DSMGR_EVENT_AUDIO_MODE received, eventId=%d", eventId); + INT_INFO("IARM_BUS_DSMGR_EVENT_AUDIO_MODE received owner = %s, eventId = %d", owner, eventId); + + if (!isValidOwner(owner)) { + return; + } IARM_Bus_DSMgr_EventData_t* eventData = (IARM_Bus_DSMgr_EventData_t*)data; @@ -374,9 +444,13 @@ class IARMGroupAudioPort { } }; - static void iarmAudioLevelChangedEventHandler(const char*, IARM_EventId_t eventId, void* data, size_t len) + static void iarmAudioLevelChangedEventHandler(const char* owner, IARM_EventId_t eventId, void* data, size_t len) { - INT_INFO("IARM_BUS_DSMGR_EVENT_AUDIO_LEVEL_CHANGED received, eventId=%d", eventId); + INT_INFO("IARM_BUS_DSMGR_EVENT_AUDIO_LEVEL_CHANGED received owner = %s, eventId = %d", owner, eventId); + + if (!isValidOwner(owner)) { + return; + } IARM_Bus_DSMgr_EventData_t* eventData = (IARM_Bus_DSMgr_EventData_t*)data; @@ -391,9 +465,13 @@ class IARMGroupAudioPort { } }; - static void iarmAudioFormatUpdateHandler(const char*, IARM_EventId_t eventId, void* data, size_t len) + static void iarmAudioFormatUpdateHandler(const char* owner, IARM_EventId_t eventId, void* data, size_t len) { - INT_INFO("IARM_BUS_DSMGR_EVENT_AUDIO_FORMAT_UPDATE received, eventId=%d", eventId); + INT_INFO("IARM_BUS_DSMGR_EVENT_AUDIO_FORMAT_UPDATE received owner = %s, eventId = %d", owner, eventId); + + if (!isValidOwner(owner)) { + return; + } IARM_Bus_DSMgr_EventData_t* eventData = (IARM_Bus_DSMgr_EventData_t*)data; @@ -457,13 +535,13 @@ template INT_INFO("%s Dispatch done to %zu listeners\n%s", typeid(T).name(), listeners.size(), ss.str().c_str()); } -uint32_t IarmHostImpl::Register(IVideoDeviceEvents* listener) +dsError_t IarmHostImpl::Register(IVideoDeviceEvents* listener) { std::lock_guard lock(s_mutex); return s_videoDeviceListeners.Register(listener); } -uint32_t IarmHostImpl::UnRegister(IVideoDeviceEvents* listener) +dsError_t IarmHostImpl::UnRegister(IVideoDeviceEvents* listener) { std::lock_guard lock(s_mutex); return s_videoDeviceListeners.UnRegister(listener); @@ -475,13 +553,13 @@ uint32_t IarmHostImpl::UnRegister(IVideoDeviceEvents* listener) Dispatch(s_videoDeviceListeners, std::move(fn)); } -uint32_t IarmHostImpl::Register(IVideoOutputPortEvents* listener) +dsError_t IarmHostImpl::Register(IVideoOutputPortEvents* listener) { std::lock_guard lock(s_mutex); return s_videoPortListeners.Register(listener); } -uint32_t IarmHostImpl::UnRegister(IVideoOutputPortEvents* listener) +dsError_t IarmHostImpl::UnRegister(IVideoOutputPortEvents* listener) { std::lock_guard lock(s_mutex); return s_videoPortListeners.UnRegister(listener); @@ -493,13 +571,13 @@ uint32_t IarmHostImpl::UnRegister(IVideoOutputPortEvents* listener) Dispatch(s_videoPortListeners, std::move(fn)); } -uint32_t IarmHostImpl::Register(IAudioOutputPortEvents* listener) +dsError_t IarmHostImpl::Register(IAudioOutputPortEvents* listener) { std::lock_guard lock(s_mutex); return s_audioPortListeners.Register(listener); } -uint32_t IarmHostImpl::UnRegister(IAudioOutputPortEvents* listener) +dsError_t IarmHostImpl::UnRegister(IAudioOutputPortEvents* listener) { std::lock_guard lock(s_mutex); return s_audioPortListeners.UnRegister(listener); diff --git a/ds/iarm/IarmHostImpl.hpp b/ds/iarm/IarmHostImpl.hpp index 85c7f660..ab73c9bf 100755 --- a/ds/iarm/IarmHostImpl.hpp +++ b/ds/iarm/IarmHostImpl.hpp @@ -22,6 +22,7 @@ #include #include +#include "dsError.h" #include "dslogger.h" #include "host.hpp" @@ -60,11 +61,11 @@ class IarmHostImpl { // @brief Register a listener, also register IARM events if not already registered // if the listener is already registered, listener will not be added again // if IARM event registration fails, listener will not be added - uint32_t Register(T listener) + dsError_t Register(T listener) { if (listener == nullptr) { INT_ERROR("%s listener is null", typeid(T).name()); - return 1; // Error: Listener is null + return dsERR_INVALID_PARAM; // Error: Listener is null } if (!m_registered) { @@ -72,7 +73,7 @@ class IarmHostImpl { if (!m_registered) { INT_ERROR("Failed to register IARMGroup %s", typeid(IARMGroup).name()); - return 1; // Error: Failed to register IARM group + return dsERR_OPERATION_FAILED; // Error: Failed to register IARM group } } @@ -80,30 +81,30 @@ class IarmHostImpl { if (it != this->end()) { // Listener already registered INT_ERROR("%s %p is already registered", typeid(T).name(), listener); - return 0; + return dsERR_NONE; // Success: Listener already registered } this->push_back(listener); INT_INFO("%s %p registered", typeid(T).name(), listener); - return 0; + return dsERR_NONE; } // @brief UnRegister a listener, also unregister IARM events if no listeners are left // if the listener is not registered, it will not be removed - uint32_t UnRegister(T listener) + dsError_t UnRegister(T listener) { if (listener == nullptr) { INT_ERROR("%s listener is null", typeid(T).name()); - return 1; // Error: Listener is null + return dsERR_INVALID_PARAM; // Error: Listener is null } auto it = std::find(this->begin(), this->end(), listener); if (it == this->end()) { // Listener not found INT_ERROR("%s %p is not registered", typeid(T).name(), listener); - return 1; // Error: Listener not found + return dsERR_RESOURCE_NOT_AVAILABLE; // Error: Listener not found } this->erase(it); @@ -114,12 +115,12 @@ class IarmHostImpl { m_registered = !IARMGroup::UnRegisterIarmEvents(); } - return 0; + return dsERR_NONE; // Success } // @brief Release all listeners and unregister IARM events // This will clear the list and unregister IARM events if no listeners are left - uint32_t Release() + dsError_t Release() { if (m_registered) { m_registered = !IARMGroup::UnRegisterIarmEvents(); @@ -127,7 +128,7 @@ class IarmHostImpl { this->clear(); INT_INFO("CallbackList[T=%s] released, status: %d", typeid(T).name(), m_registered); - return 0; // Success + return dsERR_NONE; // Success } private: @@ -144,27 +145,27 @@ class IarmHostImpl { // @brief Register a listener for video device events // @param listener: class object implementing the listener - uint32_t Register(IVideoDeviceEvents* listener); + dsError_t Register(IVideoDeviceEvents* listener); // @brief UnRegister a listener for video device events // @param listener: class object implementing the listener - uint32_t UnRegister(IVideoDeviceEvents* listener); + dsError_t UnRegister(IVideoDeviceEvents* listener); // @brief Register a listener for video port events // @param listener: class object implementing the listener - uint32_t Register(IVideoOutputPortEvents* listener); + dsError_t Register(IVideoOutputPortEvents* listener); // @brief UnRegister a listener for video port events // @param listener: class object implementing the listener - uint32_t UnRegister(IVideoOutputPortEvents* listener); + dsError_t UnRegister(IVideoOutputPortEvents* listener); // @brief Register a listener for audio port events // @param listener: class object implementing the listener - uint32_t Register(IAudioOutputPortEvents* listener); + dsError_t Register(IAudioOutputPortEvents* listener); // @brief UnRegister a listener for audio port events // @param listener: class object implementing the listener - uint32_t UnRegister(IAudioOutputPortEvents* listener); + dsError_t UnRegister(IAudioOutputPortEvents* listener); private: static std::mutex s_mutex; diff --git a/ds/include/host.hpp b/ds/include/host.hpp index 6c5c8dea..268988f2 100644 --- a/ds/include/host.hpp +++ b/ds/include/host.hpp @@ -31,6 +31,7 @@ #include "audioOutputPort.hpp" #include "dsAVDTypes.h" +#include "dsError.h" #include "list.hpp" #include "sleepMode.hpp" #include "videoDevice.hpp" @@ -77,11 +78,11 @@ class Host { // @brief Register a listener for video device events // @param listener: class object implementing the listener - uint32_t Register(IVideoDeviceEvents* listener); + dsError_t Register(IVideoDeviceEvents* listener); // @brief UnRegister a listener for video device events // @param listener: class object implementing the listener - uint32_t UnRegister(IVideoDeviceEvents* listener); + dsError_t UnRegister(IVideoDeviceEvents* listener); struct IVideoOutputPortEvents { @@ -106,11 +107,11 @@ class Host { // @brief Register a listener for video port events // @param listener: class object implementing the listener - uint32_t Register(IVideoOutputPortEvents* listener); + dsError_t Register(IVideoOutputPortEvents* listener); // @brief UnRegister a listener for video port events // @param listener: class object implementing the listener - uint32_t UnRegister(IVideoOutputPortEvents* listener); + dsError_t UnRegister(IVideoOutputPortEvents* listener); struct IAudioOutputPortEvents { @@ -162,11 +163,11 @@ class Host { // @brief Register a listener for audio port events // @param listener: class object implementing the listener - uint32_t Register(IAudioOutputPortEvents* listener); + dsError_t Register(IAudioOutputPortEvents* listener); // @brief UnRegister a listener for audio port events // @param listener: class object implementing the listener - uint32_t UnRegister(IAudioOutputPortEvents* listener); + dsError_t UnRegister(IAudioOutputPortEvents* listener); bool setPowerMode(int mode); int getPowerMode(); From ba8150959369c478899ac3754479cb88c046411d Mon Sep 17 00:00:00 2001 From: Shrinivas Kamath Date: Tue, 26 Aug 2025 12:08:47 +0530 Subject: [PATCH 033/103] Revert "pc build done" This reverts commit b1d3e6fda66be11771e77cc5d9a20c407c7ed06f. --- .clang-format | 192 ------------------------------------------ .gitignore | 1 - build_dependencies.sh | 6 +- cov_build.sh | 0 rpc/srv/dsDisplay.c | 2 +- 5 files changed, 4 insertions(+), 197 deletions(-) delete mode 100644 .clang-format mode change 100755 => 100644 build_dependencies.sh mode change 100755 => 100644 cov_build.sh diff --git a/.clang-format b/.clang-format deleted file mode 100644 index 38c2ff7c..00000000 --- a/.clang-format +++ /dev/null @@ -1,192 +0,0 @@ ---- -Language: Cpp -# BasedOnStyle: WebKit -AccessModifierOffset: -4 -AlignAfterOpenBracket: DontAlign -AlignArrayOfStructures: Left -AlignConsecutiveMacros: None -AlignConsecutiveAssignments: Consecutive -AlignConsecutiveBitFields: None -AlignConsecutiveDeclarations: None -AlignEscapedNewlines: Right -AlignOperands: DontAlign -AlignTrailingComments: false -AllowAllArgumentsOnNextLine: true -AllowAllParametersOfDeclarationOnNextLine: true -AllowShortEnumsOnASingleLine: true -AllowShortBlocksOnASingleLine: Empty -AllowShortCaseLabelsOnASingleLine: false -AllowShortFunctionsOnASingleLine: All -AllowShortLambdasOnASingleLine: All -AllowShortIfStatementsOnASingleLine: Never -AllowShortLoopsOnASingleLine: false -AlwaysBreakAfterDefinitionReturnType: None -AlwaysBreakAfterReturnType: None -AlwaysBreakBeforeMultilineStrings: false -AlwaysBreakTemplateDeclarations: MultiLine -AttributeMacros: - - __capability -BinPackArguments: true -BinPackParameters: true -BraceWrapping: - AfterCaseLabel: false - AfterClass: false - AfterControlStatement: Never - AfterEnum: false - AfterFunction: true - AfterNamespace: false - AfterObjCDeclaration: false - AfterStruct: false - AfterUnion: false - AfterExternBlock: false - BeforeCatch: false - BeforeElse: false - BeforeLambdaBody: false - BeforeWhile: false - IndentBraces: false - SplitEmptyFunction: true - SplitEmptyRecord: true - SplitEmptyNamespace: true -BreakBeforeBinaryOperators: All -BreakBeforeConceptDeclarations: true -BreakBeforeBraces: WebKit -BreakBeforeInheritanceComma: false -BreakInheritanceList: BeforeColon -BreakBeforeTernaryOperators: true -BreakConstructorInitializersBeforeComma: false -BreakConstructorInitializers: BeforeComma -BreakAfterJavaFieldAnnotations: false -BreakStringLiterals: true -ColumnLimit: 0 -CommentPragmas: '^ IWYU pragma:' -QualifierAlignment: Leave -CompactNamespaces: false -ConstructorInitializerIndentWidth: 4 -ContinuationIndentWidth: 4 -Cpp11BracedListStyle: false -DeriveLineEnding: true -DerivePointerAlignment: false -DisableFormat: false -EmptyLineAfterAccessModifier: Never -EmptyLineBeforeAccessModifier: LogicalBlock -ExperimentalAutoDetectBinPacking: false -PackConstructorInitializers: BinPack -BasedOnStyle: '' -ConstructorInitializerAllOnOneLineOrOnePerLine: false -AllowAllConstructorInitializersOnNextLine: true -FixNamespaceComments: false -ForEachMacros: - - foreach - - Q_FOREACH - - BOOST_FOREACH -IfMacros: - - KJ_IF_MAYBE -IncludeBlocks: Preserve -IncludeCategories: - - Regex: '^"(llvm|llvm-c|clang|clang-c)/' - Priority: 2 - SortPriority: 0 - CaseSensitive: false - - Regex: '^(<|"(gtest|gmock|isl|json)/)' - Priority: 3 - SortPriority: 0 - CaseSensitive: false - - Regex: '.*' - Priority: 1 - SortPriority: 0 - CaseSensitive: false -IncludeIsMainRegex: '(Test)?$' -IncludeIsMainSourceRegex: '' -IndentAccessModifiers: false -IndentCaseLabels: false -IndentCaseBlocks: false -IndentGotoLabels: true -IndentPPDirectives: None -IndentExternBlock: AfterExternBlock -IndentRequires: false -IndentWidth: 4 -IndentWrappedFunctionNames: false -InsertTrailingCommas: None -JavaScriptQuotes: Leave -JavaScriptWrapImports: true -KeepEmptyLinesAtTheStartOfBlocks: true -LambdaBodyIndentation: Signature -MacroBlockBegin: '' -MacroBlockEnd: '' -MaxEmptyLinesToKeep: 1 -NamespaceIndentation: Inner -ObjCBinPackProtocolList: Auto -ObjCBlockIndentWidth: 4 -ObjCBreakBeforeNestedBlockParam: true -ObjCSpaceAfterProperty: true -ObjCSpaceBeforeProtocolList: true -PenaltyBreakAssignment: 2 -PenaltyBreakBeforeFirstCallParameter: 19 -PenaltyBreakComment: 300 -PenaltyBreakFirstLessLess: 120 -PenaltyBreakOpenParenthesis: 0 -PenaltyBreakString: 1000 -PenaltyBreakTemplateDeclaration: 10 -PenaltyExcessCharacter: 1000000 -PenaltyReturnTypeOnItsOwnLine: 60 -PenaltyIndentedWhitespace: 0 -PointerAlignment: Left -PPIndentWidth: -1 -ReferenceAlignment: Pointer -ReflowComments: true -RemoveBracesLLVM: false -SeparateDefinitionBlocks: Leave -ShortNamespaceLines: 1 -SortIncludes: CaseSensitive -SortJavaStaticImport: Before -SortUsingDeclarations: true -SpaceAfterCStyleCast: false -SpaceAfterLogicalNot: false -SpaceAfterTemplateKeyword: true -SpaceBeforeAssignmentOperators: true -SpaceBeforeCaseColon: false -SpaceBeforeCpp11BracedList: true -SpaceBeforeCtorInitializerColon: true -SpaceBeforeInheritanceColon: true -SpaceBeforeParens: ControlStatements -SpaceBeforeParensOptions: - AfterControlStatements: true - AfterForeachMacros: true - AfterFunctionDefinitionName: false - AfterFunctionDeclarationName: false - AfterIfMacros: true - AfterOverloadedOperator: false - BeforeNonEmptyParentheses: false -SpaceAroundPointerQualifiers: Default -SpaceBeforeRangeBasedForLoopColon: true -SpaceInEmptyBlock: true -SpaceInEmptyParentheses: false -SpacesBeforeTrailingComments: 1 -SpacesInAngles: Never -SpacesInConditionalStatement: false -SpacesInContainerLiterals: true -SpacesInCStyleCastParentheses: false -SpacesInLineCommentPrefix: - Minimum: 1 - Maximum: -1 -SpacesInParentheses: false -SpacesInSquareBrackets: false -SpaceBeforeSquareBrackets: false -BitFieldColonSpacing: Both -Standard: Latest -StatementAttributeLikeMacros: - - Q_EMIT -StatementMacros: - - Q_UNUSED - - QT_REQUIRE_VERSION -TabWidth: 8 -UseCRLF: false -UseTab: Never -WhitespaceSensitiveMacros: - - STRINGIZE - - PP_STRINGIZE - - BOOST_PP_STRINGIZE - - NS_SWIFT_NAME - - CF_SWIFT_NAME -... - diff --git a/.gitignore b/.gitignore index 5156add3..5a667ebd 100644 --- a/.gitignore +++ b/.gitignore @@ -50,5 +50,4 @@ sample/testFrontPanel .cache compile_commands.json - .harper-dictionary.txt diff --git a/build_dependencies.sh b/build_dependencies.sh old mode 100755 new mode 100644 index c6debf9b..090f105a --- a/build_dependencies.sh +++ b/build_dependencies.sh @@ -15,7 +15,7 @@ export NM=nm export RANLIB=ranlib export STRIP=strip -sudo apt-get update && sudo apt-get install -y libsoup-3.0 libcjson-dev libdbus-1-dev git wget autoconf automake libtool libcurl4-openssl-dev +apt-get update && apt-get install -y libsoup-3.0 libcjson-dev libdbus-1-dev mkdir -p /usr/local/include/wdmp-c cp $WORKDIR/stubs/wdmp-c.h /usr/local/include/wdmp-c/ @@ -47,8 +47,8 @@ cd rfc autoreconf -i ./configure --enable-rfctool=yes --enable-tr181set=yes cd rfcapi -make CXXFLAGS="-DUSE_IARMBUS" librfcapi_la_CPPFLAGS="-I/usr/include/cjson" -sudo make install +make librfcapi_la_CPPFLAGS="-I/usr/include/cjson" +make install export RFC_PATH=$ROOT/rfc cd $ROOT diff --git a/cov_build.sh b/cov_build.sh old mode 100755 new mode 100644 diff --git a/rpc/srv/dsDisplay.c b/rpc/srv/dsDisplay.c index 53dee489..561881e5 100644 --- a/rpc/srv/dsDisplay.c +++ b/rpc/srv/dsDisplay.c @@ -72,7 +72,7 @@ IARM_Result_t _dsSetAllmEnabled(void *arg); IARM_Result_t _dsSetAVIContentType(void *arg); IARM_Result_t _dsSetAVIScanInformation(void *arg); IARM_Result_t _dsDisplayTerm(void *arg); -void _dsDisplayEventCallback(int handle, dsDisplayEvent_t event, void *eventData); +void _dsDisplayEventCallback(intptr_t handle, dsDisplayEvent_t event, void *eventData); static void filterEDIDResolution(intptr_t Shandle, dsDisplayEDID_t *edid); static void dumpEDIDInformation( dsDisplayEDID_t *edid); static dsVideoPortType_t _GetDisplayPortType(intptr_t handle); From 337644565fc5a4bf6b8ad1032c06f30470ac4a77 Mon Sep 17 00:00:00 2001 From: Shrinivas Kamath Date: Tue, 26 Aug 2025 12:14:43 +0530 Subject: [PATCH 034/103] revert compositeIn interface changes --- ds/compositeIn.cpp | 25 +------------------------ ds/include/compositeIn.hpp | 34 +--------------------------------- 2 files changed, 2 insertions(+), 57 deletions(-) diff --git a/ds/compositeIn.cpp b/ds/compositeIn.cpp index 0e7459b1..b126f3d3 100644 --- a/ds/compositeIn.cpp +++ b/ds/compositeIn.cpp @@ -2,7 +2,7 @@ * If not stated otherwise in this file or this component's LICENSE file the * following copyright and licenses apply: * - * Copyright 2025 RDK Management + * Copyright 2016 RDK Management * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -270,31 +270,8 @@ void CompositeInput::scaleVideo (int32_t x, int32_t y, int32_t width, int32_t he } } - -/** - * @fn void CompositeInput::Register(IEvent *listener) - * @brief This API is used to register the Events - * - * @return unint32_t - */ -uint32_t CompositeInput::Register(IEvent *listener) -{ - return 0; } -/** - * @fn void CompositeInput::UnRegister(IEvent *listener) - * @brief This API is used to UnRegister the Events - * - * @return unint32_t - */ -uint32_t CompositeInput::UnRegister(IEvent *listener) -{ - return 0; -} - -} - /** @} */ /** @} */ diff --git a/ds/include/compositeIn.hpp b/ds/include/compositeIn.hpp index ba097b82..c0565658 100644 --- a/ds/include/compositeIn.hpp +++ b/ds/include/compositeIn.hpp @@ -1,9 +1,8 @@ - /* * If not stated otherwise in this file or this component's LICENSE file the * following copyright and licenses apply: * - * Copyright 2025 RDK Management + * Copyright 2016 RDK Management * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -50,7 +49,6 @@ #define _DS_COMPOSITEIN_HPP_ #include -#include "dsMgrNtf.h" /** * @file compositeIn.hpp @@ -72,36 +70,6 @@ class CompositeInput { public: - struct IEvent { - // @brief Composite In Hotplug event - // @text onCompositeInHotPlug - // @param port: Port of the hotplug - // @param isConnected: Is it connected (true) or not(false) - virtual void OnCompositeInHotPlug(CompositeInPort port, bool isConnected) { }; - - // @brief Composite In Signal status - // @text onCompositeInSignalStatus - // @param port: Port of the hotplug - // @param signalStatus: Signal status - virtual void OnCompositeInSignalStatus(CompositeInPort port, CompositeInSignalStatus signalStatus) { }; - - // @brief Composite In status - // @text onCompositeInStatus - // @param activePort: Active port - // @param isPresented: is it presented to user - virtual void OnCompositeInStatus(CompositeInPort activePort, bool isPresented) { }; - - - // @brief Composite In Video Mode Update - // @text OnCompositeInVideoModeUpdate - // @param activePort: Active port - // @param videoResolution: See DisplayVideoPortResolution - virtual void OnCompositeInVideoModeUpdate(CompositeInPort activePort, DisplayVideoPortResolution videoResolution) = 0; - }; - - uint32_t Register(IEvent *listener); - uint32_t UnRegister(IEvent *listener); - static CompositeInput & getInstance(); uint8_t getNumberOfInputs () const; From 7724bc2dde3acd2896d4cd1a4ee3e555b32825ca Mon Sep 17 00:00:00 2001 From: Shrinivas Kamath Date: Tue, 26 Aug 2025 12:15:01 +0530 Subject: [PATCH 035/103] revert pc build --- cmd | 48 ------------------------------------------------ 1 file changed, 48 deletions(-) delete mode 100755 cmd diff --git a/cmd b/cmd deleted file mode 100755 index c807a019..00000000 --- a/cmd +++ /dev/null @@ -1,48 +0,0 @@ -#!/usr/bin/env bash -set -euo pipefail - -# ----- Common includes ----- -INCLUDES=( - -I/usr/rdk-halif-device_settings/include - -I/usr/rdkvhal-devicesettings-raspberrypi4 - -I/home/skamath/del/devicesettings/stubs - -I/usr/iarmbus/core - -I/usr/iarmbus/core/include - -I/sysmgr/include - -I/home/skamath/del/devicesettings/ds/include - -I/home/skamath/del/devicesettings/rpc/include - -I/usr/rdk-halif-power_manager/include/ - -I/mfr/include/ - -I/mfr/common - -I/usr/rdk-halif-deepsleep_manager/include - -I/hal/include - -I/power - -I/power/include -) - -# ----- Base flags ----- -CFLAGS_BASE='-fPIC -DDSMGR_LOGGER_ENABLED=ON -DRDK_DSHAL_NAME="libdshal.so"' -CFLAGS_BASE+=" ${INCLUDES[*]}" - -# GLib via pkg-config if available; otherwise fallback to hardcoded paths -if command -v pkg-config >/dev/null 2>&1 && pkg-config --exists glib-2.0; then - CFLAGS_BASE+=" $(pkg-config --cflags glib-2.0)" - LDFLAGS_BASE="$(pkg-config --libs glib-2.0) -lIARMBus -lWPEFrameworkPowerController -ldshal" -else - CFLAGS_BASE+=" -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include" - LDFLAGS_BASE='-L/usr/lib/x86_64-linux-gnu/ -L/usr/local/include -lglib-2.0 -lIARMBus -lWPEFrameworkPowerController -ldshal' -fi - -# Parallelism (optional): uncomment to use all cores -# PAR="-j$(nproc)" - -build() { - local dir=$1 - echo "==> Building $dir" - make ${PAR:-} -C "$dir" CFLAGS+="$CFLAGS_BASE" LDFLAGS="$LDFLAGS_BASE" -} - -build rpc/srv -build rpc/cli -build ds - From b67ea32b7134bc98c22df0b0dd692fab94694f5a Mon Sep 17 00:00:00 2001 From: Shrinivas Kamath Date: Tue, 26 Aug 2025 12:19:41 +0530 Subject: [PATCH 036/103] minor undo pcbuild --- cov_build.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cov_build.sh b/cov_build.sh index b1b04726..22e8d7d4 100644 --- a/cov_build.sh +++ b/cov_build.sh @@ -70,4 +70,4 @@ find $WORKDIR -iname "*.o" -exec rm -v {} \; find $WORKDIR -iname "*.so*" -exec rm -v {} \; echo "##### Triggering make" -make CFLAGS+='-fPIC -DDSMGR_LOGGER_ENABLED=ON -DRDK_DSHAL_NAME=\"libdshal.so\" -I${DS_IF_PATH}/include -I${DS_HAL_PATH} -I${DS_MGRS}/stubs -I${IARMBUS_PATH}/core -I${IARMBUS_PATH}/core/include -I${IARM_MGRS}/sysmgr/include -I${DS_MGRS}/ds/include -I${DS_MGRS}/rpc/include -I${POWER_IF_PATH}/include/ -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I${IARM_MGRS}/mfr/include/ -I${IARM_MGRS}/mfr/common -I${DEEPSLEEP_IF_PATH}/include -I${IARM_MGRS}/hal/include -I${IARM_MGRS}/power -I${IARM_MGRS}/power/include' LDFLAGS="-L/usr/lib/x86_64-linux-gnu/ -L/usr/local/include -lglib-2.0 -lIARMBus -lWPEFrameworkPowerController -ldshal" +make CFLAGS+='-fPIC -DDSMGR_LOGGER_ENABLED=ON -DRDK_DSHAL_NAME=\"libdshal.so\" -I${DS_IF_PATH}/include -I${DS_HAL_PATH} -I${DS_MGRS}/stubs -I${IARMBUS_PATH}/core -I${IARMBUS_PATH}/core/include -I${IARM_MGRS}/sysmgr/include -I${DS_MGRS}/ds/include -I${DS_MGRS}/rpc/include -I${POWER_IF_PATH}/include/ -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I${IARM_MGRS}/mfr/include/ -I${IARM_MGRS}/mfr/common -I${DEEPSLEEP_IF_PATH}/include -I${IARM_MGRS}/hal/include -I${IARM_MGRS}/power -I${IARM_MGRS}/power/include' LDFLAGS="-L/usr/lib/x86_64-linux-gnu/ -L/usr/local/include -lglib-2.0 -lIARMBus -lWPEFrameworkPowerController -ldshal" \ No newline at end of file From 1d32fea790a28645406188f2a30d6140d883edc4 Mon Sep 17 00:00:00 2001 From: Shrinivas Kamath Date: Tue, 26 Aug 2025 12:20:30 +0530 Subject: [PATCH 037/103] remove unused header --- ds/host.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/ds/host.cpp b/ds/host.cpp index c1023285..43bccc9a 100644 --- a/ds/host.cpp +++ b/ds/host.cpp @@ -38,7 +38,6 @@ #include "dsAudio.h" #include "dsHost.h" #include "unsupportedOperationException.hpp" -/*#include "hostEDID.hpp"*/ #include "dsInternal.h" #include "iarm/IarmHostImpl.hpp" From 78162bb822e7a1e215b4ed2ef1cdeb857c9439e0 Mon Sep 17 00:00:00 2001 From: skamath <161743589+skamath@users.noreply.github.com> Date: Tue, 26 Aug 2025 13:38:02 +0530 Subject: [PATCH 038/103] fix full stack build error (#109) * fix full stack build error * rename some IARMGroup to maintain consistency * minor review comment * renaming for consistency --- ds/host.cpp | 2 +- ds/iarm/IarmHostImpl.cpp | 56 +++++++++++++++++++++------------------- ds/iarm/IarmHostImpl.hpp | 19 +++++++------- 3 files changed, 41 insertions(+), 36 deletions(-) mode change 100644 => 100755 ds/iarm/IarmHostImpl.cpp diff --git a/ds/host.cpp b/ds/host.cpp index 43bccc9a..5fb9a2e2 100644 --- a/ds/host.cpp +++ b/ds/host.cpp @@ -769,7 +769,7 @@ DefaultImpl& Host::impl() { // lazy instantiation if (!m_impl) { - m_impl = std::make_unique(); + m_impl = std::unique_ptr(new DefaultImpl()); } return *m_impl; } diff --git a/ds/iarm/IarmHostImpl.cpp b/ds/iarm/IarmHostImpl.cpp old mode 100644 new mode 100755 index 486ce686..1c4b2507 --- a/ds/iarm/IarmHostImpl.cpp +++ b/ds/iarm/IarmHostImpl.cpp @@ -155,7 +155,7 @@ class IARMGroupVideoDevice { }; }; -class IARMGroupVideoPort { +class IARMGroupVideoOutputPort { public: static bool RegisterIarmEvents() { @@ -251,14 +251,14 @@ class IARMGroupVideoPort { } static constexpr EventHandlerMapping handlers[] = { - { IARM_BUS_DSMGR_EVENT_RES_PRECHANGE, &IARMGroupVideoPort::iarmResolutionPreChangeHandler }, - { IARM_BUS_DSMGR_EVENT_RES_POSTCHANGE, &IARMGroupVideoPort::iarmResolutionPostChangeHandler }, - { IARM_BUS_DSMGR_EVENT_HDCP_STATUS, &IARMGroupVideoPort::iarmHDCPStatusChangeHandler }, - { IARM_BUS_DSMGR_EVENT_VIDEO_FORMAT_UPDATE, &IARMGroupVideoPort::iarmVideoFormatUpdateHandler }, + { IARM_BUS_DSMGR_EVENT_RES_PRECHANGE, &IARMGroupVideoOutputPort::iarmResolutionPreChangeHandler }, + { IARM_BUS_DSMGR_EVENT_RES_POSTCHANGE, &IARMGroupVideoOutputPort::iarmResolutionPostChangeHandler }, + { IARM_BUS_DSMGR_EVENT_HDCP_STATUS, &IARMGroupVideoOutputPort::iarmHDCPStatusChangeHandler }, + { IARM_BUS_DSMGR_EVENT_VIDEO_FORMAT_UPDATE, &IARMGroupVideoOutputPort::iarmVideoFormatUpdateHandler }, }; }; -class IARMGroupAudioPort { +class IARMGroupAudioOutputPort { public: static bool RegisterIarmEvents() { @@ -488,32 +488,36 @@ class IARMGroupAudioPort { private: static constexpr EventHandlerMapping handlers[] = { - { IARM_BUS_DSMGR_EVENT_AUDIO_ASSOCIATED_AUDIO_MIXING_CHANGED, &IARMGroupAudioPort::iarmAssociatedAudioMixingChangedHandler }, - { IARM_BUS_DSMGR_EVENT_AUDIO_FADER_CONTROL_CHANGED, &IARMGroupAudioPort::iarmAudioFaderControlChangedHandler }, - { IARM_BUS_DSMGR_EVENT_AUDIO_PRIMARY_LANGUAGE_CHANGED, &IARMGroupAudioPort::iarmAudioPrimaryLanguageChangedHandler }, - { IARM_BUS_DSMGR_EVENT_AUDIO_SECONDARY_LANGUAGE_CHANGED, &IARMGroupAudioPort::iarmAudioSecondaryLanguageChangedHandler }, - { IARM_BUS_DSMGR_EVENT_AUDIO_OUT_HOTPLUG, &IARMGroupAudioPort::iarmAudioOutHotPlugHandler }, - { IARM_BUS_DSMGR_EVENT_ATMOS_CAPS_CHANGED, &IARMGroupAudioPort::iarmDolbyAtmosCapabilitiesChangedHandler }, - { IARM_BUS_DSMGR_EVENT_AUDIO_PORT_STATE, &IARMGroupAudioPort::iarmAudioPortStateChangedHandler }, - { IARM_BUS_DSMGR_EVENT_AUDIO_MODE, &IARMGroupAudioPort::iarmAudioModeEventHandler }, - { IARM_BUS_DSMGR_EVENT_AUDIO_LEVEL_CHANGED, &IARMGroupAudioPort::iarmAudioLevelChangedEventHandler }, - { IARM_BUS_DSMGR_EVENT_AUDIO_FORMAT_UPDATE, &IARMGroupAudioPort::iarmAudioFormatUpdateHandler }, + { IARM_BUS_DSMGR_EVENT_AUDIO_ASSOCIATED_AUDIO_MIXING_CHANGED, &IARMGroupAudioOutputPort::iarmAssociatedAudioMixingChangedHandler }, + { IARM_BUS_DSMGR_EVENT_AUDIO_FADER_CONTROL_CHANGED, &IARMGroupAudioOutputPort::iarmAudioFaderControlChangedHandler }, + { IARM_BUS_DSMGR_EVENT_AUDIO_PRIMARY_LANGUAGE_CHANGED, &IARMGroupAudioOutputPort::iarmAudioPrimaryLanguageChangedHandler }, + { IARM_BUS_DSMGR_EVENT_AUDIO_SECONDARY_LANGUAGE_CHANGED, &IARMGroupAudioOutputPort::iarmAudioSecondaryLanguageChangedHandler }, + { IARM_BUS_DSMGR_EVENT_AUDIO_OUT_HOTPLUG, &IARMGroupAudioOutputPort::iarmAudioOutHotPlugHandler }, + { IARM_BUS_DSMGR_EVENT_ATMOS_CAPS_CHANGED, &IARMGroupAudioOutputPort::iarmDolbyAtmosCapabilitiesChangedHandler }, + { IARM_BUS_DSMGR_EVENT_AUDIO_PORT_STATE, &IARMGroupAudioOutputPort::iarmAudioPortStateChangedHandler }, + { IARM_BUS_DSMGR_EVENT_AUDIO_MODE, &IARMGroupAudioOutputPort::iarmAudioModeEventHandler }, + { IARM_BUS_DSMGR_EVENT_AUDIO_LEVEL_CHANGED, &IARMGroupAudioOutputPort::iarmAudioLevelChangedEventHandler }, + { IARM_BUS_DSMGR_EVENT_AUDIO_FORMAT_UPDATE, &IARMGroupAudioOutputPort::iarmAudioFormatUpdateHandler }, }; }; // static data +constexpr EventHandlerMapping IARMGroupVideoDevice::handlers[]; +constexpr EventHandlerMapping IARMGroupVideoOutputPort::handlers[]; +constexpr EventHandlerMapping IARMGroupAudioOutputPort::handlers[]; + std::mutex IarmHostImpl::s_mutex; IarmHostImpl::CallbackList IarmHostImpl::s_videoDeviceListeners; -IarmHostImpl::CallbackList IarmHostImpl::s_videoPortListeners; -IarmHostImpl::CallbackList IarmHostImpl::s_audioPortListeners; +IarmHostImpl::CallbackList IarmHostImpl::s_videoOutputPortListeners; +IarmHostImpl::CallbackList IarmHostImpl::s_audioOutputPortListeners; IarmHostImpl::~IarmHostImpl() { std::lock_guard lock(s_mutex); s_videoDeviceListeners.Release(); - s_videoPortListeners.Release(); - s_audioPortListeners.Release(); + s_videoOutputPortListeners.Release(); + s_audioOutputPortListeners.Release(); } template @@ -556,37 +560,37 @@ dsError_t IarmHostImpl::UnRegister(IVideoDeviceEvents* listener) dsError_t IarmHostImpl::Register(IVideoOutputPortEvents* listener) { std::lock_guard lock(s_mutex); - return s_videoPortListeners.Register(listener); + return s_videoOutputPortListeners.Register(listener); } dsError_t IarmHostImpl::UnRegister(IVideoOutputPortEvents* listener) { std::lock_guard lock(s_mutex); - return s_videoPortListeners.UnRegister(listener); + return s_videoOutputPortListeners.UnRegister(listener); } // Dispatcher for IARMGroupVideoPort /* static */ void IarmHostImpl::Dispatch(std::function&& fn) { - Dispatch(s_videoPortListeners, std::move(fn)); + Dispatch(s_videoOutputPortListeners, std::move(fn)); } dsError_t IarmHostImpl::Register(IAudioOutputPortEvents* listener) { std::lock_guard lock(s_mutex); - return s_audioPortListeners.Register(listener); + return s_audioOutputPortListeners.Register(listener); } dsError_t IarmHostImpl::UnRegister(IAudioOutputPortEvents* listener) { std::lock_guard lock(s_mutex); - return s_audioPortListeners.UnRegister(listener); + return s_audioOutputPortListeners.UnRegister(listener); } // Dispatcher for IARMGroupAudioPort /* static */ void IarmHostImpl::Dispatch(std::function&& fn) { - Dispatch(s_audioPortListeners, std::move(fn)); + Dispatch(s_audioOutputPortListeners, std::move(fn)); } } // namespace device diff --git a/ds/iarm/IarmHostImpl.hpp b/ds/iarm/IarmHostImpl.hpp index ab73c9bf..d4743f82 100755 --- a/ds/iarm/IarmHostImpl.hpp +++ b/ds/iarm/IarmHostImpl.hpp @@ -19,6 +19,7 @@ #pragma once #include +#include #include #include @@ -30,8 +31,8 @@ namespace device { // Forward declaration for IARM Implementation Groups class IARMGroupVideoDevice; -class IARMGroupVideoPort; -class IARMGroupAudioPort; +class IARMGroupVideoOutputPort; +class IARMGroupAudioOutputPort; class IarmHostImpl { @@ -63,7 +64,7 @@ class IarmHostImpl { // if IARM event registration fails, listener will not be added dsError_t Register(T listener) { - if (listener == nullptr) { + if (nullptr == listener) { INT_ERROR("%s listener is null", typeid(T).name()); return dsERR_INVALID_PARAM; // Error: Listener is null } @@ -95,7 +96,7 @@ class IarmHostImpl { // if the listener is not registered, it will not be removed dsError_t UnRegister(T listener) { - if (listener == nullptr) { + if (nullptr == listener) { INT_ERROR("%s listener is null", typeid(T).name()); return dsERR_INVALID_PARAM; // Error: Listener is null } @@ -140,7 +141,7 @@ class IarmHostImpl { using IVideoOutputPortEvents = device::Host::IVideoOutputPortEvents; using IAudioOutputPortEvents = device::Host::IAudioOutputPortEvents; - IarmHostImpl(); + IarmHostImpl() = default; ~IarmHostImpl(); // @brief Register a listener for video device events @@ -171,8 +172,8 @@ class IarmHostImpl { static std::mutex s_mutex; static CallbackList s_videoDeviceListeners; - static CallbackList s_videoPortListeners; - static CallbackList s_audioPortListeners; + static CallbackList s_videoOutputPortListeners; + static CallbackList s_audioOutputPortListeners; template static void Dispatch(const std::list& listeners, F&& fn); @@ -183,7 +184,7 @@ class IarmHostImpl { // Dispatch is private, so all IARMGroup implementations will need to be friends friend class IARMGroupVideoDevice; - friend class IARMGroupVideoPort; - friend class IARMGroupAudioPort; + friend class IARMGroupVideoOutputPort; + friend class IARMGroupAudioOutputPort; }; } // namespace device From a75df87212706974781fc75e184113985d5f17bd Mon Sep 17 00:00:00 2001 From: Shrinivas Kamath Date: Tue, 26 Aug 2025 17:23:27 +0530 Subject: [PATCH 039/103] implement OnDisplayHDMIHotPlug event --- ds/host.cpp | 8 +++++ ds/iarm/IarmHostImpl.cpp | 64 ++++++++++++++++++++++++++++++++++++++++ ds/iarm/IarmHostImpl.hpp | 13 ++++++++ ds/include/host.hpp | 15 ++++++++++ 4 files changed, 100 insertions(+) diff --git a/ds/host.cpp b/ds/host.cpp index 5fb9a2e2..ba48fde6 100644 --- a/ds/host.cpp +++ b/ds/host.cpp @@ -804,6 +804,14 @@ dsError_t Host::UnRegister(IAudioOutputPortEvents* listener) return impl().UnRegister(listener); } +dsError_t Host::Register(IDisplayDeviceEvents* listener) { + return impl().Register(listener); +} + +dsError_t Host::UnRegister(IDisplayDeviceEvents* listener) { + return impl().Register(listener); +} + /** @} */ } // namespace device diff --git a/ds/iarm/IarmHostImpl.cpp b/ds/iarm/IarmHostImpl.cpp index 1c4b2507..13da947d 100755 --- a/ds/iarm/IarmHostImpl.cpp +++ b/ds/iarm/IarmHostImpl.cpp @@ -12,6 +12,7 @@ using IVideoDeviceEvents = device::Host::IVideoDeviceEvents; using IVideoOutputPortEvents = device::Host::IVideoOutputPortEvents; using IAudioOutputPortEvents = device::Host::IAudioOutputPortEvents; +using IDisplayDeviceEvents = device::Host::IDisplayDeviceEvents; namespace device { @@ -501,6 +502,50 @@ class IARMGroupAudioOutputPort { }; }; +class IARMGroupDisplayDevice { +public: + static bool RegisterIarmEvents() + { + IARM_Result_t result = IARM_Bus_RegisterEventHandler(IARM_BUS_DSMGR_NAME, IARM_BUS_DSMGR_EVENT_HDMI_HOTPLUG, + &IARMGroupDisplayDevice::iarmDisplayHDMIHotPlugHandler); + + if (result != IARM_RESULT_SUCCESS) { + INT_ERROR("Failed to register IARM event handler for IARM_BUS_DSMGR_EVENT_HDMI_HOTPLUG"); + } + return (result == IARM_RESULT_SUCCESS); + } + + static bool UnRegisterIarmEvents() + { + IARM_Result_t result = IARM_Bus_UnRegisterEventHandler(IARM_BUS_DSMGR_NAME, IARM_BUS_DSMGR_EVENT_HDMI_HOTPLUG); + if (result != IARM_RESULT_SUCCESS) { + INT_ERROR("Failed to unregister IARM event handler for IARM_BUS_DSMGR_EVENT_HDMI_HOTPLUG"); + } + return (result == IARM_RESULT_SUCCESS); + } + +private: + static void iarmDisplayHDMIHotPlugHandler(const char* owner, IARM_EventId_t eventId, void* data, size_t len) + { + INT_INFO("IARM_BUS_DSMGR_EVENT_HDMI_HOTPLUG received owner = %s, eventId = %d", owner, eventId); + + if (!isValidOwner(owner)) { + return; + } + + IARM_Bus_DSMgr_EventData_t* eventData = (IARM_Bus_DSMgr_EventData_t*)data; + if (eventData) { + dsDisplayEvent_t dd = static_cast(eventData->data.hdmi_hpd.event); + + IarmHostImpl::Dispatch([dd](IDisplayDeviceEvents* listener) { + listener->OnDisplayHDMIHotPlug(dd); + }); + } else { + INT_ERROR("Invalid data received for HDMI hot plug change"); + } + }; +}; + // static data constexpr EventHandlerMapping IARMGroupVideoDevice::handlers[]; constexpr EventHandlerMapping IARMGroupVideoOutputPort::handlers[]; @@ -510,6 +555,7 @@ std::mutex IarmHostImpl::s_mutex; IarmHostImpl::CallbackList IarmHostImpl::s_videoDeviceListeners; IarmHostImpl::CallbackList IarmHostImpl::s_videoOutputPortListeners; IarmHostImpl::CallbackList IarmHostImpl::s_audioOutputPortListeners; +IarmHostImpl::CallbackList IarmHostImpl::s_displayDeviceListeners; IarmHostImpl::~IarmHostImpl() { @@ -518,6 +564,7 @@ IarmHostImpl::~IarmHostImpl() s_videoDeviceListeners.Release(); s_videoOutputPortListeners.Release(); s_audioOutputPortListeners.Release(); + s_displayDeviceListeners.Release(); } template @@ -593,4 +640,21 @@ dsError_t IarmHostImpl::UnRegister(IAudioOutputPortEvents* listener) Dispatch(s_audioOutputPortListeners, std::move(fn)); } +dsError_t IarmHostImpl::Register(IDisplayDeviceEvents* listener) +{ + std::lock_guard lock(s_mutex); + return s_displayDeviceListeners.Register(listener); +} + +dsError_t IarmHostImpl::UnRegister(IDisplayDeviceEvents* listener) +{ + std::lock_guard lock(s_mutex); + return s_displayDeviceListeners.UnRegister(listener); +} + +// Dispatcher for IDisplayDeviceEvents +/* static */ void IarmHostImpl::Dispatch(std::function&& fn) +{ + Dispatch(s_displayDeviceListeners, std::move(fn)); +} } // namespace device diff --git a/ds/iarm/IarmHostImpl.hpp b/ds/iarm/IarmHostImpl.hpp index d4743f82..1f503e6a 100755 --- a/ds/iarm/IarmHostImpl.hpp +++ b/ds/iarm/IarmHostImpl.hpp @@ -33,6 +33,7 @@ namespace device { class IARMGroupVideoDevice; class IARMGroupVideoOutputPort; class IARMGroupAudioOutputPort; +class IARMGroupDisplayDevice; class IarmHostImpl { @@ -140,6 +141,7 @@ class IarmHostImpl { using IVideoDeviceEvents = device::Host::IVideoDeviceEvents; using IVideoOutputPortEvents = device::Host::IVideoOutputPortEvents; using IAudioOutputPortEvents = device::Host::IAudioOutputPortEvents; + using IDisplayDeviceEvents = device::Host::IDisplayDeviceEvents; IarmHostImpl() = default; ~IarmHostImpl(); @@ -168,12 +170,21 @@ class IarmHostImpl { // @param listener: class object implementing the listener dsError_t UnRegister(IAudioOutputPortEvents* listener); + // @brief Register a listener for display device events + // @param listener: class object implementing the listener + dsError_t Register(IDisplayDeviceEvents* listener); + + // @brief UnRegister a listener for display device events + // @param listener: class object implementing the listener + dsError_t UnRegister(IDisplayDeviceEvents* listener); + private: static std::mutex s_mutex; static CallbackList s_videoDeviceListeners; static CallbackList s_videoOutputPortListeners; static CallbackList s_audioOutputPortListeners; + static CallbackList s_displayDeviceListeners; template static void Dispatch(const std::list& listeners, F&& fn); @@ -181,10 +192,12 @@ class IarmHostImpl { static void Dispatch(std::function&& fn); static void Dispatch(std::function&& fn); static void Dispatch(std::function&& fn); + static void Dispatch(std::function&& fn); // Dispatch is private, so all IARMGroup implementations will need to be friends friend class IARMGroupVideoDevice; friend class IARMGroupVideoOutputPort; friend class IARMGroupAudioOutputPort; + friend class IARMGroupDisplayDevice; }; } // namespace device diff --git a/ds/include/host.hpp b/ds/include/host.hpp index 268988f2..0cfb678b 100644 --- a/ds/include/host.hpp +++ b/ds/include/host.hpp @@ -31,6 +31,7 @@ #include "audioOutputPort.hpp" #include "dsAVDTypes.h" +#include "dsDisplay.h" #include "dsError.h" #include "list.hpp" #include "sleepMode.hpp" @@ -169,6 +170,20 @@ class Host { // @param listener: class object implementing the listener dsError_t UnRegister(IAudioOutputPortEvents* listener); + struct IDisplayDeviceEvents { + // @brief Display HDMI (out) Hot plug event + // @param displayEvent: display event type see dsDisplayEvent_t + virtual void OnDisplayHDMIHotPlug(dsDisplayEvent_t displayEvent) { }; + }; + + // @brief Register a listener for display device events + // @param listener: class object implementing the listener + dsError_t Register(IDisplayDeviceEvents* listener); + + // @brief UnRegister a listener for display device events + // @param listener: class object implementing the listener + dsError_t UnRegister(IDisplayDeviceEvents* listener); + bool setPowerMode(int mode); int getPowerMode(); SleepMode getPreferredSleepMode(); From 6ab5cde961804c651f3a84be234b5db389f64d06 Mon Sep 17 00:00:00 2001 From: Shrinivas Kamath Date: Tue, 26 Aug 2025 17:38:28 +0530 Subject: [PATCH 040/103] minor rename --- ds/iarm/IarmHostImpl.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/ds/iarm/IarmHostImpl.cpp b/ds/iarm/IarmHostImpl.cpp index 13da947d..f26435c0 100755 --- a/ds/iarm/IarmHostImpl.cpp +++ b/ds/iarm/IarmHostImpl.cpp @@ -535,10 +535,10 @@ class IARMGroupDisplayDevice { IARM_Bus_DSMgr_EventData_t* eventData = (IARM_Bus_DSMgr_EventData_t*)data; if (eventData) { - dsDisplayEvent_t dd = static_cast(eventData->data.hdmi_hpd.event); + dsDisplayEvent_t displayEvent = static_cast(eventData->data.hdmi_hpd.event); - IarmHostImpl::Dispatch([dd](IDisplayDeviceEvents* listener) { - listener->OnDisplayHDMIHotPlug(dd); + IarmHostImpl::Dispatch([displayEvent](IDisplayDeviceEvents* listener) { + listener->OnDisplayHDMIHotPlug(displayEvent); }); } else { INT_ERROR("Invalid data received for HDMI hot plug change"); From cfc3ffdbe8d1e2c42819cde6b541f5310f420348 Mon Sep 17 00:00:00 2001 From: skamath <161743589+skamath@users.noreply.github.com> Date: Tue, 26 Aug 2025 17:40:15 +0530 Subject: [PATCH 041/103] fix typo Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- ds/host.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ds/host.cpp b/ds/host.cpp index ba48fde6..69a9c5f6 100644 --- a/ds/host.cpp +++ b/ds/host.cpp @@ -809,7 +809,7 @@ dsError_t Host::Register(IDisplayDeviceEvents* listener) { } dsError_t Host::UnRegister(IDisplayDeviceEvents* listener) { - return impl().Register(listener); + return impl().UnRegister(listener); } /** @} */ From fe5bd1b5dbb3bc1440441eb56d06381df4e8efc2 Mon Sep 17 00:00:00 2001 From: Shrinivas Kamath Date: Tue, 26 Aug 2025 17:52:19 +0530 Subject: [PATCH 042/103] implement a pending TODO (Video Out OnHDCPStatusChange) --- ds/iarm/IarmHostImpl.cpp | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/ds/iarm/IarmHostImpl.cpp b/ds/iarm/IarmHostImpl.cpp index f26435c0..eb03cf50 100755 --- a/ds/iarm/IarmHostImpl.cpp +++ b/ds/iarm/IarmHostImpl.cpp @@ -224,7 +224,10 @@ class IARMGroupVideoOutputPort { IARM_Bus_DSMgr_EventData_t* eventData = (IARM_Bus_DSMgr_EventData_t*)data; if (eventData) { - // TODO + dsHdcpStatus_t hdcpStatus = static_cast(eventData->data.hdmi_hdcp.hdcpStatus); + IarmHostImpl::Dispatch([hdcpStatus](IVideoOutputPortEvents* listener) { + listener->OnHDCPStatusChange(hdcpStatus); + }); } else { INT_ERROR("Invalid data received for HDCP status change"); } @@ -616,7 +619,7 @@ dsError_t IarmHostImpl::UnRegister(IVideoOutputPortEvents* listener) return s_videoOutputPortListeners.UnRegister(listener); } -// Dispatcher for IARMGroupVideoPort +// Dispatcher for IVideoOutputPortEvents /* static */ void IarmHostImpl::Dispatch(std::function&& fn) { Dispatch(s_videoOutputPortListeners, std::move(fn)); @@ -634,7 +637,7 @@ dsError_t IarmHostImpl::UnRegister(IAudioOutputPortEvents* listener) return s_audioOutputPortListeners.UnRegister(listener); } -// Dispatcher for IARMGroupAudioPort +// Dispatcher for IAudioOutputPortEvents /* static */ void IarmHostImpl::Dispatch(std::function&& fn) { Dispatch(s_audioOutputPortListeners, std::move(fn)); From 224ac42b81f37f0969464703f094b7eb5d0addfc Mon Sep 17 00:00:00 2001 From: Shrinivas Kamath Date: Tue, 26 Aug 2025 18:06:06 +0530 Subject: [PATCH 043/103] avoid redundant type aliases --- ds/iarm/IarmHostImpl.cpp | 6 +----- ds/iarm/IarmHostImpl.hpp | 10 +++++----- 2 files changed, 6 insertions(+), 10 deletions(-) diff --git a/ds/iarm/IarmHostImpl.cpp b/ds/iarm/IarmHostImpl.cpp index eb03cf50..54d8b3e1 100755 --- a/ds/iarm/IarmHostImpl.cpp +++ b/ds/iarm/IarmHostImpl.cpp @@ -9,11 +9,6 @@ #include "libIBus.h" -using IVideoDeviceEvents = device::Host::IVideoDeviceEvents; -using IVideoOutputPortEvents = device::Host::IVideoOutputPortEvents; -using IAudioOutputPortEvents = device::Host::IAudioOutputPortEvents; -using IDisplayDeviceEvents = device::Host::IDisplayDeviceEvents; - namespace device { struct EventHandlerMapping { @@ -660,4 +655,5 @@ dsError_t IarmHostImpl::UnRegister(IDisplayDeviceEvents* listener) { Dispatch(s_displayDeviceListeners, std::move(fn)); } + } // namespace device diff --git a/ds/iarm/IarmHostImpl.hpp b/ds/iarm/IarmHostImpl.hpp index 1f503e6a..453deaee 100755 --- a/ds/iarm/IarmHostImpl.hpp +++ b/ds/iarm/IarmHostImpl.hpp @@ -35,6 +35,11 @@ class IARMGroupVideoOutputPort; class IARMGroupAudioOutputPort; class IARMGroupDisplayDevice; +using IVideoDeviceEvents = Host::IVideoDeviceEvents; +using IVideoOutputPortEvents = Host::IVideoOutputPortEvents; +using IAudioOutputPortEvents = Host::IAudioOutputPortEvents; +using IDisplayDeviceEvents = Host::IDisplayDeviceEvents; + class IarmHostImpl { // Manages a list of listeners and corresponding IARM Event Group operations. @@ -138,11 +143,6 @@ class IarmHostImpl { }; public: - using IVideoDeviceEvents = device::Host::IVideoDeviceEvents; - using IVideoOutputPortEvents = device::Host::IVideoOutputPortEvents; - using IAudioOutputPortEvents = device::Host::IAudioOutputPortEvents; - using IDisplayDeviceEvents = device::Host::IDisplayDeviceEvents; - IarmHostImpl() = default; ~IarmHostImpl(); From c55ebc4eb666c71492143a118efe38820faa34b4 Mon Sep 17 00:00:00 2001 From: kkaliyaperumal Date: Tue, 26 Aug 2025 19:12:11 +0530 Subject: [PATCH 044/103] IARMGroupHdmiIn changes added --- ds/iarm/IarmHostImpl.cpp | 204 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 204 insertions(+) diff --git a/ds/iarm/IarmHostImpl.cpp b/ds/iarm/IarmHostImpl.cpp index 1c4b2507..afe48936 100755 --- a/ds/iarm/IarmHostImpl.cpp +++ b/ds/iarm/IarmHostImpl.cpp @@ -501,6 +501,210 @@ class IARMGroupAudioOutputPort { }; }; +class IARMGroupHdmiIn { +public: + static bool RegisterIarmEvents() + { + return registerIarmEvents(handlers); + } + + static bool UnRegisterIarmEvents() + { + return unregisterIarmEvents(handlers); + } + +private: + static void iarmHDMIInEventHotPlugHandler(const char* owner, IARM_EventId_t eventId, void* data, size_t len) + { + INT_INFO("IARM_BUS_DSMGR_EVENT_HDMI_IN_HOTPLUG received owner = %s, eventId = %d", owner, eventId); + + if (!isValidOwner(owner)) { + return; + } + + IARM_Bus_DSMgr_EventData_t* eventData = (IARM_Bus_DSMgr_EventData_t*)data; + + if (eventData) { + dsHdmiInPort_t port = eventData->data.hdmi_in_connect.port); + bool isConnected = eventData->data.hdmi_in_connect.isPortConnected; + + IarmHostImpl::Dispatch([port, isConnected](IHDMIInEvents* listener) { + listener->OnHDMIInEventHotPlug(port, isConnected); + }); + } else { + INT_ERROR("Invalid data received for HdmiIn hot plug"); + } + }; + + static void iarmHDMIInEventSignalStatusHandler(const char* owner, IARM_EventId_t eventId, void* data, size_t len) + { + INT_INFO("IARM_BUS_DSMGR_EVENT_HDMI_IN_SIGNAL_STATUS received owner = %s, eventId = %d", owner, eventId); + + if (!isValidOwner(owner)) { + return; + } + + IARM_Bus_DSMgr_EventData_t* eventData = (IARM_Bus_DSMgr_EventData_t*)data; + + if (eventData) { + dsHdmiInPort_t port = eventData->data.hdmi_in_sig_status.port; + dsHdmiInSignalStatus_t sigStatus = eventData->data.hdmi_in_sig_status.status; + + IarmHostImpl::Dispatch([port, sigStatus](IHDMIInEvents* listener) { + listener->OnHDMIInEventSignalStatus(port, sigStatus); + }); + } else { + INT_ERROR("Invalid data received for HdmiIn signal status"); + } + }; + + static void iarmHDMIInEventStatusHandler(const char* owner, IARM_EventId_t eventId, void* data, size_t len) + { + INT_INFO("IARM_BUS_DSMGR_EVENT_HDMI_IN_STATUS received owner = %s, eventId = %d", owner, eventId); + + if (!isValidOwner(owner)) { + return; + } + + IARM_Bus_DSMgr_EventData_t* eventData = (IARM_Bus_DSMgr_EventData_t*)data; + + if (eventData) { + dsHdmiInPort_t activePort = eventData->data.hdmi_in_status.port; + bool isPresented = eventData->data.hdmi_in_status.isPresented; + + IarmHostImpl::Dispatch([activePort, isPresented](IHDMIInEvents* listener) { + listener->OnHDMIInEventStatus(activePort, isPresented); + }); + } else { + INT_ERROR("Invalid data received for HdmiIn event status"); + } + }; + + static void iarmHDMIInVideoModeUpdateHandler(const char* owner, IARM_EventId_t eventId, void* data, size_t len) + { + INT_INFO("IARM_BUS_DSMGR_EVENT_HDMI_IN_VIDEO_MODE_UPDATE received owner = %s, eventId = %d", owner, eventId); + + if (!isValidOwner(owner)) { + return; + } + + IARM_Bus_DSMgr_EventData_t* eventData = (IARM_Bus_DSMgr_EventData_t*)data; + + if (eventData) { + dsHdmiInPort_t port = eventData->data.hdmi_in_video_mode.port; + dsVideoPortResolution_t& res; + res.pixelResolution = eventData->data.hdmi_in_video_mode.resolution.pixelResolution; + res.interlaced = eventData->data.hdmi_in_video_mode.resolution.interlaced; + res.frameRate = eventData->data.hdmi_in_video_mode.resolution.frameRate; + + IarmHostImpl::Dispatch([port, &res](IHDMIInEvents* listener) { + listener->OnHDMIInVideoModeUpdate(port, res); + }); + } else { + INT_ERROR("Invalid data received for HdmiIn video mode update"); + } + }; + + static void iarmHDMIInAllmStatusHandler(const char* owner, IARM_EventId_t eventId, void* data, size_t len) + { + INT_INFO("IARM_BUS_DSMGR_EVENT_HDMI_IN_ALLM_STATUS received owner = %s, eventId = %d", owner, eventId); + + if (!isValidOwner(owner)) { + return; + } + + IARM_Bus_DSMgr_EventData_t* eventData = (IARM_Bus_DSMgr_EventData_t*)data; + if (eventData) { + dsHdmiInPort_t port = eventData->data.hdmi_in_allm_mode.port; + bool allmStatus = eventData->data.hdmi_in_allm_mode.allm_mode; + + IarmHostImpl::Dispatch([port, allmStatus](IHDMIInEvents* listener) { + listener->OnHDMIInAllmStatus(port, allmStatus); + }); + } else { + INT_ERROR("Invalid data received for HdmiIn allm status"); + } + }; + + static void iarmHDMIInVRRStatusHandler(const char* owner, IARM_EventId_t eventId, void* data, size_t len) + { + INT_INFO("IARM_BUS_DSMGR_EVENT_HDMI_IN_VRR_STATUS received owner = %s, eventId = %d", owner, eventId); + + if (!isValidOwner(owner)) { + return; + } + + IARM_Bus_DSMgr_EventData_t* eventData = (IARM_Bus_DSMgr_EventData_t*)data; + if (eventData) { + dsHdmiInPort_t port = eventData->data.hdmi_in_vrr_mode.port; + dsVRRType_t vrrType = eventData->data.hdmi_in_vrr_mode.vrr_type; + + IarmHostImpl::Dispatch([port, vrrType](IHDMIInEvents* listener) { + listener->OnHDMIInVRRStatus(port, vrrType); + }); + + } else { + INT_ERROR("Invalid data received for HdmiIn vrr status"); + } + }; + + static void iarmHDMIInAVIContentTypeHandler(const char* owner, IARM_EventId_t eventId, void* data, size_t len) + { + INT_INFO("IARM_BUS_DSMGR_EVENT_HDMI_IN_AVI_CONTENT_TYPE received owner = %s, eventId = %d", owner, eventId); + + if (!isValidOwner(owner)) { + return; + } + + IARM_Bus_DSMgr_EventData_t* eventData = (IARM_Bus_DSMgr_EventData_t*)data; + + if (eventData) { + dsHdmiInPort_t port = eventData->data.hdmi_in_content_type.port; + dsAviContentType_t type = eventData->data.hdmi_in_content_type.aviContentType; + + IarmHostImpl::Dispatch([port, type](IHDMIInEvents* listener) { + listener->OnHDMIInAVIContentType(port, type); + }); + } else { + INT_ERROR("Invalid data received for HdmiIn avi content type"); + } + }; + + static void iarmHDMIInAVLatencyHandler(const char* owner, IARM_EventId_t eventId, void* data, size_t len) + { + INT_INFO("IARM_BUS_DSMGR_EVENT_HDMI_IN_AV_LATENCY received owner = %s, eventId = %d", owner, eventId); + + if (!isValidOwner(owner)) { + return; + } + + IARM_Bus_DSMgr_EventData_t* eventData = (IARM_Bus_DSMgr_EventData_t*)data; + + if (eventData) { + int audioDelay = eventData->data.hdmi_in_av_latency.audio_output_delay; + int videoDelay = eventData->data.hdmi_in_av_latency.video_latency; + + IarmHostImpl::Dispatch([audioDelay, videoDelay](IHDMIInEvents* listener) { + listener->OnHDMIInAVLatency(audioDelay, videoDelay); + }); + } else { + INT_ERROR("Invalid data received for HdmiIn av latency"); + } + }; + +private: + static constexpr EventHandlerMapping handlers[] = { + { IARM_BUS_DSMGR_EVENT_HDMI_IN_HOTPLUG, &IARMGroupHdmiIn::iarmHDMIInEventHotPlugHandler }, + { IARM_BUS_DSMGR_EVENT_HDMI_IN_SIGNAL_STATUS, &IARMGroupHdmiIn::iarmHDMIInEventSignalStatusHandler }, + { IARM_BUS_DSMGR_EVENT_HDMI_IN_STATUS, &IARMGroupHdmiIn::iarmHDMIInEventStatusHandler }, + { IARM_BUS_DSMGR_EVENT_HDMI_IN_VIDEO_MODE_UPDATE, &IARMGroupHdmiIn::iarmHDMIInVideoModeUpdateHandler }, + { IARM_BUS_DSMGR_EVENT_HDMI_IN_ALLM_STATUS, &IARMGroupHdmiIn::iarmHDMIInAllmStatusHandler }, + { IARM_BUS_DSMGR_EVENT_HDMI_IN_VRR_STATUS, &IARMGroupHdmiIn::iarmHDMIInVRRStatusHandler }, + { IARM_BUS_DSMGR_EVENT_HDMI_IN_AVI_CONTENT_TYPE, &IARMGroupHdmiIn::iarmHDMIInAVIContentTypeHandler }, + { IARM_BUS_DSMGR_EVENT_HDMI_IN_AV_LATENCY, &IARMGroupHdmiIn::iarmHDMIInAVLatencyHandler } + }; +}; + // static data constexpr EventHandlerMapping IARMGroupVideoDevice::handlers[]; constexpr EventHandlerMapping IARMGroupVideoOutputPort::handlers[]; From 73284a2e8fe4de029324bd8af7e4bfbcb8396a0c Mon Sep 17 00:00:00 2001 From: Shrinivas Kamath Date: Tue, 26 Aug 2025 20:04:17 +0530 Subject: [PATCH 045/103] fix incorrect merge --- ds/iarm/IarmHostImpl.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/ds/iarm/IarmHostImpl.cpp b/ds/iarm/IarmHostImpl.cpp index f262d5ce..566b2e42 100755 --- a/ds/iarm/IarmHostImpl.cpp +++ b/ds/iarm/IarmHostImpl.cpp @@ -531,9 +531,11 @@ class IARMGroupDisplayDevice { return; } - dsDisplayEvent_t displayEvent = static_cast(eventData->data.hdmi_hpd.event); + IARM_Bus_DSMgr_EventData_t* eventData = (IARM_Bus_DSMgr_EventData_t*)data; if (eventData) { + dsDisplayEvent_t displayEvent = static_cast(eventData->data.hdmi_hpd.event); + IarmHostImpl::Dispatch([displayEvent](IDisplayDeviceEvents* listener) { listener->OnDisplayHDMIHotPlug(displayEvent); }); From 1e21c1b1f492d2cdbd36f08b3a0b93a4864244c9 Mon Sep 17 00:00:00 2001 From: Ramesh Babu H Date: Tue, 26 Aug 2025 20:53:15 +0530 Subject: [PATCH 046/103] topic/RDKEMW6161- Composite and Display Implementation Changes --- ds/host.cpp | 45 +++++++++ ds/iarm/IarmHostImpl.cpp | 200 +++++++++++++++++++++++++++++++++++++++ ds/iarm/IarmHostImpl.hpp | 26 +++++ ds/include/host.hpp | 46 +++++++++ 4 files changed, 317 insertions(+) diff --git a/ds/host.cpp b/ds/host.cpp index 69a9c5f6..b114f880 100644 --- a/ds/host.cpp +++ b/ds/host.cpp @@ -774,6 +774,51 @@ DefaultImpl& Host::impl() return *m_impl; } + +/** + * @fn void Host::Register(ICompositeInEvents *Evtnotification) + * @brief This API is used to register the Events + * + * @return dsError_t + */ +dsError_t Host::Register(ICompositeInEvents *listener) +{ + return impl().Register(listener); +} + +/** + * @fn void Host::UnRegister(ICompositeInEvents *Evtnotification) + * @brief This API is used to UnRegister the Events + * + * @return dsError_t + */ +dsError_t Host::UnRegister(ICompositeInEvents *listener) +{ + return impl().UnRegister(listener); +} + +/** + * @fn void Host::Register(IDisplayEvents *Evtnotification) + * @brief This API is used to register the Events + * + * @return dsError_t + */ +dsError_t Host::Register(IDisplayEvents *listener) +{ + return impl().Register(listener); +} + +/** + * @fn void Host::UnRegister(IDisplayEvents *Evtnotification) + * @brief This API is used to UnRegister the Events + * + * @return dsError_t + */ +dsError_t Host::UnRegister(IDisplayEvents *listener) +{ + return impl().UnRegister(listener); +} + dsError_t Host::Register(IVideoDeviceEvents* listener) { return impl().Register(listener); diff --git a/ds/iarm/IarmHostImpl.cpp b/ds/iarm/IarmHostImpl.cpp index 54d8b3e1..a1f16240 100755 --- a/ds/iarm/IarmHostImpl.cpp +++ b/ds/iarm/IarmHostImpl.cpp @@ -500,6 +500,165 @@ class IARMGroupAudioOutputPort { }; }; +class IARMGroupComposite { +public: + static bool RegisterIarmEvents() + { + return registerIarmEvents(handlers); + } + + static bool UnRegisterIarmEvents() + { + return unregisterIarmEvents(handlers); + } + +private: + static void iarmCompositeInHotPlugHandler(const char* owner, IARM_EventId_t eventId, void* data, size_t len) + { + INT_INFO("IARM_BUS_DSMGR_EVENT_COMPOSITE_IN_HOTPLUG received owner = %s, eventId = %d", owner, eventId); + + if (!isValidOwner(owner)) { + return; + } + + IARM_Bus_DSMgr_EventData_t* eventData = (IARM_Bus_DSMgr_EventData_t*)data; + if (eventData) { + dsCompositeInPort_t compositePort = eventData->data.composite_in_connect.port; + bool isConnected = eventData->data.composite_in_connect.isPortConnected; + IarmHostImpl::Dispatch([compositePort, isConnected](ICompositeInEvents* listener) { + listener->OnCompositeInHotPlug(compositePort,isConnected); + }); + } else { + INT_ERROR("Invalid data received for Composite Status Handler in iarmCompositeInHotPlugHandler"); + } + } + + static void iarmCompositeInSignalStatusHandler(const char* owner, IARM_EventId_t eventId, void* data, size_t len) + { + INT_INFO("IARM_BUS_DSMGR_EVENT_COMPOSITE_IN_SIGNAL_STATUS received owner = %s, eventId = %d", owner, eventId); + + if (!isValidOwner(owner)) { + return; + } + IARM_Bus_DSMgr_EventData_t* eventData = (IARM_Bus_DSMgr_EventData_t*)data; + if (eventData) { + dsCompositeInPort_t compositePort = eventData->data.composite_in_sig_status.port; + dsCompInSignalStatus_t compositeSigStatus = eventData->data.composite_in_sig_status.status; + IarmHostImpl::Dispatch([compositePort,compositeSigStatus](ICompositeInEvents* listener) { + listener->OnCompositeInSignalStatus(compositePort,compositeSigStatus); + }); + } else { + INT_ERROR("Invalid data received for Composite Status Handler in iarmCompositeInSignalStatusHandler"); + } + } + + static void iarmCompositeInStatusHandler(const char* owner, IARM_EventId_t eventId, void* data, size_t len) + { + INT_INFO("IARM_BUS_DSMGR_EVENT_COMPOSITE_IN_STATUS received owner = %s, eventId = %d", owner, eventId); + + if (!isValidOwner(owner)) { + return; + } + IARM_Bus_DSMgr_EventData_t* eventData = (IARM_Bus_DSMgr_EventData_t*)data; + if (eventData) { + dsCompositeInPort_t compositePort = eventData->data.composite_in_status.port; + bool isPresented = eventData->data.composite_in_status.isPresented; + IarmHostImpl::Dispatch([compositePort,isPresented](ICompositeInEvents* listener) { + listener->OnCompositeInStatus(compositePort,isPresented); + }); + } else { + INT_ERROR("Invalid data received for Composite Status Handler in iarmCompositeInStatusHandler"); + } + } + + + static void iarmCompositeInVideoModeUpdateHandler(const char* owner, IARM_EventId_t eventId, void* data, size_t len) + { + INT_INFO("IARM_BUS_DSMGR_EVENT_COMPOSITE_IN_VIDEO_MODE_UPDATE received owner = %s, eventId = %d", owner, eventId); + if (!isValidOwner(owner)) { + return; + } + IARM_Bus_DSMgr_EventData_t* eventData = (IARM_Bus_DSMgr_EventData_t*)data; + if (eventData) { + dsCompositeInPort_t compositePort = eventData->data.composite_in_video_mode.port; + dsVideoPortResolution_t videoResolution; + videoResolution.pixelResolution = eventData->data.composite_in_video_mode.resolution.pixelResolution; + videoResolution.interlaced = eventData->data.composite_in_video_mode.resolution.interlaced; + videoResolution.frameRate = eventData->data.composite_in_video_mode.resolution.frameRate; + IarmHostImpl::Dispatch([compositePort,videoResolution](ICompositeInEvents* listener) { + listener->OnCompositeInVideoModeUpdate(compositePort,videoResolution); + }); + } else { + INT_ERROR("Invalid data received for Composite Video Mode Update in iarmCompositeInVideoModeUpdateHandler"); + } + } + +private: + static constexpr EventHandlerMapping handlers[] = { + { IARM_BUS_DSMGR_EVENT_COMPOSITE_IN_HOTPLUG, &IARMGroupComposite::iarmCompositeInHotPlugHandler }, + { IARM_BUS_DSMGR_EVENT_COMPOSITE_IN_SIGNAL_STATUS, &IARMGroupComposite::iarmCompositeInSignalStatusHandler }, + { IARM_BUS_DSMGR_EVENT_COMPOSITE_IN_STATUS, &IARMGroupComposite::iarmCompositeInStatusHandler }, + { IARM_BUS_DSMGR_EVENT_COMPOSITE_IN_VIDEO_MODE_UPDATE, &IARMGroupComposite::iarmCompositeInVideoModeUpdateHandler }, + }; +}; + + +class IARMGroupDisplay { +public: + static bool RegisterIarmEvents() + { + return registerIarmEvents(handlers); + } + + static bool UnRegisterIarmEvents() + { + return unregisterIarmEvents(handlers); + } + +private: + static void iarmDisplayDisplayRxSense(const char* owner, IARM_EventId_t eventId, void* data, size_t len) + { + INT_INFO("IARM_BUS_DSMGR_EVENT_RX_SENSE received owner = %s, eventId = %d", owner, eventId); + + if (!isValidOwner(owner)) { + return; + } + IARM_Bus_DSMgr_EventData_t* eventData = (IARM_Bus_DSMgr_EventData_t*)data; + if (eventData) { + dsDisplayEvent_t displayStatusEvent = static_cast(eventData->data.hdmi_rxsense.status); + IarmHostImpl::Dispatch([displayStatusEvent](IDisplayEvents* listener) { + listener->OnDisplayRxSense(displayStatusEvent); + }); + } else { + INT_ERROR("Invalid data received for Composite Status Handler in iarmDisplayDisplayRxSense"); + } + } + + static void iarmDisplayHDCPStatusChange(const char* owner, IARM_EventId_t eventId, void* data, size_t len) + { + INT_INFO("IARM_BUS_DSMGR_EVENT_HDCP_STATUS received owner = %s, eventId = %d", owner, eventId); + if (!isValidOwner(owner)) { + return; + } + IARM_Bus_DSMgr_EventData_t* eventData = (IARM_Bus_DSMgr_EventData_t*)data; + if (eventData) { + dsHdcpStatus_t hdcpStatus = static_cast(eventData->data.hdmi_hdcp.hdcpStatus); + IarmHostImpl::Dispatch([hdcpStatus](IDisplayEvents* listener) { + /* To check Parameter Required or Not*/ + listener->OnDisplayHDCPStatus(); + }); + } else { + INT_ERROR("Invalid data received for Composite Video Mode Update in iarmDisplayHDCPStatusChange"); + } + } + +private: + static constexpr EventHandlerMapping handlers[] = { + { IARM_BUS_DSMGR_EVENT_RX_SENSE, &IARMGroupDisplay::iarmDisplayDisplayRxSense }, + { IARM_BUS_DSMGR_EVENT_HDCP_STATUS, &IARMGroupDisplay::iarmDisplayHDCPStatusChange }, + }; +}; + class IARMGroupDisplayDevice { public: static bool RegisterIarmEvents() @@ -548,11 +707,15 @@ class IARMGroupDisplayDevice { constexpr EventHandlerMapping IARMGroupVideoDevice::handlers[]; constexpr EventHandlerMapping IARMGroupVideoOutputPort::handlers[]; constexpr EventHandlerMapping IARMGroupAudioOutputPort::handlers[]; +constexpr EventHandlerMapping IARMGroupComposite::handlers[]; +constexpr EventHandlerMapping IARMGroupDisplay::handlers[]; std::mutex IarmHostImpl::s_mutex; IarmHostImpl::CallbackList IarmHostImpl::s_videoDeviceListeners; IarmHostImpl::CallbackList IarmHostImpl::s_videoOutputPortListeners; IarmHostImpl::CallbackList IarmHostImpl::s_audioOutputPortListeners; +IarmHostImpl::CallbackList IarmHostImpl::s_compositeListeners; +IarmHostImpl::CallbackList IarmHostImpl::s_displayListeners; IarmHostImpl::CallbackList IarmHostImpl::s_displayDeviceListeners; IarmHostImpl::~IarmHostImpl() @@ -562,6 +725,8 @@ IarmHostImpl::~IarmHostImpl() s_videoDeviceListeners.Release(); s_videoOutputPortListeners.Release(); s_audioOutputPortListeners.Release(); + s_compositeListeners.Release(); + s_displayListeners.Release(); s_displayDeviceListeners.Release(); } @@ -638,6 +803,41 @@ dsError_t IarmHostImpl::UnRegister(IAudioOutputPortEvents* listener) Dispatch(s_audioOutputPortListeners, std::move(fn)); } +dsError_t IarmHostImpl::Register(ICompositeInEvents* listener) +{ + std::lock_guard lock(s_mutex); + return s_compositeListeners.Register(listener); +} + +dsError_t IarmHostImpl::UnRegister(ICompositeInEvents* listener) +{ + std::lock_guard lock(s_mutex); + return s_compositeListeners.UnRegister(listener); +} + +// Dispatcher for IARMGroupComposite +/* static */ void IarmHostImpl::Dispatch(std::function&& fn) +{ + Dispatch(s_compositeListeners, std::move(fn)); +} + +dsError_t IarmHostImpl::Register(IDisplayEvents* listener) +{ + std::lock_guard lock(s_mutex); + return s_displayListeners.Register(listener); +} + +dsError_t IarmHostImpl::UnRegister(IDisplayEvents* listener) +{ + std::lock_guard lock(s_mutex); + return s_displayListeners.UnRegister(listener); +} + +// Dispatcher for IARMGroupComposite +/* static */ void IarmHostImpl::Dispatch(std::function&& fn) +{ + Dispatch(s_displayListeners, std::move(fn)); +} dsError_t IarmHostImpl::Register(IDisplayDeviceEvents* listener) { std::lock_guard lock(s_mutex); diff --git a/ds/iarm/IarmHostImpl.hpp b/ds/iarm/IarmHostImpl.hpp index 453deaee..5b27f8af 100755 --- a/ds/iarm/IarmHostImpl.hpp +++ b/ds/iarm/IarmHostImpl.hpp @@ -34,11 +34,15 @@ class IARMGroupVideoDevice; class IARMGroupVideoOutputPort; class IARMGroupAudioOutputPort; class IARMGroupDisplayDevice; +class IARMGroupComposite; +class IARMGroupDisplay; using IVideoDeviceEvents = Host::IVideoDeviceEvents; using IVideoOutputPortEvents = Host::IVideoOutputPortEvents; using IAudioOutputPortEvents = Host::IAudioOutputPortEvents; using IDisplayDeviceEvents = Host::IDisplayDeviceEvents; +using ICompositeInEvents = device::Host::ICompositeInEvents; +using IDisplayEvents = device::Host::IDisplayEvents; class IarmHostImpl { @@ -170,6 +174,22 @@ class IarmHostImpl { // @param listener: class object implementing the listener dsError_t UnRegister(IAudioOutputPortEvents* listener); + // @brief Register a listener for Composite events + // @param listener: class object implementing the listener + dsError_t Register(ICompositeInEvents* listener); + + // @brief UnRegister a listener for Composite events + // @param listener: class object implementing the listener + dsError_t UnRegister(ICompositeInEvents* listener); + + // @brief Register a listener for Composite events + // @param listener: class object implementing the listener + dsError_t Register(IDisplayEvents* listener); + + // @brief UnRegister a listener for Composite events + // @param listener: class object implementing the listener + dsError_t UnRegister(IDisplayEvents* listener); + // @brief Register a listener for display device events // @param listener: class object implementing the listener dsError_t Register(IDisplayDeviceEvents* listener); @@ -184,6 +204,8 @@ class IarmHostImpl { static CallbackList s_videoDeviceListeners; static CallbackList s_videoOutputPortListeners; static CallbackList s_audioOutputPortListeners; + static CallbackList s_compositeListeners; + static CallbackList s_displayListeners; static CallbackList s_displayDeviceListeners; template @@ -192,12 +214,16 @@ class IarmHostImpl { static void Dispatch(std::function&& fn); static void Dispatch(std::function&& fn); static void Dispatch(std::function&& fn); + static void Dispatch(std::function&& fn); + static void Dispatch(std::function&& fn); static void Dispatch(std::function&& fn); // Dispatch is private, so all IARMGroup implementations will need to be friends friend class IARMGroupVideoDevice; friend class IARMGroupVideoOutputPort; friend class IARMGroupAudioOutputPort; + friend class IARMGroupComposite; + friend class IARMGroupDisplay; friend class IARMGroupDisplayDevice; }; } // namespace device diff --git a/ds/include/host.hpp b/ds/include/host.hpp index 0cfb678b..09346c71 100644 --- a/ds/include/host.hpp +++ b/ds/include/host.hpp @@ -62,6 +62,52 @@ class Host { static const int kPowerOff; static const int kPowerStandby; + + struct ICompositeInEvents { + // @brief Composite In Hotplug event + // @text onCompositeInHotPlug + // @param port: Port of the hotplug + // @param isConnected: Is it connected (true) or not(false) + virtual void OnCompositeInHotPlug(dsCompositeInPort_t port, bool isConnected) { }; + + // @brief Composite In Signal status + // @text onCompositeInSignalStatus + // @param port: Port of the hotplug + // @param signalStatus: Signal status + virtual void OnCompositeInSignalStatus(dsCompositeInPort_t port, dsCompInSignalStatus_t signalStatus) { }; + + // @brief Composite In status + // @text onCompositeInStatus + // @param activePort: Active port + // @param isPresented: is it presented to user + virtual void OnCompositeInStatus(dsCompositeInPort_t activePort, bool isPresented) { }; + + + // @brief Composite In Video Mode Update + // @text OnCompositeInVideoModeUpdate + // @param activePort: Active port + // @param videoResolution: See DisplayVideoPortResolution + virtual void OnCompositeInVideoModeUpdate(dsCompositeInPort_t activePort, dsVideoPortResolution_t videoResolution) { }; + }; + + dsError_t Register(ICompositeInEvents *listener); + dsError_t UnRegister(ICompositeInEvents *listener); + + struct IDisplayEvents{ + + // @brief Display RX Sense event + // @text onDisplayRxSense + // @param displayEvent: DS_DISPLAY_RXSENSE_ON or DS_DISPLAY_RXSENSE_OFF + virtual void OnDisplayRxSense(dsDisplayEvent_t displayEvent) { }; + + // @brief Display HDCP Status + // @text OnDisplayHDCPStatus + virtual void OnDisplayHDCPStatus() { }; + }; + dsError_t Register(IDisplayEvents *listener); + dsError_t UnRegister(IDisplayEvents *listener); + + struct IVideoDeviceEvents { // @brief Display Frame rate Pre-change notification // @param frameRate: new framerate From 7e324dd7b8eb86fb658ef6430df90883bee3036a Mon Sep 17 00:00:00 2001 From: Ramesh Babu H Date: Tue, 26 Aug 2025 21:22:33 +0530 Subject: [PATCH 047/103] topic/RDKEMW6161- Composite and Display Implementation: Native Build error fix and Coverty fix --- build_dependencies.sh | 2 +- ds/iarm/IarmHostImpl.cpp | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/build_dependencies.sh b/build_dependencies.sh index 090f105a..566fca25 100644 --- a/build_dependencies.sh +++ b/build_dependencies.sh @@ -47,7 +47,7 @@ cd rfc autoreconf -i ./configure --enable-rfctool=yes --enable-tr181set=yes cd rfcapi -make librfcapi_la_CPPFLAGS="-I/usr/include/cjson" +make CXXFLAGS="-DUSE_IARMBUS" librfcapi_la_CPPFLAGS="-I/usr/include/cjson" make install export RFC_PATH=$ROOT/rfc diff --git a/ds/iarm/IarmHostImpl.cpp b/ds/iarm/IarmHostImpl.cpp index a1f16240..4be671ef 100755 --- a/ds/iarm/IarmHostImpl.cpp +++ b/ds/iarm/IarmHostImpl.cpp @@ -585,8 +585,9 @@ class IARMGroupComposite { videoResolution.pixelResolution = eventData->data.composite_in_video_mode.resolution.pixelResolution; videoResolution.interlaced = eventData->data.composite_in_video_mode.resolution.interlaced; videoResolution.frameRate = eventData->data.composite_in_video_mode.resolution.frameRate; - IarmHostImpl::Dispatch([compositePort,videoResolution](ICompositeInEvents* listener) { - listener->OnCompositeInVideoModeUpdate(compositePort,videoResolution); + videoResolution.name = nullptr; + IarmHostImpl::Dispatch([compositePort,videoResolution](ICompositeInEvents* listener) { + listener->OnCompositeInVideoModeUpdate(compositePort,videoResolution); }); } else { INT_ERROR("Invalid data received for Composite Video Mode Update in iarmCompositeInVideoModeUpdateHandler"); From 7ea0aadbf29afd05628a19b6510f4bf18aa7f849 Mon Sep 17 00:00:00 2001 From: Ramesh Babu H Date: Tue, 26 Aug 2025 21:24:42 +0530 Subject: [PATCH 048/103] topic/RDKEMW6161- Composite and Display Implementation: Remove Native fix --- build_dependencies.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build_dependencies.sh b/build_dependencies.sh index 566fca25..090f105a 100644 --- a/build_dependencies.sh +++ b/build_dependencies.sh @@ -47,7 +47,7 @@ cd rfc autoreconf -i ./configure --enable-rfctool=yes --enable-tr181set=yes cd rfcapi -make CXXFLAGS="-DUSE_IARMBUS" librfcapi_la_CPPFLAGS="-I/usr/include/cjson" +make librfcapi_la_CPPFLAGS="-I/usr/include/cjson" make install export RFC_PATH=$ROOT/rfc From 31a0199ea6d33d86492ebe46465640c71c2e456d Mon Sep 17 00:00:00 2001 From: Ramesh Babu H Date: Tue, 26 Aug 2025 22:27:52 +0530 Subject: [PATCH 049/103] topic/RDKEMW6161- Composite and Display Implementation: Error Fix and Coverty Fix --- ds/iarm/IarmHostImpl.cpp | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/ds/iarm/IarmHostImpl.cpp b/ds/iarm/IarmHostImpl.cpp index 4be671ef..5d018f5c 100755 --- a/ds/iarm/IarmHostImpl.cpp +++ b/ds/iarm/IarmHostImpl.cpp @@ -1,6 +1,7 @@ #include #include #include +#include #include "IarmHostImpl.hpp" @@ -581,11 +582,11 @@ class IARMGroupComposite { IARM_Bus_DSMgr_EventData_t* eventData = (IARM_Bus_DSMgr_EventData_t*)data; if (eventData) { dsCompositeInPort_t compositePort = eventData->data.composite_in_video_mode.port; - dsVideoPortResolution_t videoResolution; - videoResolution.pixelResolution = eventData->data.composite_in_video_mode.resolution.pixelResolution; - videoResolution.interlaced = eventData->data.composite_in_video_mode.resolution.interlaced; - videoResolution.frameRate = eventData->data.composite_in_video_mode.resolution.frameRate; - videoResolution.name = nullptr; + dsVideoPortResolution_t videoResolution{}; + memset(videoResolution.name, 0, sizeof(videoResolution.name)); + videoResolution.pixelResolution = eventData->data.composite_in_video_mode.resolution.pixelResolution; + videoResolution.interlaced = eventData->data.composite_in_video_mode.resolution.interlaced; + videoResolution.frameRate = eventData->data.composite_in_video_mode.resolution.frameRate; IarmHostImpl::Dispatch([compositePort,videoResolution](ICompositeInEvents* listener) { listener->OnCompositeInVideoModeUpdate(compositePort,videoResolution); }); From 9861cd8ed1a1f6c66b99758a846eb5b1001e25d5 Mon Sep 17 00:00:00 2001 From: kkaliyaperumal Date: Thu, 28 Aug 2025 12:26:47 +0530 Subject: [PATCH 050/103] hdmi-in implementation --- ds/host.cpp | 11 ++++++++ ds/iarm/IarmHostImpl.cpp | 22 +++++++++++++++ ds/iarm/IarmHostImpl.hpp | 13 +++++++++ ds/include/host.hpp | 59 ++++++++++++++++++++++++++++++++++++++++ 4 files changed, 105 insertions(+) diff --git a/ds/host.cpp b/ds/host.cpp index 69a9c5f6..52c871f5 100644 --- a/ds/host.cpp +++ b/ds/host.cpp @@ -774,6 +774,17 @@ DefaultImpl& Host::impl() return *m_impl; } +dsError_t Host::Register(IHDMIInEvents *listener) +{ + return impl().Register(listener); + +} + +dsError_t Host::UnRegister(IHDMIInEvents *listener) +{ + return impl().UnRegister(listener); +} + dsError_t Host::Register(IVideoDeviceEvents* listener) { return impl().Register(listener); diff --git a/ds/iarm/IarmHostImpl.cpp b/ds/iarm/IarmHostImpl.cpp index 566b2e42..941d1b2b 100755 --- a/ds/iarm/IarmHostImpl.cpp +++ b/ds/iarm/IarmHostImpl.cpp @@ -749,11 +749,14 @@ class IARMGroupHdmiIn { }; // IARMGroupHdmiIn // static data +constexpr EventHandlerMapping IARMGroupHdmiIn::handlers[]; constexpr EventHandlerMapping IARMGroupVideoDevice::handlers[]; constexpr EventHandlerMapping IARMGroupVideoOutputPort::handlers[]; constexpr EventHandlerMapping IARMGroupAudioOutputPort::handlers[]; std::mutex IarmHostImpl::s_mutex; +IarmHostImpl::CallbackList IarmHostImpl::s_hdmiInListeners; +IarmHostImpl::CallbackList IarmHostImpl::s_videoDeviceListeners; IarmHostImpl::CallbackList IarmHostImpl::s_videoDeviceListeners; IarmHostImpl::CallbackList IarmHostImpl::s_videoOutputPortListeners; IarmHostImpl::CallbackList IarmHostImpl::s_audioOutputPortListeners; @@ -763,6 +766,7 @@ IarmHostImpl::~IarmHostImpl() { std::lock_guard lock(s_mutex); + s_hdmiInListeners.Release(); s_videoDeviceListeners.Release(); s_videoOutputPortListeners.Release(); s_audioOutputPortListeners.Release(); @@ -788,6 +792,24 @@ template INT_INFO("%s Dispatch done to %zu listeners\n%s", typeid(T).name(), listeners.size(), ss.str().c_str()); } +dsError_t IarmHostImpl::Register(IHDMIInEvents* listener) +{ + std::lock_guard lock(s_mutex); + return s_hdmiInListeners.Register(listener); +} + +dsError_t IarmHostImpl::UnRegister(IHDMIInEvents* listener) +{ + std::lock_guard lock(s_mutex); + return s_hdmiInListeners.UnRegister(listener); +} + +// Dispatcher for IHDMIInEvents +/* static */ void IarmHostImpl::Dispatch(std::function&& fn) +{ + Dispatch(s_hdmiInListeners, std::move(fn)); +} + dsError_t IarmHostImpl::Register(IVideoDeviceEvents* listener) { std::lock_guard lock(s_mutex); diff --git a/ds/iarm/IarmHostImpl.hpp b/ds/iarm/IarmHostImpl.hpp index 453deaee..82593586 100755 --- a/ds/iarm/IarmHostImpl.hpp +++ b/ds/iarm/IarmHostImpl.hpp @@ -30,11 +30,13 @@ namespace device { // Forward declaration for IARM Implementation Groups +class IARMGroupHdmiIn; class IARMGroupVideoDevice; class IARMGroupVideoOutputPort; class IARMGroupAudioOutputPort; class IARMGroupDisplayDevice; +using IHDMIInEvents = Host::IHDMIInEvents; using IVideoDeviceEvents = Host::IVideoDeviceEvents; using IVideoOutputPortEvents = Host::IVideoOutputPortEvents; using IAudioOutputPortEvents = Host::IAudioOutputPortEvents; @@ -146,6 +148,14 @@ class IarmHostImpl { IarmHostImpl() = default; ~IarmHostImpl(); + // @brief Register a listener for HDMI device events + // @param listener: class object implementing the listener + dsError_t Register(IHDMIInEvents* listener); + + // @brief UnRegister a listener for HDMI device events + // @param listener: class object implementing the listener + dsError_t UnRegister(IHDMIInEvents* listener); + // @brief Register a listener for video device events // @param listener: class object implementing the listener dsError_t Register(IVideoDeviceEvents* listener); @@ -181,6 +191,7 @@ class IarmHostImpl { private: static std::mutex s_mutex; + static CallbackList s_hdmiInListeners; static CallbackList s_videoDeviceListeners; static CallbackList s_videoOutputPortListeners; static CallbackList s_audioOutputPortListeners; @@ -189,12 +200,14 @@ class IarmHostImpl { template static void Dispatch(const std::list& listeners, F&& fn); + static void Dispatch(std::function&& fn); static void Dispatch(std::function&& fn); static void Dispatch(std::function&& fn); static void Dispatch(std::function&& fn); static void Dispatch(std::function&& fn); // Dispatch is private, so all IARMGroup implementations will need to be friends + friend class IARMGroupHdmiIn; friend class IARMGroupVideoDevice; friend class IARMGroupVideoOutputPort; friend class IARMGroupAudioOutputPort; diff --git a/ds/include/host.hpp b/ds/include/host.hpp index 0cfb678b..b7a5e7c7 100644 --- a/ds/include/host.hpp +++ b/ds/include/host.hpp @@ -62,6 +62,65 @@ class Host { static const int kPowerOff; static const int kPowerStandby; + struct IHDMIInEvents { + // @brief HDMI Event Hot Plug + // @text onHDMIInEventHotPlug + // @param port: port 0 or 1 et al + // @param isConnected: is it connected (true) or not (false) + virtual void OnHDMIInEventHotPlug(dsHdmiInPort_t port, bool isConnected) { }; + + // @brief HDMI Event Signal status + // @text OnHDMIInEventSignalStatus + // @param port: port 0 or 1 et al + // @param signalStatus: Signal Status + virtual void OnHDMIInEventSignalStatus(dsHdmiInPort_t port, dsHdmiInSignalStatus_t signalStatus) { }; + + // @brief HDMI Event Signal status + // @text onHDMIInEventStatus + // @param activePort: port 0 or 1 et al + // @param isPresented: is it presented or not + virtual void OnHDMIInEventStatus(dsHdmiInPort_t activePort, bool isPresented) { }; + + // @brief HDMI Video Mode update + // @text onHDMIInVideoModeUpdate + // @param port: port 0 or 1 et al + // @param videoPortResolution: Video port resolution + virtual void OnHDMIInVideoModeUpdate(dsHdmiInPort_t port, const dsVideoPortResolution_t& videoPortResolution) { }; + + // @brief HDMI ALLM (Auto Low Latency Mode) status + // @text onHDMIInAllmStatus + // @param port: port 0 or 1 et al + // @param allmStatus: allm status + virtual void OnHDMIInAllmStatus(dsHdmiInPort_t port, bool allmStatus) { }; + + // @brief HDMI Event AVI content type + // @text OnHDMIInAVIContentType + // @param port: port 0 or 1 et al + // @param aviContentType: AVI content type + virtual void OnHDMIInAVIContentType(dsHdmiInPort_t port, dsAviContentType_t aviContentType) { }; + + // @brief HDMI VRR status + // @text OnHDMIInVRRStatus + // @param port: port 0 or 1 et al + // @param vrrType: VRR type + virtual void OnHDMIInVRRStatus(dsHdmiInPort_t port, dsVRRType_t vrrType) { }; + + // @brief HDMI Event AV Latency + // @text OnHDMIInAVLatency + // @param audioDelay: audio delay (in millisecs) + // @param videoDelay: video delay (in millisecs) + virtual void OnHDMIInAVLatency(int audioDelay, int videoDelay) { }; + + }; + + // @brief Register a listener for HDMI device events + // @param listener: class object implementing the listener + dsError_t Register(IHDMIInEvents *listener); + + // @brief UnRegister a listener for HDMI device events + // @param listener: class object implementing the listener + dsError_t UnRegister(IHDMIInEvents *listener); + struct IVideoDeviceEvents { // @brief Display Frame rate Pre-change notification // @param frameRate: new framerate From c211fab9b1bbfdffa5aac6f4e7efe6ffa5694bb1 Mon Sep 17 00:00:00 2001 From: kkaliyaperumal Date: Thu, 28 Aug 2025 15:46:54 +0530 Subject: [PATCH 051/103] hdmi-in copilot comments --- ds/host.cpp | 2 +- ds/iarm/IarmHostImpl.cpp | 5 ++--- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/ds/host.cpp b/ds/host.cpp index 2e2c131e..c7c5e23b 100644 --- a/ds/host.cpp +++ b/ds/host.cpp @@ -781,7 +781,7 @@ dsError_t Host::Register(IHDMIInEvents *listener) dsError_t Host::UnRegister(IHDMIInEvents *listener) { - return impl().Register(listener); + return impl().UnRegister(listener); } dsError_t Host::Register(ICompositeInEvents *listener) diff --git a/ds/iarm/IarmHostImpl.cpp b/ds/iarm/IarmHostImpl.cpp index 58fab851..71d9c5c9 100755 --- a/ds/iarm/IarmHostImpl.cpp +++ b/ds/iarm/IarmHostImpl.cpp @@ -729,7 +729,7 @@ class IARMGroupHdmiIn { IARM_Bus_DSMgr_EventData_t* eventData = (IARM_Bus_DSMgr_EventData_t*)data; if (eventData) { - dsHdmiInPort_t port = eventData->data.hdmi_in_connect.port); + dsHdmiInPort_t port = eventData->data.hdmi_in_connect.port; bool isConnected = eventData->data.hdmi_in_connect.isPortConnected; IarmHostImpl::Dispatch([port, isConnected](IHDMIInEvents* listener) { @@ -796,7 +796,7 @@ class IARMGroupHdmiIn { if (eventData) { dsHdmiInPort_t port = eventData->data.hdmi_in_video_mode.port; - dsVideoPortResolution_t& res; + dsVideoPortResolution_t res; res.pixelResolution = eventData->data.hdmi_in_video_mode.resolution.pixelResolution; res.interlaced = eventData->data.hdmi_in_video_mode.resolution.interlaced; res.frameRate = eventData->data.hdmi_in_video_mode.resolution.frameRate; @@ -920,7 +920,6 @@ constexpr EventHandlerMapping IARMGroupDisplay::handlers[]; std::mutex IarmHostImpl::s_mutex; IarmHostImpl::CallbackList IarmHostImpl::s_hdmiInListeners; IarmHostImpl::CallbackList IarmHostImpl::s_videoDeviceListeners; -IarmHostImpl::CallbackList IarmHostImpl::s_videoDeviceListeners; IarmHostImpl::CallbackList IarmHostImpl::s_videoOutputPortListeners; IarmHostImpl::CallbackList IarmHostImpl::s_audioOutputPortListeners; IarmHostImpl::CallbackList IarmHostImpl::s_compositeListeners; From 1a674b01d01e44ca7a7e798c453fa43a1d91c8e8 Mon Sep 17 00:00:00 2001 From: kkaliyaperumal Date: Thu, 28 Aug 2025 16:03:27 +0530 Subject: [PATCH 052/103] hdmi-in copilot comments1 --- ds/iarm/IarmHostImpl.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ds/iarm/IarmHostImpl.cpp b/ds/iarm/IarmHostImpl.cpp index 71d9c5c9..2a886db9 100755 --- a/ds/iarm/IarmHostImpl.cpp +++ b/ds/iarm/IarmHostImpl.cpp @@ -801,7 +801,7 @@ class IARMGroupHdmiIn { res.interlaced = eventData->data.hdmi_in_video_mode.resolution.interlaced; res.frameRate = eventData->data.hdmi_in_video_mode.resolution.frameRate; - IarmHostImpl::Dispatch([port, &res](IHDMIInEvents* listener) { + IarmHostImpl::Dispatch([port, res](IHDMIInEvents* listener) { listener->OnHDMIInVideoModeUpdate(port, res); }); } else { From b333ec72ee103e5da112480f9cda91a2de0aa517 Mon Sep 17 00:00:00 2001 From: kkaliyaperumal Date: Thu, 28 Aug 2025 16:07:14 +0530 Subject: [PATCH 053/103] to trigger nav build to user branch --- .github/workflows/native_full_build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/native_full_build.yml b/.github/workflows/native_full_build.yml index 0c481434..013ec98d 100644 --- a/.github/workflows/native_full_build.yml +++ b/.github/workflows/native_full_build.yml @@ -4,7 +4,7 @@ on: push: branches: [ main, 'sprint/**', 'release/**', develop ] pull_request: - branches: [ main, 'sprint/**', 'release/**', topic/RDK*, develop ] + branches: [ main, 'sprint/**', 'release/**', topic/RDK*, develop, feature/RDK* ] jobs: build-devicesettings-on-pr: From 69339a4ddf1fd3367e38a0363e8d1ea4635aeb98 Mon Sep 17 00:00:00 2001 From: Shrinivas Kamath Date: Thu, 28 Aug 2025 16:12:26 +0530 Subject: [PATCH 054/103] temporarily enable native builds for feature branches --- .github/workflows/native_full_build.yml | 4 ++-- build_dependencies.sh | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/native_full_build.yml b/.github/workflows/native_full_build.yml index 0c481434..918194bd 100644 --- a/.github/workflows/native_full_build.yml +++ b/.github/workflows/native_full_build.yml @@ -4,7 +4,7 @@ on: push: branches: [ main, 'sprint/**', 'release/**', develop ] pull_request: - branches: [ main, 'sprint/**', 'release/**', topic/RDK*, develop ] + branches: [ main, 'sprint/**', 'release/**', topic/RDK*, topic/RDK*, develop ] jobs: build-devicesettings-on-pr: @@ -23,4 +23,4 @@ jobs: sh -e cov_build.sh env: GITHUB_TOKEN: ${{ secrets.RDKCM_RDKE }} - RDK_PLATFORM_SOC: broadcom \ No newline at end of file + RDK_PLATFORM_SOC: broadcom diff --git a/build_dependencies.sh b/build_dependencies.sh index 090f105a..566fca25 100644 --- a/build_dependencies.sh +++ b/build_dependencies.sh @@ -47,7 +47,7 @@ cd rfc autoreconf -i ./configure --enable-rfctool=yes --enable-tr181set=yes cd rfcapi -make librfcapi_la_CPPFLAGS="-I/usr/include/cjson" +make CXXFLAGS="-DUSE_IARMBUS" librfcapi_la_CPPFLAGS="-I/usr/include/cjson" make install export RFC_PATH=$ROOT/rfc From 66031944ab3570b322f7610889a6394da0e68278 Mon Sep 17 00:00:00 2001 From: Shrinivas Kamath Date: Thu, 28 Aug 2025 13:38:31 +0530 Subject: [PATCH 055/103] resolve all compiler warnings -Wall -Wextra -Wpedantic -Wconversion -Wshadow -Wnull-dereference -Wold-style-cast -Woverloaded-virtual -Wnon-virtual-dtor -Wsign-conversion -Wunused -Wdouble-promotion -Wformat=2 -Wcast-qual -Wcast-align -Wuseless-cast -Wlogical-op -Wmissing-include-dirs -Wredundant-decls -Wundef -Wodr -Wduplicated-cond -Wduplicated-branches --- ds/host.cpp | 105 +++++++++++++++++++++- ds/iarm/IarmHostImpl.cpp | 186 +++++++++++++++++++++------------------ ds/include/host.hpp | 116 ++++++++++++------------ 3 files changed, 266 insertions(+), 141 deletions(-) diff --git a/ds/host.cpp b/ds/host.cpp index c7c5e23b..9eb97043 100644 --- a/ds/host.cpp +++ b/ds/host.cpp @@ -774,6 +774,109 @@ DefaultImpl& Host::impl() return *m_impl; } +/* virtual */ void Host::IVideoDeviceEvents::OnDisplayFrameratePreChange(const std::string& frameRate) +{ + // If client needs to handle this event, they should override this method + INT_WARN("Base impl of OnDisplayFrameratePreChange called. frameRate: %s", frameRate.c_str()); +} + +/* virtual */ void Host::IVideoDeviceEvents::OnDisplayFrameratePostChange(const std::string& frameRate) +{ + // If client needs to handle this event, they should override this method + INT_WARN("Base impl of OnDisplayFrameratePostChange called. frameRate: %s", frameRate.c_str()); +} + +/* virtual */ void Host::IVideoDeviceEvents::OnZoomSettingsChanged(dsVideoZoom_t zoomSetting) +{ + // If client needs to handle this event, they should override this method + INT_WARN("Base impl of OnZoomSettingsChanged called. zoomSetting: %d", zoomSetting); +} + +/* virtual */ void Host::IVideoOutputPortEvents::OnResolutionPreChange(int width, int height) +{ + // If client needs to handle this event, they should override this method + INT_WARN("Base impl of OnResolutionPreChange called. width: %d, height: %d", width, height); +} + +/* virtual */ void Host::IVideoOutputPortEvents::OnResolutionPostChange(int width, int height) +{ + // If client needs to handle this event, they should override this method + INT_WARN("Base impl of OnResolutionPostChange called. width: %d, height: %d", width, height); +} + +/* virtual */ void Host::IVideoOutputPortEvents::OnHDCPStatusChange(dsHdcpStatus_t hdcpStatus) +{ + // If client needs to handle this event, they should override this method + INT_WARN("Base impl of OnHDCPStatusChange called. hdcpStatus: %d", hdcpStatus); +} + +/* virtual */ void Host::IVideoOutputPortEvents::OnVideoFormatUpdate(dsHDRStandard_t videoFormatHDR) +{ + // If client needs to handle this event, they should override this method + INT_WARN("Base impl of OnVideoFormatUpdate called. videoFormatHDR: %d", videoFormatHDR); +} + +/* virtual */ void Host::IAudioOutputPortEvents::OnAssociatedAudioMixingChanged(bool mixing) +{ + // If client needs to handle this event, they should override this method + INT_WARN("Base impl of OnAssociatedAudioMixingChanged called. mixing: %d", mixing); +} +/* virtual */ void Host::IAudioOutputPortEvents::OnAudioFaderControlChanged(int mixerBalance) +{ + // If client needs to handle this event, they should override this method + INT_WARN("Base impl of OnAudioFaderControlChanged called. mixerBalance: %d", mixerBalance); +} +/* virtual */ void Host::IAudioOutputPortEvents::OnAudioPrimaryLanguageChanged(const std::string& primaryLanguage) +{ + // If client needs to handle this event, they should override this method + INT_WARN("Base impl of OnAudioPrimaryLanguageChanged called. primaryLanguage: %s", primaryLanguage.c_str()); +} + +/* virtual */ void Host::IAudioOutputPortEvents::OnAudioSecondaryLanguageChanged(const std::string& secondaryLanguage) +{ + // If client needs to handle this event, they should override this method + INT_WARN("Base impl of OnAudioSecondaryLanguageChanged called. secondaryLanguage: %s", secondaryLanguage.c_str()); +} + +/* virtual */ void Host::IAudioOutputPortEvents::OnAudioOutHotPlug(dsAudioPortType_t portType, uint32_t uiPortNumber, bool isPortConnected) +{ + // If client needs to handle this event, they should override this method + INT_WARN("Base impl of OnAudioOutHotPlug called. portType: %d, uiPortNumber: %d, isPortConnected: %d", portType, uiPortNumber, isPortConnected); +} + +/* virtual */ void Host::IAudioOutputPortEvents::OnDolbyAtmosCapabilitiesChanged(dsATMOSCapability_t atmosCapability, bool status) +{ + // If client needs to handle this event, they should override this method + INT_WARN("Base impl of OnDolbyAtmosCapabilitiesChanged called. atmosCapability: %d, status: %d", atmosCapability, status); +} + +// TODO: requires dsMgr.h header include ?? +// void Host::IAudioOutputPortEvents::OnAudioPortStateChanged(dsAudioPortState_t audioPortState) { } + +/* virtual */ void Host::IAudioOutputPortEvents::OnAudioModeEvent(dsAudioPortType_t audioPortType, dsAudioStereoMode_t audioStereoMode) +{ + // If client needs to handle this event, they should override this method + INT_WARN("Base impl of OnAudioModeEvent called. audioPortType: %d, audioStereoMode: %d", audioPortType, audioStereoMode); +} + +/* virtual */ void Host::IAudioOutputPortEvents::OnAudioLevelChangedEvent(int audioLevel) +{ + // If client needs to handle this event, they should override this method + INT_WARN("Base impl of OnAudioLevelChangedEvent called. audioLevel: %d", audioLevel); +} + +/* virtual */ void Host::IAudioOutputPortEvents::OnAudioFormatUpdate(dsAudioFormat_t audioFormat) +{ + // If client needs to handle this event, they should override this method + INT_WARN("Base impl of OnAudioFormatUpdate called. audioFormat: %d", audioFormat); +} + +/* virtual */ void Host::IDisplayDeviceEvents::OnDisplayHDMIHotPlug(dsDisplayEvent_t displayEvent) +{ + // If client needs to handle this event, they should override this method + INT_WARN("Base impl of OnDisplayHDMIHotPlug called. displayEvent: %d", displayEvent); +} + dsError_t Host::Register(IHDMIInEvents *listener) { return impl().Register(listener); @@ -783,7 +886,7 @@ dsError_t Host::UnRegister(IHDMIInEvents *listener) { return impl().UnRegister(listener); } - + dsError_t Host::Register(ICompositeInEvents *listener) { return impl().Register(listener); diff --git a/ds/iarm/IarmHostImpl.cpp b/ds/iarm/IarmHostImpl.cpp index 2a886db9..ccb3daa6 100755 --- a/ds/iarm/IarmHostImpl.cpp +++ b/ds/iarm/IarmHostImpl.cpp @@ -1,7 +1,7 @@ #include +#include #include #include -#include #include "IarmHostImpl.hpp" @@ -82,7 +82,7 @@ class IARMGroupVideoDevice { } private: - static void iarmDisplayFrameratePreChangeHandler(const char* owner, IARM_EventId_t eventId, void* data, size_t len) + static void iarmDisplayFrameratePreChangeHandler(const char* owner, IARM_EventId_t eventId, void* data, size_t) { INT_INFO("IARM_BUS_DSMGR_EVENT_DISPLAY_FRAMRATE_PRECHANGE received owner = %s, eventId = %d", owner, eventId); @@ -90,7 +90,7 @@ class IARMGroupVideoDevice { return; } - IARM_Bus_DSMgr_EventData_t* eventData = (IARM_Bus_DSMgr_EventData_t*)data; + auto* eventData = static_cast(data); if (eventData) { std::string framerate(eventData->data.DisplayFrameRateChange.framerate); @@ -103,7 +103,7 @@ class IARMGroupVideoDevice { } } - static void iarmDisplayFrameratePostChangeHandler(const char* owner, IARM_EventId_t eventId, void* data, size_t len) + static void iarmDisplayFrameratePostChangeHandler(const char* owner, IARM_EventId_t eventId, void* data, size_t) { INT_INFO("IARM_BUS_DSMGR_EVENT_DISPLAY_FRAMRATE_POSTCHANGE received owner = %s, eventId = %d", owner, eventId); @@ -111,7 +111,7 @@ class IARMGroupVideoDevice { return; } - IARM_Bus_DSMgr_EventData_t* eventData = (IARM_Bus_DSMgr_EventData_t*)data; + auto* eventData = static_cast(data); if (eventData) { std::string framerate(eventData->data.DisplayFrameRateChange.framerate); @@ -124,7 +124,7 @@ class IARMGroupVideoDevice { } } - static void iarmZoomSettingsChangedHandler(const char* owner, IARM_EventId_t eventId, void* data, size_t len) + static void iarmZoomSettingsChangedHandler(const char* owner, IARM_EventId_t eventId, void* data, size_t) { INT_INFO("IARM_BUS_DSMGR_EVENT_ZOOM_SETTINGS received owner = %s, eventId = %d", owner, eventId); @@ -132,7 +132,7 @@ class IARMGroupVideoDevice { return; } - IARM_Bus_DSMgr_EventData_t* eventData = (IARM_Bus_DSMgr_EventData_t*)data; + auto* eventData = static_cast(data); if (eventData) { dsVideoZoom_t zoomSetting = static_cast(eventData->data.dfc.zoomsettings); @@ -165,7 +165,7 @@ class IARMGroupVideoOutputPort { } private: - static void iarmResolutionPreChangeHandler(const char* owner, IARM_EventId_t eventId, void* data, size_t len) + static void iarmResolutionPreChangeHandler(const char* owner, IARM_EventId_t eventId, void* data, size_t) { INT_INFO("IARM_BUS_DSMGR_EVENT_RES_PRECHANGE received owner = %s, eventId = %d", owner, eventId); @@ -173,7 +173,7 @@ class IARMGroupVideoOutputPort { return; } - IARM_Bus_DSMgr_EventData_t* eventData = (IARM_Bus_DSMgr_EventData_t*)data; + auto* eventData = static_cast(data); if (eventData) { int width = eventData->data.resn.width; @@ -187,7 +187,7 @@ class IARMGroupVideoOutputPort { } } - static void iarmResolutionPostChangeHandler(const char* owner, IARM_EventId_t eventId, void* data, size_t len) + static void iarmResolutionPostChangeHandler(const char* owner, IARM_EventId_t eventId, void* data, size_t) { INT_INFO("IARM_BUS_DSMGR_EVENT_RES_POSTCHANGE received owner = %s, eventId = %d", owner, eventId); @@ -195,7 +195,7 @@ class IARMGroupVideoOutputPort { return; } - IARM_Bus_DSMgr_EventData_t* eventData = (IARM_Bus_DSMgr_EventData_t*)data; + auto* eventData = static_cast(data); if (eventData) { int width = eventData->data.resn.width; @@ -209,7 +209,7 @@ class IARMGroupVideoOutputPort { } } - static void iarmHDCPStatusChangeHandler(const char* owner, IARM_EventId_t eventId, void* data, size_t len) + static void iarmHDCPStatusChangeHandler(const char* owner, IARM_EventId_t eventId, void* data, size_t) { INT_INFO("IARM_BUS_DSMGR_EVENT_HDCP_STATUS received owner = %s, eventId = %d", owner, eventId); @@ -217,7 +217,7 @@ class IARMGroupVideoOutputPort { return; } - IARM_Bus_DSMgr_EventData_t* eventData = (IARM_Bus_DSMgr_EventData_t*)data; + auto* eventData = static_cast(data); if (eventData) { dsHdcpStatus_t hdcpStatus = static_cast(eventData->data.hdmi_hdcp.hdcpStatus); @@ -229,7 +229,7 @@ class IARMGroupVideoOutputPort { } } - static void iarmVideoFormatUpdateHandler(const char* owner, IARM_EventId_t eventId, void* data, size_t len) + static void iarmVideoFormatUpdateHandler(const char* owner, IARM_EventId_t eventId, void* data, size_t) { INT_INFO("IARM_BUS_DSMGR_EVENT_VIDEO_FORMAT_UPDATE received owner = %s, eventId = %d", owner, eventId); @@ -237,7 +237,7 @@ class IARMGroupVideoOutputPort { return; } - IARM_Bus_DSMgr_EventData_t* eventData = (IARM_Bus_DSMgr_EventData_t*)data; + auto* eventData = static_cast(data); if (eventData) { dsHDRStandard_t videoFormat = eventData->data.VideoFormatInfo.videoFormat; @@ -271,7 +271,7 @@ class IARMGroupAudioOutputPort { } private: - static void iarmAssociatedAudioMixingChangedHandler(const char* owner, IARM_EventId_t eventId, void* data, size_t len) + static void iarmAssociatedAudioMixingChangedHandler(const char* owner, IARM_EventId_t eventId, void* data, size_t) { INT_INFO("IARM_BUS_DSMGR_EVENT_AUDIO_ASSOCIATED_AUDIO_MIXING_CHANGED received owner = %s, eventId = %d", owner, eventId); @@ -279,7 +279,7 @@ class IARMGroupAudioOutputPort { return; } - IARM_Bus_DSMgr_EventData_t* eventData = (IARM_Bus_DSMgr_EventData_t*)data; + auto* eventData = static_cast(data); if (eventData) { bool mixing = eventData->data.AssociatedAudioMixingInfo.mixing; @@ -292,7 +292,7 @@ class IARMGroupAudioOutputPort { } }; - static void iarmAudioFaderControlChangedHandler(const char* owner, IARM_EventId_t eventId, void* data, size_t len) + static void iarmAudioFaderControlChangedHandler(const char* owner, IARM_EventId_t eventId, void* data, size_t) { INT_INFO("IARM_BUS_DSMGR_EVENT_AUDIO_FADER_CONTROL_CHANGED received owner = %s, eventId = %d", owner, eventId); @@ -300,7 +300,7 @@ class IARMGroupAudioOutputPort { return; } - IARM_Bus_DSMgr_EventData_t* eventData = (IARM_Bus_DSMgr_EventData_t*)data; + auto* eventData = static_cast(data); if (eventData) { int mixerBalance = eventData->data.FaderControlInfo.mixerbalance; @@ -313,7 +313,7 @@ class IARMGroupAudioOutputPort { } }; - static void iarmAudioPrimaryLanguageChangedHandler(const char* owner, IARM_EventId_t eventId, void* data, size_t len) + static void iarmAudioPrimaryLanguageChangedHandler(const char* owner, IARM_EventId_t eventId, void* data, size_t) { INT_INFO("IARM_BUS_DSMGR_EVENT_AUDIO_PRIMARY_LANGUAGE_CHANGED received owner = %s, eventId = %d", owner, eventId); @@ -321,7 +321,7 @@ class IARMGroupAudioOutputPort { return; } - IARM_Bus_DSMgr_EventData_t* eventData = (IARM_Bus_DSMgr_EventData_t*)data; + auto* eventData = static_cast(data); if (eventData) { std::string primaryLanguage(eventData->data.AudioLanguageInfo.audioLanguage); @@ -334,7 +334,7 @@ class IARMGroupAudioOutputPort { } }; - static void iarmAudioSecondaryLanguageChangedHandler(const char* owner, IARM_EventId_t eventId, void* data, size_t len) + static void iarmAudioSecondaryLanguageChangedHandler(const char* owner, IARM_EventId_t eventId, void* data, size_t) { INT_INFO("IARM_BUS_DSMGR_EVENT_AUDIO_SECONDARY_LANGUAGE_CHANGED received owner = %s, eventId = %d", owner, eventId); @@ -342,7 +342,7 @@ class IARMGroupAudioOutputPort { return; } - IARM_Bus_DSMgr_EventData_t* eventData = (IARM_Bus_DSMgr_EventData_t*)data; + auto* eventData = static_cast(data); if (eventData) { std::string secondaryLanguage(eventData->data.AudioLanguageInfo.audioLanguage); @@ -355,7 +355,7 @@ class IARMGroupAudioOutputPort { } }; - static void iarmAudioOutHotPlugHandler(const char* owner, IARM_EventId_t eventId, void* data, size_t len) + static void iarmAudioOutHotPlugHandler(const char* owner, IARM_EventId_t eventId, void* data, size_t) { INT_INFO("IARM_BUS_DSMGR_EVENT_AUDIO_OUT_HOTPLUG received owner = %s, eventId = %d", owner, eventId); @@ -363,10 +363,11 @@ class IARMGroupAudioOutputPort { return; } - IARM_Bus_DSMgr_EventData_t* eventData = (IARM_Bus_DSMgr_EventData_t*)data; + auto* eventData = static_cast(data); + if (eventData) { dsAudioPortType_t portType = eventData->data.audio_out_connect.portType; - int uiPortNumber = eventData->data.audio_out_connect.uiPortNo; + uint32_t uiPortNumber = eventData->data.audio_out_connect.uiPortNo; bool isPortConnected = eventData->data.audio_out_connect.isPortConnected; IarmHostImpl::Dispatch([portType, uiPortNumber, isPortConnected](IAudioOutputPortEvents* listener) { @@ -377,7 +378,7 @@ class IARMGroupAudioOutputPort { } }; - static void iarmDolbyAtmosCapabilitiesChangedHandler(const char* owner, IARM_EventId_t eventId, void* data, size_t len) + static void iarmDolbyAtmosCapabilitiesChangedHandler(const char* owner, IARM_EventId_t eventId, void* data, size_t) { INT_INFO("IARM_BUS_DSMGR_EVENT_ATMOS_CAPS_CHANGED received owner = %s, eventId = %d", owner, eventId); @@ -385,7 +386,8 @@ class IARMGroupAudioOutputPort { return; } - IARM_Bus_DSMgr_EventData_t* eventData = (IARM_Bus_DSMgr_EventData_t*)data; + auto* eventData = static_cast(data); + if (eventData) { dsATMOSCapability_t atmosCapability = eventData->data.AtmosCapsChange.caps; bool status = eventData->data.AtmosCapsChange.status; @@ -400,7 +402,7 @@ class IARMGroupAudioOutputPort { }; // TODO: requires dsMgr.h header for dsAudioPortState_t ? - static void iarmAudioPortStateChangedHandler(const char* owner, IARM_EventId_t eventId, void* data, size_t len) + static void iarmAudioPortStateChangedHandler(const char* owner, IARM_EventId_t eventId, void* data, size_t) { INT_INFO("IARM_BUS_DSMGR_EVENT_AUDIO_PORT_STATE received owner = %s, eventId = %d", owner, eventId); @@ -408,7 +410,7 @@ class IARMGroupAudioOutputPort { return; } - IARM_Bus_DSMgr_EventData_t* eventData = (IARM_Bus_DSMgr_EventData_t*)data; + auto* eventData = static_cast(data); if (eventData) { dsAudioPortState_t audioPortState = eventData->data.AudioPortStateInfo.audioPortState; @@ -422,7 +424,7 @@ class IARMGroupAudioOutputPort { } }; - static void iarmAudioModeEventHandler(const char* owner, IARM_EventId_t eventId, void* data, size_t len) + static void iarmAudioModeEventHandler(const char* owner, IARM_EventId_t eventId, void* data, size_t) { INT_INFO("IARM_BUS_DSMGR_EVENT_AUDIO_MODE received owner = %s, eventId = %d", owner, eventId); @@ -430,7 +432,7 @@ class IARMGroupAudioOutputPort { return; } - IARM_Bus_DSMgr_EventData_t* eventData = (IARM_Bus_DSMgr_EventData_t*)data; + auto* eventData = static_cast(data); if (eventData) { dsAudioPortType_t audioPortType = static_cast(eventData->data.Audioport.type); @@ -444,7 +446,7 @@ class IARMGroupAudioOutputPort { } }; - static void iarmAudioLevelChangedEventHandler(const char* owner, IARM_EventId_t eventId, void* data, size_t len) + static void iarmAudioLevelChangedEventHandler(const char* owner, IARM_EventId_t eventId, void* data, size_t) { INT_INFO("IARM_BUS_DSMGR_EVENT_AUDIO_LEVEL_CHANGED received owner = %s, eventId = %d", owner, eventId); @@ -452,7 +454,7 @@ class IARMGroupAudioOutputPort { return; } - IARM_Bus_DSMgr_EventData_t* eventData = (IARM_Bus_DSMgr_EventData_t*)data; + auto* eventData = static_cast(data); if (eventData) { int audioLevel = eventData->data.AudioLevelInfo.level; @@ -465,7 +467,7 @@ class IARMGroupAudioOutputPort { } }; - static void iarmAudioFormatUpdateHandler(const char* owner, IARM_EventId_t eventId, void* data, size_t len) + static void iarmAudioFormatUpdateHandler(const char* owner, IARM_EventId_t eventId, void* data, size_t) { INT_INFO("IARM_BUS_DSMGR_EVENT_AUDIO_FORMAT_UPDATE received owner = %s, eventId = %d", owner, eventId); @@ -473,7 +475,7 @@ class IARMGroupAudioOutputPort { return; } - IARM_Bus_DSMgr_EventData_t* eventData = (IARM_Bus_DSMgr_EventData_t*)data; + auto* eventData = static_cast(data); if (eventData) { dsAudioFormat_t audioFormat = eventData->data.AudioFormatInfo.audioFormat; @@ -514,97 +516,105 @@ class IARMGroupComposite { } private: - static void iarmCompositeInHotPlugHandler(const char* owner, IARM_EventId_t eventId, void* data, size_t len) - { + static void iarmCompositeInHotPlugHandler(const char* owner, IARM_EventId_t eventId, void* data, size_t) + { INT_INFO("IARM_BUS_DSMGR_EVENT_COMPOSITE_IN_HOTPLUG received owner = %s, eventId = %d", owner, eventId); if (!isValidOwner(owner)) { return; } - IARM_Bus_DSMgr_EventData_t* eventData = (IARM_Bus_DSMgr_EventData_t*)data; + auto* eventData = static_cast(data); if (eventData) { dsCompositeInPort_t compositePort = eventData->data.composite_in_connect.port; - bool isConnected = eventData->data.composite_in_connect.isPortConnected; + bool isConnected = eventData->data.composite_in_connect.isPortConnected; IarmHostImpl::Dispatch([compositePort, isConnected](ICompositeInEvents* listener) { - listener->OnCompositeInHotPlug(compositePort,isConnected); + listener->OnCompositeInHotPlug(compositePort, isConnected); }); } else { INT_ERROR("Invalid data received for Composite Status Handler in iarmCompositeInHotPlugHandler"); } } - static void iarmCompositeInSignalStatusHandler(const char* owner, IARM_EventId_t eventId, void* data, size_t len) + static void iarmCompositeInSignalStatusHandler(const char* owner, IARM_EventId_t eventId, void* data, size_t) { INT_INFO("IARM_BUS_DSMGR_EVENT_COMPOSITE_IN_SIGNAL_STATUS received owner = %s, eventId = %d", owner, eventId); if (!isValidOwner(owner)) { return; } - IARM_Bus_DSMgr_EventData_t* eventData = (IARM_Bus_DSMgr_EventData_t*)data; + + auto* eventData = static_cast(data); + if (eventData) { - dsCompositeInPort_t compositePort = eventData->data.composite_in_sig_status.port; + dsCompositeInPort_t compositePort = eventData->data.composite_in_sig_status.port; dsCompInSignalStatus_t compositeSigStatus = eventData->data.composite_in_sig_status.status; - IarmHostImpl::Dispatch([compositePort,compositeSigStatus](ICompositeInEvents* listener) { - listener->OnCompositeInSignalStatus(compositePort,compositeSigStatus); + + IarmHostImpl::Dispatch([compositePort, compositeSigStatus](ICompositeInEvents* listener) { + listener->OnCompositeInSignalStatus(compositePort, compositeSigStatus); }); } else { INT_ERROR("Invalid data received for Composite Status Handler in iarmCompositeInSignalStatusHandler"); } } - static void iarmCompositeInStatusHandler(const char* owner, IARM_EventId_t eventId, void* data, size_t len) + static void iarmCompositeInStatusHandler(const char* owner, IARM_EventId_t eventId, void* data, size_t) { INT_INFO("IARM_BUS_DSMGR_EVENT_COMPOSITE_IN_STATUS received owner = %s, eventId = %d", owner, eventId); if (!isValidOwner(owner)) { return; } - IARM_Bus_DSMgr_EventData_t* eventData = (IARM_Bus_DSMgr_EventData_t*)data; + + auto* eventData = static_cast(data); + if (eventData) { dsCompositeInPort_t compositePort = eventData->data.composite_in_status.port; - bool isPresented = eventData->data.composite_in_status.isPresented; - IarmHostImpl::Dispatch([compositePort,isPresented](ICompositeInEvents* listener) { - listener->OnCompositeInStatus(compositePort,isPresented); + bool isPresented = eventData->data.composite_in_status.isPresented; + IarmHostImpl::Dispatch([compositePort, isPresented](ICompositeInEvents* listener) { + listener->OnCompositeInStatus(compositePort, isPresented); }); } else { INT_ERROR("Invalid data received for Composite Status Handler in iarmCompositeInStatusHandler"); } } - - static void iarmCompositeInVideoModeUpdateHandler(const char* owner, IARM_EventId_t eventId, void* data, size_t len) + static void iarmCompositeInVideoModeUpdateHandler(const char* owner, IARM_EventId_t eventId, void* data, size_t) { INT_INFO("IARM_BUS_DSMGR_EVENT_COMPOSITE_IN_VIDEO_MODE_UPDATE received owner = %s, eventId = %d", owner, eventId); if (!isValidOwner(owner)) { return; } - IARM_Bus_DSMgr_EventData_t* eventData = (IARM_Bus_DSMgr_EventData_t*)data; + + auto* eventData = static_cast(data); + if (eventData) { dsCompositeInPort_t compositePort = eventData->data.composite_in_video_mode.port; - dsVideoPortResolution_t videoResolution{}; - memset(videoResolution.name, 0, sizeof(videoResolution.name)); - videoResolution.pixelResolution = eventData->data.composite_in_video_mode.resolution.pixelResolution; - videoResolution.interlaced = eventData->data.composite_in_video_mode.resolution.interlaced; - videoResolution.frameRate = eventData->data.composite_in_video_mode.resolution.frameRate; - IarmHostImpl::Dispatch([compositePort,videoResolution](ICompositeInEvents* listener) { - listener->OnCompositeInVideoModeUpdate(compositePort,videoResolution); + + dsVideoPortResolution_t videoResolution {}; + memset(videoResolution.name, 0, sizeof(videoResolution.name)); + + videoResolution.pixelResolution = eventData->data.composite_in_video_mode.resolution.pixelResolution; + videoResolution.interlaced = eventData->data.composite_in_video_mode.resolution.interlaced; + videoResolution.frameRate = eventData->data.composite_in_video_mode.resolution.frameRate; + + IarmHostImpl::Dispatch([compositePort, videoResolution](ICompositeInEvents* listener) { + listener->OnCompositeInVideoModeUpdate(compositePort, videoResolution); }); } else { INT_ERROR("Invalid data received for Composite Video Mode Update in iarmCompositeInVideoModeUpdateHandler"); } - } + } private: static constexpr EventHandlerMapping handlers[] = { - { IARM_BUS_DSMGR_EVENT_COMPOSITE_IN_HOTPLUG, &IARMGroupComposite::iarmCompositeInHotPlugHandler }, - { IARM_BUS_DSMGR_EVENT_COMPOSITE_IN_SIGNAL_STATUS, &IARMGroupComposite::iarmCompositeInSignalStatusHandler }, - { IARM_BUS_DSMGR_EVENT_COMPOSITE_IN_STATUS, &IARMGroupComposite::iarmCompositeInStatusHandler }, - { IARM_BUS_DSMGR_EVENT_COMPOSITE_IN_VIDEO_MODE_UPDATE, &IARMGroupComposite::iarmCompositeInVideoModeUpdateHandler }, + { IARM_BUS_DSMGR_EVENT_COMPOSITE_IN_HOTPLUG, &IARMGroupComposite::iarmCompositeInHotPlugHandler }, + { IARM_BUS_DSMGR_EVENT_COMPOSITE_IN_SIGNAL_STATUS, &IARMGroupComposite::iarmCompositeInSignalStatusHandler }, + { IARM_BUS_DSMGR_EVENT_COMPOSITE_IN_STATUS, &IARMGroupComposite::iarmCompositeInStatusHandler }, + { IARM_BUS_DSMGR_EVENT_COMPOSITE_IN_VIDEO_MODE_UPDATE, &IARMGroupComposite::iarmCompositeInVideoModeUpdateHandler }, }; }; - class IARMGroupDisplay { public: static bool RegisterIarmEvents() @@ -618,46 +628,50 @@ class IARMGroupDisplay { } private: - static void iarmDisplayDisplayRxSense(const char* owner, IARM_EventId_t eventId, void* data, size_t len) + static void iarmDisplayDisplayRxSense(const char* owner, IARM_EventId_t eventId, void* data, size_t) { INT_INFO("IARM_BUS_DSMGR_EVENT_RX_SENSE received owner = %s, eventId = %d", owner, eventId); if (!isValidOwner(owner)) { return; } - IARM_Bus_DSMgr_EventData_t* eventData = (IARM_Bus_DSMgr_EventData_t*)data; + + auto* eventData = static_cast(data); + if (eventData) { dsDisplayEvent_t displayStatusEvent = static_cast(eventData->data.hdmi_rxsense.status); IarmHostImpl::Dispatch([displayStatusEvent](IDisplayEvents* listener) { - listener->OnDisplayRxSense(displayStatusEvent); + listener->OnDisplayRxSense(displayStatusEvent); }); } else { INT_ERROR("Invalid data received for Composite Status Handler in iarmDisplayDisplayRxSense"); } } - static void iarmDisplayHDCPStatusChange(const char* owner, IARM_EventId_t eventId, void* data, size_t len) + static void iarmDisplayHDCPStatusChange(const char* owner, IARM_EventId_t eventId, void* data, size_t) { INT_INFO("IARM_BUS_DSMGR_EVENT_HDCP_STATUS received owner = %s, eventId = %d", owner, eventId); if (!isValidOwner(owner)) { return; } - IARM_Bus_DSMgr_EventData_t* eventData = (IARM_Bus_DSMgr_EventData_t*)data; + + auto* eventData = static_cast(data); + if (eventData) { dsHdcpStatus_t hdcpStatus = static_cast(eventData->data.hdmi_hdcp.hdcpStatus); IarmHostImpl::Dispatch([hdcpStatus](IDisplayEvents* listener) { /* To check Parameter Required or Not*/ - listener->OnDisplayHDCPStatus(); + listener->OnDisplayHDCPStatus(); }); } else { INT_ERROR("Invalid data received for Composite Video Mode Update in iarmDisplayHDCPStatusChange"); } - } + } private: static constexpr EventHandlerMapping handlers[] = { - { IARM_BUS_DSMGR_EVENT_RX_SENSE, &IARMGroupDisplay::iarmDisplayDisplayRxSense }, - { IARM_BUS_DSMGR_EVENT_HDCP_STATUS, &IARMGroupDisplay::iarmDisplayHDCPStatusChange }, + { IARM_BUS_DSMGR_EVENT_RX_SENSE, &IARMGroupDisplay::iarmDisplayDisplayRxSense }, + { IARM_BUS_DSMGR_EVENT_HDCP_STATUS, &IARMGroupDisplay::iarmDisplayHDCPStatusChange }, }; }; @@ -668,23 +682,23 @@ class IARMGroupDisplayDevice { IARM_Result_t result = IARM_Bus_RegisterEventHandler(IARM_BUS_DSMGR_NAME, IARM_BUS_DSMGR_EVENT_HDMI_HOTPLUG, &IARMGroupDisplayDevice::iarmDisplayHDMIHotPlugHandler); - if (result != IARM_RESULT_SUCCESS) { + if (IARM_RESULT_SUCCESS != result) { INT_ERROR("Failed to register IARM event handler for IARM_BUS_DSMGR_EVENT_HDMI_HOTPLUG"); } - return (result == IARM_RESULT_SUCCESS); + return (IARM_RESULT_SUCCESS == result); } static bool UnRegisterIarmEvents() { IARM_Result_t result = IARM_Bus_UnRegisterEventHandler(IARM_BUS_DSMGR_NAME, IARM_BUS_DSMGR_EVENT_HDMI_HOTPLUG); - if (result != IARM_RESULT_SUCCESS) { + if (IARM_RESULT_SUCCESS != result) { INT_ERROR("Failed to unregister IARM event handler for IARM_BUS_DSMGR_EVENT_HDMI_HOTPLUG"); } - return (result == IARM_RESULT_SUCCESS); + return (IARM_RESULT_SUCCESS == result); } private: - static void iarmDisplayHDMIHotPlugHandler(const char* owner, IARM_EventId_t eventId, void* data, size_t len) + static void iarmDisplayHDMIHotPlugHandler(const char* owner, IARM_EventId_t eventId, void* data, size_t) { INT_INFO("IARM_BUS_DSMGR_EVENT_HDMI_HOTPLUG received owner = %s, eventId = %d", owner, eventId); @@ -692,7 +706,7 @@ class IARMGroupDisplayDevice { return; } - IARM_Bus_DSMgr_EventData_t* eventData = (IARM_Bus_DSMgr_EventData_t*)data; + auto* eventData = static_cast(data); if (eventData) { dsDisplayEvent_t displayEvent = static_cast(eventData->data.hdmi_hpd.event); @@ -1030,13 +1044,13 @@ dsError_t IarmHostImpl::UnRegister(IAudioOutputPortEvents* listener) Dispatch(s_audioOutputPortListeners, std::move(fn)); } -dsError_t IarmHostImpl::Register(ICompositeInEvents* listener) +dsError_t IarmHostImpl::Register(ICompositeInEvents* listener) { std::lock_guard lock(s_mutex); return s_compositeListeners.Register(listener); } -dsError_t IarmHostImpl::UnRegister(ICompositeInEvents* listener) +dsError_t IarmHostImpl::UnRegister(ICompositeInEvents* listener) { std::lock_guard lock(s_mutex); return s_compositeListeners.UnRegister(listener); @@ -1048,13 +1062,13 @@ dsError_t IarmHostImpl::UnRegister(ICompositeInEvents* listener) Dispatch(s_compositeListeners, std::move(fn)); } -dsError_t IarmHostImpl::Register(IDisplayEvents* listener) +dsError_t IarmHostImpl::Register(IDisplayEvents* listener) { std::lock_guard lock(s_mutex); return s_displayListeners.Register(listener); } -dsError_t IarmHostImpl::UnRegister(IDisplayEvents* listener) +dsError_t IarmHostImpl::UnRegister(IDisplayEvents* listener) { std::lock_guard lock(s_mutex); return s_displayListeners.UnRegister(listener); diff --git a/ds/include/host.hpp b/ds/include/host.hpp index fea9d4ea..ae1fe8a0 100644 --- a/ds/include/host.hpp +++ b/ds/include/host.hpp @@ -122,62 +122,66 @@ class Host { dsError_t UnRegister(IHDMIInEvents *listener); struct ICompositeInEvents { - // @brief Composite In Hotplug event - // @text onCompositeInHotPlug - // @param port: Port of the hotplug - // @param isConnected: Is it connected (true) or not(false) - virtual void OnCompositeInHotPlug(dsCompositeInPort_t port, bool isConnected) { }; - - // @brief Composite In Signal status - // @text onCompositeInSignalStatus - // @param port: Port of the hotplug - // @param signalStatus: Signal status - virtual void OnCompositeInSignalStatus(dsCompositeInPort_t port, dsCompInSignalStatus_t signalStatus) { }; - - // @brief Composite In status - // @text onCompositeInStatus - // @param activePort: Active port - // @param isPresented: is it presented to user - virtual void OnCompositeInStatus(dsCompositeInPort_t activePort, bool isPresented) { }; - - - // @brief Composite In Video Mode Update - // @text OnCompositeInVideoModeUpdate - // @param activePort: Active port - // @param videoResolution: See DisplayVideoPortResolution - virtual void OnCompositeInVideoModeUpdate(dsCompositeInPort_t activePort, dsVideoPortResolution_t videoResolution) { }; + virtual ~ICompositeInEvents() = default; + // @brief Composite In Hotplug event + // @text onCompositeInHotPlug + // @param port: Port of the hotplug + // @param isConnected: Is it connected (true) or not(false) + virtual void OnCompositeInHotPlug(dsCompositeInPort_t port, bool isConnected) { }; + + // @brief Composite In Signal status + // @text onCompositeInSignalStatus + // @param port: Port of the hotplug + // @param signalStatus: Signal status + virtual void OnCompositeInSignalStatus(dsCompositeInPort_t port, dsCompInSignalStatus_t signalStatus) { }; + + // @brief Composite In status + // @text onCompositeInStatus + // @param activePort: Active port + // @param isPresented: is it presented to user + virtual void OnCompositeInStatus(dsCompositeInPort_t activePort, bool isPresented) { }; + + // @brief Composite In Video Mode Update + // @text OnCompositeInVideoModeUpdate + // @param activePort: Active port + // @param videoResolution: See DisplayVideoPortResolution + virtual void OnCompositeInVideoModeUpdate(dsCompositeInPort_t activePort, dsVideoPortResolution_t videoResolution) { }; }; - dsError_t Register(ICompositeInEvents *listener); - dsError_t UnRegister(ICompositeInEvents *listener); + dsError_t Register(ICompositeInEvents* listener); + dsError_t UnRegister(ICompositeInEvents* listener); - struct IDisplayEvents{ + struct IDisplayEvents { + virtual ~IDisplayEvents() = default; - // @brief Display RX Sense event - // @text onDisplayRxSense - // @param displayEvent: DS_DISPLAY_RXSENSE_ON or DS_DISPLAY_RXSENSE_OFF - virtual void OnDisplayRxSense(dsDisplayEvent_t displayEvent) { }; + // @brief Display RX Sense event + // @text onDisplayRxSense + // @param displayEvent: DS_DISPLAY_RXSENSE_ON or DS_DISPLAY_RXSENSE_OFF + virtual void OnDisplayRxSense(dsDisplayEvent_t displayEvent) { }; - // @brief Display HDCP Status - // @text OnDisplayHDCPStatus - virtual void OnDisplayHDCPStatus() { }; + // @brief Display HDCP Status + // @text OnDisplayHDCPStatus + virtual void OnDisplayHDCPStatus() { }; }; - dsError_t Register(IDisplayEvents *listener); - dsError_t UnRegister(IDisplayEvents *listener); + + dsError_t Register(IDisplayEvents* listener); + dsError_t UnRegister(IDisplayEvents* listener); struct IVideoDeviceEvents { + virtual ~IVideoDeviceEvents() = default; + // @brief Display Frame rate Pre-change notification // @param frameRate: new framerate - virtual void OnDisplayFrameratePreChange(const std::string& frameRate) { }; + virtual void OnDisplayFrameratePreChange(const std::string& frameRate); // @brief Display Frame rate Post-change notification // @param frameRate: new framerate - virtual void OnDisplayFrameratePostChange(const std::string& frameRate) { }; + virtual void OnDisplayFrameratePostChange(const std::string& frameRate); // @brief Zoom settings changed // @text OnZoomSettingsChanged // @param zoomSetting: Currently applied zoom setting - virtual void OnZoomSettingsChanged(dsVideoZoom_t zoomSetting) { }; + virtual void OnZoomSettingsChanged(dsVideoZoom_t zoomSetting); }; // @brief Register a listener for video device events @@ -189,24 +193,25 @@ class Host { dsError_t UnRegister(IVideoDeviceEvents* listener); struct IVideoOutputPortEvents { + virtual ~IVideoOutputPortEvents() = default; // @brief On Resolution Pre changed // @param width: width of the resolution // @param height: height of the resolution - virtual void OnResolutionPreChange(int width, int height) { }; + virtual void OnResolutionPreChange(int width, int height); // @brief On Resolution Post change // @param width: width of the resolution // @param height: height of the resolution - virtual void OnResolutionPostChange(int width, int height) { }; + virtual void OnResolutionPostChange(int width, int height); // @brief On HDCP Status change // @param hdcpStatus: HDCP Status - virtual void OnHDCPStatusChange(dsHdcpStatus_t hdcpStatus) { }; + virtual void OnHDCPStatusChange(dsHdcpStatus_t hdcpStatus); // @brief On Video Format update // @param videoFormatHDR: Video format HDR standard - virtual void OnVideoFormatUpdate(dsHDRStandard_t videoFormatHDR) { }; + virtual void OnVideoFormatUpdate(dsHDRStandard_t videoFormatHDR); }; // @brief Register a listener for video port events @@ -218,51 +223,52 @@ class Host { dsError_t UnRegister(IVideoOutputPortEvents* listener); struct IAudioOutputPortEvents { + virtual ~IAudioOutputPortEvents() = default; // @brief Associated Audio mixing changed // @param mixing: true or false - virtual void OnAssociatedAudioMixingChanged(bool mixing) { }; + virtual void OnAssociatedAudioMixingChanged(bool mixing); // @brief Audio Fader balance changed // @param mixerBalance: applied mixer balance value - virtual void OnAudioFaderControlChanged(int mixerBalance) { }; + virtual void OnAudioFaderControlChanged(int mixerBalance); // @brief Primary language for Audio changed // @param primaryLanguage: current primary language for audio - virtual void OnAudioPrimaryLanguageChanged(const std::string& primaryLanguage) { }; + virtual void OnAudioPrimaryLanguageChanged(const std::string& primaryLanguage); // @brief Secondary language for Audio changed // @param secondaryLanguage: current secondary language for audio - virtual void OnAudioSecondaryLanguageChanged(const std::string& secondaryLanguage) { }; + virtual void OnAudioSecondaryLanguageChanged(const std::string& secondaryLanguage); // @brief Audio output hot plug event // @param portType: Type of audio port see AudioPortType // @param uiPortNumber: The port number assigned by UI // @param isPortConnected: true (connected) or false (not connected) - virtual void OnAudioOutHotPlug(dsAudioPortType_t portType, int uiPortNumber, bool isPortConnected) { }; + virtual void OnAudioOutHotPlug(dsAudioPortType_t portType, uint32_t uiPortNumber, bool isPortConnected); // @brief Dolby Atmos capabilities changed // @param atmosCapability: the Dolby Atmos capability // @param status: true (available) or false (not available) - virtual void OnDolbyAtmosCapabilitiesChanged(dsATMOSCapability_t atmosCapability, bool status) { }; + virtual void OnDolbyAtmosCapabilitiesChanged(dsATMOSCapability_t atmosCapability, bool status); // @brief Audio port state changed // @param audioPortState: audio port state // TODO: requires dsMgr.h header include ?? - // virtual void OnAudioPortStateChanged(dsAudioPortState_t audioPortState) { }; + // virtual void OnAudioPortStateChanged(dsAudioPortState_t audioPortState); // @brief Audio mode for the respective audio port - raised for every type of port // @param audioPortType: audio port type see dsAudioPortType_t // @param audioStereoMode: audio stereo mode - see dsAudioStereoMode_t - virtual void OnAudioModeEvent(dsAudioPortType_t audioPortType, dsAudioStereoMode_t audioStereoMode) { }; + virtual void OnAudioModeEvent(dsAudioPortType_t audioPortType, dsAudioStereoMode_t audioStereoMode); // @brief Audio level changed // @param audioiLevel: audio level value - virtual void OnAudioLevelChangedEvent(int audioLevel) { }; + virtual void OnAudioLevelChangedEvent(int audioLevel); // @brief Audio Output format changed // @param audioFormat: Type of audio format see AudioFormat - virtual void OnAudioFormatUpdate(dsAudioFormat_t audioFormat) { }; + virtual void OnAudioFormatUpdate(dsAudioFormat_t audioFormat); }; // @brief Register a listener for audio port events @@ -274,9 +280,11 @@ class Host { dsError_t UnRegister(IAudioOutputPortEvents* listener); struct IDisplayDeviceEvents { + virtual ~IDisplayDeviceEvents() = default; + // @brief Display HDMI (out) Hot plug event // @param displayEvent: display event type see dsDisplayEvent_t - virtual void OnDisplayHDMIHotPlug(dsDisplayEvent_t displayEvent) { }; + virtual void OnDisplayHDMIHotPlug(dsDisplayEvent_t displayEvent); }; // @brief Register a listener for display device events From 11019d053f622ef3c62fc78808370dd9b3e564c6 Mon Sep 17 00:00:00 2001 From: Shrinivas Kamath Date: Thu, 28 Aug 2025 16:46:40 +0530 Subject: [PATCH 056/103] minor indentation changes --- .gitignore | 1 + ds/iarm/IarmHostImpl.cpp | 31 ++++++++++++++++--------------- ds/iarm/IarmHostImpl.hpp | 8 ++++---- 3 files changed, 21 insertions(+), 19 deletions(-) diff --git a/.gitignore b/.gitignore index 5a667ebd..42473dff 100644 --- a/.gitignore +++ b/.gitignore @@ -49,5 +49,6 @@ sample/setZoomSettings sample/testFrontPanel .cache +.clang-format compile_commands.json .harper-dictionary.txt diff --git a/ds/iarm/IarmHostImpl.cpp b/ds/iarm/IarmHostImpl.cpp index ccb3daa6..c038f0f3 100755 --- a/ds/iarm/IarmHostImpl.cpp +++ b/ds/iarm/IarmHostImpl.cpp @@ -731,6 +731,7 @@ class IARMGroupHdmiIn { { return unregisterIarmEvents(handlers); } + private: static void iarmHDMIInEventHotPlugHandler(const char* owner, IARM_EventId_t eventId, void* data, size_t len) { @@ -744,7 +745,7 @@ class IARMGroupHdmiIn { if (eventData) { dsHdmiInPort_t port = eventData->data.hdmi_in_connect.port; - bool isConnected = eventData->data.hdmi_in_connect.isPortConnected; + bool isConnected = eventData->data.hdmi_in_connect.isPortConnected; IarmHostImpl::Dispatch([port, isConnected](IHDMIInEvents* listener) { listener->OnHDMIInEventHotPlug(port, isConnected); @@ -765,7 +766,7 @@ class IARMGroupHdmiIn { IARM_Bus_DSMgr_EventData_t* eventData = (IARM_Bus_DSMgr_EventData_t*)data; if (eventData) { - dsHdmiInPort_t port = eventData->data.hdmi_in_sig_status.port; + dsHdmiInPort_t port = eventData->data.hdmi_in_sig_status.port; dsHdmiInSignalStatus_t sigStatus = eventData->data.hdmi_in_sig_status.status; IarmHostImpl::Dispatch([port, sigStatus](IHDMIInEvents* listener) { @@ -788,7 +789,7 @@ class IARMGroupHdmiIn { if (eventData) { dsHdmiInPort_t activePort = eventData->data.hdmi_in_status.port; - bool isPresented = eventData->data.hdmi_in_status.isPresented; + bool isPresented = eventData->data.hdmi_in_status.isPresented; IarmHostImpl::Dispatch([activePort, isPresented](IHDMIInEvents* listener) { listener->OnHDMIInEventStatus(activePort, isPresented); @@ -812,8 +813,8 @@ class IARMGroupHdmiIn { dsHdmiInPort_t port = eventData->data.hdmi_in_video_mode.port; dsVideoPortResolution_t res; res.pixelResolution = eventData->data.hdmi_in_video_mode.resolution.pixelResolution; - res.interlaced = eventData->data.hdmi_in_video_mode.resolution.interlaced; - res.frameRate = eventData->data.hdmi_in_video_mode.resolution.frameRate; + res.interlaced = eventData->data.hdmi_in_video_mode.resolution.interlaced; + res.frameRate = eventData->data.hdmi_in_video_mode.resolution.frameRate; IarmHostImpl::Dispatch([port, res](IHDMIInEvents* listener) { listener->OnHDMIInVideoModeUpdate(port, res); @@ -834,7 +835,7 @@ class IARMGroupHdmiIn { IARM_Bus_DSMgr_EventData_t* eventData = (IARM_Bus_DSMgr_EventData_t*)data; if (eventData) { dsHdmiInPort_t port = eventData->data.hdmi_in_allm_mode.port; - bool allmStatus = eventData->data.hdmi_in_allm_mode.allm_mode; + bool allmStatus = eventData->data.hdmi_in_allm_mode.allm_mode; IarmHostImpl::Dispatch([port, allmStatus](IHDMIInEvents* listener) { listener->OnHDMIInAllmStatus(port, allmStatus); @@ -877,7 +878,7 @@ class IARMGroupHdmiIn { IARM_Bus_DSMgr_EventData_t* eventData = (IARM_Bus_DSMgr_EventData_t*)data; if (eventData) { - dsHdmiInPort_t port = eventData->data.hdmi_in_content_type.port; + dsHdmiInPort_t port = eventData->data.hdmi_in_content_type.port; dsAviContentType_t type = eventData->data.hdmi_in_content_type.aviContentType; IarmHostImpl::Dispatch([port, type](IHDMIInEvents* listener) { @@ -912,14 +913,14 @@ class IARMGroupHdmiIn { private: static constexpr EventHandlerMapping handlers[] = { - { IARM_BUS_DSMGR_EVENT_HDMI_IN_HOTPLUG, &IARMGroupHdmiIn::iarmHDMIInEventHotPlugHandler }, - { IARM_BUS_DSMGR_EVENT_HDMI_IN_SIGNAL_STATUS, &IARMGroupHdmiIn::iarmHDMIInEventSignalStatusHandler }, - { IARM_BUS_DSMGR_EVENT_HDMI_IN_STATUS, &IARMGroupHdmiIn::iarmHDMIInEventStatusHandler }, - { IARM_BUS_DSMGR_EVENT_HDMI_IN_VIDEO_MODE_UPDATE, &IARMGroupHdmiIn::iarmHDMIInVideoModeUpdateHandler }, - { IARM_BUS_DSMGR_EVENT_HDMI_IN_ALLM_STATUS, &IARMGroupHdmiIn::iarmHDMIInAllmStatusHandler }, - { IARM_BUS_DSMGR_EVENT_HDMI_IN_VRR_STATUS, &IARMGroupHdmiIn::iarmHDMIInVRRStatusHandler }, - { IARM_BUS_DSMGR_EVENT_HDMI_IN_AVI_CONTENT_TYPE, &IARMGroupHdmiIn::iarmHDMIInAVIContentTypeHandler }, - { IARM_BUS_DSMGR_EVENT_HDMI_IN_AV_LATENCY, &IARMGroupHdmiIn::iarmHDMIInAVLatencyHandler } + { IARM_BUS_DSMGR_EVENT_HDMI_IN_HOTPLUG, &IARMGroupHdmiIn::iarmHDMIInEventHotPlugHandler }, + { IARM_BUS_DSMGR_EVENT_HDMI_IN_SIGNAL_STATUS, &IARMGroupHdmiIn::iarmHDMIInEventSignalStatusHandler }, + { IARM_BUS_DSMGR_EVENT_HDMI_IN_STATUS, &IARMGroupHdmiIn::iarmHDMIInEventStatusHandler }, + { IARM_BUS_DSMGR_EVENT_HDMI_IN_VIDEO_MODE_UPDATE, &IARMGroupHdmiIn::iarmHDMIInVideoModeUpdateHandler }, + { IARM_BUS_DSMGR_EVENT_HDMI_IN_ALLM_STATUS, &IARMGroupHdmiIn::iarmHDMIInAllmStatusHandler }, + { IARM_BUS_DSMGR_EVENT_HDMI_IN_VRR_STATUS, &IARMGroupHdmiIn::iarmHDMIInVRRStatusHandler }, + { IARM_BUS_DSMGR_EVENT_HDMI_IN_AVI_CONTENT_TYPE, &IARMGroupHdmiIn::iarmHDMIInAVIContentTypeHandler }, + { IARM_BUS_DSMGR_EVENT_HDMI_IN_AV_LATENCY, &IARMGroupHdmiIn::iarmHDMIInAVLatencyHandler } }; }; // IARMGroupHdmiIn diff --git a/ds/iarm/IarmHostImpl.hpp b/ds/iarm/IarmHostImpl.hpp index 4ac3e21b..5a906ae8 100755 --- a/ds/iarm/IarmHostImpl.hpp +++ b/ds/iarm/IarmHostImpl.hpp @@ -186,19 +186,19 @@ class IarmHostImpl { // @brief Register a listener for Composite events // @param listener: class object implementing the listener - dsError_t Register(ICompositeInEvents* listener); + dsError_t Register(ICompositeInEvents* listener); // @brief UnRegister a listener for Composite events // @param listener: class object implementing the listener - dsError_t UnRegister(ICompositeInEvents* listener); + dsError_t UnRegister(ICompositeInEvents* listener); // @brief Register a listener for Composite events // @param listener: class object implementing the listener - dsError_t Register(IDisplayEvents* listener); + dsError_t Register(IDisplayEvents* listener); // @brief UnRegister a listener for Composite events // @param listener: class object implementing the listener - dsError_t UnRegister(IDisplayEvents* listener); + dsError_t UnRegister(IDisplayEvents* listener); // @brief Register a listener for display device events // @param listener: class object implementing the listener From e32be6a60b13c4f5273de5e01ffb5fa8ce7fc523 Mon Sep 17 00:00:00 2001 From: Ramesh Babu H Date: Thu, 28 Aug 2025 18:17:31 +0530 Subject: [PATCH 057/103] topic/RDKEMW6161- Comments Update and Warning Fix --- ds/host.cpp | 38 +++++++++++++++++++++++-- ds/iarm/IarmHostImpl.cpp | 61 ++++++++++++++++++++++------------------ ds/include/host.hpp | 46 ++++++++++++++---------------- 3 files changed, 91 insertions(+), 54 deletions(-) diff --git a/ds/host.cpp b/ds/host.cpp index 9eb97043..94a79d56 100644 --- a/ds/host.cpp +++ b/ds/host.cpp @@ -767,7 +767,7 @@ Host::~Host() DefaultImpl& Host::impl() { - // lazy instantiation + /* lazy instantiation */ if (!m_impl) { m_impl = std::unique_ptr(new DefaultImpl()); } @@ -876,6 +876,40 @@ DefaultImpl& Host::impl() // If client needs to handle this event, they should override this method INT_WARN("Base impl of OnDisplayHDMIHotPlug called. displayEvent: %d", displayEvent); } +/* virtual */ void Host::ICompositeInEvents::OnCompositeInHotPlug(dsCompositeInPort_t port, bool isConnected) +{ + /* If client needs to handle this event, they should override this method */ + INT_WARN("Base impl of OnCompositeInHotPlug called. port: %d isConnected %d", port,isConnected); +} + +/* virtual */ void Host::ICompositeInEvents::OnCompositeInSignalStatus(dsCompositeInPort_t port, dsCompInSignalStatus_t signalStatus) +{ + /* If client needs to handle this event, they should override this method */ + INT_WARN("Base impl of OnCompositeInSignalStatus called. port: %d signalStatus %d", port,signalStatus); +} + +/* virtual */ void Host::ICompositeInEvents::OnCompositeInStatus(dsCompositeInPort_t activePort, bool isPresented) +{ + /* If client needs to handle this event, they should override this method */ + INT_WARN("Base impl of OnCompositeInStatus called. activePort: %d isPresented %d", activePort,isPresented); +} +/* virtual */ void Host::ICompositeInEvents::OnCompositeInVideoModeUpdate(dsCompositeInPort_t activePort, dsVideoPortResolution_t videoResolution) +{ + /* If client needs to handle this event, they should override this method */ + INT_WARN("Base impl of OnCompositeInVideoModeUpdate called. activePort: %d videoResolution %d", activePort,videoResolution.pixelResolution); +} + +/* virtual */ void Host::IDisplayEvents::OnDisplayRxSense(dsDisplayEvent_t displayEvent) +{ + /* If client needs to handle this event, they should override this method */ + INT_WARN("Base impl of OnDisplayRxSense called. displayEvent: %d ", displayEvent); +} +/* virtual */ void Host::IDisplayEvents::OnDisplayHDCPStatus() +{ + /* If client needs to handle this event, they should override this method */ + INT_WARN("Base impl of OnDisplayHDCPStatus called. "); +} + dsError_t Host::Register(IHDMIInEvents *listener) { @@ -947,7 +981,7 @@ dsError_t Host::UnRegister(IDisplayDeviceEvents* listener) { /** @} */ -} // namespace device +} /* namespace device */ /** @} */ /** @} */ diff --git a/ds/iarm/IarmHostImpl.cpp b/ds/iarm/IarmHostImpl.cpp index c038f0f3..e76f6924 100755 --- a/ds/iarm/IarmHostImpl.cpp +++ b/ds/iarm/IarmHostImpl.cpp @@ -17,8 +17,10 @@ struct EventHandlerMapping { IARM_EventHandler_t handler; }; -// unregisterIarmEvents can be called by registerIarmEvents in case of failure. -// Hence defined before registerIarmEvents +/* + * unregisterIarmEvents can be called by registerIarmEvents in case of failure. + * Hence defined before registerIarmEvents + */ template static bool unregisterIarmEvents(const EventHandlerMapping (&handlers)[N]) { @@ -28,7 +30,7 @@ static bool unregisterIarmEvents(const EventHandlerMapping (&handlers)[N]) if (IARM_RESULT_SUCCESS != IARM_Bus_UnRegisterEventHandler(IARM_BUS_DSMGR_NAME, eh.eventId)) { INT_ERROR("Failed to unregister IARM event handler for %d", eh.eventId); unregistered = false; - // don't break here, try to unregister all handlers + /* don't break here, try to unregister all handlers */ } } return unregistered; @@ -43,14 +45,16 @@ static bool registerIarmEvents(const EventHandlerMapping (&handlers)[N]) if (IARM_RESULT_SUCCESS != IARM_Bus_RegisterEventHandler(IARM_BUS_DSMGR_NAME, eh.eventId, eh.handler)) { INT_ERROR("Failed to register IARM event handler for %d", eh.eventId); registered = false; - // no point in continuing as we will attempt to unregister anyway + /* no point in continuing as we will attempt to unregister anyway */ break; } } if (!registered) { - // in case of failure / partial failure - // we should unregister any handlers that were registered + /* + * in case of failure / partial failure + * we should unregister any handlers that were registered + */ unregisterIarmEvents(handlers); } @@ -66,9 +70,11 @@ inline bool isValidOwner(const char* owner) return true; } -// IARMGroupXYZ are c to c++ shim (all methods are static) -// Required to perform group event register and unregister with IARM -// Thread safety to be ensured by the caller +/* + * IARMGroupXYZ are c to c++ shim (all methods are static) + * Required to perform group event register and unregister with IARM + * Thread safety to be ensured by the caller + */ class IARMGroupVideoDevice { public: static bool RegisterIarmEvents() @@ -525,11 +531,12 @@ class IARMGroupComposite { } auto* eventData = static_cast(data); + if (eventData) { dsCompositeInPort_t compositePort = eventData->data.composite_in_connect.port; - bool isConnected = eventData->data.composite_in_connect.isPortConnected; + bool isConnected = eventData->data.composite_in_connect.isPortConnected; IarmHostImpl::Dispatch([compositePort, isConnected](ICompositeInEvents* listener) { - listener->OnCompositeInHotPlug(compositePort, isConnected); + listener->OnCompositeInHotPlug(compositePort,isConnected); }); } else { INT_ERROR("Invalid data received for Composite Status Handler in iarmCompositeInHotPlugHandler"); @@ -570,9 +577,9 @@ class IARMGroupComposite { if (eventData) { dsCompositeInPort_t compositePort = eventData->data.composite_in_status.port; - bool isPresented = eventData->data.composite_in_status.isPresented; - IarmHostImpl::Dispatch([compositePort, isPresented](ICompositeInEvents* listener) { - listener->OnCompositeInStatus(compositePort, isPresented); + bool isPresented = eventData->data.composite_in_status.isPresented; + IarmHostImpl::Dispatch([compositePort,isPresented](ICompositeInEvents* listener) { + listener->OnCompositeInStatus(compositePort,isPresented); }); } else { INT_ERROR("Invalid data received for Composite Status Handler in iarmCompositeInStatusHandler"); @@ -590,13 +597,13 @@ class IARMGroupComposite { if (eventData) { dsCompositeInPort_t compositePort = eventData->data.composite_in_video_mode.port; - - dsVideoPortResolution_t videoResolution {}; - memset(videoResolution.name, 0, sizeof(videoResolution.name)); - + dsVideoPortResolution_t videoResolution={0}; + videoResolution.name[0]='\0'; + videoResolution.aspectRatio = dsVIDEO_ASPECT_RATIO_MAX; + videoResolution.stereoScopicMode = dsAUDIO_STEREO_UNKNOWN; videoResolution.pixelResolution = eventData->data.composite_in_video_mode.resolution.pixelResolution; - videoResolution.interlaced = eventData->data.composite_in_video_mode.resolution.interlaced; - videoResolution.frameRate = eventData->data.composite_in_video_mode.resolution.frameRate; + videoResolution.interlaced = eventData->data.composite_in_video_mode.resolution.interlaced; + videoResolution.frameRate = eventData->data.composite_in_video_mode.resolution.frameRate; IarmHostImpl::Dispatch([compositePort, videoResolution](ICompositeInEvents* listener) { listener->OnCompositeInVideoModeUpdate(compositePort, videoResolution); @@ -1003,7 +1010,7 @@ dsError_t IarmHostImpl::UnRegister(IVideoDeviceEvents* listener) return s_videoDeviceListeners.UnRegister(listener); } -// Dispatcher for IARMGroupVideoDevice +/* Dispatcher for IARMGroupVideoDevice */ /* static */ void IarmHostImpl::Dispatch(std::function&& fn) { Dispatch(s_videoDeviceListeners, std::move(fn)); @@ -1021,7 +1028,7 @@ dsError_t IarmHostImpl::UnRegister(IVideoOutputPortEvents* listener) return s_videoOutputPortListeners.UnRegister(listener); } -// Dispatcher for IVideoOutputPortEvents +/* Dispatcher for IVideoOutputPortEvents */ /* static */ void IarmHostImpl::Dispatch(std::function&& fn) { Dispatch(s_videoOutputPortListeners, std::move(fn)); @@ -1039,7 +1046,7 @@ dsError_t IarmHostImpl::UnRegister(IAudioOutputPortEvents* listener) return s_audioOutputPortListeners.UnRegister(listener); } -// Dispatcher for IAudioOutputPortEvents +/* Dispatcher for IAudioOutputPortEvents */ /* static */ void IarmHostImpl::Dispatch(std::function&& fn) { Dispatch(s_audioOutputPortListeners, std::move(fn)); @@ -1057,7 +1064,7 @@ dsError_t IarmHostImpl::UnRegister(ICompositeInEvents* listener) return s_compositeListeners.UnRegister(listener); } -// Dispatcher for IARMGroupComposite +/* Dispatcher for IARMGroupComposite */ /* static */ void IarmHostImpl::Dispatch(std::function&& fn) { Dispatch(s_compositeListeners, std::move(fn)); @@ -1075,7 +1082,7 @@ dsError_t IarmHostImpl::UnRegister(IDisplayEvents* listener) return s_displayListeners.UnRegister(listener); } -// Dispatcher for IARMGroupComposite +/* Dispatcher for IARMGroupDisplay */ /* static */ void IarmHostImpl::Dispatch(std::function&& fn) { Dispatch(s_displayListeners, std::move(fn)); @@ -1092,10 +1099,10 @@ dsError_t IarmHostImpl::UnRegister(IDisplayDeviceEvents* listener) return s_displayDeviceListeners.UnRegister(listener); } -// Dispatcher for IDisplayDeviceEvents +/* Dispatcher for IDisplayDeviceEvents */ /* static */ void IarmHostImpl::Dispatch(std::function&& fn) { Dispatch(s_displayDeviceListeners, std::move(fn)); } -} // namespace device +} /* namespace device */ diff --git a/ds/include/host.hpp b/ds/include/host.hpp index ae1fe8a0..7fcd58a7 100644 --- a/ds/include/host.hpp +++ b/ds/include/host.hpp @@ -64,49 +64,41 @@ class Host { struct IHDMIInEvents { // @brief HDMI Event Hot Plug - // @text onHDMIInEventHotPlug // @param port: port 0 or 1 et al // @param isConnected: is it connected (true) or not (false) virtual void OnHDMIInEventHotPlug(dsHdmiInPort_t port, bool isConnected) { }; // @brief HDMI Event Signal status - // @text OnHDMIInEventSignalStatus // @param port: port 0 or 1 et al // @param signalStatus: Signal Status virtual void OnHDMIInEventSignalStatus(dsHdmiInPort_t port, dsHdmiInSignalStatus_t signalStatus) { }; // @brief HDMI Event Signal status - // @text onHDMIInEventStatus // @param activePort: port 0 or 1 et al // @param isPresented: is it presented or not virtual void OnHDMIInEventStatus(dsHdmiInPort_t activePort, bool isPresented) { }; // @brief HDMI Video Mode update - // @text onHDMIInVideoModeUpdate // @param port: port 0 or 1 et al // @param videoPortResolution: Video port resolution virtual void OnHDMIInVideoModeUpdate(dsHdmiInPort_t port, const dsVideoPortResolution_t& videoPortResolution) { }; // @brief HDMI ALLM (Auto Low Latency Mode) status - // @text onHDMIInAllmStatus // @param port: port 0 or 1 et al // @param allmStatus: allm status virtual void OnHDMIInAllmStatus(dsHdmiInPort_t port, bool allmStatus) { }; // @brief HDMI Event AVI content type - // @text OnHDMIInAVIContentType // @param port: port 0 or 1 et al // @param aviContentType: AVI content type virtual void OnHDMIInAVIContentType(dsHdmiInPort_t port, dsAviContentType_t aviContentType) { }; // @brief HDMI VRR status - // @text OnHDMIInVRRStatus // @param port: port 0 or 1 et al // @param vrrType: VRR type virtual void OnHDMIInVRRStatus(dsHdmiInPort_t port, dsVRRType_t vrrType) { }; // @brief HDMI Event AV Latency - // @text OnHDMIInAVLatency // @param audioDelay: audio delay (in millisecs) // @param videoDelay: video delay (in millisecs) virtual void OnHDMIInAVLatency(int audioDelay, int videoDelay) { }; @@ -124,48 +116,53 @@ class Host { struct ICompositeInEvents { virtual ~ICompositeInEvents() = default; // @brief Composite In Hotplug event - // @text onCompositeInHotPlug // @param port: Port of the hotplug // @param isConnected: Is it connected (true) or not(false) - virtual void OnCompositeInHotPlug(dsCompositeInPort_t port, bool isConnected) { }; + virtual void OnCompositeInHotPlug(dsCompositeInPort_t port, bool isConnected); // @brief Composite In Signal status - // @text onCompositeInSignalStatus // @param port: Port of the hotplug // @param signalStatus: Signal status - virtual void OnCompositeInSignalStatus(dsCompositeInPort_t port, dsCompInSignalStatus_t signalStatus) { }; + virtual void OnCompositeInSignalStatus(dsCompositeInPort_t port, dsCompInSignalStatus_t signalStatus); // @brief Composite In status - // @text onCompositeInStatus // @param activePort: Active port // @param isPresented: is it presented to user - virtual void OnCompositeInStatus(dsCompositeInPort_t activePort, bool isPresented) { }; + virtual void OnCompositeInStatus(dsCompositeInPort_t activePort, bool isPresented); // @brief Composite In Video Mode Update - // @text OnCompositeInVideoModeUpdate // @param activePort: Active port // @param videoResolution: See DisplayVideoPortResolution - virtual void OnCompositeInVideoModeUpdate(dsCompositeInPort_t activePort, dsVideoPortResolution_t videoResolution) { }; + virtual void OnCompositeInVideoModeUpdate(dsCompositeInPort_t activePort, dsVideoPortResolution_t videoResolution); }; - dsError_t Register(ICompositeInEvents* listener); - dsError_t UnRegister(ICompositeInEvents* listener); + // @brief Register a listener for composite events + // @param listener: class object implementing the listener + dsError_t Register(ICompositeInEvents *listener); + + // @brief UnRegister a listener for composite events + // @param listener: class object implementing the listener + dsError_t UnRegister(ICompositeInEvents *listener); struct IDisplayEvents { virtual ~IDisplayEvents() = default; // @brief Display RX Sense event - // @text onDisplayRxSense // @param displayEvent: DS_DISPLAY_RXSENSE_ON or DS_DISPLAY_RXSENSE_OFF - virtual void OnDisplayRxSense(dsDisplayEvent_t displayEvent) { }; + virtual void OnDisplayRxSense(dsDisplayEvent_t displayEvent); // @brief Display HDCP Status - // @text OnDisplayHDCPStatus - virtual void OnDisplayHDCPStatus() { }; + virtual void OnDisplayHDCPStatus(); }; + + // @brief Register a listener for display events + // @param listener: class object implementing the listener + dsError_t Register(IDisplayEvents *listener); + + // @brief UnRegister a listener for display events + // @param listener: class object implementing the listener + dsError_t UnRegister(IDisplayEvents *listener); - dsError_t Register(IDisplayEvents* listener); - dsError_t UnRegister(IDisplayEvents* listener); struct IVideoDeviceEvents { virtual ~IVideoDeviceEvents() = default; @@ -179,7 +176,6 @@ class Host { virtual void OnDisplayFrameratePostChange(const std::string& frameRate); // @brief Zoom settings changed - // @text OnZoomSettingsChanged // @param zoomSetting: Currently applied zoom setting virtual void OnZoomSettingsChanged(dsVideoZoom_t zoomSetting); }; From d7f61da763664d3edefcd1a9022fc7b808374a93 Mon Sep 17 00:00:00 2001 From: kkaliyaperumal Date: Thu, 28 Aug 2025 18:27:30 +0530 Subject: [PATCH 058/103] continue1 --- ds/iarm/IarmHostImpl.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/ds/iarm/IarmHostImpl.cpp b/ds/iarm/IarmHostImpl.cpp index c038f0f3..763cce10 100755 --- a/ds/iarm/IarmHostImpl.cpp +++ b/ds/iarm/IarmHostImpl.cpp @@ -816,6 +816,7 @@ class IARMGroupHdmiIn { res.interlaced = eventData->data.hdmi_in_video_mode.resolution.interlaced; res.frameRate = eventData->data.hdmi_in_video_mode.resolution.frameRate; + IarmHostImpl::Dispatch([port, res](IHDMIInEvents* listener) { listener->OnHDMIInVideoModeUpdate(port, res); }); From c65f6916594166fff871ebe40a75415d5c89fd66 Mon Sep 17 00:00:00 2001 From: Ramesh Babu H Date: Thu, 28 Aug 2025 18:34:22 +0530 Subject: [PATCH 059/103] topic/RDKEMW6161- Update Error Fix --- ds/host.cpp | 34 +++++++++++++++++----------------- ds/iarm/IarmHostImpl.cpp | 10 +++++----- 2 files changed, 22 insertions(+), 22 deletions(-) diff --git a/ds/host.cpp b/ds/host.cpp index 94a79d56..5aff1034 100644 --- a/ds/host.cpp +++ b/ds/host.cpp @@ -776,77 +776,77 @@ DefaultImpl& Host::impl() /* virtual */ void Host::IVideoDeviceEvents::OnDisplayFrameratePreChange(const std::string& frameRate) { - // If client needs to handle this event, they should override this method + /* If client needs to handle this event, they should override this method */ INT_WARN("Base impl of OnDisplayFrameratePreChange called. frameRate: %s", frameRate.c_str()); } /* virtual */ void Host::IVideoDeviceEvents::OnDisplayFrameratePostChange(const std::string& frameRate) { - // If client needs to handle this event, they should override this method + /* If client needs to handle this event, they should override this methodi */ INT_WARN("Base impl of OnDisplayFrameratePostChange called. frameRate: %s", frameRate.c_str()); } /* virtual */ void Host::IVideoDeviceEvents::OnZoomSettingsChanged(dsVideoZoom_t zoomSetting) { - // If client needs to handle this event, they should override this method + /* If client needs to handle this event, they should override this method */ INT_WARN("Base impl of OnZoomSettingsChanged called. zoomSetting: %d", zoomSetting); } /* virtual */ void Host::IVideoOutputPortEvents::OnResolutionPreChange(int width, int height) { - // If client needs to handle this event, they should override this method + /* If client needs to handle this event, they should override this method */ INT_WARN("Base impl of OnResolutionPreChange called. width: %d, height: %d", width, height); } /* virtual */ void Host::IVideoOutputPortEvents::OnResolutionPostChange(int width, int height) { - // If client needs to handle this event, they should override this method + /* If client needs to handle this event, they should override this method */ INT_WARN("Base impl of OnResolutionPostChange called. width: %d, height: %d", width, height); } /* virtual */ void Host::IVideoOutputPortEvents::OnHDCPStatusChange(dsHdcpStatus_t hdcpStatus) { - // If client needs to handle this event, they should override this method + /* If client needs to handle this event, they should override this method */ INT_WARN("Base impl of OnHDCPStatusChange called. hdcpStatus: %d", hdcpStatus); } /* virtual */ void Host::IVideoOutputPortEvents::OnVideoFormatUpdate(dsHDRStandard_t videoFormatHDR) { - // If client needs to handle this event, they should override this method + /* If client needs to handle this event, they should override this method */ INT_WARN("Base impl of OnVideoFormatUpdate called. videoFormatHDR: %d", videoFormatHDR); } /* virtual */ void Host::IAudioOutputPortEvents::OnAssociatedAudioMixingChanged(bool mixing) { - // If client needs to handle this event, they should override this method + /* If client needs to handle this event, they should override this method */ INT_WARN("Base impl of OnAssociatedAudioMixingChanged called. mixing: %d", mixing); } /* virtual */ void Host::IAudioOutputPortEvents::OnAudioFaderControlChanged(int mixerBalance) { - // If client needs to handle this event, they should override this method + /* If client needs to handle this event, they should override this method */ INT_WARN("Base impl of OnAudioFaderControlChanged called. mixerBalance: %d", mixerBalance); } /* virtual */ void Host::IAudioOutputPortEvents::OnAudioPrimaryLanguageChanged(const std::string& primaryLanguage) { - // If client needs to handle this event, they should override this method + /* If client needs to handle this event, they should override this method */ INT_WARN("Base impl of OnAudioPrimaryLanguageChanged called. primaryLanguage: %s", primaryLanguage.c_str()); } /* virtual */ void Host::IAudioOutputPortEvents::OnAudioSecondaryLanguageChanged(const std::string& secondaryLanguage) { - // If client needs to handle this event, they should override this method + /* If client needs to handle this event, they should override this method */ INT_WARN("Base impl of OnAudioSecondaryLanguageChanged called. secondaryLanguage: %s", secondaryLanguage.c_str()); } /* virtual */ void Host::IAudioOutputPortEvents::OnAudioOutHotPlug(dsAudioPortType_t portType, uint32_t uiPortNumber, bool isPortConnected) { - // If client needs to handle this event, they should override this method + /* If client needs to handle this event, they should override this method */ INT_WARN("Base impl of OnAudioOutHotPlug called. portType: %d, uiPortNumber: %d, isPortConnected: %d", portType, uiPortNumber, isPortConnected); } /* virtual */ void Host::IAudioOutputPortEvents::OnDolbyAtmosCapabilitiesChanged(dsATMOSCapability_t atmosCapability, bool status) { - // If client needs to handle this event, they should override this method + /* If client needs to handle this event, they should override this method */ INT_WARN("Base impl of OnDolbyAtmosCapabilitiesChanged called. atmosCapability: %d, status: %d", atmosCapability, status); } @@ -855,25 +855,25 @@ DefaultImpl& Host::impl() /* virtual */ void Host::IAudioOutputPortEvents::OnAudioModeEvent(dsAudioPortType_t audioPortType, dsAudioStereoMode_t audioStereoMode) { - // If client needs to handle this event, they should override this method + /* If client needs to handle this event, they should override this method */ INT_WARN("Base impl of OnAudioModeEvent called. audioPortType: %d, audioStereoMode: %d", audioPortType, audioStereoMode); } /* virtual */ void Host::IAudioOutputPortEvents::OnAudioLevelChangedEvent(int audioLevel) { - // If client needs to handle this event, they should override this method + /* If client needs to handle this event, they should override this method */ INT_WARN("Base impl of OnAudioLevelChangedEvent called. audioLevel: %d", audioLevel); } /* virtual */ void Host::IAudioOutputPortEvents::OnAudioFormatUpdate(dsAudioFormat_t audioFormat) { - // If client needs to handle this event, they should override this method + /* If client needs to handle this event, they should override this method */ INT_WARN("Base impl of OnAudioFormatUpdate called. audioFormat: %d", audioFormat); } /* virtual */ void Host::IDisplayDeviceEvents::OnDisplayHDMIHotPlug(dsDisplayEvent_t displayEvent) { - // If client needs to handle this event, they should override this method + /* If client needs to handle this event, they should override this method */ INT_WARN("Base impl of OnDisplayHDMIHotPlug called. displayEvent: %d", displayEvent); } /* virtual */ void Host::ICompositeInEvents::OnCompositeInHotPlug(dsCompositeInPort_t port, bool isConnected) diff --git a/ds/iarm/IarmHostImpl.cpp b/ds/iarm/IarmHostImpl.cpp index e76f6924..d0958616 100755 --- a/ds/iarm/IarmHostImpl.cpp +++ b/ds/iarm/IarmHostImpl.cpp @@ -600,7 +600,7 @@ class IARMGroupComposite { dsVideoPortResolution_t videoResolution={0}; videoResolution.name[0]='\0'; videoResolution.aspectRatio = dsVIDEO_ASPECT_RATIO_MAX; - videoResolution.stereoScopicMode = dsAUDIO_STEREO_UNKNOWN; + videoResolution.stereoScopicMode = dsVIDEO_SSMODE_UNKNOWN; videoResolution.pixelResolution = eventData->data.composite_in_video_mode.resolution.pixelResolution; videoResolution.interlaced = eventData->data.composite_in_video_mode.resolution.interlaced; videoResolution.frameRate = eventData->data.composite_in_video_mode.resolution.frameRate; @@ -725,7 +725,7 @@ class IARMGroupDisplayDevice { INT_ERROR("Invalid data received for HDMI (out) hot plug change"); } } -}; // IARMGroupDisplayDevice +}; /* IARMGroupDisplayDevice */ class IARMGroupHdmiIn { public: @@ -929,9 +929,9 @@ class IARMGroupHdmiIn { { IARM_BUS_DSMGR_EVENT_HDMI_IN_AVI_CONTENT_TYPE, &IARMGroupHdmiIn::iarmHDMIInAVIContentTypeHandler }, { IARM_BUS_DSMGR_EVENT_HDMI_IN_AV_LATENCY, &IARMGroupHdmiIn::iarmHDMIInAVLatencyHandler } }; -}; // IARMGroupHdmiIn +}; /* IARMGroupHdmiIn */ -// static data +/* static data */ constexpr EventHandlerMapping IARMGroupHdmiIn::handlers[]; constexpr EventHandlerMapping IARMGroupVideoDevice::handlers[]; constexpr EventHandlerMapping IARMGroupVideoOutputPort::handlers[]; @@ -992,7 +992,7 @@ dsError_t IarmHostImpl::UnRegister(IHDMIInEvents* listener) return s_hdmiInListeners.UnRegister(listener); } -// Dispatcher for IHDMIInEvents +/* Dispatcher for IHDMIInEvents */ /* static */ void IarmHostImpl::Dispatch(std::function&& fn) { Dispatch(s_hdmiInListeners, std::move(fn)); From e63f0fe88ea8df74713f815c2c5c0e01d567647c Mon Sep 17 00:00:00 2001 From: Ramesh Babu H Date: Thu, 28 Aug 2025 19:15:17 +0530 Subject: [PATCH 060/103] topic/RDKEMW6161- Update copilot Fix --- ds/host.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/ds/host.cpp b/ds/host.cpp index 5aff1034..335765aa 100644 --- a/ds/host.cpp +++ b/ds/host.cpp @@ -782,7 +782,7 @@ DefaultImpl& Host::impl() /* virtual */ void Host::IVideoDeviceEvents::OnDisplayFrameratePostChange(const std::string& frameRate) { - /* If client needs to handle this event, they should override this methodi */ + /* If client needs to handle this event, they should override this method */ INT_WARN("Base impl of OnDisplayFrameratePostChange called. frameRate: %s", frameRate.c_str()); } @@ -879,24 +879,24 @@ DefaultImpl& Host::impl() /* virtual */ void Host::ICompositeInEvents::OnCompositeInHotPlug(dsCompositeInPort_t port, bool isConnected) { /* If client needs to handle this event, they should override this method */ - INT_WARN("Base impl of OnCompositeInHotPlug called. port: %d isConnected %d", port,isConnected); + INT_WARN("Base impl of OnCompositeInHotPlug called. port: %d isConnected %d", port, isConnected); } /* virtual */ void Host::ICompositeInEvents::OnCompositeInSignalStatus(dsCompositeInPort_t port, dsCompInSignalStatus_t signalStatus) { /* If client needs to handle this event, they should override this method */ - INT_WARN("Base impl of OnCompositeInSignalStatus called. port: %d signalStatus %d", port,signalStatus); + INT_WARN("Base impl of OnCompositeInSignalStatus called. port: %d signalStatus %d", port, signalStatus); } /* virtual */ void Host::ICompositeInEvents::OnCompositeInStatus(dsCompositeInPort_t activePort, bool isPresented) { /* If client needs to handle this event, they should override this method */ - INT_WARN("Base impl of OnCompositeInStatus called. activePort: %d isPresented %d", activePort,isPresented); + INT_WARN("Base impl of OnCompositeInStatus called. activePort: %d isPresented %d", activePort, isPresented); } /* virtual */ void Host::ICompositeInEvents::OnCompositeInVideoModeUpdate(dsCompositeInPort_t activePort, dsVideoPortResolution_t videoResolution) { /* If client needs to handle this event, they should override this method */ - INT_WARN("Base impl of OnCompositeInVideoModeUpdate called. activePort: %d videoResolution %d", activePort,videoResolution.pixelResolution); + INT_WARN("Base impl of OnCompositeInVideoModeUpdate called. activePort: %d videoResolution %d", activePort, videoResolution.pixelResolution); } /* virtual */ void Host::IDisplayEvents::OnDisplayRxSense(dsDisplayEvent_t displayEvent) From e2b24c70ae5df589b71b5c36de0d143c1a9885ba Mon Sep 17 00:00:00 2001 From: Shrinivas Kamath Date: Thu, 28 Aug 2025 16:48:22 +0000 Subject: [PATCH 061/103] minor: indentation changes --- ds/host.cpp | 36 +++++++-------- ds/iarm/IarmHostImpl.cpp | 67 +++++++++++++-------------- ds/include/host.hpp | 98 ++++++++++++++++++++-------------------- 3 files changed, 98 insertions(+), 103 deletions(-) diff --git a/ds/host.cpp b/ds/host.cpp index 335765aa..19911959 100644 --- a/ds/host.cpp +++ b/ds/host.cpp @@ -767,7 +767,7 @@ Host::~Host() DefaultImpl& Host::impl() { - /* lazy instantiation */ + // lazy instantiation if (!m_impl) { m_impl = std::unique_ptr(new DefaultImpl()); } @@ -776,77 +776,77 @@ DefaultImpl& Host::impl() /* virtual */ void Host::IVideoDeviceEvents::OnDisplayFrameratePreChange(const std::string& frameRate) { - /* If client needs to handle this event, they should override this method */ + // If client needs to handle this event, they should override this method INT_WARN("Base impl of OnDisplayFrameratePreChange called. frameRate: %s", frameRate.c_str()); } /* virtual */ void Host::IVideoDeviceEvents::OnDisplayFrameratePostChange(const std::string& frameRate) { - /* If client needs to handle this event, they should override this method */ + // If client needs to handle this event, they should override this method INT_WARN("Base impl of OnDisplayFrameratePostChange called. frameRate: %s", frameRate.c_str()); } /* virtual */ void Host::IVideoDeviceEvents::OnZoomSettingsChanged(dsVideoZoom_t zoomSetting) { - /* If client needs to handle this event, they should override this method */ + // If client needs to handle this event, they should override this method INT_WARN("Base impl of OnZoomSettingsChanged called. zoomSetting: %d", zoomSetting); } /* virtual */ void Host::IVideoOutputPortEvents::OnResolutionPreChange(int width, int height) { - /* If client needs to handle this event, they should override this method */ + // If client needs to handle this event, they should override this method INT_WARN("Base impl of OnResolutionPreChange called. width: %d, height: %d", width, height); } /* virtual */ void Host::IVideoOutputPortEvents::OnResolutionPostChange(int width, int height) { - /* If client needs to handle this event, they should override this method */ + // If client needs to handle this event, they should override this method INT_WARN("Base impl of OnResolutionPostChange called. width: %d, height: %d", width, height); } /* virtual */ void Host::IVideoOutputPortEvents::OnHDCPStatusChange(dsHdcpStatus_t hdcpStatus) { - /* If client needs to handle this event, they should override this method */ + // If client needs to handle this event, they should override this method INT_WARN("Base impl of OnHDCPStatusChange called. hdcpStatus: %d", hdcpStatus); } /* virtual */ void Host::IVideoOutputPortEvents::OnVideoFormatUpdate(dsHDRStandard_t videoFormatHDR) { - /* If client needs to handle this event, they should override this method */ + // If client needs to handle this event, they should override this method INT_WARN("Base impl of OnVideoFormatUpdate called. videoFormatHDR: %d", videoFormatHDR); } /* virtual */ void Host::IAudioOutputPortEvents::OnAssociatedAudioMixingChanged(bool mixing) { - /* If client needs to handle this event, they should override this method */ + // If client needs to handle this event, they should override this method INT_WARN("Base impl of OnAssociatedAudioMixingChanged called. mixing: %d", mixing); } /* virtual */ void Host::IAudioOutputPortEvents::OnAudioFaderControlChanged(int mixerBalance) { - /* If client needs to handle this event, they should override this method */ + // If client needs to handle this event, they should override this method INT_WARN("Base impl of OnAudioFaderControlChanged called. mixerBalance: %d", mixerBalance); } /* virtual */ void Host::IAudioOutputPortEvents::OnAudioPrimaryLanguageChanged(const std::string& primaryLanguage) { - /* If client needs to handle this event, they should override this method */ + // If client needs to handle this event, they should override this method INT_WARN("Base impl of OnAudioPrimaryLanguageChanged called. primaryLanguage: %s", primaryLanguage.c_str()); } /* virtual */ void Host::IAudioOutputPortEvents::OnAudioSecondaryLanguageChanged(const std::string& secondaryLanguage) { - /* If client needs to handle this event, they should override this method */ + // If client needs to handle this event, they should override this method INT_WARN("Base impl of OnAudioSecondaryLanguageChanged called. secondaryLanguage: %s", secondaryLanguage.c_str()); } /* virtual */ void Host::IAudioOutputPortEvents::OnAudioOutHotPlug(dsAudioPortType_t portType, uint32_t uiPortNumber, bool isPortConnected) { - /* If client needs to handle this event, they should override this method */ + // If client needs to handle this event, they should override this method INT_WARN("Base impl of OnAudioOutHotPlug called. portType: %d, uiPortNumber: %d, isPortConnected: %d", portType, uiPortNumber, isPortConnected); } /* virtual */ void Host::IAudioOutputPortEvents::OnDolbyAtmosCapabilitiesChanged(dsATMOSCapability_t atmosCapability, bool status) { - /* If client needs to handle this event, they should override this method */ + // If client needs to handle this event, they should override this method INT_WARN("Base impl of OnDolbyAtmosCapabilitiesChanged called. atmosCapability: %d, status: %d", atmosCapability, status); } @@ -855,25 +855,25 @@ DefaultImpl& Host::impl() /* virtual */ void Host::IAudioOutputPortEvents::OnAudioModeEvent(dsAudioPortType_t audioPortType, dsAudioStereoMode_t audioStereoMode) { - /* If client needs to handle this event, they should override this method */ + // If client needs to handle this event, they should override this method INT_WARN("Base impl of OnAudioModeEvent called. audioPortType: %d, audioStereoMode: %d", audioPortType, audioStereoMode); } /* virtual */ void Host::IAudioOutputPortEvents::OnAudioLevelChangedEvent(int audioLevel) { - /* If client needs to handle this event, they should override this method */ + // If client needs to handle this event, they should override this method INT_WARN("Base impl of OnAudioLevelChangedEvent called. audioLevel: %d", audioLevel); } /* virtual */ void Host::IAudioOutputPortEvents::OnAudioFormatUpdate(dsAudioFormat_t audioFormat) { - /* If client needs to handle this event, they should override this method */ + // If client needs to handle this event, they should override this method INT_WARN("Base impl of OnAudioFormatUpdate called. audioFormat: %d", audioFormat); } /* virtual */ void Host::IDisplayDeviceEvents::OnDisplayHDMIHotPlug(dsDisplayEvent_t displayEvent) { - /* If client needs to handle this event, they should override this method */ + // If client needs to handle this event, they should override this method INT_WARN("Base impl of OnDisplayHDMIHotPlug called. displayEvent: %d", displayEvent); } /* virtual */ void Host::ICompositeInEvents::OnCompositeInHotPlug(dsCompositeInPort_t port, bool isConnected) diff --git a/ds/iarm/IarmHostImpl.cpp b/ds/iarm/IarmHostImpl.cpp index d0958616..22e590e9 100755 --- a/ds/iarm/IarmHostImpl.cpp +++ b/ds/iarm/IarmHostImpl.cpp @@ -17,10 +17,8 @@ struct EventHandlerMapping { IARM_EventHandler_t handler; }; -/* - * unregisterIarmEvents can be called by registerIarmEvents in case of failure. - * Hence defined before registerIarmEvents - */ +// unregisterIarmEvents can be called by registerIarmEvents in case of failure. +// Hence defined before registerIarmEvents template static bool unregisterIarmEvents(const EventHandlerMapping (&handlers)[N]) { @@ -30,7 +28,7 @@ static bool unregisterIarmEvents(const EventHandlerMapping (&handlers)[N]) if (IARM_RESULT_SUCCESS != IARM_Bus_UnRegisterEventHandler(IARM_BUS_DSMGR_NAME, eh.eventId)) { INT_ERROR("Failed to unregister IARM event handler for %d", eh.eventId); unregistered = false; - /* don't break here, try to unregister all handlers */ + // don't break here, try to unregister all handlers } } return unregistered; @@ -45,16 +43,14 @@ static bool registerIarmEvents(const EventHandlerMapping (&handlers)[N]) if (IARM_RESULT_SUCCESS != IARM_Bus_RegisterEventHandler(IARM_BUS_DSMGR_NAME, eh.eventId, eh.handler)) { INT_ERROR("Failed to register IARM event handler for %d", eh.eventId); registered = false; - /* no point in continuing as we will attempt to unregister anyway */ + // no point in continuing as we will attempt to unregister anyway break; } } if (!registered) { - /* - * in case of failure / partial failure - * we should unregister any handlers that were registered - */ + // in case of failure / partial failure + // we should unregister any handlers that were registered unregisterIarmEvents(handlers); } @@ -70,11 +66,9 @@ inline bool isValidOwner(const char* owner) return true; } -/* - * IARMGroupXYZ are c to c++ shim (all methods are static) - * Required to perform group event register and unregister with IARM - * Thread safety to be ensured by the caller - */ +// IARMGroupXYZ are c to c++ shim (all methods are static) +// Required to perform group event register and unregister with IARM +// Thread safety to be ensured by the caller class IARMGroupVideoDevice { public: static bool RegisterIarmEvents() @@ -534,9 +528,9 @@ class IARMGroupComposite { if (eventData) { dsCompositeInPort_t compositePort = eventData->data.composite_in_connect.port; - bool isConnected = eventData->data.composite_in_connect.isPortConnected; + bool isConnected = eventData->data.composite_in_connect.isPortConnected; IarmHostImpl::Dispatch([compositePort, isConnected](ICompositeInEvents* listener) { - listener->OnCompositeInHotPlug(compositePort,isConnected); + listener->OnCompositeInHotPlug(compositePort, isConnected); }); } else { INT_ERROR("Invalid data received for Composite Status Handler in iarmCompositeInHotPlugHandler"); @@ -577,9 +571,9 @@ class IARMGroupComposite { if (eventData) { dsCompositeInPort_t compositePort = eventData->data.composite_in_status.port; - bool isPresented = eventData->data.composite_in_status.isPresented; - IarmHostImpl::Dispatch([compositePort,isPresented](ICompositeInEvents* listener) { - listener->OnCompositeInStatus(compositePort,isPresented); + bool isPresented = eventData->data.composite_in_status.isPresented; + IarmHostImpl::Dispatch([compositePort, isPresented](ICompositeInEvents* listener) { + listener->OnCompositeInStatus(compositePort, isPresented); }); } else { INT_ERROR("Invalid data received for Composite Status Handler in iarmCompositeInStatusHandler"); @@ -597,13 +591,15 @@ class IARMGroupComposite { if (eventData) { dsCompositeInPort_t compositePort = eventData->data.composite_in_video_mode.port; - dsVideoPortResolution_t videoResolution={0}; - videoResolution.name[0]='\0'; - videoResolution.aspectRatio = dsVIDEO_ASPECT_RATIO_MAX; + + dsVideoPortResolution_t videoResolution {}; + + videoResolution.name[0] = '\0'; + videoResolution.aspectRatio = dsVIDEO_ASPECT_RATIO_MAX; videoResolution.stereoScopicMode = dsVIDEO_SSMODE_UNKNOWN; - videoResolution.pixelResolution = eventData->data.composite_in_video_mode.resolution.pixelResolution; - videoResolution.interlaced = eventData->data.composite_in_video_mode.resolution.interlaced; - videoResolution.frameRate = eventData->data.composite_in_video_mode.resolution.frameRate; + videoResolution.pixelResolution = eventData->data.composite_in_video_mode.resolution.pixelResolution; + videoResolution.interlaced = eventData->data.composite_in_video_mode.resolution.interlaced; + videoResolution.frameRate = eventData->data.composite_in_video_mode.resolution.frameRate; IarmHostImpl::Dispatch([compositePort, videoResolution](ICompositeInEvents* listener) { listener->OnCompositeInVideoModeUpdate(compositePort, videoResolution); @@ -929,7 +925,7 @@ class IARMGroupHdmiIn { { IARM_BUS_DSMGR_EVENT_HDMI_IN_AVI_CONTENT_TYPE, &IARMGroupHdmiIn::iarmHDMIInAVIContentTypeHandler }, { IARM_BUS_DSMGR_EVENT_HDMI_IN_AV_LATENCY, &IARMGroupHdmiIn::iarmHDMIInAVLatencyHandler } }; -}; /* IARMGroupHdmiIn */ +}; // IARMGroupHdmiIn /* static data */ constexpr EventHandlerMapping IARMGroupHdmiIn::handlers[]; @@ -992,7 +988,7 @@ dsError_t IarmHostImpl::UnRegister(IHDMIInEvents* listener) return s_hdmiInListeners.UnRegister(listener); } -/* Dispatcher for IHDMIInEvents */ +// Dispatcher for IHDMIInEvents /* static */ void IarmHostImpl::Dispatch(std::function&& fn) { Dispatch(s_hdmiInListeners, std::move(fn)); @@ -1010,7 +1006,7 @@ dsError_t IarmHostImpl::UnRegister(IVideoDeviceEvents* listener) return s_videoDeviceListeners.UnRegister(listener); } -/* Dispatcher for IARMGroupVideoDevice */ +// Dispatcher for IARMGroupVideoDevice /* static */ void IarmHostImpl::Dispatch(std::function&& fn) { Dispatch(s_videoDeviceListeners, std::move(fn)); @@ -1028,7 +1024,7 @@ dsError_t IarmHostImpl::UnRegister(IVideoOutputPortEvents* listener) return s_videoOutputPortListeners.UnRegister(listener); } -/* Dispatcher for IVideoOutputPortEvents */ +// Dispatcher for IVideoOutputPortEvents /* static */ void IarmHostImpl::Dispatch(std::function&& fn) { Dispatch(s_videoOutputPortListeners, std::move(fn)); @@ -1046,7 +1042,7 @@ dsError_t IarmHostImpl::UnRegister(IAudioOutputPortEvents* listener) return s_audioOutputPortListeners.UnRegister(listener); } -/* Dispatcher for IAudioOutputPortEvents */ +// Dispatcher for IAudioOutputPortEvents /* static */ void IarmHostImpl::Dispatch(std::function&& fn) { Dispatch(s_audioOutputPortListeners, std::move(fn)); @@ -1064,7 +1060,7 @@ dsError_t IarmHostImpl::UnRegister(ICompositeInEvents* listener) return s_compositeListeners.UnRegister(listener); } -/* Dispatcher for IARMGroupComposite */ +// Dispatcher for IARMGroupComposite /* static */ void IarmHostImpl::Dispatch(std::function&& fn) { Dispatch(s_compositeListeners, std::move(fn)); @@ -1082,11 +1078,12 @@ dsError_t IarmHostImpl::UnRegister(IDisplayEvents* listener) return s_displayListeners.UnRegister(listener); } -/* Dispatcher for IARMGroupDisplay */ +// Dispatcher for IARMGroupDisplay /* static */ void IarmHostImpl::Dispatch(std::function&& fn) { Dispatch(s_displayListeners, std::move(fn)); } + dsError_t IarmHostImpl::Register(IDisplayDeviceEvents* listener) { std::lock_guard lock(s_mutex); @@ -1099,10 +1096,10 @@ dsError_t IarmHostImpl::UnRegister(IDisplayDeviceEvents* listener) return s_displayDeviceListeners.UnRegister(listener); } -/* Dispatcher for IDisplayDeviceEvents */ +// Dispatcher for IDisplayDeviceEvents /* static */ void IarmHostImpl::Dispatch(std::function&& fn) { Dispatch(s_displayDeviceListeners, std::move(fn)); } -} /* namespace device */ +} // namespace device diff --git a/ds/include/host.hpp b/ds/include/host.hpp index 7fcd58a7..9afb9abf 100644 --- a/ds/include/host.hpp +++ b/ds/include/host.hpp @@ -63,55 +63,54 @@ class Host { static const int kPowerStandby; struct IHDMIInEvents { - // @brief HDMI Event Hot Plug - // @param port: port 0 or 1 et al - // @param isConnected: is it connected (true) or not (false) - virtual void OnHDMIInEventHotPlug(dsHdmiInPort_t port, bool isConnected) { }; - - // @brief HDMI Event Signal status - // @param port: port 0 or 1 et al - // @param signalStatus: Signal Status - virtual void OnHDMIInEventSignalStatus(dsHdmiInPort_t port, dsHdmiInSignalStatus_t signalStatus) { }; - - // @brief HDMI Event Signal status - // @param activePort: port 0 or 1 et al - // @param isPresented: is it presented or not - virtual void OnHDMIInEventStatus(dsHdmiInPort_t activePort, bool isPresented) { }; - - // @brief HDMI Video Mode update - // @param port: port 0 or 1 et al - // @param videoPortResolution: Video port resolution - virtual void OnHDMIInVideoModeUpdate(dsHdmiInPort_t port, const dsVideoPortResolution_t& videoPortResolution) { }; - - // @brief HDMI ALLM (Auto Low Latency Mode) status - // @param port: port 0 or 1 et al - // @param allmStatus: allm status - virtual void OnHDMIInAllmStatus(dsHdmiInPort_t port, bool allmStatus) { }; - - // @brief HDMI Event AVI content type - // @param port: port 0 or 1 et al - // @param aviContentType: AVI content type - virtual void OnHDMIInAVIContentType(dsHdmiInPort_t port, dsAviContentType_t aviContentType) { }; - - // @brief HDMI VRR status - // @param port: port 0 or 1 et al - // @param vrrType: VRR type - virtual void OnHDMIInVRRStatus(dsHdmiInPort_t port, dsVRRType_t vrrType) { }; - - // @brief HDMI Event AV Latency - // @param audioDelay: audio delay (in millisecs) - // @param videoDelay: video delay (in millisecs) - virtual void OnHDMIInAVLatency(int audioDelay, int videoDelay) { }; - + // @brief HDMI Event Hot Plug + // @param port: port 0 or 1 et al + // @param isConnected: is it connected (true) or not (false) + virtual void OnHDMIInEventHotPlug(dsHdmiInPort_t port, bool isConnected) { }; + + // @brief HDMI Event Signal status + // @param port: port 0 or 1 et al + // @param signalStatus: Signal Status + virtual void OnHDMIInEventSignalStatus(dsHdmiInPort_t port, dsHdmiInSignalStatus_t signalStatus) { }; + + // @brief HDMI Event Signal status + // @param activePort: port 0 or 1 et al + // @param isPresented: is it presented or not + virtual void OnHDMIInEventStatus(dsHdmiInPort_t activePort, bool isPresented) { }; + + // @brief HDMI Video Mode update + // @param port: port 0 or 1 et al + // @param videoPortResolution: Video port resolution + virtual void OnHDMIInVideoModeUpdate(dsHdmiInPort_t port, const dsVideoPortResolution_t& videoPortResolution) { }; + + // @brief HDMI ALLM (Auto Low Latency Mode) status + // @param port: port 0 or 1 et al + // @param allmStatus: allm status + virtual void OnHDMIInAllmStatus(dsHdmiInPort_t port, bool allmStatus) { }; + + // @brief HDMI Event AVI content type + // @param port: port 0 or 1 et al + // @param aviContentType: AVI content type + virtual void OnHDMIInAVIContentType(dsHdmiInPort_t port, dsAviContentType_t aviContentType) { }; + + // @brief HDMI VRR status + // @param port: port 0 or 1 et al + // @param vrrType: VRR type + virtual void OnHDMIInVRRStatus(dsHdmiInPort_t port, dsVRRType_t vrrType) { }; + + // @brief HDMI Event AV Latency + // @param audioDelay: audio delay (in millisecs) + // @param videoDelay: video delay (in millisecs) + virtual void OnHDMIInAVLatency(int audioDelay, int videoDelay) { }; }; // @brief Register a listener for HDMI device events // @param listener: class object implementing the listener - dsError_t Register(IHDMIInEvents *listener); + dsError_t Register(IHDMIInEvents* listener); // @brief UnRegister a listener for HDMI device events // @param listener: class object implementing the listener - dsError_t UnRegister(IHDMIInEvents *listener); + dsError_t UnRegister(IHDMIInEvents* listener); struct ICompositeInEvents { virtual ~ICompositeInEvents() = default; @@ -138,11 +137,11 @@ class Host { // @brief Register a listener for composite events // @param listener: class object implementing the listener - dsError_t Register(ICompositeInEvents *listener); - + dsError_t Register(ICompositeInEvents* listener); + // @brief UnRegister a listener for composite events // @param listener: class object implementing the listener - dsError_t UnRegister(ICompositeInEvents *listener); + dsError_t UnRegister(ICompositeInEvents* listener); struct IDisplayEvents { virtual ~IDisplayEvents() = default; @@ -154,15 +153,14 @@ class Host { // @brief Display HDCP Status virtual void OnDisplayHDCPStatus(); }; - + // @brief Register a listener for display events // @param listener: class object implementing the listener - dsError_t Register(IDisplayEvents *listener); - + dsError_t Register(IDisplayEvents* listener); + // @brief UnRegister a listener for display events // @param listener: class object implementing the listener - dsError_t UnRegister(IDisplayEvents *listener); - + dsError_t UnRegister(IDisplayEvents* listener); struct IVideoDeviceEvents { virtual ~IVideoDeviceEvents() = default; From a66124b3c8230e998411b5e16d9e1c0d739b5644 Mon Sep 17 00:00:00 2001 From: Shrinivas Kamath Date: Thu, 28 Aug 2025 17:00:34 +0000 Subject: [PATCH 062/103] implement mutex per callabacklist --- ds/iarm/IarmHostImpl.cpp | 25 +++++++------------------ ds/iarm/IarmHostImpl.hpp | 14 ++++++++++++-- 2 files changed, 19 insertions(+), 20 deletions(-) diff --git a/ds/iarm/IarmHostImpl.cpp b/ds/iarm/IarmHostImpl.cpp index 22e590e9..a482fb8e 100755 --- a/ds/iarm/IarmHostImpl.cpp +++ b/ds/iarm/IarmHostImpl.cpp @@ -935,7 +935,6 @@ constexpr EventHandlerMapping IARMGroupAudioOutputPort::handlers[]; constexpr EventHandlerMapping IARMGroupComposite::handlers[]; constexpr EventHandlerMapping IARMGroupDisplay::handlers[]; -std::mutex IarmHostImpl::s_mutex; IarmHostImpl::CallbackList IarmHostImpl::s_hdmiInListeners; IarmHostImpl::CallbackList IarmHostImpl::s_videoDeviceListeners; IarmHostImpl::CallbackList IarmHostImpl::s_videoOutputPortListeners; @@ -946,8 +945,6 @@ IarmHostImpl::CallbackList IarmHo IarmHostImpl::~IarmHostImpl() { - std::lock_guard lock(s_mutex); - s_hdmiInListeners.Release(); s_videoDeviceListeners.Release(); s_videoOutputPortListeners.Release(); @@ -961,7 +958,6 @@ template /* static */ void IarmHostImpl::Dispatch(const std::list& listeners, F&& fn) { std::stringstream ss; - std::lock_guard lock(s_mutex); for (auto* listener : listeners) { auto start = std::chrono::steady_clock::now(); @@ -978,127 +974,120 @@ template dsError_t IarmHostImpl::Register(IHDMIInEvents* listener) { - std::lock_guard lock(s_mutex); return s_hdmiInListeners.Register(listener); } dsError_t IarmHostImpl::UnRegister(IHDMIInEvents* listener) { - std::lock_guard lock(s_mutex); return s_hdmiInListeners.UnRegister(listener); } // Dispatcher for IHDMIInEvents /* static */ void IarmHostImpl::Dispatch(std::function&& fn) { + std::lock_guard lock(s_hdmiInListeners.Mutex()); Dispatch(s_hdmiInListeners, std::move(fn)); } dsError_t IarmHostImpl::Register(IVideoDeviceEvents* listener) { - std::lock_guard lock(s_mutex); return s_videoDeviceListeners.Register(listener); } dsError_t IarmHostImpl::UnRegister(IVideoDeviceEvents* listener) { - std::lock_guard lock(s_mutex); return s_videoDeviceListeners.UnRegister(listener); } // Dispatcher for IARMGroupVideoDevice /* static */ void IarmHostImpl::Dispatch(std::function&& fn) { + std::lock_guard lock(s_videoDeviceListeners.Mutex()); Dispatch(s_videoDeviceListeners, std::move(fn)); } dsError_t IarmHostImpl::Register(IVideoOutputPortEvents* listener) { - std::lock_guard lock(s_mutex); return s_videoOutputPortListeners.Register(listener); } dsError_t IarmHostImpl::UnRegister(IVideoOutputPortEvents* listener) { - std::lock_guard lock(s_mutex); return s_videoOutputPortListeners.UnRegister(listener); } // Dispatcher for IVideoOutputPortEvents /* static */ void IarmHostImpl::Dispatch(std::function&& fn) { + std::lock_guard lock(s_videoOutputPortListeners.Mutex()); Dispatch(s_videoOutputPortListeners, std::move(fn)); } dsError_t IarmHostImpl::Register(IAudioOutputPortEvents* listener) { - std::lock_guard lock(s_mutex); return s_audioOutputPortListeners.Register(listener); } dsError_t IarmHostImpl::UnRegister(IAudioOutputPortEvents* listener) { - std::lock_guard lock(s_mutex); return s_audioOutputPortListeners.UnRegister(listener); } // Dispatcher for IAudioOutputPortEvents /* static */ void IarmHostImpl::Dispatch(std::function&& fn) { + std::lock_guard lock(s_audioOutputPortListeners.Mutex()); Dispatch(s_audioOutputPortListeners, std::move(fn)); } dsError_t IarmHostImpl::Register(ICompositeInEvents* listener) { - std::lock_guard lock(s_mutex); return s_compositeListeners.Register(listener); } dsError_t IarmHostImpl::UnRegister(ICompositeInEvents* listener) { - std::lock_guard lock(s_mutex); return s_compositeListeners.UnRegister(listener); } // Dispatcher for IARMGroupComposite /* static */ void IarmHostImpl::Dispatch(std::function&& fn) { + std::lock_guard lock(s_compositeListeners.Mutex()); Dispatch(s_compositeListeners, std::move(fn)); } dsError_t IarmHostImpl::Register(IDisplayEvents* listener) { - std::lock_guard lock(s_mutex); return s_displayListeners.Register(listener); } dsError_t IarmHostImpl::UnRegister(IDisplayEvents* listener) { - std::lock_guard lock(s_mutex); return s_displayListeners.UnRegister(listener); } // Dispatcher for IARMGroupDisplay /* static */ void IarmHostImpl::Dispatch(std::function&& fn) { + std::lock_guard lock(s_displayListeners.Mutex()); Dispatch(s_displayListeners, std::move(fn)); } dsError_t IarmHostImpl::Register(IDisplayDeviceEvents* listener) { - std::lock_guard lock(s_mutex); return s_displayDeviceListeners.Register(listener); } dsError_t IarmHostImpl::UnRegister(IDisplayDeviceEvents* listener) { - std::lock_guard lock(s_mutex); return s_displayDeviceListeners.UnRegister(listener); } // Dispatcher for IDisplayDeviceEvents /* static */ void IarmHostImpl::Dispatch(std::function&& fn) { + std::lock_guard lock(s_displayDeviceListeners.Mutex()); Dispatch(s_displayDeviceListeners, std::move(fn)); } diff --git a/ds/iarm/IarmHostImpl.hpp b/ds/iarm/IarmHostImpl.hpp index 5a906ae8..b680f63f 100755 --- a/ds/iarm/IarmHostImpl.hpp +++ b/ds/iarm/IarmHostImpl.hpp @@ -81,6 +81,8 @@ class IarmHostImpl { return dsERR_INVALID_PARAM; // Error: Listener is null } + std::lock_guard lock(m_mutex); + if (!m_registered) { m_registered = IARMGroup::RegisterIarmEvents(); @@ -113,6 +115,8 @@ class IarmHostImpl { return dsERR_INVALID_PARAM; // Error: Listener is null } + std::lock_guard lock(m_mutex); + auto it = std::find(this->begin(), this->end(), listener); if (it == this->end()) { // Listener not found @@ -135,6 +139,8 @@ class IarmHostImpl { // This will clear the list and unregister IARM events if no listeners are left dsError_t Release() { + std::lock_guard lock(m_mutex); + if (m_registered) { m_registered = !IARMGroup::UnRegisterIarmEvents(); } @@ -144,7 +150,13 @@ class IarmHostImpl { return dsERR_NONE; // Success } + std::mutex& Mutex() + { + return m_mutex; + } + private: + std::mutex m_mutex; // To protect access to the list and callback notifications bool m_registered = false; // To track if IARM events are registered }; @@ -209,8 +221,6 @@ class IarmHostImpl { dsError_t UnRegister(IDisplayDeviceEvents* listener); private: - static std::mutex s_mutex; - static CallbackList s_hdmiInListeners; static CallbackList s_videoDeviceListeners; static CallbackList s_videoOutputPortListeners; From 0a44b369db082174ceb733c13e0697a3311834f6 Mon Sep 17 00:00:00 2001 From: Shrinivas Kamath Date: Fri, 29 Aug 2025 07:39:42 +0000 Subject: [PATCH 063/103] associate clientName with notification listener --- ds/host.cpp | 30 ++++++++++---------- ds/iarm/IarmHostImpl.cpp | 39 +++++++++++++------------ ds/iarm/IarmHostImpl.hpp | 61 ++++++++++++++++++++++++++++++---------- ds/include/host.hpp | 46 +++++++++++++++++++++++++----- 4 files changed, 121 insertions(+), 55 deletions(-) diff --git a/ds/host.cpp b/ds/host.cpp index 19911959..f5897a06 100644 --- a/ds/host.cpp +++ b/ds/host.cpp @@ -910,10 +910,9 @@ DefaultImpl& Host::impl() INT_WARN("Base impl of OnDisplayHDCPStatus called. "); } - -dsError_t Host::Register(IHDMIInEvents *listener) +dsError_t Host::Register(IHDMIInEvents *listener, const std::string& clientName) { - return impl().Register(listener); + return impl().Register(listener, clientName); } dsError_t Host::UnRegister(IHDMIInEvents *listener) @@ -921,9 +920,9 @@ dsError_t Host::UnRegister(IHDMIInEvents *listener) return impl().UnRegister(listener); } -dsError_t Host::Register(ICompositeInEvents *listener) +dsError_t Host::Register(ICompositeInEvents *listener, const std::string& clientName) { - return impl().Register(listener); + return impl().Register(listener, clientName); } dsError_t Host::UnRegister(ICompositeInEvents *listener) @@ -931,9 +930,9 @@ dsError_t Host::UnRegister(ICompositeInEvents *listener) return impl().UnRegister(listener); } -dsError_t Host::Register(IDisplayEvents *listener) +dsError_t Host::Register(IDisplayEvents *listener, const std::string& clientName) { - return impl().Register(listener); + return impl().Register(listener, clientName); } dsError_t Host::UnRegister(IDisplayEvents *listener) @@ -941,9 +940,9 @@ dsError_t Host::UnRegister(IDisplayEvents *listener) return impl().UnRegister(listener); } -dsError_t Host::Register(IVideoDeviceEvents* listener) +dsError_t Host::Register(IVideoDeviceEvents* listener, const std::string& clientName) { - return impl().Register(listener); + return impl().Register(listener, clientName); } dsError_t Host::UnRegister(IVideoDeviceEvents* listener) @@ -951,9 +950,9 @@ dsError_t Host::UnRegister(IVideoDeviceEvents* listener) return impl().UnRegister(listener); } -dsError_t Host::Register(IVideoOutputPortEvents* listener) +dsError_t Host::Register(IVideoOutputPortEvents* listener, const std::string& clientName) { - return impl().Register(listener); + return impl().Register(listener, clientName); } dsError_t Host::UnRegister(IVideoOutputPortEvents* listener) @@ -961,9 +960,9 @@ dsError_t Host::UnRegister(IVideoOutputPortEvents* listener) return impl().UnRegister(listener); } -dsError_t Host::Register(IAudioOutputPortEvents* listener) +dsError_t Host::Register(IAudioOutputPortEvents* listener, const std::string& clientName) { - return impl().Register(listener); + return impl().Register(listener, clientName); } dsError_t Host::UnRegister(IAudioOutputPortEvents* listener) @@ -971,8 +970,9 @@ dsError_t Host::UnRegister(IAudioOutputPortEvents* listener) return impl().UnRegister(listener); } -dsError_t Host::Register(IDisplayDeviceEvents* listener) { - return impl().Register(listener); +dsError_t Host::Register(IDisplayDeviceEvents* listener, const std::string& clientName) +{ + return impl().Register(listener, clientName); } dsError_t Host::UnRegister(IDisplayDeviceEvents* listener) { diff --git a/ds/iarm/IarmHostImpl.cpp b/ds/iarm/IarmHostImpl.cpp index a482fb8e..e96aedbe 100755 --- a/ds/iarm/IarmHostImpl.cpp +++ b/ds/iarm/IarmHostImpl.cpp @@ -955,26 +955,29 @@ IarmHostImpl::~IarmHostImpl() } template -/* static */ void IarmHostImpl::Dispatch(const std::list& listeners, F&& fn) +/* static */ void Dispatch(const std::list>& listeners, F&& fn) { std::stringstream ss; - for (auto* listener : listeners) { + for (auto& pair : listeners) { + // pair.first is the listener + // pair.second is the clientName + auto start = std::chrono::steady_clock::now(); - fn(listener); + fn(pair.first); auto end = std::chrono::steady_clock::now(); auto elapsed = std::chrono::duration_cast(end - start); - ss << "\t client =" << listener << ", elapsed = " << elapsed.count() << " ms\n"; + ss << "\t client= " << pair.second << pair << ", elapsed = " << elapsed.count() << " ms\n"; } INT_INFO("%s Dispatch done to %zu listeners\n%s", typeid(T).name(), listeners.size(), ss.str().c_str()); } -dsError_t IarmHostImpl::Register(IHDMIInEvents* listener) +dsError_t IarmHostImpl::Register(IHDMIInEvents* listener, const std::string& clientName) { - return s_hdmiInListeners.Register(listener); + return s_hdmiInListeners.Register(listener, clientName); } dsError_t IarmHostImpl::UnRegister(IHDMIInEvents* listener) @@ -989,9 +992,9 @@ dsError_t IarmHostImpl::UnRegister(IHDMIInEvents* listener) Dispatch(s_hdmiInListeners, std::move(fn)); } -dsError_t IarmHostImpl::Register(IVideoDeviceEvents* listener) +dsError_t IarmHostImpl::Register(IVideoDeviceEvents* listener, const std::string& clientName) { - return s_videoDeviceListeners.Register(listener); + return s_videoDeviceListeners.Register(listener, clientName); } dsError_t IarmHostImpl::UnRegister(IVideoDeviceEvents* listener) @@ -1006,9 +1009,9 @@ dsError_t IarmHostImpl::UnRegister(IVideoDeviceEvents* listener) Dispatch(s_videoDeviceListeners, std::move(fn)); } -dsError_t IarmHostImpl::Register(IVideoOutputPortEvents* listener) +dsError_t IarmHostImpl::Register(IVideoOutputPortEvents* listener, const std::string& clientName) { - return s_videoOutputPortListeners.Register(listener); + return s_videoOutputPortListeners.Register(listener, clientName); } dsError_t IarmHostImpl::UnRegister(IVideoOutputPortEvents* listener) @@ -1023,9 +1026,9 @@ dsError_t IarmHostImpl::UnRegister(IVideoOutputPortEvents* listener) Dispatch(s_videoOutputPortListeners, std::move(fn)); } -dsError_t IarmHostImpl::Register(IAudioOutputPortEvents* listener) +dsError_t IarmHostImpl::Register(IAudioOutputPortEvents* listener, const std::string& clientName) { - return s_audioOutputPortListeners.Register(listener); + return s_audioOutputPortListeners.Register(listener, clientName); } dsError_t IarmHostImpl::UnRegister(IAudioOutputPortEvents* listener) @@ -1040,9 +1043,9 @@ dsError_t IarmHostImpl::UnRegister(IAudioOutputPortEvents* listener) Dispatch(s_audioOutputPortListeners, std::move(fn)); } -dsError_t IarmHostImpl::Register(ICompositeInEvents* listener) +dsError_t IarmHostImpl::Register(ICompositeInEvents* listener, const std::string& clientName) { - return s_compositeListeners.Register(listener); + return s_compositeListeners.Register(listener, clientName); } dsError_t IarmHostImpl::UnRegister(ICompositeInEvents* listener) @@ -1057,9 +1060,9 @@ dsError_t IarmHostImpl::UnRegister(ICompositeInEvents* listener) Dispatch(s_compositeListeners, std::move(fn)); } -dsError_t IarmHostImpl::Register(IDisplayEvents* listener) +dsError_t IarmHostImpl::Register(IDisplayEvents* listener, const std::string& clientName) { - return s_displayListeners.Register(listener); + return s_displayListeners.Register(listener, clientName); } dsError_t IarmHostImpl::UnRegister(IDisplayEvents* listener) @@ -1074,9 +1077,9 @@ dsError_t IarmHostImpl::UnRegister(IDisplayEvents* listener) Dispatch(s_displayListeners, std::move(fn)); } -dsError_t IarmHostImpl::Register(IDisplayDeviceEvents* listener) +dsError_t IarmHostImpl::Register(IDisplayDeviceEvents* listener, const std::string& clientName) { - return s_displayDeviceListeners.Register(listener); + return s_displayDeviceListeners.Register(listener, clientName); } dsError_t IarmHostImpl::UnRegister(IDisplayDeviceEvents* listener) diff --git a/ds/iarm/IarmHostImpl.hpp b/ds/iarm/IarmHostImpl.hpp index b680f63f..c57ba73c 100755 --- a/ds/iarm/IarmHostImpl.hpp +++ b/ds/iarm/IarmHostImpl.hpp @@ -51,7 +51,7 @@ class IarmHostImpl { // Manages a list of listeners and corresponding IARM Event Group operations. // Private internal class, not to be used directly by clients. template - class CallbackList : public std::list { + class CallbackList : public std::list> { public: CallbackList() : m_registered(false) @@ -74,7 +74,8 @@ class IarmHostImpl { // @brief Register a listener, also register IARM events if not already registered // if the listener is already registered, listener will not be added again // if IARM event registration fails, listener will not be added - dsError_t Register(T listener) + // clientName is for logging purposes only, if not available, pass empty string + dsError_t Register(T listener, const std::string& clientName) { if (nullptr == listener) { INT_ERROR("%s listener is null", typeid(T).name()); @@ -92,16 +93,19 @@ class IarmHostImpl { } } - auto it = std::find(this->begin(), this->end(), listener); + auto it = std::find_if(this->begin(), this->end(), [listener](const std::pair& pair) { + return pair.first == listener; + }); + if (it != this->end()) { // Listener already registered INT_ERROR("%s %p is already registered", typeid(T).name(), listener); return dsERR_NONE; // Success: Listener already registered } - this->push_back(listener); + this->emplace_back(listener, clientName); - INT_INFO("%s %p registered", typeid(T).name(), listener); + INT_INFO("%s %s %p registered", clientName.c_str(), typeid(T).name(), listener); return dsERR_NONE; } @@ -117,16 +121,22 @@ class IarmHostImpl { std::lock_guard lock(m_mutex); - auto it = std::find(this->begin(), this->end(), listener); + // pair.first is the listener, pair.second is the clientName + auto it = std::find_if(this->begin(), this->end(), [listener](const auto& pair) { + return pair.first == listener; + }); + if (it == this->end()) { // Listener not found INT_ERROR("%s %p is not registered", typeid(T).name(), listener); return dsERR_RESOURCE_NOT_AVAILABLE; // Error: Listener not found } + const std::string clientName = it->second; + this->erase(it); - INT_INFO("%s %p unregistered", typeid(T).name(), listener); + INT_INFO("%s %s %p unregistered", clientName.c_str(), typeid(T).name(), listener); if (this->empty() && m_registered) { m_registered = !IARMGroup::UnRegisterIarmEvents(); @@ -166,58 +176,79 @@ class IarmHostImpl { // @brief Register a listener for HDMI device events // @param listener: class object implementing the listener - dsError_t Register(IHDMIInEvents* listener); + // @param clientName: name of the client registering the listener, for logging purposes only + // @return dsERR_NONE on success, appropriate dsError_t on failure + dsError_t Register(IHDMIInEvents* listener, const std::string& clientName); // @brief UnRegister a listener for HDMI device events // @param listener: class object implementing the listener + // @return dsERR_NONE on success, appropriate dsError_t on failure dsError_t UnRegister(IHDMIInEvents* listener); // @brief Register a listener for video device events // @param listener: class object implementing the listener - dsError_t Register(IVideoDeviceEvents* listener); + // @param clientName: name of the client registering the listener, for logging purposes only + // @return dsERR_NONE on success, appropriate dsError_t on failure + dsError_t Register(IVideoDeviceEvents* listener, const std::string& clientName); // @brief UnRegister a listener for video device events // @param listener: class object implementing the listener + // @return dsERR_NONE on success, appropriate dsError_t on failure dsError_t UnRegister(IVideoDeviceEvents* listener); // @brief Register a listener for video port events // @param listener: class object implementing the listener - dsError_t Register(IVideoOutputPortEvents* listener); + // @param clientName: name of the client registering the listener, for logging purposes only + // @return dsERR_NONE on success, appropriate dsError_t on failure + dsError_t Register(IVideoOutputPortEvents* listener, const std::string& clientName); // @brief UnRegister a listener for video port events // @param listener: class object implementing the listener + // @return dsERR_NONE on success, appropriate dsError_t on failure dsError_t UnRegister(IVideoOutputPortEvents* listener); // @brief Register a listener for audio port events // @param listener: class object implementing the listener - dsError_t Register(IAudioOutputPortEvents* listener); + // @param clientName: name of the client registering the listener, for logging purposes only + // @return dsERR_NONE on success, appropriate dsError_t on failure + dsError_t Register(IAudioOutputPortEvents* listener, const std::string& clientName); // @brief UnRegister a listener for audio port events // @param listener: class object implementing the listener + // @return dsERR_NONE on success, appropriate dsError_t on failure dsError_t UnRegister(IAudioOutputPortEvents* listener); // @brief Register a listener for Composite events // @param listener: class object implementing the listener - dsError_t Register(ICompositeInEvents* listener); + // @param clientName: name of the client registering the listener, for logging purposes only + // @return dsERR_NONE on success, appropriate dsError_t on failure + dsError_t Register(ICompositeInEvents* listener, const std::string& clientName); // @brief UnRegister a listener for Composite events // @param listener: class object implementing the listener + // @return dsERR_NONE on success, appropriate dsError_t on failure dsError_t UnRegister(ICompositeInEvents* listener); // @brief Register a listener for Composite events // @param listener: class object implementing the listener - dsError_t Register(IDisplayEvents* listener); + // @param clientName: name of the client registering the listener, for logging purposes only + // @return dsERR_NONE on success, appropriate dsError_t on failure + dsError_t Register(IDisplayEvents* listener, const std::string& clientName); // @brief UnRegister a listener for Composite events // @param listener: class object implementing the listener + // @return dsERR_NONE on success, appropriate dsError_t on failure dsError_t UnRegister(IDisplayEvents* listener); // @brief Register a listener for display device events // @param listener: class object implementing the listener - dsError_t Register(IDisplayDeviceEvents* listener); + // @param clientName: name of the client registering the listener, for logging purposes only + // @return dsERR_NONE on success, appropriate dsError_t on failure + dsError_t Register(IDisplayDeviceEvents* listener, const std::string& clientName); // @brief UnRegister a listener for display device events // @param listener: class object implementing the listener + // @return dsERR_NONE on success, appropriate dsError_t on failure dsError_t UnRegister(IDisplayDeviceEvents* listener); private: @@ -230,7 +261,7 @@ class IarmHostImpl { static CallbackList s_displayDeviceListeners; template - static void Dispatch(const std::list& listeners, F&& fn); + static void Dispatch(const std::list>& listeners, F&& fn); static void Dispatch(std::function&& fn); static void Dispatch(std::function&& fn); diff --git a/ds/include/host.hpp b/ds/include/host.hpp index 9afb9abf..70e198d4 100644 --- a/ds/include/host.hpp +++ b/ds/include/host.hpp @@ -63,6 +63,8 @@ class Host { static const int kPowerStandby; struct IHDMIInEvents { + virtual ~IHDMIInEvents() = default; + // @brief HDMI Event Hot Plug // @param port: port 0 or 1 et al // @param isConnected: is it connected (true) or not (false) @@ -106,14 +108,19 @@ class Host { // @brief Register a listener for HDMI device events // @param listener: class object implementing the listener - dsError_t Register(IHDMIInEvents* listener); + // @param clientName: Optional (but highly recommended) name of the client registering for events + // clientName is used for logging purposes only + // @return dsERR_NONE on success, appropriate dsError_t on failure + dsError_t Register(IHDMIInEvents* listener, const std::string& clientName = ""); // @brief UnRegister a listener for HDMI device events // @param listener: class object implementing the listener + // @return dsERR_NONE on success, appropriate dsError_t on failure dsError_t UnRegister(IHDMIInEvents* listener); struct ICompositeInEvents { virtual ~ICompositeInEvents() = default; + // @brief Composite In Hotplug event // @param port: Port of the hotplug // @param isConnected: Is it connected (true) or not(false) @@ -137,10 +144,14 @@ class Host { // @brief Register a listener for composite events // @param listener: class object implementing the listener - dsError_t Register(ICompositeInEvents* listener); + // @param clientName: Optional (but highly recommended) name of the client registering for events + // clientName is used for logging purposes only + // @return dsERR_NONE on success, appropriate dsError_t on failure + dsError_t Register(ICompositeInEvents* listener, const std::string& clientName = ""); // @brief UnRegister a listener for composite events // @param listener: class object implementing the listener + // @return dsERR_NONE on success, appropriate dsError_t on failure dsError_t UnRegister(ICompositeInEvents* listener); struct IDisplayEvents { @@ -156,10 +167,14 @@ class Host { // @brief Register a listener for display events // @param listener: class object implementing the listener - dsError_t Register(IDisplayEvents* listener); + // @param clientName: Optional (but highly recommended) name of the client registering for events + // clientName is used for logging purposes only + // @return dsERR_NONE on success, appropriate dsError_t on failure + dsError_t Register(IDisplayEvents* listener, const std::string& clientName = ""); // @brief UnRegister a listener for display events // @param listener: class object implementing the listener + // @return dsERR_NONE on success, appropriate dsError_t on failure dsError_t UnRegister(IDisplayEvents* listener); struct IVideoDeviceEvents { @@ -180,10 +195,14 @@ class Host { // @brief Register a listener for video device events // @param listener: class object implementing the listener - dsError_t Register(IVideoDeviceEvents* listener); + // @param clientName: Optional (but highly recommended) name of the client registering for events + // clientName is used for logging purposes only + // @return dsERR_NONE on success, appropriate dsError_t on failure + dsError_t Register(IVideoDeviceEvents* listener, const std::string& clientName = ""); // @brief UnRegister a listener for video device events // @param listener: class object implementing the listener + // @return dsERR_NONE on success, appropriate dsError_t on failure dsError_t UnRegister(IVideoDeviceEvents* listener); struct IVideoOutputPortEvents { @@ -210,10 +229,14 @@ class Host { // @brief Register a listener for video port events // @param listener: class object implementing the listener - dsError_t Register(IVideoOutputPortEvents* listener); + // @param clientName: Optional (but highly recommended) name of the client registering for events + // clientName is used for logging purposes only + // @return dsERR_NONE on success, appropriate dsError_t on failure + dsError_t Register(IVideoOutputPortEvents* listener, const std::string& clientName = ""); // @brief UnRegister a listener for video port events // @param listener: class object implementing the listener + // @return dsERR_NONE on success, appropriate dsError_t on failure dsError_t UnRegister(IVideoOutputPortEvents* listener); struct IAudioOutputPortEvents { @@ -267,10 +290,14 @@ class Host { // @brief Register a listener for audio port events // @param listener: class object implementing the listener - dsError_t Register(IAudioOutputPortEvents* listener); + // @param clientName: Optional (but highly recommended) name of the client registering for events + // clientName is used for logging purposes only + // @return dsERR_NONE on success, appropriate dsError_t on failure + dsError_t Register(IAudioOutputPortEvents* listener, const std::string& clientName = ""); // @brief UnRegister a listener for audio port events // @param listener: class object implementing the listener + // @return dsERR_NONE on success, appropriate dsError_t on failure dsError_t UnRegister(IAudioOutputPortEvents* listener); struct IDisplayDeviceEvents { @@ -283,10 +310,14 @@ class Host { // @brief Register a listener for display device events // @param listener: class object implementing the listener - dsError_t Register(IDisplayDeviceEvents* listener); + // @param clientName: Optional (but highly recommended) name of the client registering for events + // clientName is used for logging purposes only + // @return dsERR_NONE on success, appropriate dsError_t on failure + dsError_t Register(IDisplayDeviceEvents* listener, const std::string& clientName = ""); // @brief UnRegister a listener for display device events // @param listener: class object implementing the listener + // @return dsERR_NONE on success, appropriate dsError_t on failure dsError_t UnRegister(IDisplayDeviceEvents* listener); bool setPowerMode(int mode); @@ -328,6 +359,7 @@ class Host { private: std::unique_ptr m_impl; + Host(); virtual ~Host(); // Avoid copies From 7f3c21d6b343b6e60afad5739f3e95d956742d1f Mon Sep 17 00:00:00 2001 From: skamath <161743589+skamath@users.noreply.github.com> Date: Fri, 29 Aug 2025 13:17:46 +0530 Subject: [PATCH 064/103] prepend IarmHostImpl scope Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- ds/iarm/IarmHostImpl.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ds/iarm/IarmHostImpl.cpp b/ds/iarm/IarmHostImpl.cpp index e96aedbe..579b8a41 100755 --- a/ds/iarm/IarmHostImpl.cpp +++ b/ds/iarm/IarmHostImpl.cpp @@ -955,7 +955,7 @@ IarmHostImpl::~IarmHostImpl() } template -/* static */ void Dispatch(const std::list>& listeners, F&& fn) +/* static */ void IarmHostImpl::Dispatch(const std::list>& listeners, F&& fn) { std::stringstream ss; From abd4e2a73928ede66f760d4bb88b7c27ba552339 Mon Sep 17 00:00:00 2001 From: Shrinivas Kamath Date: Fri, 29 Aug 2025 08:40:13 +0000 Subject: [PATCH 065/103] minor: resolve compilation error --- ds/iarm/IarmHostImpl.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ds/iarm/IarmHostImpl.cpp b/ds/iarm/IarmHostImpl.cpp index 579b8a41..f94080a5 100755 --- a/ds/iarm/IarmHostImpl.cpp +++ b/ds/iarm/IarmHostImpl.cpp @@ -969,7 +969,7 @@ template auto end = std::chrono::steady_clock::now(); auto elapsed = std::chrono::duration_cast(end - start); - ss << "\t client= " << pair.second << pair << ", elapsed = " << elapsed.count() << " ms\n"; + ss << "\t client= " << pair.second << " @ " << pair.first << ", elapsed = " << elapsed.count() << " ms\n"; } INT_INFO("%s Dispatch done to %zu listeners\n%s", typeid(T).name(), listeners.size(), ss.str().c_str()); From 43e82df16d6629f665407fd344131922b2b86af2 Mon Sep 17 00:00:00 2001 From: Shrinivas Kamath Date: Fri, 29 Aug 2025 08:37:27 +0000 Subject: [PATCH 066/103] redefine dsAudioPortState_t, but then control visibility --- ds/iarm/IarmHostImpl.cpp | 4 +--- ds/include/host.hpp | 22 ++++++++++++++++++++-- rpc/include/dsMgr.h | 3 +++ 3 files changed, 24 insertions(+), 5 deletions(-) diff --git a/ds/iarm/IarmHostImpl.cpp b/ds/iarm/IarmHostImpl.cpp index f94080a5..5d44e96a 100755 --- a/ds/iarm/IarmHostImpl.cpp +++ b/ds/iarm/IarmHostImpl.cpp @@ -401,7 +401,6 @@ class IARMGroupAudioOutputPort { } }; - // TODO: requires dsMgr.h header for dsAudioPortState_t ? static void iarmAudioPortStateChangedHandler(const char* owner, IARM_EventId_t eventId, void* data, size_t) { INT_INFO("IARM_BUS_DSMGR_EVENT_AUDIO_PORT_STATE received owner = %s, eventId = %d", owner, eventId); @@ -416,8 +415,7 @@ class IARMGroupAudioOutputPort { dsAudioPortState_t audioPortState = eventData->data.AudioPortStateInfo.audioPortState; IarmHostImpl::Dispatch([audioPortState](IAudioOutputPortEvents* listener) { - // TODO: - // listener->OnAudioPortStateChanged(audioPortState); + listener->OnAudioPortStateChanged(audioPortState); }); } else { INT_ERROR("Invalid data received for audio port state change"); diff --git a/ds/include/host.hpp b/ds/include/host.hpp index 70e198d4..3f8d0e17 100644 --- a/ds/include/host.hpp +++ b/ds/include/host.hpp @@ -38,6 +38,25 @@ #include "videoDevice.hpp" #include "videoOutputPort.hpp" +// dsMgr.h cannot be exposed to clients as we plan to deprecate it +// this is only temporary until dsAudioPortState_t is moved to ds halif headers +#ifndef HAVE_DSAUDIOPORT_STATE_TYPE +#define HAVE_DSAUDIOPORT_STATE_TYPE +#ifdef __cplusplus +extern "C" { +#endif + +typedef enum _dsAudioPortState { + dsAUDIOPORT_STATE_UNINITIALIZED, + dsAUDIOPORT_STATE_INITIALIZED, + dsAUDIOPORT_STATE_MAX +} dsAudioPortState_t; + +#ifdef __cplusplus +} +#endif +#endif // HAVE_DSAUDIOPORT_STATE_TYPE + /** * @file host.hpp * @brief It contains class, structures referenced by host.cpp file. @@ -271,8 +290,7 @@ class Host { // @brief Audio port state changed // @param audioPortState: audio port state - // TODO: requires dsMgr.h header include ?? - // virtual void OnAudioPortStateChanged(dsAudioPortState_t audioPortState); + virtual void OnAudioPortStateChanged(dsAudioPortState_t audioPortState); // @brief Audio mode for the respective audio port - raised for every type of port // @param audioPortType: audio port type see dsAudioPortType_t diff --git a/rpc/include/dsMgr.h b/rpc/include/dsMgr.h index 49cf9c2c..93d63c66 100755 --- a/rpc/include/dsMgr.h +++ b/rpc/include/dsMgr.h @@ -81,11 +81,14 @@ typedef enum _DSMgr_EventId_t { IARM_BUS_DSMGR_EVENT_MAX, /*!< Max Event */ } IARM_Bus_DSMgr_EventId_t; +#ifndef HAVE_DSAUDIOPORT_STATE_TYPE +#define HAVE_DSAUDIOPORT_STATE_TYPE typedef enum _dsAudioPortState { dsAUDIOPORT_STATE_UNINITIALIZED, dsAUDIOPORT_STATE_INITIALIZED, dsAUDIOPORT_STATE_MAX } dsAudioPortState_t; +#endif /*! DS Manager Event Data */ typedef struct _DSMgr_EventData_t { From 7c37d8092148bf01506556f21625022c321cebf5 Mon Sep 17 00:00:00 2001 From: kkaliyaperumal Date: Fri, 29 Aug 2025 18:23:28 +0530 Subject: [PATCH 067/103] fixing hdmi in warnings --- ds/host.cpp | 48 ++++++++++++++++++++++++++++++++++++++++ ds/iarm/IarmHostImpl.cpp | 39 ++++++++++++++++++-------------- ds/include/host.hpp | 18 ++++++++------- 3 files changed, 80 insertions(+), 25 deletions(-) diff --git a/ds/host.cpp b/ds/host.cpp index 9eb97043..e099e61a 100644 --- a/ds/host.cpp +++ b/ds/host.cpp @@ -774,6 +774,54 @@ DefaultImpl& Host::impl() return *m_impl; } +/* virtual */ void Host::IHDMIInEvents::OnHDMIInEventHotPlug(dsHdmiInPort_t port, bool isConnected) +{ + // If client needs to handle this event, they should override this method + INT_WARN("Base impl of OnHDMIInEventHotPlug called. port: %d, isConnected: %d", port, isConnected); +} + +/* virtual */ void Host::IHDMIInEvents::OnHDMIInEventSignalStatus(dsHdmiInPort_t port, dsHdmiInSignalStatus_t signalStatus) +{ + // If client needs to handle this event, they should override this method + INT_WARN("Base impl of OnHDMIInEventSignalStatus called. port: %d, signalStatus: %d", port, signalStatus); +} + +/* virtual */ void Host::IHDMIInEvents::OnHDMIInEventStatus(dsHdmiInPort_t activePort, bool isPresented) +{ + // If client needs to handle this event, they should override this method + INT_WARN("Base impl of OnHDMIInEventStatus called. activePort: %d, isPresented: %d", activePort, isPresented); +} + +/* virtual */ void Host::IHDMIInEvents::OnHDMIInVideoModeUpdate(dsHdmiInPort_t port, const dsVideoPortResolution_t& videoPortResolution) +{ + // If client needs to handle this event, they should override this method + INT_WARN("Base impl of OnHDMIInVideoModeUpdate called. port: %d, interlaced: %d", port, videoPortResolution.interlaced); +} + +/* virtual */ void Host::IHDMIInEvents::OnHDMIInAllmStatus(dsHdmiInPort_t port, bool allmStatus) +{ + // If client needs to handle this event, they should override this method + INT_WARN("Base impl of OnHDMIInAllmStatus called. port: %d, allmStatus: %d", port, allmStatus); +} + +/* virtual */ void Host::IHDMIInEvents::OnHDMIInAVIContentType(dsHdmiInPort_t port, dsAviContentType_t aviContentType) +{ + // If client needs to handle this event, they should override this method + INT_WARN("Base impl of OnHDMIInAVIContentType called. port: %d, aviContentType: %d", port, aviContentType); +} + +/* virtual */ void Host::IHDMIInEvents::OnHDMIInVRRStatus(dsHdmiInPort_t port, dsVRRType_t vrrType) +{ + // If client needs to handle this event, they should override this method + INT_WARN("Base impl of OnHDMIInVRRStatus called. port: %d, vrrType: %d", port, vrrType); +} + +/* virtual */ void Host::IHDMIInEvents::OnHDMIInAVLatency(int audioDelay, int videoDelay) +{ + // If client needs to handle this event, they should override this method + INT_WARN("Base impl of OnHDMIInAVLatency called. audioDelay: %d, videoDelay: %d", audioDelay, videoDelay); +} + /* virtual */ void Host::IVideoDeviceEvents::OnDisplayFrameratePreChange(const std::string& frameRate) { // If client needs to handle this event, they should override this method diff --git a/ds/iarm/IarmHostImpl.cpp b/ds/iarm/IarmHostImpl.cpp index 763cce10..9e53bf1b 100755 --- a/ds/iarm/IarmHostImpl.cpp +++ b/ds/iarm/IarmHostImpl.cpp @@ -733,7 +733,7 @@ class IARMGroupHdmiIn { } private: - static void iarmHDMIInEventHotPlugHandler(const char* owner, IARM_EventId_t eventId, void* data, size_t len) + static void iarmHDMIInEventHotPlugHandler(const char* owner, IARM_EventId_t eventId, void* data, size_t) { INT_INFO("IARM_BUS_DSMGR_EVENT_HDMI_IN_HOTPLUG received owner = %s, eventId = %d", owner, eventId); @@ -741,7 +741,7 @@ class IARMGroupHdmiIn { return; } - IARM_Bus_DSMgr_EventData_t* eventData = (IARM_Bus_DSMgr_EventData_t*)data; + auto* eventData = static_cast(data); if (eventData) { dsHdmiInPort_t port = eventData->data.hdmi_in_connect.port; @@ -755,7 +755,7 @@ class IARMGroupHdmiIn { } }; - static void iarmHDMIInEventSignalStatusHandler(const char* owner, IARM_EventId_t eventId, void* data, size_t len) + static void iarmHDMIInEventSignalStatusHandler(const char* owner, IARM_EventId_t eventId, void* data, size_t) { INT_INFO("IARM_BUS_DSMGR_EVENT_HDMI_IN_SIGNAL_STATUS received owner = %s, eventId = %d", owner, eventId); @@ -763,7 +763,7 @@ class IARMGroupHdmiIn { return; } - IARM_Bus_DSMgr_EventData_t* eventData = (IARM_Bus_DSMgr_EventData_t*)data; + auto* eventData = static_cast(data); if (eventData) { dsHdmiInPort_t port = eventData->data.hdmi_in_sig_status.port; @@ -777,7 +777,7 @@ class IARMGroupHdmiIn { } }; - static void iarmHDMIInEventStatusHandler(const char* owner, IARM_EventId_t eventId, void* data, size_t len) + static void iarmHDMIInEventStatusHandler(const char* owner, IARM_EventId_t eventId, void* data, size_t) { INT_INFO("IARM_BUS_DSMGR_EVENT_HDMI_IN_STATUS received owner = %s, eventId = %d", owner, eventId); @@ -785,7 +785,7 @@ class IARMGroupHdmiIn { return; } - IARM_Bus_DSMgr_EventData_t* eventData = (IARM_Bus_DSMgr_EventData_t*)data; + auto* eventData = static_cast(data); if (eventData) { dsHdmiInPort_t activePort = eventData->data.hdmi_in_status.port; @@ -799,7 +799,7 @@ class IARMGroupHdmiIn { } }; - static void iarmHDMIInVideoModeUpdateHandler(const char* owner, IARM_EventId_t eventId, void* data, size_t len) + static void iarmHDMIInVideoModeUpdateHandler(const char* owner, IARM_EventId_t eventId, void* data, size_t) { INT_INFO("IARM_BUS_DSMGR_EVENT_HDMI_IN_VIDEO_MODE_UPDATE received owner = %s, eventId = %d", owner, eventId); @@ -807,16 +807,19 @@ class IARMGroupHdmiIn { return; } - IARM_Bus_DSMgr_EventData_t* eventData = (IARM_Bus_DSMgr_EventData_t*)data; + auto* eventData = static_cast(data); if (eventData) { dsHdmiInPort_t port = eventData->data.hdmi_in_video_mode.port; dsVideoPortResolution_t res; + + res.name[0]='\0'; + res.aspectRatio = dsVIDEO_ASPECT_RATIO_MAX; + res.stereoScopicMode = dsVIDEO_SSMODE_UNKNOWN; res.pixelResolution = eventData->data.hdmi_in_video_mode.resolution.pixelResolution; res.interlaced = eventData->data.hdmi_in_video_mode.resolution.interlaced; res.frameRate = eventData->data.hdmi_in_video_mode.resolution.frameRate; - IarmHostImpl::Dispatch([port, res](IHDMIInEvents* listener) { listener->OnHDMIInVideoModeUpdate(port, res); }); @@ -825,7 +828,7 @@ class IARMGroupHdmiIn { } }; - static void iarmHDMIInAllmStatusHandler(const char* owner, IARM_EventId_t eventId, void* data, size_t len) + static void iarmHDMIInAllmStatusHandler(const char* owner, IARM_EventId_t eventId, void* data, size_t) { INT_INFO("IARM_BUS_DSMGR_EVENT_HDMI_IN_ALLM_STATUS received owner = %s, eventId = %d", owner, eventId); @@ -833,7 +836,8 @@ class IARMGroupHdmiIn { return; } - IARM_Bus_DSMgr_EventData_t* eventData = (IARM_Bus_DSMgr_EventData_t*)data; + auto* eventData = static_cast(data); + if (eventData) { dsHdmiInPort_t port = eventData->data.hdmi_in_allm_mode.port; bool allmStatus = eventData->data.hdmi_in_allm_mode.allm_mode; @@ -846,7 +850,7 @@ class IARMGroupHdmiIn { } }; - static void iarmHDMIInVRRStatusHandler(const char* owner, IARM_EventId_t eventId, void* data, size_t len) + static void iarmHDMIInVRRStatusHandler(const char* owner, IARM_EventId_t eventId, void* data, size_t) { INT_INFO("IARM_BUS_DSMGR_EVENT_HDMI_IN_VRR_STATUS received owner = %s, eventId = %d", owner, eventId); @@ -854,7 +858,8 @@ class IARMGroupHdmiIn { return; } - IARM_Bus_DSMgr_EventData_t* eventData = (IARM_Bus_DSMgr_EventData_t*)data; + auto* eventData = static_cast(data); + if (eventData) { dsHdmiInPort_t port = eventData->data.hdmi_in_vrr_mode.port; dsVRRType_t vrrType = eventData->data.hdmi_in_vrr_mode.vrr_type; @@ -868,7 +873,7 @@ class IARMGroupHdmiIn { } }; - static void iarmHDMIInAVIContentTypeHandler(const char* owner, IARM_EventId_t eventId, void* data, size_t len) + static void iarmHDMIInAVIContentTypeHandler(const char* owner, IARM_EventId_t eventId, void* data, size_t) { INT_INFO("IARM_BUS_DSMGR_EVENT_HDMI_IN_AVI_CONTENT_TYPE received owner = %s, eventId = %d", owner, eventId); @@ -876,7 +881,7 @@ class IARMGroupHdmiIn { return; } - IARM_Bus_DSMgr_EventData_t* eventData = (IARM_Bus_DSMgr_EventData_t*)data; + auto* eventData = static_cast(data); if (eventData) { dsHdmiInPort_t port = eventData->data.hdmi_in_content_type.port; @@ -890,7 +895,7 @@ class IARMGroupHdmiIn { } }; - static void iarmHDMIInAVLatencyHandler(const char* owner, IARM_EventId_t eventId, void* data, size_t len) + static void iarmHDMIInAVLatencyHandler(const char* owner, IARM_EventId_t eventId, void* data, size_t) { INT_INFO("IARM_BUS_DSMGR_EVENT_HDMI_IN_AV_LATENCY received owner = %s, eventId = %d", owner, eventId); @@ -898,7 +903,7 @@ class IARMGroupHdmiIn { return; } - IARM_Bus_DSMgr_EventData_t* eventData = (IARM_Bus_DSMgr_EventData_t*)data; + auto* eventData = static_cast(data); if (eventData) { int audioDelay = eventData->data.hdmi_in_av_latency.audio_output_delay; diff --git a/ds/include/host.hpp b/ds/include/host.hpp index ae1fe8a0..bb13a43b 100644 --- a/ds/include/host.hpp +++ b/ds/include/host.hpp @@ -63,53 +63,55 @@ class Host { static const int kPowerStandby; struct IHDMIInEvents { + virtual ~IHDMIInEvents() = default; + // @brief HDMI Event Hot Plug // @text onHDMIInEventHotPlug // @param port: port 0 or 1 et al // @param isConnected: is it connected (true) or not (false) - virtual void OnHDMIInEventHotPlug(dsHdmiInPort_t port, bool isConnected) { }; + virtual void OnHDMIInEventHotPlug(dsHdmiInPort_t port, bool isConnected); // @brief HDMI Event Signal status // @text OnHDMIInEventSignalStatus // @param port: port 0 or 1 et al // @param signalStatus: Signal Status - virtual void OnHDMIInEventSignalStatus(dsHdmiInPort_t port, dsHdmiInSignalStatus_t signalStatus) { }; + virtual void OnHDMIInEventSignalStatus(dsHdmiInPort_t port, dsHdmiInSignalStatus_t signalStatus); // @brief HDMI Event Signal status // @text onHDMIInEventStatus // @param activePort: port 0 or 1 et al // @param isPresented: is it presented or not - virtual void OnHDMIInEventStatus(dsHdmiInPort_t activePort, bool isPresented) { }; + virtual void OnHDMIInEventStatus(dsHdmiInPort_t activePort, bool isPresented); // @brief HDMI Video Mode update // @text onHDMIInVideoModeUpdate // @param port: port 0 or 1 et al // @param videoPortResolution: Video port resolution - virtual void OnHDMIInVideoModeUpdate(dsHdmiInPort_t port, const dsVideoPortResolution_t& videoPortResolution) { }; + virtual void OnHDMIInVideoModeUpdate(dsHdmiInPort_t port, const dsVideoPortResolution_t& videoPortResolution); // @brief HDMI ALLM (Auto Low Latency Mode) status // @text onHDMIInAllmStatus // @param port: port 0 or 1 et al // @param allmStatus: allm status - virtual void OnHDMIInAllmStatus(dsHdmiInPort_t port, bool allmStatus) { }; + virtual void OnHDMIInAllmStatus(dsHdmiInPort_t port, bool allmStatus); // @brief HDMI Event AVI content type // @text OnHDMIInAVIContentType // @param port: port 0 or 1 et al // @param aviContentType: AVI content type - virtual void OnHDMIInAVIContentType(dsHdmiInPort_t port, dsAviContentType_t aviContentType) { }; + virtual void OnHDMIInAVIContentType(dsHdmiInPort_t port, dsAviContentType_t aviContentType); // @brief HDMI VRR status // @text OnHDMIInVRRStatus // @param port: port 0 or 1 et al // @param vrrType: VRR type - virtual void OnHDMIInVRRStatus(dsHdmiInPort_t port, dsVRRType_t vrrType) { }; + virtual void OnHDMIInVRRStatus(dsHdmiInPort_t port, dsVRRType_t vrrType); // @brief HDMI Event AV Latency // @text OnHDMIInAVLatency // @param audioDelay: audio delay (in millisecs) // @param videoDelay: video delay (in millisecs) - virtual void OnHDMIInAVLatency(int audioDelay, int videoDelay) { }; + virtual void OnHDMIInAVLatency(int audioDelay, int videoDelay); }; From 1a5eb215f208bbc837331d6b6016012a92c127d1 Mon Sep 17 00:00:00 2001 From: kkaliyaperumal Date: Fri, 29 Aug 2025 19:12:12 +0530 Subject: [PATCH 068/103] name changed to Hdmi --- ds/host.cpp | 36 +++++++++---------- ds/iarm/IarmHostImpl.cpp | 74 ++++++++++++++++++++-------------------- ds/iarm/IarmHostImpl.hpp | 10 +++--- ds/include/host.hpp | 32 ++++++++--------- 4 files changed, 76 insertions(+), 76 deletions(-) diff --git a/ds/host.cpp b/ds/host.cpp index e099e61a..cf2b402f 100644 --- a/ds/host.cpp +++ b/ds/host.cpp @@ -774,52 +774,52 @@ DefaultImpl& Host::impl() return *m_impl; } -/* virtual */ void Host::IHDMIInEvents::OnHDMIInEventHotPlug(dsHdmiInPort_t port, bool isConnected) +/* virtual */ void Host::IHdmiInEvents::OnHdmiInEventHotPlug(dsHdmiInPort_t port, bool isConnected) { // If client needs to handle this event, they should override this method - INT_WARN("Base impl of OnHDMIInEventHotPlug called. port: %d, isConnected: %d", port, isConnected); + INT_WARN("Base impl of OnHdmiInEventHotPlug called. port: %d, isConnected: %d", port, isConnected); } -/* virtual */ void Host::IHDMIInEvents::OnHDMIInEventSignalStatus(dsHdmiInPort_t port, dsHdmiInSignalStatus_t signalStatus) +/* virtual */ void Host::IHdmiInEvents::OnHdmiInEventSignalStatus(dsHdmiInPort_t port, dsHdmiInSignalStatus_t signalStatus) { // If client needs to handle this event, they should override this method - INT_WARN("Base impl of OnHDMIInEventSignalStatus called. port: %d, signalStatus: %d", port, signalStatus); + INT_WARN("Base impl of OnHdmiInEventSignalStatus called. port: %d, signalStatus: %d", port, signalStatus); } -/* virtual */ void Host::IHDMIInEvents::OnHDMIInEventStatus(dsHdmiInPort_t activePort, bool isPresented) +/* virtual */ void Host::IHdmiInEvents::OnHdmiInEventStatus(dsHdmiInPort_t activePort, bool isPresented) { // If client needs to handle this event, they should override this method - INT_WARN("Base impl of OnHDMIInEventStatus called. activePort: %d, isPresented: %d", activePort, isPresented); + INT_WARN("Base impl of OnHdmiInEventStatus called. activePort: %d, isPresented: %d", activePort, isPresented); } -/* virtual */ void Host::IHDMIInEvents::OnHDMIInVideoModeUpdate(dsHdmiInPort_t port, const dsVideoPortResolution_t& videoPortResolution) +/* virtual */ void Host::IHdmiInEvents::OnHdmiInVideoModeUpdate(dsHdmiInPort_t port, const dsVideoPortResolution_t& videoPortResolution) { // If client needs to handle this event, they should override this method - INT_WARN("Base impl of OnHDMIInVideoModeUpdate called. port: %d, interlaced: %d", port, videoPortResolution.interlaced); + INT_WARN("Base impl of OnHdmiInVideoModeUpdate called. port: %d, interlaced: %d", port, videoPortResolution.interlaced); } -/* virtual */ void Host::IHDMIInEvents::OnHDMIInAllmStatus(dsHdmiInPort_t port, bool allmStatus) +/* virtual */ void Host::IHdmiInEvents::OnHdmiInAllmStatus(dsHdmiInPort_t port, bool allmStatus) { // If client needs to handle this event, they should override this method - INT_WARN("Base impl of OnHDMIInAllmStatus called. port: %d, allmStatus: %d", port, allmStatus); + INT_WARN("Base impl of OnHdmiInAllmStatus called. port: %d, allmStatus: %d", port, allmStatus); } -/* virtual */ void Host::IHDMIInEvents::OnHDMIInAVIContentType(dsHdmiInPort_t port, dsAviContentType_t aviContentType) +/* virtual */ void Host::IHdmiInEvents::OnHdmiInAVIContentType(dsHdmiInPort_t port, dsAviContentType_t aviContentType) { // If client needs to handle this event, they should override this method - INT_WARN("Base impl of OnHDMIInAVIContentType called. port: %d, aviContentType: %d", port, aviContentType); + INT_WARN("Base impl of OnHdmiInAVIContentType called. port: %d, aviContentType: %d", port, aviContentType); } -/* virtual */ void Host::IHDMIInEvents::OnHDMIInVRRStatus(dsHdmiInPort_t port, dsVRRType_t vrrType) +/* virtual */ void Host::IHdmiInEvents::OnHdmiInVRRStatus(dsHdmiInPort_t port, dsVRRType_t vrrType) { // If client needs to handle this event, they should override this method - INT_WARN("Base impl of OnHDMIInVRRStatus called. port: %d, vrrType: %d", port, vrrType); + INT_WARN("Base impl of OnHdmiInVRRStatus called. port: %d, vrrType: %d", port, vrrType); } -/* virtual */ void Host::IHDMIInEvents::OnHDMIInAVLatency(int audioDelay, int videoDelay) +/* virtual */ void Host::IHdmiInEvents::OnHdmiInAVLatency(int audioDelay, int videoDelay) { // If client needs to handle this event, they should override this method - INT_WARN("Base impl of OnHDMIInAVLatency called. audioDelay: %d, videoDelay: %d", audioDelay, videoDelay); + INT_WARN("Base impl of OnHdmiInAVLatency called. audioDelay: %d, videoDelay: %d", audioDelay, videoDelay); } /* virtual */ void Host::IVideoDeviceEvents::OnDisplayFrameratePreChange(const std::string& frameRate) @@ -925,12 +925,12 @@ DefaultImpl& Host::impl() INT_WARN("Base impl of OnDisplayHDMIHotPlug called. displayEvent: %d", displayEvent); } -dsError_t Host::Register(IHDMIInEvents *listener) +dsError_t Host::Register(IHdmiInEvents *listener) { return impl().Register(listener); } -dsError_t Host::UnRegister(IHDMIInEvents *listener) +dsError_t Host::UnRegister(IHdmiInEvents *listener) { return impl().UnRegister(listener); } diff --git a/ds/iarm/IarmHostImpl.cpp b/ds/iarm/IarmHostImpl.cpp index 9e53bf1b..28848bb2 100755 --- a/ds/iarm/IarmHostImpl.cpp +++ b/ds/iarm/IarmHostImpl.cpp @@ -733,7 +733,7 @@ class IARMGroupHdmiIn { } private: - static void iarmHDMIInEventHotPlugHandler(const char* owner, IARM_EventId_t eventId, void* data, size_t) + static void iarmHdmiInEventHotPlugHandler(const char* owner, IARM_EventId_t eventId, void* data, size_t) { INT_INFO("IARM_BUS_DSMGR_EVENT_HDMI_IN_HOTPLUG received owner = %s, eventId = %d", owner, eventId); @@ -747,15 +747,15 @@ class IARMGroupHdmiIn { dsHdmiInPort_t port = eventData->data.hdmi_in_connect.port; bool isConnected = eventData->data.hdmi_in_connect.isPortConnected; - IarmHostImpl::Dispatch([port, isConnected](IHDMIInEvents* listener) { - listener->OnHDMIInEventHotPlug(port, isConnected); + IarmHostImpl::Dispatch([port, isConnected](IHdmiInEvents* listener) { + listener->OnHdmiInEventHotPlug(port, isConnected); }); } else { INT_ERROR("Invalid data received for HdmiIn hot plug"); } }; - static void iarmHDMIInEventSignalStatusHandler(const char* owner, IARM_EventId_t eventId, void* data, size_t) + static void iarmHdmiInEventSignalStatusHandler(const char* owner, IARM_EventId_t eventId, void* data, size_t) { INT_INFO("IARM_BUS_DSMGR_EVENT_HDMI_IN_SIGNAL_STATUS received owner = %s, eventId = %d", owner, eventId); @@ -769,15 +769,15 @@ class IARMGroupHdmiIn { dsHdmiInPort_t port = eventData->data.hdmi_in_sig_status.port; dsHdmiInSignalStatus_t sigStatus = eventData->data.hdmi_in_sig_status.status; - IarmHostImpl::Dispatch([port, sigStatus](IHDMIInEvents* listener) { - listener->OnHDMIInEventSignalStatus(port, sigStatus); + IarmHostImpl::Dispatch([port, sigStatus](IHdmiInEvents* listener) { + listener->OnHdmiInEventSignalStatus(port, sigStatus); }); } else { INT_ERROR("Invalid data received for HdmiIn signal status"); } }; - static void iarmHDMIInEventStatusHandler(const char* owner, IARM_EventId_t eventId, void* data, size_t) + static void iarmHdmiInEventStatusHandler(const char* owner, IARM_EventId_t eventId, void* data, size_t) { INT_INFO("IARM_BUS_DSMGR_EVENT_HDMI_IN_STATUS received owner = %s, eventId = %d", owner, eventId); @@ -791,15 +791,15 @@ class IARMGroupHdmiIn { dsHdmiInPort_t activePort = eventData->data.hdmi_in_status.port; bool isPresented = eventData->data.hdmi_in_status.isPresented; - IarmHostImpl::Dispatch([activePort, isPresented](IHDMIInEvents* listener) { - listener->OnHDMIInEventStatus(activePort, isPresented); + IarmHostImpl::Dispatch([activePort, isPresented](IHdmiInEvents* listener) { + listener->OnHdmiInEventStatus(activePort, isPresented); }); } else { INT_ERROR("Invalid data received for HdmiIn event status"); } }; - static void iarmHDMIInVideoModeUpdateHandler(const char* owner, IARM_EventId_t eventId, void* data, size_t) + static void iarmHdmiInVideoModeUpdateHandler(const char* owner, IARM_EventId_t eventId, void* data, size_t) { INT_INFO("IARM_BUS_DSMGR_EVENT_HDMI_IN_VIDEO_MODE_UPDATE received owner = %s, eventId = %d", owner, eventId); @@ -820,15 +820,15 @@ class IARMGroupHdmiIn { res.interlaced = eventData->data.hdmi_in_video_mode.resolution.interlaced; res.frameRate = eventData->data.hdmi_in_video_mode.resolution.frameRate; - IarmHostImpl::Dispatch([port, res](IHDMIInEvents* listener) { - listener->OnHDMIInVideoModeUpdate(port, res); + IarmHostImpl::Dispatch([port, res](IHdmiInEvents* listener) { + listener->OnHdmiInVideoModeUpdate(port, res); }); } else { INT_ERROR("Invalid data received for HdmiIn video mode update"); } }; - static void iarmHDMIInAllmStatusHandler(const char* owner, IARM_EventId_t eventId, void* data, size_t) + static void iarmHdmiInAllmStatusHandler(const char* owner, IARM_EventId_t eventId, void* data, size_t) { INT_INFO("IARM_BUS_DSMGR_EVENT_HDMI_IN_ALLM_STATUS received owner = %s, eventId = %d", owner, eventId); @@ -842,15 +842,15 @@ class IARMGroupHdmiIn { dsHdmiInPort_t port = eventData->data.hdmi_in_allm_mode.port; bool allmStatus = eventData->data.hdmi_in_allm_mode.allm_mode; - IarmHostImpl::Dispatch([port, allmStatus](IHDMIInEvents* listener) { - listener->OnHDMIInAllmStatus(port, allmStatus); + IarmHostImpl::Dispatch([port, allmStatus](IHdmiInEvents* listener) { + listener->OnHdmiInAllmStatus(port, allmStatus); }); } else { INT_ERROR("Invalid data received for HdmiIn allm status"); } }; - static void iarmHDMIInVRRStatusHandler(const char* owner, IARM_EventId_t eventId, void* data, size_t) + static void iarmHdmiInVRRStatusHandler(const char* owner, IARM_EventId_t eventId, void* data, size_t) { INT_INFO("IARM_BUS_DSMGR_EVENT_HDMI_IN_VRR_STATUS received owner = %s, eventId = %d", owner, eventId); @@ -864,8 +864,8 @@ class IARMGroupHdmiIn { dsHdmiInPort_t port = eventData->data.hdmi_in_vrr_mode.port; dsVRRType_t vrrType = eventData->data.hdmi_in_vrr_mode.vrr_type; - IarmHostImpl::Dispatch([port, vrrType](IHDMIInEvents* listener) { - listener->OnHDMIInVRRStatus(port, vrrType); + IarmHostImpl::Dispatch([port, vrrType](IHdmiInEvents* listener) { + listener->OnHdmiInVRRStatus(port, vrrType); }); } else { @@ -873,7 +873,7 @@ class IARMGroupHdmiIn { } }; - static void iarmHDMIInAVIContentTypeHandler(const char* owner, IARM_EventId_t eventId, void* data, size_t) + static void iarmHdmiInAVIContentTypeHandler(const char* owner, IARM_EventId_t eventId, void* data, size_t) { INT_INFO("IARM_BUS_DSMGR_EVENT_HDMI_IN_AVI_CONTENT_TYPE received owner = %s, eventId = %d", owner, eventId); @@ -887,15 +887,15 @@ class IARMGroupHdmiIn { dsHdmiInPort_t port = eventData->data.hdmi_in_content_type.port; dsAviContentType_t type = eventData->data.hdmi_in_content_type.aviContentType; - IarmHostImpl::Dispatch([port, type](IHDMIInEvents* listener) { - listener->OnHDMIInAVIContentType(port, type); + IarmHostImpl::Dispatch([port, type](IHdmiInEvents* listener) { + listener->OnHdmiInAVIContentType(port, type); }); } else { INT_ERROR("Invalid data received for HdmiIn avi content type"); } }; - static void iarmHDMIInAVLatencyHandler(const char* owner, IARM_EventId_t eventId, void* data, size_t) + static void iarmHdmiInAVLatencyHandler(const char* owner, IARM_EventId_t eventId, void* data, size_t) { INT_INFO("IARM_BUS_DSMGR_EVENT_HDMI_IN_AV_LATENCY received owner = %s, eventId = %d", owner, eventId); @@ -909,8 +909,8 @@ class IARMGroupHdmiIn { int audioDelay = eventData->data.hdmi_in_av_latency.audio_output_delay; int videoDelay = eventData->data.hdmi_in_av_latency.video_latency; - IarmHostImpl::Dispatch([audioDelay, videoDelay](IHDMIInEvents* listener) { - listener->OnHDMIInAVLatency(audioDelay, videoDelay); + IarmHostImpl::Dispatch([audioDelay, videoDelay](IHdmiInEvents* listener) { + listener->OnHdmiInAVLatency(audioDelay, videoDelay); }); } else { INT_ERROR("Invalid data received for HdmiIn av latency"); @@ -919,14 +919,14 @@ class IARMGroupHdmiIn { private: static constexpr EventHandlerMapping handlers[] = { - { IARM_BUS_DSMGR_EVENT_HDMI_IN_HOTPLUG, &IARMGroupHdmiIn::iarmHDMIInEventHotPlugHandler }, - { IARM_BUS_DSMGR_EVENT_HDMI_IN_SIGNAL_STATUS, &IARMGroupHdmiIn::iarmHDMIInEventSignalStatusHandler }, - { IARM_BUS_DSMGR_EVENT_HDMI_IN_STATUS, &IARMGroupHdmiIn::iarmHDMIInEventStatusHandler }, - { IARM_BUS_DSMGR_EVENT_HDMI_IN_VIDEO_MODE_UPDATE, &IARMGroupHdmiIn::iarmHDMIInVideoModeUpdateHandler }, - { IARM_BUS_DSMGR_EVENT_HDMI_IN_ALLM_STATUS, &IARMGroupHdmiIn::iarmHDMIInAllmStatusHandler }, - { IARM_BUS_DSMGR_EVENT_HDMI_IN_VRR_STATUS, &IARMGroupHdmiIn::iarmHDMIInVRRStatusHandler }, - { IARM_BUS_DSMGR_EVENT_HDMI_IN_AVI_CONTENT_TYPE, &IARMGroupHdmiIn::iarmHDMIInAVIContentTypeHandler }, - { IARM_BUS_DSMGR_EVENT_HDMI_IN_AV_LATENCY, &IARMGroupHdmiIn::iarmHDMIInAVLatencyHandler } + { IARM_BUS_DSMGR_EVENT_HDMI_IN_HOTPLUG, &IARMGroupHdmiIn::iarmHdmiInEventHotPlugHandler }, + { IARM_BUS_DSMGR_EVENT_HDMI_IN_SIGNAL_STATUS, &IARMGroupHdmiIn::iarmHdmiInEventSignalStatusHandler }, + { IARM_BUS_DSMGR_EVENT_HDMI_IN_STATUS, &IARMGroupHdmiIn::iarmHdmiInEventStatusHandler }, + { IARM_BUS_DSMGR_EVENT_HDMI_IN_VIDEO_MODE_UPDATE, &IARMGroupHdmiIn::iarmHdmiInVideoModeUpdateHandler }, + { IARM_BUS_DSMGR_EVENT_HDMI_IN_ALLM_STATUS, &IARMGroupHdmiIn::iarmHdmiInAllmStatusHandler }, + { IARM_BUS_DSMGR_EVENT_HDMI_IN_VRR_STATUS, &IARMGroupHdmiIn::iarmHdmiInVRRStatusHandler }, + { IARM_BUS_DSMGR_EVENT_HDMI_IN_AVI_CONTENT_TYPE, &IARMGroupHdmiIn::iarmHdmiInAVIContentTypeHandler }, + { IARM_BUS_DSMGR_EVENT_HDMI_IN_AV_LATENCY, &IARMGroupHdmiIn::iarmHdmiInAVLatencyHandler } }; }; // IARMGroupHdmiIn @@ -939,7 +939,7 @@ constexpr EventHandlerMapping IARMGroupComposite::handlers[]; constexpr EventHandlerMapping IARMGroupDisplay::handlers[]; std::mutex IarmHostImpl::s_mutex; -IarmHostImpl::CallbackList IarmHostImpl::s_hdmiInListeners; +IarmHostImpl::CallbackList IarmHostImpl::s_hdmiInListeners; IarmHostImpl::CallbackList IarmHostImpl::s_videoDeviceListeners; IarmHostImpl::CallbackList IarmHostImpl::s_videoOutputPortListeners; IarmHostImpl::CallbackList IarmHostImpl::s_audioOutputPortListeners; @@ -979,20 +979,20 @@ template INT_INFO("%s Dispatch done to %zu listeners\n%s", typeid(T).name(), listeners.size(), ss.str().c_str()); } -dsError_t IarmHostImpl::Register(IHDMIInEvents* listener) +dsError_t IarmHostImpl::Register(IHdmiInEvents* listener) { std::lock_guard lock(s_mutex); return s_hdmiInListeners.Register(listener); } -dsError_t IarmHostImpl::UnRegister(IHDMIInEvents* listener) +dsError_t IarmHostImpl::UnRegister(IHdmiInEvents* listener) { std::lock_guard lock(s_mutex); return s_hdmiInListeners.UnRegister(listener); } -// Dispatcher for IHDMIInEvents -/* static */ void IarmHostImpl::Dispatch(std::function&& fn) +// Dispatcher for IHdmiInEvents +/* static */ void IarmHostImpl::Dispatch(std::function&& fn) { Dispatch(s_hdmiInListeners, std::move(fn)); } diff --git a/ds/iarm/IarmHostImpl.hpp b/ds/iarm/IarmHostImpl.hpp index 5a906ae8..9468aee1 100755 --- a/ds/iarm/IarmHostImpl.hpp +++ b/ds/iarm/IarmHostImpl.hpp @@ -38,7 +38,7 @@ class IARMGroupDisplayDevice; class IARMGroupComposite; class IARMGroupDisplay; -using IHDMIInEvents = Host::IHDMIInEvents; +using IHdmiInEvents = Host::IHdmiInEvents; using IVideoDeviceEvents = Host::IVideoDeviceEvents; using IVideoOutputPortEvents = Host::IVideoOutputPortEvents; using IAudioOutputPortEvents = Host::IAudioOutputPortEvents; @@ -154,11 +154,11 @@ class IarmHostImpl { // @brief Register a listener for HDMI device events // @param listener: class object implementing the listener - dsError_t Register(IHDMIInEvents* listener); + dsError_t Register(IHdmiInEvents* listener); // @brief UnRegister a listener for HDMI device events // @param listener: class object implementing the listener - dsError_t UnRegister(IHDMIInEvents* listener); + dsError_t UnRegister(IHdmiInEvents* listener); // @brief Register a listener for video device events // @param listener: class object implementing the listener @@ -211,7 +211,7 @@ class IarmHostImpl { private: static std::mutex s_mutex; - static CallbackList s_hdmiInListeners; + static CallbackList s_hdmiInListeners; static CallbackList s_videoDeviceListeners; static CallbackList s_videoOutputPortListeners; static CallbackList s_audioOutputPortListeners; @@ -222,7 +222,7 @@ class IarmHostImpl { template static void Dispatch(const std::list& listeners, F&& fn); - static void Dispatch(std::function&& fn); + static void Dispatch(std::function&& fn); static void Dispatch(std::function&& fn); static void Dispatch(std::function&& fn); static void Dispatch(std::function&& fn); diff --git a/ds/include/host.hpp b/ds/include/host.hpp index bb13a43b..21716ccd 100644 --- a/ds/include/host.hpp +++ b/ds/include/host.hpp @@ -62,66 +62,66 @@ class Host { static const int kPowerOff; static const int kPowerStandby; - struct IHDMIInEvents { - virtual ~IHDMIInEvents() = default; + struct IHdmiInEvents { + virtual ~IHdmiInEvents() = default; // @brief HDMI Event Hot Plug // @text onHDMIInEventHotPlug // @param port: port 0 or 1 et al // @param isConnected: is it connected (true) or not (false) - virtual void OnHDMIInEventHotPlug(dsHdmiInPort_t port, bool isConnected); + virtual void OnHdmiInEventHotPlug(dsHdmiInPort_t port, bool isConnected); // @brief HDMI Event Signal status - // @text OnHDMIInEventSignalStatus + // @text OnHdmiInEventSignalStatus // @param port: port 0 or 1 et al // @param signalStatus: Signal Status - virtual void OnHDMIInEventSignalStatus(dsHdmiInPort_t port, dsHdmiInSignalStatus_t signalStatus); + virtual void OnHdmiInEventSignalStatus(dsHdmiInPort_t port, dsHdmiInSignalStatus_t signalStatus); // @brief HDMI Event Signal status // @text onHDMIInEventStatus // @param activePort: port 0 or 1 et al // @param isPresented: is it presented or not - virtual void OnHDMIInEventStatus(dsHdmiInPort_t activePort, bool isPresented); + virtual void OnHdmiInEventStatus(dsHdmiInPort_t activePort, bool isPresented); // @brief HDMI Video Mode update // @text onHDMIInVideoModeUpdate // @param port: port 0 or 1 et al // @param videoPortResolution: Video port resolution - virtual void OnHDMIInVideoModeUpdate(dsHdmiInPort_t port, const dsVideoPortResolution_t& videoPortResolution); + virtual void OnHdmiInVideoModeUpdate(dsHdmiInPort_t port, const dsVideoPortResolution_t& videoPortResolution); // @brief HDMI ALLM (Auto Low Latency Mode) status // @text onHDMIInAllmStatus // @param port: port 0 or 1 et al // @param allmStatus: allm status - virtual void OnHDMIInAllmStatus(dsHdmiInPort_t port, bool allmStatus); + virtual void OnHdmiInAllmStatus(dsHdmiInPort_t port, bool allmStatus); // @brief HDMI Event AVI content type - // @text OnHDMIInAVIContentType + // @text OnHdmiInAVIContentType // @param port: port 0 or 1 et al // @param aviContentType: AVI content type - virtual void OnHDMIInAVIContentType(dsHdmiInPort_t port, dsAviContentType_t aviContentType); + virtual void OnHdmiInAVIContentType(dsHdmiInPort_t port, dsAviContentType_t aviContentType); // @brief HDMI VRR status - // @text OnHDMIInVRRStatus + // @text OnHdmiInVRRStatus // @param port: port 0 or 1 et al // @param vrrType: VRR type - virtual void OnHDMIInVRRStatus(dsHdmiInPort_t port, dsVRRType_t vrrType); + virtual void OnHdmiInVRRStatus(dsHdmiInPort_t port, dsVRRType_t vrrType); // @brief HDMI Event AV Latency - // @text OnHDMIInAVLatency + // @text OnHdmiInAVLatency // @param audioDelay: audio delay (in millisecs) // @param videoDelay: video delay (in millisecs) - virtual void OnHDMIInAVLatency(int audioDelay, int videoDelay); + virtual void OnHdmiInAVLatency(int audioDelay, int videoDelay); }; // @brief Register a listener for HDMI device events // @param listener: class object implementing the listener - dsError_t Register(IHDMIInEvents *listener); + dsError_t Register(IHdmiInEvents *listener); // @brief UnRegister a listener for HDMI device events // @param listener: class object implementing the listener - dsError_t UnRegister(IHDMIInEvents *listener); + dsError_t UnRegister(IHdmiInEvents *listener); struct ICompositeInEvents { virtual ~ICompositeInEvents() = default; From aacabd164e792d328d3dfe881a06808144c6c73b Mon Sep 17 00:00:00 2001 From: Shrinivas Kamath Date: Fri, 29 Aug 2025 19:27:40 +0530 Subject: [PATCH 069/103] fix full stack build failure --- ds/host.cpp | 7 +++++-- ds/iarm/IarmHostImpl.hpp | 2 +- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/ds/host.cpp b/ds/host.cpp index f5897a06..d8b4361c 100644 --- a/ds/host.cpp +++ b/ds/host.cpp @@ -850,8 +850,11 @@ DefaultImpl& Host::impl() INT_WARN("Base impl of OnDolbyAtmosCapabilitiesChanged called. atmosCapability: %d, status: %d", atmosCapability, status); } -// TODO: requires dsMgr.h header include ?? -// void Host::IAudioOutputPortEvents::OnAudioPortStateChanged(dsAudioPortState_t audioPortState) { } +/* virtual */ void Host::IAudioOutputPortEvents::OnAudioPortStateChanged(dsAudioPortState_t audioPortState) +{ + // If client needs to handle this event, they should override this method + INT_WARN("Base impl of OnAudioPortStateChanged called. audioPortState: %d", audioPortState); +} /* virtual */ void Host::IAudioOutputPortEvents::OnAudioModeEvent(dsAudioPortType_t audioPortType, dsAudioStereoMode_t audioStereoMode) { diff --git a/ds/iarm/IarmHostImpl.hpp b/ds/iarm/IarmHostImpl.hpp index c57ba73c..f5aa26cd 100755 --- a/ds/iarm/IarmHostImpl.hpp +++ b/ds/iarm/IarmHostImpl.hpp @@ -122,7 +122,7 @@ class IarmHostImpl { std::lock_guard lock(m_mutex); // pair.first is the listener, pair.second is the clientName - auto it = std::find_if(this->begin(), this->end(), [listener](const auto& pair) { + auto it = std::find_if(this->begin(), this->end(), [listener](const std::pair& pair) { return pair.first == listener; }); From 546c0100992b7e242df6486baf79a1254a3bd09c Mon Sep 17 00:00:00 2001 From: Shrinivas Kamath Date: Fri, 29 Aug 2025 19:53:15 +0530 Subject: [PATCH 070/103] minor fix, after rebasing to latest --- ds/host.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/ds/host.cpp b/ds/host.cpp index 5d25c74e..554cf0e6 100644 --- a/ds/host.cpp +++ b/ds/host.cpp @@ -767,11 +767,11 @@ Host::~Host() DefaultImpl& Host::impl() { - // lazy instantiation - if (!m_impl) { - m_impl = std::unique_ptr(new DefaultImpl()); - } - return *m_impl; + // lazy instantiation + if (!m_impl) { + m_impl = std::unique_ptr(new DefaultImpl()); + } + return *m_impl; } /* virtual */ void Host::IHdmiInEvents::OnHdmiInEventHotPlug(dsHdmiInPort_t port, bool isConnected) @@ -961,7 +961,7 @@ DefaultImpl& Host::impl() INT_WARN("Base impl of OnDisplayHDCPStatus called. "); } -dsError_t Host::Register(IHDMIInEvents* listener, const std::string& clientName) +dsError_t Host::Register(IHdmiInEvents* listener, const std::string& clientName) { return impl().Register(listener, clientName); } From 2e7ad4f53ec126895f39559f18985a28667225bd Mon Sep 17 00:00:00 2001 From: Shrinivas Kamath Date: Mon, 1 Sep 2025 17:28:11 +0530 Subject: [PATCH 071/103] improve logging in libds --- ds/dslogger.cpp | 33 +++++++++++++++++++++------------ ds/include/dslogger.h | 22 ++++++++++++++-------- 2 files changed, 35 insertions(+), 20 deletions(-) diff --git a/ds/dslogger.cpp b/ds/dslogger.cpp index be81ee48..0b3332b0 100644 --- a/ds/dslogger.cpp +++ b/ds/dslogger.cpp @@ -25,11 +25,13 @@ * @{ **/ +#include +#include #include "dslogger.h" -#include -#define MAX_LOG_BUFF 500 +#define unlikely(x) (__builtin_expect(!!(x), 0)) +#define MAX_LOG_BUFF 512 DS_LogCb logCb = NULL; @@ -38,21 +40,28 @@ void DS_RegisterForLog(DS_LogCb cb) logCb = cb; } -int ds_log(int priority,const char *format, ...) +int ds_log(int priority, const char* fileName, int lineNum, const char *format, ...) { - char tmp_buff[MAX_LOG_BUFF]; + char tmp_buff[MAX_LOG_BUFF] = {'\0'}; + + int offset = snprintf(tmp_buff, MAX_LOG_BUFF, "[%s:%d] ", fileName, lineNum); + + // formatting error + if (unlikely(offset < 0)) { + offset = 0; + } + va_list args; va_start(args, format); - vsnprintf(tmp_buff,MAX_LOG_BUFF-1,format, args); + vsnprintf(tmp_buff + offset, MAX_LOG_BUFF - 1 - offset, format, args); va_end(args); - if(logCb != NULL) - { - logCb(priority,tmp_buff); - } - else - { - return printf(tmp_buff); + + if (NULL != logCb) { + logCb(priority, tmp_buff); + } else { + return printf("%s\n", tmp_buff); } + return 0; } diff --git a/ds/include/dslogger.h b/ds/include/dslogger.h index 6bde12cb..c45d4ed3 100644 --- a/ds/include/dslogger.h +++ b/ds/include/dslogger.h @@ -29,21 +29,27 @@ #ifndef _DS_LOGGER_H_ #define _DS_LOGGER_H_ -#include "dsregisterlog.h" -#include +#include -int ds_log(int priority,const char *format, ...); +int ds_log(int priority, const char* fileName, int lineNum, const char *format, ...); #define INFO_LEVEL 0 #define WARN_LEVEL 1 #define ERROR_LEVEL 2 #define DEBUG_LEVEL 3 - -#define INT_INFO(FORMAT, ...) ds_log(INFO_LEVEL ,FORMAT, ##__VA_ARGS__ ) -#define INT_WARN(FORMAT, ...) ds_log(WARN_LEVEL ,FORMAT, ##__VA_ARGS__ ) -#define INT_ERROR(FORMAT, ...) ds_log(ERROR_LEVEL ,FORMAT, ##__VA_ARGS__ ) -#define INT_DEBUG(FORMAT, ...) ds_log(DEBUG_LEVEL ,FORMAT, ##__VA_ARGS__ ) +// Helper to extract filename from full path +// E.g. "/path/to/file.cpp" -> "file.cpp" +// IMPORTANT: This will work for Unix style paths only +static inline const char* fileName(const char* path) { + const char* slash = strrchr(path, '/'); + return slash ? slash + 1 : path; +} + +#define INT_INFO(FORMAT, ...) ds_log(INFO_LEVEL, fileName(__FILE__), __LINE__, FORMAT, ##__VA_ARGS__ ) +#define INT_WARN(FORMAT, ...) ds_log(WARN_LEVEL, fileName(__FILE__), __LINE__, FORMAT, ##__VA_ARGS__ ) +#define INT_ERROR(FORMAT, ...) ds_log(ERROR_LEVEL, fileName(__FILE__), __LINE__, FORMAT, ##__VA_ARGS__ ) +#define INT_DEBUG(FORMAT, ...) ds_log(DEBUG_LEVEL, fileName(__FILE__), __LINE__, FORMAT, ##__VA_ARGS__ ) #endif From c7866379acff05e692fbc9d7ff5d24460aefe3a3 Mon Sep 17 00:00:00 2001 From: Shrinivas Kamath Date: Mon, 1 Sep 2025 13:20:43 +0000 Subject: [PATCH 072/103] minor fixes --- ds/dslogger.cpp | 5 +---- ds/include/dslogger.h | 2 ++ 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/ds/dslogger.cpp b/ds/dslogger.cpp index 0b3332b0..b62054e0 100644 --- a/ds/dslogger.cpp +++ b/ds/dslogger.cpp @@ -56,7 +56,7 @@ int ds_log(int priority, const char* fileName, int lineNum, const char *format, vsnprintf(tmp_buff + offset, MAX_LOG_BUFF - 1 - offset, format, args); va_end(args); - if (NULL != logCb) { + if (nullptr != logCb) { logCb(priority, tmp_buff); } else { return printf("%s\n", tmp_buff); @@ -65,8 +65,5 @@ int ds_log(int priority, const char* fileName, int lineNum, const char *format, return 0; } - - - /** @} */ /** @} */ diff --git a/ds/include/dslogger.h b/ds/include/dslogger.h index c45d4ed3..6ee219bd 100644 --- a/ds/include/dslogger.h +++ b/ds/include/dslogger.h @@ -31,6 +31,8 @@ #include +#include "dsregisterlog.h" + int ds_log(int priority, const char* fileName, int lineNum, const char *format, ...); #define INFO_LEVEL 0 From 77bc38ab82c0640a366fbad121c113cb79506a4f Mon Sep 17 00:00:00 2001 From: Shrinivas Kamath Date: Mon, 1 Sep 2025 13:47:49 +0000 Subject: [PATCH 073/103] fix minor compile error --- ds/iarm/IarmHostImpl.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ds/iarm/IarmHostImpl.hpp b/ds/iarm/IarmHostImpl.hpp index d3733591..41c65069 100755 --- a/ds/iarm/IarmHostImpl.hpp +++ b/ds/iarm/IarmHostImpl.hpp @@ -251,7 +251,7 @@ class IarmHostImpl { dsError_t UnRegister(IDisplayDeviceEvents* listener); private: - static CallbackList s_hdmiInListeners; + static CallbackList s_hdmiInListeners; static CallbackList s_videoDeviceListeners; static CallbackList s_videoOutputPortListeners; static CallbackList s_audioOutputPortListeners; From 0bbe5d19399bf1ca938805c53a250db679e0dd50 Mon Sep 17 00:00:00 2001 From: Shrinivas Kamath Date: Mon, 1 Sep 2025 13:55:29 +0000 Subject: [PATCH 074/103] fix minor compile error --- ds/iarm/IarmHostImpl.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ds/iarm/IarmHostImpl.cpp b/ds/iarm/IarmHostImpl.cpp index 87272925..0301c8d6 100755 --- a/ds/iarm/IarmHostImpl.cpp +++ b/ds/iarm/IarmHostImpl.cpp @@ -939,7 +939,7 @@ constexpr EventHandlerMapping IARMGroupAudioOutputPort::handlers[]; constexpr EventHandlerMapping IARMGroupComposite::handlers[]; constexpr EventHandlerMapping IARMGroupDisplay::handlers[]; -IarmHostImpl::CallbackList IarmHostImpl::s_hdmiInListeners; +IarmHostImpl::CallbackList IarmHostImpl::s_hdmiInListeners; IarmHostImpl::CallbackList IarmHostImpl::s_videoDeviceListeners; IarmHostImpl::CallbackList IarmHostImpl::s_videoOutputPortListeners; IarmHostImpl::CallbackList IarmHostImpl::s_audioOutputPortListeners; @@ -979,7 +979,7 @@ template INT_INFO("%s Dispatch done to %zu listeners\n%s", typeid(T).name(), listeners.size(), ss.str().c_str()); } -dsError_t IarmHostImpl::Register(IHDMIInEvents* listener, const std::string& clientName) +dsError_t IarmHostImpl::Register(IHdmiInEvents* listener, const std::string& clientName) { return s_hdmiInListeners.Register(listener, clientName); } From 1ae8046dc6890e1a9cdc1fe1ceb9c9ba2b810d19 Mon Sep 17 00:00:00 2001 From: skamath <161743589+skamath@users.noreply.github.com> Date: Tue, 2 Sep 2025 12:44:37 +0530 Subject: [PATCH 075/103] Ensure buffer is null-terminated if snprintf fails Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- ds/dslogger.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ds/dslogger.cpp b/ds/dslogger.cpp index b62054e0..7e4814cf 100644 --- a/ds/dslogger.cpp +++ b/ds/dslogger.cpp @@ -47,8 +47,8 @@ int ds_log(int priority, const char* fileName, int lineNum, const char *format, int offset = snprintf(tmp_buff, MAX_LOG_BUFF, "[%s:%d] ", fileName, lineNum); // formatting error - if (unlikely(offset < 0)) { offset = 0; + tmp_buff[0] = '\0'; // Ensure buffer is null-terminated if snprintf fails } va_list args; From 0417a49289e0f48df6f0b7a6b10af12112449f92 Mon Sep 17 00:00:00 2001 From: skamath <161743589+skamath@users.noreply.github.com> Date: Tue, 2 Sep 2025 22:57:56 +0530 Subject: [PATCH 076/103] Copilot review comment suggesting wrong fix --- ds/dslogger.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/ds/dslogger.cpp b/ds/dslogger.cpp index 7e4814cf..36961fca 100644 --- a/ds/dslogger.cpp +++ b/ds/dslogger.cpp @@ -47,6 +47,7 @@ int ds_log(int priority, const char* fileName, int lineNum, const char *format, int offset = snprintf(tmp_buff, MAX_LOG_BUFF, "[%s:%d] ", fileName, lineNum); // formatting error + if (unlikely(offset < 0)) { offset = 0; tmp_buff[0] = '\0'; // Ensure buffer is null-terminated if snprintf fails } From dcc6554a8d637452abda779502751e77f4fde914 Mon Sep 17 00:00:00 2001 From: Shrinivas Kamath Date: Wed, 3 Sep 2025 11:59:52 +0530 Subject: [PATCH 077/103] remove OnDisplayHDCPStatus() from IDisplayEvents --- ds/host.cpp | 9 ++------- ds/iarm/IarmHostImpl.cpp | 23 +---------------------- ds/include/host.hpp | 3 --- 3 files changed, 3 insertions(+), 32 deletions(-) diff --git a/ds/host.cpp b/ds/host.cpp index 554cf0e6..4a6e90b3 100644 --- a/ds/host.cpp +++ b/ds/host.cpp @@ -106,7 +106,7 @@ Host::~Host() * * @return None */ - bool Host::setPowerMode(int mode) + bool Host::setPowerMode(int) { throw UnsupportedOperationException(); } @@ -455,7 +455,7 @@ Host::~Host() void Host::getMS12ConfigDetails(std::string &configType) { dsError_t ret = dsERR_NONE; - char type[MS12_CONFIG_BUF_SIZE]; + char type[MS12_CONFIG_BUF_SIZE] = { 0 }; ret = dsGetMS12ConfigType(type); if (ret == dsERR_NONE) { @@ -955,11 +955,6 @@ DefaultImpl& Host::impl() /* If client needs to handle this event, they should override this method */ INT_WARN("Base impl of OnDisplayRxSense called. displayEvent: %d ", displayEvent); } -/* virtual */ void Host::IDisplayEvents::OnDisplayHDCPStatus() -{ - /* If client needs to handle this event, they should override this method */ - INT_WARN("Base impl of OnDisplayHDCPStatus called. "); -} dsError_t Host::Register(IHdmiInEvents* listener, const std::string& clientName) { diff --git a/ds/iarm/IarmHostImpl.cpp b/ds/iarm/IarmHostImpl.cpp index 0301c8d6..9c1c8503 100755 --- a/ds/iarm/IarmHostImpl.cpp +++ b/ds/iarm/IarmHostImpl.cpp @@ -649,30 +649,9 @@ class IARMGroupDisplay { } } - static void iarmDisplayHDCPStatusChange(const char* owner, IARM_EventId_t eventId, void* data, size_t) - { - INT_INFO("IARM_BUS_DSMGR_EVENT_HDCP_STATUS received owner = %s, eventId = %d", owner, eventId); - if (!isValidOwner(owner)) { - return; - } - - auto* eventData = static_cast(data); - - if (eventData) { - dsHdcpStatus_t hdcpStatus = static_cast(eventData->data.hdmi_hdcp.hdcpStatus); - IarmHostImpl::Dispatch([hdcpStatus](IDisplayEvents* listener) { - /* To check Parameter Required or Not*/ - listener->OnDisplayHDCPStatus(); - }); - } else { - INT_ERROR("Invalid data received for Composite Video Mode Update in iarmDisplayHDCPStatusChange"); - } - } - private: static constexpr EventHandlerMapping handlers[] = { - { IARM_BUS_DSMGR_EVENT_RX_SENSE, &IARMGroupDisplay::iarmDisplayDisplayRxSense }, - { IARM_BUS_DSMGR_EVENT_HDCP_STATUS, &IARMGroupDisplay::iarmDisplayHDCPStatusChange }, + { IARM_BUS_DSMGR_EVENT_RX_SENSE, &IARMGroupDisplay::iarmDisplayDisplayRxSense } }; }; diff --git a/ds/include/host.hpp b/ds/include/host.hpp index 4b55b474..47473439 100644 --- a/ds/include/host.hpp +++ b/ds/include/host.hpp @@ -178,9 +178,6 @@ class Host { // @brief Display RX Sense event // @param displayEvent: DS_DISPLAY_RXSENSE_ON or DS_DISPLAY_RXSENSE_OFF virtual void OnDisplayRxSense(dsDisplayEvent_t displayEvent); - - // @brief Display HDCP Status - virtual void OnDisplayHDCPStatus(); }; // @brief Register a listener for display events From 02eb38a9e441edb6be0aed203df002dd96e08b1c Mon Sep 17 00:00:00 2001 From: Shrinivas Kamath Date: Wed, 3 Sep 2025 12:24:25 +0530 Subject: [PATCH 078/103] rename IarmHostImpl => IarmImpl --- ds/Makefile | 2 +- ds/host.cpp | 2 +- ds/iarm/{IarmHostImpl.cpp => IarmImpl.cpp} | 124 ++++++++++----------- ds/iarm/{IarmHostImpl.hpp => IarmImpl.hpp} | 8 +- ds/include/host.hpp | 4 +- 5 files changed, 70 insertions(+), 70 deletions(-) rename ds/iarm/{IarmHostImpl.cpp => IarmImpl.cpp} (87%) rename ds/iarm/{IarmHostImpl.hpp => IarmImpl.hpp} (98%) diff --git a/ds/Makefile b/ds/Makefile index 132782e2..d69caba9 100644 --- a/ds/Makefile +++ b/ds/Makefile @@ -24,7 +24,7 @@ LIBNAMECLI := lib$(LIBNAME)-cli.so INSTALL := $(PWD)/install OBJS := $(patsubst %.cpp,%.o,$(wildcard *.cpp)) # In future add a conditional to choose implementation class based on build configuration -OBJS += iarm/IarmHostImpl.o +OBJS += iarm/IarmImpl.o #$(PWD)/config should be first include path # to override generic configs ifneq ($(STANDALONE_BUILD_ENABLED),y) diff --git a/ds/host.cpp b/ds/host.cpp index 4a6e90b3..ae1c7f9e 100644 --- a/ds/host.cpp +++ b/ds/host.cpp @@ -40,7 +40,7 @@ #include "unsupportedOperationException.hpp" #include "dsInternal.h" -#include "iarm/IarmHostImpl.hpp" +#include "iarm/IarmImpl.hpp" /** * @file host.cpp diff --git a/ds/iarm/IarmHostImpl.cpp b/ds/iarm/IarmImpl.cpp similarity index 87% rename from ds/iarm/IarmHostImpl.cpp rename to ds/iarm/IarmImpl.cpp index 9c1c8503..4a721796 100755 --- a/ds/iarm/IarmHostImpl.cpp +++ b/ds/iarm/IarmImpl.cpp @@ -3,7 +3,7 @@ #include #include -#include "IarmHostImpl.hpp" +#include "IarmImpl.hpp" #include "dsMgr.h" #include "dslogger.h" @@ -95,7 +95,7 @@ class IARMGroupVideoDevice { if (eventData) { std::string framerate(eventData->data.DisplayFrameRateChange.framerate); - IarmHostImpl::Dispatch([&framerate](IVideoDeviceEvents* listener) { + IarmImpl::Dispatch([&framerate](IVideoDeviceEvents* listener) { listener->OnDisplayFrameratePreChange(framerate); }); } else { @@ -116,7 +116,7 @@ class IARMGroupVideoDevice { if (eventData) { std::string framerate(eventData->data.DisplayFrameRateChange.framerate); - IarmHostImpl::Dispatch([&framerate](IVideoDeviceEvents* listener) { + IarmImpl::Dispatch([&framerate](IVideoDeviceEvents* listener) { listener->OnDisplayFrameratePostChange(framerate); }); } else { @@ -137,7 +137,7 @@ class IARMGroupVideoDevice { if (eventData) { dsVideoZoom_t zoomSetting = static_cast(eventData->data.dfc.zoomsettings); - IarmHostImpl::Dispatch([zoomSetting](IVideoDeviceEvents* listener) { + IarmImpl::Dispatch([zoomSetting](IVideoDeviceEvents* listener) { listener->OnZoomSettingsChanged(zoomSetting); }); } else { @@ -179,7 +179,7 @@ class IARMGroupVideoOutputPort { int width = eventData->data.resn.width; int height = eventData->data.resn.height; - IarmHostImpl::Dispatch([width, height](IVideoOutputPortEvents* listener) { + IarmImpl::Dispatch([width, height](IVideoOutputPortEvents* listener) { listener->OnResolutionPreChange(width, height); }); } else { @@ -201,7 +201,7 @@ class IARMGroupVideoOutputPort { int width = eventData->data.resn.width; int height = eventData->data.resn.height; - IarmHostImpl::Dispatch([width, height](IVideoOutputPortEvents* listener) { + IarmImpl::Dispatch([width, height](IVideoOutputPortEvents* listener) { listener->OnResolutionPostChange(width, height); }); } else { @@ -221,7 +221,7 @@ class IARMGroupVideoOutputPort { if (eventData) { dsHdcpStatus_t hdcpStatus = static_cast(eventData->data.hdmi_hdcp.hdcpStatus); - IarmHostImpl::Dispatch([hdcpStatus](IVideoOutputPortEvents* listener) { + IarmImpl::Dispatch([hdcpStatus](IVideoOutputPortEvents* listener) { listener->OnHDCPStatusChange(hdcpStatus); }); } else { @@ -242,7 +242,7 @@ class IARMGroupVideoOutputPort { if (eventData) { dsHDRStandard_t videoFormat = eventData->data.VideoFormatInfo.videoFormat; - IarmHostImpl::Dispatch([videoFormat](IVideoOutputPortEvents* listener) { + IarmImpl::Dispatch([videoFormat](IVideoOutputPortEvents* listener) { listener->OnVideoFormatUpdate(videoFormat); }); } else { @@ -284,7 +284,7 @@ class IARMGroupAudioOutputPort { if (eventData) { bool mixing = eventData->data.AssociatedAudioMixingInfo.mixing; - IarmHostImpl::Dispatch([mixing](IAudioOutputPortEvents* listener) { + IarmImpl::Dispatch([mixing](IAudioOutputPortEvents* listener) { listener->OnAssociatedAudioMixingChanged(mixing); }); } else { @@ -305,7 +305,7 @@ class IARMGroupAudioOutputPort { if (eventData) { int mixerBalance = eventData->data.FaderControlInfo.mixerbalance; - IarmHostImpl::Dispatch([mixerBalance](IAudioOutputPortEvents* listener) { + IarmImpl::Dispatch([mixerBalance](IAudioOutputPortEvents* listener) { listener->OnAudioFaderControlChanged(mixerBalance); }); } else { @@ -326,7 +326,7 @@ class IARMGroupAudioOutputPort { if (eventData) { std::string primaryLanguage(eventData->data.AudioLanguageInfo.audioLanguage); - IarmHostImpl::Dispatch([&primaryLanguage](IAudioOutputPortEvents* listener) { + IarmImpl::Dispatch([&primaryLanguage](IAudioOutputPortEvents* listener) { listener->OnAudioPrimaryLanguageChanged(primaryLanguage); }); } else { @@ -347,7 +347,7 @@ class IARMGroupAudioOutputPort { if (eventData) { std::string secondaryLanguage(eventData->data.AudioLanguageInfo.audioLanguage); - IarmHostImpl::Dispatch([&secondaryLanguage](IAudioOutputPortEvents* listener) { + IarmImpl::Dispatch([&secondaryLanguage](IAudioOutputPortEvents* listener) { listener->OnAudioSecondaryLanguageChanged(secondaryLanguage); }); } else { @@ -370,7 +370,7 @@ class IARMGroupAudioOutputPort { uint32_t uiPortNumber = eventData->data.audio_out_connect.uiPortNo; bool isPortConnected = eventData->data.audio_out_connect.isPortConnected; - IarmHostImpl::Dispatch([portType, uiPortNumber, isPortConnected](IAudioOutputPortEvents* listener) { + IarmImpl::Dispatch([portType, uiPortNumber, isPortConnected](IAudioOutputPortEvents* listener) { listener->OnAudioOutHotPlug(portType, uiPortNumber, isPortConnected); }); } else { @@ -392,7 +392,7 @@ class IARMGroupAudioOutputPort { dsATMOSCapability_t atmosCapability = eventData->data.AtmosCapsChange.caps; bool status = eventData->data.AtmosCapsChange.status; - IarmHostImpl::Dispatch([atmosCapability, status](IAudioOutputPortEvents* listener) { + IarmImpl::Dispatch([atmosCapability, status](IAudioOutputPortEvents* listener) { listener->OnDolbyAtmosCapabilitiesChanged(atmosCapability, status); }); @@ -414,7 +414,7 @@ class IARMGroupAudioOutputPort { if (eventData) { dsAudioPortState_t audioPortState = eventData->data.AudioPortStateInfo.audioPortState; - IarmHostImpl::Dispatch([audioPortState](IAudioOutputPortEvents* listener) { + IarmImpl::Dispatch([audioPortState](IAudioOutputPortEvents* listener) { listener->OnAudioPortStateChanged(audioPortState); }); } else { @@ -436,7 +436,7 @@ class IARMGroupAudioOutputPort { dsAudioPortType_t audioPortType = static_cast(eventData->data.Audioport.type); dsAudioStereoMode_t audioStereoMode = static_cast(eventData->data.Audioport.mode); - IarmHostImpl::Dispatch([audioPortType, audioStereoMode](IAudioOutputPortEvents* listener) { + IarmImpl::Dispatch([audioPortType, audioStereoMode](IAudioOutputPortEvents* listener) { listener->OnAudioModeEvent(audioPortType, audioStereoMode); }); } else { @@ -457,7 +457,7 @@ class IARMGroupAudioOutputPort { if (eventData) { int audioLevel = eventData->data.AudioLevelInfo.level; - IarmHostImpl::Dispatch([audioLevel](IAudioOutputPortEvents* listener) { + IarmImpl::Dispatch([audioLevel](IAudioOutputPortEvents* listener) { listener->OnAudioLevelChangedEvent(audioLevel); }); } else { @@ -478,7 +478,7 @@ class IARMGroupAudioOutputPort { if (eventData) { dsAudioFormat_t audioFormat = eventData->data.AudioFormatInfo.audioFormat; - IarmHostImpl::Dispatch([audioFormat](IAudioOutputPortEvents* listener) { + IarmImpl::Dispatch([audioFormat](IAudioOutputPortEvents* listener) { listener->OnAudioFormatUpdate(audioFormat); }); } else { @@ -527,7 +527,7 @@ class IARMGroupComposite { if (eventData) { dsCompositeInPort_t compositePort = eventData->data.composite_in_connect.port; bool isConnected = eventData->data.composite_in_connect.isPortConnected; - IarmHostImpl::Dispatch([compositePort, isConnected](ICompositeInEvents* listener) { + IarmImpl::Dispatch([compositePort, isConnected](ICompositeInEvents* listener) { listener->OnCompositeInHotPlug(compositePort, isConnected); }); } else { @@ -549,7 +549,7 @@ class IARMGroupComposite { dsCompositeInPort_t compositePort = eventData->data.composite_in_sig_status.port; dsCompInSignalStatus_t compositeSigStatus = eventData->data.composite_in_sig_status.status; - IarmHostImpl::Dispatch([compositePort, compositeSigStatus](ICompositeInEvents* listener) { + IarmImpl::Dispatch([compositePort, compositeSigStatus](ICompositeInEvents* listener) { listener->OnCompositeInSignalStatus(compositePort, compositeSigStatus); }); } else { @@ -570,7 +570,7 @@ class IARMGroupComposite { if (eventData) { dsCompositeInPort_t compositePort = eventData->data.composite_in_status.port; bool isPresented = eventData->data.composite_in_status.isPresented; - IarmHostImpl::Dispatch([compositePort, isPresented](ICompositeInEvents* listener) { + IarmImpl::Dispatch([compositePort, isPresented](ICompositeInEvents* listener) { listener->OnCompositeInStatus(compositePort, isPresented); }); } else { @@ -599,7 +599,7 @@ class IARMGroupComposite { videoResolution.interlaced = eventData->data.composite_in_video_mode.resolution.interlaced; videoResolution.frameRate = eventData->data.composite_in_video_mode.resolution.frameRate; - IarmHostImpl::Dispatch([compositePort, videoResolution](ICompositeInEvents* listener) { + IarmImpl::Dispatch([compositePort, videoResolution](ICompositeInEvents* listener) { listener->OnCompositeInVideoModeUpdate(compositePort, videoResolution); }); } else { @@ -641,7 +641,7 @@ class IARMGroupDisplay { if (eventData) { dsDisplayEvent_t displayStatusEvent = static_cast(eventData->data.hdmi_rxsense.status); - IarmHostImpl::Dispatch([displayStatusEvent](IDisplayEvents* listener) { + IarmImpl::Dispatch([displayStatusEvent](IDisplayEvents* listener) { listener->OnDisplayRxSense(displayStatusEvent); }); } else { @@ -691,7 +691,7 @@ class IARMGroupDisplayDevice { if (eventData) { dsDisplayEvent_t displayEvent = static_cast(eventData->data.hdmi_hpd.event); - IarmHostImpl::Dispatch([displayEvent](IDisplayDeviceEvents* listener) { + IarmImpl::Dispatch([displayEvent](IDisplayDeviceEvents* listener) { listener->OnDisplayHDMIHotPlug(displayEvent); }); } else { @@ -727,7 +727,7 @@ class IARMGroupHdmiIn { dsHdmiInPort_t port = eventData->data.hdmi_in_connect.port; bool isConnected = eventData->data.hdmi_in_connect.isPortConnected; - IarmHostImpl::Dispatch([port, isConnected](IHdmiInEvents* listener) { + IarmImpl::Dispatch([port, isConnected](IHdmiInEvents* listener) { listener->OnHdmiInEventHotPlug(port, isConnected); }); } else { @@ -749,7 +749,7 @@ class IARMGroupHdmiIn { dsHdmiInPort_t port = eventData->data.hdmi_in_sig_status.port; dsHdmiInSignalStatus_t sigStatus = eventData->data.hdmi_in_sig_status.status; - IarmHostImpl::Dispatch([port, sigStatus](IHdmiInEvents* listener) { + IarmImpl::Dispatch([port, sigStatus](IHdmiInEvents* listener) { listener->OnHdmiInEventSignalStatus(port, sigStatus); }); } else { @@ -771,7 +771,7 @@ class IARMGroupHdmiIn { dsHdmiInPort_t activePort = eventData->data.hdmi_in_status.port; bool isPresented = eventData->data.hdmi_in_status.isPresented; - IarmHostImpl::Dispatch([activePort, isPresented](IHdmiInEvents* listener) { + IarmImpl::Dispatch([activePort, isPresented](IHdmiInEvents* listener) { listener->OnHdmiInEventStatus(activePort, isPresented); }); } else { @@ -800,7 +800,7 @@ class IARMGroupHdmiIn { res.interlaced = eventData->data.hdmi_in_video_mode.resolution.interlaced; res.frameRate = eventData->data.hdmi_in_video_mode.resolution.frameRate; - IarmHostImpl::Dispatch([port, res](IHdmiInEvents* listener) { + IarmImpl::Dispatch([port, res](IHdmiInEvents* listener) { listener->OnHdmiInVideoModeUpdate(port, res); }); } else { @@ -822,7 +822,7 @@ class IARMGroupHdmiIn { dsHdmiInPort_t port = eventData->data.hdmi_in_allm_mode.port; bool allmStatus = eventData->data.hdmi_in_allm_mode.allm_mode; - IarmHostImpl::Dispatch([port, allmStatus](IHdmiInEvents* listener) { + IarmImpl::Dispatch([port, allmStatus](IHdmiInEvents* listener) { listener->OnHdmiInAllmStatus(port, allmStatus); }); } else { @@ -844,7 +844,7 @@ class IARMGroupHdmiIn { dsHdmiInPort_t port = eventData->data.hdmi_in_vrr_mode.port; dsVRRType_t vrrType = eventData->data.hdmi_in_vrr_mode.vrr_type; - IarmHostImpl::Dispatch([port, vrrType](IHdmiInEvents* listener) { + IarmImpl::Dispatch([port, vrrType](IHdmiInEvents* listener) { listener->OnHdmiInVRRStatus(port, vrrType); }); @@ -867,7 +867,7 @@ class IARMGroupHdmiIn { dsHdmiInPort_t port = eventData->data.hdmi_in_content_type.port; dsAviContentType_t type = eventData->data.hdmi_in_content_type.aviContentType; - IarmHostImpl::Dispatch([port, type](IHdmiInEvents* listener) { + IarmImpl::Dispatch([port, type](IHdmiInEvents* listener) { listener->OnHdmiInAVIContentType(port, type); }); } else { @@ -889,7 +889,7 @@ class IARMGroupHdmiIn { int audioDelay = eventData->data.hdmi_in_av_latency.audio_output_delay; int videoDelay = eventData->data.hdmi_in_av_latency.video_latency; - IarmHostImpl::Dispatch([audioDelay, videoDelay](IHdmiInEvents* listener) { + IarmImpl::Dispatch([audioDelay, videoDelay](IHdmiInEvents* listener) { listener->OnHdmiInAVLatency(audioDelay, videoDelay); }); } else { @@ -918,15 +918,15 @@ constexpr EventHandlerMapping IARMGroupAudioOutputPort::handlers[]; constexpr EventHandlerMapping IARMGroupComposite::handlers[]; constexpr EventHandlerMapping IARMGroupDisplay::handlers[]; -IarmHostImpl::CallbackList IarmHostImpl::s_hdmiInListeners; -IarmHostImpl::CallbackList IarmHostImpl::s_videoDeviceListeners; -IarmHostImpl::CallbackList IarmHostImpl::s_videoOutputPortListeners; -IarmHostImpl::CallbackList IarmHostImpl::s_audioOutputPortListeners; -IarmHostImpl::CallbackList IarmHostImpl::s_compositeListeners; -IarmHostImpl::CallbackList IarmHostImpl::s_displayListeners; -IarmHostImpl::CallbackList IarmHostImpl::s_displayDeviceListeners; +IarmImpl::CallbackList IarmImpl::s_hdmiInListeners; +IarmImpl::CallbackList IarmImpl::s_videoDeviceListeners; +IarmImpl::CallbackList IarmImpl::s_videoOutputPortListeners; +IarmImpl::CallbackList IarmImpl::s_audioOutputPortListeners; +IarmImpl::CallbackList IarmImpl::s_compositeListeners; +IarmImpl::CallbackList IarmImpl::s_displayListeners; +IarmImpl::CallbackList IarmImpl::s_displayDeviceListeners; -IarmHostImpl::~IarmHostImpl() +IarmImpl::~IarmImpl() { s_hdmiInListeners.Release(); s_videoDeviceListeners.Release(); @@ -938,7 +938,7 @@ IarmHostImpl::~IarmHostImpl() } template -/* static */ void IarmHostImpl::Dispatch(const std::list>& listeners, F&& fn) +/* static */ void IarmImpl::Dispatch(const std::list>& listeners, F&& fn) { std::stringstream ss; @@ -958,120 +958,120 @@ template INT_INFO("%s Dispatch done to %zu listeners\n%s", typeid(T).name(), listeners.size(), ss.str().c_str()); } -dsError_t IarmHostImpl::Register(IHdmiInEvents* listener, const std::string& clientName) +dsError_t IarmImpl::Register(IHdmiInEvents* listener, const std::string& clientName) { return s_hdmiInListeners.Register(listener, clientName); } -dsError_t IarmHostImpl::UnRegister(IHdmiInEvents* listener) +dsError_t IarmImpl::UnRegister(IHdmiInEvents* listener) { return s_hdmiInListeners.UnRegister(listener); } // Dispatcher for IHdmiInEvents -/* static */ void IarmHostImpl::Dispatch(std::function&& fn) +/* static */ void IarmImpl::Dispatch(std::function&& fn) { std::lock_guard lock(s_hdmiInListeners.Mutex()); Dispatch(s_hdmiInListeners, std::move(fn)); } -dsError_t IarmHostImpl::Register(IVideoDeviceEvents* listener, const std::string& clientName) +dsError_t IarmImpl::Register(IVideoDeviceEvents* listener, const std::string& clientName) { return s_videoDeviceListeners.Register(listener, clientName); } -dsError_t IarmHostImpl::UnRegister(IVideoDeviceEvents* listener) +dsError_t IarmImpl::UnRegister(IVideoDeviceEvents* listener) { return s_videoDeviceListeners.UnRegister(listener); } // Dispatcher for IARMGroupVideoDevice -/* static */ void IarmHostImpl::Dispatch(std::function&& fn) +/* static */ void IarmImpl::Dispatch(std::function&& fn) { std::lock_guard lock(s_videoDeviceListeners.Mutex()); Dispatch(s_videoDeviceListeners, std::move(fn)); } -dsError_t IarmHostImpl::Register(IVideoOutputPortEvents* listener, const std::string& clientName) +dsError_t IarmImpl::Register(IVideoOutputPortEvents* listener, const std::string& clientName) { return s_videoOutputPortListeners.Register(listener, clientName); } -dsError_t IarmHostImpl::UnRegister(IVideoOutputPortEvents* listener) +dsError_t IarmImpl::UnRegister(IVideoOutputPortEvents* listener) { return s_videoOutputPortListeners.UnRegister(listener); } // Dispatcher for IVideoOutputPortEvents -/* static */ void IarmHostImpl::Dispatch(std::function&& fn) +/* static */ void IarmImpl::Dispatch(std::function&& fn) { std::lock_guard lock(s_videoOutputPortListeners.Mutex()); Dispatch(s_videoOutputPortListeners, std::move(fn)); } -dsError_t IarmHostImpl::Register(IAudioOutputPortEvents* listener, const std::string& clientName) +dsError_t IarmImpl::Register(IAudioOutputPortEvents* listener, const std::string& clientName) { return s_audioOutputPortListeners.Register(listener, clientName); } -dsError_t IarmHostImpl::UnRegister(IAudioOutputPortEvents* listener) +dsError_t IarmImpl::UnRegister(IAudioOutputPortEvents* listener) { return s_audioOutputPortListeners.UnRegister(listener); } // Dispatcher for IAudioOutputPortEvents -/* static */ void IarmHostImpl::Dispatch(std::function&& fn) +/* static */ void IarmImpl::Dispatch(std::function&& fn) { std::lock_guard lock(s_audioOutputPortListeners.Mutex()); Dispatch(s_audioOutputPortListeners, std::move(fn)); } -dsError_t IarmHostImpl::Register(ICompositeInEvents* listener, const std::string& clientName) +dsError_t IarmImpl::Register(ICompositeInEvents* listener, const std::string& clientName) { return s_compositeListeners.Register(listener, clientName); } -dsError_t IarmHostImpl::UnRegister(ICompositeInEvents* listener) +dsError_t IarmImpl::UnRegister(ICompositeInEvents* listener) { return s_compositeListeners.UnRegister(listener); } // Dispatcher for IARMGroupComposite -/* static */ void IarmHostImpl::Dispatch(std::function&& fn) +/* static */ void IarmImpl::Dispatch(std::function&& fn) { std::lock_guard lock(s_compositeListeners.Mutex()); Dispatch(s_compositeListeners, std::move(fn)); } -dsError_t IarmHostImpl::Register(IDisplayEvents* listener, const std::string& clientName) +dsError_t IarmImpl::Register(IDisplayEvents* listener, const std::string& clientName) { return s_displayListeners.Register(listener, clientName); } -dsError_t IarmHostImpl::UnRegister(IDisplayEvents* listener) +dsError_t IarmImpl::UnRegister(IDisplayEvents* listener) { return s_displayListeners.UnRegister(listener); } // Dispatcher for IARMGroupDisplay -/* static */ void IarmHostImpl::Dispatch(std::function&& fn) +/* static */ void IarmImpl::Dispatch(std::function&& fn) { std::lock_guard lock(s_displayListeners.Mutex()); Dispatch(s_displayListeners, std::move(fn)); } -dsError_t IarmHostImpl::Register(IDisplayDeviceEvents* listener, const std::string& clientName) +dsError_t IarmImpl::Register(IDisplayDeviceEvents* listener, const std::string& clientName) { return s_displayDeviceListeners.Register(listener, clientName); } -dsError_t IarmHostImpl::UnRegister(IDisplayDeviceEvents* listener) +dsError_t IarmImpl::UnRegister(IDisplayDeviceEvents* listener) { return s_displayDeviceListeners.UnRegister(listener); } // Dispatcher for IDisplayDeviceEvents -/* static */ void IarmHostImpl::Dispatch(std::function&& fn) +/* static */ void IarmImpl::Dispatch(std::function&& fn) { std::lock_guard lock(s_displayDeviceListeners.Mutex()); Dispatch(s_displayDeviceListeners, std::move(fn)); diff --git a/ds/iarm/IarmHostImpl.hpp b/ds/iarm/IarmImpl.hpp similarity index 98% rename from ds/iarm/IarmHostImpl.hpp rename to ds/iarm/IarmImpl.hpp index 41c65069..d2c829b2 100755 --- a/ds/iarm/IarmHostImpl.hpp +++ b/ds/iarm/IarmImpl.hpp @@ -46,7 +46,7 @@ using IDisplayDeviceEvents = Host::IDisplayDeviceEvents; using ICompositeInEvents = device::Host::ICompositeInEvents; using IDisplayEvents = device::Host::IDisplayEvents; -class IarmHostImpl { +class IarmImpl { // Manages a list of listeners and corresponding IARM Event Group operations. // Private internal class, not to be used directly by clients. @@ -61,7 +61,7 @@ class IarmHostImpl { ~CallbackList() { // As best practise caller is supposed to call Release() explicitly - // this is just for safety (see IarmHostImpl destructor) + // this is just for safety (see IarmImpl destructor) Release(); } @@ -171,8 +171,8 @@ class IarmHostImpl { }; public: - IarmHostImpl() = default; - ~IarmHostImpl(); + IarmImpl() = default; + ~IarmImpl(); // @brief Register a listener for HDMI device events // @param listener: class object implementing the listener diff --git a/ds/include/host.hpp b/ds/include/host.hpp index 47473439..e150942e 100644 --- a/ds/include/host.hpp +++ b/ds/include/host.hpp @@ -66,9 +66,9 @@ using namespace std; namespace device { // Forward declaration of the implementation class -class IarmHostImpl; +class IarmImpl; // In future add a conditional to choose implementation class based on build configuration -using DefaultImpl = IarmHostImpl; +using DefaultImpl = IarmImpl; /** * @class Host From 5bbfd48bcee5d704cd81394863b85207a6e93c9c Mon Sep 17 00:00:00 2001 From: Ramesh Babu H Date: Wed, 3 Sep 2025 14:22:21 +0530 Subject: [PATCH 079/103] topic/RDKEMW6161- Comments Updated --- ds/include/host.hpp | 63 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) diff --git a/ds/include/host.hpp b/ds/include/host.hpp index e150942e..0d5646d5 100644 --- a/ds/include/host.hpp +++ b/ds/include/host.hpp @@ -24,6 +24,69 @@ * @{ **/ +/** + * This file provides all the devicesettings notifications for the usage of the various plugin clients. + * The notifications are classified in to various blocks. + * The Clients has to register for the respective required blocks like IHdmiInEvents, ICompositeInEvents, + * IVideoOutputPortEvents, IVideoDeviceEvents etc through the Register API Call + * + * The Clients has to unregister for the respective required blocks like IHdmiInEvents, ICompositeInEvents, + * IVideoOutputPortEvents, IVideoDeviceEvents etc through the UnRegister API Call when the activity is completed. + * + * The clients need to implement the required notification handler functions for the respective blocks + * which they have registered. If clients don't need to handle some notifications in a block and they + * need not implement those functions. + * example: A client can choose to register for IHdmiInEvents block of events and implement only required notification + * function OnHdmiInEventHotPlug and can ignore other functions in the same event block like OnHdmiInEventSignalStatus + * + * The Client will receive the event notification which it had registered and implemented notification. This will happen when the + * respective action has taken place in the device. + * + * IHdmiInEvents -> This will implement + * OnHdmiInEventHotPlug : Will notify the HDMI Hot Plug IN/OUT Event + * OnHdmiInEventSignalStatus : Will notify the HDMI Signal Status + * OnHdmiInEventStatus : Will notify the port specific HDMI status + * OnHdmiInVideoModeUpdate : Will notify the HDMI video resolution changes + * OnHdmiInAllmStatus : Will notify the HDMI Auto Low Latency Mode + * OnHdmiInAVIContentType : Will notify the HDMI AVI info like Gaming, Cinema, Photo etc + * OnHdmiInVRRStatus : Will notify the HDMI VRR info(Variable Refresh Rate) + * OnHdmiInAVLatency : Will notify about the HDMI AV Latency info. + * + * ICompositeInEvents + * OnCompositeInHotPlug : Will notify about the Hotplug in Composite Mode. + * OnCompositeInSignalStatus : Will notify about the Signal Status in Composite Mode. + * OnCompositeInStatus : Will notify about the Composite Status in Composite Mode. + * OnCompositeInVideoModeUpdate : Will notify about the Update in video Mode in Composite Mode. + * + * IDisplayEvents + * OnDisplayRxSense : Will notify about the RX Sense + * + * IVideoDeviceEvents + * OnDisplayFrameratePreChange : Will notify about the Frame Rate Before Change. + * OnDisplayFrameratePostChange : Will notify about the Frame rate After change. + * OnZoomSettingsChanged : Will notify about the zoom settings changed + * + * IVideoOutputPortEvents + * OnResolutionPreChange : Will notify about the Resolution Pre Change + * OnHDCPStatusChange : Will notify about the HDCP status Change + * OnVideoFormatUpdate : Will notify about the Video Format Change. + * + * IAudioOutputPortEvents + * OnAssociatedAudioMixingChanged : Will notify about the Audio Mixer Change. + * OnAudioFaderControlChanged : Will notify about the Fader Control Change. + * OnAudioPrimaryLanguageChanged : Will notify about the Primary Language Change. + * OnAudioSecondaryLanguageChanged : Will notify about the Secondary Language Change. + * OnAudioOutHotPlug : Will notify about the Audio Out Hot Plug Change. + * OnDolbyAtmosCapabilitiesChanged : Will notify about the ATMOS capability Change. + * OnAudioPortStateChanged : Will notify about the Audio Port State Change. + * OnAudioModeEvent : Will notify about the Audio Mode Event Change. + * OnAudioLevelChangedEvent : Will notify about the Audio Level Change. + * OnAudioFormatUpdate : Will notify about the Audio Format Change. + * + * IDisplayDeviceEvents + * OnDisplayHDMIHotPlug : Will notify about the HDMI Hot Plug Change + **/ + #ifndef _DS_HOST_HPP_ #define _DS_HOST_HPP_ #include From aca333be58e0d25814686ae98e1e57afe934de6d Mon Sep 17 00:00:00 2001 From: Ramesh Babu H Date: Wed, 3 Sep 2025 21:58:57 +0530 Subject: [PATCH 080/103] topic/RDKEMW6161- Copilot fix for Updated Comments --- ds/include/host.hpp | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/ds/include/host.hpp b/ds/include/host.hpp index 0d5646d5..02adbfa8 100644 --- a/ds/include/host.hpp +++ b/ds/include/host.hpp @@ -27,22 +27,25 @@ /** * This file provides all the devicesettings notifications for the usage of the various plugin clients. * The notifications are classified in to various blocks. - * The Clients has to register for the respective required blocks like IHdmiInEvents, ICompositeInEvents, - * IVideoOutputPortEvents, IVideoDeviceEvents etc through the Register API Call - * - * The Clients has to unregister for the respective required blocks like IHdmiInEvents, ICompositeInEvents, - * IVideoOutputPortEvents, IVideoDeviceEvents etc through the UnRegister API Call when the activity is completed. + * + * The Clients have to register for the respective required blocks like IHdmiInEvents, ICompositeInEvents, + * IVideoOutputPortEvents, IVideoDeviceEvents etc through the Register API Call. + * The Clients have to unregister for the respective required blocks like IHdmiInEvents, + * ICompositeInEvents, IVideoOutputPortEvents, IVideoDeviceEvents etc through the UnRegister API Call + * when the activity is completed. * * The clients need to implement the required notification handler functions for the respective blocks - * which they have registered. If clients don't need to handle some notifications in a block and they + * which they have registered. If clients don't need to handle some notifications in a block, they * need not implement those functions. - * example: A client can choose to register for IHdmiInEvents block of events and implement only required notification - * function OnHdmiInEventHotPlug and can ignore other functions in the same event block like OnHdmiInEventSignalStatus + * + * Example: A client can choose to register for IHdmiInEvents block of events and implement only + * required notification function OnHdmiInEventHotPlug and can ignore other functions in the same event + * block like OnHdmiInEventSignalStatus. * - * The Client will receive the event notification which it had registered and implemented notification. This will happen when the - * respective action has taken place in the device. + * The Client will receive the event notification for which it has registered and implemented the notification. + * This will happen when the respective action has taken place in the device. * - * IHdmiInEvents -> This will implement + * IHdmiInEvents * OnHdmiInEventHotPlug : Will notify the HDMI Hot Plug IN/OUT Event * OnHdmiInEventSignalStatus : Will notify the HDMI Signal Status * OnHdmiInEventStatus : Will notify the port specific HDMI status From c6844fe7698f3518a50fc9cd0d599fa917fa037a Mon Sep 17 00:00:00 2001 From: Dosakayala Nagalakshmi Date: Thu, 4 Sep 2025 23:55:27 +0530 Subject: [PATCH 081/103] Supported below apis.. dsSetStandbyVideoState dsGetStandbyVideoState dsSetAvPortState dsSetLEDStatus dsSetRebootConfig --- ds/frontPanelTextDisplay.cpp | 17 ++++++- ds/host.cpp | 10 ++++ ds/include/frontPanelTextDisplay.hpp | 2 +- ds/include/host.hpp | 1 + ds/include/videoOutputPort.hpp | 9 ++++ ds/videoOutputPort.cpp | 46 ++++++++++++++---- rpc/cli/dsFPD.c | 19 ++++++++ rpc/cli/dsHost.cpp | 25 ++++++++++ rpc/cli/dsVideoPort.c | 72 ++++++++++++++++++++++++++++ rpc/include/dsRpc.h | 6 +++ rpc/srv/dsFPD.c | 10 +++- rpc/srv/dsHost.cpp | 14 ++++-- rpc/srv/dsVideoPort.c | 31 +++++++++++- 13 files changed, 246 insertions(+), 16 deletions(-) diff --git a/ds/frontPanelTextDisplay.cpp b/ds/frontPanelTextDisplay.cpp index 3943934c..1eb64d5d 100644 --- a/ds/frontPanelTextDisplay.cpp +++ b/ds/frontPanelTextDisplay.cpp @@ -208,7 +208,22 @@ void FrontPanelTextDisplay::enableDisplay(const int enable) } } - +/** + * @fn FrontPanelTextDisplay::SetLEDStatus + * @brief This function is used to Set LED status on front panel. + * + * @param[in] fpdIndicator. + * @param[in] fpdState. + * + * @return None + */ + void SetLEDStatus(const dsFPDIndicator_t fpdIndicator, const dsFPDState_t fpdState); + { + dsError_t ret = dsSetLEDStatus(fpdIndicator, fpdState); + if (ret != dsERR_NONE) { + throw Exception(ret); + } + } /** * @fn FrontPanelTextDisplay::setTextBrightness(const int &brightness) * @brief This API sets the brightness value for the front panel LED. diff --git a/ds/host.cpp b/ds/host.cpp index 335765aa..f534c7af 100644 --- a/ds/host.cpp +++ b/ds/host.cpp @@ -765,6 +765,16 @@ Host::~Host() printf ("%s:%d - Set Audio Mixer levels for audio input: %d with volume = %d\n", __PRETTY_FUNCTION__, __LINE__,aInput, volume); } + +bool Host::SetRebootConfig(string rebootReasonCustom, uint8_t powerState) +{ + dsError_t ret = dsSetRebootConfig(rebootReasonCustom, powerState); + if (ret == dsERR_NONE) + return true; + else + return false; +} + DefaultImpl& Host::impl() { /* lazy instantiation */ diff --git a/ds/include/frontPanelTextDisplay.hpp b/ds/include/frontPanelTextDisplay.hpp index 588a3352..e3a28be3 100644 --- a/ds/include/frontPanelTextDisplay.hpp +++ b/ds/include/frontPanelTextDisplay.hpp @@ -142,7 +142,7 @@ class FrontPanelTextDisplay : public FrontPanelIndicator { int getTextColorMode(); void setTextBrightness(const int &brightness); void enableDisplay(const int enable); - + void SetLEDStatus(const dsFPDIndicator_t fpdIndicator, const dsFPDState_t fpdState); /** * @fn Scroll getScroll() const diff --git a/ds/include/host.hpp b/ds/include/host.hpp index 7fcd58a7..2aaaaa8c 100644 --- a/ds/include/host.hpp +++ b/ds/include/host.hpp @@ -327,6 +327,7 @@ class Host { void getCurrentAudioFormat(dsAudioFormat_t& audioFormat); void getMS12ConfigDetails(std::string& configType); void setAudioMixerLevels(dsAudioInput_t aInput, int volume); + void SetRebootConfig(dsMgrRebootConfigParam_t param); private: std::unique_ptr m_impl; diff --git a/ds/include/videoOutputPort.hpp b/ds/include/videoOutputPort.hpp index a9b71ade..95939cb0 100644 --- a/ds/include/videoOutputPort.hpp +++ b/ds/include/videoOutputPort.hpp @@ -284,6 +284,15 @@ class VideoOutputPort : public Enumerable { void setPreferredColorDepth(const unsigned int colordepth, bool persist = true); void getColorDepthCapabilities (unsigned int *capabilities) const; +// static IARM_Result_t _SetStandbyVideoState(void *arg) + void SetStandbyVideoState(); + +// static IARM_Result_t _GetStandbyVideoState(void *arg) + void GetStandbyVideoState(); + +// static IARM_Result_t _SetAvPortState(void *arg) + void SetAvPortState(); + private: Display _display; diff --git a/ds/videoOutputPort.cpp b/ds/videoOutputPort.cpp index c77aa5c4..3ab30784 100644 --- a/ds/videoOutputPort.cpp +++ b/ds/videoOutputPort.cpp @@ -911,18 +911,48 @@ int VideoOutputPort::GetHdmiPreference() return hdcpProtocol; } +bool VideoOutputPort::SetStandbyVideoState(const string port , const bool enable) +{ + dsError_t ret = dsSetStandbyVideoState(port, enable); + if (ret != dsERR_NONE) { + return false; + } + return true; + +} + +bool VideoOutputPort::GetStandbyVideoState(const string port, bool isEnabled) +{ + dsError_t ret = dsGetStandbyVideoState(port, isEnabled); + if (ret != dsERR_NONE) { + return false; + } + return true; + +} + +bool VideoOutputPort::SetAvPortState(const uint8_t powerState) +{ + dsError_t ret = dsSetAvPortState(powerState); + if (ret != dsERR_NONE) { + return false; + } + return true; + +} + /** * @fn void setAllmEnabled(bool enable); * @brief Enables/Disables ALLM mode for connected HDMI display. */ - void VideoOutputPort::Display::setAllmEnabled(bool enable) const - { - printf("VideoOutputPort::Display::setAllmEnabled \r\n"); - dsError_t ret = dsSetAllmEnabled(_handle,enable); - if (ret != dsERR_NONE) { - throw Exception(ret); - } - } +void VideoOutputPort::Display::setAllmEnabled(bool enable) const +{ + printf("VideoOutputPort::Display::setAllmEnabled \r\n"); + dsError_t ret = dsSetAllmEnabled(_handle,enable); + if (ret != dsERR_NONE) { + throw Exception(ret); + } +} /** * @fn void setAVIContentType(dsAviContentType_t contentType); diff --git a/rpc/cli/dsFPD.c b/rpc/cli/dsFPD.c index 6724cdb6..7e9e761a 100644 --- a/rpc/cli/dsFPD.c +++ b/rpc/cli/dsFPD.c @@ -449,8 +449,27 @@ dsError_t dsSetFPState (dsFPDIndicator_t eIndicator, dsFPDState_t state) return dsERR_GENERAL ; } +dsError_t dsSetLEDStatus(dsFPDIndicator_t eIndicator, dsFPDState_t state) +{ + _DEBUG_ENTER(); + dsFPDStateParam_t param ; + + param.eIndicator = eIndicator; + param.state = state; + IARM_Result_t rpcRet = IARM_RESULT_SUCCESS; + + rpcRet = IARM_Bus_Call(IARM_BUS_DSMGR_NAME, + (char *)IARM_BUS_DSMGR_API_dsSetLEDStatus, + (void *)¶m, + sizeof(param)); + if (IARM_RESULT_SUCCESS == rpcRet) + { + return dsERR_NONE; + } + return dsERR_GENERAL ; +} dsError_t dsGetFPTimeFormat (dsFPDTimeFormat_t *pTimeFormat) { diff --git a/rpc/cli/dsHost.cpp b/rpc/cli/dsHost.cpp index 799f4698..7b45ef1f 100644 --- a/rpc/cli/dsHost.cpp +++ b/rpc/cli/dsHost.cpp @@ -225,6 +225,31 @@ dsError_t dsGetMS12ConfigType(const char *ms12ConfigType) return ret; } +dsError_t dsSetRebootConfig(string rebootReasonCustom, uint8_t powerState) +{ + dsError_t ret = dsERR_GENERAL; + _DEBUG_ENTER(); + + if (!rebootReasonCustom.empty()) + { + dsMgrRebootConfigParam_t param; + param.powerState = powerState; + param.reboot_reason_custom = rebootReasonCustom; + param.result = 0; + + IARM_Result_t rpcRet = IARM_RESULT_SUCCESS; + rpcRet = IARM_Bus_Call(IARM_BUS_DSMGR_NAME, + (char *)IARM_BUS_DSMGR_API_dsSetRebootConfig, + (void *)¶m, + sizeof(param)); + if (IARM_RESULT_SUCCESS == rpcRet) + { + ret = dsERR_NONE; + } + } + return ret; +} + /** @} */ /** @} */ diff --git a/rpc/cli/dsVideoPort.c b/rpc/cli/dsVideoPort.c index 5ff4c9e4..517c8f15 100644 --- a/rpc/cli/dsVideoPort.c +++ b/rpc/cli/dsVideoPort.c @@ -965,6 +965,78 @@ dsError_t dsSetForceHDRMode(intptr_t handle, dsHDRStandard_t mode) return dsERR_GENERAL ; } +dsError_t dsSetStandbyVideoState(string port , const bool enable) +{ + dsError_t dsErr = dsERR_GENERAL; + _DEBUG_ENTER(); + + if(!port.empty()) + { + dsMgrStandbyVideoStateParam_t param; + param.port = port; + param.isEnabled = enable; + param.result = 0; + + IARM_Result_t rpcRet = IARM_Bus_Call(IARM_BUS_DSMGR_NAME, + (char *)IARM_BUS_DSMGR_API_dsSetStandbyVideoState, + (void *)¶m, sizeof(param)); + + if (IARM_RESULT_SUCCESS == rpcRet) + { + dsErr = dsERR_NONE; + } + } + return dsErr ; +} + +dsError_t dsGetStandbyVideoState(string port , bool enable) +{ + dsError_t dsErr = dsERR_GENERAL; + _DEBUG_ENTER(); + + if(!port.empty()) + { + dsMgrStandbyVideoStateParam_t param; + param.port = port; + param.result = 0; + + IARM_Result_t rpcRet = IARM_Bus_Call(IARM_BUS_DSMGR_NAME, + (char *)IARM_BUS_DSMGR_API_dsGetStandbyVideoState, + (void *)¶m, + sizeof(param)); + + if (IARM_RESULT_SUCCESS == rpcRet) + { + enable = param.isEnabled; + dsErr = dsERR_NONE; + } + } + return dsErr ; +} + + +dsError_t dsSetAvPortState(const int powerState) +{ + dsError_t dsErr = dsERR_GENERAL; + dsMgrAVPortStateParam_t param; + + _DEBUG_ENTER(); + + param.avPortPowerState = powerState; + param.result = 0; + + IARM_Result_t rpcRet = IARM_Bus_Call(IARM_BUS_DSMGR_NAME, + (char *)IARM_BUS_DSMGR_API_dsSetAvPortState, + (void *)¶m, + sizeof(param)); + + if (IARM_RESULT_SUCCESS == rpcRet) + { + dsErr = dsERR_NONE; + } + + return dsErr ; +} /** @} */ /** @} */ diff --git a/rpc/include/dsRpc.h b/rpc/include/dsRpc.h index 96b3a086..9b932eb1 100644 --- a/rpc/include/dsRpc.h +++ b/rpc/include/dsRpc.h @@ -195,6 +195,12 @@ extern "C" { #define IARM_BUS_DSMGR_API_dsSetBackgroundColor "dsSetBackgroundColor" #define IARM_BUS_DSMGR_API_dsSetForceHDRMode "dsSetForceHDRMode" #define IARM_BUS_DSMGR_API_dsSetAllmEnabled "dsSetAllmEnabled" +#define IARM_BUS_DSMGR_API_dsSetStandbyVideoState "dsSetStandbyVideoState" +#define IARM_BUS_DSMGR_API_dsGetStandbyVideoState "dsGetStandbyVideoState" +#define IARM_BUS_DSMGR_API_dsSetAvPortState "dsSetAvPortState" +#define IARM_BUS_DSMGR_API_dsSetLEDStatus "dsSetLEDStatus" +#define IARM_BUS_DSMGR_API_dsSetRebootConfig "dsSetRebootConfig" + /* * Declare RPC FP API names */ diff --git a/rpc/srv/dsFPD.c b/rpc/srv/dsFPD.c index b2c592c5..529b3592 100644 --- a/rpc/srv/dsFPD.c +++ b/rpc/srv/dsFPD.c @@ -73,7 +73,8 @@ IARM_Result_t _dsSetFPScroll(void *arg); IARM_Result_t _dsSetFPBlink(void *arg); IARM_Result_t _dsGetFPBrightness(void *arg); IARM_Result_t _dsSetFPBrightness(void *arg); -IARM_Result_t _dsSetFPState(void *arg); +IARM_Result_t _dsSetLEDStatus(void *arg); +IARM_Result_t _dsSetLEDState(void *arg); IARM_Result_t _dsGetFPState(void *arg); IARM_Result_t _dsSetFPColor(void *arg); IARM_Result_t _dsGetFPColor(void *arg); @@ -254,6 +255,7 @@ IARM_Result_t _dsFPInit(void *arg) IARM_Bus_RegisterCall(IARM_BUS_DSMGR_API_dsSetFPBlink,_dsSetFPBlink); IARM_Bus_RegisterCall(IARM_BUS_DSMGR_API_dsGetFPBrightness,_dsGetFPBrightness); IARM_Bus_RegisterCall(IARM_BUS_DSMGR_API_dsSetFPState,_dsSetFPState); + IARM_Bus_RegisterCall(IARM_BUS_DSMGR_API_dsSetLEDStatus,_dsSetLEDStatus); IARM_Bus_RegisterCall(IARM_BUS_DSMGR_API_dsGetFPState,_dsGetFPState); IARM_Bus_RegisterCall(IARM_BUS_DSMGR_API_dsSetFPBrightness,_dsSetFPBrightness); IARM_Bus_RegisterCall(IARM_BUS_DSMGR_API_dsSetFPColor,_dsSetFPColor); @@ -689,7 +691,11 @@ IARM_Result_t _dsSetFPState(void *arg) return ret; } - +IARM_Result_t _dsSetLEDStatus(void *arg) +{ + IARM_Result_t ret = IARM_RESULT_SUCCESS; + return ret; +} IARM_Result_t _dsGetTimeFormat(void *arg) diff --git a/rpc/srv/dsHost.cpp b/rpc/srv/dsHost.cpp index 3215b94e..70889986 100644 --- a/rpc/srv/dsHost.cpp +++ b/rpc/srv/dsHost.cpp @@ -65,6 +65,7 @@ IARM_Result_t _dsGetVersion(void *arg); IARM_Result_t _dsGetSocIDFromSDK(void *arg); IARM_Result_t _dsGetHostEDID(void *arg); IARM_Result_t _dsGetMS12ConfigType(void *arg); +IARM_Result_t _dsSetRebootConfig(void *arg); static dsSleepMode_t _SleepMode = dsHOST_SLEEP_MODE_LIGHT; @@ -100,10 +101,10 @@ IARM_Result_t dsHostMgr_init() IARM_Bus_RegisterCall(IARM_BUS_DSMGR_API_dsGetCPUTemperature,_dsGetCPUTemperature); IARM_Bus_RegisterCall(IARM_BUS_DSMGR_API_dsGetVersion,_dsGetVersion); IARM_Bus_RegisterCall(IARM_BUS_DSMGR_API_dsGetSocIDFromSDK,_dsGetSocIDFromSDK); - IARM_Bus_RegisterCall(IARM_BUS_DSMGR_API_dsGetHostEDID,_dsGetHostEDID); - IARM_Bus_RegisterCall(IARM_BUS_DSMGR_API_dsGetMS12ConfigType,_dsGetMS12ConfigType); + IARM_Bus_RegisterCall(IARM_BUS_DSMGR_API_dsGetHostEDID,_dsGetHostEDID); + IARM_Bus_RegisterCall(IARM_BUS_DSMGR_API_dsGetMS12ConfigType,_dsGetMS12ConfigType); + IARM_Bus_RegisterCall(IARM_BUS_DSMGR_API_dsSetRebootConfig,_dsSetRebootConfig); - uint32_t halVersion = 0x10000; halVersion = dsHAL_APIVER(DSHAL_API_VERSION_MAJOR_DEFAULT, DSHAL_API_VERSION_MINOR_DEFAULT); INT_INFO("DS HAL Version is - %d.%d \r\n",dsHAL_APIVER_MAJOR(halVersion),dsHAL_APIVER_MINOR(halVersion)); @@ -267,6 +268,13 @@ IARM_Result_t _dsGetMS12ConfigType(void *arg) } return ret; } + +IARM_Result_t _dsSetRebootConfig(void *arg) +{ + IARM_Result_t ret = IARM_RESULT_SUCCESS; + return ret; +} + IARM_Result_t _dsGetSocIDFromSDK(void *arg) { dsGetSocIDFromSDKParam_t *param = (dsGetSocIDFromSDKParam_t*) arg; diff --git a/rpc/srv/dsVideoPort.c b/rpc/srv/dsVideoPort.c index d29966d2..91f99900 100644 --- a/rpc/srv/dsVideoPort.c +++ b/rpc/srv/dsVideoPort.c @@ -317,7 +317,10 @@ IARM_Result_t _dsVideoPortInit(void *arg) IARM_Bus_RegisterCall(IARM_BUS_DSMGR_API_dsColorDepthCapabilities,_dsColorDepthCapabilities); IARM_Bus_RegisterCall(IARM_BUS_DSMGR_API_dsGetPreferredColorDepth,_dsGetPreferredColorDepth); IARM_Bus_RegisterCall(IARM_BUS_DSMGR_API_dsSetPreferredColorDepth,_dsSetPreferredColorDepth); - + IARM_Bus_RegisterCall(IARM_BUS_DSMGR_API_dsSetStandbyVideoState,_dsSetStandbyVideoState); + IARM_Bus_RegisterCall(IARM_BUS_DSMGR_API_dsGetStandbyVideoState,_dsGetStandbyVideoState); + IARM_Bus_RegisterCall(IARM_BUS_DSMGR_API_dsSetAvPortState,_dsSetAvPortState); + dsError_t eRet = _dsVideoFormatUpdateRegisterCB (_dsVideoFormatUpdateCB) ; if (dsERR_NONE != eRet) { INT_DEBUG("%s: _dsVideoFormatUpdateRegisterCB eRet:%04x", __FUNCTION__, eRet); @@ -1195,6 +1198,32 @@ IARM_Result_t _dsSetPreferredColorDepth(void *arg) } +IARM_Result_t _dsSetStandbyVideoState(void *arg) +{ + _DEBUG_ENTER(); + + IARM_Result_t ret = IARM_RESULT_SUCCESS; + return ret; + + +} + +IARM_Result_t _dsSetPreferredColorDepth(void *arg) +{ + _DEBUG_ENTER(); + + IARM_Result_t ret = IARM_RESULT_SUCCESS; + return ret; +} + +IARM_Result_t _dsSetAvPortState(void *arg) +{ + _DEBUG_ENTER(); + + IARM_Result_t ret = IARM_RESULT_SUCCESS; + return ret; +} + dsError_t handleDsColorDepthCapabilities(intptr_t handle, unsigned int *colorDepthCapability ) { #ifndef RDK_DSHAL_NAME From 73f59f0544b693b9265859d9719a25264ff0bd74 Mon Sep 17 00:00:00 2001 From: Shrinivas Kamath Date: Mon, 8 Sep 2025 15:10:54 +0530 Subject: [PATCH 082/103] compile time enable / disable INT_DEBUG logs --- ds/host.cpp | 62 +++++++++++++++++++++---------------------- ds/include/dslogger.h | 10 +++++++ 2 files changed, 41 insertions(+), 31 deletions(-) diff --git a/ds/host.cpp b/ds/host.cpp index ae1c7f9e..948e66fd 100644 --- a/ds/host.cpp +++ b/ds/host.cpp @@ -777,183 +777,183 @@ DefaultImpl& Host::impl() /* virtual */ void Host::IHdmiInEvents::OnHdmiInEventHotPlug(dsHdmiInPort_t port, bool isConnected) { // If client needs to handle this event, they should override this method - INT_WARN("Base impl of OnHdmiInEventHotPlug called. port: %d, isConnected: %d", port, isConnected); + INT_DEBUG("Base impl of OnHdmiInEventHotPlug called. port: %d, isConnected: %d", port, isConnected); } /* virtual */ void Host::IHdmiInEvents::OnHdmiInEventSignalStatus(dsHdmiInPort_t port, dsHdmiInSignalStatus_t signalStatus) { // If client needs to handle this event, they should override this method - INT_WARN("Base impl of OnHdmiInEventSignalStatus called. port: %d, signalStatus: %d", port, signalStatus); + INT_DEBUG("Base impl of OnHdmiInEventSignalStatus called. port: %d, signalStatus: %d", port, signalStatus); } /* virtual */ void Host::IHdmiInEvents::OnHdmiInEventStatus(dsHdmiInPort_t activePort, bool isPresented) { // If client needs to handle this event, they should override this method - INT_WARN("Base impl of OnHdmiInEventStatus called. activePort: %d, isPresented: %d", activePort, isPresented); + INT_DEBUG("Base impl of OnHdmiInEventStatus called. activePort: %d, isPresented: %d", activePort, isPresented); } /* virtual */ void Host::IHdmiInEvents::OnHdmiInVideoModeUpdate(dsHdmiInPort_t port, const dsVideoPortResolution_t& videoPortResolution) { // If client needs to handle this event, they should override this method - INT_WARN("Base impl of OnHdmiInVideoModeUpdate called. port: %d, interlaced: %d", port, videoPortResolution.interlaced); + INT_DEBUG("Base impl of OnHdmiInVideoModeUpdate called. port: %d, interlaced: %d", port, videoPortResolution.interlaced); } /* virtual */ void Host::IHdmiInEvents::OnHdmiInAllmStatus(dsHdmiInPort_t port, bool allmStatus) { // If client needs to handle this event, they should override this method - INT_WARN("Base impl of OnHdmiInAllmStatus called. port: %d, allmStatus: %d", port, allmStatus); + INT_DEBUG("Base impl of OnHdmiInAllmStatus called. port: %d, allmStatus: %d", port, allmStatus); } /* virtual */ void Host::IHdmiInEvents::OnHdmiInAVIContentType(dsHdmiInPort_t port, dsAviContentType_t aviContentType) { // If client needs to handle this event, they should override this method - INT_WARN("Base impl of OnHdmiInAVIContentType called. port: %d, aviContentType: %d", port, aviContentType); + INT_DEBUG("Base impl of OnHdmiInAVIContentType called. port: %d, aviContentType: %d", port, aviContentType); } /* virtual */ void Host::IHdmiInEvents::OnHdmiInVRRStatus(dsHdmiInPort_t port, dsVRRType_t vrrType) { // If client needs to handle this event, they should override this method - INT_WARN("Base impl of OnHdmiInVRRStatus called. port: %d, vrrType: %d", port, vrrType); + INT_DEBUG("Base impl of OnHdmiInVRRStatus called. port: %d, vrrType: %d", port, vrrType); } /* virtual */ void Host::IHdmiInEvents::OnHdmiInAVLatency(int audioDelay, int videoDelay) { // If client needs to handle this event, they should override this method - INT_WARN("Base impl of OnHdmiInAVLatency called. audioDelay: %d, videoDelay: %d", audioDelay, videoDelay); + INT_DEBUG("Base impl of OnHdmiInAVLatency called. audioDelay: %d, videoDelay: %d", audioDelay, videoDelay); } /* virtual */ void Host::IVideoDeviceEvents::OnDisplayFrameratePreChange(const std::string& frameRate) { // If client needs to handle this event, they should override this method - INT_WARN("Base impl of OnDisplayFrameratePreChange called. frameRate: %s", frameRate.c_str()); + INT_DEBUG("Base impl of OnDisplayFrameratePreChange called. frameRate: %s", frameRate.c_str()); } /* virtual */ void Host::IVideoDeviceEvents::OnDisplayFrameratePostChange(const std::string& frameRate) { // If client needs to handle this event, they should override this method - INT_WARN("Base impl of OnDisplayFrameratePostChange called. frameRate: %s", frameRate.c_str()); + INT_DEBUG("Base impl of OnDisplayFrameratePostChange called. frameRate: %s", frameRate.c_str()); } /* virtual */ void Host::IVideoDeviceEvents::OnZoomSettingsChanged(dsVideoZoom_t zoomSetting) { // If client needs to handle this event, they should override this method - INT_WARN("Base impl of OnZoomSettingsChanged called. zoomSetting: %d", zoomSetting); + INT_DEBUG("Base impl of OnZoomSettingsChanged called. zoomSetting: %d", zoomSetting); } /* virtual */ void Host::IVideoOutputPortEvents::OnResolutionPreChange(int width, int height) { // If client needs to handle this event, they should override this method - INT_WARN("Base impl of OnResolutionPreChange called. width: %d, height: %d", width, height); + INT_DEBUG("Base impl of OnResolutionPreChange called. width: %d, height: %d", width, height); } /* virtual */ void Host::IVideoOutputPortEvents::OnResolutionPostChange(int width, int height) { // If client needs to handle this event, they should override this method - INT_WARN("Base impl of OnResolutionPostChange called. width: %d, height: %d", width, height); + INT_DEBUG("Base impl of OnResolutionPostChange called. width: %d, height: %d", width, height); } /* virtual */ void Host::IVideoOutputPortEvents::OnHDCPStatusChange(dsHdcpStatus_t hdcpStatus) { // If client needs to handle this event, they should override this method - INT_WARN("Base impl of OnHDCPStatusChange called. hdcpStatus: %d", hdcpStatus); + INT_DEBUG("Base impl of OnHDCPStatusChange called. hdcpStatus: %d", hdcpStatus); } /* virtual */ void Host::IVideoOutputPortEvents::OnVideoFormatUpdate(dsHDRStandard_t videoFormatHDR) { // If client needs to handle this event, they should override this method - INT_WARN("Base impl of OnVideoFormatUpdate called. videoFormatHDR: %d", videoFormatHDR); + INT_DEBUG("Base impl of OnVideoFormatUpdate called. videoFormatHDR: %d", videoFormatHDR); } /* virtual */ void Host::IAudioOutputPortEvents::OnAssociatedAudioMixingChanged(bool mixing) { // If client needs to handle this event, they should override this method - INT_WARN("Base impl of OnAssociatedAudioMixingChanged called. mixing: %d", mixing); + INT_DEBUG("Base impl of OnAssociatedAudioMixingChanged called. mixing: %d", mixing); } /* virtual */ void Host::IAudioOutputPortEvents::OnAudioFaderControlChanged(int mixerBalance) { // If client needs to handle this event, they should override this method - INT_WARN("Base impl of OnAudioFaderControlChanged called. mixerBalance: %d", mixerBalance); + INT_DEBUG("Base impl of OnAudioFaderControlChanged called. mixerBalance: %d", mixerBalance); } /* virtual */ void Host::IAudioOutputPortEvents::OnAudioPrimaryLanguageChanged(const std::string& primaryLanguage) { // If client needs to handle this event, they should override this method - INT_WARN("Base impl of OnAudioPrimaryLanguageChanged called. primaryLanguage: %s", primaryLanguage.c_str()); + INT_DEBUG("Base impl of OnAudioPrimaryLanguageChanged called. primaryLanguage: %s", primaryLanguage.c_str()); } /* virtual */ void Host::IAudioOutputPortEvents::OnAudioSecondaryLanguageChanged(const std::string& secondaryLanguage) { // If client needs to handle this event, they should override this method - INT_WARN("Base impl of OnAudioSecondaryLanguageChanged called. secondaryLanguage: %s", secondaryLanguage.c_str()); + INT_DEBUG("Base impl of OnAudioSecondaryLanguageChanged called. secondaryLanguage: %s", secondaryLanguage.c_str()); } /* virtual */ void Host::IAudioOutputPortEvents::OnAudioOutHotPlug(dsAudioPortType_t portType, uint32_t uiPortNumber, bool isPortConnected) { // If client needs to handle this event, they should override this method - INT_WARN("Base impl of OnAudioOutHotPlug called. portType: %d, uiPortNumber: %d, isPortConnected: %d", portType, uiPortNumber, isPortConnected); + INT_DEBUG("Base impl of OnAudioOutHotPlug called. portType: %d, uiPortNumber: %d, isPortConnected: %d", portType, uiPortNumber, isPortConnected); } /* virtual */ void Host::IAudioOutputPortEvents::OnDolbyAtmosCapabilitiesChanged(dsATMOSCapability_t atmosCapability, bool status) { // If client needs to handle this event, they should override this method - INT_WARN("Base impl of OnDolbyAtmosCapabilitiesChanged called. atmosCapability: %d, status: %d", atmosCapability, status); + INT_DEBUG("Base impl of OnDolbyAtmosCapabilitiesChanged called. atmosCapability: %d, status: %d", atmosCapability, status); } /* virtual */ void Host::IAudioOutputPortEvents::OnAudioPortStateChanged(dsAudioPortState_t audioPortState) { // If client needs to handle this event, they should override this method - INT_WARN("Base impl of OnAudioPortStateChanged called. audioPortState: %d", audioPortState); + INT_DEBUG("Base impl of OnAudioPortStateChanged called. audioPortState: %d", audioPortState); } /* virtual */ void Host::IAudioOutputPortEvents::OnAudioModeEvent(dsAudioPortType_t audioPortType, dsAudioStereoMode_t audioStereoMode) { // If client needs to handle this event, they should override this method - INT_WARN("Base impl of OnAudioModeEvent called. audioPortType: %d, audioStereoMode: %d", audioPortType, audioStereoMode); + INT_DEBUG("Base impl of OnAudioModeEvent called. audioPortType: %d, audioStereoMode: %d", audioPortType, audioStereoMode); } /* virtual */ void Host::IAudioOutputPortEvents::OnAudioLevelChangedEvent(int audioLevel) { // If client needs to handle this event, they should override this method - INT_WARN("Base impl of OnAudioLevelChangedEvent called. audioLevel: %d", audioLevel); + INT_DEBUG("Base impl of OnAudioLevelChangedEvent called. audioLevel: %d", audioLevel); } /* virtual */ void Host::IAudioOutputPortEvents::OnAudioFormatUpdate(dsAudioFormat_t audioFormat) { // If client needs to handle this event, they should override this method - INT_WARN("Base impl of OnAudioFormatUpdate called. audioFormat: %d", audioFormat); + INT_DEBUG("Base impl of OnAudioFormatUpdate called. audioFormat: %d", audioFormat); } /* virtual */ void Host::IDisplayDeviceEvents::OnDisplayHDMIHotPlug(dsDisplayEvent_t displayEvent) { // If client needs to handle this event, they should override this method - INT_WARN("Base impl of OnDisplayHDMIHotPlug called. displayEvent: %d", displayEvent); + INT_DEBUG("Base impl of OnDisplayHDMIHotPlug called. displayEvent: %d", displayEvent); } /* virtual */ void Host::ICompositeInEvents::OnCompositeInHotPlug(dsCompositeInPort_t port, bool isConnected) { /* If client needs to handle this event, they should override this method */ - INT_WARN("Base impl of OnCompositeInHotPlug called. port: %d isConnected %d", port, isConnected); + INT_DEBUG("Base impl of OnCompositeInHotPlug called. port: %d isConnected %d", port, isConnected); } /* virtual */ void Host::ICompositeInEvents::OnCompositeInSignalStatus(dsCompositeInPort_t port, dsCompInSignalStatus_t signalStatus) { /* If client needs to handle this event, they should override this method */ - INT_WARN("Base impl of OnCompositeInSignalStatus called. port: %d signalStatus %d", port, signalStatus); + INT_DEBUG("Base impl of OnCompositeInSignalStatus called. port: %d signalStatus %d", port, signalStatus); } /* virtual */ void Host::ICompositeInEvents::OnCompositeInStatus(dsCompositeInPort_t activePort, bool isPresented) { /* If client needs to handle this event, they should override this method */ - INT_WARN("Base impl of OnCompositeInStatus called. activePort: %d isPresented %d", activePort, isPresented); + INT_DEBUG("Base impl of OnCompositeInStatus called. activePort: %d isPresented %d", activePort, isPresented); } /* virtual */ void Host::ICompositeInEvents::OnCompositeInVideoModeUpdate(dsCompositeInPort_t activePort, dsVideoPortResolution_t videoResolution) { /* If client needs to handle this event, they should override this method */ - INT_WARN("Base impl of OnCompositeInVideoModeUpdate called. activePort: %d videoResolution %d", activePort, videoResolution.pixelResolution); + INT_DEBUG("Base impl of OnCompositeInVideoModeUpdate called. activePort: %d videoResolution %d", activePort, videoResolution.pixelResolution); } /* virtual */ void Host::IDisplayEvents::OnDisplayRxSense(dsDisplayEvent_t displayEvent) { /* If client needs to handle this event, they should override this method */ - INT_WARN("Base impl of OnDisplayRxSense called. displayEvent: %d ", displayEvent); + INT_DEBUG("Base impl of OnDisplayRxSense called. displayEvent: %d ", displayEvent); } dsError_t Host::Register(IHdmiInEvents* listener, const std::string& clientName) diff --git a/ds/include/dslogger.h b/ds/include/dslogger.h index 6ee219bd..4b243e57 100644 --- a/ds/include/dslogger.h +++ b/ds/include/dslogger.h @@ -48,10 +48,20 @@ static inline const char* fileName(const char* path) { return slash ? slash + 1 : path; } +#ifndef DS_LOG_LEVEL +#define DS_LOG_LEVEL ERROR_LEVEL +#endif + #define INT_INFO(FORMAT, ...) ds_log(INFO_LEVEL, fileName(__FILE__), __LINE__, FORMAT, ##__VA_ARGS__ ) #define INT_WARN(FORMAT, ...) ds_log(WARN_LEVEL, fileName(__FILE__), __LINE__, FORMAT, ##__VA_ARGS__ ) #define INT_ERROR(FORMAT, ...) ds_log(ERROR_LEVEL, fileName(__FILE__), __LINE__, FORMAT, ##__VA_ARGS__ ) + +// conditionally enable debug logs, based on LOG_LEVEL +#if DS_LOG_LEVEL >= DEBUG_LEVEL #define INT_DEBUG(FORMAT, ...) ds_log(DEBUG_LEVEL, fileName(__FILE__), __LINE__, FORMAT, ##__VA_ARGS__ ) +#else +#define INT_DEBUG(FORMAT, ...) do {} while(0) +#endif #endif From 82fdd08985d493cb9ce55aecb49f360fcf9f1ea6 Mon Sep 17 00:00:00 2001 From: skamath <161743589+skamath@users.noreply.github.com> Date: Mon, 8 Sep 2025 15:13:27 +0530 Subject: [PATCH 083/103] LOG_LEVEL => DS_LOG_LEVEL in comments Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- ds/include/dslogger.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ds/include/dslogger.h b/ds/include/dslogger.h index 4b243e57..0bff96f4 100644 --- a/ds/include/dslogger.h +++ b/ds/include/dslogger.h @@ -56,7 +56,7 @@ static inline const char* fileName(const char* path) { #define INT_WARN(FORMAT, ...) ds_log(WARN_LEVEL, fileName(__FILE__), __LINE__, FORMAT, ##__VA_ARGS__ ) #define INT_ERROR(FORMAT, ...) ds_log(ERROR_LEVEL, fileName(__FILE__), __LINE__, FORMAT, ##__VA_ARGS__ ) -// conditionally enable debug logs, based on LOG_LEVEL +// conditionally enable debug logs, based on DS_LOG_LEVEL #if DS_LOG_LEVEL >= DEBUG_LEVEL #define INT_DEBUG(FORMAT, ...) ds_log(DEBUG_LEVEL, fileName(__FILE__), __LINE__, FORMAT, ##__VA_ARGS__ ) #else From 5490cb40b4c482231d84906f17b720cec7854a54 Mon Sep 17 00:00:00 2001 From: skamath <161743589+skamath@users.noreply.github.com> Date: Mon, 8 Sep 2025 18:42:43 +0530 Subject: [PATCH 084/103] avoid unused compiler warnings. --- ds/include/dslogger.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ds/include/dslogger.h b/ds/include/dslogger.h index 0bff96f4..6952a0e5 100644 --- a/ds/include/dslogger.h +++ b/ds/include/dslogger.h @@ -60,7 +60,7 @@ static inline const char* fileName(const char* path) { #if DS_LOG_LEVEL >= DEBUG_LEVEL #define INT_DEBUG(FORMAT, ...) ds_log(DEBUG_LEVEL, fileName(__FILE__), __LINE__, FORMAT, ##__VA_ARGS__ ) #else -#define INT_DEBUG(FORMAT, ...) do {} while(0) +#define INT_DEBUG(FORMAT, ...) ((void)sizeof((0, ##__VA_ARGS__))) #endif #endif From b6828d27dbdc2f882f2ea0376fd6b082e10e84cc Mon Sep 17 00:00:00 2001 From: Shrinivas Kamath Date: Mon, 8 Sep 2025 19:40:04 +0530 Subject: [PATCH 085/103] clean up unsupported apis --- ds/host.cpp | 37 +------------------------------------ ds/include/host.hpp | 2 -- 2 files changed, 1 insertion(+), 38 deletions(-) diff --git a/ds/host.cpp b/ds/host.cpp index 948e66fd..13ea01d0 100644 --- a/ds/host.cpp +++ b/ds/host.cpp @@ -26,7 +26,6 @@ * @{ **/ - #include #include @@ -37,8 +36,8 @@ #include "videoDeviceConfig.hpp" #include "dsAudio.h" #include "dsHost.h" -#include "unsupportedOperationException.hpp" #include "dsInternal.h" +#include "unsupportedOperationException.hpp" #include "iarm/IarmImpl.hpp" @@ -52,10 +51,6 @@ using namespace std; namespace device { -const int Host::kPowerOn = dsPOWER_ON; -const int Host::kPowerOff = dsPOWER_OFF; -const int Host::kPowerStandby = dsPOWER_STANDBY; - Host::Host() : m_impl(nullptr) { @@ -94,36 +89,6 @@ Host::~Host() return instance; } -/** - * @fn bool Host::setPowerMode(int mode) - * @brief This API is used to change the power mode of the device. - * This function will set the power mode to active or standby and turn off all the ouput ports. - * The accepted modes are defined as constants in host module: Host::kPowerOn, Host::kPowerOff, Host::kPowerStandby. - * Upon the return of this API, the power mode listeners will be notified of the new power mode. - * This function is currently not supported. - * - * @param[in] mode New Power Mode. - * - * @return None - */ - bool Host::setPowerMode(int) - { - throw UnsupportedOperationException(); - } - - -/** - * @fn int Host::getPowerMode() - * @brief This API is used to get the current power mode of the device. - * This function is currently not supported. - * - * @return Current power mode - */ - int Host::getPowerMode() - { - throw UnsupportedOperationException(); - } - /** * @fn List Host::getVideoOutputPorts() diff --git a/ds/include/host.hpp b/ds/include/host.hpp index 02adbfa8..ec3d226a 100644 --- a/ds/include/host.hpp +++ b/ds/include/host.hpp @@ -400,8 +400,6 @@ class Host { // @return dsERR_NONE on success, appropriate dsError_t on failure dsError_t UnRegister(IDisplayDeviceEvents* listener); - bool setPowerMode(int mode); - int getPowerMode(); SleepMode getPreferredSleepMode(); int setPreferredSleepMode(const SleepMode); List getAvailableSleepModes(); From bf613226e91f607dd65d63d31343558270e8aca9 Mon Sep 17 00:00:00 2001 From: Shrinivas Kamath Date: Mon, 8 Sep 2025 20:58:40 +0530 Subject: [PATCH 086/103] Revert "clean up unsupported apis" This reverts commit b6828d27dbdc2f882f2ea0376fd6b082e10e84cc. --- ds/host.cpp | 37 ++++++++++++++++++++++++++++++++++++- ds/include/host.hpp | 2 ++ 2 files changed, 38 insertions(+), 1 deletion(-) diff --git a/ds/host.cpp b/ds/host.cpp index 13ea01d0..948e66fd 100644 --- a/ds/host.cpp +++ b/ds/host.cpp @@ -26,6 +26,7 @@ * @{ **/ + #include #include @@ -36,8 +37,8 @@ #include "videoDeviceConfig.hpp" #include "dsAudio.h" #include "dsHost.h" -#include "dsInternal.h" #include "unsupportedOperationException.hpp" +#include "dsInternal.h" #include "iarm/IarmImpl.hpp" @@ -51,6 +52,10 @@ using namespace std; namespace device { +const int Host::kPowerOn = dsPOWER_ON; +const int Host::kPowerOff = dsPOWER_OFF; +const int Host::kPowerStandby = dsPOWER_STANDBY; + Host::Host() : m_impl(nullptr) { @@ -89,6 +94,36 @@ Host::~Host() return instance; } +/** + * @fn bool Host::setPowerMode(int mode) + * @brief This API is used to change the power mode of the device. + * This function will set the power mode to active or standby and turn off all the ouput ports. + * The accepted modes are defined as constants in host module: Host::kPowerOn, Host::kPowerOff, Host::kPowerStandby. + * Upon the return of this API, the power mode listeners will be notified of the new power mode. + * This function is currently not supported. + * + * @param[in] mode New Power Mode. + * + * @return None + */ + bool Host::setPowerMode(int) + { + throw UnsupportedOperationException(); + } + + +/** + * @fn int Host::getPowerMode() + * @brief This API is used to get the current power mode of the device. + * This function is currently not supported. + * + * @return Current power mode + */ + int Host::getPowerMode() + { + throw UnsupportedOperationException(); + } + /** * @fn List Host::getVideoOutputPorts() diff --git a/ds/include/host.hpp b/ds/include/host.hpp index ec3d226a..02adbfa8 100644 --- a/ds/include/host.hpp +++ b/ds/include/host.hpp @@ -400,6 +400,8 @@ class Host { // @return dsERR_NONE on success, appropriate dsError_t on failure dsError_t UnRegister(IDisplayDeviceEvents* listener); + bool setPowerMode(int mode); + int getPowerMode(); SleepMode getPreferredSleepMode(); int setPreferredSleepMode(const SleepMode); List getAvailableSleepModes(); From ef37ad870e936fe177997a68547f9d525c56acc3 Mon Sep 17 00:00:00 2001 From: Shrinivas Kamath Date: Mon, 8 Sep 2025 20:58:57 +0530 Subject: [PATCH 087/103] Revert "avoid unused compiler warnings." This reverts commit 5490cb40b4c482231d84906f17b720cec7854a54. --- ds/include/dslogger.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ds/include/dslogger.h b/ds/include/dslogger.h index 6952a0e5..0bff96f4 100644 --- a/ds/include/dslogger.h +++ b/ds/include/dslogger.h @@ -60,7 +60,7 @@ static inline const char* fileName(const char* path) { #if DS_LOG_LEVEL >= DEBUG_LEVEL #define INT_DEBUG(FORMAT, ...) ds_log(DEBUG_LEVEL, fileName(__FILE__), __LINE__, FORMAT, ##__VA_ARGS__ ) #else -#define INT_DEBUG(FORMAT, ...) ((void)sizeof((0, ##__VA_ARGS__))) +#define INT_DEBUG(FORMAT, ...) do {} while(0) #endif #endif From 0a6f2c2d54bcca469a4dedb4e75387d78c2c40d1 Mon Sep 17 00:00:00 2001 From: skamath <161743589+skamath@users.noreply.github.com> Date: Mon, 8 Sep 2025 21:11:07 +0530 Subject: [PATCH 088/103] vnsprintf / snprintf both take care of null termination Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- ds/dslogger.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ds/dslogger.cpp b/ds/dslogger.cpp index 36961fca..2fd2f81e 100644 --- a/ds/dslogger.cpp +++ b/ds/dslogger.cpp @@ -54,7 +54,7 @@ int ds_log(int priority, const char* fileName, int lineNum, const char *format, va_list args; va_start(args, format); - vsnprintf(tmp_buff + offset, MAX_LOG_BUFF - 1 - offset, format, args); + vsnprintf(tmp_buff + offset, MAX_LOG_BUFF - offset, format, args); va_end(args); if (nullptr != logCb) { From a701944227e5545d3a727d99af0961d9399deefc Mon Sep 17 00:00:00 2001 From: skamath <161743589+skamath@users.noreply.github.com> Date: Mon, 8 Sep 2025 21:11:42 +0530 Subject: [PATCH 089/103] more idiomatic nop Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- ds/include/dslogger.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ds/include/dslogger.h b/ds/include/dslogger.h index 0bff96f4..e356979d 100644 --- a/ds/include/dslogger.h +++ b/ds/include/dslogger.h @@ -60,7 +60,7 @@ static inline const char* fileName(const char* path) { #if DS_LOG_LEVEL >= DEBUG_LEVEL #define INT_DEBUG(FORMAT, ...) ds_log(DEBUG_LEVEL, fileName(__FILE__), __LINE__, FORMAT, ##__VA_ARGS__ ) #else -#define INT_DEBUG(FORMAT, ...) do {} while(0) +#define INT_DEBUG(FORMAT, ...) ((void)0) #endif #endif From 18a4f4fd440eb724e7e71343107e9ee21de52329 Mon Sep 17 00:00:00 2001 From: skamath <161743589+skamath@users.noreply.github.com> Date: Tue, 9 Sep 2025 08:08:06 +0530 Subject: [PATCH 090/103] remove unused const --- ds/host.cpp | 4 ---- 1 file changed, 4 deletions(-) diff --git a/ds/host.cpp b/ds/host.cpp index 948e66fd..e2475e14 100644 --- a/ds/host.cpp +++ b/ds/host.cpp @@ -52,10 +52,6 @@ using namespace std; namespace device { -const int Host::kPowerOn = dsPOWER_ON; -const int Host::kPowerOff = dsPOWER_OFF; -const int Host::kPowerStandby = dsPOWER_STANDBY; - Host::Host() : m_impl(nullptr) { From 7ee7d1832f21418223e70c7183a83df28c42cb4c Mon Sep 17 00:00:00 2001 From: Dosakayala Nagalakshmi Date: Tue, 9 Sep 2025 11:38:09 +0530 Subject: [PATCH 091/103] removed unwanted apis... --- ds/frontPanelTextDisplay.cpp | 17 +- ds/host.cpp | 203 +++++++++++++---------- ds/include/frontPanelTextDisplay.hpp | 2 +- ds/include/host.hpp | 235 ++++++++++++++++++++------- ds/videoOutputPort.cpp | 10 -- rpc/cli/dsFPD.c | 19 --- rpc/cli/dsHost.cpp | 25 --- rpc/cli/dsVideoPort.c | 24 --- rpc/include/dsRpc.h | 3 - rpc/srv/dsFPD.c | 10 +- rpc/srv/dsHost.cpp | 14 +- rpc/srv/dsVideoPort.c | 97 +++++++++-- 12 files changed, 377 insertions(+), 282 deletions(-) diff --git a/ds/frontPanelTextDisplay.cpp b/ds/frontPanelTextDisplay.cpp index 1eb64d5d..3943934c 100644 --- a/ds/frontPanelTextDisplay.cpp +++ b/ds/frontPanelTextDisplay.cpp @@ -208,22 +208,7 @@ void FrontPanelTextDisplay::enableDisplay(const int enable) } } -/** - * @fn FrontPanelTextDisplay::SetLEDStatus - * @brief This function is used to Set LED status on front panel. - * - * @param[in] fpdIndicator. - * @param[in] fpdState. - * - * @return None - */ - void SetLEDStatus(const dsFPDIndicator_t fpdIndicator, const dsFPDState_t fpdState); - { - dsError_t ret = dsSetLEDStatus(fpdIndicator, fpdState); - if (ret != dsERR_NONE) { - throw Exception(ret); - } - } + /** * @fn FrontPanelTextDisplay::setTextBrightness(const int &brightness) * @brief This API sets the brightness value for the front panel LED. diff --git a/ds/host.cpp b/ds/host.cpp index f534c7af..e2475e14 100644 --- a/ds/host.cpp +++ b/ds/host.cpp @@ -40,7 +40,7 @@ #include "unsupportedOperationException.hpp" #include "dsInternal.h" -#include "iarm/IarmHostImpl.hpp" +#include "iarm/IarmImpl.hpp" /** * @file host.cpp @@ -52,10 +52,6 @@ using namespace std; namespace device { -const int Host::kPowerOn = dsPOWER_ON; -const int Host::kPowerOff = dsPOWER_OFF; -const int Host::kPowerStandby = dsPOWER_STANDBY; - Host::Host() : m_impl(nullptr) { @@ -106,7 +102,7 @@ Host::~Host() * * @return None */ - bool Host::setPowerMode(int mode) + bool Host::setPowerMode(int) { throw UnsupportedOperationException(); } @@ -455,7 +451,7 @@ Host::~Host() void Host::getMS12ConfigDetails(std::string &configType) { dsError_t ret = dsERR_NONE; - char type[MS12_CONFIG_BUF_SIZE]; + char type[MS12_CONFIG_BUF_SIZE] = { 0 }; ret = dsGetMS12ConfigType(type); if (ret == dsERR_NONE) { @@ -765,195 +761,230 @@ Host::~Host() printf ("%s:%d - Set Audio Mixer levels for audio input: %d with volume = %d\n", __PRETTY_FUNCTION__, __LINE__,aInput, volume); } - -bool Host::SetRebootConfig(string rebootReasonCustom, uint8_t powerState) -{ - dsError_t ret = dsSetRebootConfig(rebootReasonCustom, powerState); - if (ret == dsERR_NONE) - return true; - else - return false; -} - DefaultImpl& Host::impl() { - /* lazy instantiation */ + // lazy instantiation if (!m_impl) { m_impl = std::unique_ptr(new DefaultImpl()); } return *m_impl; } +/* virtual */ void Host::IHdmiInEvents::OnHdmiInEventHotPlug(dsHdmiInPort_t port, bool isConnected) +{ + // If client needs to handle this event, they should override this method + INT_DEBUG("Base impl of OnHdmiInEventHotPlug called. port: %d, isConnected: %d", port, isConnected); +} + +/* virtual */ void Host::IHdmiInEvents::OnHdmiInEventSignalStatus(dsHdmiInPort_t port, dsHdmiInSignalStatus_t signalStatus) +{ + // If client needs to handle this event, they should override this method + INT_DEBUG("Base impl of OnHdmiInEventSignalStatus called. port: %d, signalStatus: %d", port, signalStatus); +} + +/* virtual */ void Host::IHdmiInEvents::OnHdmiInEventStatus(dsHdmiInPort_t activePort, bool isPresented) +{ + // If client needs to handle this event, they should override this method + INT_DEBUG("Base impl of OnHdmiInEventStatus called. activePort: %d, isPresented: %d", activePort, isPresented); +} + +/* virtual */ void Host::IHdmiInEvents::OnHdmiInVideoModeUpdate(dsHdmiInPort_t port, const dsVideoPortResolution_t& videoPortResolution) +{ + // If client needs to handle this event, they should override this method + INT_DEBUG("Base impl of OnHdmiInVideoModeUpdate called. port: %d, interlaced: %d", port, videoPortResolution.interlaced); +} + +/* virtual */ void Host::IHdmiInEvents::OnHdmiInAllmStatus(dsHdmiInPort_t port, bool allmStatus) +{ + // If client needs to handle this event, they should override this method + INT_DEBUG("Base impl of OnHdmiInAllmStatus called. port: %d, allmStatus: %d", port, allmStatus); +} + +/* virtual */ void Host::IHdmiInEvents::OnHdmiInAVIContentType(dsHdmiInPort_t port, dsAviContentType_t aviContentType) +{ + // If client needs to handle this event, they should override this method + INT_DEBUG("Base impl of OnHdmiInAVIContentType called. port: %d, aviContentType: %d", port, aviContentType); +} + +/* virtual */ void Host::IHdmiInEvents::OnHdmiInVRRStatus(dsHdmiInPort_t port, dsVRRType_t vrrType) +{ + // If client needs to handle this event, they should override this method + INT_DEBUG("Base impl of OnHdmiInVRRStatus called. port: %d, vrrType: %d", port, vrrType); +} + +/* virtual */ void Host::IHdmiInEvents::OnHdmiInAVLatency(int audioDelay, int videoDelay) +{ + // If client needs to handle this event, they should override this method + INT_DEBUG("Base impl of OnHdmiInAVLatency called. audioDelay: %d, videoDelay: %d", audioDelay, videoDelay); +} + /* virtual */ void Host::IVideoDeviceEvents::OnDisplayFrameratePreChange(const std::string& frameRate) { - /* If client needs to handle this event, they should override this method */ - INT_WARN("Base impl of OnDisplayFrameratePreChange called. frameRate: %s", frameRate.c_str()); + // If client needs to handle this event, they should override this method + INT_DEBUG("Base impl of OnDisplayFrameratePreChange called. frameRate: %s", frameRate.c_str()); } /* virtual */ void Host::IVideoDeviceEvents::OnDisplayFrameratePostChange(const std::string& frameRate) { - /* If client needs to handle this event, they should override this method */ - INT_WARN("Base impl of OnDisplayFrameratePostChange called. frameRate: %s", frameRate.c_str()); + // If client needs to handle this event, they should override this method + INT_DEBUG("Base impl of OnDisplayFrameratePostChange called. frameRate: %s", frameRate.c_str()); } /* virtual */ void Host::IVideoDeviceEvents::OnZoomSettingsChanged(dsVideoZoom_t zoomSetting) { - /* If client needs to handle this event, they should override this method */ - INT_WARN("Base impl of OnZoomSettingsChanged called. zoomSetting: %d", zoomSetting); + // If client needs to handle this event, they should override this method + INT_DEBUG("Base impl of OnZoomSettingsChanged called. zoomSetting: %d", zoomSetting); } /* virtual */ void Host::IVideoOutputPortEvents::OnResolutionPreChange(int width, int height) { - /* If client needs to handle this event, they should override this method */ - INT_WARN("Base impl of OnResolutionPreChange called. width: %d, height: %d", width, height); + // If client needs to handle this event, they should override this method + INT_DEBUG("Base impl of OnResolutionPreChange called. width: %d, height: %d", width, height); } /* virtual */ void Host::IVideoOutputPortEvents::OnResolutionPostChange(int width, int height) { - /* If client needs to handle this event, they should override this method */ - INT_WARN("Base impl of OnResolutionPostChange called. width: %d, height: %d", width, height); + // If client needs to handle this event, they should override this method + INT_DEBUG("Base impl of OnResolutionPostChange called. width: %d, height: %d", width, height); } /* virtual */ void Host::IVideoOutputPortEvents::OnHDCPStatusChange(dsHdcpStatus_t hdcpStatus) { - /* If client needs to handle this event, they should override this method */ - INT_WARN("Base impl of OnHDCPStatusChange called. hdcpStatus: %d", hdcpStatus); + // If client needs to handle this event, they should override this method + INT_DEBUG("Base impl of OnHDCPStatusChange called. hdcpStatus: %d", hdcpStatus); } -/* virtual */ void Host::IVideoOutputPortEvents::OnVideoFormatUpdate(dsHDRStandard_t videoFormatHDR) +/* virtual */ void Host::IVideoOutputPortEvents::OnVideoFormatUpdate(dsHDRStandard_t videoFormatHDR) { - /* If client needs to handle this event, they should override this method */ - INT_WARN("Base impl of OnVideoFormatUpdate called. videoFormatHDR: %d", videoFormatHDR); + // If client needs to handle this event, they should override this method + INT_DEBUG("Base impl of OnVideoFormatUpdate called. videoFormatHDR: %d", videoFormatHDR); } /* virtual */ void Host::IAudioOutputPortEvents::OnAssociatedAudioMixingChanged(bool mixing) { - /* If client needs to handle this event, they should override this method */ - INT_WARN("Base impl of OnAssociatedAudioMixingChanged called. mixing: %d", mixing); + // If client needs to handle this event, they should override this method + INT_DEBUG("Base impl of OnAssociatedAudioMixingChanged called. mixing: %d", mixing); } /* virtual */ void Host::IAudioOutputPortEvents::OnAudioFaderControlChanged(int mixerBalance) { - /* If client needs to handle this event, they should override this method */ - INT_WARN("Base impl of OnAudioFaderControlChanged called. mixerBalance: %d", mixerBalance); + // If client needs to handle this event, they should override this method + INT_DEBUG("Base impl of OnAudioFaderControlChanged called. mixerBalance: %d", mixerBalance); } /* virtual */ void Host::IAudioOutputPortEvents::OnAudioPrimaryLanguageChanged(const std::string& primaryLanguage) { - /* If client needs to handle this event, they should override this method */ - INT_WARN("Base impl of OnAudioPrimaryLanguageChanged called. primaryLanguage: %s", primaryLanguage.c_str()); + // If client needs to handle this event, they should override this method + INT_DEBUG("Base impl of OnAudioPrimaryLanguageChanged called. primaryLanguage: %s", primaryLanguage.c_str()); } /* virtual */ void Host::IAudioOutputPortEvents::OnAudioSecondaryLanguageChanged(const std::string& secondaryLanguage) { - /* If client needs to handle this event, they should override this method */ - INT_WARN("Base impl of OnAudioSecondaryLanguageChanged called. secondaryLanguage: %s", secondaryLanguage.c_str()); + // If client needs to handle this event, they should override this method + INT_DEBUG("Base impl of OnAudioSecondaryLanguageChanged called. secondaryLanguage: %s", secondaryLanguage.c_str()); } /* virtual */ void Host::IAudioOutputPortEvents::OnAudioOutHotPlug(dsAudioPortType_t portType, uint32_t uiPortNumber, bool isPortConnected) { - /* If client needs to handle this event, they should override this method */ - INT_WARN("Base impl of OnAudioOutHotPlug called. portType: %d, uiPortNumber: %d, isPortConnected: %d", portType, uiPortNumber, isPortConnected); + // If client needs to handle this event, they should override this method + INT_DEBUG("Base impl of OnAudioOutHotPlug called. portType: %d, uiPortNumber: %d, isPortConnected: %d", portType, uiPortNumber, isPortConnected); } /* virtual */ void Host::IAudioOutputPortEvents::OnDolbyAtmosCapabilitiesChanged(dsATMOSCapability_t atmosCapability, bool status) { - /* If client needs to handle this event, they should override this method */ - INT_WARN("Base impl of OnDolbyAtmosCapabilitiesChanged called. atmosCapability: %d, status: %d", atmosCapability, status); + // If client needs to handle this event, they should override this method + INT_DEBUG("Base impl of OnDolbyAtmosCapabilitiesChanged called. atmosCapability: %d, status: %d", atmosCapability, status); } -// TODO: requires dsMgr.h header include ?? -// void Host::IAudioOutputPortEvents::OnAudioPortStateChanged(dsAudioPortState_t audioPortState) { } +/* virtual */ void Host::IAudioOutputPortEvents::OnAudioPortStateChanged(dsAudioPortState_t audioPortState) +{ + // If client needs to handle this event, they should override this method + INT_DEBUG("Base impl of OnAudioPortStateChanged called. audioPortState: %d", audioPortState); +} /* virtual */ void Host::IAudioOutputPortEvents::OnAudioModeEvent(dsAudioPortType_t audioPortType, dsAudioStereoMode_t audioStereoMode) { - /* If client needs to handle this event, they should override this method */ - INT_WARN("Base impl of OnAudioModeEvent called. audioPortType: %d, audioStereoMode: %d", audioPortType, audioStereoMode); + // If client needs to handle this event, they should override this method + INT_DEBUG("Base impl of OnAudioModeEvent called. audioPortType: %d, audioStereoMode: %d", audioPortType, audioStereoMode); } /* virtual */ void Host::IAudioOutputPortEvents::OnAudioLevelChangedEvent(int audioLevel) { - /* If client needs to handle this event, they should override this method */ - INT_WARN("Base impl of OnAudioLevelChangedEvent called. audioLevel: %d", audioLevel); + // If client needs to handle this event, they should override this method + INT_DEBUG("Base impl of OnAudioLevelChangedEvent called. audioLevel: %d", audioLevel); } /* virtual */ void Host::IAudioOutputPortEvents::OnAudioFormatUpdate(dsAudioFormat_t audioFormat) { - /* If client needs to handle this event, they should override this method */ - INT_WARN("Base impl of OnAudioFormatUpdate called. audioFormat: %d", audioFormat); + // If client needs to handle this event, they should override this method + INT_DEBUG("Base impl of OnAudioFormatUpdate called. audioFormat: %d", audioFormat); } /* virtual */ void Host::IDisplayDeviceEvents::OnDisplayHDMIHotPlug(dsDisplayEvent_t displayEvent) { - /* If client needs to handle this event, they should override this method */ - INT_WARN("Base impl of OnDisplayHDMIHotPlug called. displayEvent: %d", displayEvent); + // If client needs to handle this event, they should override this method + INT_DEBUG("Base impl of OnDisplayHDMIHotPlug called. displayEvent: %d", displayEvent); } /* virtual */ void Host::ICompositeInEvents::OnCompositeInHotPlug(dsCompositeInPort_t port, bool isConnected) { /* If client needs to handle this event, they should override this method */ - INT_WARN("Base impl of OnCompositeInHotPlug called. port: %d isConnected %d", port, isConnected); + INT_DEBUG("Base impl of OnCompositeInHotPlug called. port: %d isConnected %d", port, isConnected); } /* virtual */ void Host::ICompositeInEvents::OnCompositeInSignalStatus(dsCompositeInPort_t port, dsCompInSignalStatus_t signalStatus) { /* If client needs to handle this event, they should override this method */ - INT_WARN("Base impl of OnCompositeInSignalStatus called. port: %d signalStatus %d", port, signalStatus); + INT_DEBUG("Base impl of OnCompositeInSignalStatus called. port: %d signalStatus %d", port, signalStatus); } /* virtual */ void Host::ICompositeInEvents::OnCompositeInStatus(dsCompositeInPort_t activePort, bool isPresented) { /* If client needs to handle this event, they should override this method */ - INT_WARN("Base impl of OnCompositeInStatus called. activePort: %d isPresented %d", activePort, isPresented); + INT_DEBUG("Base impl of OnCompositeInStatus called. activePort: %d isPresented %d", activePort, isPresented); } /* virtual */ void Host::ICompositeInEvents::OnCompositeInVideoModeUpdate(dsCompositeInPort_t activePort, dsVideoPortResolution_t videoResolution) { /* If client needs to handle this event, they should override this method */ - INT_WARN("Base impl of OnCompositeInVideoModeUpdate called. activePort: %d videoResolution %d", activePort, videoResolution.pixelResolution); + INT_DEBUG("Base impl of OnCompositeInVideoModeUpdate called. activePort: %d videoResolution %d", activePort, videoResolution.pixelResolution); } -/* virtual */ void Host::IDisplayEvents::OnDisplayRxSense(dsDisplayEvent_t displayEvent) +/* virtual */ void Host::IDisplayEvents::OnDisplayRxSense(dsDisplayEvent_t displayEvent) { /* If client needs to handle this event, they should override this method */ - INT_WARN("Base impl of OnDisplayRxSense called. displayEvent: %d ", displayEvent); -} -/* virtual */ void Host::IDisplayEvents::OnDisplayHDCPStatus() -{ - /* If client needs to handle this event, they should override this method */ - INT_WARN("Base impl of OnDisplayHDCPStatus called. "); + INT_DEBUG("Base impl of OnDisplayRxSense called. displayEvent: %d ", displayEvent); } - -dsError_t Host::Register(IHDMIInEvents *listener) +dsError_t Host::Register(IHdmiInEvents* listener, const std::string& clientName) { - return impl().Register(listener); + return impl().Register(listener, clientName); } -dsError_t Host::UnRegister(IHDMIInEvents *listener) +dsError_t Host::UnRegister(IHdmiInEvents* listener) { return impl().UnRegister(listener); } -dsError_t Host::Register(ICompositeInEvents *listener) +dsError_t Host::Register(ICompositeInEvents* listener, const std::string& clientName) { - return impl().Register(listener); + return impl().Register(listener, clientName); } -dsError_t Host::UnRegister(ICompositeInEvents *listener) +dsError_t Host::UnRegister(ICompositeInEvents* listener) { return impl().UnRegister(listener); } -dsError_t Host::Register(IDisplayEvents *listener) +dsError_t Host::Register(IDisplayEvents* listener, const std::string& clientName) { - return impl().Register(listener); + return impl().Register(listener, clientName); } -dsError_t Host::UnRegister(IDisplayEvents *listener) +dsError_t Host::UnRegister(IDisplayEvents* listener) { return impl().UnRegister(listener); } -dsError_t Host::Register(IVideoDeviceEvents* listener) +dsError_t Host::Register(IVideoDeviceEvents* listener, const std::string& clientName) { - return impl().Register(listener); + return impl().Register(listener, clientName); } dsError_t Host::UnRegister(IVideoDeviceEvents* listener) @@ -961,9 +992,9 @@ dsError_t Host::UnRegister(IVideoDeviceEvents* listener) return impl().UnRegister(listener); } -dsError_t Host::Register(IVideoOutputPortEvents* listener) +dsError_t Host::Register(IVideoOutputPortEvents* listener, const std::string& clientName) { - return impl().Register(listener); + return impl().Register(listener, clientName); } dsError_t Host::UnRegister(IVideoOutputPortEvents* listener) @@ -971,9 +1002,9 @@ dsError_t Host::UnRegister(IVideoOutputPortEvents* listener) return impl().UnRegister(listener); } -dsError_t Host::Register(IAudioOutputPortEvents* listener) +dsError_t Host::Register(IAudioOutputPortEvents* listener, const std::string& clientName) { - return impl().Register(listener); + return impl().Register(listener, clientName); } dsError_t Host::UnRegister(IAudioOutputPortEvents* listener) @@ -981,11 +1012,13 @@ dsError_t Host::UnRegister(IAudioOutputPortEvents* listener) return impl().UnRegister(listener); } -dsError_t Host::Register(IDisplayDeviceEvents* listener) { - return impl().Register(listener); +dsError_t Host::Register(IDisplayDeviceEvents* listener, const std::string& clientName) +{ + return impl().Register(listener, clientName); } -dsError_t Host::UnRegister(IDisplayDeviceEvents* listener) { +dsError_t Host::UnRegister(IDisplayDeviceEvents* listener) +{ return impl().UnRegister(listener); } diff --git a/ds/include/frontPanelTextDisplay.hpp b/ds/include/frontPanelTextDisplay.hpp index e3a28be3..588a3352 100644 --- a/ds/include/frontPanelTextDisplay.hpp +++ b/ds/include/frontPanelTextDisplay.hpp @@ -142,7 +142,7 @@ class FrontPanelTextDisplay : public FrontPanelIndicator { int getTextColorMode(); void setTextBrightness(const int &brightness); void enableDisplay(const int enable); - void SetLEDStatus(const dsFPDIndicator_t fpdIndicator, const dsFPDState_t fpdState); + /** * @fn Scroll getScroll() const diff --git a/ds/include/host.hpp b/ds/include/host.hpp index 2aaaaa8c..02adbfa8 100644 --- a/ds/include/host.hpp +++ b/ds/include/host.hpp @@ -24,6 +24,72 @@ * @{ **/ +/** + * This file provides all the devicesettings notifications for the usage of the various plugin clients. + * The notifications are classified in to various blocks. + * + * The Clients have to register for the respective required blocks like IHdmiInEvents, ICompositeInEvents, + * IVideoOutputPortEvents, IVideoDeviceEvents etc through the Register API Call. + * The Clients have to unregister for the respective required blocks like IHdmiInEvents, + * ICompositeInEvents, IVideoOutputPortEvents, IVideoDeviceEvents etc through the UnRegister API Call + * when the activity is completed. + * + * The clients need to implement the required notification handler functions for the respective blocks + * which they have registered. If clients don't need to handle some notifications in a block, they + * need not implement those functions. + * + * Example: A client can choose to register for IHdmiInEvents block of events and implement only + * required notification function OnHdmiInEventHotPlug and can ignore other functions in the same event + * block like OnHdmiInEventSignalStatus. + * + * The Client will receive the event notification for which it has registered and implemented the notification. + * This will happen when the respective action has taken place in the device. + * + * IHdmiInEvents + * OnHdmiInEventHotPlug : Will notify the HDMI Hot Plug IN/OUT Event + * OnHdmiInEventSignalStatus : Will notify the HDMI Signal Status + * OnHdmiInEventStatus : Will notify the port specific HDMI status + * OnHdmiInVideoModeUpdate : Will notify the HDMI video resolution changes + * OnHdmiInAllmStatus : Will notify the HDMI Auto Low Latency Mode + * OnHdmiInAVIContentType : Will notify the HDMI AVI info like Gaming, Cinema, Photo etc + * OnHdmiInVRRStatus : Will notify the HDMI VRR info(Variable Refresh Rate) + * OnHdmiInAVLatency : Will notify about the HDMI AV Latency info. + * + * ICompositeInEvents + * OnCompositeInHotPlug : Will notify about the Hotplug in Composite Mode. + * OnCompositeInSignalStatus : Will notify about the Signal Status in Composite Mode. + * OnCompositeInStatus : Will notify about the Composite Status in Composite Mode. + * OnCompositeInVideoModeUpdate : Will notify about the Update in video Mode in Composite Mode. + * + * IDisplayEvents + * OnDisplayRxSense : Will notify about the RX Sense + * + * IVideoDeviceEvents + * OnDisplayFrameratePreChange : Will notify about the Frame Rate Before Change. + * OnDisplayFrameratePostChange : Will notify about the Frame rate After change. + * OnZoomSettingsChanged : Will notify about the zoom settings changed + * + * IVideoOutputPortEvents + * OnResolutionPreChange : Will notify about the Resolution Pre Change + * OnHDCPStatusChange : Will notify about the HDCP status Change + * OnVideoFormatUpdate : Will notify about the Video Format Change. + * + * IAudioOutputPortEvents + * OnAssociatedAudioMixingChanged : Will notify about the Audio Mixer Change. + * OnAudioFaderControlChanged : Will notify about the Fader Control Change. + * OnAudioPrimaryLanguageChanged : Will notify about the Primary Language Change. + * OnAudioSecondaryLanguageChanged : Will notify about the Secondary Language Change. + * OnAudioOutHotPlug : Will notify about the Audio Out Hot Plug Change. + * OnDolbyAtmosCapabilitiesChanged : Will notify about the ATMOS capability Change. + * OnAudioPortStateChanged : Will notify about the Audio Port State Change. + * OnAudioModeEvent : Will notify about the Audio Mode Event Change. + * OnAudioLevelChangedEvent : Will notify about the Audio Level Change. + * OnAudioFormatUpdate : Will notify about the Audio Format Change. + * + * IDisplayDeviceEvents + * OnDisplayHDMIHotPlug : Will notify about the HDMI Hot Plug Change + **/ + #ifndef _DS_HOST_HPP_ #define _DS_HOST_HPP_ #include @@ -38,6 +104,25 @@ #include "videoDevice.hpp" #include "videoOutputPort.hpp" +// dsMgr.h cannot be exposed to clients as we plan to deprecate it +// this is only temporary until dsAudioPortState_t is moved to ds halif headers +#ifndef HAVE_DSAUDIOPORT_STATE_TYPE +#define HAVE_DSAUDIOPORT_STATE_TYPE +#ifdef __cplusplus +extern "C" { +#endif + +typedef enum _dsAudioPortState { + dsAUDIOPORT_STATE_UNINITIALIZED, + dsAUDIOPORT_STATE_INITIALIZED, + dsAUDIOPORT_STATE_MAX +} dsAudioPortState_t; + +#ifdef __cplusplus +} +#endif +#endif // HAVE_DSAUDIOPORT_STATE_TYPE + /** * @file host.hpp * @brief It contains class, structures referenced by host.cpp file. @@ -47,9 +132,9 @@ using namespace std; namespace device { // Forward declaration of the implementation class -class IarmHostImpl; +class IarmImpl; // In future add a conditional to choose implementation class based on build configuration -using DefaultImpl = IarmHostImpl; +using DefaultImpl = IarmImpl; /** * @class Host @@ -62,59 +147,64 @@ class Host { static const int kPowerOff; static const int kPowerStandby; - struct IHDMIInEvents { - // @brief HDMI Event Hot Plug - // @param port: port 0 or 1 et al - // @param isConnected: is it connected (true) or not (false) - virtual void OnHDMIInEventHotPlug(dsHdmiInPort_t port, bool isConnected) { }; - - // @brief HDMI Event Signal status - // @param port: port 0 or 1 et al - // @param signalStatus: Signal Status - virtual void OnHDMIInEventSignalStatus(dsHdmiInPort_t port, dsHdmiInSignalStatus_t signalStatus) { }; - - // @brief HDMI Event Signal status - // @param activePort: port 0 or 1 et al - // @param isPresented: is it presented or not - virtual void OnHDMIInEventStatus(dsHdmiInPort_t activePort, bool isPresented) { }; - - // @brief HDMI Video Mode update - // @param port: port 0 or 1 et al - // @param videoPortResolution: Video port resolution - virtual void OnHDMIInVideoModeUpdate(dsHdmiInPort_t port, const dsVideoPortResolution_t& videoPortResolution) { }; - - // @brief HDMI ALLM (Auto Low Latency Mode) status - // @param port: port 0 or 1 et al - // @param allmStatus: allm status - virtual void OnHDMIInAllmStatus(dsHdmiInPort_t port, bool allmStatus) { }; - - // @brief HDMI Event AVI content type - // @param port: port 0 or 1 et al - // @param aviContentType: AVI content type - virtual void OnHDMIInAVIContentType(dsHdmiInPort_t port, dsAviContentType_t aviContentType) { }; - - // @brief HDMI VRR status - // @param port: port 0 or 1 et al - // @param vrrType: VRR type - virtual void OnHDMIInVRRStatus(dsHdmiInPort_t port, dsVRRType_t vrrType) { }; - - // @brief HDMI Event AV Latency - // @param audioDelay: audio delay (in millisecs) - // @param videoDelay: video delay (in millisecs) - virtual void OnHDMIInAVLatency(int audioDelay, int videoDelay) { }; - + struct IHdmiInEvents { + virtual ~IHdmiInEvents() = default; + + // @brief HDMI Event Hot Plug + // @param port: port 0 or 1 et al + // @param isConnected: is it connected (true) or not (false) + virtual void OnHdmiInEventHotPlug(dsHdmiInPort_t port, bool isConnected); + + // @brief HDMI Event Signal status + // @param port: port 0 or 1 et al + // @param signalStatus: Signal Status + virtual void OnHdmiInEventSignalStatus(dsHdmiInPort_t port, dsHdmiInSignalStatus_t signalStatus); + + // @brief HDMI Event Signal status + // @param activePort: port 0 or 1 et al + // @param isPresented: is it presented or not + virtual void OnHdmiInEventStatus(dsHdmiInPort_t activePort, bool isPresented); + + // @brief HDMI Video Mode update + // @param port: port 0 or 1 et al + // @param videoPortResolution: Video port resolution + virtual void OnHdmiInVideoModeUpdate(dsHdmiInPort_t port, const dsVideoPortResolution_t& videoPortResolution); + + // @brief HDMI ALLM (Auto Low Latency Mode) status + // @param port: port 0 or 1 et al + // @param allmStatus: allm status + virtual void OnHdmiInAllmStatus(dsHdmiInPort_t port, bool allmStatus); + + // @brief HDMI Event AVI content type + // @param port: port 0 or 1 et al + // @param aviContentType: AVI content type + virtual void OnHdmiInAVIContentType(dsHdmiInPort_t port, dsAviContentType_t aviContentType); + + // @brief HDMI VRR status + // @param port: port 0 or 1 et al + // @param vrrType: VRR type + virtual void OnHdmiInVRRStatus(dsHdmiInPort_t port, dsVRRType_t vrrType); + + // @brief HDMI Event AV Latency + // @param audioDelay: audio delay (in millisecs) + // @param videoDelay: video delay (in millisecs) + virtual void OnHdmiInAVLatency(int audioDelay, int videoDelay); }; // @brief Register a listener for HDMI device events // @param listener: class object implementing the listener - dsError_t Register(IHDMIInEvents *listener); + // @param clientName: Optional (but highly recommended) name of the client registering for events + // clientName is used for logging purposes only + // @return dsERR_NONE on success, appropriate dsError_t on failure + dsError_t Register(IHdmiInEvents* listener, const std::string& clientName = ""); // @brief UnRegister a listener for HDMI device events // @param listener: class object implementing the listener - dsError_t UnRegister(IHDMIInEvents *listener); + dsError_t UnRegister(IHdmiInEvents* listener); struct ICompositeInEvents { virtual ~ICompositeInEvents() = default; + // @brief Composite In Hotplug event // @param port: Port of the hotplug // @param isConnected: Is it connected (true) or not(false) @@ -138,11 +228,15 @@ class Host { // @brief Register a listener for composite events // @param listener: class object implementing the listener - dsError_t Register(ICompositeInEvents *listener); - + // @param clientName: Optional (but highly recommended) name of the client registering for events + // clientName is used for logging purposes only + // @return dsERR_NONE on success, appropriate dsError_t on failure + dsError_t Register(ICompositeInEvents* listener, const std::string& clientName = ""); + // @brief UnRegister a listener for composite events // @param listener: class object implementing the listener - dsError_t UnRegister(ICompositeInEvents *listener); + // @return dsERR_NONE on success, appropriate dsError_t on failure + dsError_t UnRegister(ICompositeInEvents* listener); struct IDisplayEvents { virtual ~IDisplayEvents() = default; @@ -150,19 +244,19 @@ class Host { // @brief Display RX Sense event // @param displayEvent: DS_DISPLAY_RXSENSE_ON or DS_DISPLAY_RXSENSE_OFF virtual void OnDisplayRxSense(dsDisplayEvent_t displayEvent); - - // @brief Display HDCP Status - virtual void OnDisplayHDCPStatus(); }; - + // @brief Register a listener for display events // @param listener: class object implementing the listener - dsError_t Register(IDisplayEvents *listener); - + // @param clientName: Optional (but highly recommended) name of the client registering for events + // clientName is used for logging purposes only + // @return dsERR_NONE on success, appropriate dsError_t on failure + dsError_t Register(IDisplayEvents* listener, const std::string& clientName = ""); + // @brief UnRegister a listener for display events // @param listener: class object implementing the listener - dsError_t UnRegister(IDisplayEvents *listener); - + // @return dsERR_NONE on success, appropriate dsError_t on failure + dsError_t UnRegister(IDisplayEvents* listener); struct IVideoDeviceEvents { virtual ~IVideoDeviceEvents() = default; @@ -182,10 +276,14 @@ class Host { // @brief Register a listener for video device events // @param listener: class object implementing the listener - dsError_t Register(IVideoDeviceEvents* listener); + // @param clientName: Optional (but highly recommended) name of the client registering for events + // clientName is used for logging purposes only + // @return dsERR_NONE on success, appropriate dsError_t on failure + dsError_t Register(IVideoDeviceEvents* listener, const std::string& clientName = ""); // @brief UnRegister a listener for video device events // @param listener: class object implementing the listener + // @return dsERR_NONE on success, appropriate dsError_t on failure dsError_t UnRegister(IVideoDeviceEvents* listener); struct IVideoOutputPortEvents { @@ -212,10 +310,14 @@ class Host { // @brief Register a listener for video port events // @param listener: class object implementing the listener - dsError_t Register(IVideoOutputPortEvents* listener); + // @param clientName: Optional (but highly recommended) name of the client registering for events + // clientName is used for logging purposes only + // @return dsERR_NONE on success, appropriate dsError_t on failure + dsError_t Register(IVideoOutputPortEvents* listener, const std::string& clientName = ""); // @brief UnRegister a listener for video port events // @param listener: class object implementing the listener + // @return dsERR_NONE on success, appropriate dsError_t on failure dsError_t UnRegister(IVideoOutputPortEvents* listener); struct IAudioOutputPortEvents { @@ -250,8 +352,7 @@ class Host { // @brief Audio port state changed // @param audioPortState: audio port state - // TODO: requires dsMgr.h header include ?? - // virtual void OnAudioPortStateChanged(dsAudioPortState_t audioPortState); + virtual void OnAudioPortStateChanged(dsAudioPortState_t audioPortState); // @brief Audio mode for the respective audio port - raised for every type of port // @param audioPortType: audio port type see dsAudioPortType_t @@ -269,10 +370,14 @@ class Host { // @brief Register a listener for audio port events // @param listener: class object implementing the listener - dsError_t Register(IAudioOutputPortEvents* listener); + // @param clientName: Optional (but highly recommended) name of the client registering for events + // clientName is used for logging purposes only + // @return dsERR_NONE on success, appropriate dsError_t on failure + dsError_t Register(IAudioOutputPortEvents* listener, const std::string& clientName = ""); // @brief UnRegister a listener for audio port events // @param listener: class object implementing the listener + // @return dsERR_NONE on success, appropriate dsError_t on failure dsError_t UnRegister(IAudioOutputPortEvents* listener); struct IDisplayDeviceEvents { @@ -285,10 +390,14 @@ class Host { // @brief Register a listener for display device events // @param listener: class object implementing the listener - dsError_t Register(IDisplayDeviceEvents* listener); + // @param clientName: Optional (but highly recommended) name of the client registering for events + // clientName is used for logging purposes only + // @return dsERR_NONE on success, appropriate dsError_t on failure + dsError_t Register(IDisplayDeviceEvents* listener, const std::string& clientName = ""); // @brief UnRegister a listener for display device events // @param listener: class object implementing the listener + // @return dsERR_NONE on success, appropriate dsError_t on failure dsError_t UnRegister(IDisplayDeviceEvents* listener); bool setPowerMode(int mode); @@ -327,10 +436,10 @@ class Host { void getCurrentAudioFormat(dsAudioFormat_t& audioFormat); void getMS12ConfigDetails(std::string& configType); void setAudioMixerLevels(dsAudioInput_t aInput, int volume); - void SetRebootConfig(dsMgrRebootConfigParam_t param); private: std::unique_ptr m_impl; + Host(); virtual ~Host(); // Avoid copies diff --git a/ds/videoOutputPort.cpp b/ds/videoOutputPort.cpp index 3ab30784..bedc90c2 100644 --- a/ds/videoOutputPort.cpp +++ b/ds/videoOutputPort.cpp @@ -931,16 +931,6 @@ bool VideoOutputPort::GetStandbyVideoState(const string port, bool isEnabled) } -bool VideoOutputPort::SetAvPortState(const uint8_t powerState) -{ - dsError_t ret = dsSetAvPortState(powerState); - if (ret != dsERR_NONE) { - return false; - } - return true; - -} - /** * @fn void setAllmEnabled(bool enable); * @brief Enables/Disables ALLM mode for connected HDMI display. diff --git a/rpc/cli/dsFPD.c b/rpc/cli/dsFPD.c index 7e9e761a..6724cdb6 100644 --- a/rpc/cli/dsFPD.c +++ b/rpc/cli/dsFPD.c @@ -449,27 +449,8 @@ dsError_t dsSetFPState (dsFPDIndicator_t eIndicator, dsFPDState_t state) return dsERR_GENERAL ; } -dsError_t dsSetLEDStatus(dsFPDIndicator_t eIndicator, dsFPDState_t state) -{ - _DEBUG_ENTER(); - dsFPDStateParam_t param ; - - param.eIndicator = eIndicator; - param.state = state; - IARM_Result_t rpcRet = IARM_RESULT_SUCCESS; - - rpcRet = IARM_Bus_Call(IARM_BUS_DSMGR_NAME, - (char *)IARM_BUS_DSMGR_API_dsSetLEDStatus, - (void *)¶m, - sizeof(param)); - if (IARM_RESULT_SUCCESS == rpcRet) - { - return dsERR_NONE; - } - return dsERR_GENERAL ; -} dsError_t dsGetFPTimeFormat (dsFPDTimeFormat_t *pTimeFormat) { diff --git a/rpc/cli/dsHost.cpp b/rpc/cli/dsHost.cpp index 7b45ef1f..799f4698 100644 --- a/rpc/cli/dsHost.cpp +++ b/rpc/cli/dsHost.cpp @@ -225,31 +225,6 @@ dsError_t dsGetMS12ConfigType(const char *ms12ConfigType) return ret; } -dsError_t dsSetRebootConfig(string rebootReasonCustom, uint8_t powerState) -{ - dsError_t ret = dsERR_GENERAL; - _DEBUG_ENTER(); - - if (!rebootReasonCustom.empty()) - { - dsMgrRebootConfigParam_t param; - param.powerState = powerState; - param.reboot_reason_custom = rebootReasonCustom; - param.result = 0; - - IARM_Result_t rpcRet = IARM_RESULT_SUCCESS; - rpcRet = IARM_Bus_Call(IARM_BUS_DSMGR_NAME, - (char *)IARM_BUS_DSMGR_API_dsSetRebootConfig, - (void *)¶m, - sizeof(param)); - if (IARM_RESULT_SUCCESS == rpcRet) - { - ret = dsERR_NONE; - } - } - return ret; -} - /** @} */ /** @} */ diff --git a/rpc/cli/dsVideoPort.c b/rpc/cli/dsVideoPort.c index 517c8f15..36c81280 100644 --- a/rpc/cli/dsVideoPort.c +++ b/rpc/cli/dsVideoPort.c @@ -1014,29 +1014,5 @@ dsError_t dsGetStandbyVideoState(string port , bool enable) return dsErr ; } - -dsError_t dsSetAvPortState(const int powerState) -{ - dsError_t dsErr = dsERR_GENERAL; - dsMgrAVPortStateParam_t param; - - _DEBUG_ENTER(); - - param.avPortPowerState = powerState; - param.result = 0; - - IARM_Result_t rpcRet = IARM_Bus_Call(IARM_BUS_DSMGR_NAME, - (char *)IARM_BUS_DSMGR_API_dsSetAvPortState, - (void *)¶m, - sizeof(param)); - - if (IARM_RESULT_SUCCESS == rpcRet) - { - dsErr = dsERR_NONE; - } - - return dsErr ; -} - /** @} */ /** @} */ diff --git a/rpc/include/dsRpc.h b/rpc/include/dsRpc.h index 9b932eb1..f7b7f14e 100644 --- a/rpc/include/dsRpc.h +++ b/rpc/include/dsRpc.h @@ -197,9 +197,6 @@ extern "C" { #define IARM_BUS_DSMGR_API_dsSetAllmEnabled "dsSetAllmEnabled" #define IARM_BUS_DSMGR_API_dsSetStandbyVideoState "dsSetStandbyVideoState" #define IARM_BUS_DSMGR_API_dsGetStandbyVideoState "dsGetStandbyVideoState" -#define IARM_BUS_DSMGR_API_dsSetAvPortState "dsSetAvPortState" -#define IARM_BUS_DSMGR_API_dsSetLEDStatus "dsSetLEDStatus" -#define IARM_BUS_DSMGR_API_dsSetRebootConfig "dsSetRebootConfig" /* * Declare RPC FP API names diff --git a/rpc/srv/dsFPD.c b/rpc/srv/dsFPD.c index 529b3592..b2c592c5 100644 --- a/rpc/srv/dsFPD.c +++ b/rpc/srv/dsFPD.c @@ -73,8 +73,7 @@ IARM_Result_t _dsSetFPScroll(void *arg); IARM_Result_t _dsSetFPBlink(void *arg); IARM_Result_t _dsGetFPBrightness(void *arg); IARM_Result_t _dsSetFPBrightness(void *arg); -IARM_Result_t _dsSetLEDStatus(void *arg); -IARM_Result_t _dsSetLEDState(void *arg); +IARM_Result_t _dsSetFPState(void *arg); IARM_Result_t _dsGetFPState(void *arg); IARM_Result_t _dsSetFPColor(void *arg); IARM_Result_t _dsGetFPColor(void *arg); @@ -255,7 +254,6 @@ IARM_Result_t _dsFPInit(void *arg) IARM_Bus_RegisterCall(IARM_BUS_DSMGR_API_dsSetFPBlink,_dsSetFPBlink); IARM_Bus_RegisterCall(IARM_BUS_DSMGR_API_dsGetFPBrightness,_dsGetFPBrightness); IARM_Bus_RegisterCall(IARM_BUS_DSMGR_API_dsSetFPState,_dsSetFPState); - IARM_Bus_RegisterCall(IARM_BUS_DSMGR_API_dsSetLEDStatus,_dsSetLEDStatus); IARM_Bus_RegisterCall(IARM_BUS_DSMGR_API_dsGetFPState,_dsGetFPState); IARM_Bus_RegisterCall(IARM_BUS_DSMGR_API_dsSetFPBrightness,_dsSetFPBrightness); IARM_Bus_RegisterCall(IARM_BUS_DSMGR_API_dsSetFPColor,_dsSetFPColor); @@ -691,11 +689,7 @@ IARM_Result_t _dsSetFPState(void *arg) return ret; } -IARM_Result_t _dsSetLEDStatus(void *arg) -{ - IARM_Result_t ret = IARM_RESULT_SUCCESS; - return ret; -} + IARM_Result_t _dsGetTimeFormat(void *arg) diff --git a/rpc/srv/dsHost.cpp b/rpc/srv/dsHost.cpp index 70889986..3215b94e 100644 --- a/rpc/srv/dsHost.cpp +++ b/rpc/srv/dsHost.cpp @@ -65,7 +65,6 @@ IARM_Result_t _dsGetVersion(void *arg); IARM_Result_t _dsGetSocIDFromSDK(void *arg); IARM_Result_t _dsGetHostEDID(void *arg); IARM_Result_t _dsGetMS12ConfigType(void *arg); -IARM_Result_t _dsSetRebootConfig(void *arg); static dsSleepMode_t _SleepMode = dsHOST_SLEEP_MODE_LIGHT; @@ -101,10 +100,10 @@ IARM_Result_t dsHostMgr_init() IARM_Bus_RegisterCall(IARM_BUS_DSMGR_API_dsGetCPUTemperature,_dsGetCPUTemperature); IARM_Bus_RegisterCall(IARM_BUS_DSMGR_API_dsGetVersion,_dsGetVersion); IARM_Bus_RegisterCall(IARM_BUS_DSMGR_API_dsGetSocIDFromSDK,_dsGetSocIDFromSDK); - IARM_Bus_RegisterCall(IARM_BUS_DSMGR_API_dsGetHostEDID,_dsGetHostEDID); - IARM_Bus_RegisterCall(IARM_BUS_DSMGR_API_dsGetMS12ConfigType,_dsGetMS12ConfigType); - IARM_Bus_RegisterCall(IARM_BUS_DSMGR_API_dsSetRebootConfig,_dsSetRebootConfig); + IARM_Bus_RegisterCall(IARM_BUS_DSMGR_API_dsGetHostEDID,_dsGetHostEDID); + IARM_Bus_RegisterCall(IARM_BUS_DSMGR_API_dsGetMS12ConfigType,_dsGetMS12ConfigType); + uint32_t halVersion = 0x10000; halVersion = dsHAL_APIVER(DSHAL_API_VERSION_MAJOR_DEFAULT, DSHAL_API_VERSION_MINOR_DEFAULT); INT_INFO("DS HAL Version is - %d.%d \r\n",dsHAL_APIVER_MAJOR(halVersion),dsHAL_APIVER_MINOR(halVersion)); @@ -268,13 +267,6 @@ IARM_Result_t _dsGetMS12ConfigType(void *arg) } return ret; } - -IARM_Result_t _dsSetRebootConfig(void *arg) -{ - IARM_Result_t ret = IARM_RESULT_SUCCESS; - return ret; -} - IARM_Result_t _dsGetSocIDFromSDK(void *arg) { dsGetSocIDFromSDKParam_t *param = (dsGetSocIDFromSDKParam_t*) arg; diff --git a/rpc/srv/dsVideoPort.c b/rpc/srv/dsVideoPort.c index 91f99900..7f580109 100644 --- a/rpc/srv/dsVideoPort.c +++ b/rpc/srv/dsVideoPort.c @@ -319,7 +319,6 @@ IARM_Result_t _dsVideoPortInit(void *arg) IARM_Bus_RegisterCall(IARM_BUS_DSMGR_API_dsSetPreferredColorDepth,_dsSetPreferredColorDepth); IARM_Bus_RegisterCall(IARM_BUS_DSMGR_API_dsSetStandbyVideoState,_dsSetStandbyVideoState); IARM_Bus_RegisterCall(IARM_BUS_DSMGR_API_dsGetStandbyVideoState,_dsGetStandbyVideoState); - IARM_Bus_RegisterCall(IARM_BUS_DSMGR_API_dsSetAvPortState,_dsSetAvPortState); dsError_t eRet = _dsVideoFormatUpdateRegisterCB (_dsVideoFormatUpdateCB) ; if (dsERR_NONE != eRet) { @@ -1200,28 +1199,92 @@ IARM_Result_t _dsSetPreferredColorDepth(void *arg) IARM_Result_t _dsSetStandbyVideoState(void *arg) { - _DEBUG_ENTER(); - - IARM_Result_t ret = IARM_RESULT_SUCCESS; - return ret; - - -} + dsMgrStandbyVideoStateParam_t *param = (dsMgrStandbyVideoStateParam_t *)arg; + if(NULL == param->port) + { + param->result = -1; + INT_DEBUG("[%s] empty port name. Cannot proceed.\n", __FUNCTION__); + return IARM_RESULT_SUCCESS; + } + else + param->result = 0; -IARM_Result_t _dsSetPreferredColorDepth(void *arg) -{ - _DEBUG_ENTER(); + int i = 0; + for(i = 0; i < MAX_NUM_VIDEO_PORTS; i++) + { + if(0 == strncasecmp(param->port, g_standby_video_port_setting[i].port, DSMGR_MAX_VIDEO_PORT_NAME_LENGTH)) + { + /*Found a match. Update it*/ + g_standby_video_port_setting[i].isEnabled = ((0 == param->isEnabled) ? false : true); + break; + } + } + if(MAX_NUM_VIDEO_PORTS == i) + { + /*No matching entries are present. Add one.*/ + for(i = 0; i < MAX_NUM_VIDEO_PORTS; i++) + { + if('\0' == g_standby_video_port_setting[i].port[0]) + { + strncpy(g_standby_video_port_setting[i].port, param->port, (DSMGR_MAX_VIDEO_PORT_NAME_LENGTH - 1)); + g_standby_video_port_setting[i].isEnabled = ((0 == param->isEnabled) ? false : true); + break; + } + } + } + if(MAX_NUM_VIDEO_PORTS == i) + { + INT_DEBUG("[%s] Error! Out of room to write new video port setting for standby mode.\n", __FUNCTION__); + } - IARM_Result_t ret = IARM_RESULT_SUCCESS; - return ret; + try + { + device::VideoOutputPort &vPort = device::Host::getInstance().getVideoOutputPort(param->port); + if((POWER_STATE_ON != curState) && (POWER_STATE_OFF != curState)) + { + /*We're currently in one of the standby states. This new setting needs to be applied right away.*/ + INT_DEBUG("[%s] Setting standby %s port status to %s.\n", __FUNCTION__, param->port, ((1 == param->isEnabled)? "enabled" : "disabled")); + if(1 == param->isEnabled) + vPort.enable(); + else + vPort.disable(); + } + else + { + INT_DEBUG("[%s] video port %s will be %s when going into standby mode.\n", __FUNCTION__, param->port, ((1 == param->isEnabled)? "enabled" : "disabled")); + } + } + catch (...) + { + INT_DEBUG("Exception Caught during [%s]. Possible bad video port.\n", __FUNCTION__); + param->result = -1; + } + return IARM_RESULT_SUCCESS; } -IARM_Result_t _dsSetAvPortState(void *arg) +IARM_Result_t _dsGetStandbyVideoState(void *arg) { - _DEBUG_ENTER(); + INT_INFO("Entering [%s]\r\n", __FUNCTION__); + dsMgrStandbyVideoStateParam_t *param = (dsMgrStandbyVideoStateParam_t *)arg; + if(NULL == param->port) + { + INT_DEBUG("[%s]Bad port name. Cannot get state.\n", __FUNCTION__); + return IARM_RESULT_SUCCESS; + } - IARM_Result_t ret = IARM_RESULT_SUCCESS; - return ret; + try + { + device::VideoOutputPort &vPort = device::Host::getInstance().getVideoOutputPort(param->port); + } + catch (...) + { + INT_DEBUG("Exception Caught during [%s]. Possible bad video port.\n", __FUNCTION__); + param->result = -1; + return IARM_RESULT_SUCCESS; + } + param->isEnabled = ((true == get_video_port_standby_setting(param->port))? 1 : 0); + param->result = 0; + return IARM_RESULT_SUCCESS; } dsError_t handleDsColorDepthCapabilities(intptr_t handle, unsigned int *colorDepthCapability ) From 395a94141ec8f2deb5bed4259584f0b6631a7ba2 Mon Sep 17 00:00:00 2001 From: Dosakayala Nagalakshmi Date: Tue, 9 Sep 2025 11:54:15 +0530 Subject: [PATCH 092/103] removed unwanted apis... --- rpc/srv/dsVideoPort.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/rpc/srv/dsVideoPort.c b/rpc/srv/dsVideoPort.c index 7f580109..022ac0f8 100644 --- a/rpc/srv/dsVideoPort.c +++ b/rpc/srv/dsVideoPort.c @@ -61,9 +61,14 @@ #define DEFAULT_RESOLUTION "720p" #define DEFAULT_RESOLUTION_1080P "1080p" #define DEFAULT_RESOLUTION_2160P "2160p" - +#define MAX_NUM_VIDEO_PORTS 5 #define DEFAULT_SD_RESOLUTION "480i" +typedef struct{ + char port[DSMGR_MAX_VIDEO_PORT_NAME_LENGTH]; + bool isEnabled; +}DSMgr_Standby_Video_State_t; + static int m_isInitialized = 0; static int m_isPlatInitialized = 0; static pthread_mutex_t dsLock = PTHREAD_MUTEX_INITIALIZER; @@ -75,6 +80,8 @@ static dsHdcpStatus_t _hdcpStatus = dsHDCP_STATUS_UNAUTHENTICATED; static bool force_disable_4K = false; static const dsDisplayColorDepth_t DEFAULT_COLOR_DEPTH = dsDISPLAY_COLORDEPTH_AUTO; static dsDisplayColorDepth_t hdmiColorDept = DEFAULT_COLOR_DEPTH; +static DSMgr_Standby_Video_State_t g_standby_video_port_setting[MAX_NUM_VIDEO_PORTS]; + #define NULL_HANDLE 0 #define IARM_BUS_Lock(lock) pthread_mutex_lock(&dsLock) #define IARM_BUS_Unlock(lock) pthread_mutex_unlock(&dsLock) From 0a3aff7f8e5ad5555d147fc63275a0e24f67827f Mon Sep 17 00:00:00 2001 From: Dosakaya <110212899+Dosakaya@users.noreply.github.com> Date: Tue, 9 Sep 2025 12:01:59 +0530 Subject: [PATCH 093/103] Update videoOutputPort.hpp --- ds/include/videoOutputPort.hpp | 3 --- 1 file changed, 3 deletions(-) diff --git a/ds/include/videoOutputPort.hpp b/ds/include/videoOutputPort.hpp index 95939cb0..a705cdcd 100644 --- a/ds/include/videoOutputPort.hpp +++ b/ds/include/videoOutputPort.hpp @@ -290,9 +290,6 @@ class VideoOutputPort : public Enumerable { // static IARM_Result_t _GetStandbyVideoState(void *arg) void GetStandbyVideoState(); -// static IARM_Result_t _SetAvPortState(void *arg) - void SetAvPortState(); - private: Display _display; From 5d713e9a20322a58c215ed1ec4cde1e63c8a09af Mon Sep 17 00:00:00 2001 From: Dosakayala Nagalakshmi Date: Tue, 9 Sep 2025 12:19:11 +0530 Subject: [PATCH 094/103] removed src code --- ds/include/videoOutputPort.hpp | 3 ++ rpc/cli/dsVideoPort.c | 4 +- rpc/include/dsRpc.h | 2 - rpc/srv/dsVideoPort.c | 99 ---------------------------------- 4 files changed, 5 insertions(+), 103 deletions(-) diff --git a/ds/include/videoOutputPort.hpp b/ds/include/videoOutputPort.hpp index a705cdcd..95939cb0 100644 --- a/ds/include/videoOutputPort.hpp +++ b/ds/include/videoOutputPort.hpp @@ -290,6 +290,9 @@ class VideoOutputPort : public Enumerable { // static IARM_Result_t _GetStandbyVideoState(void *arg) void GetStandbyVideoState(); +// static IARM_Result_t _SetAvPortState(void *arg) + void SetAvPortState(); + private: Display _display; diff --git a/rpc/cli/dsVideoPort.c b/rpc/cli/dsVideoPort.c index 36c81280..7322ae88 100644 --- a/rpc/cli/dsVideoPort.c +++ b/rpc/cli/dsVideoPort.c @@ -978,7 +978,7 @@ dsError_t dsSetStandbyVideoState(string port , const bool enable) param.result = 0; IARM_Result_t rpcRet = IARM_Bus_Call(IARM_BUS_DSMGR_NAME, - (char *)IARM_BUS_DSMGR_API_dsSetStandbyVideoState, + (char *)IARM_BUS_DSMGR_API_SetStandbyVideoState, (void *)¶m, sizeof(param)); if (IARM_RESULT_SUCCESS == rpcRet) @@ -1001,7 +1001,7 @@ dsError_t dsGetStandbyVideoState(string port , bool enable) param.result = 0; IARM_Result_t rpcRet = IARM_Bus_Call(IARM_BUS_DSMGR_NAME, - (char *)IARM_BUS_DSMGR_API_dsGetStandbyVideoState, + (char *)IARM_BUS_DSMGR_API_GetStandbyVideoState, (void *)¶m, sizeof(param)); diff --git a/rpc/include/dsRpc.h b/rpc/include/dsRpc.h index f7b7f14e..3317c9e4 100644 --- a/rpc/include/dsRpc.h +++ b/rpc/include/dsRpc.h @@ -195,8 +195,6 @@ extern "C" { #define IARM_BUS_DSMGR_API_dsSetBackgroundColor "dsSetBackgroundColor" #define IARM_BUS_DSMGR_API_dsSetForceHDRMode "dsSetForceHDRMode" #define IARM_BUS_DSMGR_API_dsSetAllmEnabled "dsSetAllmEnabled" -#define IARM_BUS_DSMGR_API_dsSetStandbyVideoState "dsSetStandbyVideoState" -#define IARM_BUS_DSMGR_API_dsGetStandbyVideoState "dsGetStandbyVideoState" /* * Declare RPC FP API names diff --git a/rpc/srv/dsVideoPort.c b/rpc/srv/dsVideoPort.c index 022ac0f8..b2c3602e 100644 --- a/rpc/srv/dsVideoPort.c +++ b/rpc/srv/dsVideoPort.c @@ -61,14 +61,8 @@ #define DEFAULT_RESOLUTION "720p" #define DEFAULT_RESOLUTION_1080P "1080p" #define DEFAULT_RESOLUTION_2160P "2160p" -#define MAX_NUM_VIDEO_PORTS 5 #define DEFAULT_SD_RESOLUTION "480i" -typedef struct{ - char port[DSMGR_MAX_VIDEO_PORT_NAME_LENGTH]; - bool isEnabled; -}DSMgr_Standby_Video_State_t; - static int m_isInitialized = 0; static int m_isPlatInitialized = 0; static pthread_mutex_t dsLock = PTHREAD_MUTEX_INITIALIZER; @@ -80,7 +74,6 @@ static dsHdcpStatus_t _hdcpStatus = dsHDCP_STATUS_UNAUTHENTICATED; static bool force_disable_4K = false; static const dsDisplayColorDepth_t DEFAULT_COLOR_DEPTH = dsDISPLAY_COLORDEPTH_AUTO; static dsDisplayColorDepth_t hdmiColorDept = DEFAULT_COLOR_DEPTH; -static DSMgr_Standby_Video_State_t g_standby_video_port_setting[MAX_NUM_VIDEO_PORTS]; #define NULL_HANDLE 0 #define IARM_BUS_Lock(lock) pthread_mutex_lock(&dsLock) @@ -324,8 +317,6 @@ IARM_Result_t _dsVideoPortInit(void *arg) IARM_Bus_RegisterCall(IARM_BUS_DSMGR_API_dsColorDepthCapabilities,_dsColorDepthCapabilities); IARM_Bus_RegisterCall(IARM_BUS_DSMGR_API_dsGetPreferredColorDepth,_dsGetPreferredColorDepth); IARM_Bus_RegisterCall(IARM_BUS_DSMGR_API_dsSetPreferredColorDepth,_dsSetPreferredColorDepth); - IARM_Bus_RegisterCall(IARM_BUS_DSMGR_API_dsSetStandbyVideoState,_dsSetStandbyVideoState); - IARM_Bus_RegisterCall(IARM_BUS_DSMGR_API_dsGetStandbyVideoState,_dsGetStandbyVideoState); dsError_t eRet = _dsVideoFormatUpdateRegisterCB (_dsVideoFormatUpdateCB) ; if (dsERR_NONE != eRet) { @@ -1204,96 +1195,6 @@ IARM_Result_t _dsSetPreferredColorDepth(void *arg) } -IARM_Result_t _dsSetStandbyVideoState(void *arg) -{ - dsMgrStandbyVideoStateParam_t *param = (dsMgrStandbyVideoStateParam_t *)arg; - if(NULL == param->port) - { - param->result = -1; - INT_DEBUG("[%s] empty port name. Cannot proceed.\n", __FUNCTION__); - return IARM_RESULT_SUCCESS; - } - else - param->result = 0; - - int i = 0; - for(i = 0; i < MAX_NUM_VIDEO_PORTS; i++) - { - if(0 == strncasecmp(param->port, g_standby_video_port_setting[i].port, DSMGR_MAX_VIDEO_PORT_NAME_LENGTH)) - { - /*Found a match. Update it*/ - g_standby_video_port_setting[i].isEnabled = ((0 == param->isEnabled) ? false : true); - break; - } - } - if(MAX_NUM_VIDEO_PORTS == i) - { - /*No matching entries are present. Add one.*/ - for(i = 0; i < MAX_NUM_VIDEO_PORTS; i++) - { - if('\0' == g_standby_video_port_setting[i].port[0]) - { - strncpy(g_standby_video_port_setting[i].port, param->port, (DSMGR_MAX_VIDEO_PORT_NAME_LENGTH - 1)); - g_standby_video_port_setting[i].isEnabled = ((0 == param->isEnabled) ? false : true); - break; - } - } - } - if(MAX_NUM_VIDEO_PORTS == i) - { - INT_DEBUG("[%s] Error! Out of room to write new video port setting for standby mode.\n", __FUNCTION__); - } - - try - { - device::VideoOutputPort &vPort = device::Host::getInstance().getVideoOutputPort(param->port); - if((POWER_STATE_ON != curState) && (POWER_STATE_OFF != curState)) - { - /*We're currently in one of the standby states. This new setting needs to be applied right away.*/ - INT_DEBUG("[%s] Setting standby %s port status to %s.\n", __FUNCTION__, param->port, ((1 == param->isEnabled)? "enabled" : "disabled")); - if(1 == param->isEnabled) - vPort.enable(); - else - vPort.disable(); - } - else - { - INT_DEBUG("[%s] video port %s will be %s when going into standby mode.\n", __FUNCTION__, param->port, ((1 == param->isEnabled)? "enabled" : "disabled")); - } - } - catch (...) - { - INT_DEBUG("Exception Caught during [%s]. Possible bad video port.\n", __FUNCTION__); - param->result = -1; - } - return IARM_RESULT_SUCCESS; -} - -IARM_Result_t _dsGetStandbyVideoState(void *arg) -{ - INT_INFO("Entering [%s]\r\n", __FUNCTION__); - dsMgrStandbyVideoStateParam_t *param = (dsMgrStandbyVideoStateParam_t *)arg; - if(NULL == param->port) - { - INT_DEBUG("[%s]Bad port name. Cannot get state.\n", __FUNCTION__); - return IARM_RESULT_SUCCESS; - } - - try - { - device::VideoOutputPort &vPort = device::Host::getInstance().getVideoOutputPort(param->port); - } - catch (...) - { - INT_DEBUG("Exception Caught during [%s]. Possible bad video port.\n", __FUNCTION__); - param->result = -1; - return IARM_RESULT_SUCCESS; - } - param->isEnabled = ((true == get_video_port_standby_setting(param->port))? 1 : 0); - param->result = 0; - return IARM_RESULT_SUCCESS; -} - dsError_t handleDsColorDepthCapabilities(intptr_t handle, unsigned int *colorDepthCapability ) { #ifndef RDK_DSHAL_NAME From 98003a080bbe9006aca42c74ee02b05877b1e975 Mon Sep 17 00:00:00 2001 From: Dosakaya <110212899+Dosakaya@users.noreply.github.com> Date: Tue, 9 Sep 2025 12:23:44 +0530 Subject: [PATCH 095/103] Update videoOutputPort.hpp --- ds/include/videoOutputPort.hpp | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/ds/include/videoOutputPort.hpp b/ds/include/videoOutputPort.hpp index 95939cb0..3734abbc 100644 --- a/ds/include/videoOutputPort.hpp +++ b/ds/include/videoOutputPort.hpp @@ -283,15 +283,8 @@ class VideoOutputPort : public Enumerable { unsigned int getPreferredColorDepth(bool persist = true) ; void setPreferredColorDepth(const unsigned int colordepth, bool persist = true); void getColorDepthCapabilities (unsigned int *capabilities) const; - -// static IARM_Result_t _SetStandbyVideoState(void *arg) - void SetStandbyVideoState(); - -// static IARM_Result_t _GetStandbyVideoState(void *arg) - void GetStandbyVideoState(); - -// static IARM_Result_t _SetAvPortState(void *arg) - void SetAvPortState(); + void SetStandbyVideoState(const string port , const bool enable); + void GetStandbyVideoState(const string port , bool enable); private: Display _display; From fdc8c6f6b9a520c0559ad5d48eb88061752df12d Mon Sep 17 00:00:00 2001 From: Dosakayala Nagalakshmi Date: Tue, 9 Sep 2025 12:35:04 +0530 Subject: [PATCH 096/103] HDMIIn ARC api added. --- ds/hdmiIn.cpp | 13 +++++++++++++ ds/include/hdmiIn.hpp | 1 + rpc/include/dsRpc.h | 1 - rpc/srv/dsVideoPort.c | 4 ++-- 4 files changed, 16 insertions(+), 3 deletions(-) diff --git a/ds/hdmiIn.cpp b/ds/hdmiIn.cpp index 18b2ac97..f40ce67d 100755 --- a/ds/hdmiIn.cpp +++ b/ds/hdmiIn.cpp @@ -678,6 +678,19 @@ void HdmiInput::getHdmiVersion (int iHdmiPort, dsHdmiMaxCapabilityVersion_t *cap printf ("%s:%d - HDMI Compatibility Version = %d\n", __PRETTY_FUNCTION__, __LINE__, *capversion); } +void HdmiInput::getHDMIARCPortId(int *portId) +{ + if(NULL != portId) + { + dsError_t error = dsERR_GENERAL; + error = dsGetHDMIARCPortId(portId); + if(dsERR_NONE != error) + { + *portId = -1; + } + } +} + } diff --git a/ds/include/hdmiIn.hpp b/ds/include/hdmiIn.hpp index eb2da3dc..792a5b2b 100755 --- a/ds/include/hdmiIn.hpp +++ b/ds/include/hdmiIn.hpp @@ -101,6 +101,7 @@ class HdmiInput void getVRRSupport (int iHdmiPort, bool *vrr_suppport); void getVRRStatus (int iHdmiPort, dsHdmiInVrrStatus_t *vrrStatus); void getHdmiVersion (int iHdmiPort, dsHdmiMaxCapabilityVersion_t *capversion); + void getHDMIARCPortId(int *portId); private: HdmiInput (); /* default constructor */ virtual ~HdmiInput (); /* destructor */ diff --git a/rpc/include/dsRpc.h b/rpc/include/dsRpc.h index 3317c9e4..96b3a086 100644 --- a/rpc/include/dsRpc.h +++ b/rpc/include/dsRpc.h @@ -195,7 +195,6 @@ extern "C" { #define IARM_BUS_DSMGR_API_dsSetBackgroundColor "dsSetBackgroundColor" #define IARM_BUS_DSMGR_API_dsSetForceHDRMode "dsSetForceHDRMode" #define IARM_BUS_DSMGR_API_dsSetAllmEnabled "dsSetAllmEnabled" - /* * Declare RPC FP API names */ diff --git a/rpc/srv/dsVideoPort.c b/rpc/srv/dsVideoPort.c index b2c3602e..d29966d2 100644 --- a/rpc/srv/dsVideoPort.c +++ b/rpc/srv/dsVideoPort.c @@ -61,6 +61,7 @@ #define DEFAULT_RESOLUTION "720p" #define DEFAULT_RESOLUTION_1080P "1080p" #define DEFAULT_RESOLUTION_2160P "2160p" + #define DEFAULT_SD_RESOLUTION "480i" static int m_isInitialized = 0; @@ -74,7 +75,6 @@ static dsHdcpStatus_t _hdcpStatus = dsHDCP_STATUS_UNAUTHENTICATED; static bool force_disable_4K = false; static const dsDisplayColorDepth_t DEFAULT_COLOR_DEPTH = dsDISPLAY_COLORDEPTH_AUTO; static dsDisplayColorDepth_t hdmiColorDept = DEFAULT_COLOR_DEPTH; - #define NULL_HANDLE 0 #define IARM_BUS_Lock(lock) pthread_mutex_lock(&dsLock) #define IARM_BUS_Unlock(lock) pthread_mutex_unlock(&dsLock) @@ -317,7 +317,7 @@ IARM_Result_t _dsVideoPortInit(void *arg) IARM_Bus_RegisterCall(IARM_BUS_DSMGR_API_dsColorDepthCapabilities,_dsColorDepthCapabilities); IARM_Bus_RegisterCall(IARM_BUS_DSMGR_API_dsGetPreferredColorDepth,_dsGetPreferredColorDepth); IARM_Bus_RegisterCall(IARM_BUS_DSMGR_API_dsSetPreferredColorDepth,_dsSetPreferredColorDepth); - + dsError_t eRet = _dsVideoFormatUpdateRegisterCB (_dsVideoFormatUpdateCB) ; if (dsERR_NONE != eRet) { INT_DEBUG("%s: _dsVideoFormatUpdateRegisterCB eRet:%04x", __FUNCTION__, eRet); From 4b0ed8571fc69decdf61485b0930e4e3f2ff7d23 Mon Sep 17 00:00:00 2001 From: Dosakayala Nagalakshmi Date: Tue, 9 Sep 2025 14:15:36 +0530 Subject: [PATCH 097/103] fixed comments --- ds/videoOutputPort.cpp | 2 -- rpc/cli/dsVideoPort.c | 25 +++++++++++++++---------- 2 files changed, 15 insertions(+), 12 deletions(-) diff --git a/ds/videoOutputPort.cpp b/ds/videoOutputPort.cpp index bedc90c2..d0dba075 100644 --- a/ds/videoOutputPort.cpp +++ b/ds/videoOutputPort.cpp @@ -918,7 +918,6 @@ bool VideoOutputPort::SetStandbyVideoState(const string port , const bool enable return false; } return true; - } bool VideoOutputPort::GetStandbyVideoState(const string port, bool isEnabled) @@ -928,7 +927,6 @@ bool VideoOutputPort::GetStandbyVideoState(const string port, bool isEnabled) return false; } return true; - } /** diff --git a/rpc/cli/dsVideoPort.c b/rpc/cli/dsVideoPort.c index 7322ae88..d6afe99c 100644 --- a/rpc/cli/dsVideoPort.c +++ b/rpc/cli/dsVideoPort.c @@ -972,40 +972,45 @@ dsError_t dsSetStandbyVideoState(string port , const bool enable) if(!port.empty()) { - dsMgrStandbyVideoStateParam_t param; - param.port = port; + dsMgrStandbyVideoStateParam_t param = {0}; + int n = port.length(); + strcpy(param.port, port.c_str()); + param.port[n+1] = '\n'; param.isEnabled = enable; - param.result = 0; + param->result = -1; IARM_Result_t rpcRet = IARM_Bus_Call(IARM_BUS_DSMGR_NAME, (char *)IARM_BUS_DSMGR_API_SetStandbyVideoState, (void *)¶m, sizeof(param)); - if (IARM_RESULT_SUCCESS == rpcRet) + if (IARM_RESULT_SUCCESS == rpcRet && param.result == 0) { dsErr = dsERR_NONE; } } - return dsErr ; + return dsErr; } -dsError_t dsGetStandbyVideoState(string port , bool enable) +dsError_t dsGetStandbyVideoState(string port , bool &enable) { dsError_t dsErr = dsERR_GENERAL; _DEBUG_ENTER(); if(!port.empty()) { - dsMgrStandbyVideoStateParam_t param; - param.port = port; - param.result = 0; + dsMgrStandbyVideoStateParam_t param = {0}; + + int n = port.length(); + strcpy(param.port, port.c_str()); + param.port[n+1] = '\n'; + param->result = -1; IARM_Result_t rpcRet = IARM_Bus_Call(IARM_BUS_DSMGR_NAME, (char *)IARM_BUS_DSMGR_API_GetStandbyVideoState, (void *)¶m, sizeof(param)); - if (IARM_RESULT_SUCCESS == rpcRet) + if (IARM_RESULT_SUCCESS == rpcRet && param.result == 0) { enable = param.isEnabled; dsErr = dsERR_NONE; From d8729a31b54c23e67e15fc18db4c35b33b772b9f Mon Sep 17 00:00:00 2001 From: Dosakayala Nagalakshmi Date: Tue, 9 Sep 2025 14:26:12 +0530 Subject: [PATCH 098/103] fixed comments --- ds/hdmiIn.cpp | 15 ++++++--------- ds/include/hdmiIn.hpp | 2 +- ds/videoOutputPort.cpp | 10 ++++------ 3 files changed, 11 insertions(+), 16 deletions(-) diff --git a/ds/hdmiIn.cpp b/ds/hdmiIn.cpp index f40ce67d..a00cc703 100755 --- a/ds/hdmiIn.cpp +++ b/ds/hdmiIn.cpp @@ -678,16 +678,13 @@ void HdmiInput::getHdmiVersion (int iHdmiPort, dsHdmiMaxCapabilityVersion_t *cap printf ("%s:%d - HDMI Compatibility Version = %d\n", __PRETTY_FUNCTION__, __LINE__, *capversion); } -void HdmiInput::getHDMIARCPortId(int *portId) -{ - if(NULL != portId) +void HdmiInput::getHDMIARCPortId(int &portId) { + + dsError_t error = dsERR_GENERAL; + error = dsGetHDMIARCPortId(portId); + if(dsERR_NONE != error) { - dsError_t error = dsERR_GENERAL; - error = dsGetHDMIARCPortId(portId); - if(dsERR_NONE != error) - { - *portId = -1; - } + *portId = -1; } } diff --git a/ds/include/hdmiIn.hpp b/ds/include/hdmiIn.hpp index 792a5b2b..c35b0d88 100755 --- a/ds/include/hdmiIn.hpp +++ b/ds/include/hdmiIn.hpp @@ -101,7 +101,7 @@ class HdmiInput void getVRRSupport (int iHdmiPort, bool *vrr_suppport); void getVRRStatus (int iHdmiPort, dsHdmiInVrrStatus_t *vrrStatus); void getHdmiVersion (int iHdmiPort, dsHdmiMaxCapabilityVersion_t *capversion); - void getHDMIARCPortId(int *portId); + void getHDMIARCPortId(int &portId); private: HdmiInput (); /* default constructor */ virtual ~HdmiInput (); /* destructor */ diff --git a/ds/videoOutputPort.cpp b/ds/videoOutputPort.cpp index d0dba075..ddfb41ac 100644 --- a/ds/videoOutputPort.cpp +++ b/ds/videoOutputPort.cpp @@ -911,22 +911,20 @@ int VideoOutputPort::GetHdmiPreference() return hdcpProtocol; } -bool VideoOutputPort::SetStandbyVideoState(const string port , const bool enable) +void VideoOutputPort::SetStandbyVideoState(const string port , const bool enable) { dsError_t ret = dsSetStandbyVideoState(port, enable); if (ret != dsERR_NONE) { - return false; + throw Exception(ret); } - return true; } -bool VideoOutputPort::GetStandbyVideoState(const string port, bool isEnabled) +void VideoOutputPort::GetStandbyVideoState(const string port, bool isEnabled) { dsError_t ret = dsGetStandbyVideoState(port, isEnabled); if (ret != dsERR_NONE) { - return false; + throw Exception(ret); } - return true; } /** From 5215f2604c0c791fe2ee27ed9fbf13d60e71498e Mon Sep 17 00:00:00 2001 From: Dosakayala Nagalakshmi Date: Tue, 9 Sep 2025 14:41:59 +0530 Subject: [PATCH 099/103] fixed comments --- ds/videoOutputPort.cpp | 4 ++-- rpc/cli/dsVideoPort.c | 13 ++++--------- rpc/include/dsRpc.h | 2 +- 3 files changed, 7 insertions(+), 12 deletions(-) diff --git a/ds/videoOutputPort.cpp b/ds/videoOutputPort.cpp index ddfb41ac..9f63f57a 100644 --- a/ds/videoOutputPort.cpp +++ b/ds/videoOutputPort.cpp @@ -913,7 +913,7 @@ int VideoOutputPort::GetHdmiPreference() void VideoOutputPort::SetStandbyVideoState(const string port , const bool enable) { - dsError_t ret = dsSetStandbyVideoState(port, enable); + dsError_t ret = dsSetStandbyVideoState(port.c_str(), enable); if (ret != dsERR_NONE) { throw Exception(ret); } @@ -921,7 +921,7 @@ void VideoOutputPort::SetStandbyVideoState(const string port , const bool enable void VideoOutputPort::GetStandbyVideoState(const string port, bool isEnabled) { - dsError_t ret = dsGetStandbyVideoState(port, isEnabled); + dsError_t ret = dsGetStandbyVideoState(port.c_str(), isEnabled); if (ret != dsERR_NONE) { throw Exception(ret); } diff --git a/rpc/cli/dsVideoPort.c b/rpc/cli/dsVideoPort.c index d6afe99c..938c9c72 100644 --- a/rpc/cli/dsVideoPort.c +++ b/rpc/cli/dsVideoPort.c @@ -965,7 +965,7 @@ dsError_t dsSetForceHDRMode(intptr_t handle, dsHDRStandard_t mode) return dsERR_GENERAL ; } -dsError_t dsSetStandbyVideoState(string port , const bool enable) +dsError_t dsSetStandbyVideoState(char *port, const bool enable) { dsError_t dsErr = dsERR_GENERAL; _DEBUG_ENTER(); @@ -973,9 +973,7 @@ dsError_t dsSetStandbyVideoState(string port , const bool enable) if(!port.empty()) { dsMgrStandbyVideoStateParam_t param = {0}; - int n = port.length(); - strcpy(param.port, port.c_str()); - param.port[n+1] = '\n'; + strcpy(param.port, port); param.isEnabled = enable; param->result = -1; @@ -991,7 +989,7 @@ dsError_t dsSetStandbyVideoState(string port , const bool enable) return dsErr; } -dsError_t dsGetStandbyVideoState(string port , bool &enable) +dsError_t dsGetStandbyVideoState(char *port, bool &enable) { dsError_t dsErr = dsERR_GENERAL; _DEBUG_ENTER(); @@ -999,10 +997,7 @@ dsError_t dsGetStandbyVideoState(string port , bool &enable) if(!port.empty()) { dsMgrStandbyVideoStateParam_t param = {0}; - - int n = port.length(); - strcpy(param.port, port.c_str()); - param.port[n+1] = '\n'; + strcpy(param.port, port); param->result = -1; IARM_Result_t rpcRet = IARM_Bus_Call(IARM_BUS_DSMGR_NAME, diff --git a/rpc/include/dsRpc.h b/rpc/include/dsRpc.h index 96b3a086..1b23d553 100644 --- a/rpc/include/dsRpc.h +++ b/rpc/include/dsRpc.h @@ -289,7 +289,7 @@ extern "C" { #define MS12_CONFIG_BUF_SIZE 16 typedef struct _dsMgrStandbyVideoStateParam_t{ - char port[DSMGR_MAX_VIDEO_PORT_NAME_LENGTH]; + char port[DSMGR_MAX_VIDEO_PORT_NAME_LENGTH]; int isEnabled; int result; } dsMgrStandbyVideoStateParam_t; From d2f414c8b76f27efa059f7f684fc36a17896182b Mon Sep 17 00:00:00 2001 From: Dosakaya <110212899+Dosakaya@users.noreply.github.com> Date: Tue, 9 Sep 2025 14:45:35 +0530 Subject: [PATCH 100/103] Update hdmiIn.cpp --- ds/hdmiIn.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ds/hdmiIn.cpp b/ds/hdmiIn.cpp index a00cc703..9608593b 100755 --- a/ds/hdmiIn.cpp +++ b/ds/hdmiIn.cpp @@ -684,7 +684,7 @@ void HdmiInput::getHDMIARCPortId(int &portId) { error = dsGetHDMIARCPortId(portId); if(dsERR_NONE != error) { - *portId = -1; + portId = -1; } } From 78a558040641e199b9c6631f9771797a58670a56 Mon Sep 17 00:00:00 2001 From: Dosakayala Nagalakshmi Date: Tue, 9 Sep 2025 15:02:10 +0530 Subject: [PATCH 101/103] fixed comments --- ds/include/videoOutputPort.hpp | 2 +- rpc/include/dsRpc.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/ds/include/videoOutputPort.hpp b/ds/include/videoOutputPort.hpp index 3734abbc..2ec03cc9 100644 --- a/ds/include/videoOutputPort.hpp +++ b/ds/include/videoOutputPort.hpp @@ -284,7 +284,7 @@ class VideoOutputPort : public Enumerable { void setPreferredColorDepth(const unsigned int colordepth, bool persist = true); void getColorDepthCapabilities (unsigned int *capabilities) const; void SetStandbyVideoState(const string port , const bool enable); - void GetStandbyVideoState(const string port , bool enable); + void GetStandbyVideoState(const string port , bool &enable); private: Display _display; diff --git a/rpc/include/dsRpc.h b/rpc/include/dsRpc.h index 1b23d553..96b3a086 100644 --- a/rpc/include/dsRpc.h +++ b/rpc/include/dsRpc.h @@ -289,7 +289,7 @@ extern "C" { #define MS12_CONFIG_BUF_SIZE 16 typedef struct _dsMgrStandbyVideoStateParam_t{ - char port[DSMGR_MAX_VIDEO_PORT_NAME_LENGTH]; + char port[DSMGR_MAX_VIDEO_PORT_NAME_LENGTH]; int isEnabled; int result; } dsMgrStandbyVideoStateParam_t; From 7989c4e2ca767b2b7493c05a2a5ffec6dc645629 Mon Sep 17 00:00:00 2001 From: Dosakayala Nagalakshmi Date: Tue, 9 Sep 2025 16:25:29 +0530 Subject: [PATCH 102/103] fixed compilation errors --- ds/hdmiIn.cpp | 3 ++- ds/include/hdmiIn.hpp | 2 +- ds/include/videoOutputPort.hpp | 4 ++-- ds/videoOutputPort.cpp | 14 ++++---------- rpc/cli/dsVideoPort.c | 8 ++++---- 5 files changed, 13 insertions(+), 18 deletions(-) diff --git a/ds/hdmiIn.cpp b/ds/hdmiIn.cpp index 9608593b..927df499 100755 --- a/ds/hdmiIn.cpp +++ b/ds/hdmiIn.cpp @@ -678,7 +678,7 @@ void HdmiInput::getHdmiVersion (int iHdmiPort, dsHdmiMaxCapabilityVersion_t *cap printf ("%s:%d - HDMI Compatibility Version = %d\n", __PRETTY_FUNCTION__, __LINE__, *capversion); } -void HdmiInput::getHDMIARCPortId(int &portId) { +dsError_t HdmiInput::getHDMIARCPortId(int &portId) { dsError_t error = dsERR_GENERAL; error = dsGetHDMIARCPortId(portId); @@ -686,6 +686,7 @@ void HdmiInput::getHDMIARCPortId(int &portId) { { portId = -1; } + return error; } } diff --git a/ds/include/hdmiIn.hpp b/ds/include/hdmiIn.hpp index c35b0d88..4840245e 100755 --- a/ds/include/hdmiIn.hpp +++ b/ds/include/hdmiIn.hpp @@ -101,7 +101,7 @@ class HdmiInput void getVRRSupport (int iHdmiPort, bool *vrr_suppport); void getVRRStatus (int iHdmiPort, dsHdmiInVrrStatus_t *vrrStatus); void getHdmiVersion (int iHdmiPort, dsHdmiMaxCapabilityVersion_t *capversion); - void getHDMIARCPortId(int &portId); + dsError_t getHDMIARCPortId(int &portId); private: HdmiInput (); /* default constructor */ virtual ~HdmiInput (); /* destructor */ diff --git a/ds/include/videoOutputPort.hpp b/ds/include/videoOutputPort.hpp index 2ec03cc9..3815ade2 100644 --- a/ds/include/videoOutputPort.hpp +++ b/ds/include/videoOutputPort.hpp @@ -283,8 +283,8 @@ class VideoOutputPort : public Enumerable { unsigned int getPreferredColorDepth(bool persist = true) ; void setPreferredColorDepth(const unsigned int colordepth, bool persist = true); void getColorDepthCapabilities (unsigned int *capabilities) const; - void SetStandbyVideoState(const string port , const bool enable); - void GetStandbyVideoState(const string port , bool &enable); + dsError_t SetStandbyVideoState(const string port , const bool enable); + dsError_t GetStandbyVideoState(const string port , bool &enable); private: Display _display; diff --git a/ds/videoOutputPort.cpp b/ds/videoOutputPort.cpp index 9f63f57a..b1431056 100644 --- a/ds/videoOutputPort.cpp +++ b/ds/videoOutputPort.cpp @@ -911,20 +911,14 @@ int VideoOutputPort::GetHdmiPreference() return hdcpProtocol; } -void VideoOutputPort::SetStandbyVideoState(const string port , const bool enable) +dsError_t VideoOutputPort::SetStandbyVideoState(const string port , const bool enable) { - dsError_t ret = dsSetStandbyVideoState(port.c_str(), enable); - if (ret != dsERR_NONE) { - throw Exception(ret); - } + return dsSetStandbyVideoState(port.c_str(), enable); } -void VideoOutputPort::GetStandbyVideoState(const string port, bool isEnabled) +dsError_t VideoOutputPort::GetStandbyVideoState(const string port, bool &isEnabled) { - dsError_t ret = dsGetStandbyVideoState(port.c_str(), isEnabled); - if (ret != dsERR_NONE) { - throw Exception(ret); - } + return dsGetStandbyVideoState(port.c_str(), isEnabled); } /** diff --git a/rpc/cli/dsVideoPort.c b/rpc/cli/dsVideoPort.c index 938c9c72..bab1aabd 100644 --- a/rpc/cli/dsVideoPort.c +++ b/rpc/cli/dsVideoPort.c @@ -970,12 +970,12 @@ dsError_t dsSetStandbyVideoState(char *port, const bool enable) dsError_t dsErr = dsERR_GENERAL; _DEBUG_ENTER(); - if(!port.empty()) + if(NULL != port) { dsMgrStandbyVideoStateParam_t param = {0}; strcpy(param.port, port); param.isEnabled = enable; - param->result = -1; + param.result = -1; IARM_Result_t rpcRet = IARM_Bus_Call(IARM_BUS_DSMGR_NAME, (char *)IARM_BUS_DSMGR_API_SetStandbyVideoState, @@ -994,11 +994,11 @@ dsError_t dsGetStandbyVideoState(char *port, bool &enable) dsError_t dsErr = dsERR_GENERAL; _DEBUG_ENTER(); - if(!port.empty()) + if(NULL != port) { dsMgrStandbyVideoStateParam_t param = {0}; strcpy(param.port, port); - param->result = -1; + param.result = -1; IARM_Result_t rpcRet = IARM_Bus_Call(IARM_BUS_DSMGR_NAME, (char *)IARM_BUS_DSMGR_API_GetStandbyVideoState, From 67b69a55d27cd266e3104e7c80ccea12ad51a162 Mon Sep 17 00:00:00 2001 From: Dosakayala Nagalakshmi Date: Tue, 9 Sep 2025 17:18:33 +0530 Subject: [PATCH 103/103] fixing compilation errors --- ds/include/hdmiIn.hpp | 2 +- ds/include/videoOutputPort.hpp | 1 + sample/hdmiIn.cpp | 1 - 3 files changed, 2 insertions(+), 2 deletions(-) diff --git a/ds/include/hdmiIn.hpp b/ds/include/hdmiIn.hpp index 4840245e..0aeb9e25 100755 --- a/ds/include/hdmiIn.hpp +++ b/ds/include/hdmiIn.hpp @@ -52,7 +52,7 @@ #include #include "dsTypes.h" - +#include "dsError.h" /** * @file hdmiIn.hpp diff --git a/ds/include/videoOutputPort.hpp b/ds/include/videoOutputPort.hpp index 3815ade2..291af68a 100644 --- a/ds/include/videoOutputPort.hpp +++ b/ds/include/videoOutputPort.hpp @@ -38,6 +38,7 @@ #include #include "dsTypes.h" +#include "dsError.h" /** * @file videoOutputPort.hpp diff --git a/sample/hdmiIn.cpp b/sample/hdmiIn.cpp index 819eb919..c1e49a39 100644 --- a/sample/hdmiIn.cpp +++ b/sample/hdmiIn.cpp @@ -32,7 +32,6 @@ #include "hdmiIn.hpp" #include "manager.hpp" #include "dsUtl.h" -#include "dsError.h" #include #include #include