--- a/cbsatplugin/atmisccmdplugin/src/atmisccmdplugin.cpp Mon Jul 12 19:25:26 2010 +0300
+++ b/cbsatplugin/atmisccmdplugin/src/atmisccmdplugin.cpp Fri Jul 23 15:57:13 2010 +0300
@@ -32,6 +32,9 @@
#include "cmgwcommandhandler.h"
#include "cmgdcommandhandler.h"
#include "telephonywrapper.h"
+#include "cgmmcommandhandler.h"
+#include "scpbrcommandhandler.h"
+#include "scpbwcommandhandler.h"
#endif
@@ -40,6 +43,8 @@
#include "debug.h"
#include <exterror.h> // Additional RMobilePhone error code
+#include <etelmmerr.h> // ETelMM error code
+#include <gsmerror.h> // GSM error code
// +CME error code
_LIT8(KCMEMemoryFailure, "+CME ERROR: 23\r\n"); // Memory failure.\r\n
@@ -48,6 +53,15 @@
_LIT8(KCMENotAllowed, "+CME ERROR: 3\r\n"); // Operation not allowed.\r\n
_LIT8(KCMEPhoneError, "+CME ERROR: 0\r\n"); // Phone failure.\r\n
_LIT8(KCMEPhoneUnknown, "+CME ERROR: 100\r\n"); // unknown error
+_LIT8(KCMESimNotInserted, "+CME ERROR: 10\r\n"); // SIM not inserted
+_LIT8(KCMEMemoryFull, "+CME ERROR: 20\r\n"); // Memory full
+_LIT8(KCMEInvalidIndex, "+CME ERROR: 21\r\n"); // Invalid index
+_LIT8(KCMENotFound, "+CME ERROR: 22\r\n"); // Not found
+_LIT8(KCMEDialStringTooLong, "+CME ERROR: 26\r\n"); // Dial string too long
+_LIT8(KCMETextStringTooLong, "+CME ERROR: 24\r\n"); // Text string too long
+_LIT8(KCMEInvalidCharacters, "+CME ERROR: 27\r\n"); // Invalid characters in dial string
+
+
const TInt KErrorReplyLength = 9; // CR+LF+"ERROR"+CR+LF
const TInt KEditorReplyLength = 4; // CR+LF+'>'+' '
@@ -79,6 +93,9 @@
delete iCGMIHandler;
delete iCMGWHandler;
delete iCMGDHandler;
+ delete iCGMMHandler;
+ delete iSCPBRHandler;
+ delete iSCPBWHandler;
#endif
iPhone.Close();
@@ -110,6 +127,10 @@
iCGMIHandler = CCGMICommandHandler::NewL(this, iCommandParser, iPhone);
iCMGWHandler = CCMGWCommandHandler::NewL(this, iCommandParser, iPhone);
iCMGDHandler = CCMGDCommandHandler::NewL(this, iCommandParser, iPhone);
+ iCGMMHandler = CCGMMCommandHandler::NewL(this, iCommandParser, iPhone);
+ iSCPBRHandler = CSCPBRCommandHandler::NewL(this, iCommandParser, iPhone);
+ iSCPBWHandler = CSCPBWCommandHandler::NewL(this, iCommandParser, iPhone);
+
// Get telephony information - Model, IMEI, Manufacturer
CTelephonyWrapper* telephonyWrapper = CTelephonyWrapper::NewL();
@@ -120,12 +141,15 @@
static_cast<CHVERCommandHandler*>(iHVERHandler)->SetHWVersion(telephonyWrapper->GetPhoneModel());
static_cast<CCGSNCommandHandler*>(iCGSNHandler)->SetSerialNum(telephonyWrapper->GetPhoneSerialNum());
static_cast<CCGMICommandHandler*>(iCGMIHandler)->SetManufacturer(telephonyWrapper->GetPhoneManufacturer());
+ static_cast<CCGMMCommandHandler*>(iCGMMHandler)->SetManufacturer(telephonyWrapper->GetPhoneManufacturer());
+ static_cast<CCGMMCommandHandler*>(iCGMMHandler)->SetModelID(telephonyWrapper->GetPhoneModel());
}
else // The result is used to determine whether to display CME error or not
{
static_cast<CHVERCommandHandler*>(iHVERHandler)->SetTelephonyError(result);
static_cast<CCGSNCommandHandler*>(iCGSNHandler)->SetTelephonyError(result);
static_cast<CCGMICommandHandler*>(iCGMIHandler)->SetTelephonyError(result);
+ static_cast<CCGMMCommandHandler*>(iCGMMHandler)->SetTelephonyError(result);
}
delete telephonyWrapper;
#endif
@@ -208,17 +232,25 @@
iCurrentHandler = iHVERHandler;
break;
}
- case (TAtCommandParser::ECmdAtCgsn):
+ case (TAtCommandParser::ECmdAtCgsn): // intentional fall through
+ case (TAtCommandParser::ECmdAtGsn):
+ case (TAtCommandParser::ECmdAtI1):
{
iCurrentHandler = iCGSNHandler;
break;
}
- case (TAtCommandParser::ECmdAtCgmr):
+ case (TAtCommandParser::ECmdAtCgmr): // intentional fall through
+ case (TAtCommandParser::ECmdAtGmr):
+ case (TAtCommandParser::ECmdAtI2):
+ case (TAtCommandParser::ECmdAtI4):
{
iCurrentHandler = iCGMRHandler;
break;
}
- case (TAtCommandParser::ECmdAtCgmi):
+ case (TAtCommandParser::ECmdAtCgmi): // intentional fall through
+ case (TAtCommandParser::ECmdAtGmi):
+ case (TAtCommandParser::ECmdAtI):
+ case (TAtCommandParser::ECmdAtI0):
{
iCurrentHandler = iCGMIHandler;
break;
@@ -238,6 +270,23 @@
iCurrentHandler = NULL;
break;
}
+ case (TAtCommandParser::ECmdAtCgmm): // intentional fall through
+ case (TAtCommandParser::ECmdAtGmm):
+ case (TAtCommandParser::ECmdAtI3):
+ {
+ iCurrentHandler = iCGMMHandler;
+ break;
+ }
+ case (TAtCommandParser::ECmdAtScpbr):
+ {
+ iCurrentHandler = iSCPBRHandler;
+ break;
+ }
+ case (TAtCommandParser::ECmdAtScpbw):
+ {
+ iCurrentHandler = iSCPBWHandler;
+ break;
+ }
#endif
case (TAtCommandParser::EUnknown):
default:
@@ -630,11 +679,57 @@
break;
}
case KErrUnknown:
+ case KErrGsmSimServAnrFull:
{
// unknown error
response.Append(KCMEPhoneUnknown);
break;
}
+ case KErrNotFound:
+ {
+ response.Append(KCMENotFound);
+ break;
+ }
+ case KErrInUse:
+ case KErrGsmMMServiceOptionTemporaryOutOfOrder:
+ {
+ // SIM not inserted
+ response.Append(KCMESimNotInserted);
+ break;
+ }
+ case KErrArgument:
+ case KErrGsm0707InvalidIndex:
+ case KErrGsm0707NotFound:
+ {
+ // Invalid index
+ response.Append(KCMEInvalidIndex);
+ break;
+ }
+ case KErrGsm0707TextStringTooLong:
+ {
+ // Text string too long
+ response.Append(KCMETextStringTooLong);
+ break;
+ }
+ case KErrGsm0707DialStringTooLong:
+ {
+ // Dial string too long
+ response.Append(KCMEDialStringTooLong);
+ break;
+ }
+ case KErrGsmCCUnassignedNumber:
+ case KErrGsm0707InvalidCharsInDialString:
+ {
+ // Invalid characters in dial string
+ response.Append(KCMEInvalidCharacters);
+ break;
+ }
+ case KErrMMEtelMaxReached:
+ {
+ // Memory full
+ response.Append(KCMEMemoryFull);
+ break;
+ }
default:
{
response.Append(KCMEPhoneError);
@@ -688,9 +783,8 @@
response.AppendNum(EATCMSErr304);
break;
}
- case KErrNotReady:
- case KErrNotFound:
- case KErrGsmSMSSimNotInserted:
+ case KErrGsm0707SimFailure:
+ case KErrGsmMMServiceOptionTemporaryOutOfOrder:
{
// SIM card not inserted
response.AppendNum(EATCMSErr310);
@@ -736,7 +830,7 @@
}
default:
{
- response.AppendNum(EATCmsErrGeneral);
+ response.AppendNum(EATCmsErrGeneral);
break;
}
}
@@ -817,6 +911,12 @@
}
User::LeaveIfError(aTelServer.GetPhoneInfo(0, info));
User::LeaveIfError(aPhone.Open(aTelServer, info.iName));
+
+ if (iTelServer.SetExtendedErrorGranularity(RTelServer::EErrorExtended)!=KErrNone)
+ {
+ User::LeaveIfError(iTelServer.SetExtendedErrorGranularity(RTelServer::EErrorBasic));
+ }
+
TRACE_FUNC_EXIT
}