diff --git a/Ccs/scripts/connection_setup.py b/Ccs/scripts/connection_setup.py
new file mode 100644
index 0000000000000000000000000000000000000000..7cf45b7f2bdfeda939c6cee62ca66dbf529959b7
--- /dev/null
+++ b/Ccs/scripts/connection_setup.py
@@ -0,0 +1,15 @@
+# Basic connection setup to IASW sim via PLM SW sim
+
+### Poolmanager ###
+cfl.start_pmgr()
+
+# PLM connection
+cfl.connect('LIVE', '', 5570, protocol='PUS')
+cfl.connect_tc('LIVE', '', 5571, protocol='PUS')
+
+### Poolviewer ###
+cfl.start_pv()
+
+#! CCS.BREAKPOINT
+cfl.start_monitor('LIVE')
+# cfl.set_monitor('LIVE')
diff --git a/Ccs/scripts/tc_commands.py b/Ccs/scripts/tc_commands.py
new file mode 100644
index 0000000000000000000000000000000000000000..17adccab3f3b87dd7a8ece4384796f3bee963959
--- /dev/null
+++ b/Ccs/scripts/tc_commands.py
@@ -0,0 +1,736 @@
+# SMILE TC templates generated from schema mib_smile_sxi (VDF:1.1.2)
+# Date: 2022-02-16
+
+# TC(3,1): SASW CreHkCmd [KSC50055]
+# Create a Housekeeping Parameter Report Structure
+SidNoCal = None  # KSP50181
+Period = None  # KSP50164
+NParam = None  # KSP50162
+ParamId = None  # KSP50163
+cfl.Tcsend_DB('SASW CreHkCmd', SidNoCal, Period, NParam, ParamId, pool_name='LIVE')
+
+
+# TC(3,3): SASW DelHkCmd [KSC50056]
+# Delete a Housekeeping or Diagnostic Parameter Report Structure
+SidNoCal = None  # KSP50181
+cfl.Tcsend_DB('SASW DelHkCmd', SidNoCal, pool_name='LIVE')
+
+
+# TC(3,5): SASW EnbHkCmd [KSC50057]
+# Enable Periodic Generation of a Housekeeping Parameter Report St
+SidNoCal = None  # KSP50181
+cfl.Tcsend_DB('SASW EnbHkCmd', SidNoCal, pool_name='LIVE')
+
+
+# TC(3,6): SASW DisHkCmd [KSC50058]
+# Disable Periodic Generation of a Housekeeping Parameter Report S
+SidNoCal = None  # KSP50181
+cfl.Tcsend_DB('SASW DisHkCmd', SidNoCal, pool_name='LIVE')
+
+
+# TC(3,9): SASW RepStructHkCmd [KSC50059]
+# Report Housekeeping Parameter Report Structure
+SidNoCal = None  # KSP50181
+cfl.Tcsend_DB('SASW RepStructHkCmd', SidNoCal, pool_name='LIVE')
+
+
+# TC(3,128): SASW ReqHkRepCmd [KSC50064]
+# Request a Housekeeping Report
+SidNoCal = None  # KSP50181
+cfl.Tcsend_DB('SASW ReqHkRepCmd', SidNoCal, pool_name='LIVE')
+
+
+# TC(3,131): SASW ModHkPeriodCmd [KSC50065]
+# Modify the Period of Housekeeping Parameter Report Structures
+SidNoCal = None  # KSP50181
+Period = None  # KSP50164
+cfl.Tcsend_DB('SASW ModHkPeriodCmd', SidNoCal, Period, pool_name='LIVE')
+
+
+# TC(5,5): SASW EnbCmd [KSC50147]
+# Enable Generation of Event Identifiers
+NEvtId = None  # KSP50048
+EvtId = None  # KSP50043
+cfl.Tcsend_DB('SASW EnbCmd', NEvtId, EvtId, pool_name='LIVE')
+
+
+# TC(5,6): SASW DisCmd [KSC50148]
+# Disable Generation of Event Identifiers
+NEvtId = None  # KSP50048
+EvtId = None  # KSP50043
+cfl.Tcsend_DB('SASW DisCmd', NEvtId, EvtId, pool_name='LIVE')
+
+
+# TC(6,2): SASW LoadCmd [KSC50149]
+# Load Memory using Absolute Addresses
+WriteMemoryId = None  # KSP50194
+StartAddress = None  # KSP50193
+BlockLength = None  # KSP50190
+BlockData = None  # KSP50189
+cfl.Tcsend_DB('SASW LoadCmd', WriteMemoryId, StartAddress, BlockLength, BlockData, pool_name='LIVE')
+
+
+# TC(6,5): SASW DumpCmd [KSC50150]
+# Dump Memory using Absolute Addresses
+ReadMemoryId = None  # KSP50192
+StartAddress = None  # KSP50193
+BlockLength = None  # KSP50190
+cfl.Tcsend_DB('SASW DumpCmd', ReadMemoryId, StartAddress, BlockLength, pool_name='LIVE')
+
+
+# TC(9,128): SASW TimeUpdt [KSC50152]
+# Update Time
+ObtTime = None  # KSP50363
+cfl.Tcsend_DB('SASW TimeUpdt', ObtTime, pool_name='LIVE')
+
+
+# TC(13,8): SASW DownAbortCmd [KSC50157]
+# Abort Downlink
+SduId = None  # KSP50186
+cfl.Tcsend_DB('SASW DownAbortCmd', SduId, pool_name='LIVE')
+
+
+# TC(13,9): SASW UpFirstCmd [KSC50158]
+# First Uplink Part
+SduId = None  # KSP50186
+SduSeqNmb = None  # KSP50187
+SduDataPartLength = None  # KSP50185
+SduDataPart = None  # KSP50184
+cfl.Tcsend_DB('SASW UpFirstCmd', SduId, SduSeqNmb, SduDataPartLength, SduDataPart, pool_name='LIVE')
+
+
+# TC(13,10): SASW UpInterCmd [KSC50159]
+# Intermediate Uplink Part
+SduId = None  # KSP50186
+SduSeqNmb = None  # KSP50187
+SduDataPartLength = None  # KSP50185
+SduDataPart = None  # KSP50184
+cfl.Tcsend_DB('SASW UpInterCmd', SduId, SduSeqNmb, SduDataPartLength, SduDataPart, pool_name='LIVE')
+
+
+# TC(13,11): SASW UpLastCmd [KSC50160]
+# Last Uplink Part
+SduId = None  # KSP50186
+SduSeqNmb = None  # KSP50187
+SduDataPartLength = None  # KSP50185
+SduDataPart = None  # KSP50184
+cfl.Tcsend_DB('SASW UpLastCmd', SduId, SduSeqNmb, SduDataPartLength, SduDataPart, pool_name='LIVE')
+
+
+# TC(13,129): SASW StartDownCmd [KSC50162]
+# Trigger Large Packet Down-Transfer
+SduId = None  # KSP50186
+cfl.Tcsend_DB('SASW StartDownCmd', SduId, pool_name='LIVE')
+
+
+# TC(17,1): SASW AreYouAliveCmd [KSC50163]
+# Perform Are-You-Alive Connection Test
+cfl.Tcsend_DB('SASW AreYouAliveCmd', pool_name='LIVE')
+
+
+# TC(20,1): SASW RepParamValuesCmd [KSC50165]
+# Report Parameter Values
+ParamSetId = None  # KSP50272
+cfl.Tcsend_DB('SASW RepParamValuesCmd', ParamSetId, pool_name='LIVE')
+
+
+# TC(20,3): SASW SetParValAdcRngsCmd [KSC50170]
+# Set Parameter Values for ADC Ranges
+# ParamSetId = ADC_RANGES  # KSP50272 [NOT EDITABLE]
+P3V9WarnLowerLimit = None  # KSP50269
+P3V9AlarmLowerLimit = None  # KSP50267
+P3V9WarnUpperLimit = None  # KSP50270
+P3V9AlarmUpperLimit = None  # KSP50268
+P3V3WarnLowerLimit = None  # KSP50261
+P3V3AlarmLowerLimit = None  # KSP50259
+P3V3WarnUpperLimit = None  # KSP50262
+P3V3AlarmUpperLimit = None  # KSP50260
+P3V3_LVDSWarnLowerLimit = None  # KSP50265
+P3V3_LVDSAlarmLowerLimit = None  # KSP50263
+P3V3_LVDSWarnUpperLimit = None  # KSP50266
+P3V3_LVDSAlarmUpperLimit = None  # KSP50264
+P2V5WarnLowerLimit = None  # KSP50257
+P2V5AlarmLowerLimit = None  # KSP50255
+P2V5WarnUpperLimit = None  # KSP50258
+P2V5AlarmUpperLimit = None  # KSP50256
+P1V8WarnLowerLimit = None  # KSP50253
+P1V8AlarmLowerLimit = None  # KSP50251
+P1V8WarnUpperLimit = None  # KSP50254
+P1V8AlarmUpperLimit = None  # KSP50252
+P1V2WarnLowerLimit = None  # KSP50249
+P1V2AlarmLowerLimit = None  # KSP50247
+P1V2WarnUpperLimit = None  # KSP50250
+P1V2AlarmUpperLimit = None  # KSP50248
+RefWarnLowerLimit = None  # KSP50275
+RefAlarmLowerLimit = None  # KSP50273
+RefWarnUpperLimit = None  # KSP50276
+RefAlarmUpperLimit = None  # KSP50274
+TEMP1WarnLowerLimit = None  # KSP50282
+TEMP1AlarmLowerLimit = None  # KSP50280
+TEMP1WarnUpperLimit = None  # KSP50283
+TEMP1AlarmUpperLimit = None  # KSP50281
+TEMP_FEEWarnLowerLimit = None  # KSP50290
+TEMP_FEEAlarmLowerLimit = None  # KSP50288
+TEMP_FEEWarnUpperLimit = None  # KSP50291
+TEMP_FEEAlarmUpperLimit = None  # KSP50289
+TEMP_CCDWarnLowerLimit = None  # KSP50286
+TEMP_CCDAlarmLowerLimit = None  # KSP50284
+TEMP_CCDWarnUpperLimit = None  # KSP50287
+TEMP_CCDAlarmUpperLimit = None  # KSP50285
+I_FEE_ANAWarnLowerLimit = None  # KSP50228
+I_FEE_ANAAlarmLowerLimit = None  # KSP50226
+I_FEE_ANAWarnUpperLimit = None  # KSP50229
+I_FEE_ANAAlarmUpperLimit = None  # KSP50227
+I_FEE_DIGWarnLowerLimit = None  # KSP50232
+I_FEE_DIGAlarmLowerLimit = None  # KSP50230
+I_FEE_DIGWarnUpperLimit = None  # KSP50233
+I_FEE_DIGAlarmUpperLimit = None  # KSP50231
+I_DPUWarnLowerLimit = None  # KSP50224
+I_DPUAlarmLowerLimit = None  # KSP50222
+I_DPUWarnUpperLimit = None  # KSP50225
+I_DPUAlarmUpperLimit = None  # KSP50223
+I_RSEWarnLowerLimit = None  # KSP50240
+I_RSEAlarmLowerLimit = None  # KSP50238
+I_RSEWarnUpperLimit = None  # KSP50241
+I_RSEAlarmUpperLimit = None  # KSP50239
+I_HEATERWarnLowerLimit = None  # KSP50236
+I_HEATERAlarmLowerLimit = None  # KSP50234
+I_HEATERWarnUpperLimit = None  # KSP50237
+I_HEATERAlarmUpperLimit = None  # KSP50235
+TEMP_PSUWarnLowerLimit = None  # KSP50294
+TEMP_PSUAlarmLowerLimit = None  # KSP50292
+TEMP_PSUWarnUpperLimit = None  # KSP50295
+TEMP_PSUAlarmUpperLimit = None  # KSP50293
+ADCParamCrc = None  # KSP50216
+cfl.Tcsend_DB('SASW SetParValAdcRngsCmd', P3V9WarnLowerLimit, P3V9AlarmLowerLimit, P3V9WarnUpperLimit, P3V9AlarmUpperLimit, P3V3WarnLowerLimit, P3V3AlarmLowerLimit, P3V3WarnUpperLimit, P3V3AlarmUpperLimit, P3V3_LVDSWarnLowerLimit, P3V3_LVDSAlarmLowerLimit, P3V3_LVDSWarnUpperLimit, P3V3_LVDSAlarmUpperLimit, P2V5WarnLowerLimit, P2V5AlarmLowerLimit, P2V5WarnUpperLimit, P2V5AlarmUpperLimit, P1V8WarnLowerLimit, P1V8AlarmLowerLimit, P1V8WarnUpperLimit, P1V8AlarmUpperLimit, P1V2WarnLowerLimit, P1V2AlarmLowerLimit, P1V2WarnUpperLimit, P1V2AlarmUpperLimit, RefWarnLowerLimit, RefAlarmLowerLimit, RefWarnUpperLimit, RefAlarmUpperLimit, TEMP1WarnLowerLimit, TEMP1AlarmLowerLimit, TEMP1WarnUpperLimit, TEMP1AlarmUpperLimit, TEMP_FEEWarnLowerLimit, TEMP_FEEAlarmLowerLimit, TEMP_FEEWarnUpperLimit, TEMP_FEEAlarmUpperLimit, TEMP_CCDWarnLowerLimit, TEMP_CCDAlarmLowerLimit, TEMP_CCDWarnUpperLimit, TEMP_CCDAlarmUpperLimit, I_FEE_ANAWarnLowerLimit, I_FEE_ANAAlarmLowerLimit, I_FEE_ANAWarnUpperLimit, I_FEE_ANAAlarmUpperLimit, I_FEE_DIGWarnLowerLimit, I_FEE_DIGAlarmLowerLimit, I_FEE_DIGWarnUpperLimit, I_FEE_DIGAlarmUpperLimit, I_DPUWarnLowerLimit, I_DPUAlarmLowerLimit, I_DPUWarnUpperLimit, I_DPUAlarmUpperLimit, I_RSEWarnLowerLimit, I_RSEAlarmLowerLimit, I_RSEWarnUpperLimit, I_RSEAlarmUpperLimit, I_HEATERWarnLowerLimit, I_HEATERAlarmLowerLimit, I_HEATERWarnUpperLimit, I_HEATERAlarmUpperLimit, TEMP_PSUWarnLowerLimit, TEMP_PSUAlarmLowerLimit, TEMP_PSUWarnUpperLimit, TEMP_PSUAlarmUpperLimit, ADCParamCrc, pool_name='LIVE')
+
+
+# TC(20,3): SASW SetParValHeatCtlCmd [KSC50171]
+# Set Parameter Values for Heater Control of IASW
+# ParamSetId = HEAT_CTRL_IASW  # KSP50272 [NOT EDITABLE]
+HctrlParExecPer = None  # KSP50220
+HctrlParTempRef = None  # KSP50221
+HctrlParCoeffP = None  # KSP50219
+ADCParamCrc = None  # KSP50216
+cfl.Tcsend_DB('SASW SetParValHeatCtlCmd', HctrlParExecPer, HctrlParTempRef, HctrlParCoeffP, ADCParamCrc, pool_name='LIVE')
+
+
+# TC(20,3): SASW SetParValRseParCmd [KSC50172]
+# Set Parameter Values for RSE Parameters
+# ParamSetId = RSE_PARAM  # KSP50272 [NOT EDITABLE]
+MotorCurr = None  # KSP50246
+SettlingTime = None  # KSP50279
+ChopDutyCyc = None  # KSP50217
+MaxMotorTemp = None  # KSP50244
+MaxElecTemp = None  # KSP50242
+MaxSteps = None  # KSP50245
+RseConfig = None  # KSP50277
+MaxMotorCurr = None  # KSP50243
+EmergencySteps = None  # KSP50218
+ParamCrc = None  # KSP50271
+cfl.Tcsend_DB('SASW SetParValRseParCmd', MotorCurr, SettlingTime, ChopDutyCyc, MaxMotorTemp, MaxElecTemp, MaxSteps, RseConfig, MaxMotorCurr, EmergencySteps, ParamCrc, pool_name='LIVE')
+
+
+# TC(20,128): SASW ParamLoadArmCmd [KSC50173]
+# Arm Parameter Load
+cfl.Tcsend_DB('SASW ParamLoadArmCmd', pool_name='LIVE')
+
+
+# TC(20,129): SASW ParamLoadDisarmCmd [KSC50174]
+# Disarm Parameter Load
+cfl.Tcsend_DB('SASW ParamLoadDisarmCmd', pool_name='LIVE')
+
+
+# TC(191,1): SASW FdCheckEnbGlobCmd [KSC50175]
+# Globally EnableFdChecks
+cfl.Tcsend_DB('SASW FdCheckEnbGlobCmd', pool_name='LIVE')
+
+
+# TC(191,2): SASW FdCheckDisGlobCmd [KSC50176]
+# Globally Disable FdChecks
+cfl.Tcsend_DB('SASW FdCheckDisGlobCmd', pool_name='LIVE')
+
+
+# TC(191,3): SASW FdCheckEnbCmd [KSC50177]
+# Enable FdCheck
+FdChkId = None  # KSP50073
+cfl.Tcsend_DB('SASW FdCheckEnbCmd', FdChkId, pool_name='LIVE')
+
+
+# TC(191,4): SASW FdCheckDisCmd [KSC50178]
+# Disable FdCheck
+FdChkId = None  # KSP50073
+cfl.Tcsend_DB('SASW FdCheckDisCmd', FdChkId, pool_name='LIVE')
+
+
+# TC(191,5): SASW FdRecovEnbGlobCmd [KSC50179]
+# Globally Enable Recovery Procedures
+cfl.Tcsend_DB('SASW FdRecovEnbGlobCmd', pool_name='LIVE')
+
+
+# TC(191,6): SASW FdRecovDisGlobCmd [KSC50180]
+# Globally Disable Recovery Procedures
+cfl.Tcsend_DB('SASW FdRecovDisGlobCmd', pool_name='LIVE')
+
+
+# TC(191,7): SASW FdRecovEnbCmd [KSC50181]
+# Enable Recovery Procedure
+FdChkId = None  # KSP50073
+cfl.Tcsend_DB('SASW FdRecovEnbCmd', FdChkId, pool_name='LIVE')
+
+
+# TC(191,8): SASW FdRecovDisCmd [KSC50182]
+# Disable Recovery Procedure
+FdChkId = None  # KSP50073
+cfl.Tcsend_DB('SASW FdRecovDisCmd', FdChkId, pool_name='LIVE')
+
+
+# TC(193,1): SASW IaModePreSciCmd [KSC50183]
+# Prepare Science
+cfl.Tcsend_DB('SASW IaModePreSciCmd', pool_name='LIVE')
+
+
+# TC(193,2): SASW IaModeStrtSciCmd [KSC50184]
+# Start Science
+cfl.Tcsend_DB('SASW IaModeStrtSciCmd', pool_name='LIVE')
+
+
+# TC(193,3): SASW IaModeStpSciCmd [KSC50185]
+# Stop Science
+cfl.Tcsend_DB('SASW IaModeStpSciCmd', pool_name='LIVE')
+
+
+# TC(193,4): SASW IaModeGotoStbyCmd [KSC50186]
+# Goto Standby
+cfl.Tcsend_DB('SASW IaModeGotoStbyCmd', pool_name='LIVE')
+
+
+# TC(193,5): SASW IaModeStrtManCmd [KSC50187]
+# Start Manual FEE Mode
+cfl.Tcsend_DB('SASW IaModeStrtManCmd', pool_name='LIVE')
+
+
+# TC(193,6): SASW IaModeContrSwOffCmd [KSC50188]
+# Controlled Switch-Off IASW
+cfl.Tcsend_DB('SASW IaModeContrSwOffCmd', pool_name='LIVE')
+
+
+# TC(194,1): SASW AlgoStrtCmd [KSC50191]
+# Start Algorithm
+AlgoId = None  # KSP50004
+cfl.Tcsend_DB('SASW AlgoStrtCmd', AlgoId, pool_name='LIVE')
+
+
+# TC(194,2): SASW AlgoStopCmd [KSC50192]
+# Stop Algorithm
+AlgoId = None  # KSP50004
+cfl.Tcsend_DB('SASW AlgoStopCmd', AlgoId, pool_name='LIVE')
+
+
+# TC(194,3): SASW AlgoSuspCmd [KSC50193]
+# Suspend Algorithm
+AlgoId = None  # KSP50004
+cfl.Tcsend_DB('SASW AlgoSuspCmd', AlgoId, pool_name='LIVE')
+
+
+# TC(194,4): SASW AlgoResCmd [KSC50194]
+# Resume Algorithm
+AlgoId = None  # KSP50004
+cfl.Tcsend_DB('SASW AlgoResCmd', AlgoId, pool_name='LIVE')
+
+
+# TC(197,2): SASW BootRepGenCmd [KSC50196]
+# Generate Boot Report
+DpuMemoryId = None  # KSP50007
+StartAddress = None  # KSP50017
+cfl.Tcsend_DB('SASW BootRepGenCmd', DpuMemoryId, StartAddress, pool_name='LIVE')
+
+
+# TC(198,1): SASW ProcStartCmd [KSC50197]
+# Start Procedure
+ProcId = None  # KSP50308
+ProcParams = None  # KSP50309
+cfl.Tcsend_DB('SASW ProcStartCmd', ProcId, ProcParams, pool_name='LIVE')
+
+
+# TC(198,2): SASW ProcStopCmd [KSC50198]
+# Stop Procedure
+ProcId = None  # KSP50308
+cfl.Tcsend_DB('SASW ProcStopCmd', ProcId, pool_name='LIVE')
+
+
+# TC(210,1): SASW ResetDpuSafeCmd [KSC50199]
+# Reset to Safe
+cfl.Tcsend_DB('SASW ResetDpuSafeCmd', pool_name='LIVE')
+
+
+# TC(210,2): SASW WatchdogEnbCmd [KSC50200]
+# Enable Watchdog
+cfl.Tcsend_DB('SASW WatchdogEnbCmd', pool_name='LIVE')
+
+
+# TC(210,3): SASW WatchdogDisCmd [KSC50201]
+# Disable Watchdog
+cfl.Tcsend_DB('SASW WatchdogDisCmd', pool_name='LIVE')
+
+
+# TC(210,6): SASW LoadRegisterCmd [KSC50202]
+# Load Register
+RegAddr = None  # KSP50195
+RegData = None  # KSP50196
+VerifAddr = None  # KSP50197
+VerifMask = None  # KSP50198
+cfl.Tcsend_DB('SASW LoadRegisterCmd', RegAddr, RegData, VerifAddr, VerifMask, pool_name='LIVE')
+
+
+# TC(210,7): SASW LoadRegisterArmCmd [KSC50203]
+# Arm Load Register
+cfl.Tcsend_DB('SASW LoadRegisterArmCmd', pool_name='LIVE')
+
+
+# TC(210,8): SASW LoadRegisterDisarmC [KSC50204]
+# Disarm Load Register
+cfl.Tcsend_DB('SASW LoadRegisterDisarmC', pool_name='LIVE')
+
+
+# TC(211,1): SASW ParamUpdtBoolCmd [KSC50205]
+# Update Parameter of type Boolean
+# ParamType = PAR_BOOL  # KSP50206 [NOT EDITABLE]
+NParams = None  # KSP50200
+ParamId = None  # KSP50201
+ArrayElemId = None  # KSP50199
+ParamValueBool = None  # KSP50207
+cfl.Tcsend_DB('SASW ParamUpdtBoolCmd', NParams, ParamId, ArrayElemId, ParamValueBool, pool_name='LIVE')
+
+
+# TC(211,1): SASW ParamUpdtInt8Cmd [KSC50206]
+# Update Parameter of type INT8
+# ParamType = PAR_INT8  # KSP50206 [NOT EDITABLE]
+NParams = None  # KSP50200
+ParamId = None  # KSP50201
+ArrayElemId = None  # KSP50199
+ParamValueInt8 = None  # KSP50212
+cfl.Tcsend_DB('SASW ParamUpdtInt8Cmd', NParams, ParamId, ArrayElemId, ParamValueInt8, pool_name='LIVE')
+
+
+# TC(211,1): SASW ParamUpdtInt16Cmd [KSC50207]
+# Update Parameter of type INT16
+# ParamType = PAR_INT16  # KSP50206 [NOT EDITABLE]
+NParams = None  # KSP50200
+ParamId = None  # KSP50201
+ArrayElemId = None  # KSP50199
+ParamValueInt16 = None  # KSP50210
+cfl.Tcsend_DB('SASW ParamUpdtInt16Cmd', NParams, ParamId, ArrayElemId, ParamValueInt16, pool_name='LIVE')
+
+
+# TC(211,1): SASW ParamUpdtInt32Cmd [KSC50208]
+# Update Parameter of type INT32
+# ParamType = PAR_INT32  # KSP50206 [NOT EDITABLE]
+NParams = None  # KSP50200
+ParamId = None  # KSP50201
+ArrayElemId = None  # KSP50199
+ParamValueInt32 = None  # KSP50211
+cfl.Tcsend_DB('SASW ParamUpdtInt32Cmd', NParams, ParamId, ArrayElemId, ParamValueInt32, pool_name='LIVE')
+
+
+# TC(211,1): SASW ParamUpdtUint8Cmd [KSC50209]
+# Update Parameter of type UINT8
+# ParamType = PAR_UINT8  # KSP50206 [NOT EDITABLE]
+NParams = None  # KSP50200
+ParamId = None  # KSP50201
+ArrayElemId = None  # KSP50199
+ParamValueUint8 = None  # KSP50215
+cfl.Tcsend_DB('SASW ParamUpdtUint8Cmd', NParams, ParamId, ArrayElemId, ParamValueUint8, pool_name='LIVE')
+
+
+# TC(211,1): SASW ParamUpdtUint16Cmd [KSC50210]
+# Update Parameter of type UINT16
+# ParamType = PAR_UINT16  # KSP50206 [NOT EDITABLE]
+NParams = None  # KSP50200
+ParamId = None  # KSP50201
+ArrayElemId = None  # KSP50199
+ParamValueUint16 = None  # KSP50213
+cfl.Tcsend_DB('SASW ParamUpdtUint16Cmd', NParams, ParamId, ArrayElemId, ParamValueUint16, pool_name='LIVE')
+
+
+# TC(211,1): SASW ParamUpdtUint32Cmd [KSC50211]
+# Update Parameter of type UINT32
+# ParamType = PAR_UINT32  # KSP50206 [NOT EDITABLE]
+NParams = None  # KSP50200
+ParamId = None  # KSP50201
+ArrayElemId = None  # KSP50199
+ParamValueUint32 = None  # KSP50214
+cfl.Tcsend_DB('SASW ParamUpdtUint32Cmd', NParams, ParamId, ArrayElemId, ParamValueUint32, pool_name='LIVE')
+
+
+# TC(211,1): SASW ParamUpdtFloatCmd [KSC50212]
+# Update Parameter of type FLOAT
+# ParamType = PAR_FLOAT  # KSP50206 [NOT EDITABLE]
+NParams = None  # KSP50200
+ParamId = None  # KSP50201
+ArrayElemId = None  # KSP50199
+ParamValueFloat = None  # KSP50209
+cfl.Tcsend_DB('SASW ParamUpdtFloatCmd', NParams, ParamId, ArrayElemId, ParamValueFloat, pool_name='LIVE')
+
+
+# TC(211,1): SASW ParamUpdtCucCmd [KSC50213]
+# Update Parameter of type CUC
+# ParamType = PAR_CUC  # KSP50206 [NOT EDITABLE]
+NParams = None  # KSP50200
+ParamId = None  # KSP50201
+ArrayElemId = None  # KSP50199
+ParamValueCuc = None  # KSP50208
+cfl.Tcsend_DB('SASW ParamUpdtCucCmd', NParams, ParamId, ArrayElemId, ParamValueCuc, pool_name='LIVE')
+
+
+# TC(212,1): SASW CopyCmd [KSC50214]
+# Copy Data
+SrcMemId = None  # KSP50022
+SrcAddress = None  # KSP50021
+DataSize = None  # KSP50019
+TrgtMemId = None  # KSP50024
+TrgtAddress = None  # KSP50023
+cfl.Tcsend_DB('SASW CopyCmd', SrcMemId, SrcAddress, DataSize, TrgtMemId, TrgtAddress, pool_name='LIVE')
+
+
+# TC(212,2): SASW ComprCmd [KSC50215]
+# Compress Data
+SrcMemId = None  # KSP50022
+SrcAddress = None  # KSP50021
+DataSize = None  # KSP50019
+ComprConfig = None  # KSP50018
+TrgtMemId = None  # KSP50024
+TrgtAddress = None  # KSP50023
+cfl.Tcsend_DB('SASW ComprCmd', SrcMemId, SrcAddress, DataSize, ComprConfig, TrgtMemId, TrgtAddress, pool_name='LIVE')
+
+
+# TC(212,3): SASW DecomprCmd [KSC50216]
+# Decompress Data
+SrcMemId = None  # KSP50022
+SrcAddress = None  # KSP50021
+DataSize = None  # KSP50019
+DecomprConfig = None  # KSP50020
+TrgtMemId = None  # KSP50024
+TrgtAddress = None  # KSP50023
+cfl.Tcsend_DB('SASW DecomprCmd', SrcMemId, SrcAddress, DataSize, DecomprConfig, TrgtMemId, TrgtAddress, pool_name='LIVE')
+
+
+# TC(213,1): SASW SchedSegmCmd [KSC50217]
+# Schedule Program Segment
+SegmAddress = None  # KSP50188
+cfl.Tcsend_DB('SASW SchedSegmCmd', SegmAddress, pool_name='LIVE')
+
+
+# TC(3,131): DBS_TC_SET_HKREP_FREQ [KTC40001]
+# Set Housekeeping Reporting Frequency
+HK_REP_SID = 100  # KTP40001
+HK_REP_PER = 32  # KTP40002
+cfl.Tcsend_DB('DBS_TC_SET_HKREP_FREQ', HK_REP_SID, HK_REP_PER, pool_name='LIVE')
+
+
+# TC(5,5): DBS_TC_ENABLE_EVENT [KTC40002]
+# Enables one or more event reports
+EVENT_REP_CNT = 1  # KTP40010
+EVENT_ID = "EVT_MEM_COR_RAM"  # KTP40011
+cfl.Tcsend_DB('DBS_TC_ENABLE_EVENT', EVENT_REP_CNT, EVENT_ID, pool_name='LIVE')
+
+
+# TC(5,6): DBS_TC_DISABLE_EVENT [KTC40003]
+# Disables one or more event reports
+EVENT_REP_CNT = 1  # KTP40010
+EVENT_ID = "EVT_MEM_COR_RAM"  # KTP40011
+cfl.Tcsend_DB('DBS_TC_DISABLE_EVENT', EVENT_REP_CNT, EVENT_ID, pool_name='LIVE')
+
+
+# TC(6,2): DBS_TC_LOAD_MEMORY [KTC40004]
+# Load data to the onboard memory
+WR_MEM_MID = "DPU_RAM"  # KTP40030
+WR_START_ADDR = 0x60000000  # KTP40031
+WR_BLOCK_LEN = 4  # KTP40032
+WR_BLOC_DATA = 0x00  # KTP40033
+cfl.Tcsend_DB('DBS_TC_LOAD_MEMORY', WR_MEM_MID, WR_START_ADDR, WR_BLOCK_LEN, WR_BLOC_DATA, pool_name='LIVE')
+
+
+# TC(6,5): DBS_TC_DUMP_MEMORY [KTC40005]
+# Dump data from the onboard memory
+RD_MEM_MID = "DPU_RAM"  # KTP40050
+RD_START_ADDR = 0x60000000  # KTP40051
+RD_BLOCK_LEN = 4  # KTP40052
+cfl.Tcsend_DB('DBS_TC_DUMP_MEMORY', RD_MEM_MID, RD_START_ADDR, RD_BLOCK_LEN, pool_name='LIVE')
+
+
+# TC(6,9): DBS_TC_CHECK_MEMORY [KTC40006]
+# Check the onboard memory
+CH_MEM_MID = "DPU_RAM"  # KTP40060
+CH_START_ADDR = 0x60000000  # KTP40061
+CH_BLOCK_LEN = 4  # KTP40062
+cfl.Tcsend_DB('DBS_TC_CHECK_MEMORY', CH_MEM_MID, CH_START_ADDR, CH_BLOCK_LEN, pool_name='LIVE')
+
+
+# TC(6,129): DBS_TC_CLEAR_MEMORY [KTC40007]
+# Clear a section of the the RAM
+# CLR_MEM_MID = DPU_RAM  # KTP40070 [NOT EDITABLE]
+CLR_START_ADDR = 0x60040000  # KTP40071
+CLR_BLOCK_LEN = 33554432  # KTP40072
+cfl.Tcsend_DB('DBS_TC_CLEAR_MEMORY', CLR_START_ADDR, CLR_BLOCK_LEN, pool_name='LIVE')
+
+
+# TC(9,128): DBS_TC_UPDATE_TIME [KTC40008]
+# Set the onboard time
+DPU_NEW_TIMESTAMP = 0  # KTP40080
+cfl.Tcsend_DB('DBS_TC_UPDATE_TIME', DPU_NEW_TIMESTAMP, pool_name='LIVE')
+
+
+# TC(17,1): DBS_TC_TEST_CONNECTION [KTC40009]
+# Test the connection to the DPU
+cfl.Tcsend_DB('DBS_TC_TEST_CONNECTION', pool_name='LIVE')
+
+
+# TC(20,1): DBS_TC_DUMP_PARAMETERS [KTC40010]
+# Dump parameters
+PARAM_SID = "ADC_RANGES"  # KTP40100
+cfl.Tcsend_DB('DBS_TC_DUMP_PARAMETERS', PARAM_SID, pool_name='LIVE')
+
+
+# TC(20,3): DBS_TC_PARLOAD_ADCRANGES [KTC40011]
+# Load parameterset for ADC ranges
+# PARAM_SID = ADC_RANGES  # KTP40100 [NOT EDITABLE]
+P3V9_WARN_LOWER_RANGE = 0  # KTP40110
+P3V9_FAIL_LOWER_RANGE = 0  # KTP40111
+P3V9_WARN_UPPER_RANGE = 16382  # KTP40112
+P3V9_FAIL_UPPER_RANGE = 16382  # KTP40113
+P3V3_WARN_LOWER_RANGE = 0  # KTP40114
+P3V3_FAIL_LOWER_RANGE = 0  # KTP40115
+P3V3_WARN_UPPER_RANGE = 16382  # KTP40116
+P3V3_FAIL_UPPER_RANGE = 16382  # KTP40117
+P3V3_LVDS_WARN_LOWER_RAN = 0  # KTP40118
+P3V3_LVDS_FAIL_LOWER_RAN = 0  # KTP40119
+P3V3_LVDS_WARN_UPPER_RAN = 16382  # KTP40120
+P3V3_LVDS_FAIL_UPPER_RAN = 16382  # KTP40121
+P2V5_WARN_LOWER_RANGE = 0  # KTP40122
+P2V5_FAIL_LOWER_RANGE = 0  # KTP40123
+P2V5_WARN_UPPER_RANGE = 16382  # KTP40124
+P2V5_FAIL_UPPER_RANGE = 16382  # KTP40125
+P1V8_WARN_LOWER_RANGE = 0  # KTP40126
+P1V8_FAIL_LOWER_RANGE = 0  # KTP40127
+P1V8_WARN_UPPER_RANGE = 16382  # KTP40128
+P1V8_FAIL_UPPER_RANGE = 16382  # KTP40129
+P1V2_WARN_LOWER_RANGE = 0  # KTP40130
+P1V2_FAIL_LOWER_RANGE = 0  # KTP40131
+P1V2_WARN_UPPER_RANGE = 16382  # KTP40132
+P1V2_FAIL_UPPER_RANGE = 16382  # KTP40133
+REF_WARN_LOWER_RANGE = 0  # KTP40134
+REF_FAIL_LOWER_RANGE = 0  # KTP40135
+REF_WARN_UPPER_RANGE = 16382  # KTP40136
+REF_FAIL_UPPER_RANGE = 16382  # KTP40137
+TEMP1_WARN_LOWER_RANGE = 0  # KTP40138
+TEMP1_FAIL_LOWER_RANGE = 0  # KTP40139
+TEMP1_WARN_UPPER_RANGE = 16382  # KTP40140
+TEMP1_FAIL_UPPER_RANGE = 16382  # KTP40141
+TEMP_FEE_WARN_LOWER_RANG = 0  # KTP40142
+TEMP_FEE_FAIL_LOWER_RANG = 0  # KTP40143
+TEMP_FEE_WARN_UPPER_RANG = 16382  # KTP40144
+TEMP_FEE_FAIL_UPPER_RANG = 16382  # KTP40145
+TEMP_CDD_WARN_LOWER_RANG = 0  # KTP40146
+TEMP_CDD_FAIL_LOWER_RANG = 0  # KTP40147
+TEMP_CDD_WARN_UPPER_RANG = 16382  # KTP40148
+TEMP_CDD_FAIL_UPPER_RANG = 16382  # KTP40149
+I_FEE_ANA_WARN_LOWER_RAN = 0  # KTP40150
+I_FEE_ANA_FAIL_LOWER_RAN = 0  # KTP40151
+I_FEE_ANA_WARN_UPPER_RAN = 16382  # KTP40152
+I_FEE_ANA_FAIL_UPPER_RAN = 16382  # KTP40153
+I_FEE_DIG_WARN_LOWER_RAN = 0  # KTP40154
+I_FEE_DIG_FAIL_LOWER_RAN = 0  # KTP40155
+I_FEE_DIG_WARN_UPPER_RAN = 16382  # KTP40156
+I_FEE_DIG_FAIL_UPPER_RAN = 16382  # KTP40157
+I_DPU_WARN_LOWER_RANGE = 0  # KTP40158
+I_DPU_FAIL_LOWER_RANGE = 0  # KTP40159
+I_DPU_WARN_UPPER_RANGE = 16382  # KTP40160
+I_DPU_FAIL_UPPER_RANGE = 16382  # KTP40161
+I_RSE_WARN_LOWER_RANGE = 0  # KTP40162
+I_RSE_FAIL_LOWER_RANGE = 0  # KTP40163
+I_RSE_WARN_UPPER_RANGE = 16382  # KTP40164
+I_RSE_FAIL_UPPER_RANGE = 16382  # KTP40165
+I_HEATER_WARN_LOWER_RANG = 0  # KTP40166
+I_HEATER_FAIL_LOWER_RANG = 0  # KTP40167
+I_HEATER_WARN_UPPER_RANG = 16382  # KTP40168
+I_HEATER_FAIL_UPPER_RANG = 16382  # KTP40169
+TEMP_PSU_WARN_LOWER_RANG = 0  # KTP40170
+TEMP_PSU_FAIL_LOWER_RANG = 0  # KTP40171
+TEMP_PSU_WARN_UPPER_RANG = 16382  # KTP40172
+TEMP_PSU_FAIL_UPPER_RANG = 16382  # KTP40173
+PARAM_CRC = 0  # KTP40174
+cfl.Tcsend_DB('DBS_TC_PARLOAD_ADCRANGES', P3V9_WARN_LOWER_RANGE, P3V9_FAIL_LOWER_RANGE, P3V9_WARN_UPPER_RANGE, P3V9_FAIL_UPPER_RANGE, P3V3_WARN_LOWER_RANGE, P3V3_FAIL_LOWER_RANGE, P3V3_WARN_UPPER_RANGE, P3V3_FAIL_UPPER_RANGE, P3V3_LVDS_WARN_LOWER_RAN, P3V3_LVDS_FAIL_LOWER_RAN, P3V3_LVDS_WARN_UPPER_RAN, P3V3_LVDS_FAIL_UPPER_RAN, P2V5_WARN_LOWER_RANGE, P2V5_FAIL_LOWER_RANGE, P2V5_WARN_UPPER_RANGE, P2V5_FAIL_UPPER_RANGE, P1V8_WARN_LOWER_RANGE, P1V8_FAIL_LOWER_RANGE, P1V8_WARN_UPPER_RANGE, P1V8_FAIL_UPPER_RANGE, P1V2_WARN_LOWER_RANGE, P1V2_FAIL_LOWER_RANGE, P1V2_WARN_UPPER_RANGE, P1V2_FAIL_UPPER_RANGE, REF_WARN_LOWER_RANGE, REF_FAIL_LOWER_RANGE, REF_WARN_UPPER_RANGE, REF_FAIL_UPPER_RANGE, TEMP1_WARN_LOWER_RANGE, TEMP1_FAIL_LOWER_RANGE, TEMP1_WARN_UPPER_RANGE, TEMP1_FAIL_UPPER_RANGE, TEMP_FEE_WARN_LOWER_RANG, TEMP_FEE_FAIL_LOWER_RANG, TEMP_FEE_WARN_UPPER_RANG, TEMP_FEE_FAIL_UPPER_RANG, TEMP_CDD_WARN_LOWER_RANG, TEMP_CDD_FAIL_LOWER_RANG, TEMP_CDD_WARN_UPPER_RANG, TEMP_CDD_FAIL_UPPER_RANG, I_FEE_ANA_WARN_LOWER_RAN, I_FEE_ANA_FAIL_LOWER_RAN, I_FEE_ANA_WARN_UPPER_RAN, I_FEE_ANA_FAIL_UPPER_RAN, I_FEE_DIG_WARN_LOWER_RAN, I_FEE_DIG_FAIL_LOWER_RAN, I_FEE_DIG_WARN_UPPER_RAN, I_FEE_DIG_FAIL_UPPER_RAN, I_DPU_WARN_LOWER_RANGE, I_DPU_FAIL_LOWER_RANGE, I_DPU_WARN_UPPER_RANGE, I_DPU_FAIL_UPPER_RANGE, I_RSE_WARN_LOWER_RANGE, I_RSE_FAIL_LOWER_RANGE, I_RSE_WARN_UPPER_RANGE, I_RSE_FAIL_UPPER_RANGE, I_HEATER_WARN_LOWER_RANG, I_HEATER_FAIL_LOWER_RANG, I_HEATER_WARN_UPPER_RANG, I_HEATER_FAIL_UPPER_RANG, TEMP_PSU_WARN_LOWER_RANG, TEMP_PSU_FAIL_LOWER_RANG, TEMP_PSU_WARN_UPPER_RANG, TEMP_PSU_FAIL_UPPER_RANG, PARAM_CRC, pool_name='LIVE')
+
+
+# TC(20,3): DBS_TC_PARLOAD_RSEPARAM [KTC40012]
+# Load parameterset for RSE
+# PARAM_SID = RSE_PARAM  # KTP40100 [NOT EDITABLE]
+MOTOR_CUR = 0  # KTP40190
+SETTL_TIME = 0  # KTP40191
+CHOP_DUTY = 0  # KTP40192
+MAX_MOTOR_TEMP = 0  # KTP40193
+MAX_ELEC_TEMP = 0  # KTP40194
+MAX_STEPS = 0  # KTP40195
+RSE_CONFIG = 0  # KTP40196
+MAX_MOTOR_CUR = 0  # KTP40197
+EMERGENCY_STEPS = 0  # KTP40198
+PARAM_CRC = 0  # KTP40174
+cfl.Tcsend_DB('DBS_TC_PARLOAD_RSEPARAM', MOTOR_CUR, SETTL_TIME, CHOP_DUTY, MAX_MOTOR_TEMP, MAX_ELEC_TEMP, MAX_STEPS, RSE_CONFIG, MAX_MOTOR_CUR, EMERGENCY_STEPS, PARAM_CRC, pool_name='LIVE')
+
+
+# TC(20,128): DBS_TC_PARLOAD_ARM [KTC40013]
+# Arm the software for loading of parameters to the MRAM
+cfl.Tcsend_DB('DBS_TC_PARLOAD_ARM', pool_name='LIVE')
+
+
+# TC(20,129): DBS_TC_PARLOAD_DISARM [KTC40014]
+# Disarm the software for loading of parameters
+cfl.Tcsend_DB('DBS_TC_PARLOAD_DISARM', pool_name='LIVE')
+
+
+# TC(210,1): DBS_TC_RESET_TO_SAFE [KTC40015]
+# Reset the DPU (and go to SAFE mode)
+cfl.Tcsend_DB('DBS_TC_RESET_TO_SAFE', pool_name='LIVE')
+
+
+# TC(210,2): DBS_TC_ENABLE_WATCHDOG [KTC40016]
+# Enable the watchdog of the DPU
+cfl.Tcsend_DB('DBS_TC_ENABLE_WATCHDOG', pool_name='LIVE')
+
+
+# TC(210,3): DBS_TC_DISABLE_WATCHDOG [KTC40017]
+# DISable the watchdog of the DPU
+cfl.Tcsend_DB('DBS_TC_DISABLE_WATCHDOG', pool_name='LIVE')
+
+
+# TC(210,4): DBS_TC_BOOT_IASW [KTC40018]
+# Start the Application Software
+SW_MEM_MID = "DPU_RAM"  # KTP40260
+SW_IMG_ADDR = 0x00000000  # KTP40261
+SW_START_ADDR = 0x60040000  # KTP40262
+SW_FREE1 = 0x00000000  # KTP40263
+SW_FREE2 = 0x00000000  # KTP40264
+SW_FREE3 = 0x00000000  # KTP40265
+SW_FREE4 = 0x00000000  # KTP40266
+SW_FREE5 = 0x00000000  # KTP40267
+cfl.Tcsend_DB('DBS_TC_BOOT_IASW', SW_MEM_MID, SW_IMG_ADDR, SW_START_ADDR, SW_FREE1, SW_FREE2, SW_FREE3, SW_FREE4, SW_FREE5, pool_name='LIVE')
+
+
+# TC(210,6): DBS_TC_LOAD_REGISTER [KTC40019]
+# Load data to the registers in the GR712RC or FPGA
+LR_REG_ADDR = 0x20000000  # KTP40280
+LR_REG_DATA = 0x0  # KTP40281
+LR_VERI_ADDR = 0x20000000  # KTP40282
+LR_VERI_MASK = 0xFFFFFFFF  # KTP40283
+cfl.Tcsend_DB('DBS_TC_LOAD_REGISTER', LR_REG_ADDR, LR_REG_DATA, LR_VERI_ADDR, LR_VERI_MASK, pool_name='LIVE')
+
+
+# TC(210,7): DBS_TC_LOAD_REG_ARM [KTC40020]
+# Arm the software for loading into a register
+cfl.Tcsend_DB('DBS_TC_LOAD_REG_ARM', pool_name='LIVE')
+
+
+# TC(210,8): DBS_TC_LOAD_REG_DISARM [KTC40021]
+# Disarm the software for loading into a register
+cfl.Tcsend_DB('DBS_TC_LOAD_REG_DISARM', pool_name='LIVE')