epoc32/include/wins/winscomm.h
branchSymbian3
changeset 4 837f303aceeb
parent 3 e1b950c65cb4
--- a/epoc32/include/wins/winscomm.h	Wed Mar 31 12:27:01 2010 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,249 +0,0 @@
-// Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies).
-// All rights reserved.
-// This component and the accompanying materials are made available
-// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
-// which accompanies this distribution, and is available
-// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
-//
-// Initial Contributors:
-// Nokia Corporation - initial contribution.
-//
-// Contributors:
-//
-// Description:
-// wins/specific/winscomm.h
-// 
-//
-
-#ifndef __M32COMM_H__
-#define __M32COMM_H__
-#include <platform.h>
-//#include <kpower.h>
-#include <d32comm.h>
-#include <e32ver.h>
-//
-const TInt KCommsMajorVersionNumber=1;
-const TInt KCommsMinorVersionNumber=1;
-const TInt KCommsBuildVersionNumber=KE32BuildVersionNumber;
-
-//
-enum TStopMode {EStopNormal,EStopPwrDown,EStopEmergency};
-//
-//
-class DChannelComm;
-class DComm : public DBase
-	{
-public:
-	virtual TInt Start() =0;
-	virtual void Stop(TStopMode aMode) =0;
-	virtual void Break(TBool aState) =0;
-	virtual void Write(DThread*,TAny*,TInt) = 0;
-	virtual void Read(DThread*,TAny*,TInt) = 0;
-	virtual void NotifySignals(DThread*, TInt) = 0;
-	virtual void NotifyDataAvailable() = 0;
-	virtual TUint Signals() const =0;
-	virtual void SetSignals(TUint aSetMask,TUint aClearMask) =0;
-	virtual TInt ValidateConfig(const TCommConfigV01 &aConfig) const =0;
-	virtual void Configure(TCommConfigV01 &aConfig) =0;
-	virtual void Caps(TDes8 &aCaps) const =0;
-	virtual void CheckConfig(TCommConfigV01& aConfig)=0;
-	virtual TDfcQue* DfcQ(TInt aUnit)=0;
-	inline void SetCurrent(TInt aCurrent);
-	inline TBool Transmitting();
-	virtual TInt RxCount() =0;
-	virtual void ResetBuffers(TBool) = 0;
-	virtual TInt SetRxBufferSize(TInt aSize) = 0;
-	virtual TInt RxBufferSize() =0;
-	virtual TDes8* RxBuffer() =0;
-	virtual TBool AreAnyPending() = 0;
-	virtual void ReadCancel() = 0;
-	virtual void WriteCancel() = 0;
-	virtual void SignalChangeCancel() = 0;
-	virtual inline TBool LineFail() =0;
-
-public:
-	DChannelComm *iLdd;
-	TBool iTransmitting;
-	TUint8 * iInBufPtr;
-	TUint8 * iOutBufPtr;
-	};
-
-
-class DDeviceComm : public DLogicalDevice
-	{
-public:
-	DDeviceComm();
-	virtual TInt Install();
-	virtual void GetCaps(TDes8 &aDes) const;
-	virtual TInt Create(DLogicalChannelBase*& aChannel);
-	};
-
-//class DCommPowerHandler;
-class DChannelComm : public DLogicalChannel
-	{
-public:
-	enum TState {EOpen,EActive,EClosed};
-	enum TRequest {ERx=1, ETx=2, ESigChg=4, ERxDA=8, EBreak=16, EAll=0xff};
-
-	DChannelComm();
-	~DChannelComm();
-	inline void SetStatus(TState aStatus);
-	TInt TurnaroundSet(TUint aNewTurnaroundMilliSeconds);
-	TBool TurnaroundStopTimer();
-	TInt TurnaroundClear();
-	static void TurnaroundStartDfc(TAny* aSelf);
-	void TurnaroundStartDfcImplementation(TBool inIsr);
-	static void TurnaroundTimeout(TAny* aSelf);
-	void TurnaroundTimeoutImplementation(void);
-
-protected:
-	virtual TInt DoCreate(TInt aUnit, const TDesC8* aInfo, const TVersion& aVer);
-	virtual void HandleMsg(TMessageBase* aMsg);
-	void DoCancel(TInt aMask);
-	TInt DoControl(TInt aId, TAny* a1, TAny* a2);
-	TInt DoRequest(TInt aId, TRequestStatus* aStatus, TAny* a1, TAny* a2);
-	void Start();
-	void Shutdown();
-	void BreakOn();
-	void BreakOff();
-	void ResetBuffers(TBool aResetTx);
-	void DoCompleteRx();
-	void DoCompleteTx();
-	void DoSignalNotify();
-	void DoRxDataAvailable();
-	void Complete(TInt aMask, TInt aReason);
-	inline void CompleteRead()	{ iRxCompleteDfc.Add(); }
-	inline void CompleteWrite() { iTxCompleteDfc.Add(); }
-protected:
-	inline void Write(DThread* aT, TAny* aP, TInt aL) {((DComm*)iPdd)->Write(aT, aP,aL);}
-	inline void Read(DThread* aT, TAny* aP, TInt aL) {((DComm*)iPdd)->Read(aT, aP,aL);}
-	inline void NotifySignals(DThread* aThread, TInt aMask) {((DComm*)iPdd)->NotifySignals(aThread, aMask);}
-	inline void NotifyDataAvailable() {((DComm*)iPdd)->NotifyDataAvailable(); }
-	inline TInt PddStart();
-	inline void Stop(TStopMode aMode);
-	inline void PddBreak(TBool aState);
-	inline TUint Signals() const;
-	inline void SetSignals(TUint aSetMask,TUint aClearMask);
-	inline TInt ValidateConfig(const TCommConfigV01 &aConfig) const;
-	inline void PddConfigure(TCommConfigV01 &aConfig);
-	inline void PddCaps(TDes8 &aCaps) const;
-	inline void PddCheckConfig(TCommConfigV01& aConfig);
-	inline TBool Transmitting();
-	inline TInt BufferSize();
-	inline void ReadCancel();
-	inline void WriteCancel();
-	inline void SignalChangeCancel();
-
-	static void FinishBreakDfc(TAny* aSelf);
-	void QueueFinishBreakDfc();
-	static void FinishBreak(TAny* aSelf);
-	void FinishBreakImplementation(TInt aBreakError);
-private:
-//	static void PowerUpDfc(TAny* aPtr);
-//	static void PowerDownDfc(TAny* aPtr);
-	static void CompleteRxDfc(TAny* aPtr);
-	static void CompleteTxDfc(TAny* aPtr);
-	static void SignalNotifyDfc(TAny* aPtr);
-	static void RxDataAvailableDfc(TAny* aPtr);
-	inline TInt RxCount();
-	inline TInt RxBufferSize();
-	inline TDes8* RxBuffer();
-	inline TInt SetRxBufferSize(TInt aSize);
-	inline TBool AreAnyPending() const;
-//	void UpdateSignals();
-	void UpdateAndProcessSignals();
-	void InitiateRead(TAny* aRxDes, TInt aLength);
-	void InitiateWrite(TAny* aTxDes, TInt aLength);
-	void InitiateNotifySignals(TAny* aResult, TInt aMask);
-	void NotifyReadDataAvailable();
-//	TUint FailSignals(TUint aHandshake);
-//	TUint HoldSignals(TUint aHandshake);
-//	TUint FlowControlSignals(TUint aHandshake);
-//	TUint AutoSignals(TUint aHandshake);
-	TInt SetConfig(TCommConfigV01& aConfig);
-//	void CheckOutputHeld();
-//	void ReleaseBuffers();
-	inline TBool LineFail();
-
-	// Min Turnaround time between Rx and Tx
-	TUint		iTurnaroundMicroSeconds;		// delay after a receive before transmission in us
-	TUint		iTurnaroundMinMilliSeconds;		// delay after a receive before transmission in ms
-	TUint       iTurnaroundTimerStartTime;      // stores the start time of the turnaround timer.
-	TUint8      iTurnaroundTimerStartTimeValid; // stores turnaround timer status 0 after boot, 1 if the timestamp is valid, and 2 if invalid
-	TUint8		iTurnaroundTimerRunning;		// a receive has started the timer
-	TUint8		iTurnaroundTransmitDelayed;		// a transmission is held until time elapses after a receive
-	TUint8		iSpare;
-	NTimer		iTurnaroundTimer;				// used to delay transmission after a receive
-	TDfc		iTurnaroundDfc;					// used in interrupt space, to trigger a call in user space
-
-	TAny*		iTurnaroundTxDesPtr;			// client descriptor awaiting transmission
-	TInt		iTurnaroundTxDesLength;			// initial size of tx descriptor
-
-	// Breaks
-	TTickLink iBreakTimer;
-	TDfc		 iBreakDfc;
-	TRequestStatus* iBreakStatus;
-	TInt		iBreakTimeMicroSeconds;
-	TBool 	iTurnaroundBreakDelayed;
-	TAny*		iBreakDelayedTxDesPtr;			// client descriptor awaiting transmission
-	TInt		iBreakDelayedTxDesLength;			// initial size of tx descriptor
-	TBool		iBreakDelayedTx;
-public:
-	// Port configuration
-	TCommConfigV01 iConfig;
-
-	// General items
-	DThread* iClient;
-	TAny* iClientDestPtr;
-//	DCommPowerHandler* iPowerHandler;
-//	TDfc iPowerUpDfc;
-//	TDfc iPowerDownDfc;
-//	TUint32 iPowerDownMask;
-	TState iStatus;
-	TDfc iRxCompleteDfc;
-	TDfc iTxCompleteDfc;
-	TDfc iRxDataAvailableDfc;
-	TDfc iSigNotifyDfc;
-	TUint iFlags;				//
-	TUint iSignals;				// State of handshake lines
-//	TUint iFailSignals;			// 1 bit means line low causes line fail error
-//	TUint iHoldSignals;			// 1 bit means line low halts TX
-//	TUint iFlowControlSignals;	// 1 bit means signal is used for RX flow control
-//	TUint iAutoSignals;			// 1 bit means signal is high when channel is open
-	TBool iShutdown;			// ETrue means device is being closed
-	TBool iMsgHeld;				// ETrue means a message has been held up waiting power on
-
-	// RX client related items
-	TInt iRxError;
-	TRequestStatus* iRxStatus;
-
-
-	// TX client related items
-	TInt iTxError;
-	TRequestStatus* iTxStatus;
-
-	// DataAvailable client related items
-	TInt iRxDAError;
-	TRequestStatus* iRxDAStatus;
-
-	// Signal change notification
-	TInt iSignalError;
-	TRequestStatus* iSignalStatus;	
-	TUint* iClientSignalResultPtr;	//ptr to uint in client address space
-	TUint iSignalResult;			//holds result of the signal (in Symbian OS values)
-	};
-
-//class DCommPowerHandler : public DPowerHandler
-//	{
-//public:
-//	DCommPowerHandler(DChannelComm* aChannel);
-//	virtual TInt DoPowerUp();
-//	virtual void DoPowerDown(TUint32 aPowerDownMask);
-//	virtual void DoEmergencyPowerDown();
-//public:
-//	DChannelComm* iChannel;
-//	};
-
-#include "winscomm.inl"
-
-#endif