@@ -62,124 +62,41 @@ namespace WPEFramework
62
62
return (std::string (" Not supported" ));
63
63
}
64
64
65
- HdmiCecSink::_instance = this ;
66
- smConnection=NULL ;
67
- cecEnableStatus = false ;
68
- HdmiCecSink::_instance->m_numberOfDevices = 0 ;
69
- m_logicalAddressAllocated = LogicalAddress::UNREGISTERED;
70
- m_currentActiveSource = -1 ;
71
- m_isHdmiInConnected = false ;
72
- hdmiCecAudioDeviceConnected = false ;
73
- m_isAudioStatusInfoUpdated = false ;
74
- m_audioStatusReceived = false ;
75
- m_audioStatusTimerStarted = false ;
76
- m_audioDevicePowerStatusRequested = false ;
77
- m_pollNextState = POLL_THREAD_STATE_NONE;
78
- m_pollThreadState = POLL_THREAD_STATE_NONE;
79
- m_video_latency = DEFAULT_VIDEO_LATENCY;
80
- m_latency_flags = DEFAULT_LATENCY_FLAGS ;
81
- m_audio_output_delay = DEFAULT_AUDIO_OUTPUT_DELAY;
82
-
83
- Register (HDMICECSINK_METHOD_SET_ENABLED, &HdmiCecSink::setEnabledWrapper, this );
84
- Register (HDMICECSINK_METHOD_GET_ENABLED, &HdmiCecSink::getEnabledWrapper, this );
85
- Register (HDMICECSINK_METHOD_SET_OSD_NAME, &HdmiCecSink::setOSDNameWrapper, this );
86
- Register (HDMICECSINK_METHOD_GET_OSD_NAME, &HdmiCecSink::getOSDNameWrapper, this );
87
- Register (HDMICECSINK_METHOD_SET_VENDOR_ID, &HdmiCecSink::setVendorIdWrapper, this );
88
- Register (HDMICECSINK_METHOD_GET_VENDOR_ID, &HdmiCecSink::getVendorIdWrapper, this );
89
- Register (HDMICECSINK_METHOD_PRINT_DEVICE_LIST, &HdmiCecSink::printDeviceListWrapper, this );
90
- Register (HDMICECSINK_METHOD_SET_ACTIVE_PATH, &HdmiCecSink::setActivePathWrapper, this );
91
- Register (HDMICECSINK_METHOD_SET_ROUTING_CHANGE, &HdmiCecSink::setRoutingChangeWrapper, this );
92
- Register (HDMICECSINK_METHOD_GET_DEVICE_LIST, &HdmiCecSink::getDeviceListWrapper, this );
93
- Register (HDMICECSINK_METHOD_GET_ACTIVE_SOURCE, &HdmiCecSink::getActiveSourceWrapper, this );
94
- Register (HDMICECSINK_METHOD_SET_ACTIVE_SOURCE, &HdmiCecSink::setActiveSourceWrapper, this );
95
- Register (HDMICECSINK_METHOD_GET_ACTIVE_ROUTE, &HdmiCecSink::getActiveRouteWrapper, this );
96
- Register (HDMICECSINK_METHOD_REQUEST_ACTIVE_SOURCE, &HdmiCecSink::requestActiveSourceWrapper, this );
97
- Register (HDMICECSINK_METHOD_SETUP_ARC, &HdmiCecSink::setArcEnableDisableWrapper, this );
98
- Register (HDMICECSINK_METHOD_SET_MENU_LANGUAGE, &HdmiCecSink::setMenuLanguageWrapper, this );
99
- Register (HDMICECSINK_METHOD_REQUEST_SHORT_AUDIO_DESCRIPTOR, &HdmiCecSink::requestShortAudioDescriptorWrapper, this );
100
- Register (HDMICECSINK_METHOD_SEND_STANDBY_MESSAGE, &HdmiCecSink::sendStandbyMessageWrapper, this );
101
- Register (HDMICECSINK_METHOD_SEND_AUDIO_DEVICE_POWER_ON, &HdmiCecSink::sendAudioDevicePowerOnMsgWrapper, this );
102
- Register (HDMICECSINK_METHOD_SEND_KEY_PRESS,&HdmiCecSink::sendRemoteKeyPressWrapper,this );
103
- Register (HDMICECSINK_METHOD_SEND_USER_CONTROL_PRESSED,&HdmiCecSink::sendUserControlPressedWrapper,this );
104
- Register (HDMICECSINK_METHOD_SEND_USER_CONTROL_RELEASED,&HdmiCecSink::sendUserControlReleasedWrapper,this );
105
- Register (HDMICECSINK_METHOD_SEND_GIVE_AUDIO_STATUS,&HdmiCecSink::sendGiveAudioStatusWrapper,this );
106
- Register (HDMICECSINK_METHOD_GET_AUDIO_DEVICE_CONNECTED_STATUS,&HdmiCecSink::getAudioDeviceConnectedStatusWrapper,this );
107
- Register (HDMICECSINK_METHOD_REQUEST_AUDIO_DEVICE_POWER_STATUS,&HdmiCecSink::requestAudioDevicePowerStatusWrapper,this );
108
- Register (HDMICECSINK_METHOD_SET_LATENCY_INFO, &HdmiCecSink::setLatencyInfoWrapper, this );
109
- logicalAddressDeviceType = " None" ;
110
- logicalAddress = 0xFF ;
111
- // load persistence setting
112
- loadSettings ();
113
-
114
- int err;
115
- dsHdmiInGetNumberOfInputsParam_t hdmiInput;
116
- InitializeIARM ();
117
- m_sendKeyEventThreadExit = false ;
118
- m_sendKeyEventThread = std::thread (threadSendKeyEvent);
119
-
120
- m_currentArcRoutingState = ARC_STATE_ARC_TERMINATED;
121
- m_semSignaltoArcRoutingThread.acquire ();
122
- m_arcRoutingThread = std::thread (threadArcRouting);
123
-
124
- m_audioStatusDetectionTimer.connect ( std::bind ( &HdmiCecSink::audioStatusTimerFunction, this ) );
125
- m_audioStatusDetectionTimer.setSingleShot (true );
126
- m_arcStartStopTimer.connect ( std::bind ( &HdmiCecSink::arcStartStopTimerFunction, this ) );
127
- m_arcStartStopTimer.setSingleShot (true );
128
- // get power state:
129
- uint32_t res = Core::ERROR_GENERAL;
130
- PowerState pwrStateCur = WPEFramework::Exchange::IPowerManager::POWER_STATE_UNKNOWN;
131
- PowerState pwrStatePrev = WPEFramework::Exchange::IPowerManager::POWER_STATE_UNKNOWN;
132
-
133
- ASSERT (_powerManagerPlugin);
134
- if (_powerManagerPlugin) {
135
- res = _powerManagerPlugin->GetPowerState (pwrStateCur, pwrStatePrev);
136
- if (Core::ERROR_NONE == res) {
137
- powerState = (pwrStateCur == WPEFramework::Exchange::IPowerManager::POWER_STATE_ON) ? DEVICE_POWER_STATE_ON : DEVICE_POWER_STATE_OFF;
138
- LOGINFO (" Current state is PowerManagerPlugin: (%d) powerState :%d \n " , pwrStateCur, powerState);
139
- }
140
- }
65
+ string msg = " " ;
141
66
142
- err = IARM_Bus_Call (IARM_BUS_DSMGR_NAME,
143
- IARM_BUS_DSMGR_API_dsHdmiInGetNumberOfInputs,
144
- (void *)&hdmiInput,
145
- sizeof (hdmiInput));
146
-
147
- if (err == IARM_RESULT_SUCCESS && hdmiInput.result == dsERR_NONE)
148
- {
149
- LOGINFO (" Number of Inputs [%d] \n " , hdmiInput.numHdmiInputs );
150
- m_numofHdmiInput = hdmiInput.numHdmiInputs ;
151
- }else {
152
- LOGINFO (" Not able to get Numebr of inputs so defaulting to 3 \n " );
153
- m_numofHdmiInput = 3 ;
154
- }
67
+ ASSERT (nullptr != service);
68
+ ASSERT (nullptr == _service);
69
+ ASSERT (nullptr == _hdmiCecSink);
70
+ ASSERT (0 == _connectionId);
155
71
156
- LOGINFO (" initalize inputs \n " );
157
72
158
- for (int i = 0 ; i < m_numofHdmiInput; i++){
159
- HdmiPortMap hdmiPort ((uint8_t )i);
160
- LOGINFO (" Add to vector [%d] \n " , i);
161
- hdmiInputs.push_back (hdmiPort);
162
- }
73
+ _service = service;
74
+ _service->AddRef ();
75
+ _service->Register (&_notification);
76
+ _hdmiCecSink = _service->Root <Exchange::IHdmiCecSink>(_connectionId, 5000 , _T (" HdmiCecSinkImplementation" ));
163
77
164
- LOGINFO (" Check the HDMI State \n " );
78
+ if (nullptr != _hdmiCecSink)
79
+ {
80
+ _hdmiCecSink->Configure (service);
81
+ _hdmiCecSink->Register (&_notification);
82
+ Exchange::JHdmiCecSink::Register (*this , _hdmiCecSink);
83
+ LOGINFO (" HdmiCecSink plugin is available. Successfully activated HdmiCecSink Plugin" );
84
+ }
85
+ else
86
+ {
87
+ msg = " HdmiCecSink plugin is not available" ;
88
+ LOGINFO (" HdmiCecSink plugin is not available. Failed to activate HdmiCecSink Plugin" );
89
+ }
165
90
166
- CheckHdmiInState ();
167
- if (cecSettingEnabled)
91
+ if (0 != msg.length ())
168
92
{
169
- try
170
- {
171
- CECEnable ();
172
- }
173
- catch (...)
174
- {
175
- LOGWARN (" Exception while enabling CEC settings .\r\n " );
176
- }
93
+ Deinitialize (service);
177
94
}
178
- getCecVersion ();
179
- LOGINFO (" HdmiCecSink plugin Initialize completed \n " );
180
- return (std::string ());
181
95
182
- }
96
+ // On success return empty, to indicate there is no error text.
97
+ return msg;
98
+ }
99
+
183
100
184
101
void HdmiCecSink::Deinitialize (PluginHost::IShell* /* service */ )
185
102
{
@@ -191,11 +108,18 @@ namespace WPEFramework
191
108
return ;
192
109
}
193
110
194
- Exchange::IHdmiCecSink::HdmiCecSinkSuccess success;
111
+ bool enabled = false ;
112
+ bool ret = false ;
113
+ HdmiCecSink::_hdmiCecSink->GetEnabled (enabled,ret);
195
114
196
- HdmiCecSink::_hdmiCecSink->SetEnabled (false ,success);
115
+ if (ret && enabled)
116
+ {
117
+ Exchange::IHdmiCecSink::HdmiCecSinkSuccess success;
118
+ HdmiCecSink::_hdmiCecSink->SetEnabled (false ,success);
119
+ }
120
+ HdmiCecSink::_notification.OnActiveSourceStatusUpdated (false );
197
121
198
- if (nullptr != _hdmiCecSink)
122
+ if (nullptr != _hdmiCecSink)
199
123
{
200
124
_hdmiCecSink->Unregister (&_notification);
201
125
Exchange::JHdmiCecSink::Unregister (*this );
@@ -219,11 +143,11 @@ namespace WPEFramework
219
143
}
220
144
}
221
145
222
- _connectionId = 0 ;
223
- _service->Release ();
224
- _service = nullptr ;
225
- LOGWARN ( " HdmiCecSink Deinitialize() Done " );
226
- }
146
+ _connectionId = 0 ;
147
+ _service->Release ();
148
+ _service = nullptr ;
149
+ LOGINFO ( " HdmiCecSink plugin is deactivated. Successfully deactivated HdmiCecSink Plugin " );
150
+ }
227
151
228
152
string HdmiCecSink::Information () const
229
153
{
0 commit comments