66 //----------------------------------------------------------------------------- |
66 //----------------------------------------------------------------------------- |
67 // |
67 // |
68 CGlxTvConnectionMonitor::CGlxTvConnectionMonitor( |
68 CGlxTvConnectionMonitor::CGlxTvConnectionMonitor( |
69 MGlxTvConnectionObserver& aConnectionObserver) : |
69 MGlxTvConnectionObserver& aConnectionObserver) : |
70 CActive(EPriorityStandard), iConnectionObserver(aConnectionObserver), |
70 CActive(EPriorityStandard), iConnectionObserver(aConnectionObserver), |
71 iIsTvOutConnected(EFalse), iIsHDMIConnected(EFalse) |
71 iIsTvOutConnected(EFalse), iIsHDMIConnected(EFalse), |
|
72 iIsHeadSetConnected(EFalse) |
72 |
73 |
73 { |
74 { |
74 TRACER("CGlxTvConnectionMonitor"); |
75 TRACER("CGlxTvConnectionMonitor"); |
75 CActiveScheduler::Add(this); |
76 CActiveScheduler::Add(this); |
76 } |
77 } |
177 void CGlxTvConnectionMonitor::IssueNotificationL() |
178 void CGlxTvConnectionMonitor::IssueNotificationL() |
178 { |
179 { |
179 TRACER("CGlxTvConnectionMonitor::IssueNotificationL"); |
180 TRACER("CGlxTvConnectionMonitor::IssueNotificationL"); |
180 TBool previousTvState = iIsTvOutConnected; |
181 TBool previousTvState = iIsTvOutConnected; |
181 TBool previousHDMIState = iIsHDMIConnected; |
182 TBool previousHDMIState = iIsHDMIConnected; |
182 |
183 TBool previousHeadSetState = iIsHeadSetConnected; |
|
184 TTvChangeType changeType = EDisconnected; |
|
185 |
183 // Update the connection status |
186 // Update the connection status |
184 UpdateConnectionStatusL(); |
187 UpdateConnectionStatusL(); |
185 |
188 |
186 // trigger tvstatus change only when there is actually a change the in the connection and not |
189 // trigger tvstatus change only when there is actually a change the in the connection and not |
187 // for spurious events |
190 // for spurious events |
188 if (previousTvState != iIsTvOutConnected || previousHDMIState |
191 if (previousTvState != iIsTvOutConnected) |
189 != iIsHDMIConnected) |
|
190 { |
192 { |
191 GLX_LOG_INFO("CGlxTvConnectionMonitor::IssueNotificationL - Connection Altered"); |
193 changeType = iIsTvOutConnected == EFalse ? EDisconnected : ETvConnectionChanged; |
192 iConnectionObserver.HandleTvConnectionStatusChangedL(); |
194 GLX_LOG_INFO1("CGlxTvConnectionMonitor::IssueNotificationL - TVOut Connection Changed %d", changeType); |
|
195 iConnectionObserver.HandleTvConnectionStatusChangedL(changeType); |
|
196 } |
|
197 else if (previousHDMIState != iIsHDMIConnected) |
|
198 { |
|
199 changeType = iIsHDMIConnected == EFalse ? EDisconnected : ETvConnectionChanged; |
|
200 GLX_LOG_INFO1("CGlxTvConnectionMonitor::IssueNotificationL - HDMI Connection Changed %d", changeType); |
|
201 iConnectionObserver.HandleTvConnectionStatusChangedL(changeType); |
|
202 } |
|
203 else if (previousHeadSetState != iIsHeadSetConnected) |
|
204 { |
|
205 changeType = iIsHeadSetConnected == EFalse ? EDisconnected : ETvConnectionChanged; |
|
206 GLX_LOG_INFO1("CGlxTvConnectionMonitor::IssueNotificationL - Headset Connection Changed %d", changeType); |
|
207 iConnectionObserver.HandleTvConnectionStatusChangedL(changeType); |
193 } |
208 } |
194 } |
209 } |
195 |
210 |
196 //----------------------------------------------------------------------------- |
211 //----------------------------------------------------------------------------- |
197 // UpdateConnectionStatusL() |
212 // UpdateConnectionStatusL() |
199 // |
214 // |
200 void CGlxTvConnectionMonitor::UpdateConnectionStatusL() |
215 void CGlxTvConnectionMonitor::UpdateConnectionStatusL() |
201 { |
216 { |
202 TRACER("CGlxTvConnectionMonitor::UpdateConnectionStatusL()"); |
217 TRACER("CGlxTvConnectionMonitor::UpdateConnectionStatusL()"); |
203 |
218 |
204 GLX_LOG_INFO2("CGlxTvConnectionMonitor::UpdateConnectionStatusL previousTvState = %d , previousHDMIState = %d", |
219 GLX_LOG_INFO3("CGlxTvConnectionMonitor::UpdateConnectionStatusL previousTvState = %d , previousHDMIState = %d iIsHeadSetConnected=%d", |
205 iIsTvOutConnected,iIsHDMIConnected); |
220 iIsTvOutConnected,iIsHDMIConnected,iIsHeadSetConnected); |
206 |
221 |
207 // reset the states |
222 // reset the states |
208 iIsHDMIConnected = EFalse; |
223 iIsHDMIConnected = EFalse; |
209 iIsTvOutConnected = EFalse; |
224 iIsTvOutConnected = EFalse; |
|
225 iIsHeadSetConnected = EFalse; |
210 |
226 |
211 //gets the TV status in to the iCurrentAccArray and haves the Latest Accesory in 0-index |
227 //gets the TV status in to the iCurrentAccArray and haves the Latest Accesory in 0-index |
212 User::LeaveIfError(iTvAccCon.GetAccessoryConnectionStatus(iCurrentAccArray)); |
228 User::LeaveIfError(iTvAccCon.GetAccessoryConnectionStatus(iCurrentAccArray)); |
213 |
229 |
214 CAccPolSubblockNameArray* nameArray = CAccPolSubblockNameArray::NewL(); |
230 CAccPolSubblockNameArray* nameArray = CAccPolSubblockNameArray::NewL(); |
255 GLX_LOG_INFO("CGlxTvConnectionMonitor::UpdateConnectionStatusL Tv is connected"); |
271 GLX_LOG_INFO("CGlxTvConnectionMonitor::UpdateConnectionStatusL Tv is connected"); |
256 iIsTvOutConnected = ETrue; |
272 iIsTvOutConnected = ETrue; |
257 } |
273 } |
258 } |
274 } |
259 } |
275 } |
260 } |
276 else if (genId.DeviceTypeCaps(KDTHeadset) |
|
277 && genId.PhysicalConnectionCaps(KPCWired)) |
|
278 { |
|
279 GLX_LOG_INFO("CGlxTvConnectionMonitor::UpdateConnectionStatusL HeadSet connect"); |
|
280 iIsHeadSetConnected = ETrue; |
|
281 } |
|
282 } |
261 CleanupStack::PopAndDestroy(nameArray); |
283 CleanupStack::PopAndDestroy(nameArray); |
262 |
284 |
263 GLX_LOG_INFO2("CGlxTvConnectionMonitor::UpdateConnectionStatusL CurrentTvState = %d , CurrentHDMIState = %d", |
285 GLX_LOG_INFO3("CGlxTvConnectionMonitor::UpdateConnectionStatusL CurrentTvState = %d , CurrentHDMIState = %d, iIsHeadSetConnected=%d", |
264 iIsTvOutConnected,iIsHDMIConnected); |
286 iIsTvOutConnected,iIsHDMIConnected,iIsHeadSetConnected); |
265 } |
287 } |