Provide ECOM registry information for a PSY

This section describes how to package the PSY as an ECOM plug-in that can be loaded by the LBS subsystem.

A PSY must provide the ECOM registry with information about itself. Registry information is used by the Location Framework to recognise a PSY implementation. This section describes how to create ECOM registry information for a PSY.


  1. Obtain two UIDs for the PSY from Symbian.

    1. A PSY DLL UID is required for the DLL that packages the PSY.

    2. A PSY implementation UID is required to identify the implementation of the PSY interface that is loaded by ECOM.

  2. Create an ECOM resource file for the PSY. ECOM Registry information is stored in a resource file. The resource file must define a REGISTRY_INFO resource at the start of the file. The resource file must not contain anything else. The REGISTRY_INFO structure and some useful constant declarations are defined in registryinfo.rh. The registry information consists of the following:

    1. PSY DLL UID.

    2. PSY implementation UID.

    3. PSY version.

    4. A display name for the PSY (this can be shown in a UI). The display name in the ECOM registration file cannot be localised. In order to provide a PSY name that can be localised, the PSY needs to create a separate localised resource file. The path to this localised resource file must be specified through the Positioning Plug-in Information API. If the localised resource file is not specified or cannot be found, the display name in the ECOM registry resource file is used.
    An example resource file is shown below. Note that the inteface_uid must be 0x101F7A7C as specified in this file. The dll_uid and implementation_uid will be different in your implementation.
    #include <registryinfo.rh> 
    #include "ExamplePsy.hrh" // Defines KPosExamplePSYImplUid
    
    RESOURCE REGISTRY_INFO r_examplepsy_reginfo
    {
    // This dll_uid needs to be allocated by the licensee from Symbian. 
    dll_uid = 0x10001234; 
    interfaces =
        {
        INTERFACE_INFO
            {
            // This interface_uid has to be 0x101F7A7C an is specified by Location framework.
            interface_uid = 0x101F7A7C;
            implementations =
                {
                IMPLEMENTATION_INFO
                    {
                    // The licensee needs to allocate this UID from Symbian
                    implementation_uid = KPosExamplePSYImplUid;
                    version_no = 2;
                    display_name = "Example PSY";
                    }
                };
            }
        };
    }