--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/atcommand/generic/inc/atcommandbase.h Tue Jul 06 15:36:38 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_*/