--- a/localconnectivityservice/modematplugin/inc/atcopscmd.h Mon Mar 15 12:43:27 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,434 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description: Handles the commands "AT+COPS=..." and "AT+COPS?"
-*
-*/
-
-
-#ifndef C_CATCOPSCMD_H
-#define C_CATCOPSCMD_H
-
-#include <e32base.h>
-#include <e32cmn.h>
-#include <rmmcustomapi.h>
-#include <etelpckt.h>
-#include <etelmm.h>
-#include <mmretrieve.h>
-#include "modematplugin.h"
-
-class MCmdPluginObserver;
-class CRetrieveMobilePhoneDetectedNetworks;
-
-/** Handler types for the AT commands */
-enum TCmdHandlerType
- {
- ECmdHandlerTypeUndefined,
- ECmdHandlerTypeTest, // For command "AT+COPS=?"
- ECmdHandlerTypeRead, // For command "AT+COPS?"
- ECmdHandlerTypeSet // For command "AT+COPS=..."
- };
-
-/** Keeps track of the current operation for the state machine */
-enum TCurrentOperation
- {
- EIdle = 0,
- EInspectModeAndProcessCommand = 1,
- EAutomaticallyRegisterToNetwork = 2,
- EManuallyRegisterToNetwork = 3,
- EManuallyRegisterToNetworkAndChooseAccTech = 4,
- EGetNetworkInfoOperatorName = 5,
- ESetSystemNetworkBand = 6,
- EUpdateAvailableNetworkOperators = 7,
- EListAvailableNetworkOperators = 8
- };
-
-/** These are in the same order as in 3GPP TS 27.007 V8.4.1 */
-enum TOperatorFormat
- {
- EFormatLong,
- EFormatShort,
- EFormatNumeric
- };
-
-/** These are in the same order as in 3GPP TS 27.007 V8.4.1 */
-enum TNetworkRegistrationMode
- {
- EModeAutomatic,
- EModeManual,
- EModeDeregister,
- EModeSetFormatParameter,
- EModeManualAutomatic,
- };
-
-/** Currently selected access technology for outgoing replies.
-* S60 uses definitions from RMobilePhone class, but they are
-* in diffent order and cannot be used directly.
-* These are in the same order as in 3GPP TS 27.007 V8.4.1 */
-enum TAccessTechnology
- {
- EGSM = 0,
- EGSMCompact = 1,
- EUDMA = 2,
- EGSMwithEGPRS = 3,
- EHSDPA = 4,
- EHSUPA = 5,
- EUDMAwithHSDPAandHSUPA = 6,
- EAccTechNotSet = 255
- };
-
-/**
- * Class for handling commands "AT+COPS?" and "AT+COPS=..."
- *
- * @since TB9.2
- */
-NONSHARABLE_CLASS( CATCOPSCmd ) : public CActive, public CATCommandHandlerBase
-{
-
-public:
-
- /**
- * Two-phased constructor.
- * @param aCallback Callback
- * @return Instance of self
- */
- static CATCOPSCmd* NewL( MCmdPluginObserver* aCallback );
-
- /**
- * Destructor.
- */
- virtual ~CATCOPSCmd();
-
-protected:
- /**
- * From CActive. Called when asynchronous request completes.
- * @since TB9.2
- * @param None
- * @return None
- */
- virtual void RunL();
-
- virtual void DoCancel();
-
-private:
-
- CATCOPSCmd( MCmdPluginObserver* aCallback );
-
- void ConstructL();
-
- /**
- * Reports the support status of an AT command. This is a synchronous API.
- *
- * @param aCmd The AT command. Its format may vary depending on the
- * specification. E.g. in BT HFP case, the command may contain
- * a character carriage return (<cr>) in the end.
- * @return ETrue if the command is supported; EFalse otherwise.
- */
- TBool IsCommandSupported( const TDesC8& aCmd );
-
- /**
- * Handles an AT command. Cancelling of the pending request is done by
- * HandleCommandCancel(). The implementation in the extension plugin should
- * be asynchronous.
- *
- * The extension plugin which accepts this command is responsible to supply
- * the result codes and response and to format result codes properly, e.g.
- * in BT HFP case, the format should be <cr><lf><result code><cr><lf>
- *
- * After an extension plugin has handled or decided to reject the given AT
- * command, it must inform ATEXT by HandleCommandCompleted() with a proper
- * error code.
- *
- * @since TB9.2
- * @param aCmd The AT command to be handled. Its format may vary depending
- * on the specification. E.g. in BT HFP case, the command may
- * contain a character carriage return (<cr>) in the end.
- * @param aReply When passed in, contains the built in answer filled by
- * ATEXT if it is not empty; when command handling completes
- * successfully, contains the result codes and responses to
- * this command; Its ownership always belongs to ATEXT, plugin
- * may reallocate its space when needed.
- * @param aReplyNeeded Reply needed if ETrue, no reply otherwise. If EFalse,
- * the aReply must not contain the reply, otherwise it
- * must contain verbose or numeric reply (ATV0/1) or an
- * empty string reply (with ATQ).
- * @return None
- */
- void HandleCommand( const TDesC8& aCmd, RBuf8& aReply, TBool aReplyNeeded );
-
- /**
- * Cancels a pending HandleCommand request.
- *
- * @since TB9.2
- * @return None
- */
- void HandleCommandCancel();
-
-
-private:
-
-
- void HandleCommandTest( const TDesC8& aCmd, RBuf8& aReply, TBool aReplyNeeded );
- void HandleCommandRead( const TDesC8& aCmd, RBuf8& aReply, TBool aReplyNeeded );
- void HandleCommandSet( const TDesC8& aCmd, RBuf8& aReply, TBool aReplyNeeded );
-
- void HandleError();
-
- /**
- * This method parses the parameter part of command and populates
- * iParamArray class member. Quotation marks are removed in process.
- *
- * @since TB9.2
- * @param aCmd The AT command.
- * @return Leaves in out of memory case.
- */
- void ExtractParametersL(const TDesC8& aCmd);
-
- /**
- * This method strips all quotation parms from the string passed in.
- *
- * @since TB9.2
- * @param aParameter one parameter from AT command as extracted by ExtractParametersL.
- * @return None
- */
- void RemoveQuotationMarks(TPtr8& aParameter);
-
- /**
- * This method returns the selected mode in aMode.
- * It also checks that there are enough parameters for the mode in question.
- *
- * @since TB9.2
- * @param aParameter one parameter from AT command as extracted by ExtractParametersL.
- * @param aMode contains the converted parameter if method completed successfully.
- * @return KErrArgument if mode is invalid or there is not enough parameters.
- * KErrNone if iParamArray contains all the parameters the mode requires.
- */
- TInt GetModeAndCheckParameterCount(const TDesC8& aParameter, TNetworkRegistrationMode &aMode);
-
- /**
- * This method converts an AT command parameter to numeric format value and checks it is valid.
- *
- * @since TB9.2
- * @param aParameter one parameter from AT command as extracted by ExtractParametersL.
- * @param aFormat contains the converted parameter if method completed successfully.
- * @return KErrArgument if format is invalid.
- * KErrNone if format is valid.
- */
- TInt GetFormatFromParameter(const TDesC8& aParameter, RMmCustomAPI::TOperatorNameType &aFormat);
-
- /**
- * This method converts an AT command parameter to numeric access technology value and checks it is valid.
- *
- * @since TB9.2
- * @param aParameter one parameter from AT command as extracted by ExtractParametersL.
- * @param aAccTech contains the converted parameter if method completed successfully.
- * @return KErrArgument if acc. tech. is invalid.
- * KErrNone if acc. tech. is valid.
- */
- TInt GetAccTechFromParameter(const TDesC8& aParameter, TAccessTechnology &aAccTech);
-
- /**
- * This method converts an AT command parameter to ETel compatible operator values
- *
- * @since TB9.2
- * @param aDetectedNetworks contains the list of networks. May be NULL.
- * @param aFormat contains the format (numeric/text) of operator parameter.
- * @param aOperatorParameter contains the operator parameter string.
- * @param aMcc contains the converted parameter if method completed successfully.
- * @param aMnc contains the converted parameter if method completed successfully.
- * @return KErrArgument if operator parameter invalid,
- * KErrNotFound if operator list exists but the operator is not in it,
- * or the operator list is missing. (Required if aFormat is text.)
- * KErrNone if conversion succeeds. aMcc and aMnc contain ETel compatible operator values.
- */
- TInt ConvertOperatorToMccMnc(const CMobilePhoneNetworkListV2 *aDetectedNetworks,
- const RMmCustomAPI::TOperatorNameType aFormat,
- const TBuf<KMaxOperatorNameLength>& aOperatorParameter,
- RMobilePhone::TMobilePhoneNetworkCountryCode& aMcc,
- RMobilePhone::TMobilePhoneNetworkIdentity& aMnc);
-
- /**
- * This method initiates an automatic network registration.
- *
- * @since TB9.2
- * @return None
- */
- void AutomaticNetworkRegistration();
-
- /**
- * This method initiates a manual network registration.
- *
- * @since TB9.2
- * @param aMcc contains the country code part of ETel operator info.
- * @param aMnc contains the network code part of ETel operator info.
- * @return None
- */
- void ManualNetworkRegistration(const RMobilePhone::TMobilePhoneNetworkCountryCode& aMcc,
- const RMobilePhone::TMobilePhoneNetworkIdentity& aMnc);
-
- /**
- * This method initiates a manual network registration and access technology selection.
- *
- * @since TB9.2
- * @param aMcc contains the country code part of ETel operator info.
- * @param aMnc contains the network code part of ETel operator info.
- * @param aAccTech contains the access technology in ETel compatible format.
- * @return None
- */
- void ManualNetworkRegistration( const RMobilePhone::TMobilePhoneNetworkCountryCode& aMcc,
- const RMobilePhone::TMobilePhoneNetworkIdentity& aMnc,
- const TAccessTechnology aAccTech);
-
- /**
- * This is a helper function used by RunL
- *
- * @since TB9.2
- * @return standard Symbian OS return code.
- */
- TInt InspectModeAndProcessCommand();
-
- /**
- * This method contructs a response for the test command.
- *
- * @since TB9.2
- * @return None. Leaves with standar symbian OS error code on error.
- */
- void ConstructNetworkListResponseL();
-
- /**
- * This method contructs a response for the read command.
- *
- * @since TB9.2
- * @return standard Symbian OS return code.
- */
- TInt ConstructNetworkInfoResponse();
-
- /**
- * This helper method converts the ETel access technology into
- * 3GPP TS 27.007 V8.4.1 compatible format.
- *
- * @since TB9.2
- * @param aAccTech contains the access technology in ETel compatible format.
- * @return Standard Symbian OS return code.
- */
- TInt SolveAccessTechnology(RMobilePhone::TMobilePhoneNetworkAccess &aAccessTech);
-
- /**
- * This helper method finalises the response and sends it.
- *
- * @since TB9.2
- * @param aIsOK tells whether to create an OK or ERROR response.
- * @param aReply contains the response string to be sent before OK, if any.
- * @return None
- */
- void CreateReply(TBool aIsOK, const TDesC8 &aReply = KNullDesC8);
-
-private: // data
-
- /**
- * Callback to call when accessing plugin information
- */
- MCmdPluginObserver* iCallback;
-
- /**
- * Handler type for the three AT commands
- */
- TCmdHandlerType iCmdHandlerType;
-
- /**
- * Telephony server instance.
- */
- RTelServer iServer;
-
- /**
- * Phone instance, used for network selection.
- */
- RMobilePhone iPhone;
-
- /**
- * Telephony Custom API instance, used for setting
- * the access technology (only GSM and UDMA supported).
- */
- RMmCustomAPI iCustomApi;
-
- /**
- * Current network info collected via the RMobilePhone is stored here.
- */
- RMobilePhone::TMobilePhoneNetworkInfoV2 iNetworkInfo;
-
- /**
- * The parameters extracted from the AT command are stored here.
- */
- RPointerArray<HBufC8> iParamArray;
-
- /**
- * Used for getting the static packet capabilities of the phone.
- * This is needed for supporting more detailed access technology.
- */
- RPacketService iPacketService;
-
- /**
- * The format of the operator parameter is stored here.
- * it is used both for interpreting the incoming operator and
- * responding with correctly formatted outgoing operator info.
- * this can be done because it is specified that the latest incoming
- * format info is also used for responses from that onwards.
- */
- RMmCustomAPI::TOperatorNameType iFormat;
-
- /**
- * The requested/current network registration mode is stored here. It is used
- * also when responding to the Read command. This can be done because the two
- * operations are completely independent.
- */
- TNetworkRegistrationMode iRegistrationMode;
-
- /**
- * The requested/current access tehcnology is stored here. It is used
- * also when responding to the Read and Test commands. This can be done
- * because the operations are completely independent.
- */
- TAccessTechnology iAccTech;
-
- /**
- * The incoming reply buffer is kept here. Not owned.
- */
- RBuf8* iReply;
-
- /**
- * The currently running operation is kept here.
- */
- TCurrentOperation iCurrentOperation;
-
- /**
- * The country code part of ETel compatible operator info.
- */
- RMobilePhone::TMobilePhoneNetworkCountryCode iMcc;
-
- /**
- * The network code part of ETel compatible operator info.
- */
- RMobilePhone::TMobilePhoneNetworkIdentity iMnc;
-
- /**
- * Used for retrieving a list of networks the phone detected.
- */
- CRetrieveMobilePhoneDetectedNetworks *iRetrieveDetectedNetworks;
-
- /**
- * Used for reading the list the CRetrieveMobilePhoneDetectedNetworks returned.
- */
- CMobilePhoneNetworkListV2 *iDetectedNetworks;
-};
-
-#endif // C_LCLISTALLCMD_H