Command Definitions define the set of Commands that can be run on a System (a Satellite or Ground Station).
Command Definitions are uploaded as JSON files that look like the following:
*1*{
*2* "definitions": {
*3* "command": {
*4* "display_name": "Command Name To Display",
*5* "description": "Description to give context to the operator.",
*6* "tags": ["operations"],
*7* "fields": [
*8* {"name": "Field Name 1", "type": "number", "range": [1, 10]},
*9* {"name": "Field Name 2", "type": "number", "value": 15},
*10* {"name": "Field Name 3", "type": "string"},
*11* {"name": "Field Name 4", "type": "text"},
*12* {"name": "Field Name 5", "type": "enum", "enum": {
*13* "LOW": 1, "MEDIUM": 5, "HIGH": 11
*14* }}
*15* ]
*16* },
*17* "deploy": {
*18* "display_name": "Deploy",
*19* "description": "Deploy the Solar Panels on the satellite.",
*20* "tags": ["commissioning", "one-time"],
*21* "fields": [
*22* {"name": "timeout", "type": "number", "value": 10}
*23* ]
*24* },
*25* "attitude_control": {
*26* "display_name": "Attitude Control",
*27* "description": "Sets the target quaternion for the ADCS",
*28* "tags": ["operations", "adacs"],
*29* "fields": [
*30* {"name": "X", "type": "number"},
*31* {"name": "Y", "type": "number"},
*32* {"name": "Z", "type": "number"},
*33* {"name": "W", "type": "number"}
*34* ]
*35* },
*36* "hardware_test": {
*37* "display_name": "Hardware Test",
*38* "description": "Runs the test command for all subsystems.",
*39* "tags": ["commissioning", "recovery"],
*40* "fields": []
*41* }
*42* }
*43*}
The JSON structure always has a top level key of definitions that contains a map of command names (e.g., deploy, attitude_control, and hardware_test above) to command definitions. A JSON schema is available to download at this repo, and can be referred to directly from the Command Definitions JSON file at the url below:
{
"$schema": "<https://raw.githubusercontent.com/kubos/command_definitions_schema/main/mt_command_definitions.schema.json>"
}
Command definitions are defined as follows.
Each Command Definition must contain the display_name
, description
, and fields
keys.
Command Definition keys:
display_name
: The name of the command to display in Major Tom's UI.description
: A description of what the command does, to show in Major Tom's UI.tags
: An optional array of zero or more alphanumeric tags under which to group this command in the Major Tom UI.fields
: An array of zero or more Field Definitions, as defined below.The fields
key must map to an array of zero or more Field Definitions with the following keys.
Field Definition keys:
name
(required): The name of the field.