Licensee TSY Tutorial

This topic describes how to implement a licensee TSY.


LTSY functionality

The following functionality is implemented by the device creators in the LTSY.

The message router routes the telephony client requests to the appropriate methods implemented by the licensees in the baseband. CTSY provides the functionality through the CMmMessageRouter class. Licensees should implement this class to acknowledge the CTSY messages. The message router creates and processes all the message handlers. Each CTSY request is distinguished by a specific Inter Process Communication (IPC) value. The IPC number is used to route the calls. When a message router receives a request from the CTSY, it creates baseband sender and baseband receiver objects.

The main function of the message handlers is to group the CTSY requests into logical units. There is no limit on the number of message handlers. The number of message handlers depends on the logical grouping of baseband messages, decided by the licensees. The message handlers implement the ExtFuncL() entry point. The message handlers are responsible for handling the CTSY requests and their response from the baseband.

The utility class must contain the information that can be used by the LTSY to adapt baseband data to Symbian platform data format. The information such as error code mapping is stored in the utility class.

The purpose of the baseband sender is to send messages to the baseband. The messages are created based upon the baseband and should be able to get the information required to acknowledge the CTSY requests.

The main purpose of the baseband receiver is to receive messages from the baseband and forward them to the CTSY. It is also responsible for verifying the status of baseband and format of the data. The class must format the data so that it can be processed by the CTSY.


  1. Phone engine starts during the device startup

  2. Phone engine creates the PhoneTSY.dll

  3. PhoneTSY.dll loads the CommonTSY.dll and the LicenseeTSY.dll

  4. LicenseeTSY.dll connects with the baseband to verify that it is ready to receive requests from the TSY

  5. The baseband updates the status to the LTSY

  6. Any change in the baseband status is notified to the CTSY by the LTSY.

Voice call example

If a client application wants to make a call the following sequence of events takes place after the TSY is initialised:

  1. The client application sends a request to the telephony server.

  2. The server calls the Dial function through the client side telephony object.

  3. The dial request is processed by the CTSY and forwarded to the message manager.

  4. The message manager forwards the request to the message router in LTSY.

  5. After getting the information from the message manager, the message router calls the ExtFunc, and forwards the request to the baseband.

  6. The baseband should notify of the status changes and the call details to the LTSY. These details should be forwarded to the CTSY using the Complete() method.

  7. The complete method should return the call details with:

    • a KErrNone, if the call is established successfully.

    • one of the GSM error code, as specified in the reference section, if the call establishment is unsuccessful.

The events can be logged and debugged with the CommsDebugUtility.

The Common TSY uses the CommsDebugUtility to log the TSY events. The CommsDebugUtility can be enabled by adding LOG TSY CTSY in commsdbg.ini file located at c:\logs.

Intermediate library

This topic describes how to build and load the licensee TSY.

System state manager

The system state manager is an ECOM plug-in used by the CTSY. An alternative to the system state plug-in is available as a stubbed method in ctsy/systemstateplugin.

Licensee TSY intermediate library

Phonetsy.tsy is the DLL that loads the common TSY and the Licensee TSY. Each device has its own LTSY. To load the TSYs dynamically:

  • The LTSY to be used in the device is known at ROM build time.

  • There is only one LTSY per device.

  • The CTSY must not load or unload any other TSY at runtime.

The common TSY does not use the ECOM plug-in, instead it is developed as a IMPLIB target type. The IMPLIB target will generates a licenseetsy.lib. The runtime library is not available. The run time library must be developed and built by the licensees. The licensees can name and configure the LTSY modules.

Licensees should implement the interface defined by MLtsyFactoryV1 class in ctsy/licenseetsy_lib/inc/mltsyfactory.h. The UID3 value used in the intermediate library must be the same UID3 used in the LTSY implementation.