openc3-cosmos-fakesat 1.0.2

Sign up to get free protection for your applications and to get access to all the features.
data/README.md ADDED
@@ -0,0 +1,15 @@
1
+ # COSMOS Configuration
2
+
3
+ See the [OpenC3 COSMOS](https://openc3.com) documentation for all things COSMOS.
4
+
5
+ ## Building the plugin
6
+
7
+ 1. <Path to COSMOS installation>\openc3.bat cli rake build VERSION=X.Y.Z
8
+ - VERSION is required
9
+ - gem file will be built locally
10
+
11
+ ## Upload plugin
12
+
13
+ 1. Go to localhost:2900/tools/admin
14
+ 1. Click the paperclip icon and choose your plugin.gem file
15
+ 1. Click Install on the variables dialog
data/Rakefile ADDED
@@ -0,0 +1,21 @@
1
+ PLUGIN_NAME = Dir['*.gemspec'][0].split('.')[0..-2].join('.')
2
+
3
+ task :require_version do
4
+ if ENV['VERSION']
5
+ if ENV['VERSION'] =~ /-/
6
+ # Add Timestamp to prerelease versions
7
+ ENV['VERSION'] = ENV['VERSION'] + "." + Time.now.utc.strftime("%Y%m%d%H%M%S")
8
+ end
9
+ else
10
+ puts "VERSION is required: rake <task> VERSION=X.X.X"
11
+ exit 1
12
+ end
13
+ end
14
+
15
+ task :build => [:require_version] do
16
+ _, platform, *_ = RUBY_PLATFORM.split("-")
17
+ if platform == 'mswin32' or platform == 'mingw32'
18
+ puts "Warning: Building gem on Windows will lose file permissions"
19
+ end
20
+ system("gem build #{PLUGIN_NAME}")
21
+ end
data/plugin.txt ADDED
@@ -0,0 +1,12 @@
1
+ # Set VARIABLEs here to allow variation in your plugin
2
+ # See https://openc3.com/docs/v5/plugins for more information
3
+ VARIABLE fakesat_target_name FAKESAT
4
+ VARIABLE fakesat_int_name FAKESAT_INT
5
+
6
+ TARGET FAKESAT <%= fakesat_target_name %>
7
+ LOG_RETAIN_TIME 360000 # 10 hrs
8
+ REDUCED_LOG_RETAIN_TIME 360000 # 10hrs
9
+ TLM_LOG_CYCLE_TIME 300
10
+
11
+ INTERFACE <%= fakesat_int_name %> simulated_target_interface.rb sim_sat.rb
12
+ MAP_TARGET <%= fakesat_target_name %>
@@ -0,0 +1,9 @@
1
+ PARAMETER CCSDSVER 0 3 UINT 0 0 0 "CCSDS primary header version number"
2
+ PARAMETER CCSDSTYPE 3 1 UINT 1 1 1 "CCSDS primary header packet type"
3
+ PARAMETER CCSDSSHF 4 1 UINT 0 0 0 "CCSDS primary header secondary header flag"
4
+ ID_PARAMETER CCSDSAPID 5 11 UINT 0 2047 999 "CCSDS primary header application id"
5
+ PARAMETER CCSDSSEQFLAGS 16 2 UINT 3 3 3 "CCSDS primary header sequence flags"
6
+ PARAMETER CCSDSSEQCNT 18 14 UINT 0 16383 0 "CCSDS primary header sequence count"
7
+ OVERFLOW TRUNCATE
8
+ PARAMETER CCSDSLENGTH 32 16 UINT MIN MAX 12 "CCSDS primary header packet length"
9
+ ID_PARAMETER PKTID 48 16 UINT MIN MAX <%= id %> "Packet id"
@@ -0,0 +1,19 @@
1
+ APPEND_ITEM CCSDSVER 3 UINT "CCSDS packet version number (See CCSDS 133.0-B-1)"
2
+ APPEND_ITEM CCSDSTYPE 1 UINT "CCSDS packet type (command or telemetry)"
3
+ STATE TLM 0
4
+ STATE CMD 1
5
+ APPEND_ITEM CCSDSSHF 1 UINT "CCSDS secondary header flag"
6
+ STATE FALSE 0
7
+ STATE TRUE 1
8
+ APPEND_ID_ITEM CCSDSAPID 11 UINT <%= apid %> "CCSDS application process id"
9
+ APPEND_ITEM CCSDSSEQFLAGS 2 UINT "CCSDS sequence flags"
10
+ STATE FIRST 1
11
+ STATE CONT 0
12
+ STATE LAST 2
13
+ STATE NOGROUP 3
14
+ APPEND_ITEM CCSDSSEQCNT 14 UINT "CCSDS packet sequence count"
15
+ OVERFLOW TRUNCATE
16
+ APPEND_ITEM CCSDSLENGTH 16 UINT "CCSDS packet data length"
17
+ APPEND_ITEM TIMESEC 32 UINT "Seconds since epoch (January 1st, 1970, midnight)"
18
+ APPEND_ITEM TIMEUS 32 UINT "Microseconds of second"
19
+ APPEND_ID_ITEM PKTID 16 UINT 1 "Packet id (The combination of CCSDS_APID and PACKET_ID identify the packet)"
@@ -0,0 +1,69 @@
1
+ COMMAND <%= target_name %> COLLECT BIG_ENDIAN "Starts a collect on the <%= target_name %> target"
2
+ <%= render "_ccsds_cmd.txt", locals: {id: 1} %>
3
+ PARAMETER TYPE 64 16 UINT MIN MAX 0 "Collect type"
4
+ REQUIRED
5
+ STATE NORMAL 0
6
+ STATE SPECIAL 1 HAZARDOUS
7
+ PARAMETER DURATION 80 32 FLOAT 0.0 10.0 1.0 "Collect duration"
8
+ PARAMETER OPCODE 112 8 UINT 0x0 0xFF 0xAB "Collect opcode"
9
+ FORMAT_STRING "0x%0X"
10
+ PARAMETER TEMP 120 32 FLOAT 0.0 25.0 0.0 "Collect temperature"
11
+ UNITS Celsius C
12
+
13
+ COMMAND <%= target_name %> ABORT BIG_ENDIAN "Aborts a collect on the <%= target_name %> instrument"
14
+ <%= render "_ccsds_cmd.txt", locals: {id: 2} %>
15
+
16
+ COMMAND <%= target_name %> CLEAR BIG_ENDIAN "Clears counters on the <%= target_name %> instrument"
17
+ HAZARDOUS "Clearing counters may lose valuable information."
18
+ <%= render "_ccsds_cmd.txt", locals: {id: 3} %>
19
+
20
+ COMMAND <%= target_name %> SET_MODE BIG_ENDIAN "Change spacecraft mode"
21
+ <%= render "_ccsds_cmd.txt", locals: {id: 4} %>
22
+ APPEND_PARAMETER MODE 8 UINT 0 2 0 "Desired Mode"
23
+ REQUIRED
24
+ STATE SAFE 0
25
+ STATE CHECKOUT 1
26
+ STATE OPERATE 2
27
+
28
+ COMMAND <%= target_name %> SLRPNLDEPLOY BIG_ENDIAN "Deploy solar array panel"
29
+ <%= render "_ccsds_cmd.txt", locals: {id: 5} %>
30
+ APPEND_PARAMETER NUM 8 UINT 1 2 1 "Solar Array Number"
31
+
32
+ COMMAND <%= target_name %> SLRPNLSTOW BIG_ENDIAN "Stow solar array panel"
33
+ <%= render "_ccsds_cmd.txt", locals: {id: 6} %>
34
+ APPEND_PARAMETER NUM 8 UINT 1 2 1 "Solar Array Number"
35
+
36
+ COMMAND <%= target_name %> SLRPNLANG BIG_ENDIAN "Set Solar Array Panel Angle"
37
+ <%= render "_ccsds_cmd.txt", locals: {id: 7} %>
38
+ APPEND_PARAMETER NUM 8 UINT 1 2 1 "Solar Array Number"
39
+ APPEND_PARAMETER ANG 32 FLOAT 0 360 0 "Solar Array Angle"
40
+ UNITS DEGREES DEG
41
+
42
+ COMMAND <%= target_name %> TABLE_LOAD BIG_ENDIAN "Load table"
43
+ <%= render "_ccsds_cmd.txt", locals: {id: 8} %>
44
+ APPEND_PARAMETER DATA 80 BLOCK "" "Table data"
45
+
46
+ COMMAND <%= target_name %> HTR_CTRL BIG_ENDIAN "Heater Control ON/OFF"
47
+ <%= render "_ccsds_cmd.txt", locals: {id: 9} %>
48
+ APPEND_PARAMETER NUM 8 UINT 1 2 1 "Heater Number"
49
+ APPEND_PARAMETER STATE 8 UINT 0 1 0 "Desired State"
50
+ STATE OFF 0 HAZARDOUS
51
+ STATE ON 1
52
+
53
+ COMMAND <%= target_name %> HTR_STATE BIG_ENDIAN "Heater State ON/OFF"
54
+ <%= render "_ccsds_cmd.txt", locals: {id: 10} %>
55
+ APPEND_PARAMETER NUM 8 UINT 1 2 1 "Heater Number"
56
+ APPEND_PARAMETER STATE 8 UINT 0 1 0 "Desired State"
57
+ STATE OFF 0
58
+ STATE ON 1
59
+
60
+ COMMAND <%= target_name %> HTR_SETPT BIG_ENDIAN "Heater Setpoint"
61
+ <%= render "_ccsds_cmd.txt", locals: {id: 11} %>
62
+ APPEND_PARAMETER NUM 8 UINT 1 2 1 "Heater Number"
63
+ APPEND_PARAMETER SETPT 32 FLOAT -100 100 0 "Setpoint"
64
+
65
+ COMMAND <%= target_name %> ADCS_CTRL BIG_ENDIAN "ADCS Control of Solar Panel Angle ON/OFF"
66
+ <%= render "_ccsds_cmd.txt", locals: {id: 12} %>
67
+ APPEND_PARAMETER STATE 8 UINT 0 1 0 "Desired State"
68
+ STATE OFF 0 HAZARDOUS
69
+ STATE ON 1
@@ -0,0 +1,145 @@
1
+ TELEMETRY <%= target_name %> HEALTH_STATUS BIG_ENDIAN "Health and status from the <%= target_name %> target"
2
+ <%= render "_ccsds_tlm.txt", locals: {apid: 1} %>
3
+ APPEND_ITEM CMD_ACPT_CNT 32 UINT "Command accept counter"
4
+ APPEND_ITEM CMD_RJCT_CNT 32 UINT "Command reject counter"
5
+ APPEND_ITEM MODE 8 UINT "Spacecraft mode"
6
+ STATE SAFE 0 RED
7
+ STATE CHECKOUT 1 YELLOW
8
+ STATE OPERATE 2 GREEN
9
+ APPEND_ITEM CPU_PWR 32 FLOAT "CPU Power"
10
+ UNITS WATTS W
11
+ APPEND_ITEM TABLE_DATA 80 BLOCK "Table Data"
12
+ ITEM PACKET_TIME 0 0 DERIVED "Ruby time based on TIMESEC and TIMEUS"
13
+ READ_CONVERSION unix_time_conversion.rb TIMESEC TIMEUS
14
+
15
+ TELEMETRY <%= target_name %> THERMAL BIG_ENDIAN "Thermal data"
16
+ <%= render "_ccsds_tlm.txt", locals: {apid: 2} %>
17
+ APPEND_ITEM TEMP1 32 FLOAT "Temperature #1"
18
+ UNITS CELSIUS C
19
+ FORMAT_STRING "%0.2f"
20
+ LIMITS DEFAULT 1 ENABLED -10.0 -0.0 40.0 50.0 25.0 35.0
21
+ APPEND_ITEM TEMP2 32 FLOAT "Temperature #2"
22
+ UNITS CELSIUS C
23
+ FORMAT_STRING "%0.2f"
24
+ LIMITS DEFAULT 1 ENABLED -10.0 -0.0 40.0 50.0 25.0 35.0
25
+ APPEND_ITEM HEATER1_CTRL 8 UINT "Heater 1 Control ON/OFF"
26
+ STATE OFF 0
27
+ STATE ON 1
28
+ APPEND_ITEM HEATER1_STATE 8 UINT "Heater 1 State ON/OFF"
29
+ STATE OFF 0
30
+ STATE ON 1
31
+ APPEND_ITEM HEATER1_SETPT 32 FLOAT "Heater 1 Setpoint"
32
+ UNITS CELCIUS C
33
+ APPEND_ITEM HEATER1_PWR 32 FLOAT "Heater 1 Power"
34
+ UNITS WATTS W
35
+ APPEND_ITEM HEATER2_CTRL 8 UINT "Heater 2 Control ON/OFF"
36
+ STATE OFF 0
37
+ STATE ON 1
38
+ APPEND_ITEM HEATER2_STATE 8 UINT "Heater 2 State ON/OFF"
39
+ STATE OFF 0
40
+ STATE ON 1
41
+ APPEND_ITEM HEATER2_SETPT 32 FLOAT "Heater 2 Setpoint"
42
+ UNITS CELCIUS C
43
+ APPEND_ITEM HEATER2_PWR 32 FLOAT "Heater 2 Power"
44
+ UNITS WATTS W
45
+ ITEM PACKET_TIME 0 0 DERIVED "Ruby time based on TIMESEC and TIMEUS"
46
+ READ_CONVERSION unix_time_conversion.rb TIMESEC TIMEUS
47
+
48
+ TELEMETRY <%= target_name %> ADCS BIG_ENDIAN "Position and attitude data"
49
+ <%= render "_ccsds_tlm.txt", locals: {apid: 3} %>
50
+ ITEM POSX 128 32 FLOAT "Position X"
51
+ UNITS METERS M
52
+ ITEM POSY 160 32 FLOAT "Position Y"
53
+ UNITS METERS M
54
+ ITEM POSZ 192 32 FLOAT "Position Z"
55
+ UNITS METERS M
56
+ ITEM VELX 224 32 FLOAT "Velocity X"
57
+ UNITS METERS_PER_SECOND MPS
58
+ ITEM VELY 256 32 FLOAT "Velocity Y"
59
+ UNITS METERS_PER_SECOND MPS
60
+ ITEM VELZ 288 32 FLOAT "Velocity Z"
61
+ UNITS METERS_PER_SECOND MPS
62
+ ITEM Q1 320 32 FLOAT "Quaternion param 1"
63
+ FORMAT_STRING "%0.6f"
64
+ ITEM Q2 352 32 FLOAT "Quaternion param 2"
65
+ FORMAT_STRING "%0.6f"
66
+ ITEM Q3 384 32 FLOAT "Quaternion param 3"
67
+ FORMAT_STRING "%0.6f"
68
+ ITEM Q4 416 32 FLOAT "Quaternion param 4"
69
+ FORMAT_STRING "%0.6f"
70
+ ITEM BIASX 448 32 FLOAT "Body X rate bias"
71
+ FORMAT_STRING "%0.6f"
72
+ ITEM BIASY 480 32 FLOAT "Body Y rate bias"
73
+ FORMAT_STRING "%0.6f"
74
+ ITEM BIASZ 512 32 FLOAT "Body Z rate bias"
75
+ FORMAT_STRING "%0.6f"
76
+ <% (1..5).each do |i| %>
77
+ APPEND_ITEM STAR<%= i %>ID 16 UINT "Star <%= i %> id"
78
+ <% end %>
79
+ ITEM POSPROGRESS 624 32 FLOAT "Position file progress"
80
+ FORMAT_STRING "%0.2f"
81
+ ITEM ATTPROGRESS 656 32 FLOAT "Attitude file progress"
82
+ FORMAT_STRING "%0.2f"
83
+ APPEND_ITEM SR_ANG_TO_SUN 32 FLOAT "Ideal Solar Array Angle to Point at Sun"
84
+ FORMAT_STRING "%0.2f"
85
+ APPEND_ITEM ADCS_CTRL 8 UINT "ADCS Control ON/OFF"
86
+ STATE OFF 0 YELLOW
87
+ STATE ON 1 GREEN
88
+ ITEM PACKET_TIME 0 0 DERIVED "Ruby time based on TIMESEC and TIMEUS"
89
+ READ_CONVERSION unix_time_conversion.rb TIMESEC TIMEUS
90
+
91
+ TELEMETRY <%= target_name %> EVENT BIG_ENDIAN "Event packet"
92
+ <%= render "_ccsds_tlm.txt", locals: {apid: 4} %>
93
+ APPEND_ITEM MESSAGE 0 STRING "Event Message"
94
+ ITEM PACKET_TIME 0 0 DERIVED "Ruby time based on TIMESEC and TIMEUS"
95
+ READ_CONVERSION unix_time_conversion.rb TIMESEC TIMEUS
96
+
97
+ TELEMETRY <%= target_name %> IMAGE BIG_ENDIAN "Packet with image data"
98
+ <%= render "_ccsds_tlm.txt", locals: {apid: 5} %>
99
+ ITEM BYTES 128 32 UINT "First bytes"
100
+ FORMAT_STRING '0x%08x'
101
+ ITEM IMAGE 128 0 BLOCK "Image Data"
102
+ OVERLAP # Notify OpenC3 that this is intentionally overlapping the BYTES field
103
+ ITEM PACKET_TIME 0 0 DERIVED "Ruby time based on TIMESEC and TIMEUS"
104
+ READ_CONVERSION unix_time_conversion.rb TIMESEC TIMEUS
105
+
106
+ TELEMETRY <%= target_name %> MECH BIG_ENDIAN "Mechanism status"
107
+ <%= render "_ccsds_tlm.txt", locals: {apid: 6} %>
108
+ APPEND_ITEM SLRPNL1_ANG 32 FLOAT "Solar panel 1 angle"
109
+ UNITS DEGREES DEG
110
+ APPEND_ITEM SLRPNL2_ANG 32 FLOAT "Solar panel 2 angle"
111
+ UNITS DEGREES DEG
112
+ APPEND_ITEM SLRPNL1_STATE 8 UINT "Solar panel 1 state DEPLOYED/STOWED"
113
+ STATE STOWED 0 YELLOW
114
+ STATE DEPLOYED 1 GREEN
115
+ APPEND_ITEM SLRPNL2_STATE 8 UINT "Solar panel 2 state DEPLOYED/STOWED"
116
+ STATE STOWED 0 YELLOW
117
+ STATE DEPLOYED 1 GREEN
118
+ APPEND_ITEM SLRPNL1_PWR 32 FLOAT "Solar panel 1 power"
119
+ LIMITS DEFAULT 1 ENABLED 50 100 505 510
120
+ UNITS WATTS W
121
+ APPEND_ITEM SLRPNL2_PWR 32 FLOAT "Solar panel 2 power"
122
+ LIMITS DEFAULT 1 ENABLED 50 100 505 510
123
+ UNITS WATTS W
124
+ APPEND_ITEM BATTERY 32 FLOAT "Battery Percentage"
125
+ UNITS PERCENT %
126
+ LIMITS DEFAULT 1 ENABLED 10 50 105 110
127
+ FORMAT_STRING "%0.2f"
128
+ ITEM PACKET_TIME 0 0 DERIVED "Ruby time based on TIMESEC and TIMEUS"
129
+ READ_CONVERSION unix_time_conversion.rb TIMESEC TIMEUS
130
+
131
+ TELEMETRY <%= target_name %> IMAGER BIG_ENDIAN "Imager Status"
132
+ <%= render "_ccsds_tlm.txt", locals: {apid: 7} %>
133
+ APPEND_ITEM COLLECTS 16 UINT "Number of collects"
134
+ APPEND_ITEM DURATION 32 FLOAT "Most recent collect duration"
135
+ APPEND_ITEM COLLECT_TYPE 16 UINT "Most recent collect type"
136
+ STATE NORMAL 0
137
+ STATE SPECIAL 1
138
+ STATE ERROR ANY
139
+ APPEND_ITEM IMAGER_STATE 8 UINT "Imager State ON/OFF"
140
+ STATE OFF 0
141
+ STATE ON 1
142
+ APPEND_ITEM IMAGER_PWR 32 FLOAT "Image Power"
143
+ UNITS WATTS W
144
+ ITEM PACKET_TIME 0 0 DERIVED "Ruby time based on TIMESEC and TIMEUS"
145
+ READ_CONVERSION unix_time_conversion.rb TIMESEC TIMEUS
Binary file
Binary file
@@ -0,0 +1,6 @@
1
+ class FakeSat
2
+ # Note use <%= target_name %> if you want to create multiple instances of FakeSat
3
+
4
+ def initialize
5
+ end
6
+ end