431 { |
431 { |
432 ret = KErrNotFound; |
432 ret = KErrNotFound; |
433 } |
433 } |
434 else if (ret == KErrNone) |
434 else if (ret == KErrNone) |
435 { |
435 { |
436 aBuffer.Create( iReplyBuffer, partLength ); |
436 |
437 iReplyBuffer.Delete( 0, partLength ); |
437 if((ret = aBuffer.Create( iReplyBuffer, partLength )) == KErrNone) |
438 if ( iReplyBuffer.Length() == 0 ) |
438 { |
439 { |
439 iReplyBuffer.Delete( 0, partLength ); |
440 iReplyBuffer.Close(); |
440 if ( iReplyBuffer.Length() == 0 ) |
441 } |
441 { |
|
442 iReplyBuffer.Close(); |
|
443 } |
|
444 } |
442 } |
445 } |
443 } |
446 } |
444 |
447 |
445 Trace(KDebugPrintD, "ret: ", ret); |
448 Trace(KDebugPrintD, "ret: ", ret); |
446 TRACE_FUNC_EXIT |
449 TRACE_FUNC_EXIT |
475 } |
478 } |
476 |
479 |
477 Trace(KDebugPrintD, "iQuietMode: ", iQuietMode); |
480 Trace(KDebugPrintD, "iQuietMode: ", iQuietMode); |
478 if ( iQuietMode ) |
481 if ( iQuietMode ) |
479 { |
482 { |
480 iReplyBuffer.Create( KNullDesC8 ); |
483 aError = iReplyBuffer.Create( KNullDesC8 ); |
481 } |
484 } |
482 else |
485 else |
483 { |
486 { |
484 iReplyBuffer.Create( aSrcBuffer ); |
487 aError = iReplyBuffer.Create( aSrcBuffer ); |
485 } |
488 } |
486 |
489 |
487 Trace(KDebugPrintD, "aReplyType: ", aReplyType); |
490 if(aError == KErrNone) |
488 switch ( aReplyType ) |
491 { |
489 { |
492 Trace(KDebugPrintD, "aReplyType: ", aReplyType); |
490 case EReplyTypeOther: |
493 switch ( aReplyType ) |
491 break; |
494 { |
492 #ifdef PROTOCOL_TDSCDMA |
495 case EReplyTypeOther: |
493 case EReplyTypeEditor: |
496 break; |
494 CreateEditModeBuffer( iReplyBuffer ); |
497 #ifdef PROTOCOL_TDSCDMA |
495 break; |
498 case EReplyTypeEditor: |
496 #endif |
499 aError = CreateEditModeBuffer( iReplyBuffer ); |
497 case EReplyTypeOk: |
500 break; |
498 CreateOkOrErrorReply( iReplyBuffer, ETrue ); |
501 #endif |
499 break; |
502 case EReplyTypeOk: |
500 case EReplyTypeError: |
503 aError = CreateOkOrErrorReply( iReplyBuffer, ETrue ); |
501 CreateOkOrErrorReply( iReplyBuffer, EFalse ); |
504 break; |
502 break; |
505 case EReplyTypeError: |
503 default: |
506 aError = CreateOkOrErrorReply( iReplyBuffer, EFalse ); |
504 TRACE_FUNC_EXIT |
507 break; |
505 return KErrGeneral; |
508 default: |
506 } |
509 TRACE_FUNC_EXIT |
507 CreatePartOfReply( *iHcReply ); |
510 return KErrGeneral; |
508 HandleCommandCompleted( KErrNone, aReplyType ); |
511 } |
|
512 |
|
513 if(aError == KErrNone) |
|
514 { |
|
515 CreatePartOfReply( *iHcReply ); |
|
516 } |
|
517 } |
|
518 HandleCommandCompleted( aError, aError ? EReplyTypeUndefined : aReplyType ); |
509 if ( EReplyTypeEditor != aReplyType ) |
519 if ( EReplyTypeEditor != aReplyType ) |
510 { |
520 { |
511 iHcCmd = NULL; |
521 iHcCmd = NULL; |
512 iHcReply = NULL; |
522 iHcReply = NULL; |
513 iCurrentHandler = NULL; |
523 iCurrentHandler = NULL; |
514 } |
524 } |
515 TRACE_FUNC_EXIT |
525 TRACE_FUNC_EXIT |
516 return KErrNone; |
526 return aError; |
517 } |
527 } |
518 |
528 |
519 /** |
529 /** |
520 * @see MATMiscCmdPlugin::CreateOkOrErrorReply |
530 * @see MATMiscCmdPlugin::CreateOkOrErrorReply |
521 */ |
531 */ |
526 _LIT8( KErrorReplyVerbose, "ERROR" ); |
536 _LIT8( KErrorReplyVerbose, "ERROR" ); |
527 _LIT8( KOkReplyVerbose, "OK" ); |
537 _LIT8( KOkReplyVerbose, "OK" ); |
528 _LIT8( KErrorReplyNumeric, "4" ); |
538 _LIT8( KErrorReplyNumeric, "4" ); |
529 _LIT8( KOkReplyNumeric, "0" ); |
539 _LIT8( KOkReplyNumeric, "0" ); |
530 TBuf8<KErrorReplyLength> replyBuffer; |
540 TBuf8<KErrorReplyLength> replyBuffer; |
|
541 TInt ret = KErrNone; |
|
542 |
531 if ( iVerboseMode ) |
543 if ( iVerboseMode ) |
532 { |
544 { |
533 replyBuffer.Append( iCarriageReturn ); |
545 replyBuffer.Append( iCarriageReturn ); |
534 replyBuffer.Append( iLineFeed ); |
546 replyBuffer.Append( iLineFeed ); |
535 if ( aOkReply ) |
547 if ( aOkReply ) |
554 replyBuffer.Append( KErrorReplyNumeric ); |
566 replyBuffer.Append( KErrorReplyNumeric ); |
555 } |
567 } |
556 replyBuffer.Append( iCarriageReturn ); |
568 replyBuffer.Append( iCarriageReturn ); |
557 } |
569 } |
558 |
570 |
559 aReplyBuffer.ReAlloc(aReplyBuffer.Length() + replyBuffer.Length()); |
571 ret = aReplyBuffer.ReAlloc(aReplyBuffer.Length() + replyBuffer.Length()); |
560 aReplyBuffer.Append( replyBuffer ); |
572 if(ret == KErrNone) |
561 TRACE_FUNC_EXIT |
573 { |
562 return KErrNone; |
574 aReplyBuffer.Append( replyBuffer ); |
|
575 } |
|
576 |
|
577 TRACE_FUNC_EXIT |
|
578 return ret; |
563 } |
579 } |
564 |
580 |
565 /** |
581 /** |
566 * @see MATMiscCmdPlugin::CreateEditModeBuffer |
582 * @see MATMiscCmdPlugin::CreateEditModeBuffer |
567 */ |
583 */ |
646 |
662 |
647 if(iErrorLevel == 1 && !iQuietMode) |
663 if(iErrorLevel == 1 && !iQuietMode) |
648 { |
664 { |
649 // return error code to AT client |
665 // return error code to AT client |
650 RBuf8 response; |
666 RBuf8 response; |
651 response.Create(KDefaultCmdBufLength); |
667 if (KErrNone != response.Create(KDefaultCmdBufLength)) |
|
668 { |
|
669 CreateReplyAndComplete(EReplyTypeError); |
|
670 return; |
|
671 } |
|
672 |
652 response.Append(KCRLF); |
673 response.Append(KCRLF); |
653 switch(aError) |
674 switch(aError) |
654 { |
675 { |
655 case KErrGsm0707IncorrectPassword: |
676 case KErrGsm0707IncorrectPassword: |
656 case KErrAccessDenied: |
677 case KErrAccessDenied: |