Helper Modules

Helper Modules

This section refers to the following sample application(s):

  • 00-hello

  • 00-hello_common

The 00-hello sample application contains a task dedicated at driving the local interface module by continuously calling the dnm_loc_processNotifications() function. To simplify the code of all sample applications, this task, together with the other required initialization code listed in A First Application, is put in the following helper modules:

  • common/loc_task.c handles the common code for interfacing with the local interface module.

  • common/cli_task.c handles the common code for interfacing with the CLI module.

These helper modules are included in all sample applications.

The cli_task helper module

 

This helper module deals with the CLI, and avoids duplicated code across sample applications.

 

To use this module, your application needs to call the cli_task_init() function. It takes the following parameters:

  • cliContext, the CLI context of the application (as detailed in CLI Module).

  • appNamea string which will appear in the greeting banner.

  • cliCmds, an array of CLI commands which will appear next to the base CLI commands when typing "help". Pass NULL to not register additional CLI commands. 

This module:

  • Prints a banner with your application's name and the version number, as well as the version number of the 

     it is linked against.

  • Registers the list of CLI commands, if any.

  • Starts a task to receive indications when a user enters one of the CLI commands your application added.

The loc_task helper module

This helper module deals with joining a network and requesting a service, and avoids duplicated code across sample applications.

To use this module, your application needs to call the loc_task_init() function. It takes the following parameters:

  • cliContext, the CLI context of the application (as detailed in CLI Module).

  • fJoin, a flag to indicate whether you want the module to join a network. Pass JOIN_NO to not join.

  • netId, the Network ID of the network to join. Pass NETID_NONE if you don't want to overwrite the one already present in the mote.

  • udpPort, the UDP port you want your application to bind to. Pass UDPPORT_NONE if you do not want to create a socket.

  • joinedSem, a pointer to a uC/OS-II semaphore which will be posted when the loc_task helper module is done joining the network. Pass NULL if you don't need this functionality.

  • bandwidth, the amount of bandwidth you'd like the loc_task helper module to request after it has joined. Pass BANDWIDTH_NONE if you don't require additional bandwidth.

  • serviceSem, a pointer to a uC/OS-II semaphore which will be posted when the loc_task helper module has been granted that additional bandwidth. Pass NULL if you don't need this functionality.

This module will then:

  • Create the appropriate channel to communicate with the 

    .

  • Initialize the "Local Interface Module".

  • Optionally, configure the network identified of the mote.

  • Optionally, create a UDP socket and bind it to the specified UDP port.

  • Optionally, join a network.

  • Optionally, post a semaphore indicating it has joined a network.

  • Optionally, request a service to the 

    .

  • Optionally, post a semaphore indicating the service was granted.

The loc_task helper module allows the sample applications to perform these routine actions by calling a single function.

 

You cannot use the loc_task module in combination with the autojoin CLI settings. If you set autojoin to 1, the loc_task helper module will not be able to join a network.

 

The 00-hello_common Sample Application

This sample application is similar to the 00-hello sample application, but relies on the cli_task and loc_task to initialize the CLI and 

.

When running the 00-hello_common sample application, a first banner prints the name of the application and the version. A second banner prints the version of the 

.

 

> hello_common app, ver 1.0.0.1 SmartMeshIP stack, ver 1.2.1.3 > > help help <command> Commands: mtrace mset mget minfo mlog mfs mseti mgeti mshow mxtal mhwlog >