#include <cs_port.h>
Link against: c32.lib
class CPort : public CObject |
Public Member Type Definitions | |
---|---|
typedef | TCommAccess TAccess |
Base class for implementations of serial protocol module ports. Its functions are called by the comms server in response to client calls to RComm.
The class implements CObject to obtain reference counting behaviour. The reference count is incremented when a port is first created, and, for ports in shared mode, on every later opening.
CPort is an abstract class which defines many pure virtual functions which derived classes must implement. Most of these pure virtual functions correspond to the client interface of the RComm class.
Created when the first client does an Open request passing its name. Destroyed only when it deletes itself (following a call to Destruct).
typedef TCommAccess | TAccess |
IMPORT_C | CPort | ( | ) |
Default constructor. Derived classes should implement a NewL() function to perform their two-phase construction.
See also: TSerialNewL
IMPORT_C | ~CPort | ( | ) | [virtual] |
Destructor.
Closes the owner (which is our CSerial) and removes any timers.
Derived classes can implement the destructor but must only call synchronous functions within it. Any cleanup requiring asynchronous operations must be done in Destruct().
TBool | AreAnyPending | ( | ) |
Return true if there is an outstanding Read/Write/Break on the CSY.
void | Break | ( | TInt | aTime | ) | [pure virtual] |
Specifies the protocol for setting a break condition at the port. It is called by the comms server in response to a RComm::Break() request from the client.
When the break is complete, the function should call BreakCompleted().
Parameters | |
---|---|
aTime | Time period to break for in microseconds |
void | BreakCancel | ( | ) | [pure virtual] |
Specifies the protocol for cancelling a break request. It is called by the comms server in response to a RComm::BreakCancel() request from the client.
The implementation should abort any processing which was taking place as a result of the break request. Do not call BreakCompleted().
IMPORT_C void | BreakCompleted | ( | TInt | anError | ) |
Tells the comms server that a break request initiated through Break() is complete.
The comms server will then notify the client that its break request is complete.
Called by C32 server or CSY.
Parameters | |
---|---|
anError | Return code to be passed back to the client through its TRequestStatus argument. |
IMPORT_C void | BreakNotifyCompleted | ( | TInt | anError | ) |
Tells the comms server that a request initiated through NotifyBreak() is complete.
The comms server will then notify the client that its request is complete.
Called by the CSY module.
Parameters | |
---|---|
anError | Error code |
IMPORT_C void | Close | ( | ) | [virtual] |
Reimplemented from CObject::Close()
Closes the port.
The base class implements CObject::Close() to handle reference counting on the port. It decrements the reference count, and calls Destruct() if the count is 0.
void | CommBreak | ( | const RMessage2 & | aMessage, |
CCommSession * | aClient | |||
) |
Perform a break making sure of the port's owner
Parameters | |
---|---|
aMessage | message from the client |
aClient | handle to the client session. |
void | CommBreakCancel | ( | TInt | aHandle, |
CCommSession * | aClient | |||
) |
Cancel outstanding break
Parameters | |
---|---|
aHandle | handle to the client |
aClient | handle to the client session. |
void | CommCancel | ( | TInt | aHandle, |
CCommSession * | aClient | |||
) |
Cancel any outstanding requests
Parameters | |
---|---|
aHandle | handle to the client |
aClient | handle to the client session. |
void | CommCaps | ( | const RMessage2 & | aMessage, |
CCommSession & | aSession | |||
) |
Read capabilities
Parameters | |
---|---|
aMessage | message from the client |
aSession | handle to the client session. |
void | CommConfig | ( | const RMessage2 & | aMessage, |
CCommSession & | aSession | |||
) | const |
Get config
Parameters | |
---|---|
aMessage | message from the client |
aSession | handle to the client session. |
void | CommDebugState | ( | const RMessage2 & | aMessage, |
CCommSession & | aSession | |||
) |
void | CommGetFlowControlStatus | ( | const RMessage2 & | aMessage, |
CCommSession * | aClient | |||
) |
Get flow control state ON/OFF from CSY module
Parameters | |
---|---|
aMessage | handle to the IPC message from the client |
aClient | pointer to the Comm session |
void | CommGetRole | ( | const RMessage2 & | aMessage, |
CCommSession * | aClient | |||
) |
Get role DCE/DTE from CSY module
Parameters | |
---|---|
aMessage | handle to the IPC message from the client |
aClient | pointer to the Comm session |
void | CommGetServerConfig | ( | const RMessage2 & | aMessage, |
CCommSession & | aSession | |||
) |
Get server config
Parameters | |
---|---|
aMessage | message from the client |
aSession | handle to the client session. |
void | CommNotifyBreak | ( | const RMessage2 & | aMessage, |
CCommSession * | aClient | |||
) |
Set break signal notifying on
Parameters | |
---|---|
aMessage | handle to the IPC message from the client |
aClient | pointer to the Comm session |
void | CommNotifyBreakCancel | ( | TInt | aHandle, |
CCommSession * | aClient | |||
) |
Cancel outstanding break notification
Parameters | |
---|---|
aHandle | Handle to the session |
aClient | pointer to the Comm session |
void | CommNotifyConfigChange | ( | const RMessage2 & | aMessage, |
CCommSession * | aClient | |||
) |
Set configuration change (data format, speed, ...) notifying on
Parameters | |
---|---|
aMessage | handle to the IPC message from the client |
aClient | pointer to the Comm session |
void | CommNotifyConfigChangeCancel | ( | TInt | aHandle, |
CCommSession * | aClient | |||
) |
Cancel outstanding configuration change notification
Parameters | |
---|---|
aHandle | Handle to the session |
aClient | pointer to the Comm session |
void | CommNotifyDataAvailable | ( | const RMessage2 & | aMessage, |
CCommSession * | aClient | |||
) |
Set input buffer data notifying on
Parameters | |
---|---|
aMessage | handle to the IPC message from the client |
aClient | pointer to the Comm session |
void | CommNotifyDataAvailableCancel | ( | TInt | aHandle, |
CCommSession * | aClient | |||
) |
Cancel outstanding input buffer data notification
Parameters | |
---|---|
aHandle | Handle to the session |
aClient | pointer to the Comm session |
void | CommNotifyFlowControlChange | ( | const RMessage2 & | aMessage, |
CCommSession * | aClient | |||
) |
Set flow control notifying on
Parameters | |
---|---|
aMessage | handle to the IPC message from the client |
aClient | pointer to the Comm session |
void | CommNotifyFlowControlChangeCancel | ( | TInt | aHandle, |
CCommSession * | aClient | |||
) |
Cancel outstanding flow control notification
Parameters | |
---|---|
aHandle | Handle to the session |
aClient | pointer to the Comm session |
void | CommNotifyOutputEmpty | ( | const RMessage2 & | aMessage, |
CCommSession * | aClient | |||
) |
Set output buffer empty notifying on
Parameters | |
---|---|
aMessage | handle to the IPC message from the client |
aClient | pointer to the Comm session |
void | CommNotifyOutputEmptyCancel | ( | TInt | aHandle, |
CCommSession * | aClient | |||
) |
Cancel outstanding output buffer empty notification
Parameters | |
---|---|
aHandle | Handle to the session |
aClient | pointer to the Comm session |
void | CommNotifySignalChange | ( | const RMessage2 & | aMessage, |
CCommSession * | aClient | |||
) |
Set DCE/DTE signal notifying on
Parameters | |
---|---|
aMessage | handle to the IPC message from the client |
aClient | pointer to the Comm session |
void | CommNotifySignalChangeCancel | ( | TInt | aHandle, |
CCommSession * | aClient | |||
) |
Cancel outstanding signal notification
Parameters | |
---|---|
aHandle | Handle to the session |
aClient | pointer to the Comm session |
void | CommQueryReceiveBuffer | ( | const RMessage2 & | aMessage, |
CCommSession & | aSession | |||
) | const |
Set the receive buffer length
Parameters | |
---|---|
aMessage | message from the client |
aSession | handle to the client session. |
void | CommRead | ( | const RMessage2 & | aMessage, |
CCommSession * | aClient | |||
) |
Perform a read making sure of the port's owner
Parameters | |
---|---|
aMessage | message from the client |
aClient | handle to the client session. |
void | CommReadCancel | ( | TInt | aHandle, |
CCommSession * | aClient | |||
) |
Cancel outstanding read
Parameters | |
---|---|
aHandle | handle to the client |
aClient | handle to the client session. |
void | CommReceiveBufferLength | ( | const RMessage2 & | aMessage, |
CCommSession & | aSession | |||
) | const |
read the receive buffer length
Parameters | |
---|---|
aMessage | message from the client |
aSession | handle to the client session. |
void | CommResetBuffers | ( | const RMessage2 & | aMessage, |
CCommSession & | aSession | |||
) |
Set the receive buffer length
Parameters | |
---|---|
aMessage | message from the client |
aSession | handle to the client session. |
void | CommSetAccess | ( | const RMessage2 & | aMessage, |
CCommSession & | aSession | |||
) |
set the access mode
Parameters | |
---|---|
aMessage | message from client with the new access mode |
aSession | handle to the session. |
void | CommSetAccessCancel | ( | TInt | aHandle, |
CCommSession * | aClient | |||
) |
Cancels an outstanding set access request.
Parameters | |
---|---|
aClient | pointer to the CCommSession client. |
void | CommSetConfig | ( | const RMessage2 & | aMessage, |
CCommSession & | aSession | |||
) |
Set config
Parameters | |
---|---|
aMessage | message from the client |
aSession | handle to the client session. |
void | CommSetReceiveBufferLength | ( | const RMessage2 & | aMessage, |
CCommSession & | aSession | |||
) |
Set the receive buffer length
Parameters | |
---|---|
aMessage | message from the client |
aSession | handle to the client session. |
void | CommSetServerConfig | ( | const RMessage2 & | aMessage, |
CCommSession & | aSession | |||
) |
Set server config
Parameters | |
---|---|
aMessage | message from the client |
aSession | handle to the client session. |
void | CommSetSignalsToMark | ( | const RMessage2 & | aMessage, |
CCommSession & | aSession | |||
) |
Set signal lines
Parameters | |
---|---|
aMessage | message from the client. |
void | CommSetSignalsToSpace | ( | const RMessage2 & | aMessage, |
CCommSession & | aSession | |||
) |
Clear signal lines
Parameters | |
---|---|
aMessage | message from the client. |
void | CommSignals | ( | const RMessage2 & | aMessage, |
CCommSession & | aSession | |||
) |
Read signals
Parameters | |
---|---|
aMessage | message from the client |
aSession | handle to the client session. |
void | CommWrite | ( | const RMessage2 & | aMessage, |
CCommSession * | aClient | |||
) |
Perform a write making sure of the port's owner
Parameters | |
---|---|
aMessage | message from the client |
aClient | handle to the client session. |
void | CommWriteCancel | ( | TInt | aHandle, |
CCommSession * | aClient | |||
) |
Cancel outstanding write
Parameters | |
---|---|
aHandle | handle to the client |
aClient | handle to the client session. |
Tells the comms server that a request initiated through NotifyConfigChange() is complete.
The comms server will then notify the client that its request is complete.
Called by the CSY module.
Parameters | |
---|---|
aNewConfig | Configuration value to pass to client |
anError | Error code |
void | Destruct | ( | ) | [pure virtual] |
Specifies the protocol for port destruction. It is called by the comms server when the last client-side reference to a CPort object has been closed and the CPort must be deleted. The comms server will not delete a CPort other than by calling Destruct().
The implementation should perform any asynchronous shutdown operations on its own resources and, when these operations have completed, should delete this.
IMPORT_C void | FlowControlChangeCompleted | ( | const TFlowControl & | aFlowControl, |
TInt | anError | |||
) |
Tells the comms server that a request initiated through NotifyFlowControlChange() is complete.
The comms server will then notify the client that its request is complete.
Called by the CSY module.
Parameters | |
---|---|
aFlowControl | Flow control to pass to client |
anError | Error code |
void | FreeMemory | ( | ) | [virtual] |
Specifies a protocol by which the comms server can request the protocol to release memory. Typically, an implementation may be able to do this by reducing internal buffers.
The default behaviour is to do nothing.
void | FreeSession | ( | CCommSession * | aSession | ) |
Perform CPort based housekeeping before closing a session
Parameters | |
---|---|
aSession | pointer to the session to free. |
Specifies a protocol for getting the port capabilities. It is called by the comms server in response to a RComm::Caps() request from the client.
Parameters | |
---|---|
aPackage | A TCommCaps package buffer that, on return, holds the port capabilities |
Specifies a protocol for getting the current configuration of the serial port. It is called by the comms server in response to a RComm::GetConfig() request from the client.
Parameters | |
---|---|
aPackage | A packaged TCommConfig buffer, set on return to the current configuration of the serial port |
TInt | GetFlowControlStatus | ( | TFlowControl & | aFlowControl | ) | [pure virtual] |
Gets flow control status. It is called by the comms server in response to a RComm::SetMode() request from the client.
Parameters | |
---|---|
aFlowControl | Flow control status to return to the client |
Specifies a protocol for requesting the size of the serial port buffers. It is called by the comms server in response to a RComm::ReceiveBufferLength() request from the client.
Parameters | |
---|---|
aLength | The current size of the serial port buffers in bytes |
Gets DCE/DTE role. It is called by the comms server in response to a RComm::GetRole() request from the client.
Parameters | |
---|---|
aRole | On return, DCE/DTE role to return to the client |
Specifies a protocol for getting the buffer mode. It is called by the comms server in response to a RComm::Mode() request from the client.
Parameters | |
---|---|
aPackage | A TCommServerConfig package buffer that, on return, holds the current buffer mode settings |
Specifies a protocol for getting the status of the serial port control lines. It is called by the comms server in response to a RComm::GetSignals() request from the client.
Parameters | |
---|---|
aSignals | An integer with the bits set to reflect the status of the handshaking lines. |
Reads data from the client's (the user of the port's) address space.
The client address space pointer is obtained from the aClientBuffer argument to StartRead().
Note:
This function is normally called by the CSY
Note:
Used as part of RComm::Write
See also: RThread::ReadL() for more information on reading data in other address spaces.
Parameters | |
---|---|
aPtr | Not Used. The client data is now obtained from iBlockedWrite. |
aDes | A descriptor (8 bit variant) into which the result of the client address space read operation will be stored |
aOffset | The read offset from the start of the client's descriptor data. |
Writes into the client's (the user of the port's) address space.
The client address space pointer is obtained from the aClientBuffer argument to StartWrite().
Note:
This function is normally called by the CSY
Note:
Used as part of RComm::Read
See also: RThread::WriteL() for more information on writing data to other address spaces.
Parameters | |
---|---|
aPtr | Client address space pointer |
aDes | A descriptor (8 bit variant) into which the result of the client address space read will be stored |
aOffset | The offset from aPtr at which to start reading |
void | InitL | ( | TDesC8 & | aName | ) |
TBool | IsBlockedSetAccessWaiting | ( | CCommSession & | aClient | ) |
Checks if a CommSetAccess() request is waiting for the port.
Parameters | |
---|---|
aClient | The CCommSession client to check against. |
void | NotifyBreak | ( | ) | [pure virtual] |
Specifies the protocol for setting a "break" notification. It is called by the comms server in response to a RComm::NotifyBreak() request from the client.
void | NotifyBreakCancel | ( | ) | [pure virtual] |
Specifies the protocol for cancelling a "break" notification. It is called by the comms server in response to a RComm::NotifyBreakCancel() request from the client.
void | NotifyConfigChange | ( | ) | [pure virtual] |
Specifies the protocol for setting a "configuration change" notification. It is called by the comms server in response to a RComm::NotifyConfigChange() request from the client.
void | NotifyConfigChangeCancel | ( | ) | [pure virtual] |
Specifies the protocol for cancelling a "configuration change" notification. It is called by the comms server in response to a RComm::NotifyConfigChangeCancel() request from the client.
void | NotifyDataAvailable | ( | ) | [pure virtual] |
Specifies the protocol for setting a "data available" notification. It is called
by the comms server in response to a RComm::NotifyDataAvailable() request from the client.
void | NotifyDataAvailableCancel | ( | ) | [pure virtual] |
Specifies the protocol for cancelling a "data available" notification. It is called by the comms server in response to a RComm::NotifyDataAvailableCancel() request from the client.
IMPORT_C void | NotifyDataAvailableCompleted | ( | TInt | anError | ) |
Tells the comms server that a request initiated through NotifyDataAvailable() is complete.
The comms server will then notify the client that its request is complete.
Called by the CSY module.
Parameters | |
---|---|
anError | Error code |
void | NotifyFlowControlChange | ( | ) | [pure virtual] |
Specifies the protocol for setting a "flow control change" notification. It is called by the comms server in response to a RComm::NotifyFlowControlChange() request from the client.
void | NotifyFlowControlChangeCancel | ( | ) | [pure virtual] |
Specifies the protocol for cancelling a "flow control change" notification. It is called by the comms server in response to a RComm::NotifyFlowControlChangeCancel() request from the client.
void | NotifyOutputEmpty | ( | ) | [pure virtual] |
Specifies the protocol for setting a transmit buffer empty notification. It is called by the comms server in response to a RComm::NotifyOutputEmpty() request from the client.
void | NotifyOutputEmptyCancel | ( | ) | [pure virtual] |
Specifies the protocol for cancelling a transmit buffer empty notification. It is called by the comms server in response to a RComm::NotifyOutputEmptyCancel() request from the client.
IMPORT_C void | NotifyOutputEmptyCompleted | ( | TInt | anError | ) |
Tells the comms server that a request initiated through NotifyOutputEmpty() is complete.
The comms server will then notify the client that its request is complete.
Called by the CSY module.
Parameters | |
---|---|
anError | Error code |
void | NotifySignalChange | ( | TUint | aSignalMask | ) | [pure virtual] |
Specifies the protocol for setting a "signal change" notification. It is called by the comms server in response to a RComm::NotifySignalChange() request from the client.
Parameters | |
---|---|
aSignalMask | Signal mask passed by client |
void | NotifySignalChangeCancel | ( | ) | [pure virtual] |
Specifies the protocol for cancelling a "signal change" notification. It is called by the comms server in response to a RComm::NotifySignalChangeCancel() request from the client.
Specifies a protocol for requesting the number of bytes that are currently waiting in the port's receive buffer. It is called by the comms server in response to a RComm::QueryReceiveBuffer() request from the client.
Parameters | |
---|---|
aLength | On return, the number of bytes currently waiting to be read from the receive buffer. |
void | ReadCancel | ( | ) | [pure virtual] |
Specifies the protocol for cancelling reading from the port. It is called by the comms server in response to a RComm::ReadCancel() request from the client or when the iReadTimer timer expires.
The implementation should abort any processing which was taking place as a result of the read request. Do not call ReadCompleted().
IMPORT_C void | ReadCompleted | ( | TInt | anError | ) |
Tells the comms server that a read request initiated through StartRead() is complete.
The comms server will then notify the client that its read request is complete.
Called by C32 server or CSY.
Parameters | |
---|---|
anError | Return code to be passed back to the client through its TRequestStatus argument. |
This static function is called when the read timer expires. installed by CPort::CommRead as TCallBack
Parameters | |
---|---|
aPtr | pointer to the CPort with the timedout read |
void | ResetBuffers | ( | TUint | aFlags | ) | [pure virtual] |
Specifies a protocol for resetting the receive and/or transmit buffers to zero length. It is called by the comms server in response to a RComm::ResetBuffers() request from the client.
Parameters | |
---|---|
aFlags | Bitmask of the following flags: KCommResetRx to reset the receive buffer; KCommResetTx to reset the transmit buffer |
TBool | SessionHasBeenPreempted | ( | CCommSession * | aSession | ) |
returns true if session has been pre-empted
Parameters | |
---|---|
aSession | session to be questioned |
TBool | SessionIsAwaitingOpen | ( | CCommSession * | aSession | ) |
returns true if session is waiting for open
Parameters | |
---|---|
aSession | session to be questioned |
Specifies a protocol for setting the configuration of the port. It is called by the comms server in response to a RComm::SetConfig() request from the client.
Parameters | |
---|---|
aPackage | A packaged TCommConfig buffer holding the new configuration values |
Specifies a protocol for setting the size of the serial port buffers. It is called by the comms server in response to a RComm::SetReceiveBufferLength() request from the client.
Parameters | |
---|---|
aLength | Requested size of the serial port buffers in bytes |
Sets DCE/DTE role. It is called by the comms server in response to a RComm::Open() request from the client.
Parameters | |
---|---|
aRole | DCE/DTE role |
Specifies a protocol for setting the buffer mode. It is called by the comms server in response to a RComm::SetMode() request from the client.
Parameters | |
---|---|
aPackage | A TCommServerConfig package buffer holding the mode settings |
Specifies a protocol for setting serial port control lines. It is called by the comms server in response to a RComm::SetSignals() request from the client.
Parameters | |
---|---|
aSignals | A bitmask of the handshaking lines to set |
Specifies a protocol for clearing serial port control lines. It is called by the comms server in response to a RComm::SetSignals() request from the client.
Parameters | |
---|---|
aSignals | A bitmask of the handshaking lines to clear |
Tells the comms server that a request initiated through NotifySignalChange() is complete.
The comms server will then notify the client that its request is complete.
Called by the CSY module.
Parameters | |
---|---|
aSignals | The new signals value to pass to the client. |
anError | An error code. |
Specifies the protocol for reading from the port. It is called by the comms server in response to a RComm::Read() or RComm::ReadOneOrMore() request from the client.
A negative value for aLength is used to flag that the read request was from RComm::ReadOneOrMore() rather than from RComm::Read(). The maximum length of data to be read is the absolute value of aLength.
The implementation should use IPCWrite() to write the data to the client's buffer. When all the data has been read, the function should call ReadCompleted().
Parameters | |
---|---|
aClientBuffer | Pointer into client address space to the descriptor containing the client's buffer |
aLength | The amount of data to be read |
Specifies the protocol for writing to the port. It is called by the comms server in response to a RComm::Write() request from the client.
The implementation should use IPCRead() to get the data to write from the client's buffer. When all the data has been written, the function should call WriteCompleted().
Parameters | |
---|---|
aClientBuffer | Pointer into client address space to the descriptor containing the client's buffer |
aLength | The amount of data to be written |
void | WriteCancel | ( | ) | [pure virtual] |
Specifies the protocol for cancelling writing to the port. It is called by the comms server in response to a RComm::WriteCancel() request from the client.
The implementation should abort any processing which was taking place as a result of the write request. Do not call WriteCompleted().
IMPORT_C void | WriteCompleted | ( | TInt | anError | ) |
Tells the comms server that a write request initiated through StartWrite() is complete.
The comms server will then notify the client that its write request is complete.
Called by C32 server or CSY.
Parameters | |
---|---|
anError | Return code to be passed back to the client through its TRequestStatus argument. |
This static function is called when the write timer expires. installed by CPort::CommWrite as TCallBack
Parameters | |
---|---|
aPtr | pointer to the CPort with the timedout write |