diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 00000000..25b42f98 --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,48 @@ +name: Build + +on: + push: + pull_request: + +jobs: + fsw: + runs-on: ubuntu-latest + container: + image: ivvitc/nos3-64:20240618 + steps: + - uses: actions/checkout@v4 + with: + submodules: recursive + - name: Update + run: apt-get update + - name: Install dependencies + run: apt-get install -y python3 docker docker.io + - name: prep + run: make prep + - name: config + run: make config + - name: build directory + run: mkdir ./fsw/build + - name: build + run: make build-fsw + + sim: + runs-on: ubuntu-latest + container: + image: ivvitc/nos3-64:20240618 + steps: + - uses: actions/checkout@v2 + with: + submodules: recursive + - name: Update + run: apt-get update + - name: Install dependencies + run: apt-get install -y python3 docker docker.io + - name: prep + run: make prep + - name: config + run: make config + - name: build directory + run: mkdir ./sims/build + - name: build + run: make build-sim diff --git a/.gitignore b/.gitignore index 0f32a7a8..f0f562f0 100644 --- a/.gitignore +++ b/.gitignore @@ -12,3 +12,6 @@ build support/nos3_install.log tmp core.* +.cdskeyfile +.reservedkeyfile +.resetkeyfile diff --git a/.gitmodules b/.gitmodules index 43f560b9..c2767ffd 100644 --- a/.gitmodules +++ b/.gitmodules @@ -136,3 +136,6 @@ path = gsw/ttc-command url = https://github.com/sphinxdefense/ttc-command branch = main +[submodule "components/generic_thruster"] + path = components/generic_thruster + url = https://github.com/nasa-itc/generic_thruster.git diff --git a/Makefile b/Makefile index 95ea8b5b..b7c8c3bf 100644 --- a/Makefile +++ b/Makefile @@ -61,6 +61,11 @@ build-sim: cd $(SIMBUILDDIR) && cmake -DCMAKE_INSTALL_PREFIX=$(SIMBUILDDIR) .. $(MAKE) --no-print-directory -C $(SIMBUILDDIR) install +build-test: + mkdir -p $(FSWBUILDDIR) + cd $(FSWBUILDDIR) && cmake $(PREP_OPTS) -DENABLE_UNIT_TESTS=true ../cfe + $(MAKE) --no-print-directory -C $(FSWBUILDDIR) mission-install + checkout: ./scripts/docker_checkout.sh @@ -118,5 +123,8 @@ stop: stop-gsw: ./scripts/stop_gsw.sh +test-fsw: + cd $(FSWBUILDDIR)/amd64-posix/default_cpu1 && ctest -O ctest.log + igniter: ./scripts/igniter_launch.sh 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/sc_rts001.c b/cfg/nos3_defs/tables/sc_rts001.c index 0614580a..9276f816 100644 --- a/cfg/nos3_defs/tables/sc_rts001.c +++ b/cfg/nos3_defs/tables/sc_rts001.c @@ -23,18 +23,21 @@ /* Custom table structure, modify as needed to add desired commands */ typedef struct { + /* 1 - Enable DS */ SC_RtsEntryHeader_t hdr1; DS_AppStateCmd_t cmd1; + /* 2 - Enable Debug */ SC_RtsEntryHeader_t hdr2; TO_LAB_EnableOutputCmd_t cmd2; + /* 3 - Enable RTS 3-64 */ SC_RtsEntryHeader_t hdr3; SC_RtsGrpCmd_t cmd3; + /* 4 - Enable LC */ SC_RtsEntryHeader_t hdr4; - SAMPLE_NoArgs_cmd_t cmd4; + LC_SetLCState_t cmd4; + /* 5 - Start RTS 3 (Safe Mode) */ SC_RtsEntryHeader_t hdr5; - SAMPLE_NoArgs_cmd_t cmd5; - SC_RtsEntryHeader_t hdr6; - LC_SetLCState_t cmd6; + SC_RtsCmd_t cmd5; } SC_RtsStruct001_t; /* Define the union to size the table correctly */ @@ -67,21 +70,18 @@ SC_RtsTable001_t SC_Rts001 = { .cmd3.FirstRtsId = 3, .cmd3.LastRtsId = 64, - /* 4 - Sample NOOP */ + /* 4 - Enable LC */ .hdr4.TimeTag = 1, - .cmd4.CmdHeader = CFE_MSG_CMD_HDR_INIT(SAMPLE_CMD_MID, SC_MEMBER_SIZE(cmd4), SAMPLE_NOOP_CC, 0x00), + .cmd4.CmdHeader = CFE_MSG_CMD_HDR_INIT(LC_CMD_MID, SC_MEMBER_SIZE(cmd4), LC_SET_LC_STATE_CC, 0x00), + .cmd4.NewLCState = LC_STATE_ACTIVE, + .cmd4.Padding = 0x0000, - /* 5 - Sample Enable */ + /* 5 - Start RTS 3 (Safe Mode) */ .hdr5.TimeTag = 1, - .cmd5.CmdHeader = CFE_MSG_CMD_HDR_INIT(SAMPLE_CMD_MID, SC_MEMBER_SIZE(cmd5), SAMPLE_ENABLE_CC, 0x00), - - /* 6 - Enable LC */ - .hdr6.TimeTag = 1, - .cmd6.CmdHeader = CFE_MSG_CMD_HDR_INIT(LC_CMD_MID, SC_MEMBER_SIZE(cmd6), LC_SET_LC_STATE_CC, 0x00), - .cmd6.NewLCState = LC_STATE_ACTIVE, - .cmd6.Padding = 0x0000, + .cmd5.CmdHeader = CFE_MSG_CMD_HDR_INIT(SC_CMD_MID, SC_MEMBER_SIZE(cmd5), SC_START_RTS_CC, 0x00), + .cmd5.RtsId = 3, } }; /* Macro for table structure */ -CFE_TBL_FILEDEF(SC_Rts001, SC.RTS_TBL001, SC Example RTS_TBL001, sc_rts001.tbl) +CFE_TBL_FILEDEF(SC_Rts001, SC.RTS_TBL001, POR RTS001, sc_rts001.tbl) diff --git a/cfg/nos3_defs/tables/sc_rts003.c b/cfg/nos3_defs/tables/sc_rts003.c new file mode 100644 index 00000000..5080fa49 --- /dev/null +++ b/cfg/nos3_defs/tables/sc_rts003.c @@ -0,0 +1,98 @@ +#include "cfe.h" +#include "cfe_tbl_filedef.h" + +#include "sc_tbldefs.h" /* defines SC table headers */ +#include "sc_platform_cfg.h" /* defines table buffer size */ +#include "sc_msgdefs.h" /* defines SC command code values */ +#include "sc_msgids.h" /* defines SC packet msg ID's */ +#include "sc_msg.h" /* defines SC message structures */ + +/* Command Includes */ +#include "generic_css_msg.h" +#include "generic_css_msgids.h" +#include "generic_fss_msg.h" +#include "generic_fss_msgids.h" +#include "generic_imu_msg.h" +#include "generic_imu_msgids.h" +#include "generic_mag_msg.h" +#include "generic_mag_msgids.h" +#include "generic_torquer_msg.h" +#include "generic_torquer_msgids.h" +#include "novatel_oem615_msg.h" +#include "novatel_oem615_msgids.h" +#include "generic_adcs_msg.h" +#include "generic_adcs_msgids.h" +#include "generic_adcs_adac.h" + +/* Custom table structure, modify as needed to add desired commands */ +typedef struct +{ + /* 1 - Enable CSS */ + SC_RtsEntryHeader_t hdr1; + GENERIC_CSS_NoArgs_cmd_t cmd1; + /* 2 - Enable FSS */ + SC_RtsEntryHeader_t hdr2; + GENERIC_FSS_NoArgs_cmd_t cmd2; + /* 3 - Enable IMU */ + SC_RtsEntryHeader_t hdr3; + GENERIC_IMU_NoArgs_cmd_t cmd3; + /* 4 - Enable MAG */ + SC_RtsEntryHeader_t hdr4; + GENERIC_MAG_NoArgs_cmd_t cmd4; + /* 5 - Enable torquers */ + SC_RtsEntryHeader_t hdr5; + GENERIC_TORQUER_NoArgs_cmd_t cmd5; + /* 6 - Enable GPS */ + SC_RtsEntryHeader_t hdr6; + NOVATEL_OEM615_NoArgs_cmd_t cmd6; + /* 7 - Set ADCS to SUNSAFE_MODE */ + SC_RtsEntryHeader_t hdr7; + Generic_ADCS_Mode_cmd_t cmd7; +} SC_RtsStruct003_t; + +/* Define the union to size the table correctly */ +typedef union +{ + SC_RtsStruct003_t rts; + uint16 buf[SC_RTS_BUFF_SIZE]; +} SC_RtsTable003_t; + +/* Helper macro to get size of structure elements */ +#define SC_MEMBER_SIZE(member) (sizeof(((SC_RtsStruct003_t *)0)->member)) + +/* Used designated intializers to be verbose, modify as needed/desired */ +SC_RtsTable003_t SC_Rts003 = { +.rts = { + /* 1 - Enable CSS */ + .hdr1.TimeTag = 1, + .cmd1.CmdHeader = CFE_MSG_CMD_HDR_INIT(GENERIC_CSS_CMD_MID, SC_MEMBER_SIZE(cmd1), GENERIC_CSS_ENABLE_CC, 0x00), + + /* 2 - Enable FSS */ + .hdr2.TimeTag = 1, + .cmd2.CmdHeader = CFE_MSG_CMD_HDR_INIT(GENERIC_FSS_CMD_MID, SC_MEMBER_SIZE(cmd2), GENERIC_FSS_ENABLE_CC, 0x00), + + /* 3 - Enable IMU */ + .hdr3.TimeTag = 1, + .cmd3.CmdHeader = CFE_MSG_CMD_HDR_INIT(GENERIC_IMU_CMD_MID, SC_MEMBER_SIZE(cmd3), GENERIC_IMU_ENABLE_CC, 0x00), + + /* 4 - Enable MAG */ + .hdr4.TimeTag = 1, + .cmd4.CmdHeader = CFE_MSG_CMD_HDR_INIT(GENERIC_MAG_CMD_MID, SC_MEMBER_SIZE(cmd4), GENERIC_MAG_ENABLE_CC, 0x00), + + /* 5 - Enable torquers */ + .hdr5.TimeTag = 1, + .cmd5.CmdHeader = CFE_MSG_CMD_HDR_INIT(GENERIC_TORQUER_CMD_MID, SC_MEMBER_SIZE(cmd5), GENERIC_TORQUER_ENABLE_CC, 0x00), + + /* 6 - Enable GPS */ + .hdr6.TimeTag = 1, + .cmd6.CmdHeader = CFE_MSG_CMD_HDR_INIT(NOVATEL_OEM615_CMD_MID, SC_MEMBER_SIZE(cmd6), NOVATEL_OEM615_ENABLE_CC, 0x00), + + /* 7 - Set ADCS to SUNSAFE_MODE */ + .hdr7.TimeTag = 5, + .cmd7.CmdHeader = CFE_MSG_CMD_HDR_INIT(GENERIC_ADCS_CMD_MID, SC_MEMBER_SIZE(cmd7), GENERIC_ADCS_SET_MODE_CC, 0x00), + .cmd7.Mode = SUNSAFE_MODE, + } +}; + +/* Macro for table structure */ +CFE_TBL_FILEDEF(SC_Rts003, SC.RTS_TBL003, Safe Mode RTS003, sc_rts003.tbl) 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 b670344d..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 @@ -145,7 +146,11 @@ SET(MISSION_CPUNAMES cpu1) SET(cpu1_PROCESSORID 1) SET(cpu1_APPLIST) # Note: Using all ${MISSION_GLOBAL_APPLIST} automatically SET(cpu1_FILELIST cfe_es_startup.scr) -SET(cpu1_SYSTEM amd64-linux-gnu) +if (ENABLE_UNIT_TESTS) + SET(cpu1_SYSTEM amd64-posix) +else() + SET(cpu1_SYSTEM amd64-nos3) +endif() # USER Supplied #SET(cpu2_PROCESSORID 2) diff --git a/cfg/nos3_defs/toolchain-amd64-linux-gnu.cmake b/cfg/nos3_defs/toolchain-amd64-nos3.cmake similarity index 100% rename from cfg/nos3_defs/toolchain-amd64-linux-gnu.cmake rename to cfg/nos3_defs/toolchain-amd64-nos3.cmake diff --git a/cfg/nos3_defs/toolchain-amd64-posix.cmake b/cfg/nos3_defs/toolchain-amd64-posix.cmake new file mode 100644 index 00000000..d5356637 --- /dev/null +++ b/cfg/nos3_defs/toolchain-amd64-posix.cmake @@ -0,0 +1,34 @@ +# This example toolchain file describes the cross compiler to use for +# the target architecture indicated in the configuration file. + +# Basic cross system configuration +SET(CMAKE_SYSTEM_NAME Linux) +SET(CMAKE_SYSTEM_VERSION 1) +SET(CMAKE_SYSTEM_PROCESSOR amd64) + +# Specify the cross compiler executables +# Typically these would be installed in a home directory or somewhere +# in /opt. However in this example the system compiler is used. +SET(CMAKE_C_COMPILER "/usr/bin/gcc") +SET(CMAKE_CXX_COMPILER "/usr/bin/g++") + +# Configure the find commands +SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) +SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY NEVER) +SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE NEVER) + +# These variable settings are specific to cFE/OSAL and determines which +# abstraction layers are built when using this toolchain +SET(CFE_SYSTEM_PSPNAME "pc-linux") +SET(OSAL_SYSTEM_OSTYPE "posix") + +#SET(CMAKE_C_FLAGS_INIT "" CACHE STRING "C Flags required by platform") +#SET(CMAKE_SHARED_LINKER_FLAGS "-pg") + +# Build Specific +add_definitions(-DBYTE_ORDER_LE) +add_definitions(-D_LINUX_OS_) +set(CMAKE_POSITION_INDEPENDENT_CODE ON) + +set(CI_TRANSPORT udp_tf) +set(TO_TRANSPORT udp) # Note udp_tf used for Transfer Frames required for CryptoLib 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 07b9d3ab..1e8a0d56 100644 --- a/cfg/sc-minimal-config.xml +++ b/cfg/sc-minimal-config.xml @@ -59,9 +59,12 @@ false + + false + - true + false 0.1 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/scripts/configure.py b/scripts/configure.py index 54b4d053..016cc5d3 100755 --- a/scripts/configure.py +++ b/scripts/configure.py @@ -84,6 +84,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 @@ -119,6 +120,7 @@ st_line = "" syn_line = "" torquer_line = "" + thruster_line = "" # Parse lines for line in lines: @@ -182,10 +184,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) @@ -268,9 +274,10 @@ rw1_from_index = 999 rw2_to_index = 999 rw2_from_index = 999 - sample_index = 999 + #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() @@ -308,15 +315,18 @@ if line.find('RW 2 from 42') != -1: if (lines.index(line)) < rw2_from_index: rw2_from_index = lines.index(line) + 1 - if line.find('Sample IPC') != -1: - if (lines.index(line)) < sample_index: - sample_index = lines.index(line) + 1 + #if line.find('Sample IPC') != -1: + # if (lines.index(line)) < sample_index: + # sample_index = lines.index(line) + 1 if line.find('Star Tracker IPC') != -1: if (lines.index(line)) < st_index: st_index = lines.index(line) + 1 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'): @@ -336,12 +346,14 @@ lines[rw1_from_index] = ipc_off lines[rw2_to_index] = ipc_off lines[rw2_from_index] = ipc_off - if (sc_sample_en != 'true'): - lines[sample_index] = ipc_off + #if (sc_sample_en != 'true'): + # lines[sample_index] = ipc_off if (sc_st_en != 'true'): 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) @@ -364,6 +376,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() @@ -410,6 +423,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'): @@ -438,6 +454,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_debug.sh b/scripts/docker_debug.sh index 87c541a7..05f479db 100755 --- a/scripts/docker_debug.sh +++ b/scripts/docker_debug.sh @@ -9,4 +9,4 @@ SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) source $SCRIPT_DIR/env.sh mkdir -p $BASE_DIR/fsw/build -$DFLAGS_CPUS -v $BASE_DIR:$BASE_DIR -v $USER_NOS3_DIR:$USER_NOS3_DIR -w $BASE_DIR --name "nos3_debug" $DBOX bash +$DFLAGS_CPUS -v $BASE_DIR:$BASE_DIR -v $USER_NOS3_DIR:$USER_NOS3_DIR -w $BASE_DIR --sysctl fs.mqueue.msg_max=10000 --ulimit rtprio=99 --cap-add=sys_nice --name "nos3_debug" $DBOX bash diff --git a/scripts/docker_launch.sh b/scripts/docker_launch.sh index e8f44de2..ae11afd9 100755 --- a/scripts/docker_launch.sh +++ b/scripts/docker_launch.sh @@ -140,6 +140,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/env.sh b/scripts/env.sh index 9a86e587..c7e59e71 100755 --- a/scripts/env.sh +++ b/scripts/env.sh @@ -44,7 +44,7 @@ INFLUXDB_ADMIN_PASSWORD=admin_password DNETWORK="docker network" #fi -DBOX="ivvitc/nos3-64:20240430" +DBOX="ivvitc/nos3-64:20240618" # Debugging #echo "Script directory = " $SCRIPT_DIR 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/scripts/prepare.sh b/scripts/prepare.sh index 9356464c..49b30ee3 100755 --- a/scripts/prepare.sh +++ b/scripts/prepare.sh @@ -49,9 +49,26 @@ $DFLAGS_CPUS -v $BASE_DIR:$BASE_DIR -v $USER_NOS3_DIR:$USER_NOS3_DIR -w $USER_NO echo "" echo "" -echo "Prepare Igniter..." +echo "NOS3 required preparations complete!" +echo "Proceeding to optional additions." +echo "" +echo "" + +echo "Prepare Igniter (optional)..." pip3 install pyside6 xmltodict cd $BASE_DIR python3 $BASE_DIR/cfg/gui/cfg_gui_main.py & echo "" echo "" + +sleep 3 +echo "" +echo "" + +echo "NOS3 prep script complete:" +echo " Some above optional installations may have failed, that's ok. You just may not have those extra features." +echo " You can choose to use the Igniter GUI or close it in favor of the command line." +echo " To launch igniter again simply run the following in the terminal:" +echo " make igniter" +echo "" +echo ""