diff -r e1b950c65cb4 -r 837f303aceeb epoc32/include/d32comm.h --- a/epoc32/include/d32comm.h Wed Mar 31 12:27:01 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,572 +0,0 @@ -// Copyright (c) 1995-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: -// e32\include\d32comm.h -// -// - -//#define _DEBUG_DEVCOMM - -/** -@file -@publishedPartner -@released -*/ - -#ifndef __D32COMM_H__ -#define __D32COMM_H__ -#include -#include - -/** - Enumeration of number of data bits for serial port configuration. - Typically, these values are used to initialize the iDataBits of - TCommConfigV01 before calling DComm::Configure() or any other serial - comm API to configure the serial port's databits size. - */ -enum TDataBits {EData5,EData6,EData7,EData8}; -/** - Enumeration of number of stop bits for serial port configuration. - Typically, these values are used to initialize the iStopBits of - TCommConfigV01 before calling DComm::Configure() or any other serial - comm API to configure the serial port's stopbits. - */ -enum TStopBits {EStop1,EStop2}; -/** - Enumeration of types of parity for serial port configuration. - Typically, these values are used to initialize the iParity of - TCommConfigV01 before calling DComm::Configure() or any other serial - comm API to configure the serial port's parity setting. - */ -enum TParity {EParityNone,EParityEven,EParityOdd,EParityMark,EParitySpace}; -/** - Enumeration of baud rates in bits per second for serial port configuration. - * e.g EBps115200 is for 115200Bps data rate - Typically, these values are used to initialize the iRate of TCommConfigV01 - before calling DComm::Configure() or any other serial comm API to configure - the serial port's baud rate. - */ -enum TBps - { - EBps50, - EBps75, - EBps110, - EBps134, - EBps150, - EBps300, - EBps600, - EBps1200, - EBps1800, - EBps2000, - EBps2400, - EBps3600, - EBps4800, - EBps7200, - EBps9600, - EBps19200, - EBps38400, - EBps57600, - EBps115200, - EBps230400, - EBps460800, - EBps576000, - EBps1152000, - EBps4000000, - EBps921600, - EBpsAutobaud=0x40000000, - EBpsSpecial=0x80000000, - }; -/** - Enumeration of Fifo status (enable and disable) for serial port configuration. - Typically, these values are used to initialize the iFifo of TCommConfigV01 - before calling DComm::Configure() or any other serial comm API to configure - the serial port's fifo. - */ -enum TFifo - { - EFifoEnable,EFifoDisable, - }; -/** - Enumeration of SIR status (enable and disable) for serial comm configuration. - Typically, these values are used to initialize the iSIREnable of TCommConfigV01 - before calling DComm::Configure() or any other serial comm API to configure - the serial port's SIR (infrared) settings. - */ -enum TSir - { - ESIREnable,ESIRDisable, - }; - -enum TFlowControl - { - EFlowControlOn,EFlowControlOff - }; -// - -const TInt KConfigMaxTerminators=4; -// DTE Constants -const TUint KConfigObeyXoff=0x01; -const TUint KConfigSendXoff=0x02; -const TUint KConfigObeyCTS=0x04; -const TUint KConfigFailCTS=0x08; -const TUint KConfigObeyDSR=0x10; -const TUint KConfigFailDSR=0x20; -const TUint KConfigObeyDCD=0x40; -const TUint KConfigFailDCD=0x80; -const TUint KConfigFreeRTS=0x100; -const TUint KConfigFreeDTR=0x200; -// DCE Constants -const TUint KConfigObeyDTR=0x400; -const TUint KConfigFailDTR=0x800; -const TUint KConfigObeyRTS=0x1000; -const TUint KConfigFailRTS=0x2000; -const TUint KConfigFreeDSR=0x4000; -const TUint KConfigFreeCTS=0x8000; -const TUint KConfigFreeDCD=0x10000; -const TUint KConfigFreeRI=0x20000; -const TUint KConfigWriteBufferedComplete=0x80000000; -// -const TUint KConfigParityErrorFail=0; -const TUint KConfigParityErrorIgnore=0x01; -const TUint KConfigParityErrorReplaceChar=0x02; -const TUint KConfigXonXoffDebug=0x80000000; -// -const TUint KSignalCTS=0x01; -const TUint KSignalDSR=0x02; -const TUint KSignalDCD=0x04; -const TUint KSignalRNG=0x08; -const TUint KSignalRTS=0x10; -const TUint KSignalDTR=0x20; -const TUint KSignalBreak=0x40; - -const TUint KSignalChanged=0x1000; -const TUint KCTSChanged=KSignalCTS*KSignalChanged; -const TUint KDSRChanged=KSignalDSR*KSignalChanged; -const TUint KDCDChanged=KSignalDCD*KSignalChanged; -const TUint KRNGChanged=KSignalRNG*KSignalChanged; -const TUint KRTSChanged=KSignalRTS*KSignalChanged; -const TUint KDTRChanged=KSignalDTR*KSignalChanged; -const TUint KBreakChanged=KSignalBreak*KSignalChanged; - -const TUint KSignalDTEOutputs=KSignalRTS|KSignalDTR; -const TUint KSignalDTEInputs=KSignalCTS|KSignalDSR|KSignalDCD|KSignalRNG; -const TUint KSignalDCEInputs=KSignalDTEOutputs; -const TUint KSignalDCEOutputs=KSignalDTEInputs; - -const TUint KConfigSIRPulseWidthMaximum=0x01; -const TUint KConfigSIRPulseWidthMinimum=0x02; - -// more SIRSettings for selecting the IR range -const TUint KConfigSIRShutDown=0x10; -const TUint KConfigSIRMinimumRange=0x20; -const TUint KConfigSIRMediumRange=0x40; -const TUint KConfigSIRMaximumRange=0x80; - -/** - Comms configuration structure. - Class to hold the configuration settings for serial comm port - - This class provides the serial port configuration block interface of serial comms (c32). - A serial comm client sets up a serial port before use, by providing a configuration block. - TCommConfigV01 is initialized with settings for serial port and used to configure the - serial port by calling DComm::Configure(TCommConfigV01 &aConfig) or any other serial comm - API to configure the serial port. - */ -class TCommConfigV01 - { -public: - /** - Data rate in bits per second. - @see TBps - */ - TBps iRate; - /** - Character width in bits. - @see TDataBits - */ - TDataBits iDataBits; - /** - Number of stop bits. - @see TStopBits - */ - TStopBits iStopBits; - /** - Type of parity. - @see TParity - */ - TParity iParity; - /** - Type of Handshaking control. - Possible values can be KConfigObeyXXX or KConfigSendXXX or KConfigFailXXX or KConfigFreeXXX - */ - TUint iHandshake; - /** - Type of error to generate on a parity failure. - Possible values can be KConfigParityErrorFail or KConfigParityErrorIgnore or KConfigParityErrorReplaceChar - */ - TUint iParityError; - /** - FIFO status, enabled or disabled. - @see TFifo - */ - TUint iFifo; - /** - Special data rate, not listed under TBps. Use this, when iRate is set to EBpsSpecial - */ - TInt iSpecialRate; - /** - Count of number of special characters used as terminators (<=KConfigMaxTerminators) - */ - TInt iTerminatorCount; - /** - Array of special characters which can be used as terminators - */ - TText8 iTerminator[KConfigMaxTerminators]; - /** - Character used to signal the transmitter to resume sending when using XON/XOFF handshaking - i.e character used as XON - software flow control - */ - TText8 iXonChar; - /** - Character used to signal the transmitter to suspend sending when using XON/XOFF handshaking - i.e character used as XOFF - software flow control - */ - TText8 iXoffChar; - /** - Character used to replace the characters received with a parity error. - This is used when iParityError is set to KConfigParityErrorReplaceChar - */ - TText8 iParityErrorChar; - /** - Switch the SIR encoding hardware on and off. - @see TSir - */ - TSir iSIREnable; - /** - SIR hardware control setting. Possible value can be one of KConfigSIRXXX - */ - TUint iSIRSettings; - }; -/** - Package buffer for a TCommConfigV01 object. - - TCommConfig packages the comms configuration structure TCommConfigV01 to a buffer. - This is used with API of serial comms like RComm::Config(TDes8 &aConfig) and - RComm::SetConfig(TDesC8 &aConfig) where config structure is passed as buffer. - - @see TCommConfigV01 - */ -typedef TPckgBuf TCommConfig; - -// TCommConfigV02 is deprecated. -// -class TCommConfigV02: public TCommConfigV01 - { -public: - TInt iTxShutdownTimeout; - }; - -// TCommConfig2 is deprecated -// -typedef TPckgBuf TCommConfig2; - -// -const TUint KCapsBps50=0x00000001; -const TUint KCapsBps75=0x00000002; -const TUint KCapsBps110=0x00000004; -const TUint KCapsBps134=0x00000008; -const TUint KCapsBps150=0x00000010; -const TUint KCapsBps300=0x00000020; -const TUint KCapsBps600=0x00000040; -const TUint KCapsBps1200=0x00000080; -const TUint KCapsBps1800=0x00000100; -const TUint KCapsBps2000=0x00000200; -const TUint KCapsBps2400=0x00000400; -const TUint KCapsBps3600=0x00000800; -const TUint KCapsBps4800=0x00001000; -const TUint KCapsBps7200=0x00002000; -const TUint KCapsBps9600=0x00004000; -const TUint KCapsBps19200=0x00008000; -const TUint KCapsBps38400=0x00010000; -const TUint KCapsBps57600=0x00020000; -const TUint KCapsBps115200=0x00040000; -const TUint KCapsBps230400=0x00080000; -const TUint KCapsBps460800=0x00100000; -const TUint KCapsBps576000 =0x00200000; -const TUint KCapsBps1152000=0x00400000; -const TUint KCapsBps4000000=0x00800000; -const TUint KCapsBps921600=0x01000000; -const TUint KCapsBpsAutobaud=0x40000000; -const TUint KCapsBpsSpecial=0x80000000; -// -const TUint KCapsData5=0x01; -const TUint KCapsData6=0x02; -const TUint KCapsData7=0x04; -const TUint KCapsData8=0x08; -// -const TUint KCapsStop1=0x01; -const TUint KCapsStop2=0x02; -// -const TUint KCapsParityNone=0x01; -const TUint KCapsParityEven=0x02; -const TUint KCapsParityOdd=0x04; -const TUint KCapsParityMark=0x08; -const TUint KCapsParitySpace=0x10; -// -const TUint KCapsSignalCTSSupported=0x01; -const TUint KCapsSignalDSRSupported=0x02; -const TUint KCapsSignalDCDSupported=0x04; -const TUint KCapsSignalRNGSupported=0x08; -const TUint KCapsSignalRTSSupported=0x10; -const TUint KCapsSignalDTRSupported=0x20; -// -const TUint KCapsObeyXoffSupported=0x01; -const TUint KCapsSendXoffSupported=0x02; -const TUint KCapsObeyCTSSupported=0x04; -const TUint KCapsFailCTSSupported=0x08; -const TUint KCapsObeyDSRSupported=0x10; -const TUint KCapsFailDSRSupported=0x20; -const TUint KCapsObeyDCDSupported=0x40; -const TUint KCapsFailDCDSupported=0x80; -const TUint KCapsFreeRTSSupported=0x100; -const TUint KCapsFreeDTRSupported=0x200; -// DCE Constants -const TUint KCapsObeyRTSSupported=0x400; -const TUint KCapsObeyDTRSupported=0x800; -// -const TUint KCapsHasFifo=0x01; -// -const TUint KCapsSIR115kbps=0x01; -const TUint KCapsSIR2400bpsOnly=0x02; -const TUint KCapsSIR4Mbs=0x04; -// -const TUint KNotifySignalsChangeSupported=0x01; -const TUint KNotifyRateChangeSupported=0x02; -const TUint KNotifyDataFormatChangeSupported=0x04; -const TUint KNotifyHandshakeChangeSupported=0x08; -const TUint KNotifyBreakSupported=0x10; -const TUint KNotifyFlowControlChangeSupported=0x20; -const TUint KNotifyDataAvailableSupported=0x40; -const TUint KNotifyOutputEmptySupported=0x80; -// -const TUint KCapsRoleSwitchSupported=0x01; -// -const TUint KCapsFlowControlStatusSupported=0x01; -// -const TUint KRateChanged=0x01; -const TUint KDataFormatChanged=0x02; -const TUint KHandshakeChanged=0x04; -// -class TCommCapsV01 - { -public: - TUint iRate; - TUint iDataBits; - TUint iStopBits; - TUint iParity; - TUint iHandshake; - TUint iSignals; - TUint iFifo; - TUint iSIR; - }; -typedef TPckgBuf TCommCaps; - -class TCommCapsV02 : public TCommCapsV01 - { -public: - TUint iNotificationCaps; - TUint iRoleCaps; - TUint iFlowControlCaps; - }; -typedef TPckgBuf TCommCaps2; - -class TCommCapsV03 : public TCommCapsV02 - { -public: - TBool iBreakSupported; - }; -typedef TPckgBuf TCommCaps3; - -// -class TCapsDevCommV01 - { -public: - TVersion version; - }; - -class TCommNotificationV01 - { -public: - TUint iChangedMembers; - TBps iRate; - TDataBits iDataBits; - TStopBits iStopBits; - TParity iParity; - TUint iHandshake; - }; -typedef TPckgBuf TCommNotificationPckg; -// -const TUint KDataAvailableNotifyFlag=0x80000000; -// -#ifdef _DEBUG_DEVCOMM -class TCommDebugInfo - { -public: - TBool iRxBusy; - TBool iRxHeld; - TInt iRxLength; - TInt iRxOffset; - TInt iRxIntCount; - TInt iRxErrCount; - TInt iRxBufCount; - TBool iTxBusy; - TBool iTxHeld; - TInt iTxLength; - TInt iTxOffset; - TInt iTxIntCount; - TInt iTxErrCount; - TInt iTxBufCount; - TBool iDrainingRxBuf; - TBool iFillingTxBuf; - TBool iRunningDfc; - TInt iDfcCount; - TInt iDfcReqSeq; - TInt iDfcHandlerSeq; - TInt iDoDrainSeq; - TBool iTxDfcPend; - TBool iRxDfcPend; - TInt iTxChars, iRxChars; - TInt iTxXon, iTxXoff, iRxXon, iRxXoff; - }; -typedef TPckgBuf TCommDebugInfoPckg; -#endif -// -class RBusDevComm : public RBusLogicalChannel - { -public: - enum TVer {EMajorVersionNumber=1,EMinorVersionNumber=0,EBuildVersionNumber=KE32BuildVersionNumber}; - enum TRequest - { - ERequestRead=0x0,ERequestReadCancel=0x1, - ERequestWrite=0x1,ERequestWriteCancel=0x2, - ERequestBreak=0x2,ERequestBreakCancel=0x4, - ERequestNotifySignalChange=0x3,ERequestNotifySignalChangeCancel=0x8, - }; - enum TControl - { - EControlConfig,EControlSetConfig,EControlCaps, - EControlSignals,EControlSetSignals, - EControlQueryReceiveBuffer,EControlResetBuffers, - EControlReceiveBufferLength,EControlSetReceiveBufferLength, - EControlMinTurnaroundTime,EControlSetMinTurnaroundTime, -#ifdef _DEBUG_DEVCOMM - EControlDebugInfo -#endif - }; -public: -#ifndef __KERNEL_MODE__ - inline TInt Open(TInt aUnit); - inline TVersion VersionRequired() const; - inline void Read(TRequestStatus &aStatus,TDes8 &aDes); - inline void Read(TRequestStatus &aStatus,TDes8 &aDes,TInt aLength); - inline void ReadOneOrMore(TRequestStatus &aStatus,TDes8 &aDes); - inline void ReadCancel(); - inline void Write(TRequestStatus &aStatus,const TDesC8 &aDes); - inline void Write(TRequestStatus &aStatus,const TDesC8 &aDes,TInt aLength); - inline void WriteCancel(); - inline void Break(TRequestStatus &aStatus,TInt aTime); - inline void BreakCancel(); - inline void Config(TDes8 &aConfig); - inline TInt SetConfig(const TDesC8 &aConfig); - inline void Caps(TDes8 &aCaps); - inline TUint Signals(); - inline void SetSignals(TUint aSetMask,TUint aClearMask); - inline TInt QueryReceiveBuffer(); - inline void ResetBuffers(); - inline TInt ReceiveBufferLength(); - inline TInt SetReceiveBufferLength(TInt aLength); - inline void NotifySignalChange(TRequestStatus& aStatus,TUint& aSignals,TUint aSignalMask=0x3F); - inline void NotifySignalChangeCancel(); - inline void NotifyReceiveDataAvailable(TRequestStatus& aStatus); - inline void NotifyReceiveDataAvailableCancel(); - inline TUint MinTurnaroundTime(); - inline TInt SetMinTurnaroundTime(TUint aMicroSeconds); -#ifdef _DEBUG_DEVCOMM - inline void DebugInfo(TDes8 &aInfo); -#endif -#endif - }; - -class RBusDevCommDCE : public RBusLogicalChannel - { -public: - enum TVer {EMajorVersionNumber=1,EMinorVersionNumber=0,EBuildVersionNumber=KE32BuildVersionNumber}; - enum TRequest - { - ERequestRead=0x0,ERequestReadCancel=0x1, - ERequestWrite=0x1,ERequestWriteCancel=0x2, - ERequestBreak=0x2,ERequestBreakCancel=0x4, - ERequestNotifySignalChange=0x3,ERequestNotifySignalChangeCancel=0x8, - ERequestNotifyFlowControlChange=0x4,ERequestNotifyFlowControlChangeCancel=0x10, - ERequestNotifyConfigChange=0x5,ERequestNotifyConfigChangeCancel=0x20 - }; - enum TControl - { - EControlConfig,EControlSetConfig,EControlCaps, - EControlSignals,EControlSetSignals, - EControlQueryReceiveBuffer,EControlResetBuffers, - EControlReceiveBufferLength,EControlSetReceiveBufferLength, - EControlFlowControlStatus, -#ifdef _DEBUG_DEVCOMM - EControlDebugInfo -#endif - }; -public: -#ifndef __KERNEL_MODE__ - inline TInt Open(TInt aUnit); - inline TVersion VersionRequired() const; - inline void Read(TRequestStatus &aStatus,TDes8 &aDes); - inline void Read(TRequestStatus &aStatus,TDes8 &aDes,TInt aLength); - inline void ReadOneOrMore(TRequestStatus &aStatus,TDes8 &aDes); - inline void ReadCancel(); - inline void Write(TRequestStatus &aStatus,const TDesC8 &aDes); - inline void Write(TRequestStatus &aStatus,const TDesC8 &aDes,TInt aLength); - inline void WriteCancel(); - inline void Break(TRequestStatus &aStatus,TInt aTime); - inline void BreakCancel(); - inline void Config(TDes8 &aConfig); - inline TInt SetConfig(const TDesC8 &aConfig); - inline void Caps(TDes8 &aCaps); - inline TUint Signals(); - inline void SetSignals(TUint aSetMask,TUint aClearMask); - inline TInt QueryReceiveBuffer(); - inline void ResetBuffers(); - inline TInt ReceiveBufferLength(); - inline TInt SetReceiveBufferLength(TInt aLength); - inline void NotifySignalChange(TRequestStatus& aStatus,TUint& aSignals,TUint aSignalMask=0x3F); - inline void NotifySignalChangeCancel(); - inline void NotifyReceiveDataAvailable(TRequestStatus& aStatus); - inline void NotifyReceiveDataAvailableCancel(); - inline void NotifyFlowControlChange(TRequestStatus& aStatus); - inline void NotifyFlowControlChangeCancel(); - inline void GetFlowControlStatus(TFlowControl& aFlowControl); - inline void NotifyConfigChange(TRequestStatus& aStatus, TDes8& aNewConfig); - inline void NotifyConfigChangeCancel(); -#ifdef _DEBUG_DEVCOMM - inline void DebugInfo(TDes8 &aInfo); -#endif -#endif - }; - -#include -#endif