34 // --------------------------------------------------------------------------- |
35 // --------------------------------------------------------------------------- |
35 // CTMActivityManager::CTMActivityManager() |
36 // CTMActivityManager::CTMActivityManager() |
36 // --------------------------------------------------------------------------- |
37 // --------------------------------------------------------------------------- |
37 // |
38 // |
38 CTMActivityManager::CTMActivityManager(MTMActivityManagerObserver* aObserver, TInt aTimeout) |
39 CTMActivityManager::CTMActivityManager(MTMActivityManagerObserver* aObserver, TInt aTimeout) |
39 : CActive(CActive::EPriorityHigh), iObserver(aObserver), iTimeout(aTimeout) |
40 : CActive(CActive::EPriorityHigh), iObserver(aObserver), iTimeout(aTimeout), iPreviousStatus(KErrNotFound) |
40 { |
41 { |
|
42 TN_DEBUG1( "CTMActivityManager::CTMActivityManager()"); |
41 CActiveScheduler::Add(this); |
43 CActiveScheduler::Add(this); |
42 } |
44 } |
43 |
45 |
44 // --------------------------------------------------------------------------- |
46 // --------------------------------------------------------------------------- |
45 // CTMActivityManager::~CTMActivityManager() |
47 // CTMActivityManager::~CTMActivityManager() |
46 // --------------------------------------------------------------------------- |
48 // --------------------------------------------------------------------------- |
47 // |
49 // |
48 CTMActivityManager::~CTMActivityManager() |
50 CTMActivityManager::~CTMActivityManager() |
49 { |
51 { |
|
52 TN_DEBUG1( "CTMActivityManager::~CTMActivityManager()"); |
|
53 delete iLight; |
|
54 iLight = NULL; |
50 Cancel(); |
55 Cancel(); |
51 iTimer.Close(); |
56 iTimer.Close(); |
52 } |
57 } |
53 |
58 |
54 // --------------------------------------------------------------------------- |
59 // --------------------------------------------------------------------------- |
55 // CTMActivityManager::ConstructL() |
60 // CTMActivityManager::ConstructL() |
56 // --------------------------------------------------------------------------- |
61 // --------------------------------------------------------------------------- |
57 // |
62 // |
58 void CTMActivityManager::ConstructL() |
63 void CTMActivityManager::ConstructL() |
59 { |
64 { |
|
65 TN_DEBUG1( "CTMActivityManager::ConstructL()"); |
60 iTimer.CreateLocal(); |
66 iTimer.CreateLocal(); |
61 } |
67 } |
62 |
68 |
63 // --------------------------------------------------------------------------- |
69 // --------------------------------------------------------------------------- |
64 // CTMActivityManager::SetTimeout() |
70 // CTMActivityManager::SetTimeout() |
65 // --------------------------------------------------------------------------- |
71 // --------------------------------------------------------------------------- |
66 // |
72 // |
67 void CTMActivityManager::SetTimeout(TInt aTimeout) |
73 void CTMActivityManager::SetTimeout(TInt aTimeout) |
68 { |
74 { |
|
75 TN_DEBUG1( "CTMActivityManager::SetTimeout()"); |
69 iTimeout = aTimeout; |
76 iTimeout = aTimeout; |
70 Reset(); |
77 Reset(); |
71 } |
78 } |
72 |
79 |
73 // --------------------------------------------------------------------------- |
80 // --------------------------------------------------------------------------- |
74 // CTMActivityManager::Reset() |
81 // CTMActivityManager::Reset() |
75 // --------------------------------------------------------------------------- |
82 // --------------------------------------------------------------------------- |
76 // |
83 // |
77 void CTMActivityManager::Reset() |
84 void CTMActivityManager::Reset() |
78 { |
85 { |
|
86 TN_DEBUG1( "CTMActivityManager::Reset()"); |
|
87 delete iLight; |
|
88 iLight = NULL; |
79 Cancel(); |
89 Cancel(); |
80 Start(); |
90 Start(); |
81 } |
91 } |
82 |
92 |
83 // --------------------------------------------------------------------------- |
93 // --------------------------------------------------------------------------- |
84 // CTMActivityManager::DoCancel() |
94 // CTMActivityManager::DoCancel() |
85 // --------------------------------------------------------------------------- |
95 // --------------------------------------------------------------------------- |
86 void CTMActivityManager::DoCancel() |
96 void CTMActivityManager::DoCancel() |
87 { |
97 { |
|
98 TN_DEBUG1( "CTMActivityManager::DoCancel()"); |
88 iTimer.Cancel(); |
99 iTimer.Cancel(); |
89 iWatch = ENone; |
100 iWatch = ENone; |
90 } |
101 } |
91 |
102 |
92 // --------------------------------------------------------------------------- |
103 // --------------------------------------------------------------------------- |
93 // CTMActivityManager::Start() |
104 // CTMActivityManager::Start() |
94 // --------------------------------------------------------------------------- |
105 // --------------------------------------------------------------------------- |
95 // |
106 // |
96 void CTMActivityManager::Start() |
107 void CTMActivityManager::Start() |
97 { |
108 { |
98 if (!IsActive()) |
109 TN_DEBUG1( "CTMActivityManager::Start()"); |
99 { |
110 |
100 iWatch = EWaitingForInactivity; |
111 iFirstRound = ETrue; |
101 iTimer.Inactivity(iStatus, iTimeout); |
112 |
|
113 if(!iLight) |
|
114 { |
|
115 TRAP_IGNORE(iLight = CHWRMLight::NewL(this)); |
|
116 } |
|
117 |
|
118 if( !IsActive() ) |
|
119 { |
102 SetActive(); |
120 SetActive(); |
|
121 TRequestStatus* statusPtr = &iStatus; |
|
122 User::RequestComplete( statusPtr, KErrNone ); |
103 } |
123 } |
104 } |
124 } |
105 |
125 |
106 // --------------------------------------------------------------------------- |
126 // --------------------------------------------------------------------------- |
107 // CTMActivityManager::RunL() |
127 // CTMActivityManager::RunL() |
108 // --------------------------------------------------------------------------- |
128 // --------------------------------------------------------------------------- |
109 // |
129 // |
110 void CTMActivityManager::RunL() |
130 void CTMActivityManager::RunL() |
111 { |
131 { |
|
132 TN_DEBUG4( "CTMActivityManager::RunL(0x%08x) %d, observer = 0x%08x", this, iStatus.Int(), iObserver); |
|
133 |
|
134 if(iFirstRound) |
|
135 { |
|
136 TN_DEBUG1( "CTMActivityManager::RunL() iFirstRound"); |
|
137 iFirstRound = EFalse; |
|
138 if (!IsActive()) |
|
139 { |
|
140 iWatch = EWaitingForInactivity; |
|
141 iTimer.Inactivity(iStatus, iTimeout); |
|
142 SetActive(); |
|
143 } |
|
144 NotifyObserver(); |
|
145 return; |
|
146 } |
|
147 |
112 if (iStatus == KErrNone) |
148 if (iStatus == KErrNone) |
113 { |
149 { |
114 if (iWatch == EWaitingForInactivity) |
150 if (iWatch == EWaitingForInactivity) |
115 { |
151 { |
116 TInt inactivity = User::InactivityTime().Int(); |
152 TInt inactivity = User::InactivityTime().Int(); |
117 if (inactivity >= iTimeout) |
153 if (inactivity >= iTimeout) |
118 { |
154 { |
119 if (iObserver) |
155 TN_DEBUG1( "CTMActivityManager::RunL() inactive"); |
120 { |
156 NotifyObserver(); |
121 iObserver->InactivityDetected(); |
157 |
122 } |
|
123 if (!IsActive()) //observer might have called a Reset() |
158 if (!IsActive()) //observer might have called a Reset() |
124 { |
159 { |
125 iTimer.Inactivity(iStatus,0); |
160 iTimer.Inactivity(iStatus,0); |
126 iWatch = EWaitingForActivity; |
161 iWatch = EWaitingForActivity; |
127 } |
162 } |
131 iTimer.Inactivity(iStatus,iTimeout); |
166 iTimer.Inactivity(iStatus,iTimeout); |
132 } |
167 } |
133 } |
168 } |
134 else if (iWatch == EWaitingForActivity) |
169 else if (iWatch == EWaitingForActivity) |
135 { |
170 { |
136 if (iObserver) |
171 TN_DEBUG1( "CTMActivityManager::RunL() active"); |
137 { |
172 NotifyObserver(); |
138 iObserver->ActivityDetected(); |
173 |
139 } |
|
140 |
|
141 if (!IsActive()) //observer might have called a Reset() |
174 if (!IsActive()) //observer might have called a Reset() |
142 { |
175 { |
143 iTimer.Inactivity(iStatus,iTimeout); |
176 iTimer.Inactivity(iStatus,iTimeout); |
144 iWatch = EWaitingForInactivity; |
177 iWatch = EWaitingForInactivity; |
145 } |
178 } |
146 } |
179 } |
147 |
180 |
148 if (!IsActive()) //observer might have called a Reset() |
181 if (!IsActive()) //observer might have called a Reset() |
149 { |
182 { |
150 SetActive(); |
183 SetActive(); |
151 } |
184 } |
152 } |
185 } |
153 else |
186 else |
154 { |
187 { |
155 iWatch = ENone; |
188 iWatch = ENone; |
156 } |
189 } |
|
190 TN_DEBUG1( "CTMActivityManager::RunL() end"); |
157 } |
191 } |
158 |
192 |
159 // --------------------------------------------------------------------------- |
193 // --------------------------------------------------------------------------- |
160 // CTMActivityManager::RunError() |
194 // CTMActivityManager::RunError() |
161 // --------------------------------------------------------------------------- |
195 // --------------------------------------------------------------------------- |
162 // |
196 // |
163 TInt CTMActivityManager::RunError(TInt aError) |
197 TInt CTMActivityManager::RunError(TInt aError) |
164 { |
198 { |
165 TN_DEBUG1( "CTMActivityManager::RunError()"); |
199 TN_DEBUG2( "CTMActivityManager::RunError() %d", aError); |
166 |
200 |
167 if (aError != KErrNone) |
201 if (aError != KErrNone) |
168 { |
202 { |
169 TN_DEBUG2( "CTMActivityManager::RunError = %d", aError ); |
|
170 Reset(); |
203 Reset(); |
171 } |
204 } |
172 |
205 |
173 // nothing to do |
206 // nothing to do |
174 return KErrNone; |
207 return KErrNone; |
175 } |
208 } |
176 |
209 |
|
210 // ----------------------------------------------------------------------------- |
|
211 // IsInactive() |
|
212 // ----------------------------------------------------------------------------- |
|
213 // |
|
214 TBool CTMActivityManager::IsInactive() |
|
215 { |
|
216 #ifdef _DEBUG |
|
217 TN_DEBUG3( "CTMActivityManager::IsInactive()= %d, iLights = %d", User::InactivityTime().Int(), iLights); |
|
218 #endif |
|
219 |
|
220 //if lights are off or inactivity timer is less that target the device is not idle |
|
221 if( User::InactivityTime() >= TTimeIntervalSeconds(iTimeout) || !iLights ) |
|
222 { |
|
223 TN_DEBUG1( "CTMActivityManager::IsInactive() ETrue"); |
|
224 return ETrue; |
|
225 } |
|
226 TN_DEBUG1( "CTMActivityManager::IsInactive() EFalse"); |
|
227 return EFalse; |
|
228 } |
|
229 |
|
230 // ----------------------------------------------------------------------------- |
|
231 // LightStatusChanged() |
|
232 // ----------------------------------------------------------------------------- |
|
233 // |
|
234 void CTMActivityManager::LightStatusChanged(TInt /*aTarget*/, CHWRMLight::TLightStatus aStatus) |
|
235 { |
|
236 TN_DEBUG2( "CTMActivityManager::LightStatusChanged() aStatus == %d", aStatus); |
|
237 |
|
238 if( aStatus == CHWRMLight::ELightOff) |
|
239 { |
|
240 TN_DEBUG1( "CTMActivityManager::LightStatusChanged() -- OFF"); |
|
241 iLights = EFalse; |
|
242 } |
|
243 else |
|
244 { |
|
245 TN_DEBUG1( "CTMActivityManager::LightStatusChanged() -- ON"); |
|
246 iLights = ETrue; |
|
247 } |
|
248 |
|
249 NotifyObserver(); |
|
250 } |
|
251 |
|
252 // ----------------------------------------------------------------------------- |
|
253 // NotifyObserver() |
|
254 // ----------------------------------------------------------------------------- |
|
255 // |
|
256 void CTMActivityManager::NotifyObserver() |
|
257 { |
|
258 TN_DEBUG1( "void CTMAActivityManager::NotifyObserver()"); |
|
259 TBool status = IsInactive(); |
|
260 |
|
261 if( iPreviousStatus != status ) |
|
262 { |
|
263 iPreviousStatus = status; |
|
264 if (iObserver) |
|
265 { |
|
266 iObserver->ActivityChanged(!status); |
|
267 } |
|
268 } |
|
269 } |