Symbian Developer Library

SYMBIAN OS V6.1 EDITION FOR C++

[Index] [Glossary] [Previous] [Next]



Developing serial protocol modules


Module structure

Serial protocol modules are DLLs, with a single entry point, which returns a factory object which is capable of creating one or more objects that actually implement serial services.

Comms server modules have a .csy extension and a UID2 of 0x10000049.

[Top]


Access to the operating system

Serial protocol modules can access all operating system components including network protocols, files, stores, and info print message amongst others.

[Top]


Asynchronicity

Due to the nature of the comms architecture, it is important that a serial protocol module never performs a synchronous operation on any other object which may, in time, cause a further request on another serial-like object. In general, this could mean any comms server module that does not communicate exclusively and directly through a device driver. Any protocol stack used by a CPort may eventually make a request on a serial port. If this happens, the whole of the comms subsystem will deadlock because the comms server is blocking and cannot respond to the new request. This means that great care must be taken when writing a comms server module: for example, one must always call StartProtocol() which is asynchronous before calling RSocket::Open() which is synchronous, but may cause an RComm class to be instantiated. Similarly the CPort::Destruct() function is present because a standard C++ destructor must run synchronously, but this is not permissible for serial protocol modules that may have some shutdown code involving RComm classes.