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