localconnectivityservice/modematplugin/inc/atcopscmd.h
branchRCL_3
changeset 9 87d139e87731
parent 8 a249528449c3
child 10 031b9cffe6e4
--- 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