1 // Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies). |
1 // Copyright (c) 2006-2010 Nokia Corporation and/or its subsidiary(-ies). |
2 // All rights reserved. |
2 // All rights reserved. |
3 // This component and the accompanying materials are made available |
3 // This component and the accompanying materials are made available |
4 // under the terms of "Eclipse Public License v1.0" |
4 // under the terms of "Eclipse Public License v1.0" |
5 // which accompanies this distribution, and is available |
5 // which accompanies this distribution, and is available |
6 // at the URL "http://www.eclipse.org/legal/epl-v10.html". |
6 // at the URL "http://www.eclipse.org/legal/epl-v10.html". |
18 // INCLUDES |
18 // INCLUDES |
19 // |
19 // |
20 |
20 |
21 |
21 |
22 |
22 |
|
23 |
|
24 #include "OstTraceDefinitions.h" |
|
25 #ifdef OST_TRACE_COMPILER_IN_USE |
|
26 #include "csaticontsyTraces.h" |
|
27 #endif |
|
28 |
23 #include <satcs.h> // ETel Ipcs |
29 #include <satcs.h> // ETel Ipcs |
24 #include "cmmmessagemanagerbase.h" // Message manager class for forwarding req. |
30 #include "cmmmessagemanagerbase.h" // Message manager class for forwarding req. |
25 //#include <TSatIconInfo.h> // For icon color coding |
31 //#include <TSatIconInfo.h> // For icon color coding |
26 #include "TfLogger.h" // For TFLOGSTRING |
|
27 |
32 |
28 #include "CSatDataPackage.h" // Parameter packing |
33 #include "CSatDataPackage.h" // Parameter packing |
29 #include "CSatIconTsy.h" // Class header |
34 #include "CSatIconTsy.h" // Class header |
30 #include "CSatTsyReqHandleStore.h" |
35 #include "CSatTsyReqHandleStore.h" |
31 #include "msattsy_ipcdefs.h" // Sat Tsy specific request types |
36 #include "msattsy_ipcdefs.h" // Sat Tsy specific request types |
41 CSatIconTsy* CSatIconTsy::NewL |
46 CSatIconTsy* CSatIconTsy::NewL |
42 ( |
47 ( |
43 CSatTsy* aSatTsy |
48 CSatTsy* aSatTsy |
44 ) |
49 ) |
45 { |
50 { |
46 TFLOGSTRING("CSAT: CSatIconTsy::NewL"); |
51 OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSATICONTSY_NEWL_1, "CSAT: CSatIconTsy::NewL"); |
47 CSatIconTsy* const satIconTsy = new ( ELeave ) CSatIconTsy(); |
52 CSatIconTsy* const satIconTsy = new ( ELeave ) CSatIconTsy(); |
48 CleanupStack::PushL( satIconTsy ); |
53 CleanupStack::PushL( satIconTsy ); |
49 satIconTsy->iSatTsy = aSatTsy; |
54 satIconTsy->iSatTsy = aSatTsy; |
50 satIconTsy->ConstructL(); |
55 satIconTsy->ConstructL(); |
51 CleanupStack::Pop( satIconTsy ); |
56 CleanupStack::Pop( satIconTsy ); |
52 TFLOGSTRING("CSAT: CSatIconTsy::NewL, end of method"); |
57 OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSATICONTSY_NEWL_2, "CSAT: CSatIconTsy::NewL, end of method"); |
53 return satIconTsy; |
58 return satIconTsy; |
54 } |
59 } |
55 |
60 |
56 |
61 |
57 // ----------------------------------------------------------------------------- |
62 // ----------------------------------------------------------------------------- |
62 CSatIconTsy::~CSatIconTsy |
67 CSatIconTsy::~CSatIconTsy |
63 ( |
68 ( |
64 void |
69 void |
65 ) |
70 ) |
66 { |
71 { |
67 TFLOGSTRING("CSAT: CSatIconTsy::~CSatIconTsy"); |
72 OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSATICONTSY_DTOR_1, "CSAT: CSatIconTsy::~CSatIconTsy"); |
68 // Unregister. |
73 // Unregister. |
69 iSatTsy->MessageManager()->RegisterTsyObject( |
74 iSatTsy->MessageManager()->RegisterTsyObject( |
70 CMmMessageManagerBase::ESatIconTsyObjType, NULL ); |
75 CMmMessageManagerBase::ESatIconTsyObjType, NULL ); |
71 } |
76 } |
72 |
77 |
78 void CSatIconTsy::ConstructL |
83 void CSatIconTsy::ConstructL |
79 ( |
84 ( |
80 void |
85 void |
81 ) |
86 ) |
82 { |
87 { |
83 TFLOGSTRING("CSAT: CSatIconTsy::ConstructL\n" ); |
88 OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSATICONTSY_CONSTRUCTL_1, "CSAT: CSatIconTsy::ConstructL\n" ); |
84 iIconReqTypeOngoing = ERequestTypeUnknown; |
89 iIconReqTypeOngoing = ERequestTypeUnknown; |
85 // Register. |
90 // Register. |
86 iSatTsy->MessageManager()->RegisterTsyObject( |
91 iSatTsy->MessageManager()->RegisterTsyObject( |
87 CMmMessageManagerBase::ESatIconTsyObjType, this ); |
92 CMmMessageManagerBase::ESatIconTsyObjType, this ); |
88 |
93 |
115 const TInt aIpc, // IPC number of request |
120 const TInt aIpc, // IPC number of request |
116 const TDataPackage& aPackage // Contains parameters for request |
121 const TDataPackage& aPackage // Contains parameters for request |
117 ) |
122 ) |
118 { |
123 { |
119 |
124 |
120 TFLOGSTRING3("CSAT: CSatIconTsy::DoExtFuncL.\n \t\t\t IPC:%d\n \ |
125 OstTraceDefExt2(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSATICONTSY_DOEXTFUNCL_1, "CSAT: CSatIconTsy::DoExtFuncL.\n \t\t\t IPC:%d\n \t\t\t Handle:%d", aIpc, aTsyReqHandle); |
121 \t\t\t Handle:%d", aIpc, aTsyReqHandle); |
|
122 |
126 |
123 TInt ret( KErrNone ); |
127 TInt ret( KErrNone ); |
124 |
128 |
125 TAny* dataPtr = aPackage.Ptr1(); |
129 TAny* dataPtr = aPackage.Ptr1(); |
126 TAny* dataPtr2 = aPackage.Ptr2(); |
130 TAny* dataPtr2 = aPackage.Ptr2(); |
185 // In case the request was ongoing, continue.. |
188 // In case the request was ongoing, continue.. |
186 if ( CSatTsy::ESatReqHandleUnknown != reqHandle ) |
189 if ( CSatTsy::ESatReqHandleUnknown != reqHandle ) |
187 { |
190 { |
188 if ( KErrNone == aResult && iconLength ) |
191 if ( KErrNone == aResult && iconLength ) |
189 { |
192 { |
190 TFLOGSTRING2("CSAT: CSatIconTsy::CompleteGetIcon,\ |
193 OstTraceDef1(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSATICONTSY_COMPLETEGETICON_2, "CSAT: CSatIconTsy::CompleteGetIcon, Icon data length: %d", iconLength); |
191 Icon data length: %d", iconLength); |
|
192 // Check the size... |
194 // Check the size... |
193 if ( iIconData->MaxLength() >= iconLength ) |
195 if ( iIconData->MaxLength() >= iconLength ) |
194 { |
196 { |
195 iIconData->Copy( icon->Ptr(), iconLength ); |
197 iIconData->Copy( icon->Ptr(), iconLength ); |
196 TFLOGSTRING2("CSAT: CSatIconTsy::CompleteGetIcon,\ |
198 OstTraceDef1(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSATICONTSY_COMPLETEGETICON_3, "CSAT: CSatIconTsy::CompleteGetIcon, iIconData length: %d", iIconData->Length() ); |
197 iIconData length: %d", iIconData->Length() ); |
|
198 iRecordData.Copy( *iIconData ); |
199 iRecordData.Copy( *iIconData ); |
199 } |
200 } |
200 else // Data is too big for client's buffer |
201 else // Data is too big for client's buffer |
201 { |
202 { |
202 TFLOGSTRING("CSAT: CSatIconTsy::CompleteGetIcon,\ |
203 OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSATICONTSY_COMPLETEGETICON_4, "CSAT: CSatIconTsy::CompleteGetIcon, Icon data length exceeded"); |
203 Icon data length exceeded"); |
|
204 aResult = KErrOverflow; |
204 aResult = KErrOverflow; |
205 iIconData->Zero(); |
205 iIconData->Zero(); |
206 } |
206 } |
207 } |
207 } |
208 else |
208 else |
209 { |
209 { |
210 TFLOGSTRING("CSAT: CSatIconTsy::CompleteGetIcon,\ |
210 OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSATICONTSY_COMPLETEGETICON_5, "CSAT: CSatIconTsy::CompleteGetIcon, Error occured in LSAT, or Icon length is 0"); |
211 Error occured in LSAT, or Icon length is 0"); |
|
212 // Reset the length |
211 // Reset the length |
213 iIconData->Zero(); |
212 iIconData->Zero(); |
214 } |
213 } |
215 |
214 |
216 iIconData = NULL; |
215 iIconData = NULL; |
227 ( |
226 ( |
228 CSatDataPackage* aDataPackage, |
227 CSatDataPackage* aDataPackage, |
229 TInt aResult |
228 TInt aResult |
230 ) |
229 ) |
231 { |
230 { |
232 TFLOGSTRING("CSAT: CSatIconTsy::CompleteGetImageInstance"); |
231 OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSATICONTSY_COMPLETEGETIMAGEINSTANCE_1, "CSAT: CSatIconTsy::CompleteGetImageInstance"); |
233 TPtrC8* icon = NULL; |
232 TPtrC8* icon = NULL; |
234 TDes8* info; |
233 TDes8* info; |
235 |
234 |
236 // Unpack parameters |
235 // Unpack parameters |
237 aDataPackage->UnPackData( &icon, &info ); |
236 aDataPackage->UnPackData( &icon, &info ); |
248 if ( KErrNone == aResult && iconLength > 0 ) |
247 if ( KErrNone == aResult && iconLength > 0 ) |
249 { |
248 { |
250 // Check the size.... |
249 // Check the size.... |
251 if ( iIconData->MaxLength() >= iconLength ) |
250 if ( iIconData->MaxLength() >= iconLength ) |
252 { |
251 { |
253 TFLOGSTRING2("CSAT: CSatIconTsy::CompleteGetImageInstance,\ |
252 OstTraceDef1(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSATICONTSY_COMPLETEGETIMAGEINSTANCE_2, "CSAT: CSatIconTsy::CompleteGetImageInstance, Icon length: %d", iconLength); |
254 Icon length: %d", iconLength); |
|
255 // Icon body |
253 // Icon body |
256 if( info->Length() == KIconInfoLength ) |
254 if( info->Length() == KIconInfoLength ) |
257 { |
255 { |
258 TInt colorCoding = iRecordData[ KImageCodingSchemeByteNr + |
256 TInt colorCoding = iRecordData[ KImageCodingSchemeByteNr + |
259 ( iImageInstanceNoInRecord - 1 ) * |
257 ( iImageInstanceNoInRecord - 1 ) * |
260 KImageInstanceFileLength ]; |
258 KImageInstanceFileLength ]; |
261 // There is difference in the header length |
259 // There is difference in the header length |
262 // between the color and b&w icons |
260 // between the color and b&w icons |
263 if ( RSat::KBasic == colorCoding ) |
261 if ( RSat::KBasic == colorCoding ) |
264 { |
262 { |
265 TFLOGSTRING("CSAT: CSatIconTsy::\ |
263 OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSATICONTSY_COMPLETEGETIMAGEINSTANCE_3, "CSAT: CSatIconTsy::CompleteGetImageInstance,B&W"); |
266 CompleteGetImageInstance,B&W"); |
|
267 iIconData->Copy( ( *info ).Mid( 0, 2) ); |
264 iIconData->Copy( ( *info ).Mid( 0, 2) ); |
268 } |
265 } |
269 else |
266 else |
270 { |
267 { |
271 iIconData->Copy( *info ); |
268 iIconData->Copy( *info ); |
279 iIconData->Copy( *icon ); |
276 iIconData->Copy( *icon ); |
280 } |
277 } |
281 } |
278 } |
282 else // Data is too big for client's buffer |
279 else // Data is too big for client's buffer |
283 { |
280 { |
284 TFLOGSTRING("CSAT: CSatIconTsy::CompleteGetImageInstance,\ |
281 OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSATICONTSY_COMPLETEGETIMAGEINSTANCE_4, "CSAT: CSatIconTsy::CompleteGetImageInstance, Icon length exceeded"); |
285 Icon length exceeded"); |
|
286 aResult = KErrOverflow; |
282 aResult = KErrOverflow; |
287 iIconData->Zero(); |
283 iIconData->Zero(); |
288 } |
284 } |
289 } |
285 } |
290 else |
286 else |
291 { |
287 { |
292 TFLOGSTRING("CSAT: CSatIconTsy::CompleteGetImageInstance,\ |
288 OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSATICONTSY_COMPLETEGETIMAGEINSTANCE_5, "CSAT: CSatIconTsy::CompleteGetImageInstance, Error occured in LSAT or Icon length is 0"); |
293 Error occured in LSAT or Icon length is 0"); |
|
294 // Reset the length |
289 // Reset the length |
295 iIconData->Zero(); |
290 iIconData->Zero(); |
296 } |
291 } |
297 |
292 |
298 iIconData = NULL; |
293 iIconData = NULL; |
333 { |
328 { |
334 iIconData->Copy( *clut ); |
329 iIconData->Copy( *clut ); |
335 } |
330 } |
336 else // Data is too big for client's buffer |
331 else // Data is too big for client's buffer |
337 { |
332 { |
338 TFLOGSTRING("CSAT: CSatIconTsy::CompleteGetClut,\ |
333 OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSATICONTSY_COMPLETEGETCLUT_2, "CSAT: CSatIconTsy::CompleteGetClut, Clut length exceeded"); |
339 Clut length exceeded"); |
|
340 aResult = KErrOverflow; |
334 aResult = KErrOverflow; |
341 iIconData->Zero(); |
335 iIconData->Zero(); |
342 } |
336 } |
343 } |
337 } |
344 else |
338 else |
345 { |
339 { |
346 TFLOGSTRING("CSAT: CSatIconTsy::CompleteGetClut,\ |
340 OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSATICONTSY_COMPLETEGETCLUT_3, "CSAT: CSatIconTsy::CompleteGetClut, Error occured in LSAT or Icon length is 0"); |
347 Error occured in LSAT or Icon length is 0"); |
|
348 // Reset the length |
341 // Reset the length |
349 iIconData->Zero(); |
342 iIconData->Zero(); |
350 } |
343 } |
351 |
344 |
352 iIconData = NULL; |
345 iIconData = NULL; |
367 const TTsyReqHandle aTsyReqHandle, |
360 const TTsyReqHandle aTsyReqHandle, |
368 TUint8* aRecordNumber, |
361 TUint8* aRecordNumber, |
369 RSat::TIcon* aIconEf |
362 RSat::TIcon* aIconEf |
370 ) |
363 ) |
371 { |
364 { |
372 TFLOGSTRING("CSAT: CSatIconTsy::GetIconL"); |
365 OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSATICONTSY_GETICONL_1, "CSAT: CSatIconTsy::GetIconL"); |
373 TInt ret = KErrNone; |
366 TInt ret = KErrNone; |
374 |
367 |
375 iImageInstanceNoInRecord = 0; |
368 iImageInstanceNoInRecord = 0; |
376 |
369 |
377 // Get possibly existing request handle |
370 // Get possibly existing request handle |
379 TsyReqHandle( CSatTsy::ESatGetIconReqType ); |
372 TsyReqHandle( CSatTsy::ESatGetIconReqType ); |
380 |
373 |
381 // In case the request was ongoing, complete right away.. |
374 // In case the request was ongoing, complete right away.. |
382 if ( CSatTsy::ESatReqHandleUnknown != reqHandle ) |
375 if ( CSatTsy::ESatReqHandleUnknown != reqHandle ) |
383 { |
376 { |
384 TFLOGSTRING("CSAT: CSatIcon::GetIconL, KErrServerBusy"); |
377 OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSATICONTSY_GETICONL_2, "CSAT: CSatIcon::GetIconL, KErrServerBusy"); |
385 iSatTsy->ReqCompleted( aTsyReqHandle, KErrServerBusy); |
378 iSatTsy->ReqCompleted( aTsyReqHandle, KErrServerBusy); |
386 } |
379 } |
387 else |
380 else |
388 { |
381 { |
389 // Save the request handle |
382 // Save the request handle |
446 const TTsyReqHandle aTsyReqHandle, |
439 const TTsyReqHandle aTsyReqHandle, |
447 TDesC8* aInstanceInfo, |
440 TDesC8* aInstanceInfo, |
448 TDes8* aInstance |
441 TDes8* aInstance |
449 ) |
442 ) |
450 { |
443 { |
451 TFLOGSTRING("CSAT: CSatIconTsy::GetImageInstanceL"); |
444 OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSATICONTSY_GETIMAGEINSTANCEL_1, "CSAT: CSatIconTsy::GetImageInstanceL"); |
452 TInt ret = KErrNone; |
445 TInt ret = KErrNone; |
453 |
446 |
454 // Get possibly existing request handle |
447 // Get possibly existing request handle |
455 TTsyReqHandle reqHandle = iSatTsy->GetSatReqHandleStore()-> |
448 TTsyReqHandle reqHandle = iSatTsy->GetSatReqHandleStore()-> |
456 TsyReqHandle( CSatTsy::ESatGetImageInstanceReqType ); |
449 TsyReqHandle( CSatTsy::ESatGetImageInstanceReqType ); |
457 |
450 |
458 // In case the request was ongoing, complete right away.. |
451 // In case the request was ongoing, complete right away.. |
459 if ( CSatTsy::ESatReqHandleUnknown != reqHandle ) |
452 if ( CSatTsy::ESatReqHandleUnknown != reqHandle ) |
460 { |
453 { |
461 TFLOGSTRING("CSAT: CSatIcon::GetImageInstanceL, KErrServerBusy"); |
454 OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSATICONTSY_GETIMAGEINSTANCEL_2, "CSAT: CSatIcon::GetImageInstanceL, KErrServerBusy"); |
462 iSatTsy->ReqCompleted( aTsyReqHandle, KErrServerBusy); |
455 iSatTsy->ReqCompleted( aTsyReqHandle, KErrServerBusy); |
463 } |
456 } |
464 else |
457 else |
465 { |
458 { |
466 TInt iconNumber = iRecordData[0]; |
459 TInt iconNumber = iRecordData[0]; |
532 const TTsyReqHandle aTsyReqHandle, |
525 const TTsyReqHandle aTsyReqHandle, |
533 RSat::TInstanceNumberAndOffset* /*aNumberAndOffset*/, |
526 RSat::TInstanceNumberAndOffset* /*aNumberAndOffset*/, |
534 TDes8* aClut |
527 TDes8* aClut |
535 ) |
528 ) |
536 { |
529 { |
537 TFLOGSTRING("CSAT: CSatIconTsy::GetClutL"); |
530 OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSATICONTSY_GETCLUTL_1, "CSAT: CSatIconTsy::GetClutL"); |
538 TInt ret = KErrNone; |
531 TInt ret = KErrNone; |
539 |
532 |
540 // Get possibly existing request handle |
533 // Get possibly existing request handle |
541 TTsyReqHandle reqHandle = iSatTsy->GetSatReqHandleStore()-> |
534 TTsyReqHandle reqHandle = iSatTsy->GetSatReqHandleStore()-> |
542 TsyReqHandle( CSatTsy::ESatGetImageInstanceReqType ); |
535 TsyReqHandle( CSatTsy::ESatGetImageInstanceReqType ); |
543 |
536 |
544 // In case the request was ongoing, complete right away.. |
537 // In case the request was ongoing, complete right away.. |
545 if ( CSatTsy::ESatReqHandleUnknown != reqHandle ) |
538 if ( CSatTsy::ESatReqHandleUnknown != reqHandle ) |
546 { |
539 { |
547 TFLOGSTRING("CSAT: CSatIcon::GetClutL : KErrServerBusy"); |
540 OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSATICONTSY_GETCLUTL_2, "CSAT: CSatIcon::GetClutL : KErrServerBusy"); |
548 iSatTsy->ReqCompleted( aTsyReqHandle, KErrServerBusy); |
541 iSatTsy->ReqCompleted( aTsyReqHandle, KErrServerBusy); |
549 } |
542 } |
550 else |
543 else |
551 { |
544 { |
552 // Save the request handle |
545 // Save the request handle |