|
8 | 8 | SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
|
9 | 9 | source $SCRIPT_DIR/env.sh
|
10 | 10 |
|
11 |
| -export SC_NUM="sc_1" |
12 |
| -export SC_NETNAME="nos3_"$SC_NUM |
13 |
| -# export SC_NETNAME="host" |
14 |
| -export SC_CFG_FILE="-f nos3-simulator.xml" #"-f sc_"$i"_nos3_simulator.xml" |
| 11 | +# Check that local NOS3 directory exists |
| 12 | +if [ ! -d $USER_NOS3_DIR ]; then |
| 13 | + echo "" |
| 14 | + echo " Need to run make prep first!" |
| 15 | + echo "" |
| 16 | + exit 1 |
| 17 | +fi |
15 | 18 |
|
16 |
| -echo "Create spacecraft network..." |
17 |
| -$DNETWORK create $SC_NETNAME 2> /dev/null |
| 19 | +# Check that configure build directory exists |
| 20 | +if [ ! -d $BASE_DIR/cfg/build ]; then |
| 21 | + echo "" |
| 22 | + echo " Need to run make config first!" |
| 23 | + echo "" |
| 24 | + exit 1 |
| 25 | +fi |
| 26 | + |
| 27 | +echo "Make data folders..." |
| 28 | +# FSW Side |
| 29 | +mkdir $FSW_DIR/data 2> /dev/null |
| 30 | +mkdir $FSW_DIR/data/cam 2> /dev/null |
| 31 | +mkdir $FSW_DIR/data/evs 2> /dev/null |
| 32 | +mkdir $FSW_DIR/data/hk 2> /dev/null |
| 33 | +mkdir $FSW_DIR/data/inst 2> /dev/null |
| 34 | +# GSW Side |
| 35 | +mkdir /tmp/nos3 2> /dev/null |
| 36 | +mkdir /tmp/nos3/data 2> /dev/null |
| 37 | +mkdir /tmp/nos3/data/cam 2> /dev/null |
| 38 | +mkdir /tmp/nos3/data/evs 2> /dev/null |
| 39 | +mkdir /tmp/nos3/data/hk 2> /dev/null |
| 40 | +mkdir /tmp/nos3/data/inst 2> /dev/null |
| 41 | +mkdir /tmp/nos3/uplink 2> /dev/null |
| 42 | +cp $BASE_DIR/fsw/build/exe/cpu1/cf/cfe_es_startup.scr /tmp/nos3/uplink/tmp0.so 2> /dev/null |
| 43 | +cp $BASE_DIR/fsw/build/exe/cpu1/cf/sample.so /tmp/nos3/uplink/tmp1.so 2> /dev/null |
| 44 | + |
| 45 | +echo "Create ground networks..." |
| 46 | +$DNETWORK create \ |
| 47 | + --driver=bridge \ |
| 48 | + --subnet=192.168.41.0/24 \ |
| 49 | + --gateway=192.168.41.1 \ |
| 50 | + nos3_core |
| 51 | +echo "" |
| 52 | + |
| 53 | +#echo "Launch GSW..." |
| 54 | +$BASE_DIR/cfg/build/gsw_launch.sh |
| 55 | +echo "" |
| 56 | + |
| 57 | +echo "Create NOS interfaces..." |
| 58 | +export GND_CFG_FILE="-f nos3-simulator.xml" |
| 59 | +gnome-terminal --tab --title="NOS Terminal" -- $DFLAGS -v $SIM_DIR:$SIM_DIR --name "nos_terminal" --network=nos3_core -w $SIM_BIN $DBOX ./nos3-single-simulator $GND_CFG_FILE stdio-terminal |
| 60 | +gnome-terminal --tab --title="NOS UDP Terminal" -- $DFLAGS -v $SIM_DIR:$SIM_DIR --name "nos_udp_terminal" --network=nos3_core -w $SIM_BIN $DBOX ./nos3-single-simulator $GND_CFG_FILE udp-terminal |
18 | 61 | echo ""
|
19 | 62 |
|
20 |
| -# Debugging |
21 |
| -# Replace `--tab` with `--window-with-profile=KeepOpen` once you've created this gnome-terminal profile manually |
| 63 | +# Note only currently working with a single spacecraft |
| 64 | +export SATNUM=1 |
| 65 | + |
| 66 | +# |
| 67 | +# Spacecraft Loop |
| 68 | +# |
| 69 | +for (( i=1; i<=$SATNUM; i++ )) |
| 70 | +do |
| 71 | + export SC_NUM="sc_"$i |
| 72 | + export SC_NETNAME="nos3_"$SC_NUM |
| 73 | + export SC_CFG_FILE="-f nos3-simulator.xml" #"-f sc_"$i"_nos3_simulator.xml" |
| 74 | + |
| 75 | + # Debugging |
| 76 | + #echo "Spacecraft number = " $SC_NUM |
| 77 | + #echo "Spacecraft network = " $SC_NETNAME |
| 78 | + #echo "Spacecraft configuration = " $SC_CFG_FILE |
| 79 | + |
| 80 | + echo $SC_NUM " - Create spacecraft network..." |
| 81 | + $DNETWORK create $SC_NETNAME 2> /dev/null |
| 82 | + echo "" |
22 | 83 |
|
23 |
| -#echo "42..." |
24 |
| -#cd /opt/nos3/42/ |
25 |
| -#rm -rf NOS3InOut |
26 |
| -#cp -r $BASE_DIR/sims/cfg/InOut /opt/nos3/42/NOS3InOut |
27 |
| -#xhost +local:* |
28 |
| -#gnome-terminal --window-with-profile=KeepOpen --title="42" -- $DFLAGS -e DISPLAY=$DISPLAY -v /opt/nos3/42/NOS3InOut:/opt/nos3/42/NOS3InOut -v /tmp/.X11-unix:/tmp/.X11-unix:ro --name $SC_NUM"_fortytwo" -h fortytwo --network=$SC_NETNAME -w /opt/nos3/42 -t $DBOX /opt/nos3/42/42 NOS3InOut |
29 |
| -#echo "" |
| 84 | + # echo $SC_NUM " - Connect COSMOS to spacecraft network..." |
| 85 | + # $DNETWORK connect $SC_NETNAME cosmos_openc3-operator_1 --alias cosmos |
| 86 | + # echo "" |
30 | 87 |
|
31 |
| -echo "NOS Core..." |
32 |
| -gnome-terminal --tab --title="NOS Engine Server" -- $DFLAGS -v $SIM_DIR:$SIM_DIR --name $SC_NUM"_nos_engine_server" -h nos_engine_server --network=$SC_NETNAME -w $SIM_BIN $DBOX /usr/bin/nos_engine_server_standalone -f $SIM_BIN/nos_engine_server_config.json |
33 |
| -gnome-terminal --tab --title="NOS Time Driver" -- $DFLAGS -v $SIM_DIR:$SIM_DIR --name nos_time_driver --network=$SC_NETNAME -w $SIM_BIN $DBOX ./nos3-single-simulator $SC_CFG_FILE time |
34 |
| -gnome-terminal --tab --title="NOS Terminal" -- $DFLAGS -v $SIM_DIR:$SIM_DIR --name "nos_terminal" --network=$SC_NETNAME -w $SIM_BIN $DBOX ./nos3-single-simulator $SC_CFG_FILE stdio-terminal |
| 88 | + echo $SC_NUM " - 42..." |
| 89 | + rm -rf $USER_NOS3_DIR/42/NOS3InOut |
| 90 | + cp -r $BASE_DIR/cfg/build/InOut $USER_NOS3_DIR/42/NOS3InOut |
| 91 | + xhost +local:* |
| 92 | + gnome-terminal --tab --title=$SC_NUM" - 42" -- $DFLAGS -e DISPLAY=$DISPLAY -v $USER_NOS3_DIR:$USER_NOS3_DIR -v /tmp/.X11-unix:/tmp/.X11-unix:ro --name $SC_NUM"_fortytwo" -h fortytwo --network=$SC_NETNAME -w $USER_NOS3_DIR/42 -t $DBOX $USER_NOS3_DIR/42/42 NOS3InOut |
| 93 | + echo "" |
35 | 94 |
|
36 |
| -echo "Checkout..." |
37 |
| -# Rename for your simulator under test to allow checkout |
38 |
| -gnome-terminal --tab --title="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 |
| 95 | + echo $SC_NUM " - Flight Software..." |
| 96 | + cd $FSW_DIR |
| 97 | + gnome-terminal --tab --title="FPrime" -- $DFLAGS -v $BASE_DIR:$BASE_DIR --name $SC_NUM"_sample_checkout" --network=$SC_NETNAME -w $BASE_DIR $DBOX ./scripts/fsw_fprime_launch.sh |
39 | 98 |
|
40 |
| -# Example manual build for sample checkout: |
41 |
| -# cd ./components/sample/support |
42 |
| -# mkdir build |
43 |
| -# cd build |
44 |
| -# cmake .. -DTGTNAME=cpu1 |
45 |
| -# make |
46 | 99 |
|
47 |
| -# Rename for your checkout under test to allow checkout |
48 |
| -# gnome-terminal --window-with-profile=KeepOpen --title="Sample f' test" -- $DFLAGS -v $BASE_DIR:$BASE_DIR --name $SC_NUM"_sample_checkout" --network=$SC_NETNAME -w $BASE_DIR $DBOX ./components/sample/fprime/build/sample_checkout |
| 100 | + echo "" |
| 101 | + #gnome-terminal --window-with-profile=KeepOpen --title=$SC_NUM" - NOS3 Flight Software" -- $DFLAGS -v $BASE_DIR:$BASE_DIR --name $SC_NUM"_nos_fsw" -h nos_fsw --network=$SC_NETNAME -w $FSW_DIR --sysctl fs.mqueue.msg_max=10000 --ulimit rtprio=99 --cap-add=sys_nice $DBOX $FSW_DIR/core-cpu1 -R PO & |
| 102 | + echo "" |
49 | 103 |
|
| 104 | + # Debugging |
| 105 | + # Replace `--tab` with `--window-with-profile=KeepOpen` once you've created this gnome-terminal profile manually |
| 106 | + |
| 107 | + echo $SC_NUM " - CryptoLib..." |
| 108 | + gnome-terminal --tab --title=$SC_NUM" - CryptoLib" -- $DFLAGS -v $BASE_DIR:$BASE_DIR --name $SC_NUM"_cryptolib" --network=$SC_NETNAME --network-alias=cryptolib -w $BASE_DIR/gsw/build $DBOX ./support/standalone |
| 109 | + echo "" |
| 110 | + |
| 111 | + echo $SC_NUM " - Simulators..." |
| 112 | + cd $SIM_BIN |
| 113 | + gnome-terminal --tab --title=$SC_NUM" - NOS Engine Server" -- $DFLAGS -v $SIM_DIR:$SIM_DIR --name $SC_NUM"_nos_engine_server" -h nos_engine_server --network=$SC_NETNAME -w $SIM_BIN $DBOX /usr/bin/nos_engine_server_standalone -f $SIM_BIN/nos_engine_server_config.json |
| 114 | + gnome-terminal --tab --title=$SC_NUM" - 42 Truth Sim" -- $DFLAGS -v $SIM_DIR:$SIM_DIR --name $SC_NUM"_truth42sim" -h truth42sim --network=$SC_NETNAME -w $SIM_BIN $DBOX ./nos3-single-simulator $SC_CFG_FILE truth42sim |
| 115 | + |
| 116 | + $DNETWORK connect $SC_NETNAME nos_terminal |
| 117 | + $DNETWORK connect $SC_NETNAME nos_udp_terminal |
| 118 | + |
| 119 | + # Component simulators |
| 120 | + gnome-terminal --tab --title=$SC_NUM" - CAM Sim" -- $DFLAGS -v $SIM_DIR:$SIM_DIR --name $SC_NUM"_cam_sim" --network=$SC_NETNAME -w $SIM_BIN $DBOX ./nos3-single-simulator $SC_CFG_FILE camsim |
| 121 | + gnome-terminal --tab --title=$SC_NUM" - CSS Sim" -- $DFLAGS -v $SIM_DIR:$SIM_DIR --name $SC_NUM"_css_sim" --network=$SC_NETNAME -w $SIM_BIN $DBOX ./nos3-single-simulator $SC_CFG_FILE generic_css_sim |
| 122 | + gnome-terminal --tab --title=$SC_NUM" - EPS Sim" -- $DFLAGS -v $SIM_DIR:$SIM_DIR --name $SC_NUM"_eps_sim" --network=$SC_NETNAME -w $SIM_BIN $DBOX ./nos3-single-simulator $SC_CFG_FILE generic_eps_sim |
| 123 | + gnome-terminal --tab --title=$SC_NUM" - FSS Sim" -- $DFLAGS -v $SIM_DIR:$SIM_DIR --name $SC_NUM"_fss_sim" --network=$SC_NETNAME -w $SIM_BIN $DBOX ./nos3-single-simulator $SC_CFG_FILE generic_fss_sim |
| 124 | + gnome-terminal --tab --title=$SC_NUM" - GPS Sim" -- $DFLAGS -v $SIM_DIR:$SIM_DIR --name $SC_NUM"_gps_sim" --network=$SC_NETNAME -w $SIM_BIN $DBOX ./nos3-single-simulator $SC_CFG_FILE gps |
| 125 | + gnome-terminal --tab --title=$SC_NUM" - IMU Sim" -- $DFLAGS -v $SIM_DIR:$SIM_DIR --name $SC_NUM"_imu_sim" --network=$SC_NETNAME -w $SIM_BIN $DBOX ./nos3-single-simulator $SC_CFG_FILE generic_imu_sim |
| 126 | + gnome-terminal --tab --title=$SC_NUM" - MAG Sim" -- $DFLAGS -v $SIM_DIR:$SIM_DIR --name $SC_NUM"_mag_sim" --network=$SC_NETNAME -w $SIM_BIN $DBOX ./nos3-single-simulator $SC_CFG_FILE generic_mag_sim |
| 127 | + gnome-terminal --tab --title=$SC_NUM" - RW 0 Sim" -- $DFLAGS -v $SIM_DIR:$SIM_DIR --name $SC_NUM"_rw_sim0" --network=$SC_NETNAME -w $SIM_BIN $DBOX ./nos3-single-simulator $SC_CFG_FILE generic-reactionwheel-sim0 |
| 128 | + gnome-terminal --tab --title=$SC_NUM" - RW 1 Sim" -- $DFLAGS -v $SIM_DIR:$SIM_DIR --name $SC_NUM"_rw_sim1" --network=$SC_NETNAME -w $SIM_BIN $DBOX ./nos3-single-simulator $SC_CFG_FILE generic-reactionwheel-sim1 |
| 129 | + gnome-terminal --tab --title=$SC_NUM" - RW 2 Sim" -- $DFLAGS -v $SIM_DIR:$SIM_DIR --name $SC_NUM"_rw_sim2" --network=$SC_NETNAME -w $SIM_BIN $DBOX ./nos3-single-simulator $SC_CFG_FILE generic-reactionwheel-sim2 |
| 130 | + |
| 131 | + gnome-terminal --tab --title=$SC_NUM" - Radio Sim" -- $DFLAGS -v $SIM_DIR:$SIM_DIR --name $SC_NUM"_radio_sim" -h radio_sim --network=$SC_NETNAME --network-alias=radio_sim -w $SIM_BIN $DBOX ./nos3-single-simulator $SC_CFG_FILE generic_radio_sim |
| 132 | + |
| 133 | + 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 |
| 134 | + 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 |
| 135 | + 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 |
| 136 | + echo "" |
| 137 | +done |
| 138 | + |
| 139 | +echo "NOS Time Driver..." |
| 140 | +sleep 8 |
| 141 | +gnome-terminal --tab --title="NOS Time Driver" -- $DFLAGS -v $SIM_DIR:$SIM_DIR --name nos_time_driver --network=nos3_core -w $SIM_BIN $DBOX ./nos3-single-simulator $GND_CFG_FILE time |
| 142 | +sleep 1 |
| 143 | +for (( i=1; i<=$SATNUM; i++ )) |
| 144 | +do |
| 145 | + export SC_NUM="sc_"$i |
| 146 | + export SC_NETNAME="nos3_"$SC_NUM |
| 147 | + export TIMENAME=$SC_NUM"_nos_time_driver" |
| 148 | + $DNETWORK connect --alias nos_time_driver $SC_NETNAME nos_time_driver |
| 149 | +done |
50 | 150 | echo ""
|
| 151 | + |
| 152 | + |
| 153 | +sleep 1 |
| 154 | + |
| 155 | +urlIP=$(docker container inspect sc_1_sample_checkout | grep -i IPAddress | grep -oE "\b([0-9]{1,3}\.){3}[0-9]{1,3}\b") |
| 156 | + |
| 157 | +sleep 10 |
| 158 | + |
| 159 | +firefox ${urlIP}:5000 |
| 160 | + |
| 161 | +echo "Docker launch script completed!" |
0 commit comments