Implementing a NifMan Daemon Tutorial

This topic describes the steps involved in implementing a NifMan Daemon.

Daemons are loaded when a connection is started that requires network layer configuration. The ECom configuration daemon manager used for a connection is specified in the SERVICE_CONFIG_DAEMON_MANAGER_NAME field in the Comms Database Dial Out ISP and GPRS Packet Service tables. The daemon server used for a connection is specified in the SERVICE_CONFIG_DAEMON_NAME field in the CommDb Dial Out ISP and GPRS Packet Service tables.

To implement a configuration daemon, you must write a Symbian platform server for more information see Using Client/Server.

The name of the server in CServer::Start() must match the name used in the CommDb SERVICE_CONFIG_DAEMON_NAME field.

The following ServiceL() implementation tests for these messages types and calls functions:

void CEgConfigDaemonSession::ServiceL(const RMessage2& aMessage)
  {
  switch (aMessage.Function())
    {
  case EConfigDaemonConfigure:
    ConfigureL(aMessage);
    break;
  case EConfigDaemonDeregister:
    DeregisterL(aMessage);
    break;
  case EConfigDaemonLinkLayerDown:
    LinkLayerDownL(aMessage);
    break;
  case EConfigDaemonLinkLayerUp:
    LinkLayerUpL(aMessage);
    break;
  case EConfigDaemonProgress:
    ProgressL(aMessage);
    break;
  case EConfigDaemonIoctl:
    IoctlL(aMessage);
    break;
  case EConfigDaemonCancel:
    Cancel(aMessage);
    break;
  case EConfigDaemonCancelMask:
    CancelMask(aMessage);
    break;
  default:
    User::Leave(KErrNotSupported);
    break;
    }
  }

For more information about the message types see What are the daemon message types?

Related reference