Automation Script to Create a New Basilisk Module

The script src/utilities/makeDraftModule.py provides a convenient tool to create a new Basilisk C or C++ module. Note that this is a standard Basilisk module and not a dynamic or state effector. The user provides the script the basic module info such a module name, location, input and output message names, descriptions, type, etc., and the script then generates a skeleton C or C++ Basilisk module, the associated swig interface *.i file, a start at the RST documentation for this module, as well as a functioning unit test file for this module.

Note

The script cannot setup vectors or lists of input or output messages. In such cases, it is recommended to add a placeholder input/output message of the correct type, and then hand-edit the code to make this a vector of message objects.

Header File

The header file will contain the required includes to import the input/output message type definitions. The message description strings are used to provide RST/Doxygen compatible comment strings for the message definitions.

C/C++ File

In the C-module the script generates the required init calls for each output message. In C++ there is typically no need for writing a SelfInit() function as the C++ wrapped output messages are connected to themselves on construction.

Next, the Reset() method is setup to check all input messages are connected. This assumes that all input messages are required. If this is not the case, simply delete the associate message connection checking.

The Update() method sets up buffer variables to hold all the input messages, zero’s the output message buffer variables, reads in all input messages, and then write the output message buffer to the output message objects.

Swig File

The module *.i file is setup to include the required input and output message payload types.

RST Module Documentation

The module RST documentation file uses the provided module description string to create the module executive summary. Further, a table is created listing all input and output messages, their type and also their description

Unit Test File

A draft unit test python file is created in the local _UnitTest folder. This script

  • imports the new module

  • sets up a proces and task to run this module

  • creates empty input messages object for all the module input messages

  • sets up a recorder for all the module output messages

  • run the script

The user can then expand this script to properly configure the module variables and input message contents to create a fully implemented module unit test.

User Guide

To run the script to make a C++ Basilisk module draft, edit the content of the fillCppInfo() method. To create a C module, edit the method fillCInfo(). Next, in the main routine only run the needed method.

Note, once created, if you make edits and re-run this script it will delete the older module folder and create a new one. Thus, this script cannot be used to add input or output messages if you have already started to flesh out the rest of the module code. It is intended to be run only once before you start to edit the module code.