The DPU receives and processes CCSDS telecommand packets containing one or more commands. The format of the telecommand packet and constituent commands is described in Reference 3.
Most commands are executed as soon as they are received; exceptions are noted in the individual command descriptions. Each command is echoed after it is executed by the DPU. A command echo subpacket containing the opcode and some arguments along with a code summarizing the command's result is downlinked.
Some default macros are available as soon as the DPU is started. Most
of these macros are one or two commands long and are used by the
monitoring
subsystem to respond to out of limit conditions. A default
macro can be replaced with a new macro via CFI_MAC_DEF and
CFI_MAC_ENDEF. The default macros are shown in the following table.
Id | Action | Commands |
---|---|---|
0 | No action | CFI_CMD_NULL |
1 | Shutdown |
CFI_IMG_PWR OFF CFI_FLT_MOVE CLEAR CFI_HTR_MODE OFF |
2 | Heater Power Off | CFI_HTR_MODE OFF |
3 | Cover HOPS Off |
CFI_COV_DEPLOY HOP1/1 OFF CFI_COV_DEPLOY HOP1/2 OFF CFI_COV_DEPLOY HOP2/1 OFF CFI_COV_DEPLOY HOP2/2 OFF |
4 | Mirror Power Off | CFI_PWR_PRI CM OFF |
5 | Imager Power Off | CFI_IMG_PWR OFF |
6 | Filter Power Off | CFI_PWR_PRI FW OFF |
7 | Stop Macro Processing |
CFI_MON_CNTRL DISABLE CFI_MEM_RUN kill all macros |
8 - 63 | Reserved |   |
64 - 255 | Reserved for mission operations |   |
The CRISP and CFI common commands are described in Reference 3. CFI-specific commands are defined below.
Read a 16-bit data value from the
CHEAP
hardware and
telemeter
the result. Note: only one peek or poke can be commanded per second.
Name | Length (bits) | Value | Description |
---|---|---|---|
Opcode | 16 | 0x0133 |   |
Macro? | 1 | 0 = Execute 1 = Append to macro | Macro load bit |
Length | 15 | 3 | Command length in 32-bit words |
Board | 8 | 66 = DSAD (FPGA) 67 = Dosimeter (xRIO) 36 = Dust (TRIO) | Board's I2C address |
Pad | 24 | 0 | Pad up to 32-bit boundary |
Checksum | 32 |   | 32 bit XOR |
Write an 8-bit data value to the
CHEAP
hardware. Note: only one peek
or poke can be commanded per second.
Name | Length (bits) | Value | Description |
---|---|---|---|
Opcode | 16 | 0x0130 |   |
Macro? | 1 | 0 = Execute 1 = Append to macro | Macro load bit |
Length | 15 | 3 | Command length in 32-bit words |
Board | 8 | 66 = DSAD (FPGA) 67 = Dosimeter (xRIO) 36 = Dust (TRIO) | Board's I2C address |
Address | 8 | Unsigned integer | Register address within board |
Data | 8 | Unsigned integer | Data to write |
Pad | 8 | 0 | Pad up to 32-bit boundary |
Checksum | 32 |   | 32 bit XOR |
Turn power to
cover's
HOP actuators off or on. Turning on the actuator
deploys the cover. With operation 2, the actuator power is removed
automatically by the DPU software once the cover is open. With
operation 3, the actuator power is removed after a timeout period; the
timeout is a parameter. With operation 4, the actuator power is
removed once the cover is open or the timeout period elapses. This
command will be rejected unless specifically enabled with the
CFI_COV_MODE
command.
Note: the imager
primary power
must be turned on
for the cover to deploy.
Name | Length (bits) | Value | Description |
---|---|---|---|
Opcode | 16 | 0x0100 |   |
Macro? | 1 | 0 = Execute 1 = Append to macro | Macro load bit |
Length | 15 | 3 | Command length in 32-bit words |
Operation | 8 | 0 = Off 1 = On 2 = On until deployed 3 = On until timeout 4 = On until deployed or timeout | Operation for the given heater |
Heater | 8 | 0 = HOP 1, heater 1 1 = HOP 1, heater 2 2 = HOP 2, heater 1 3 = HOP 2, heater 2 | Heater |
Pad | 16 | 0 | Pad up to 32-bit boundary |
Checksum | 32 |   | 32 bit XOR |
Enable or disable deployment of the
cover.
This is a safety interlock;
the actuators must be enabled before actually powering the actuator
(with
CFI_COV_DEPLOY).
Name | Length (bits) | Value | Description |
---|---|---|---|
Opcode | 16 | 0x0103 |   |
Macro? | 1 | 0 = Execute 1 = Append to macro | Macro load bit |
Length | 15 | 3 | Command length in 32-bit words |
Mode | 8 | 0 = Disable 1 = Enable | Deployment enable/disable |
Pad | 24 | 0 | Pad up to 32-bit boundary |
Checksum | 32 |   | 32 bit XOR |
Collect
dosimeter
data and
downlink it.
Name | Length (bits) | Value | Description |
---|---|---|---|
Opcode | 16 | 0x12e |   |
Macro? | 1 | 0 = Execute 1 = Append to macro | Macro load bit |
Length | 15 | 3 | Command length in 32-bit words |
Spare | 32 |   |   |
Checksum | 32 |   | 32 bit XOR |
Collect
dust shield
data and
downlink it.
Name | Length (bits) | Value | Description |
---|---|---|---|
Opcode | 16 | 0x011d |   |
Macro? | 1 | 0 = Execute 1 = Append to macro | Macro load bit |
Length | 15 | 3 | Command length in 32-bit words |
Spare | 32 |   |   |
Checksum | 32 |   | 32 bit XOR |
Move
filter wheel
to indicated position. The filter movement begins at
the end of the current exposure. Note: the FW motor
primary power
must
be turned on for the filter wheel to move.
Name | Length (bits) | Value | Description |
---|---|---|---|
Opcode | 16 | 0x0105 |   |
Macro? | 1 | 0 = Execute 1 = Append to macro | Macro load bit |
Length | 15 | 3 | Command length in 32-bit words |
Filter | 8 | 1 - 10 | Filter wheel position |
Pad | 24 | 0 | Pad up to 32-bit boundary |
Checksum | 32 |   | 32 bit XOR |
Name | Length (bits) | Value | Description |
---|---|---|---|
Opcode | 16 | 0x0106 |   |
Macro? | 1 | 0 = Execute 1 = Append to macro | Macro load bit |
Length | 15 | 3 | Command length in 32-bit words |
Mode | 8 | 0 = Off 1 = On | Filter wheel resolver power off/on |
Pad | 24 | 0 | Pad up to 32-bit boundary |
Checksum | 32 |   | 32 bit XOR |
Move
filter wheel
the indicated number of resolver counts. Note: the
FW motor
primary power
must be turned on for the filter wheel to move.
Name | Length (bits) | Value | Description |
---|---|---|---|
Opcode | 16 | 0x012d |   |
Macro? | 1 | 0 = Execute 1 = Append to macro | Macro load bit |
Length | 15 | 3 | Command length in 32-bit words |
Counts | 16 | -32768 - 32767 | Filter motion (resolver counts) |
Pad | 16 | 0 | Pad up to 32-bit boundary |
Checksum | 32 |   | 32 bit XOR |
Select
heater
off, on, or controlled by software.
Name | Length (bits) | Value | Description |
---|---|---|---|
Opcode | 16 | 0x0109 |   |
Macro? | 1 | 0 = Execute 1 = Append to macro | Macro load bit |
Length | 15 | 3 | Command length in 32-bit words |
Mode | 8 | 0 = Off 1 = On 2 = Software control | Control mode |
Pad | 24 | 0 | Pad up to 32-bit boundary |
Checksum | 32 |   | 32 bit XOR |
Select the temperature sensor used to control the
heater.
Name | Length (bits) | Value | Description |
---|---|---|---|
Opcode | 16 | 0x010a |   |
Macro? | 1 | 0 = Execute 1 = Append to macro | Macro load bit |
Length | 15 | 3 | Command length in 32-bit words |
Sensor | 8 | 0 = CCD plate temp. #1 1 = CCD plate temp. #2 2 = Radiator temp. #1 3 = Radiator temp. #2 | Temperature sensor |
Pad | 24 | 0 | Pad up to 32-bit boundary |
Checksum | 32 |   | 32 bit XOR |
Set temperature goal of the
heater.
The temperature will be held
between the given setpoint and setpoint+hysteresis.
Name | Length (bits) | Value | Description |
---|---|---|---|
Opcode | 16 | 0x010c |   |
Macro? | 1 | 0 = Execute 1 = Append to macro | Macro load bit |
Length | 15 | 3 | Command length in 32-bit words |
Setpoint | 16 | Unsigned integer | Temperature setpoint (A/D units) |
Hysteresis | 8 | Unsigned integer | Hysteresis (A/D units) |
Pad | 8 | 0 | Pad up to 32-bit boundary |
Checksum | 32 |   | 32 bit XOR |
Select
image
compression algorithm. When executed at time t affects
the exposure taken at time t+1.
Name | Length (bits) | Value | Description |
---|---|---|---|
Opcode | 16 | 0x010f |   |
Macro? | 1 | 0 = Execute 1 = Append to macro | Macro load bit |
Length | 15 | 3 | Command length in 32-bit words |
Mode | 8 | 0 = High-range identity 1 = Low-end identity 2 = Mid-range identity 3 = DN-weighted SNR 4 = Inverse root 2 power 5 = Linear 6 = SNR proportional 7 = Root 2 power | Compression algorithm |
Pad | 24 | 0 | Pad up to 32-bit boundary |
Checksum | 32 |   | 32 bit XOR |
Enable or disable
image
compression. When executed at time t affects
the exposure taken at time t+1.
Name | Length (bits) | Value | Description |
---|---|---|---|
Opcode | 16 | 0x0111 |   |
Macro? | 1 | 0 = Execute 1 = Append to macro | Macro load bit |
Length | 15 | 3 | Command length in 32-bit words |
Mode | 8 | 0 = Disable 1 = Enable | Enable/disable image compression |
Pad | 24 | 0 | Pad up to 32-bit boundary |
Checksum | 32 |   | 32 bit XOR |
Set
image
exposure time. An exposure time set at time t effects the
exposure taken at t+1. The exposure time is specified in two pieces.
The first argument how long to expose in the first second; this can
range from 2.048 ms to 958.464 ms. The second argument specifies
additional whole seconds of exposure. Note: If the commanded exposure
time is greater than the commanded collection interval (see
CFI_IMG_IMAGE),
the exposure time is reduced to match the collection
interval.
Name | Length (bits) | Value | Description |
---|---|---|---|
Opcode | 16 | 0x0112 |   |
Macro? | 1 | 0 = Execute 1 = Append to macro | Macro load bit |
Length | 15 | 3 | Command length in 32-bit words |
Time | 16 | 1 - 468 | Exposure time in 2.048 ms units |
Seconds | 16 | 0 - 127 | Additional exposure time in seconds |
Checksum | 32 |   | 32 bit XOR |
Select the format of the
image
to be telemetered. When executed at
time t affects the exposure taken at time t+1.
Name | Length (bits) | Value | Description |
---|---|---|---|
Opcode | 16 | 0x0114 |   |
Macro? | 1 | 0 = Execute 1 = Append to macro | Macro load bit |
Length | 15 | 3 | Command length in 32-bit words |
Format | 8 | 0 = 1024 x 1024 1 = 512 x 512 window 2 = 256 x 256 window 3 = 128 x 128 window 4 = 512 x 512 rebin 5 = 256 x 256 rebin | Image format |
Pad | 24 | 0 | Pad up to 32-bit boundary |
Checksum | 32 |   | 32 bit XOR |
Collect a series of
images
and downlink them. An exposure requested at
time t is taken at t+1. If an image collection series is in progress
and a new
CFI_IMG_IMAGE
is issued, the new command supersedes the old
command.
Name | Length (bits) | Value | Description |
---|---|---|---|
Opcode | 16 | 0x0117 |   |
Macro? | 1 | 0 = Execute 1 = Append to macro | Macro load bit |
Length | 15 | 3 | Command length in 32-bit words |
Time | 16 | 0 - 65534 = Duration 65535 = Forever | Time in which to collect images (seconds) |
Interval | 16 | 1 - 65535 | Interval between images (seconds) |
Checksum | 32 |   | 32 bit XOR |
Turn
imager
FPU power off or on. Note: the imager
primary power
must
be turned on for the imager FPU to activate.
Name | Length (bits) | Value | Description |
---|---|---|---|
Opcode | 16 | 0x0118 |   |
Macro? | 1 | 0 = Execute 1 = Append to macro | Macro load bit |
Length | 15 | 3 | Command length in 32-bit words |
Mode | 8 | 0 = Off 1 = On | Imager power off/on |
Pad | 24 | 0 | Pad up to 32-bit boundary |
Checksum | 32 |   | 32 bit XOR |
Set the origin of the
image
to be telemetered. When executed at time t
affects the exposure taken at time t+1.
Name | Length (bits) | Value | Description |
---|---|---|---|
Opcode | 16 | 0x011b |   |
Macro? | 1 | 0 = Execute 1 = Append to macro | Macro load bit |
Length | 15 | 3 | Command length in 32-bit words |
X | 16 | 0 - 1023 | X origin |
Y | 16 | 0 - 1023 | Y origin |
Checksum | 32 |   | 32 bit XOR |
Load the data values into the identified data structure at the location
denoted by the offset. The byte count determines how many load bytes
follow and may be up to 128 bytes. The padding after the data forces
the size of the load to be a multiple of 4 bytes; M+N is always a
multiple of 4.
Name | Length (bits) | Value | Description |
---|---|---|---|
Opcode | 16 | 0x0023 |   |
Macro? | 1 | 0 = Execute 1 = Append to macro | Macro load bit |
Length | 15 | 4 - 35 | Command length in 32-bit words |
Id | 8 |
0 = Monitor limits 1 = DPU parameters | Id of data structure |
Byte Count | 8 | 0 - 128 (M) | Number of bytes in data field |
Offset | 16 | Unsigned integer | Byte offset into data structure |
Data | M * 8 |   | Load data |
Pad | N * 8 | 0 | Pad up to 32-bit boundary |
Checksum | 32 |   | 32 bit XOR |
Dump the identified data structure.
Name | Length (bits) | Value | Description |
---|---|---|---|
Opcode | 16 | 0x0025 |   |
Macro? | 1 | 0 = Execute 1 = Append to macro | Macro load bit |
Length | 15 | 3 | Command length in 32-bit words |
Id | 8 |
0 = Monitor limits 1 = DPU parameters | Id of data structure |
Pad | 24 | 0 | Pad up to 32-bit boundary |
Checksum | 32 |   | 32 bit XOR |
Move
cube mirror
to use the indicated side. Note: the CM motor
primary power
must be turned on for the cube mirror to move.
Name | Length (bits) | Value | Description |
---|---|---|---|
Opcode | 16 | 0x0121 |   |
Macro? | 1 | 0 = Execute 1 = Append to macro | Macro load bit |
Length | 15 | 3 | Command length in 32-bit words |
Side | 8 | 0 - 3 | Mirror side |
Pad | 24 | 0 | Pad up to 32-bit boundary |
Checksum | 32 |   | 32 bit XOR |
Turn
cube mirror
resolver power off or on. Note: the CM motor
primary power
must be turned on for the cube mirror resolver to operate.
Name | Length (bits) | Value | Description |
---|---|---|---|
Opcode | 16 | 0x0122 |   |
Macro? | 1 | 0 = Execute 1 = Append to macro | Macro load bit |
Length | 15 | 3 | Command length in 32-bit words |
Mode | 8 | 0 = Off 1 = On | Mirror power off/on |
Pad | 24 | 0 | Pad up to 32-bit boundary |
Checksum | 32 |   | 32 bit XOR |
Move
cube mirror
the indicated number of resolver counts. Note: the CM motor
primary power
must be turned on for the cube mirror to move.
Name | Length (bits) | Value | Description |
---|---|---|---|
Opcode | 16 | 0x0124 |   |
Macro? | 1 | 0 = Execute 1 = Append to macro | Macro load bit |
Length | 15 | 3 | Command length in 32-bit words |
Counts | 16 | -32768 - 32767 | Mirror motion (resolver counts) |
Pad | 16 | 0 | Pad up to 32-bit boundary |
Checksum | 32 |   | 32 bit XOR |
Turn primary power off or on to a selected subsystem.
Name | Length (bits) | Value | Description |
---|---|---|---|
Opcode | 16 | 0x012b |   |
Macro? | 1 | 0 = Execute 1 = Append to macro | Macro load bit |
Length | 15 | 3 | Command length in 32-bit words |
Mode | 8 | 0 = Off 1 = On | Primary power off/on |
Board | 8 | 0 = Imager 1 = CM Motor 2 = FW Motor 255 = All | Power board |
Pad | 16 | 0 | Pad up to 32-bit boundary |
Checksum | 32 |   | 32 bit XOR |
Set
DSAD
image exposure time.
Name | Length (bits) | Value | Description |
---|---|---|---|
Opcode | 16 | 0x0127 |   |
Macro? | 1 | 0 = Execute 1 = Append to macro | Macro load bit |
Length | 15 | 3 | Command length in 32-bit words |
Time | 8 | 1 - 255 | Exposure time (36+8(n-1) seconds) |
DSAD | 8 | 0 = Pinhole 1 = Lensed 255 = Both | DSAD |
Spare | 16 |   |   |
Checksum | 32 |   | 32 bit XOR |
Take a
DSAD
image, collect data, and
downlink
it. Summary data is
collected from the indicated DSAD and telemetered. If requested, the
associated raw image is also sent
Name | Length (bits) | Value | Description |
---|---|---|---|
Opcode | 16 | 0x0128 |   |
Macro? | 1 | 0 = Execute 1 = Append to macro | Macro load bit |
Length | 15 | 4 | Command length in 32-bit words |
Spare | 32 |   |   |
DSAD | 8 | 0 = Pinhole 1 = Lensed | DSAD |
Image | 8 | 0 = No image 1 = Image | Send image too? |
Spare | 16 |   |   |
Checksum | 32 |   | 32 bit XOR |
Return to CFI Software User's Guide. Report problems to John Hayes.