1.795 Zodiac-Cortex-CRT-TCU

This page describes the Zodiac-Cortex-CRT-TCU device driver and its device window. The Zodiac-Cortex-CRT-TCU device driver uses the following tables: Telecommand Unit. It is based on the STI 100013_CRT remote protocol document v 3.31, dated Jan. 10., 2020

If more than one telecommand unit is used on the CRT several instances of this driver can be added within the same thread

Beside the TCU multiple instances of the various functional elements may be configured in the sat-nms M&C to handle all features of the unit. All devices referring to the same physical device must be configured at the same device thread / interface to ensure that TCP requests and commands to the device do not overlap.

The different available module drivers for the CRT are:

The CRT requires two separate IP connection for monitoring and commanding the device. The device driver establishes the connection to the monitoring port (usually 3000) by terminal server like TTY connection. This connection is permanently active. Address and port are set in the vlc.setup configuration file as for a terminal server serial port.
How to use TLS connection is described below.

Steps to configure the Zodiac-CRT drivers / devices for TLS communication

1. Create a PKCS12 keystore from the cert files read from the BBU:

openssl pkcs12 -export -out bbu.p12 \
   -inkey CRT-Services-Client-v2.key -in CRT-Services-Client-v2.cert.pem 

openssl prompts to select a password for keystore. e.g. crt

2. Copy the keystore file to /home/satnms/certs/ at the M&C

3. Edit the device configuration (client) to tell the M&C about the protocol and port.

PORT "TLS:192.168.2.202:53000" PROTOCOL CortexNT
    IDLE 1000
    DEVICE BBU-1 IS Zodiac-Cortex-CRT
    DEVICE BBU-1-IFR-1 IS Zodiac-Cortex-CRT-IFR
    DEVICE BBU-1-IFR-2 IS Zodiac-Cortex-CRT-IFR
    DEVICE BBU-1-IFR-3 IS Zodiac-Cortex-CRT-IFR
    DEVICE BBU-1-IFR-4 IS Zodiac-Cortex-CRT-IFR
    DEVICE BBU-1-IFM-1 IS Zodiac-Cortex-CRT-IFM
    DEVICE BBU-1-IFM-2 IS Zodiac-Cortex-CRT-IFM
    DEVICE BBU-1-TMU-A IS Zodiac-Cortex-CRT-TMU
    DEVICE BBU-1-TMU-B IS Zodiac-Cortex-CRT-TMU
    DEVICE BBU-1-TMU-C IS Zodiac-Cortex-CRT-TMU
    DEVICE BBU-1-TMU-D IS Zodiac-Cortex-CRT-TMU
    DEVICE BBU-1-TMU-E IS Zodiac-Cortex-CRT-TMU
    DEVICE BBU-1-TMU-F IS Zodiac-Cortex-CRT-TMU
    DEVICE BBU-1-TMU-G IS Zodiac-Cortex-CRT-TMU
    DEVICE BBU-1-TMU-H IS Zodiac-Cortex-CRT-TMU
    DEVICE BBU-1-TCU-1 IS Zodiac-Cortex-CRT-TCU
    DEVICE BBU-1-TCU-2 IS Zodiac-Cortex-CRT-TCU
    DEVICE BBU-1-TMS-1 IS Zodiac-Cortex-CRT-TMS
    DEVICE BBU-1-TMS-2 IS Zodiac-Cortex-CRT-TMS
    DEVICE BBU-1-PRJ IS Zodiac-Cortex-CRT-PRJ

Important is the TLS in front of the IP address and the port number to use with TLS communication.

4. Restart the M&C and for each BBU-* device edit these setup parameters.

config.cmdPort = 53001
address = certs/bbu.p12 crt

Device window pages

The following table shows which device window pages are available with this individual device type. Tool-bar functions not mentioned here are described at the general description of device windows .

Configuration parameters

At the maintenance page of the device window there are a couple of configuration parameters which must be set to make the software talk to the device.

Variables defined by this device driver

