iaupdate/IAD/firmwareupdate/src/iaupdatefwsyncutil.cpp
changeset 77 d1838696558c
parent 29 26b6f0522fd8
equal deleted inserted replaced
75:2d2d25361590 77:d1838696558c
    71  void TUtil::StrCopy( TDes& aTarget, const TDesC& aSource )
    71  void TUtil::StrCopy( TDes& aTarget, const TDesC& aSource )
    72     {
    72     {
    73 	aTarget.Copy( aSource.Left( aTarget.MaxLength() ) );
    73 	aTarget.Copy( aSource.Left( aTarget.MaxLength() ) );
    74     }
    74     }
    75 
    75 
    76 // ----------------------------------------------------------------------------
       
    77 // StrAppend
       
    78 // ----------------------------------------------------------------------------
       
    79 //
       
    80 void TUtil::StrAppend( TDes& aTarget, const TDesC& aSource )
       
    81     {
       
    82     if ( aSource.Length() == 0 )
       
    83     	{
       
    84     	return;
       
    85     	}
       
    86     TInt free = aTarget.MaxLength() - aTarget.Length();
       
    87 	if ( aSource.Length() <= free )
       
    88 		{
       
    89 		aTarget.Append( aSource );
       
    90 		}
       
    91     }
       
    92 
       
    93 // ----------------------------------------------------------------------------
       
    94 // StrInsert
       
    95 // ----------------------------------------------------------------------------
       
    96 //
       
    97   void TUtil::StrInsert( TDes& aTarget, const TDesC& aSource )
       
    98     {
       
    99 	TInt free = aTarget.MaxLength() - aTarget.Length();
       
   100 	if (aSource.Length() <= free)
       
   101 		{
       
   102 		aTarget.Insert(0, aSource);
       
   103 		}
       
   104     }
       
   105 
    76 
   106 // ----------------------------------------------------------------------------
    77 // ----------------------------------------------------------------------------
   107 // StrToInt
    78 // StrToInt
   108 // ----------------------------------------------------------------------------
    79 // ----------------------------------------------------------------------------
   109 //
    80 //
   112     TLex lex( aText );
    83     TLex lex( aText );
   113     TInt err = lex.Val( aNum ); 
    84     TInt err = lex.Val( aNum ); 
   114 	return err;
    85 	return err;
   115 	}
    86 	}
   116 
    87 
   117 //
    88 
   118 //-----------------------------------------------------------------------------
    89 
   119 // IsEmpty
    90 
   120 // Function returns ETrue if string only contains white space
       
   121 // or has no characters.
       
   122 //-----------------------------------------------------------------------------
       
   123 //
       
   124 TBool TUtil::IsEmpty( const TDesC& aText )
       
   125 	{
       
   126 	TInt len = aText.Length();
       
   127 	for ( TInt index=0; index < len; index++ )
       
   128 		{
       
   129 		TChar character = aText[index];
       
   130 		if ( !character.IsSpace() )
       
   131 			{
       
   132 			return EFalse;
       
   133 			}
       
   134 		}
       
   135 	return ETrue;
       
   136 	}
       
   137 
       
   138 // -----------------------------------------------------------------------------
       
   139 // SyncTimeLC
       
   140 // -----------------------------------------------------------------------------
       
   141 //
       
   142 HBufC* TUtil::SyncTimeLC( TTime aLastSync )
       
   143 	{
       
   144 	FLOG( "[OMADM] TUtil::SyncTimeLC" );
       
   145 	
       
   146 	TTime homeTime = ConvertUniversalToHomeTime( aLastSync );
       
   147 	
       
   148 	HBufC* hBuf = HBufC::NewLC( KBufSize255 );
       
   149 	TPtr ptr = hBuf->Des();
       
   150 
       
   151 	if ( IsToday( homeTime ) )
       
   152 		{
       
   153 		FLOG( "[OMADM] TUtil::SyncTimeLC time" );
       
   154 		
       
   155 		TBuf<KBufSize> timeFormat;
       
   156 		/*HBufC* buf = StringLoader::LoadLC( R_QTN_TIME_USUAL_WITH_ZERO );
       
   157 		TUtil::StrCopy( timeFormat, *buf );
       
   158 		CleanupStack::PopAndDestroy( buf );
       
   159 		homeTime.FormatL( ptr, timeFormat );*/
       
   160 		
       
   161 		FLOG( "[OMADM] TUtil::SyncTimeLC time done" );
       
   162 		}
       
   163 	else
       
   164 		{
       
   165 		FLOG( "[OMADM] TUtil::SyncTimeLC date" );
       
   166 		
       
   167 		TBuf<KBufSize> dateFormat;
       
   168         /*HBufC* buf = StringLoader::LoadLC( R_QTN_DATE_USUAL_WITH_ZERO );
       
   169         TUtil::StrCopy( dateFormat, *buf );
       
   170         CleanupStack::PopAndDestroy( buf );
       
   171 		homeTime.FormatL(ptr, dateFormat);*/
       
   172 		
       
   173 		FLOG( "[OMADM] TUtil::SyncTimeLC date done" );
       
   174 		}
       
   175     FLOG( "[OMADM] TUtil::SyncTimeLC Done" );
       
   176 	return hBuf;
       
   177 	}
       
   178 
       
   179 // -----------------------------------------------------------------------------
       
   180 // ConvertUniversalToHomeTime
       
   181 // -----------------------------------------------------------------------------
       
   182 //
       
   183 TTime TUtil::ConvertUniversalToHomeTime( const TTime& aUniversalTime )
       
   184     {
       
   185     TTime time( aUniversalTime );   // time stores UTC time.
       
   186 
       
   187     TLocale locale;
       
   188     TTimeIntervalSeconds universalTimeOffset( locale.UniversalTimeOffset() );
       
   189     
       
   190     // Add locale's universal time offset to universal time.
       
   191     time += universalTimeOffset;    // time stores Local Time.
       
   192 
       
   193     // If home daylight saving in effect, add one hour offset.
       
   194     if ( locale.QueryHomeHasDaylightSavingOn() )
       
   195         {
       
   196         TTimeIntervalHours daylightSaving(1);
       
   197         time += daylightSaving;
       
   198         }
       
   199 
       
   200     return time;
       
   201     }
       
   202 
       
   203 // -----------------------------------------------------------------------------
       
   204 // IsToDay
       
   205 // -----------------------------------------------------------------------------
       
   206 //
       
   207 TBool TUtil::IsToday(TTime aTime)
       
   208 	{
       
   209 	FLOG( "[OMADM] TUtil::IsToday" );
       
   210 	
       
   211 	TTime now;
       
   212 	now.HomeTime();
       
   213 	TInt day1 = now.DayNoInYear();
       
   214 	TInt day2 = aTime.DayNoInYear();
       
   215 	TTimeIntervalDays daysBetween = now.DaysFrom( aTime );
       
   216 	
       
   217 	if ( day1 != day2 )
       
   218 		{
       
   219 		FLOG( "[OMADM] TUtil::IsToday False 1" );
       
   220 		return EFalse;
       
   221 		}
       
   222 		
       
   223 	if ( daysBetween.Int() > 0 )
       
   224 		{
       
   225 		FLOG( "[OMADM] TUtil::IsToday False 2" );
       
   226 		return EFalse;
       
   227 		}
       
   228 
       
   229     FLOG( "[OMADM] TUtil::IsToday True" );
       
   230 	return ETrue; 
       
   231 	}
       
   232 
       
   233 
       
   234 // -----------------------------------------------------------------------------
       
   235 // TUtil::GetDateTextL
       
   236 // -----------------------------------------------------------------------------
       
   237 //
       
   238 void TUtil::GetDateTextL(TDes& /*aText*/, TTime aDateTime)
       
   239 	{
       
   240 	TTime homeTime = ConvertUniversalToHomeTime( aDateTime );
       
   241 	//HBufC* hBuf = StringLoader::LoadLC( R_QTN_DATE_USUAL_WITH_ZERO );
       
   242     //homeTime.FormatL( aText, *hBuf );
       
   243     //CleanupStack::PopAndDestroy( hBuf );
       
   244 	}
       
   245 
       
   246 
       
   247 // -----------------------------------------------------------------------------
       
   248 // TUtil::GetTimeTextL
       
   249 // -----------------------------------------------------------------------------
       
   250 //
       
   251 void TUtil::GetTimeTextL( TDes& /*aText*/, TTime aDateTime )
       
   252 	{
       
   253 	TTime homeTime = ConvertUniversalToHomeTime( aDateTime );
       
   254 	//HBufC* hBuf = StringLoader::LoadLC( R_QTN_TIME_USUAL_WITH_ZERO );
       
   255     //homeTime.FormatL( aText, *hBuf );
       
   256     //CleanupStack::PopAndDestroy( hBuf );
       
   257 	}
       
   258 
       
   259 
       
   260 // -----------------------------------------------------------------------------
       
   261 // TUtil::GetDateTimeTextL
       
   262 // -----------------------------------------------------------------------------
       
   263 //
       
   264 void TUtil::GetDateTimeTextL( TDes& aText, TTime aDateTime )
       
   265 	{
       
   266 	TDateTime dt = aDateTime.DateTime();
       
   267 	aText.Format(_L("%02d.%02d.%04d %02d:%02d:%02d"), dt.Day()+1,
       
   268 	                                                  dt.Month()+1,
       
   269 	                                                  dt.Year(),
       
   270 	                                                  dt.Hour(),
       
   271 	                                                  dt.Minute(),
       
   272 	                                                  dt.Second() );
       
   273 	}
       
   274 
       
   275 
       
   276 /*****************************************************************************
       
   277  * class TURIParser
       
   278  *****************************************************************************/
       
   279 
       
   280 // ----------------------------------------------------------------------------
       
   281 // Constructor
       
   282 // ----------------------------------------------------------------------------
       
   283 //
       
   284 TURIParser::TURIParser( const TDesC& aStr ) : iOriginalStr( aStr )
       
   285     {
       
   286     SkipHttp();
       
   287     }
       
   288 
       
   289 // ----------------------------------------------------------------------------
       
   290 // GetUriWithoutPort
       
   291 // URI format: "http://serveraddress/documentname/"
       
   292 // ----------------------------------------------------------------------------
       
   293 //
       
   294 void TURIParser::GetUriWithoutPort( TDes& aText )
       
   295 	{
       
   296 	aText = KNullDesC;
       
   297 	TPtrC http = ParseHttp();
       
   298 	TPtrC address = ParseAddress();
       
   299 	TPtrC document = ParseDocument();
       
   300 	TUtil::StrAppend( aText, http );
       
   301 	TUtil::StrAppend( aText, address );
       
   302 	
       
   303 	if (document.Length() > 0)
       
   304 		{
       
   305 		TUtil::StrAppend( aText, KSlash );
       
   306 		TUtil::StrAppend( aText, document );
       
   307 		}
       
   308 	else if ( iSlash )
       
   309 		{
       
   310 		TUtil::StrAppend( aText, KSlash );
       
   311 		}
       
   312 	}
       
   313 	
       
   314 // ----------------------------------------------------------------------------
       
   315 // GetURI
       
   316 // URI format: "http://serveraddress:port/documentname/"
       
   317 // ----------------------------------------------------------------------------
       
   318 //
       
   319 void TURIParser::GetUri( TDes& aText, const TInt aPort )
       
   320 	{
       
   321 	aText = KNullDesC;
       
   322 	TPtrC http = ParseHttp();
       
   323 	TPtrC address = ParseAddress();
       
   324 	TPtrC document = ParseDocument();
       
   325 	TUtil::StrAppend( aText, http );
       
   326 	TUtil::StrAppend( aText, address );
       
   327 	
       
   328 	TBuf<KBufSize32> buf;
       
   329 	buf.Num( aPort );
       
   330 	TUtil::StrAppend( aText, KColon );
       
   331 	TUtil::StrAppend( aText, buf );
       
   332 	
       
   333 	if ( document.Length() > 0 )
       
   334 		{
       
   335 		TUtil::StrAppend( aText, KSlash );
       
   336 		TUtil::StrAppend( aText, document );
       
   337 		}
       
   338 	else if ( iSlash )
       
   339 		{
       
   340 		TUtil::StrAppend( aText, KSlash );
       
   341 		}
       
   342 	}
       
   343 
       
   344 // ----------------------------------------------------------------------------
       
   345 // Port
       
   346 // ----------------------------------------------------------------------------
       
   347 //
       
   348 TInt TURIParser::Port()
       
   349 	{
       
   350 	TInt port = KErrNotFound;
       
   351 	
       
   352 	TInt err = ParsePort( port );
       
   353 	if ( err != KErrNone )
       
   354 		{
       
   355 		return KErrNotFound;
       
   356 		}
       
   357 	return port;
       
   358 	}
       
   359 
       
   360 // ----------------------------------------------------------------------------
       
   361 // DefaultPort
       
   362 // 
       
   363 // ----------------------------------------------------------------------------
       
   364 //
       
   365 TInt TURIParser::DefaultPort()
       
   366 	{
       
   367 	TInt pos = iOriginalStr.FindF( KHttpsHeader );
       
   368 	if ( pos != KErrNotFound )
       
   369 		{
       
   370 		return KDefaultHttpsPort;
       
   371 		}
       
   372 	return KDefaultHttpPort;
       
   373 	}
       
   374 
       
   375 // ----------------------------------------------------------------------------
       
   376 // SkipHttp
       
   377 // Set pointer to the end of "http://".
       
   378 // ----------------------------------------------------------------------------
       
   379 //
       
   380 void TURIParser::SkipHttp()
       
   381 	{
       
   382     TInt start = KErrNotFound;
       
   383     TInt end   = KErrNotFound;
       
   384     TStr str(iOriginalStr);
       
   385     
       
   386     GetHttpPos( start, end );
       
   387     
       
   388     if ( start != KErrNotFound )
       
   389     	{
       
   390     	iPtr.Set( str.Right( end + 1 ) );
       
   391     	}
       
   392     else
       
   393     	{
       
   394     	iPtr.Set( str.Right(0) );
       
   395     	}
       
   396 	}
       
   397 
       
   398 // ----------------------------------------------------------------------------
       
   399 // ParseHttp
       
   400 // 
       
   401 // ----------------------------------------------------------------------------
       
   402 //
       
   403 TPtrC TURIParser::ParseHttp()
       
   404 	{
       
   405     TInt start = KErrNotFound;
       
   406     TInt end   = KErrNotFound;
       
   407     
       
   408     GetHttpPos(start, end);
       
   409     
       
   410     if (start == KErrNotFound)
       
   411     	{
       
   412     	return TPtrC();
       
   413     	}
       
   414     
       
   415    	TStr str(iOriginalStr);
       
   416     return str.SubStr(start, end);
       
   417 	}
       
   418 
       
   419 // ----------------------------------------------------------------------------
       
   420 // GetHttpPos 
       
   421 // ----------------------------------------------------------------------------
       
   422 //
       
   423 void TURIParser::GetHttpPos( TInt& aStartPos, TInt& aEndPos )
       
   424 	{
       
   425 	aEndPos = KErrNotFound;
       
   426 	
       
   427 	aStartPos = iOriginalStr.FindF( KHttpHeader );
       
   428 	if ( aStartPos != KErrNotFound )
       
   429 		{
       
   430 		aEndPos = aStartPos + KHttpHeader().Length() - 1;
       
   431 		return;
       
   432 		}
       
   433 	
       
   434 	aStartPos = iOriginalStr.FindF( KHttpsHeader );
       
   435 	if ( aStartPos != KErrNotFound )
       
   436 		{
       
   437 		aEndPos = aStartPos + KHttpsHeader().Length() - 1;
       
   438 		return;
       
   439 		}
       
   440 	}
       
   441 
       
   442 // ----------------------------------------------------------------------------
       
   443 // ParseAddress
       
   444 // ----------------------------------------------------------------------------
       
   445 TPtrC TURIParser::ParseAddress()
       
   446 	{
       
   447 	const TChar KSlash('/');
       
   448 	const TChar KColon(':');
       
   449 	TStr str( iPtr );
       
   450     TInt firstSlash = str.Find( 0, KSlash );
       
   451 	TInt firstcolon = str.Find( 0, KColon );
       
   452 	TBool portFound = EFalse;
       
   453 	iSlash = EFalse;
       
   454 	if ( firstSlash != KErrNotFound ) 
       
   455 	    {
       
   456 		 iSlash = ETrue;
       
   457 	    }
       
   458 	if (firstcolon != KErrNotFound)
       
   459 		{
       
   460 		if ( firstSlash == KErrNotFound )
       
   461 			{
       
   462 			portFound = ETrue;
       
   463 			}
       
   464 		else if ( firstcolon < firstSlash )
       
   465 			{
       
   466 			portFound = ETrue;
       
   467 			}
       
   468 		}
       
   469     
       
   470 	if ( portFound )
       
   471 		{
       
   472 		// address is text before first colon
       
   473 		return str.Left( firstcolon - 1 );
       
   474 		}
       
   475 	else if (firstSlash != KErrNotFound)
       
   476 		{
       
   477 		// address is text before first slash
       
   478 		return str.Left( firstSlash - 1 );
       
   479 		}
       
   480 	else
       
   481 		{
       
   482 		// address is all text
       
   483 		return str.Right( 0 );
       
   484 		}
       
   485 	}
       
   486 
       
   487 // ----------------------------------------------------------------------------
       
   488 // ParseDocument
       
   489 // ----------------------------------------------------------------------------
       
   490 TPtrC TURIParser::ParseDocument()
       
   491 	{
       
   492 	const TChar KSlash('/');
       
   493 	
       
   494 	TStr str(iPtr);
       
   495     TInt firstSlash = str.Find( 0, KSlash );
       
   496     
       
   497 	if ( firstSlash != KErrNotFound )
       
   498 		{
       
   499 		// document is all text after first slash
       
   500 		return str.Right( firstSlash + 1 );
       
   501 		}
       
   502 	return TPtrC();
       
   503 	}
       
   504 	
       
   505 // ----------------------------------------------------------------------------
       
   506 // ParsePort
       
   507 // ----------------------------------------------------------------------------
       
   508 // 
       
   509 TInt TURIParser::ParsePort( TInt& aNumber )
       
   510 	{
       
   511 	TPtrC port = ParsePort();
       
   512 	if ( port.Length() == 0 )
       
   513 		{
       
   514 		return KErrNotFound;
       
   515 		}
       
   516 	return TUtil::StrToInt( port, aNumber );
       
   517 	}
       
   518 
       
   519 // ----------------------------------------------------------------------------
       
   520 // ParsePort
       
   521 // ----------------------------------------------------------------------------
       
   522 // 
       
   523 TPtrC TURIParser::ParsePort()
       
   524 	{
       
   525 	const TChar KSlash('/');
       
   526 	const TChar KColon(':');
       
   527 	
       
   528 	TStr str(iPtr);
       
   529     TInt firstSlash = str.Find( 0, KSlash );
       
   530 	TInt firstColon = str.Find( 0, KColon );
       
   531     
       
   532 	if ( firstSlash != KErrNotFound )
       
   533 		{
       
   534 		if ( firstColon != KErrNotFound && firstColon < firstSlash )
       
   535 			{
       
   536 		    // port number is text between colon and slash 
       
   537 		    return str.SubStrEx( firstColon, firstSlash );
       
   538 			}
       
   539 		}
       
   540 	else 
       
   541 		{
       
   542 		if ( firstColon != KErrNotFound )
       
   543 			{
       
   544 		    // port number is all text after colon 
       
   545 		    return str.Right(firstColon+1);
       
   546 			}
       
   547 		}
       
   548 	return TPtrC();
       
   549 	}
       
   550 
       
   551 /*****************************************************************************
       
   552  * class TStr
       
   553  *****************************************************************************/
       
   554 
       
   555 // ----------------------------------------------------------------------------
       
   556 // TStr::TStr
       
   557 // C++ default constructor can NOT contain any code, that
       
   558 // might leave.
       
   559 // ----------------------------------------------------------------------------
       
   560 //
       
   561 TStr::TStr( const TDesC& aStr ) : iStr( aStr )
       
   562     {
       
   563     }
       
   564 
       
   565 // ----------------------------------------------------------------------------
       
   566 // TStr::Mid
       
   567 // ----------------------------------------------------------------------------
       
   568 //
       
   569 TPtrC TStr::Mid( TInt aPos )
       
   570     {
       
   571 	if ( ( aPos < 0 ) || ( aPos >= iStr.Length() ) )
       
   572 	    {
       
   573 		return TPtrC();  // return empty descriptor
       
   574 	    }
       
   575 	return iStr.Mid( aPos );
       
   576     }
       
   577 
       
   578 // ----------------------------------------------------------------------------
       
   579 // TStr::Mid
       
   580 // ----------------------------------------------------------------------------
       
   581 //
       
   582 TPtrC TStr::Mid( TInt aPos, TInt aLen )
       
   583     {
       
   584 	TInt len = iStr.Length();
       
   585 	if ( ( aPos < 0 ) || ( aPos >= len ) )
       
   586 	    {
       
   587 		return TPtrC();
       
   588 	    }
       
   589 	if ( ( aLen <= 0 ) || ( aPos + aLen > len ) )
       
   590 	    {
       
   591 		return TPtrC();
       
   592 	    }
       
   593 
       
   594 	return iStr.Mid( aPos, aLen );
       
   595     }
       
   596 
       
   597 // ----------------------------------------------------------------------------
       
   598 // TStr::Right
       
   599 // ----------------------------------------------------------------------------
       
   600 //
       
   601 TPtrC TStr::Right( TInt aPos )
       
   602     {
       
   603 	return Mid( aPos );
       
   604     }
       
   605 
       
   606 // ----------------------------------------------------------------------------
       
   607 // TStr::Left
       
   608 // ----------------------------------------------------------------------------
       
   609 //
       
   610 TPtrC TStr::Left( TInt aPos )
       
   611     {
       
   612 	TInt len = iStr.Length();
       
   613 
       
   614 	if ( ( aPos < 0 ) || ( len == 0 ) )
       
   615 	    {
       
   616 		return TPtrC();
       
   617 	    }
       
   618 
       
   619 	TInt pos = len;
       
   620 	if ( ( aPos + 1 ) < len )
       
   621 	    {
       
   622 		pos = aPos + 1;
       
   623 	    }
       
   624 
       
   625 	return iStr.Left( pos );
       
   626     }
       
   627 
       
   628 // ----------------------------------------------------------------------------
       
   629 // TStr::SubStr
       
   630 // ----------------------------------------------------------------------------
       
   631 //
       
   632 TPtrC TStr::SubStr( TInt aStartPos, TInt aEndPos )
       
   633     {
       
   634 	return Mid( aStartPos, aEndPos - aStartPos + 1 );
       
   635     }
       
   636 
       
   637 // ----------------------------------------------------------------------------
       
   638 // TStr::SubStrEx
       
   639 // ----------------------------------------------------------------------------
       
   640 //
       
   641 TPtrC TStr::SubStrEx( TInt aStartPos, TInt aEndPos )
       
   642     {
       
   643 	return Mid( aStartPos + 1, aEndPos - aStartPos - 1 );
       
   644     }
       
   645 
       
   646 // ----------------------------------------------------------------------------
       
   647 // TStr::LastPos
       
   648 // ----------------------------------------------------------------------------
       
   649 //
       
   650 TInt TStr::LastPos()
       
   651     {
       
   652 	return iStr.Length() - 1;
       
   653     }
       
   654 
       
   655 // ----------------------------------------------------------------------------
       
   656 // TStr::Len
       
   657 // ----------------------------------------------------------------------------
       
   658 //
       
   659 TInt TStr::Len()
       
   660     {
       
   661     return iStr.Length();
       
   662     }
       
   663 
       
   664 // ----------------------------------------------------------------------------
       
   665 // TStr::Compare
       
   666 // ----------------------------------------------------------------------------
       
   667 //
       
   668 TBool TStr::Compare( TInt aPos, TChar aChar )
       
   669     {
       
   670 	TInt len = iStr.Length();
       
   671 	if ( ( aPos < 0) || ( aPos >= len ) )
       
   672 	    {
       
   673 		return EFalse;
       
   674 	    }
       
   675 	TChar ch = iStr[aPos];
       
   676 	if ( ch == aChar )
       
   677 	    {
       
   678 		return ETrue;
       
   679 	    }
       
   680 	return EFalse;
       
   681     }
       
   682 
       
   683 // ----------------------------------------------------------------------------
       
   684 // TStr::Find
       
   685 // ----------------------------------------------------------------------------
       
   686 //
       
   687 TInt TStr::Find(TInt aPos, TChar aChar)
       
   688     {
       
   689 	TInt len = iStr.Length();
       
   690 	if ( (aPos < 0) || (aPos >= len) )
       
   691 	    {
       
   692 		return KErrNotFound;
       
   693 	    }
       
   694 	    
       
   695 	TPtrC ptr(iStr.Mid(aPos)); // move to possition aPos
       
   696 	return ptr.Locate(aChar);
       
   697     }
       
   698 
    91 
   699 //*****************************************************************************
    92 //*****************************************************************************
   700 //* class CIAUpdateFWActiveCaller
    93 //* class CIAUpdateFWActiveCaller
   701 //*****************************************************************************
    94 //*****************************************************************************
   702 
    95