Skip to content

App Profile Creation Guide

Joe Benassi edited this page Aug 8, 2013 · 6 revisions

###Summary of Document This document is to help users create App Profiles: XML files that can be parsed by JCAT to allow command-sending and telemetry-streaming for Apps running in the CFS. For additional help, look at cFE App Profiles for examples.

###Requirements for App Profiles: ######With respect to the version of the App running in the CFS, everything in its App Profile is defined, accurate, and in correct order, including:

  1. All <commands><command>s.
  2. All <telemetry><parameter>s.
  3. All <inputparameter>s and <choiceparameter>s within all <commands><command><parameters>.

######Additionally, the App itself must abide by the following requirement:

  1. The command code for each command must equal <commandoffset> + x, where x is the index of its App Profiles' matching <command> within <commands>.

###Limited-Depth App Profile Example: [APPNAME] [ [CPU1] [0x1804] [0x0804] ] [+0] [] []

Notes: The above example meets the minimum requirements to define an App Profile. The parts contained in brackets are specific to the App, and would not be included in a real App Profile. They will not be included in subsequent examples.

#####New Terms: ######Within <channel>:

  • <name>: The string to display as this App's name in the GUI.
  • <configs>: The different possible <config>s that this App can run as.
    • <config>: A set of a <cmdmid>, <tlmmid>, and <name>. You can interact with more than one instance of the this App in JCAT by selecting a <config> for each desired instance at run-time.
      • <name>: The name to describe this <config> in the GUI.
      • <cmdmid>: The command message ID.
      • <tlmmid>: The telemetry message ID.
  • <commandoffset>: The lowest command code for this App (usually 0).
  • <commands>: The different <command>s that this App can execute.
  • <telemetry>: The different telemetry <parameter>s that this App's Housekeeping Packet outputs.

###Moderate-Depth App Profile Example (the above example, but expanded): APPNAME CPU1 0x1804 0x0804 +0 CFE_TBL_VALIDATE_CC LastFileDumped char string OS_MAX_PATH_LEN ByteAlignPad2 uint16

Notes: The above example is not a correctly-formatted App Profile. This is because, and only because, the contents within <choiceparameter>, <inputparameter>, and <spare> are not defined. This App Profile may load into JCAT, but JCAT was not designed to handle undefined parameters.

#####New Terms: ######Within <commands><command>: Defines a command that can be sent to this App.

  • <name>: The string to display as this <command>'s name in the GUI.
  • <parameters>: The parameters required for this <command> to be sent. This can be absent if there are no parameters.
    • <choiceparameter>: The parameter type that requires the user to choose from a select list in drop-down form.
    • <inputparameter>: The parameter type that requires the user to manually enter the desired value in a field.
    • <spare>: The parameter type that is invisible to the user, but which contributes only byte values of zero to this <command>'s command packet.

######Within <telemetry><parameter>: Defines a telemetry parameter contained in this App's Housekeeping Packet.

  • <name>: The string to display as this <parameter>'s name in the GUI.
  • <type>: The data type of this <parameter>. The only valid values are:
    • int8, int16, int32
    • uint8, uint16, uint32
    • char
  • <primitive>: The primitive of this <parameter>. Can be either a string or integer. If defined as anything other than "string", or is missing entirely, it is considered an integer.
  • <const>: The variable whose value, as defined in the imported Constant Definition file at run-time, is multiplied by the byte value of this <parameter>'s <type> to assign the number of bytes for this <parameter> in this command packet. Only considered if this <parameter>'s <primitive> is a string.

###In-Depth App Profile Example (the above example, but expanded): APPNAME CPU1 0x1804 0x0804 +0 CFE_TBL_VALIDATE_CC ActiveTblFlag uint16 CFE_TBL_INACTIVE_BUFFER 0 CFE_TBL_ACTIVE_BUFFER 1 TableName char CFE_TBL_MAX_FULL_NAME_LEN string uint8 LastFileDumped char string OS_MAX_PATH_LEN ByteAlignPad2 uint16

Notes: The above example is a correctly-formatted App Profile and will, as such, load into JCAT and work as intended.

#####New Terms: ######Within <choiceparameter>:

  • <name>: The string to display as this <choiceparameter>'s name in the GUI.
  • <type>: (Same as <telemetry><parameter><type>). Note: at this time, <choiceparameter>s only function correctly if they are <type> integer.
  • <choice>: A possible option for the user to select as this <choiceparameter>'s value in the GUI. A single <choice> must be selected for this command to send.
    • <name>: The string to display as this <choice>'s name in the GUI.
    • <value>: The integer value to set as this <choiceparameter>'s value if this <choice> is chosen and this <command> is sent.
######Within <inputparameter>:
  • <name>: The string to display as this <inputparameter>'s name in the GUI.
  • <type>: (Same as <telemetry><parameter><type>).
  • <const>: (Same as <telemetry><parameter><const>).
  • <primitive>: (Same as <telemetry><parameter><primitive>).
######Within <spare>:
  • <type>: (Same as <telemetry><parameter><type>). Note: for a <spare>, the <type> is only used to denote the amount of bytes to allocate to it.

Clone this wiki locally