--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/usbmgmt/usbmgrtest/t_usbmodem/inc/t_usbmodem.h Tue Feb 02 02:02:59 2010 +0200
@@ -0,0 +1,264 @@
+/*
+* Copyright (c) 2003-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:
+*
+*/
+
+#include <e32test.h>
+#include <e32twin.h>
+#include <c32comm.h>
+#include <d32comm.h>
+#include <usbman.h>
+
+TCommNotificationPckg TheSerialConfigBuf;
+TCommNotificationPckg TheUsbConfigBuf;
+
+TCommNotificationV01 &TheSerialConfig=TheSerialConfigBuf();
+TCommNotificationV01 &TheUsbConfig=TheUsbConfigBuf();
+TInt TheLastError=KErrNone;
+
+static const TInt KMaxBufSize = 4096;
+const TInt KMaxDumpLength=0x100;
+
+enum TTermPanic
+ {
+ EStraySignal,
+ ELoadPhysicalDeviceErr,
+ ELoadLogicalDeviceErr,
+ EOpenErr,
+ EConnectFsErr,
+ ECaptureFileOpen,
+ EOpenUploadFile,
+ };
+
+enum TRxMode
+ {
+ ENormal=0,
+ ELoopBack=1,
+ ECountChars=2,
+ ERxOff=3,
+ ECapture=128,
+ };
+
+NONSHARABLE_STRUCT(SSettings)
+ {
+ TBool iNotFinished;
+ TBool iLocalEcho;
+ TInt iAddLF;
+ TBool iDump;
+ TInt iDumpRepeat;
+ TBuf8<KMaxDumpLength> iDumpData;
+ TRxMode iRxMode;
+ TInt iCharCount;
+ TInt iMaxInOne;
+ TInt iInfraRed;
+ TBool iWaitAfterWrite;
+ // Fifo
+ // Brk
+ };
+
+LOCAL_D SSettings TheSettings;
+LOCAL_D RUsb TheUsbServer;
+LOCAL_D RCommServ TheCommServer;
+LOCAL_D RComm TheUsbPort;
+LOCAL_D RComm TheSerialPort;
+LOCAL_D RConsole TheWindow;
+
+
+#define USBCSY_NAME _L("ECACM")
+#define USBPORT_NAME _L("ACM::0")
+#define SERIALCSY_NAME _L("ECUART")
+#define SERIALPORT_NAME _L("COMM::0") // second comm port
+
+#define SERIALPDD_NAME _L("EUART1")
+#define SERIALLDD_NAME _L("ECOMM")
+#define USBLDD_NAME _L("EUSBC")
+
+class CDuplex;
+//Base class for simplex transfer activity
+class MTransferNotifier
+ {
+public:
+ virtual void NotifyRead(TInt aErr,TInt aSize, TDes8& aBuf)=0;
+ virtual void NotifyWrite(TInt aErr)=0;
+ };
+
+class CSimplex: public CActive
+ {
+public:
+ void SetTotalAmount(TUint aTotalAmount){iTotalAmount = aTotalAmount;}
+ virtual ~CSimplex(){Cancel();}
+protected:
+ CSimplex(CDuplex& aDuplex):
+ CActive(CActive::EPriorityStandard),iDuplex(aDuplex){}
+
+protected:
+ TBuf8<KMaxBufSize> iBuffer;
+ CDuplex& iDuplex;
+ TInt iTotalAmount;
+ };
+
+class CSimplexRead: public CSimplex
+ {
+public:
+ static CSimplexRead* NewL(CDuplex& aDuplex);
+ virtual ~CSimplexRead(){}
+ void SetPort(RComm* aPort){iCommPort = aPort;}
+ void StartL();
+protected:
+ CSimplexRead(CDuplex& aDuplex):
+ CSimplex(aDuplex){}
+ virtual void DoCancel(void);
+ void ConstructL();
+ virtual void RunL();
+private:
+ TBuf8<KMaxBufSize> iBuffer;
+ TBool iPortType;
+ RComm* iCommPort;
+ };
+
+class CSimplexWrite: public CSimplex
+ {
+public:
+ static CSimplexWrite* NewL(CDuplex& aDuplex);
+ virtual ~CSimplexWrite(){}
+ void SetPort(RComm* aPort){iCommPort = aPort;}
+ void StartL(TDes8& abuf);
+protected:
+ CSimplexWrite(CDuplex& aDuplex):
+ CSimplex(aDuplex){}
+ virtual void DoCancel(void);
+ void ConstructL();
+ virtual void RunL();
+private:
+ TBool iPortType;
+ RComm* iCommPort;
+ };
+
+class CDuplex : public MTransferNotifier, CBase
+ {
+public:
+ // Construction
+ static CDuplex* NewL();
+ // Destruction
+ void StartL();
+ void Cancel();
+ void NotifyRead(TInt aErr,TInt aSize, TDes8& aBuf);
+ void NotifyWrite(TInt aErr);
+ void SetTxPort(RComm* aPort){iSimplexWrite->SetPort(aPort);}
+ void SetRxPort(RComm* aPort){iSimplexRead->SetPort(aPort);}
+ void SetTotalAmount(TInt aTotalAmount){iSimplexWrite->SetTotalAmount(aTotalAmount);
+ iSimplexRead->SetTotalAmount(aTotalAmount);}
+ virtual ~CDuplex();
+protected:
+ // Construction
+ CDuplex(){};
+ void ConstructL();
+private:
+ CSimplexRead* iSimplexRead;
+ CSimplexWrite* iSimplexWrite;
+ };
+
+class CConfigChangeNotifier: public CActive
+ {
+public:
+ static CConfigChangeNotifier* NewL();
+ ~CConfigChangeNotifier(){};
+
+ // Issue request
+ void StartL();
+private:
+ CConfigChangeNotifier();
+ virtual void DoCancel();
+ virtual void RunL();
+ };
+
+class CSignalChangeNotifier: public CActive
+ {
+public:
+ static CSignalChangeNotifier* NewL(TBool aIsusbPort);
+ ~CSignalChangeNotifier(){};
+
+ // Issue request
+ void StartL();
+private:
+ CSignalChangeNotifier(TBool aIsusbPort);
+ virtual void DoCancel();
+ virtual void RunL();
+ const TBool iIsUsbPort;
+ TUint iInSignals;
+ };
+
+class CFControlChangeNotifier: public CActive
+ {
+public:
+ static CFControlChangeNotifier* NewL();
+ ~CFControlChangeNotifier(){};
+
+ // Issue request
+ void StartL();
+private:
+ CFControlChangeNotifier();
+ virtual void DoCancel();
+ virtual void RunL();
+ TFlowControl iFlowControl;
+ };
+
+
+class CActiveConsole : public CActive
+//-----------------------------------
+ {
+public:
+ // Construction
+ static CActiveConsole* NewLC();
+ static CActiveConsole* NewL();
+ void ConstructL();
+
+ // Destruction
+ ~CActiveConsole();
+
+ // Issue request
+ void WaitForKeyPress();
+
+private:
+ // Construction
+ CActiveConsole();
+
+ // Cancel request.
+ // Defined as pure virtual by CActive;
+ // implementation provided by this class.
+ virtual void DoCancel();
+
+ // Service completed request.
+ // Defined as pure virtual by CActive;
+ // implementation provided by this class,
+ virtual void RunL();
+
+ void Start();
+ void ProcessKeyPressL();
+
+private:
+ TBool iIsRunning;
+ TConsoleKey iKeypress;
+ TRequestStatus iBreakRequest;
+ // Data members defined by this class
+ CDuplex* iUsbToSerial;
+ CDuplex* iSerialToUsb;
+ CSignalChangeNotifier* iUsbSignalChangeNotifier;
+ CSignalChangeNotifier* iSerialSignalChangeNotifier;
+ CFControlChangeNotifier* iUsbFControlNotifier;
+ CConfigChangeNotifier* iUsbConfigChangeNotifier;
+ };
+
+