cbsref/telephonyrefplugins/atltsy/atcommand/generic/inc/atcommandbase.h
branchRCL_3
changeset 65 630d2f34d719
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/atcommand/generic/inc/atcommandbase.h	Tue Aug 31 16:23:08 2010 +0300
@@ -0,0 +1,278 @@
+// 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:
+// @file atcommandbase.h
+// This contains CAtCommandBase which is the base class for AT command
+// 
+
+#ifndef ATCOMMANDBASE_H_
+#define ATCOMMANDBASE_H_
+
+// system include
+#include <e32base.h>
+#include <ctsy/ltsy/cctsydispatchercallback.h>
+
+// user include
+#include "atcommandtype.h"
+#include "ltsycommondefine.h"
+#include "respondbufparser.h"
+#include "requestbase.h"
+#include "globalphonemanager.h"
+
+
+// const defination
+const TUint KLtsyGenericBufferSize = 200;
+
+// forward class
+class CGlobalPhonemanager;
+class CAtManager;
+class CCommEngine;
+class CCtsyDispatcherCallback;
+class MAtCommandExecuteObserver;
+class CRequestBase;
+class CATSwitchOnLineMode;
+
+/**
+* This class provide the common functionalities for AT Command
+*
+*/
+class CAtCommandBase : public CRequestBase
+	{
+public:
+	/**
+	* Destructor
+	*
+	*/
+	virtual ~CAtCommandBase();
+public:// pure virtual functions	
+
+	/**
+	* Pure virtual function. Start Execute AT Command
+	*/
+	virtual void ExecuteCommand()=0;
+	
+	/**
+	* Cancel the AT Command execution
+	*/
+	virtual void CancelCommand();
+	
+public:// virtual functions	
+	/**
+	* Must be called after the AT Command execution get complete
+	*/
+	virtual void Complete();
+	
+	/**
+	* It can be overrided by inherited class
+	* 
+	* @param aResponseBuf Line buf reading from baseband which is 
+	*  parsered by class CAtCommandBase or CAtCommandBase's subtype
+	*/	
+	virtual void ParseResponseL(const TDesC8& aResponseBuf);
+	
+	/**
+	 * Virtual Function
+	 * This function would be called after one of @see TAtEventSource happened.
+	 * Subclass should implement this function.
+	 * 
+	 * @param aEventSource One of them: EReadCompletion, EWriteCompletion and ETimeoutCompletion
+	 * @param aStatus KErrNone if the event was complete without any error, or otherwise.
+	 */
+	virtual void EventSignal(TAtEventSource aEventSource, TInt aStatus);
+public:
+	/**
+	* Return the AT Type
+	* @return TLtsyATCommandType The AT Type and @see TLtsyATCommandType
+	*/
+	TLtsyATCommandType AtType();
+	
+	/**
+	* Add expected response string after an AT Command was executed
+	*
+	* @param aExpectStr
+	*/
+	void AddExpectStringL(const TDesC8& aExpectStr);
+	
+	/**
+	* Add expected response string after an AT Command was executed
+	*
+	* @param aExpectStr
+	*/
+	void RemoveExpectString(const TDesC8& aExpectStr);
+	
+	/**
+	* Reset and clean all the expect string
+	*
+	*/
+	void RemoveAllExpectString();
+	
+	/**
+	* Add an AT Command to ATCommandStore
+	*
+	*/
+	void AddUnsolicitedAtCommand();
+	
+	/**
+	* Remove an AT Command in ATCommandStore
+	*
+	*/
+	void RemoveAtCommand();
+	
+	/**
+	* Issue writing AT Command to baseband
+	*
+	*/
+	void Write();
+	
+	/**
+	 * Set write and read timout
+	 */
+	void SetTimeOut(TInt aWriteTimeOut, TInt aReadTimeOut);
+	
+	/**
+	* Clean the whole buffer received from baseband
+	*/
+	void ClearBuffer();
+	
+	/**
+	* Clean the current line in the buffer
+	*/
+	void ClearCurrentLine();
+	
+	/**
+	* The buffer for storing the all received data from comms engine
+	*/
+	TPtrC8 Buffer() const;
+	
+	/**
+	* The current line in the buffer
+	*/
+	TPtrC8 CurrentLine() const;
+	/**
+	* The last line which had not matched in the buffer
+	*/
+	TPtrC8 PrecedingLine() const;
+	
+	/**
+	* Check if the passed string was matched with Expected AT String
+	*
+	* @param aReadLine
+	* @return TBool ETrue if matched, otherwise EFalse
+	*/
+	virtual TBool MatchExpectString(const TDesC8& aReadLine);
+	/**
+	 * Set AT command observer
+	 * If the observer was set, the AT command should return the data from baseband back to it but not Dispatcher Callback handler.
+	 * 
+	 * @param aAtCommandObserver The AT command observer @see MAtCommandExecuteObserver
+	 */
+	void SetAtCommandObserver(MAtCommandExecuteObserver* aAtCommandObserver);
+	
+	/**
+	 * Remove the AT command observer
+	 * 
+	 */
+	void RemoveAtCommandObserver();
+	/**
+	* Will be called by AT Manager whenever a event was triggered
+	* 
+	* @param aEventSource
+	* @param aStatus
+	*/
+	void GenericEventSignal(TAtEventSource aEventSource, TInt aStatus);
+protected:
+	/**
+	* Constructor
+	*
+	* @param aAtManager
+	* @param aCommEngine
+	* @param aAtCommandObserver
+	*/
+	CAtCommandBase(CGlobalPhonemanager& aGloblePhone, CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+	
+	/**
+	* 2nd Constructor
+	* This function must be called in his subtype class for 
+	* creating instance of class CRespondBufParser
+	*/
+	void ConstructL();
+    /**
+	* Start timer and would be expired after time periond of aTimeOut seconds
+	*/
+	void StartTimer(const TInt aTimeOut);
+private:
+  	/**
+	* Stop the timer
+	*/
+	void StopTimer();
+
+protected:
+    /**
+	* Identify the Type of AT Command
+	*/
+	TLtsyATCommandType iAtType;
+	
+	/**
+	* The array of strings which contain the expected Response Message from BaseBand
+	*/
+	RArray<TPtrC8> iExpectingArray;
+	
+	/**
+	* The buffer contains the "AT" String which should be sent to BaseBand Modem
+	*/
+	TBuf8<KLtsyGenericBufferSize> iTxBuffer;
+	
+	/**
+	* The expired time in which the Writing of AT command should be complete
+	*/
+	TInt iWriteTimeOut;
+	
+	/**
+	* The expired time in which the response message should be received
+	*/
+	TInt iReadTimeOut;
+	
+	/**
+	* The pointer to class CRespondBufParserparser for parsering response 
+	* message buffer
+	* 
+	*/	
+	CRespondBufParser* iParser;
+	
+	/**
+	* The dispacher callback handler
+	*/
+	CCtsyDispatcherCallback& iCtsyDispatcherCallback;
+private:	
+	/**
+	* The AT command observer.
+	* In most of cases, when the AT command was complete, it should use dispathcer callback handler to return data back to CTSY.
+	* But in some of cases, AT command should return the data back to the AT Command Observer which actually return the composed data
+	* (some of them were collected from other AT commands)
+	* back to CTSY.
+	* 
+	* Not own
+	*/
+	MAtCommandExecuteObserver* iAtCommandObserver;
+	
+	/**
+	* The buffer contains the line which had not matched
+	*/
+	TBuf8<KLtsyGenericBufferSize> iNoMatchedLastLine;
+	
+	
+	CATSwitchOnLineMode* iATSwitchOnLineMode;
+
+	};
+
+#endif /*ATCOMMANDBASE_H_*/