1 // Copyright (c) 2006-2010 Nokia Corporation and/or its subsidiary(-ies). |
1 // Copyright (c) 2006-2009 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". |
19 |
19 |
20 |
20 |
21 |
21 |
22 |
22 |
23 //INCLUDES |
23 //INCLUDES |
24 |
|
25 #include "OstTraceDefinitions.h" |
|
26 #ifdef OST_TRACE_COMPILER_IN_USE |
|
27 #include "csatcctsyTraces.h" |
|
28 #endif |
|
29 |
|
30 #include "etelsat.h" // SAT specific Etel definitions |
24 #include "etelsat.h" // SAT specific Etel definitions |
31 #include "CSatDataPackage.h" // Parameter packing |
25 #include "CSatDataPackage.h" // Parameter packing |
32 #include "CSatCCTsy.h" // Class header |
26 #include "CSatCCTsy.h" // Class header |
33 #include "CSatTsy.h" // SAT TSY general class |
27 #include "CSatTsy.h" // SAT TSY general class |
34 #include "CSatNotificationsTsy.h" // SAT TSY Notifications class |
28 #include "CSatNotificationsTsy.h" // SAT TSY Notifications class |
35 #include "cmmmessagemanagerbase.h" // Message manager class for forwarding req. |
29 #include "cmmmessagemanagerbase.h" // Message manager class for forwarding req. |
|
30 #include "TfLogger.h" // For TFLOGSTRING |
36 #include "msattsy_ipcdefs.h" // Sat Tsy specific request types |
31 #include "msattsy_ipcdefs.h" // Sat Tsy specific request types |
37 #include "TSatUtility.h" // Utility class |
32 #include "TSatUtility.h" // Utility class |
38 #include "TTlv.h" // TTlv class |
33 #include "TTlv.h" // TTlv class |
39 |
34 |
40 |
35 |
47 ( |
42 ( |
48 CSatTsy* aSatTsy, |
43 CSatTsy* aSatTsy, |
49 CSatNotificationsTsy* aNotificationsTsy |
44 CSatNotificationsTsy* aNotificationsTsy |
50 ) |
45 ) |
51 { |
46 { |
52 OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSATCCTSY_NEWL_1, "CSAT: CSatCCTsy::NewL"); |
47 TFLOGSTRING("CSAT: CSatCCTsy::NewL"); |
53 CSatCCTsy* const satCcTsy = new ( ELeave ) CSatCCTsy( aNotificationsTsy ); |
48 CSatCCTsy* const satCcTsy = new ( ELeave ) CSatCCTsy( aNotificationsTsy ); |
54 CleanupStack::PushL( satCcTsy ); |
49 CleanupStack::PushL( satCcTsy ); |
55 satCcTsy->iSatTsy = aSatTsy; |
50 satCcTsy->iSatTsy = aSatTsy; |
56 satCcTsy->ConstructL(); |
51 satCcTsy->ConstructL(); |
57 CleanupStack::Pop( satCcTsy ); |
52 CleanupStack::Pop( satCcTsy ); |
58 OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSATCCTSY_NEWL_2, "CSAT: CSatCCTsy::NewL, end of method"); |
53 TFLOGSTRING("CSAT: CSatCCTsy::NewL, end of method"); |
59 return satCcTsy; |
54 return satCcTsy; |
60 } |
55 } |
61 |
56 |
62 // ----------------------------------------------------------------------------- |
57 // ----------------------------------------------------------------------------- |
63 // CSatCCTsy::~CSatCCTsy |
58 // CSatCCTsy::~CSatCCTsy |
83 void CSatCCTsy::ConstructL |
78 void CSatCCTsy::ConstructL |
84 ( |
79 ( |
85 //None |
80 //None |
86 ) |
81 ) |
87 { |
82 { |
88 OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSATCCTSY_CONSTRUCTL_1, "CSAT: CSatCCTsy::ConstructL\n" ); |
83 TFLOGSTRING("CSAT: CSatCCTsy::ConstructL\n" ); |
89 // Register. |
84 // Register. |
90 iSatTsy->MessageManager()->RegisterTsyObject( |
85 iSatTsy->MessageManager()->RegisterTsyObject( |
91 CMmMessageManagerBase::ESatCCTsyObjType, this ); |
86 CMmMessageManagerBase::ESatCCTsyObjType, this ); |
92 iBearerData.Zero(); |
87 iBearerData.Zero(); |
93 // Initialize to false |
88 // Initialize to false |
120 ( |
115 ( |
121 CSatDataPackage* aDataPackage, |
116 CSatDataPackage* aDataPackage, |
122 TInt /*aResult*/ |
117 TInt /*aResult*/ |
123 ) |
118 ) |
124 { |
119 { |
125 OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSATCCTSY_COMPLETEBEARERCAPABILITY_1, "CSAT: CSatCCTsy::CompleteBearerCapability"); |
120 TFLOGSTRING("CSAT: CSatCCTsy::CompleteBearerCapability"); |
126 TPtrC8* bearerData = NULL; |
121 TPtrC8* bearerData = NULL; |
127 |
122 |
128 // Unpack parameters |
123 // Unpack parameters |
129 aDataPackage->UnPackData( &bearerData ); |
124 aDataPackage->UnPackData( &bearerData ); |
130 iBearerData.Copy( *bearerData ); |
125 iBearerData.Copy( *bearerData ); |
137 void CSatCCTsy::CreateEnvelopeL |
132 void CSatCCTsy::CreateEnvelopeL |
138 ( |
133 ( |
139 CSatDataPackage* aDataPackage |
134 CSatDataPackage* aDataPackage |
140 ) |
135 ) |
141 { |
136 { |
142 OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSATCCTSY_CREATEENVELOPEL_1, "CSAT: CSatCCTsy::CreateEnvelope"); |
137 TFLOGSTRING("CSAT: CSatCCTsy::CreateEnvelope"); |
143 TCCInfo* ccInfo; |
138 TCCInfo* ccInfo; |
144 |
139 |
145 // Unpack parameters |
140 // Unpack parameters |
146 aDataPackage->UnPackData( &ccInfo ); |
141 aDataPackage->UnPackData( &ccInfo ); |
147 |
142 |
162 CreateUSSDEnvelopeL( ccInfo ); |
157 CreateUSSDEnvelopeL( ccInfo ); |
163 break; |
158 break; |
164 } |
159 } |
165 default: |
160 default: |
166 { |
161 { |
167 OstTraceDef1(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSATCCTSY_CREATEENVELOPEL_2, "CSAT: CSatCCTsy::CreateEnvelope, Unidentified tag: %d", ccInfo->iTag ); |
162 TFLOGSTRING2("CSAT: CSatCCTsy::CreateEnvelope,\ |
|
163 Unidentified tag: %d", ccInfo->iTag ); |
168 } |
164 } |
169 } |
165 } |
170 } |
166 } |
171 |
167 |
172 // ----------------------------------------------------------------------------- |
168 // ----------------------------------------------------------------------------- |
177 void CSatCCTsy::CheckIfAlphaIdPresent |
173 void CSatCCTsy::CheckIfAlphaIdPresent |
178 ( |
174 ( |
179 CSatDataPackage* aDataPackage |
175 CSatDataPackage* aDataPackage |
180 ) |
176 ) |
181 { |
177 { |
182 OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSATCCTSY_CHECKIFALPHAIDPRESENT_1, "CSAT: CSatCCTsy::CheckIfAlphaIdPresent"); |
178 TFLOGSTRING("CSAT: CSatCCTsy::CheckIfAlphaIdPresent"); |
183 TDesC8* atkData; |
179 TDesC8* atkData; |
184 RSat::TControlResult* result; |
180 RSat::TControlResult* result; |
185 |
181 |
186 // Unpack parameters |
182 // Unpack parameters |
187 aDataPackage->UnPackData( &atkData, &result ); |
183 aDataPackage->UnPackData( &atkData, &result ); |
269 // identifier is not given or it is NULL, client will not |
265 // identifier is not given or it is NULL, client will not |
270 // be notified. Specs leaves this open so this decision |
266 // be notified. Specs leaves this open so this decision |
271 // can be made. |
267 // can be made. |
272 if ( 0 != alphaIdLength ) |
268 if ( 0 != alphaIdLength ) |
273 { |
269 { |
274 OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSATCCTSY_CHECKIFALPHAIDPRESENT_2, "CSAT: CSatCCTsy::CheckIfAlphaIdPresent. inform user."); |
270 TFLOGSTRING("CSAT: CSatCCTsy::CheckIfAlphaIdPresent.\ |
|
271 inform user."); |
275 |
272 |
276 TPtrC8 sourceString; |
273 TPtrC8 sourceString; |
277 sourceString.Set( ( *atkData ).Mid( index + |
274 sourceString.Set( ( *atkData ).Mid( index + |
278 lengthOfLength, alphaIdLength ) ); |
275 lengthOfLength, alphaIdLength ) ); |
279 |
276 |
284 iNotificationsTsy->NotifyClientForAlphaId( alphaId, |
281 iNotificationsTsy->NotifyClientForAlphaId( alphaId, |
285 *result ); |
282 *result ); |
286 } |
283 } |
287 else |
284 else |
288 { |
285 { |
289 OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSATCCTSY_CHECKIFALPHAIDPRESENT_3, "CSAT: CSatCCTsy::CheckIfAlphaIdPresent. AlphaID length: 0."); |
286 TFLOGSTRING("CSAT: CSatCCTsy::CheckIfAlphaIdPresent.\ |
|
287 AlphaID length: 0."); |
290 } |
288 } |
291 |
289 |
292 // Update index |
290 // Update index |
293 index += alphaIdLength + lengthOfLength; |
291 index += alphaIdLength + lengthOfLength; |
294 break; |
292 break; |
295 } |
293 } |
296 default: |
294 default: |
297 { |
295 { |
298 OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSATCCTSY_CHECKIFALPHAIDPRESENT_4, "CSAT: CSatCCTsy::CheckIfAlphaIdPresent Unknown tag."); |
296 TFLOGSTRING("CSAT: CSatCCTsy::CheckIfAlphaIdPresent\ |
|
297 Unknown tag."); |
299 index = envLength; |
298 index = envLength; |
300 break; |
299 break; |
301 } |
300 } |
302 } |
301 } |
303 } |
302 } |
304 } |
303 } |
305 } |
304 } |
306 else |
305 else |
307 { |
306 { |
308 OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSATCCTSY_CHECKIFALPHAIDPRESENT_5, "CSAT: CSatCCTsy::CheckIfAlphaIdPresent. Input data missing!"); |
307 TFLOGSTRING("CSAT: CSatCCTsy::CheckIfAlphaIdPresent. \ |
|
308 Input data missing!"); |
309 } |
309 } |
310 } |
310 } |
311 |
311 |
312 // ----------------------------------------------------------------------------- |
312 // ----------------------------------------------------------------------------- |
313 // CSatCCTsy::CompleteCCEventL |
313 // CSatCCTsy::CompleteCCEventL |
402 void CSatCCTsy::SetTonNpiForSS |
402 void CSatCCTsy::SetTonNpiForSS |
403 ( |
403 ( |
404 const TUint8 aTonNpi |
404 const TUint8 aTonNpi |
405 ) |
405 ) |
406 { |
406 { |
407 OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSATCCTSY_SETTONNPIFORSS_1, "CSAT: CSatCCTsy::SetTonNpiForSS"); |
407 TFLOGSTRING("CSAT: CSatCCTsy::SetTonNpiForSS"); |
408 iTonNpiForSS = aTonNpi; |
408 iTonNpiForSS = aTonNpi; |
409 iTonNpiPresent = ETrue; |
409 iTonNpiPresent = ETrue; |
410 } |
410 } |
411 |
411 |
412 // ----------------------------------------------------------------------------- |
412 // ----------------------------------------------------------------------------- |
417 void CSatCCTsy::SetUssdStatus |
417 void CSatCCTsy::SetUssdStatus |
418 ( |
418 ( |
419 CSatDataPackage* aDataPackage |
419 CSatDataPackage* aDataPackage |
420 ) |
420 ) |
421 { |
421 { |
422 OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSATCCTSY_SETUSSDSTATUS_1, "CSAT: CSatCCTsy::SetUssdStatus." ); |
422 TFLOGSTRING("CSAT: CSatCCTsy::SetUssdStatus." ); |
423 // Unpack parameters |
423 // Unpack parameters |
424 aDataPackage->UnPackData( iUssdTlvSupported ); |
424 aDataPackage->UnPackData( iUssdTlvSupported ); |
425 } |
425 } |
426 |
426 |
427 // ----------------------------------------------------------------------------- |
427 // ----------------------------------------------------------------------------- |
434 void CSatCCTsy::StoreAddressForCC |
434 void CSatCCTsy::StoreAddressForCC |
435 ( |
435 ( |
436 const TDesC8& aAddress |
436 const TDesC8& aAddress |
437 ) |
437 ) |
438 { |
438 { |
439 OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSATCCTSY_STOREADDRESSFORCC_1, "CSAT: CSatCCTsy::StoreAddressForCC"); |
439 TFLOGSTRING("CSAT: CSatCCTsy::StoreAddressForCC"); |
440 |
440 |
441 if ( NULL == &aAddress ) |
441 if ( NULL == &aAddress ) |
442 { |
442 { |
443 iProactiveCommandAddress.Zero(); |
443 iProactiveCommandAddress.Zero(); |
444 OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSATCCTSY_STOREADDRESSFORCC_2, "CSAT: CSatCCTsy::StoreAddressForCC, address cleared"); |
444 TFLOGSTRING("CSAT: CSatCCTsy::StoreAddressForCC, address cleared"); |
445 } |
445 } |
446 else |
446 else |
447 { |
447 { |
448 iProactiveCommandAddress.Copy( aAddress ); |
448 iProactiveCommandAddress.Copy( aAddress ); |
449 |
449 |
454 if ( '+' == iProactiveCommandAddress[0] ) |
454 if ( '+' == iProactiveCommandAddress[0] ) |
455 { |
455 { |
456 iProactiveCommandAddress.Delete( 0, 1 ); |
456 iProactiveCommandAddress.Delete( 0, 1 ); |
457 } |
457 } |
458 } |
458 } |
459 OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSATCCTSY_STOREADDRESSFORCC_3, "CSAT: CSatCCTsy::StoreAddressForCC, Address stored"); |
459 TFLOGSTRING("CSAT: CSatCCTsy::StoreAddressForCC, Address stored"); |
460 } |
460 } |
461 } |
461 } |
462 |
462 |
463 // ----------------------------------------------------------------------------- |
463 // ----------------------------------------------------------------------------- |
464 // CSatCCTsy::CreateCallEnvelopeL |
464 // CSatCCTsy::CreateCallEnvelopeL |
468 void CSatCCTsy::CreateCallEnvelopeL |
468 void CSatCCTsy::CreateCallEnvelopeL |
469 ( |
469 ( |
470 const TCCInfo* aCCInfo |
470 const TCCInfo* aCCInfo |
471 ) |
471 ) |
472 { |
472 { |
473 OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSATCCTSY_CREATECALLENVELOPEL_1, "CSAT: CSatCCTsy::CreateCallEnvelopeL" ); |
473 TFLOGSTRING("CSAT: CSatCCTsy::CreateCallEnvelopeL" ); |
474 // Create envelope |
474 // Create envelope |
475 TTlv envelope; |
475 TTlv envelope; |
476 envelope.Begin( KBerTlvCallControlTag ); |
476 envelope.Begin( KBerTlvCallControlTag ); |
477 |
477 |
478 // Device identities |
478 // Device identities |
525 envelope.AddByte( static_cast<TUint8>( iBearerData.Length() ) ); |
525 envelope.AddByte( static_cast<TUint8>( iBearerData.Length() ) ); |
526 envelope.AddData( iBearerData ); |
526 envelope.AddData( iBearerData ); |
527 } |
527 } |
528 else |
528 else |
529 { |
529 { |
530 OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSATCCTSY_CREATECALLENVELOPEL_2, "CSAT: CSatCCTsy::CreateCallEnvelopeL, Bearer data length exceeded, data not added" ); |
530 TFLOGSTRING("CSAT: CSatCCTsy::CreateCallEnvelopeL,\ |
|
531 Bearer data length exceeded, data not added" ); |
531 } |
532 } |
532 } |
533 } |
533 |
534 |
534 // Add location information data |
535 // Add location information data |
535 iNotificationsTsy->AddLocationInformationToTlv( envelope ); |
536 iNotificationsTsy->AddLocationInformationToTlv( envelope ); |
559 void CSatCCTsy::CreateSSEnvelopeL |
560 void CSatCCTsy::CreateSSEnvelopeL |
560 ( |
561 ( |
561 const TCCInfo* aCCInfo |
562 const TCCInfo* aCCInfo |
562 ) |
563 ) |
563 { |
564 { |
564 OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSATCCTSY_CREATESSENVELOPEL_1, "CSAT: CSatCCTsy::CreateSSEnvelopeL" ); |
565 TFLOGSTRING("CSAT: CSatCCTsy::CreateSSEnvelopeL" ); |
565 // There is no TON and NPI in SS cc request. Information is part of the |
566 // There is no TON and NPI in SS cc request. Information is part of the |
566 // number string: Spec ETSI TS 122 030 v5.0.0 says that if number starts |
567 // number string: Spec ETSI TS 122 030 v5.0.0 says that if number starts |
567 // with +, TON is international and if it starts without it, it's unknown. |
568 // with +, TON is international and if it starts without it, it's unknown. |
568 // ( ATK isi spec mentions also possibility of no TON and NPI,but so far |
569 // ( ATK isi spec mentions also possibility of no TON and NPI,but so far |
569 // nothing found about it from ETSI specs. SS ISI spec mentions even more ) |
570 // nothing found about it from ETSI specs. SS ISI spec mentions even more ) |
691 void CSatCCTsy::CreateUSSDEnvelopeL |
692 void CSatCCTsy::CreateUSSDEnvelopeL |
692 ( |
693 ( |
693 const TCCInfo* aCCInfo |
694 const TCCInfo* aCCInfo |
694 ) |
695 ) |
695 { |
696 { |
696 OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSATCCTSY_CREATEUSSDENVELOPEL_1, "CSAT: CSatCCTsy::CreateUSSDEnvelopeL" ); |
697 TFLOGSTRING("CSAT: CSatCCTsy::CreateUSSDEnvelopeL" ); |
697 // Create USSD envelope |
698 // Create USSD envelope |
698 TTlv envelope; |
699 TTlv envelope; |
699 |
700 |
700 envelope.Begin( KBerTlvCallControlTag ); |
701 envelope.Begin( KBerTlvCallControlTag ); |
701 // Device identities |
702 // Device identities |
770 TBool CSatCCTsy::IsOnlyDigitsInUssd |
771 TBool CSatCCTsy::IsOnlyDigitsInUssd |
771 ( |
772 ( |
772 const TDesC8& aUSSDString |
773 const TDesC8& aUSSDString |
773 ) |
774 ) |
774 { |
775 { |
775 OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSATCCTSY_ISONLYDIGITSINUSSD_1, "CSAT: CSatCCTsy::IsOnlyDigitsInUssd." ); |
776 TFLOGSTRING("CSAT: CSatCCTsy::IsOnlyDigitsInUssd." ); |
776 // Unpack it |
777 // Unpack it |
777 TBuf8<KMaxUssdStringLengthInBytes> ussdString; |
778 TBuf8<KMaxUssdStringLengthInBytes> ussdString; |
778 TSatUtility::Packed7to8Unpacked( aUSSDString, ussdString ); |
779 TSatUtility::Packed7to8Unpacked( aUSSDString, ussdString ); |
779 TBool ret( ETrue ); |
780 TBool ret( ETrue ); |
780 |
781 |
801 TBool CSatCCTsy::HasProactiveOrigin |
802 TBool CSatCCTsy::HasProactiveOrigin |
802 ( |
803 ( |
803 const TDesC8& aAddress |
804 const TDesC8& aAddress |
804 ) |
805 ) |
805 { |
806 { |
806 OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSATCCTSY_HASPROACTIVEORIGIN_1, "CSAT: CSatCCTsy::HasProactiveOrigin"); |
807 TFLOGSTRING("CSAT: CSatCCTsy::HasProactiveOrigin"); |
807 TBool match( EFalse ); |
808 TBool match( EFalse ); |
808 |
809 |
809 if ( aAddress.Length() ) |
810 if ( aAddress.Length() ) |
810 { |
811 { |
811 // Check first if there is a + in the beginning of the given address |
812 // Check first if there is a + in the beginning of the given address |
812 if ( '+' == aAddress[0] ) |
813 if ( '+' == aAddress[0] ) |
813 { |
814 { |
814 // It means we need to drop the first character out from comparison |
815 // It means we need to drop the first character out from comparison |
815 if ( iProactiveCommandAddress == aAddress.Mid( 1 ) ) |
816 if ( iProactiveCommandAddress == aAddress.Mid( 1 ) ) |
816 { |
817 { |
817 OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSATCCTSY_HASPROACTIVEORIGIN_2, "CSAT: CSatCCTsy::HasProactiveOrigin, Match!"); |
818 TFLOGSTRING("CSAT: CSatCCTsy::HasProactiveOrigin, Match!"); |
818 match = ETrue; |
819 match = ETrue; |
819 } |
820 } |
820 } |
821 } |
821 // Otherwise we can use the whole string for checking |
822 // Otherwise we can use the whole string for checking |
822 else if ( iProactiveCommandAddress == aAddress ) |
823 else if ( iProactiveCommandAddress == aAddress ) |
823 { |
824 { |
824 OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSATCCTSY_HASPROACTIVEORIGIN_3, "CSAT: CSatCCTsy::HasProactiveOrigin, Match!"); |
825 TFLOGSTRING("CSAT: CSatCCTsy::HasProactiveOrigin, Match!"); |
825 match = ETrue; |
826 match = ETrue; |
826 } |
827 } |
827 } |
828 } |
828 else |
829 else |
829 { |
830 { |
830 OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSATCCTSY_HASPROACTIVEORIGIN_4, "CSAT: CSatCCTsy::HasProactiveOrigin, Invalid input address"); |
831 TFLOGSTRING("CSAT: CSatCCTsy::HasProactiveOrigin, \ |
|
832 Invalid input address"); |
831 } |
833 } |
832 |
834 |
833 return match; |
835 return match; |
834 } |
836 } |
835 |
837 |