diff --git a/.gitmodules b/.gitmodules index fb53a08b..bba13436 100644 --- a/.gitmodules +++ b/.gitmodules @@ -131,3 +131,6 @@ path = components/syn url = https://github.com/nasa-itc/syn.git branch = main +[submodule "components/generic_thruster"] + path = components/generic_thruster + url = https://github.com/nasa-itc/generic_thruster.git diff --git a/cfg/InOut/Inp_IPC.txt b/cfg/InOut/Inp_IPC.txt index 1e2bc0d8..d0644602 100644 --- a/cfg/InOut/Inp_IPC.txt +++ b/cfg/InOut/Inp_IPC.txt @@ -70,6 +70,16 @@ FALSE ! Allow Blocking (i.e. wait on RX) FALSE ! Echo to stdout 1 ! Number of TX prefixes "SC" ! Prefix 0 +********************************** Thruster IPC **************************** +RX ! IPC Mode (OFF,TX,RX,TXRX,ACS,WRITEFILE,READFILE) +1 ! AC.ID for ACS mode +"Thruster.Rx" ! File name for WRITE or READ +SERVER ! Socket Role (SERVER,CLIENT,GMSEC_CLIENT) +fortytwo 4280 ! Server Host Name, Port +FALSE ! Allow Blocking (i.e. wait on RX) +FALSE ! Echo to stdout +1 ! Number of TX prefixes +"SC" ! Prefix 0 ********************************** GPS IPC ***************************** TX ! IPC Mode (OFF,TX,RX,TXRX,ACS,WRITEFILE,READFILE) 0 ! AC.ID for ACS mode diff --git a/cfg/InOut/Nodes_Simple.txt b/cfg/InOut/Nodes_Simple.txt new file mode 100644 index 00000000..038e50d4 --- /dev/null +++ b/cfg/InOut/Nodes_Simple.txt @@ -0,0 +1,8 @@ +<<<<<<<<<<<<<<<< Body Node Inputs for 42 >>>>>>>>>>>>>>>>>>>>> +Simple Nodes ! Description +4 ! Number of Nodes +******************* Node Location, Comment ********************* + 0.1 -0.4 0.25 "Thrusters" + 0.1 -0.1 0.25 "Thrusters" + 0.1 -0.4 0.15 "Thrusters" + 0.1 -0.1 0.15 "Thrusters" diff --git a/cfg/InOut/SC_NOS3.txt b/cfg/InOut/SC_NOS3.txt index 442e8e95..9338b4b7 100644 --- a/cfg/InOut/SC_NOS3.txt +++ b/cfg/InOut/SC_NOS3.txt @@ -11,7 +11,7 @@ CM ! Pos of CM or ORIGIN, wrt F 0.0 0.0 0.0 ! Vel wrt Formation (m/s), expressed in F *************************** Initial Attitude *************************** NAN ! Ang Vel wrt [NL], Att [QA] wrt [NLF] -0.3 0.4 0.5 ! Ang Vel (deg/sec) +0.0 0.0 0.0 ! Ang Vel (deg/sec) 0.0 0.0 0.0 1.0 ! Quaternion 60.0 40.0 20.0 213 ! Angles (deg) & Euler Sequence *************************** Dynamics Flags *************************** @@ -34,7 +34,7 @@ NONE ! Shaker File Name 0.0 0.0 0.0 ! Constant Embedded Momentum (Nms) 0.0 0.0 0.0 ! Constant Embedded Magnetic Dipole (A-m^2) stf1_red.obj ! Geometry Input File Name -NONE ! Node File Name +Nodes_Simple.txt ! Node File Name NONE ! Flex File Name ************************************************************************ *************************** Joint Parameters *************************** @@ -99,13 +99,31 @@ NONE ! Drag/Jitter Input File Name 0.0 0.0 1.0 ! MTB Axis Components, [X, Y, Z] 0 ! Flex Node Index ************************* Thruster Parameters ************************** -0 ! Number of Thrusters +4 ! Number of Thrusters ============================== Thr 0 ================================= -PULSED ! Mode (PULSED or PROPORTIONAL) - 1.0 ! Thrust Force (N) --1.0 0.0 0.0 ! Thrust Axis +PROPORTIONAL ! Mode (PULSED or PROPORTIONAL) +0.01 ! Thrust Force (N) +1.0 0.0 0.0 ! Thrust Axis 0 ! Body 0 ! Node +============================== Thr 1 ================================= +PROPORTIONAL ! Mode (PULSED or PROPORTIONAL) +0.01 ! Thrust Force (N) +1.0 0.0 0.0 ! Thrust Axis +0 ! Body +1 ! Node +============================== Thr 2 ================================= +PROPORTIONAL ! Mode (PULSED or PROPORTIONAL) +0.01 ! Thrust Force (N) +1.0 0.0 0.0 ! Thrust Axis +0 ! Body +2 ! Node +============================== Thr 3 ================================= +PROPORTIONAL ! Mode (PULSED or PROPORTIONAL) +0.01 ! Thrust Force (N) +1.0 0.0 0.0 ! Thrust Axis +0 ! Body +3 ! Node ******************************* Gyro ************************************ 3 ! Number of Gyro Axes ============================== Axis 0 =================================== diff --git a/cfg/gui/cfg_gui_main.py b/cfg/gui/cfg_gui_main.py index 232bfacb..0e49b8f3 100644 --- a/cfg/gui/cfg_gui_main.py +++ b/cfg/gui/cfg_gui_main.py @@ -90,7 +90,7 @@ def saveText(self, layout:QLayout, config_value:int): # TODO: change to dynamically pull apps/components from xml file or directory, but how? applications = ['cf', 'ds', 'fm', 'lc', 'sc'] - components = ['adcs', 'cam', 'css', 'eps', 'fss', 'gps', 'imu', 'mag', 'radio', 'rw', 'sample', 'st', 'syn', 'torquer'] + components = ['adcs', 'cam', 'css', 'eps', 'fss', 'gps', 'imu', 'mag', 'radio', 'rw', 'sample', 'st', 'syn', 'torquer', 'thruster'] i = 0 while layout.itemAt(i) != None: diff --git a/cfg/nos3_defs/cpu1_cfe_es_startup.scr b/cfg/nos3_defs/cpu1_cfe_es_startup.scr index 7a21cddb..db551d53 100644 --- a/cfg/nos3_defs/cpu1_cfe_es_startup.scr +++ b/cfg/nos3_defs/cpu1_cfe_es_startup.scr @@ -32,6 +32,7 @@ CFE_APP, novatel_oem615, NOVATEL_AppMain, NAV, CFE_APP, sample, SAMPLE_AppMain, SAMPLE, 71, 32768, 0x0, 0; CFE_APP, generic_st, ST_AppMain, ST, 71, 32768, 0x0, 0; CFE_APP, syn, SYN_AppMain, SYN, 72, 32768, 0x0, 0; +CFE_APP, generic_thruster, GENERIC_THR_AppMain, THRUSTER, 73, 32768, 0x0, 0; CFE_LIB, cfs_lib, CFS_LibInit, CFS_LIB, 0, 0, 0x0, 0; CFE_APP, cs, CS_AppMain, CS, 55, 16384, 0x0, 0; diff --git a/cfg/nos3_defs/tables/sch_def_msgtbl.c b/cfg/nos3_defs/tables/sch_def_msgtbl.c index b542284d..90266f3f 100644 --- a/cfg/nos3_defs/tables/sch_def_msgtbl.c +++ b/cfg/nos3_defs/tables/sch_def_msgtbl.c @@ -47,6 +47,7 @@ ** Component Include Files */ #include "cam_msgids.h" +#include "generic_adcs_msgids.h" #include "generic_css_msgids.h" #include "generic_eps_msgids.h" #include "generic_fss_msgids.h" @@ -54,12 +55,11 @@ #include "generic_mag_msgids.h" #include "generic_radio_msgids.h" #include "generic_reaction_wheel_msgids.h" +#include "generic_star_tracker_msgids.h" +#include "generic_thruster_msgids.h" #include "generic_torquer_msgids.h" #include "novatel_oem615_msgids.h" #include "sample_msgids.h" -#include "generic_adcs_msgids.h" -#include "generic_star_tracker_msgids.h" - #include "syn_msgids.h" /* @@ -326,8 +326,8 @@ SCH_MessageEntry_t SCH_DefaultMessageTable[SCH_MAX_MESSAGES] = { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, /* command ID #104 */ { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, - /* command ID #105 */ - { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + /* command ID #105 - Thruster HK */ + { { CFE_MAKE_BIG16(GENERIC_THRUSTER_REQ_HK_MID), CFE_MAKE_BIG16(0xC000), CFE_MAKE_BIG16(0x0001), CFE_MAKE_BIG16(0x0000) } }, /* command ID #106 */ { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, /* command ID #107 */ diff --git a/cfg/nos3_defs/tables/sch_def_schtbl.c b/cfg/nos3_defs/tables/sch_def_schtbl.c index c54407d4..b9f161d1 100644 --- a/cfg/nos3_defs/tables/sch_def_schtbl.c +++ b/cfg/nos3_defs/tables/sch_def_schtbl.c @@ -114,9 +114,9 @@ SCH_ScheduleEntry_t SCH_DefaultScheduleTable[SCH_TABLE_ENTRIES] = /* slot #3 */ { SCH_ENABLED, SCH_ACTIVITY_SEND_MSG, 4, 3, 2, SCH_GROUP_CFE_HK }, /* EVS HK Request */ { SCH_ENABLED, SCH_ACTIVITY_SEND_MSG, 1, 0,101, SCH_GROUP_NONE }, /* ST Data Request */ - { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, - { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, - { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, /* slot #4 */ /*{ SCH_DISABLED, SCH_ACTIVITY_SEND_MSG, 4, 1, 6, SCH_GROUP_CFS_HK }, */ /* CS HK Request */ @@ -187,7 +187,7 @@ SCH_ScheduleEntry_t SCH_DefaultScheduleTable[SCH_TABLE_ENTRIES] = /* slot #13 */ { SCH_ENABLED, SCH_ACTIVITY_SEND_MSG, 4, 3, 3, SCH_GROUP_CFE_HK }, /* SB HK Request */ { SCH_ENABLED, SCH_ACTIVITY_SEND_MSG, 1, 0,101, SCH_GROUP_NONE }, /* ST Data Request */ - { SCH_ENABLED, SCH_ACTIVITY_SEND_MSG, 1, 0,100, SCH_GROUP_NONE }, /* ST Data Request */ + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, @@ -201,7 +201,7 @@ SCH_ScheduleEntry_t SCH_DefaultScheduleTable[SCH_TABLE_ENTRIES] = /* slot #15 - Component HK */ /*{ SCH_DISABLED, SCH_ACTIVITY_SEND_MSG, 1, 0, 24, SCH_GROUP_MD_WAKEUP }, */ /* MD Wakeup */ { SCH_ENABLED, SCH_ACTIVITY_SEND_MSG, 1, 0, 45, SCH_GROUP_NONE }, /* RW HK Request */ - { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_ENABLED, SCH_ACTIVITY_SEND_MSG, 1, 0,100, SCH_GROUP_NONE }, /* ST HK Request */ { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, @@ -261,7 +261,7 @@ SCH_ScheduleEntry_t SCH_DefaultScheduleTable[SCH_TABLE_ENTRIES] = /* slot #23 */ { SCH_ENABLED, SCH_ACTIVITY_SEND_MSG, 4, 3, 4, SCH_GROUP_CFE_HK }, /* TIME HK Request */ { SCH_ENABLED, SCH_ACTIVITY_SEND_MSG, 1, 0,101, SCH_GROUP_NONE }, /* ST Data Request */ - { SCH_ENABLED, SCH_ACTIVITY_SEND_MSG, 1, 0,100, SCH_GROUP_NONE }, /* ST Data Request */ + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, @@ -287,7 +287,6 @@ SCH_ScheduleEntry_t SCH_DefaultScheduleTable[SCH_TABLE_ENTRIES] = { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, - { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, /* slot #27 */ { SCH_ENABLED, SCH_ACTIVITY_SEND_MSG, 1, 0, 90, SCH_GROUP_NONE }, /* ADCS ADAC Request */ @@ -335,7 +334,7 @@ SCH_ScheduleEntry_t SCH_DefaultScheduleTable[SCH_TABLE_ENTRIES] = /* slot #33 */ { SCH_ENABLED, SCH_ACTIVITY_SEND_MSG, 4, 3, 5, SCH_GROUP_CFE_HK }, /* TBL HK Request */ { SCH_ENABLED, SCH_ACTIVITY_SEND_MSG, 1, 0,101, SCH_GROUP_NONE }, /* ST Data Request */ - { SCH_ENABLED, SCH_ACTIVITY_SEND_MSG, 1, 0,100, SCH_GROUP_NONE }, /* ST Data Request */ + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, @@ -361,7 +360,6 @@ SCH_ScheduleEntry_t SCH_DefaultScheduleTable[SCH_TABLE_ENTRIES] = { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, - { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, /* slot #37 */ { SCH_ENABLED, SCH_ACTIVITY_SEND_MSG, 1, 0, 90, SCH_GROUP_NONE }, /* ADCS ADAC Request */ @@ -410,7 +408,7 @@ SCH_ScheduleEntry_t SCH_DefaultScheduleTable[SCH_TABLE_ENTRIES] = /* slot #43 */ { SCH_ENABLED, SCH_ACTIVITY_SEND_MSG, 4, 3, 1, SCH_GROUP_CFE_HK }, /* ES HK Request */ { SCH_ENABLED, SCH_ACTIVITY_SEND_MSG, 1, 0,101, SCH_GROUP_NONE }, /* ST Data Request */ - { SCH_ENABLED, SCH_ACTIVITY_SEND_MSG, 1, 0,100, SCH_GROUP_NONE }, /* ST Data Request */ + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, @@ -424,7 +422,7 @@ SCH_ScheduleEntry_t SCH_DefaultScheduleTable[SCH_TABLE_ENTRIES] = /* slot #45 - Component HK */ /*{ SCH_DISABLED, SCH_ACTIVITY_SEND_MSG, 1, 0, 24, SCH_GROUP_MD_WAKEUP }, */ /* MD Wakeup */ { SCH_ENABLED, SCH_ACTIVITY_SEND_MSG, 5, 1, 60, SCH_GROUP_CFS_HK }, /* FSS HK Request */ - { SCH_ENABLED, SCH_ACTIVITY_SEND_MSG, 1, 0, 61, SCH_GROUP_CFS_HK }, /* FSS Data Request */ + { SCH_ENABLED, SCH_ACTIVITY_SEND_MSG, 1, 0,105, SCH_GROUP_NONE }, /* Thruster HK Request */ { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, @@ -483,7 +481,7 @@ SCH_ScheduleEntry_t SCH_DefaultScheduleTable[SCH_TABLE_ENTRIES] = /* slot #53 */ { SCH_ENABLED, SCH_ACTIVITY_SEND_MSG, 1, 0,101, SCH_GROUP_NONE }, /* ST Data Request */ - { SCH_ENABLED, SCH_ACTIVITY_SEND_MSG, 1, 0,100, SCH_GROUP_NONE }, /* ST Data Request */ + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, @@ -555,7 +553,7 @@ SCH_ScheduleEntry_t SCH_DefaultScheduleTable[SCH_TABLE_ENTRIES] = /* slot #63 */ { SCH_ENABLED, SCH_ACTIVITY_SEND_MSG, 1, 0,101, SCH_GROUP_NONE }, /* ST Data Request */ - { SCH_ENABLED, SCH_ACTIVITY_SEND_MSG, 1, 0,100, SCH_GROUP_NONE }, /* ST Data Request */ + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, @@ -627,7 +625,7 @@ SCH_ScheduleEntry_t SCH_DefaultScheduleTable[SCH_TABLE_ENTRIES] = /* slot #73 */ { SCH_ENABLED, SCH_ACTIVITY_SEND_MSG, 1, 0,101, SCH_GROUP_NONE }, /* ST Data Request */ - { SCH_ENABLED, SCH_ACTIVITY_SEND_MSG, 1, 0,100, SCH_GROUP_NONE }, /* ST Data Request */ + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, @@ -699,7 +697,7 @@ SCH_ScheduleEntry_t SCH_DefaultScheduleTable[SCH_TABLE_ENTRIES] = /* slot #83 */ { SCH_ENABLED, SCH_ACTIVITY_SEND_MSG, 1, 0,101, SCH_GROUP_NONE }, /* ST Data Request */ - { SCH_ENABLED, SCH_ACTIVITY_SEND_MSG, 1, 0,100, SCH_GROUP_NONE }, /* ST Data Request */ + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, @@ -775,7 +773,7 @@ SCH_ScheduleEntry_t SCH_DefaultScheduleTable[SCH_TABLE_ENTRIES] = /* slot #93 */ { SCH_ENABLED, SCH_ACTIVITY_SEND_MSG, 1, 0,101, SCH_GROUP_NONE }, /* ST Data Request */ - { SCH_ENABLED, SCH_ACTIVITY_SEND_MSG, 1, 0,100, SCH_GROUP_NONE }, /* ST Data Request */ + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, @@ -820,8 +818,8 @@ SCH_ScheduleEntry_t SCH_DefaultScheduleTable[SCH_TABLE_ENTRIES] = { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, - //{ SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, - //{ SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE} + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE} }; /* diff --git a/cfg/nos3_defs/tables/to_config.c b/cfg/nos3_defs/tables/to_config.c index af9cd704..e2f1b863 100644 --- a/cfg/nos3_defs/tables/to_config.c +++ b/cfg/nos3_defs/tables/to_config.c @@ -69,6 +69,7 @@ extern "C" { #include "generic_mag_msgids.h" #include "generic_radio_msgids.h" #include "generic_reaction_wheel_msgids.h" +#include "generic_thruster_msgids.h" #include "generic_torquer_msgids.h" #include "novatel_oem615_msgids.h" #include "sample_msgids.h" @@ -150,7 +151,7 @@ TO_ConfigTable_t to_ConfigTable = {CFE_SB_MSGID_WRAP_VALUE(GENERIC_ADCS_HK_TLM_MID), {0,0}, 32, 0xffff, TO_GROUP_APP | TO_MGROUP_ONE, 0,1}, {CFE_SB_MSGID_WRAP_VALUE(GENERIC_STAR_TRACKER_HK_TLM_MID),{0,0}, 32, 0xffff, TO_GROUP_APP | TO_MGROUP_ONE, 0,1}, {CFE_SB_MSGID_WRAP_VALUE(GENERIC_STAR_TRACKER_DEVICE_TLM_MID),{0,0}, 32, 0xffff, TO_GROUP_APP | TO_MGROUP_ONE, 0,1}, - {CFE_SB_MSGID_WRAP_VALUE(TO_UNUSED_ENTRY), {0,0}, 0, 0x0000, TO_GROUP_NONE, 0,0}, + {CFE_SB_MSGID_WRAP_VALUE(GENERIC_THRUSTER_HK_TLM_MID), {0,0}, 32, 0xffff, TO_GROUP_APP | TO_MGROUP_ONE, 0,1}, {CFE_SB_MSGID_WRAP_VALUE(TO_UNUSED_ENTRY), {0,0}, 0, 0x0000, TO_GROUP_NONE, 0,0}, // Commented out to limited ADCS messages sent via radio diff --git a/cfg/nos3_defs/tables/to_lab_sub.c b/cfg/nos3_defs/tables/to_lab_sub.c index 9c082dc7..11327d2f 100644 --- a/cfg/nos3_defs/tables/to_lab_sub.c +++ b/cfg/nos3_defs/tables/to_lab_sub.c @@ -58,6 +58,7 @@ #include "generic_radio_msgids.h" #include "generic_reaction_wheel_msgids.h" #include "generic_torquer_msgids.h" +#include "generic_thruster_msgids.h" #include "novatel_oem615_msgids.h" #include "sample_msgids.h" #include "generic_adcs_msgids.h" @@ -127,6 +128,7 @@ TO_LAB_Subs_t TO_LAB_Subs = {CFE_SB_MSGID_WRAP_VALUE(GENERIC_ADCS_DO_MID), {0,0}, 32}, {CFE_SB_MSGID_WRAP_VALUE(GENERIC_STAR_TRACKER_HK_TLM_MID),{0,0}, 32}, {CFE_SB_MSGID_WRAP_VALUE(GENERIC_STAR_TRACKER_DEVICE_TLM_MID),{0,0}, 32}, + {CFE_SB_MSGID_WRAP_VALUE(GENERIC_THRUSTER_HK_TLM_MID), {0,0}, 32}, {CFE_SB_MSGID_WRAP_VALUE(SYN_HK_TLM_MID), {0,0}, 32}, diff --git a/cfg/nos3_defs/targets.cmake b/cfg/nos3_defs/targets.cmake index e1871f9f..5d431828 100644 --- a/cfg/nos3_defs/targets.cmake +++ b/cfg/nos3_defs/targets.cmake @@ -113,6 +113,7 @@ list(APPEND MISSION_GLOBAL_APPLIST generic_reaction_wheel/fsw generic_radio/fsw generic_star_tracker/fsw + generic_thruster/fsw generic_torquer/fsw novatel_oem615/fsw sample/fsw diff --git a/cfg/sc-full-config.xml b/cfg/sc-full-config.xml index c2213c53..67a2917e 100644 --- a/cfg/sc-full-config.xml +++ b/cfg/sc-full-config.xml @@ -59,6 +59,9 @@ true + + true + true diff --git a/cfg/sc-minimal-config.xml b/cfg/sc-minimal-config.xml index cc1d0974..1e8a0d56 100644 --- a/cfg/sc-minimal-config.xml +++ b/cfg/sc-minimal-config.xml @@ -59,6 +59,9 @@ false + + false + false diff --git a/cfg/sims/nos3-simulator.xml b/cfg/sims/nos3-simulator.xml index 69461bce..f6587b44 100644 --- a/cfg/sims/nos3-simulator.xml +++ b/cfg/sims/nos3-simulator.xml @@ -422,6 +422,33 @@ + + generic_thruster_sim + true + libgeneric_thruster_sim.so + + GENERIC_THRUSTER + + + command + command + thruster-command + + usart + usart_29 + 29 + + + + GENERIC_THRUSTER_42_PROVIDER + fortytwo + 4280 + 0 + 1 + + + + truth42sim true diff --git a/components/generic_thruster b/components/generic_thruster new file mode 160000 index 00000000..feb2d655 --- /dev/null +++ b/components/generic_thruster @@ -0,0 +1 @@ +Subproject commit feb2d6555fb09e0f1b33a3993819799ad42ce0d5 diff --git a/gsw/cosmos b/gsw/cosmos index 50c889a4..a8d96bc4 160000 --- a/gsw/cosmos +++ b/gsw/cosmos @@ -1 +1 @@ -Subproject commit 50c889a4f6ad21bd0dbc6e32254252a435e57770 +Subproject commit a8d96bc426554cd09ee332e78ea4d5e3982f4623 diff --git a/scripts/configure.py b/scripts/configure.py index fe14b233..63c25ee9 100755 --- a/scripts/configure.py +++ b/scripts/configure.py @@ -79,6 +79,7 @@ sc_st_en = sc_root.find('components/st/enable').text sc_syn_en = sc_root.find('components/syn/enable').text sc_torquer_en = sc_root.find('components/torquer/enable').text + sc_thruster_en = sc_root.find('components/thruster/enable').text sc_gui_en = sc_root.find('gui/enable').text sc_orbit_tipoff_x = sc_root.find('orbit/tipoff_x').text @@ -114,6 +115,7 @@ st_line = "" syn_line = "" torquer_line = "" + thruster_line = "" # Parse lines for line in lines: @@ -177,10 +179,14 @@ if line.find('TORQUER,') != -1: if (sc_torquer_en == 'true'): torquer_line = line + if line.find('THRUSTER,') != -1: + if (sc_thruster_en == 'true'): + thruster_line = line # Modify startup script per spacecraft configuration lines.insert(sc_startup_eof, "\n") lines.insert(sc_startup_eof, torquer_line) + lines.insert(sc_startup_eof, thruster_line) lines.insert(sc_startup_eof, syn_line) lines.insert(sc_startup_eof, st_line) lines.insert(sc_startup_eof, sample_line) @@ -266,6 +272,7 @@ #sample_index = 999 st_index = 999 torquer_index = 999 + thruster_index = 999 with open('./cfg/InOut/Inp_IPC.txt', 'r') as fp: lines = fp.readlines() @@ -312,6 +319,9 @@ if line.find('Torquer IPC') != -1: if (lines.index(line)) < torquer_index: torquer_index = lines.index(line) + 1 + if line.find('Thruster IPC') != -1: + if (lines.index(line)) < thruster_index: + thruster_index = lines.index(line) + 1 ipc_off = 'OFF ! IPC Mode (OFF,TX,RX,TXRX,ACS,WRITEFILE,READFILE)\n' if (sc_css_en != 'true'): @@ -337,6 +347,8 @@ lines[st_index] = ipc_off if (sc_torquer_en != 'true'): lines[torquer_index] = ipc_off + if (sc_thruster_en != 'true'): + lines[thruster_index] = ipc_off with open('./cfg/build/InOut/Inp_IPC.txt', 'w') as fp: lines = "".join(lines) @@ -359,6 +371,7 @@ sample_index = 999 st_index = 999 torquer_index = 999 + thruster_index = 999 with open('./cfg/build/sims/nos3-simulator.xml', 'r') as fp: lines = fp.readlines() @@ -405,6 +418,9 @@ if line.find('generic_torquer_sim') != -1: if (lines.index(line)) < torquer_index: torquer_index = lines.index(line) + 1 + if line.find('generic_thruster_sim') != -1: + if (lines.index(line)) < thruster_index: + thruster_index = lines.index(line) + 1 sim_disabled = ' false\n' if (sc_cam_en != 'true'): @@ -433,6 +449,8 @@ lines[st_index] = sim_disabled if (sc_torquer_en != 'true'): lines[torquer_index] = sim_disabled + if (sc_thruster_en != 'true'): + lines[thruster_index] = sim_disabled with open('./cfg/build/sims/nos3-simulator.xml', 'w') as fp: lines = "".join(lines) diff --git a/scripts/docker_launch.sh b/scripts/docker_launch.sh index 5d1caec7..c095f9b7 100755 --- a/scripts/docker_launch.sh +++ b/scripts/docker_launch.sh @@ -130,6 +130,7 @@ do gnome-terminal --tab --title=$SC_NUM" - Sample Sim" -- $DFLAGS -v $SIM_DIR:$SIM_DIR --name $SC_NUM"_sample_sim" --network=$SC_NETNAME -w $SIM_BIN $DBOX ./nos3-single-simulator $SC_CFG_FILE sample_sim gnome-terminal --tab --title=$SC_NUM" - StarTrk Sim" -- $DFLAGS -v $SIM_DIR:$SIM_DIR --name $SC_NUM"_startrk_sim" --network=$SC_NETNAME -w $SIM_BIN $DBOX ./nos3-single-simulator $SC_CFG_FILE generic_star_tracker_sim gnome-terminal --tab --title=$SC_NUM" - Torquer Sim" -- $DFLAGS -v $SIM_DIR:$SIM_DIR --name $SC_NUM"_torquer_sim" --network=$SC_NETNAME -w $SIM_BIN $DBOX ./nos3-single-simulator $SC_CFG_FILE generic_torquer_sim + gnome-terminal --tab --title=$SC_NUM" - Thruster Sim" -- $DFLAGS -v $SIM_DIR:$SIM_DIR --name $SC_NUM"_thruster_sim" --network=$SC_NETNAME -w $SIM_BIN $DBOX ./nos3-single-simulator $SC_CFG_FILE generic_thruster_sim echo "" done diff --git a/scripts/launch.sh b/scripts/launch.sh index 662056ac..b55e6efd 100755 --- a/scripts/launch.sh +++ b/scripts/launch.sh @@ -50,6 +50,7 @@ gnome-terminal --tab --title='RW 1 Sim' -- $SIM_BIN/nos3-single-simula gnome-terminal --tab --title='RW 2 Sim' -- $SIM_BIN/nos3-single-simulator generic-reactionwheel-sim2 gnome-terminal --tab --title='Sample Sim' -- $SIM_BIN/nos3-single-simulator sample_sim gnome-terminal --tab --title='Torquer Sim' -- $SIM_BIN/nos3-single-simulator generic_torquer_sim +gnome-terminal --tab --title='Thruster Sim' -- $SIM_BIN/nos3-single-simulator generic_thruster_sim gnome-terminal --tab --title="NOS Time Driver" -- $SIM_BIN/nos3-single-simulator time gnome-terminal --tab --title="SYNOPSIS Sim" -- $SIM_BIN/nos3-single-simulator synopsis diff --git a/sims/sim_common b/sims/sim_common index 5c804f64..8cb9ddcb 160000 --- a/sims/sim_common +++ b/sims/sim_common @@ -1 +1 @@ -Subproject commit 5c804f64834e41f02c0660275daca9778f065c24 +Subproject commit 8cb9ddcb5915ee7e286aee0d5e3e0e458f8110a8