name type flags range
info.driver TEXT R/O StringRange R/O
lowLevel.cmd TEXT StringRange
lowLevel.reply TEXT R/O StringRange R/O
faults.99 ALARM R/O AlarmFlagRange R/O (Communication)
faults.commstat TEXT R/O StringRange R/O
info.type TEXT R/O StringRange R/O
info.port TEXT R/O StringRange R/O
info.frame TEXT R/O StringRange R/O
info.bandwidth TEXT R/O StringRange R/O
config.cmdPort INTEGER SAVE SETUP IntegerRange (0 .. 0)
config.module CHOICE SAVE SETUP EnumRange (TCU-1 TCU-2)
config.deviceComment TEXT SAVE SETUP StringRange
config.readBackDelay INTEGER SAVE SETUP IntegerRange (100 .. 10000)
internal.cmd TEXT R/O StringRange R/O
internal.tcuTable HEX R/O HexRange R/O (0 .. 0)
internal.hasTcu BOOLEAN R/O BooleanRange R/O (true false)
internal.preamble INTEGER R/O IntegerRange R/O (0 .. 0)
internal.idle INTEGER R/O IntegerRange R/O (0 .. 0)
internal.day.c1 HEX R/O HexRange R/O (0 .. 0)
internal.day.c4h INTEGER R/O IntegerRange R/O (0 .. 0)
internal.day.c4 INTEGER R/O IntegerRange R/O (0 .. 0)
internal.hour INTEGER R/O IntegerRange R/O (0 .. 0)
internal.hour.c1 HEX R/O HexRange R/O (0 .. 0)
internal.secs INTEGER R/O IntegerRange R/O (0 .. 0)
internal.msecs.c1 INTEGER R/O IntegerRange R/O (0 .. 0)
internal.msecs.c2 FLOAT R/O DoubleRange R/O (0.000 .. 0.000)
internal.msecs INTEGER R/O IntegerRange R/O (0 .. 0)
internal.usecs INTEGER R/O IntegerRange R/O (0 .. 0)
internal.nsecs INTEGER R/O IntegerRange R/O (0 .. 0)
internal.min INTEGER R/O IntegerRange R/O (0 .. 0)
internal.sec INTEGER R/O IntegerRange R/O (0 .. 0)
internal.tag FLOAT R/O DoubleRange R/O (0.000 .. 0.000)
days INTEGER IntegerRange (0 .. 0)
hours INTEGER IntegerRange (0 .. 0)
minutes INTEGER IntegerRange (0 .. 0)
seconds INTEGER IntegerRange (0 .. 0)
cmdstat TEXT R/O StringRange R/O
dataFlowId HEX HexRange (0 .. 0)
frequency FLOAT DoubleRange (0.040 .. 2000.000)
frequency.tone1 INTEGER IntegerRange (100 .. 100000)
frequency.tone2 INTEGER IntegerRange (100 .. 100000)
frequency.tone3 INTEGER IntegerRange (100 .. 100000)
symbolRate INTEGER IntegerRange (10 .. 40000000)
operatingMode CHOICE EnumRange (NORMAL SIMULATION)
demodulationCheck CHOICE EnumRange (OFF ON)
shiftKeyingMode CHOICE EnumRange (FSK-BLANKING FSK BPSK 702 BPSK+AM 601 BPSK-SQUARE)
tonePhaseOffset INTEGER IntegerRange (0 .. 360)
pcm.code CHOICE EnumRange (NRZ-L NRZ-M BP-L RZ NRZ-S BP-M BP-S)
idlePattern HEX HexRange (0 .. 0)
preambleLength INTEGER IntegerRange (0 .. 1677724)
extPreamble INTEGER IntegerRange (0 .. 0)
idlePatternLength INTEGER IntegerRange (0 .. 8192)
extIdlePattern INTEGER IntegerRange (0 .. 0)
rfSetTime FLOAT DoubleRange (0.00 .. 9999.99)
cmm1.clcw CHOICE EnumRange (DISABLED ENABLED)
cmm2.clcw CHOICE EnumRange (DISABLED ENABLED)
clcwCheck CHOICE EnumRange (TM-CH-A TM-CH-B TM-CH-C TM-CH-D TM-CH-E TM-CH-F TM-CH-G TM-CH-H)
cmm1.offset INTEGER IntegerRange (0 .. 2043)
cmm1.mask HEX HexRange (0 .. 0)
cmm1.expectedValue HEX HexRange (0 .. 0)
cmm2.offset INTEGER IntegerRange (0 .. 2043)
cmm2.mask HEX HexRange (0 .. 0)
cmm2.expectedValue HEX HexRange (0 .. 0)
rfFallTime FLOAT DoubleRange (0.00 .. 9999.99)
demodCheck CHOICE EnumRange (TM-CH-A TM-CH-B TM-CH-C TM-CH-D TM-CH-E TM-CH-F TM-CH-G TM-CH-H)
priority CHOICE EnumRange (TC+RNG TC)
amplitudeRatio FLOAT DoubleRange (0.0 .. 1.0)
pcm.modSignal CHOICE EnumRange (INTERNAL EXTERNAL)
pcm.clock CHOICE EnumRange (INTERNAL EXTERNAL)
convolutionalEnc CHOICE EnumRange (NONE G2-INV G2)
convolutionalRate CHOICE EnumRange (1/2 1/3 2/3 3/4-CONV1 3/4-CONV2 5/6-CONV1 5/6-CONV1 7/8)
doppler.enable CHOICE EnumRange (OFF ON)
frameEncoding CHOICE EnumRange (NONE SCRAMBLING)
ldpc.rate CHOICE EnumRange (OFF 1/2 2/3 4/5 7/8)
ldpc.block CHOICE EnumRange (OFF 1024 4096 7136 16384)
time.tag CHOICE R/O EnumRange R/O (CODE-0 CODE-1 CODE-2 CODE-3 CODE-4 CODE-5)
state TEXT R/O StringRange R/O
state.commandsExpected TEXT R/O StringRange R/O
state.waitAbsTime TEXT R/O StringRange R/O
state.dateOfExecution FLOAT R/O DoubleRange R/O (0.000 .. 0.000)
state.dateOfExecution2 TEXT R/O StringRange R/O
state.lockedOut TEXT R/O StringRange R/O
state.doppler TEXT R/O StringRange R/O
state.sampling TEXT R/O StringRange R/O
state.dataCount TEXT R/O StringRange R/O
state.execCount TEXT R/O StringRange R/O
state.activeTestpoint TEXT R/O StringRange R/O
waitForAbsTime TEXT NOPRESET StringRange
abortPending TEXT NOPRESET StringRange
idle TEXT NOPRESET StringRange
sTone TEXT NOPRESET StringRange
resetCounter TEXT NOPRESET StringRange
faults.01 ALARM R/O AlarmFlagRange R/O (External Clock)
faults.02 ALARM R/O AlarmFlagRange R/O (Configuration)