cosmos 4.0.0 → 4.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Manifest.txt +16 -3
- data/autohotkey/tools/ConfigEditor +16 -0
- data/autohotkey/tools/packet_viewer.ahk +2 -1
- data/autohotkey/tools/tlm_viewer.ahk +2 -0
- data/autohotkey/tools/tool_launch.rb +38 -0
- data/data/COSMOS_Architecture.png +0 -0
- data/data/config/system.yaml +79 -2
- data/data/crc.txt +29 -28
- data/demo/Gemfile +1 -1
- data/demo/config/data/crc.txt +7 -2
- data/demo/config/targets/SYSTEM/cmd_tlm/meta_tlm.txt +10 -0
- data/demo/config/tools/cmd_tlm_server/cmd_tlm_server.txt +1 -1
- data/demo/tools/mac/ConfigEditor.app/Contents/Info.plist +38 -0
- data/demo/tools/mac/ConfigEditor.app/Contents/MacOS/ConfigEditor.rb +16 -0
- data/demo/tools/mac/ConfigEditor.app/Contents/MacOS/main.sh +10 -0
- data/demo/tools/mac/ConfigEditor.app/Contents/MacOS/tool_launch.rb +38 -0
- data/demo/tools/mac/ConfigEditor.app/Contents/Resources/appIcon.icns +0 -0
- data/install/Gemfile +1 -1
- data/install/config/data/crc.txt +6 -1
- data/install/config/targets/SYSTEM/cmd_tlm/meta_tlm.txt +9 -0
- data/install/tools/mac/ConfigEditor.app/Contents/Info.plist +38 -0
- data/install/tools/mac/ConfigEditor.app/Contents/MacOS/ConfigEditor.rb +16 -0
- data/install/tools/mac/ConfigEditor.app/Contents/MacOS/main.sh +10 -0
- data/install/tools/mac/ConfigEditor.app/Contents/MacOS/tool_launch.rb +38 -0
- data/install/tools/mac/ConfigEditor.app/Contents/Resources/appIcon.icns +0 -0
- data/lib/cosmos/gui/dialogs/set_tlm_dialog.rb +3 -0
- data/lib/cosmos/gui/dialogs/tlm_graph_dialog.rb +7 -13
- data/lib/cosmos/interfaces/interface.rb +1 -1
- data/lib/cosmos/packets/commands.rb +5 -0
- data/lib/cosmos/packets/packet.rb +8 -0
- data/lib/cosmos/packets/packet_item.rb +9 -0
- data/lib/cosmos/script/api_shared.rb +1 -29
- data/lib/cosmos/script/scripting.rb +2 -4
- data/lib/cosmos/script/telemetry.rb +38 -22
- data/lib/cosmos/system/system.rb +51 -53
- data/lib/cosmos/tools/cmd_tlm_server/api.rb +27 -4
- data/lib/cosmos/tools/cmd_tlm_server/gui/packets_tab.rb +1 -7
- data/lib/cosmos/tools/config_editor/config_editor.rb +9 -1
- data/lib/cosmos/tools/config_editor/config_editor_frame.rb +16 -1
- data/lib/cosmos/tools/packet_viewer/packet_viewer.rb +1 -9
- data/lib/cosmos/tools/tlm_viewer/tlm_viewer.rb +1 -1
- data/lib/cosmos/tools/tlm_viewer/widgets/canvas_clickable.rb +33 -0
- data/lib/cosmos/tools/tlm_viewer/widgets/canvas_widget.rb +14 -6
- data/lib/cosmos/tools/tlm_viewer/widgets/canvasdot_widget.rb +15 -17
- data/lib/cosmos/tools/tlm_viewer/widgets/canvasimage_widget.rb +5 -3
- data/lib/cosmos/tools/tlm_viewer/widgets/canvasimagevalue_widget.rb +17 -15
- data/lib/cosmos/tools/tlm_viewer/widgets/canvaslabel_widget.rb +13 -6
- data/lib/cosmos/tools/tlm_viewer/widgets/canvaslabelvalue_widget.rb +5 -7
- data/lib/cosmos/tools/tlm_viewer/widgets/canvasline_widget.rb +2 -4
- data/lib/cosmos/tools/tlm_viewer/widgets/canvaslinevalue_widget.rb +8 -11
- data/lib/cosmos/tools/tlm_viewer/widgets/canvasvalue_widget.rb +2 -4
- data/lib/cosmos/top_level.rb +14 -0
- data/lib/cosmos/utilities/ruby_lex_utils.rb +1 -1
- data/lib/cosmos/version.rb +4 -4
- data/spec/install/config/targets/INST/cmd_tlm/inst_tlm.txt +3 -3
- data/spec/install/config/targets/SYSTEM/cmd_tlm/meta_tlm.txt +10 -0
- data/spec/packets/commands_spec.rb +10 -0
- data/spec/packets/packet_spec.rb +62 -0
- data/spec/script/telemetry_spec.rb +8 -6
- data/spec/system/system_spec.rb +192 -0
- data/spec/system/target_spec.rb +6 -5
- metadata +18 -5
- data/demo/config/targets/SYSTEM/cmd_tlm/meta_cmd_tlm.txt +0 -16
- data/install/config/targets/SYSTEM/cmd_tlm/meta_cmd_tlm.txt +0 -14
- data/spec/install/config/targets/SYSTEM/cmd_tlm/meta_cmd_tlm.txt +0 -16
@@ -11,7 +11,6 @@
|
|
11
11
|
require 'cosmos/tools/tlm_viewer/widgets/widget'
|
12
12
|
|
13
13
|
module Cosmos
|
14
|
-
|
15
14
|
class CanvasvalueWidget
|
16
15
|
include Widget
|
17
16
|
|
@@ -53,7 +52,7 @@ module Cosmos
|
|
53
52
|
# This code uses the booleans set by the process_settings function and evaluates it to logically determine
|
54
53
|
# if the item should be drawn on the canvas as "on" or "off".
|
55
54
|
begin
|
56
|
-
@item_settings.each_with_index do |item,index|
|
55
|
+
@item_settings.each_with_index do |item, index|
|
57
56
|
next if @values[index].to_f.nan? || @values[index].to_f.infinite?
|
58
57
|
eval_string << " " << item[0].to_s << " (" << @values[index].to_s << " " << item[1].to_s << " " << item[2].to_s << ")"
|
59
58
|
end
|
@@ -121,5 +120,4 @@ module Cosmos
|
|
121
120
|
end
|
122
121
|
end
|
123
122
|
end
|
124
|
-
|
125
|
-
end # module Cosmos
|
123
|
+
end
|
data/lib/cosmos/top_level.rb
CHANGED
@@ -345,6 +345,20 @@ module Cosmos
|
|
345
345
|
thread
|
346
346
|
end
|
347
347
|
|
348
|
+
# Runs a COSMOS tool
|
349
|
+
#
|
350
|
+
# @param tool_name [String] COSMOS tool to execute
|
351
|
+
# @param parameters [String] Parameters string to pass to the tool
|
352
|
+
def self.run_cosmos_tool(tool_name, parameters = '')
|
353
|
+
if Kernel.is_windows?
|
354
|
+
Cosmos.run_process("rubyw tools/#{tool_name} #{parameters}")
|
355
|
+
elsif Kernel.is_mac? and File.exist?("tools/mac/#{tool_name}.app")
|
356
|
+
Cosmos.run_process("open tools/mac/#{tool_name}.app --args #{parameters}")
|
357
|
+
else
|
358
|
+
Cosmos.run_process("ruby tools/#{tool_name} #{parameters}")
|
359
|
+
end
|
360
|
+
end
|
361
|
+
|
348
362
|
# Runs an md5 sum over one or more files and returns the Digest::MD5 object.
|
349
363
|
# Handles windows/unix new line differences but changes in whitespace will
|
350
364
|
# change the md5 sum.
|
@@ -186,7 +186,7 @@ class RubyLexUtils
|
|
186
186
|
# progress will be set as the processing progresses
|
187
187
|
# @return [String] The text with all comments removed
|
188
188
|
def remove_comments(text, progress_dialog = nil)
|
189
|
-
comments_removed = text
|
189
|
+
comments_removed = text.clone
|
190
190
|
@lex.reinitialize
|
191
191
|
@lex.exception_on_syntax_error = false
|
192
192
|
@lex_io.string = text
|
data/lib/cosmos/version.rb
CHANGED
@@ -1,12 +1,12 @@
|
|
1
1
|
# encoding: ascii-8bit
|
2
2
|
|
3
|
-
COSMOS_VERSION = '4.0.
|
3
|
+
COSMOS_VERSION = '4.0.1'
|
4
4
|
module Cosmos
|
5
5
|
module Version
|
6
6
|
MAJOR = '4'
|
7
7
|
MINOR = '0'
|
8
|
-
PATCH = '
|
9
|
-
BUILD = '
|
8
|
+
PATCH = '1'
|
9
|
+
BUILD = '012697c6665f9dd1c47b86ed75b21c9bc928973f'
|
10
10
|
end
|
11
|
-
VERSION = '4.0.
|
11
|
+
VERSION = '4.0.1'
|
12
12
|
end
|
@@ -163,11 +163,11 @@ TELEMETRY INST PARAMS BIG_ENDIAN "Params set by SETPARAMS command"
|
|
163
163
|
ITEM TIMESEC 48 32 UINT "Seconds since epoch (January 1st, 1970, midnight)"
|
164
164
|
ITEM TIMEUS 80 32 UINT "Microseconds of second"
|
165
165
|
ID_ITEM PKTID 112 16 UINT 1 "Packet id (The combination of CCSDS_APID and PACKET_ID identify the packet)"
|
166
|
-
|
167
|
-
APPEND_ITEM
|
166
|
+
<% 5.times do |i| %>
|
167
|
+
APPEND_ITEM VALUE<%= i %> 16 UINT "Value setting"
|
168
168
|
STATE GOOD 0 GREEN
|
169
169
|
STATE BAD 1 RED
|
170
|
-
|
170
|
+
<% end %>
|
171
171
|
ITEM TIMESECONDS 0 0 DERIVED "Derived floating-point time since epoch in seconds"
|
172
172
|
READ_CONVERSION unix_time_seconds_conversion.rb TIMESEC TIMEUS
|
173
173
|
FORMAT_STRING '%0.6f'
|
@@ -0,0 +1,10 @@
|
|
1
|
+
TELEMETRY SYSTEM META BIG_ENDIAN "System Meta Data Telemetry Packet"
|
2
|
+
APPEND_ID_ITEM PKTID 8 UINT 1 "Packet Id"
|
3
|
+
APPEND_ITEM CONFIG 256 STRING "Configuration Name"
|
4
|
+
APPEND_ITEM COSMOS_VERSION 240 STRING "COSMOS Version"
|
5
|
+
META READ_ONLY
|
6
|
+
APPEND_ITEM USER_VERSION 240 STRING "User Project Version"
|
7
|
+
META READ_ONLY
|
8
|
+
APPEND_ITEM RUBY_VERSION 240 STRING "Ruby Version"
|
9
|
+
META READ_ONLY
|
10
|
+
APPEND_ITEM OPERATOR_NAME 512 STRING "Operator Name"
|
@@ -276,6 +276,16 @@ module Cosmos
|
|
276
276
|
expect(cmd.raw).to eql true
|
277
277
|
expect(cmd.read("ITEM2")).to eql 10
|
278
278
|
end
|
279
|
+
|
280
|
+
it "resets the buffer size" do
|
281
|
+
packet = @cmd.packet('TGT1', 'PKT1')
|
282
|
+
packet.buffer = "\x00" * (packet.defined_length + 1)
|
283
|
+
expect(packet.length).to eql 5
|
284
|
+
items = {"ITEM2" => 10}
|
285
|
+
cmd = @cmd.build_cmd("TGT1","PKT1",items)
|
286
|
+
expect(cmd.read("ITEM2")).to eql 10
|
287
|
+
expect(cmd.length).to eql 4
|
288
|
+
end
|
279
289
|
end
|
280
290
|
|
281
291
|
describe "format" do
|
data/spec/packets/packet_spec.rb
CHANGED
@@ -501,6 +501,68 @@ module Cosmos
|
|
501
501
|
expect(@p.read("ITEM2", :FORMATTED, "")).to eql ["1", "2", "3", "4", "5"]
|
502
502
|
expect(@p.read("ITEM2", :WITH_UNITS, "")).to eql ["1 V", "2 V", "3 V", "4 V", "5 V"]
|
503
503
|
end
|
504
|
+
|
505
|
+
context "with :DERIVED items" do
|
506
|
+
it "returns nil if no read_conversion defined" do
|
507
|
+
@p.append_item("item",0,:DERIVED)
|
508
|
+
i = @p.get_item("ITEM")
|
509
|
+
i.format_string = "0x%x"
|
510
|
+
i.states = {"TRUE"=>1, "FALSE"=>0}
|
511
|
+
i.units = "V"
|
512
|
+
expect(@p.read("ITEM", :RAW, "")).to be_nil
|
513
|
+
expect(@p.read_item(i, :RAW, "")).to be_nil
|
514
|
+
end
|
515
|
+
|
516
|
+
it "reads the RAW value" do
|
517
|
+
@p.append_item("item",0,:DERIVED)
|
518
|
+
i = @p.get_item("ITEM")
|
519
|
+
i.format_string = "0x%x"
|
520
|
+
i.states = {"TRUE"=>1, "FALSE"=>0}
|
521
|
+
i.units = "V"
|
522
|
+
i.read_conversion = GenericConversion.new("0")
|
523
|
+
expect(@p.read("ITEM", :RAW, "")).to eql 0
|
524
|
+
expect(@p.read_item(i, :RAW, "")).to eql 0
|
525
|
+
i.read_conversion = GenericConversion.new("1")
|
526
|
+
expect(@p.read("ITEM", :RAW, "")).to eql 1
|
527
|
+
expect(@p.read_item(i, :RAW, "")).to eql 1
|
528
|
+
end
|
529
|
+
|
530
|
+
it "reads the CONVERTED value" do
|
531
|
+
@p.append_item("item",0,:DERIVED)
|
532
|
+
i = @p.get_item("ITEM")
|
533
|
+
i.format_string = "0x%x"
|
534
|
+
i.states = {"TRUE"=>1, "FALSE"=>0}
|
535
|
+
i.units = "V"
|
536
|
+
i.read_conversion = GenericConversion.new("0")
|
537
|
+
expect(@p.read("ITEM", :CONVERTED, "")).to eql "FALSE"
|
538
|
+
expect(@p.read_item(i, :CONVERTED, "")).to eql "FALSE"
|
539
|
+
i.read_conversion = GenericConversion.new("1")
|
540
|
+
expect(@p.read("ITEM", :CONVERTED, "")).to eql "TRUE"
|
541
|
+
expect(@p.read_item(i, :CONVERTED, "")).to eql "TRUE"
|
542
|
+
end
|
543
|
+
|
544
|
+
it "reads the FORMATTED value" do
|
545
|
+
@p.append_item("item",0,:DERIVED)
|
546
|
+
i = @p.get_item("ITEM")
|
547
|
+
i.format_string = "0x%x"
|
548
|
+
i.states = {"TRUE"=>1, "FALSE"=>0}
|
549
|
+
i.units = "V"
|
550
|
+
i.read_conversion = GenericConversion.new("3")
|
551
|
+
expect(@p.read("ITEM", :FORMATTED, "")).to eql "0x3"
|
552
|
+
expect(@p.read_item(i, :FORMATTED, "")).to eql "0x3"
|
553
|
+
end
|
554
|
+
|
555
|
+
it "reads the WITH_UNITS value" do
|
556
|
+
@p.append_item("item",0,:DERIVED)
|
557
|
+
i = @p.get_item("ITEM")
|
558
|
+
i.format_string = "0x%x"
|
559
|
+
i.states = {"TRUE"=>1, "FALSE"=>0}
|
560
|
+
i.units = "V"
|
561
|
+
i.read_conversion = GenericConversion.new("3")
|
562
|
+
expect(@p.read("ITEM", :WITH_UNITS, "")).to eql "0x3 V"
|
563
|
+
expect(@p.read_item(i, :WITH_UNITS, "")).to eql "0x3 V"
|
564
|
+
end
|
565
|
+
end
|
504
566
|
end
|
505
567
|
|
506
568
|
describe "write and write_item" do
|
@@ -161,12 +161,14 @@ module Cosmos
|
|
161
161
|
unsubscribe_packet_data(id)
|
162
162
|
end
|
163
163
|
|
164
|
-
it "subscribes and
|
165
|
-
id = subscribe_packet_data([["
|
166
|
-
|
167
|
-
packet = get_packet(id
|
168
|
-
expect(packet.target_name).to eql "
|
169
|
-
expect(packet.packet_name).to eql "
|
164
|
+
it "subscribes and gets packets" do
|
165
|
+
id = subscribe_packet_data([["SYSTEM","META"]])
|
166
|
+
inject_tlm("SYSTEM", "META")
|
167
|
+
packet = get_packet(id)
|
168
|
+
expect(packet.target_name).to eql "SYSTEM"
|
169
|
+
expect(packet.packet_name).to eql "META"
|
170
|
+
expect(packet.received_time).to be_within(1).of Time.now
|
171
|
+
expect(packet.received_count).to eql 1
|
170
172
|
unsubscribe_packet_data(id)
|
171
173
|
end
|
172
174
|
end
|
data/spec/system/system_spec.rb
CHANGED
@@ -12,6 +12,7 @@ require 'spec_helper'
|
|
12
12
|
require 'cosmos'
|
13
13
|
require 'cosmos/system/system'
|
14
14
|
require 'tempfile'
|
15
|
+
require 'fileutils'
|
15
16
|
|
16
17
|
module Cosmos
|
17
18
|
|
@@ -50,6 +51,143 @@ module Cosmos
|
|
50
51
|
# Don't check the actual paths but just that they exist
|
51
52
|
expect(System.paths.keys).to eql %w(LOGS TMP SAVED_CONFIG TABLES HANDBOOKS PROCEDURES SEQUENCES)
|
52
53
|
end
|
54
|
+
|
55
|
+
context "initializing SYSTEM META" do
|
56
|
+
before(:all) do
|
57
|
+
FileUtils.mv(File.join(@config_targets, 'SYSTEM', 'cmd_tlm', 'meta_tlm.txt'), Dir.pwd)
|
58
|
+
end
|
59
|
+
after(:all) do
|
60
|
+
FileUtils.mv(File.join(Dir.pwd, 'meta_tlm.txt'), File.join(@config_targets, 'SYSTEM', 'cmd_tlm'))
|
61
|
+
end
|
62
|
+
|
63
|
+
it "initializes the SYSTEM META with no definitions" do
|
64
|
+
tlm = System.telemetry.packet("SYSTEM", "META")
|
65
|
+
expect(tlm.read("PKTID")).to_not be_nil
|
66
|
+
expect(tlm.read("CONFIG")).to_not be_nil
|
67
|
+
expect(tlm.read("COSMOS_VERSION")).to_not be_nil
|
68
|
+
expect(tlm.read("RUBY_VERSION")).to_not be_nil
|
69
|
+
expect(tlm.read("USER_VERSION")).to_not be_nil
|
70
|
+
cmd = System.commands.packet("SYSTEM", "META")
|
71
|
+
expect(cmd.read("PKTID")).to eql tlm.read("PKTID")
|
72
|
+
expect(cmd.read("CONFIG")).to eql tlm.read("CONFIG")
|
73
|
+
expect(cmd.read("COSMOS_VERSION")).to eql tlm.read("COSMOS_VERSION")
|
74
|
+
expect(cmd.read("RUBY_VERSION")).to eql tlm.read("RUBY_VERSION")
|
75
|
+
expect(cmd.read("USER_VERSION")).to eql tlm.read("USER_VERSION")
|
76
|
+
end
|
77
|
+
|
78
|
+
it "defaults badly defined TELEMETRY SYSTEM META" do
|
79
|
+
file = File.open(File.join(@config_targets, 'SYSTEM', 'cmd_tlm', 'meta_tlm.txt'), 'w')
|
80
|
+
file.puts "TELEMETRY SYSTEM META BIG_ENDIAN"
|
81
|
+
file.puts "APPEND_ID_ITEM PKTID 8 UINT 1"
|
82
|
+
file.puts "APPEND_ITEM CONFIG 256 STRING"
|
83
|
+
file.puts "APPEND_ITEM COSMOS_VERSION 240 STRING"
|
84
|
+
file.puts "APPEND_ITEM USER_VERSION 240 STRING"
|
85
|
+
file.puts "APPEND_ITEM RUBY_VERSION 200 STRING" # Error in the RUBY_VERSION length
|
86
|
+
file.close
|
87
|
+
|
88
|
+
expect(Logger).to receive(:error) do |msg|
|
89
|
+
expect(msg).to eql "SYSTEM META not defined correctly due to RUBY_VERSION incorrect - defaulting"
|
90
|
+
end
|
91
|
+
tf = Tempfile.new('unittest')
|
92
|
+
tf.puts("AUTO_DECLARE_TARGETS")
|
93
|
+
tf.close
|
94
|
+
System.class_variable_set(:@@instance, nil)
|
95
|
+
System.new(tf.path)
|
96
|
+
tlm = System.telemetry.packet("SYSTEM", "META")
|
97
|
+
expect(tlm.read("PKTID")).to_not be_nil
|
98
|
+
expect(tlm.read("CONFIG")).to_not be_nil
|
99
|
+
expect(tlm.read("COSMOS_VERSION")).to_not be_nil
|
100
|
+
expect(tlm.get_item("COSMOS_VERSION").bit_size).to eql(240)
|
101
|
+
expect(tlm.read("RUBY_VERSION")).to_not be_nil
|
102
|
+
expect(tlm.read("USER_VERSION")).to_not be_nil
|
103
|
+
cmd = System.commands.packet("SYSTEM", "META")
|
104
|
+
expect(cmd.read("PKTID")).to eql tlm.read("PKTID")
|
105
|
+
expect(cmd.read("CONFIG")).to eql tlm.read("CONFIG")
|
106
|
+
expect(cmd.read("COSMOS_VERSION")).to eql tlm.read("COSMOS_VERSION")
|
107
|
+
expect(cmd.read("RUBY_VERSION")).to eql tlm.read("RUBY_VERSION")
|
108
|
+
expect(cmd.read("USER_VERSION")).to eql tlm.read("USER_VERSION")
|
109
|
+
tf.unlink
|
110
|
+
end
|
111
|
+
|
112
|
+
it "doesn't allow COMMAND SYSTEM META definitions" do
|
113
|
+
file = File.open(File.join(@config_targets, 'SYSTEM', 'cmd_tlm', 'meta_tlm.txt'), 'w')
|
114
|
+
file.puts "TELEMETRY SYSTEM META BIG_ENDIAN"
|
115
|
+
file.puts "APPEND_ID_ITEM PKTID 8 UINT 1"
|
116
|
+
file.puts "APPEND_ITEM CONFIG 256 STRING"
|
117
|
+
file.puts "APPEND_ITEM COSMOS_VERSION 240 STRING"
|
118
|
+
file.puts "APPEND_ITEM USER_VERSION 240 STRING"
|
119
|
+
file.puts "APPEND_ITEM RUBY_VERSION 240 STRING"
|
120
|
+
file.puts "APPEND_ITEM TEST 512 STRING ''"
|
121
|
+
# The command system meta definition is correct but not allowed
|
122
|
+
file.puts "COMMAND SYSTEM META BIG_ENDIAN"
|
123
|
+
file.puts "APPEND_ID_PARAMETER PKTID 8 UINT 1 1 1"
|
124
|
+
file.puts "APPEND_PARAMETER CONFIG 256 STRING ''"
|
125
|
+
file.puts "APPEND_PARAMETER COSMOS_VERSION 240 STRING ''"
|
126
|
+
file.puts "APPEND_PARAMETER USER_VERSION 240 STRING ''"
|
127
|
+
file.puts "APPEND_PARAMETER RUBY_VERSION 240 STRING ''"
|
128
|
+
file.puts "APPEND_PARAMETER TEST 512 STRING ''"
|
129
|
+
file.close
|
130
|
+
|
131
|
+
expect(Logger).to receive(:error) do |msg|
|
132
|
+
expect(msg).to eql "SYSTEM META not defined correctly due to COMMAND SYSTEM META defined - defaulting"
|
133
|
+
end
|
134
|
+
tf = Tempfile.new('unittest')
|
135
|
+
tf.puts("AUTO_DECLARE_TARGETS")
|
136
|
+
tf.close
|
137
|
+
System.class_variable_set(:@@instance, nil)
|
138
|
+
System.new(tf.path)
|
139
|
+
tlm = System.telemetry.packet("SYSTEM", "META")
|
140
|
+
expect(tlm.read("PKTID")).to_not be_nil
|
141
|
+
expect(tlm.read("CONFIG")).to_not be_nil
|
142
|
+
expect(tlm.read("COSMOS_VERSION")).to_not be_nil
|
143
|
+
expect(tlm.get_item("COSMOS_VERSION").bit_size).to eql(240)
|
144
|
+
expect(tlm.read("RUBY_VERSION")).to_not be_nil
|
145
|
+
expect(tlm.read("USER_VERSION")).to_not be_nil
|
146
|
+
expect(tlm.items.keys.include?("TEST")).to be false
|
147
|
+
cmd = System.commands.packet("SYSTEM", "META")
|
148
|
+
expect(cmd.read("PKTID")).to eql tlm.read("PKTID")
|
149
|
+
expect(cmd.read("CONFIG")).to eql tlm.read("CONFIG")
|
150
|
+
expect(cmd.read("COSMOS_VERSION")).to eql tlm.read("COSMOS_VERSION")
|
151
|
+
expect(cmd.read("RUBY_VERSION")).to eql tlm.read("RUBY_VERSION")
|
152
|
+
expect(cmd.read("USER_VERSION")).to eql tlm.read("USER_VERSION")
|
153
|
+
expect(cmd.items.keys.include?("TEST")).to be false
|
154
|
+
tf.unlink
|
155
|
+
end
|
156
|
+
|
157
|
+
it "defines COMMAND SYSTEM META based on TELEMETRY" do
|
158
|
+
file = File.open(File.join(@config_targets, 'SYSTEM', 'cmd_tlm', 'meta_tlm.txt'), 'w')
|
159
|
+
file.puts "TELEMETRY SYSTEM META BIG_ENDIAN"
|
160
|
+
file.puts "APPEND_ID_ITEM PKTID 8 UINT 1"
|
161
|
+
file.puts "APPEND_ITEM CONFIG 256 STRING"
|
162
|
+
file.puts "APPEND_ITEM COSMOS_VERSION 240 STRING"
|
163
|
+
file.puts "APPEND_ITEM USER_VERSION 240 STRING"
|
164
|
+
file.puts "APPEND_ITEM RUBY_VERSION 240 STRING"
|
165
|
+
file.puts "APPEND_ITEM TEST 240 STRING"
|
166
|
+
file.close
|
167
|
+
|
168
|
+
expect(Logger).to_not receive(:error)
|
169
|
+
tf = Tempfile.new('unittest')
|
170
|
+
tf.puts("AUTO_DECLARE_TARGETS")
|
171
|
+
tf.close
|
172
|
+
System.class_variable_set(:@@instance, nil)
|
173
|
+
System.new(tf.path)
|
174
|
+
tlm = System.telemetry.packet("SYSTEM", "META")
|
175
|
+
expect(tlm.read("PKTID")).to_not be_nil
|
176
|
+
expect(tlm.read("CONFIG")).to_not be_nil
|
177
|
+
expect(tlm.read("COSMOS_VERSION")).to_not be_nil
|
178
|
+
expect(tlm.read("RUBY_VERSION")).to_not be_nil
|
179
|
+
expect(tlm.read("USER_VERSION")).to_not be_nil
|
180
|
+
expect(tlm.read("TEST")).to_not be_nil
|
181
|
+
cmd = System.commands.packet("SYSTEM", "META")
|
182
|
+
expect(cmd.read("PKTID")).to eql tlm.read("PKTID")
|
183
|
+
expect(cmd.read("CONFIG")).to eql tlm.read("CONFIG")
|
184
|
+
expect(cmd.read("COSMOS_VERSION")).to eql tlm.read("COSMOS_VERSION")
|
185
|
+
expect(cmd.read("RUBY_VERSION")).to eql tlm.read("RUBY_VERSION")
|
186
|
+
expect(cmd.read("USER_VERSION")).to eql tlm.read("USER_VERSION")
|
187
|
+
expect(cmd.read("TEST")).to eql tlm.read("TEST")
|
188
|
+
tf.unlink
|
189
|
+
end
|
190
|
+
end
|
53
191
|
end
|
54
192
|
|
55
193
|
describe "System.commands" do
|
@@ -642,6 +780,60 @@ module Cosmos
|
|
642
780
|
end
|
643
781
|
end
|
644
782
|
|
783
|
+
context "with META_INIT" do
|
784
|
+
it "takes 1 parameters" do
|
785
|
+
tf = Tempfile.new('unittest')
|
786
|
+
tf.puts("META_INIT")
|
787
|
+
tf.close
|
788
|
+
expect { System.instance.process_file(tf.path) }.to raise_error(ConfigParser::Error, /Not enough parameters for META_INIT./)
|
789
|
+
tf.unlink
|
790
|
+
|
791
|
+
tf = Tempfile.new('unittest')
|
792
|
+
tf.puts("META_INIT 1 2")
|
793
|
+
tf.close
|
794
|
+
expect { System.instance.process_file(tf.path) }.to raise_error(ConfigParser::Error, /Too many parameters for META_INIT./)
|
795
|
+
tf.unlink
|
796
|
+
end
|
797
|
+
|
798
|
+
it "populates the SYSTEM META packet with the file" do
|
799
|
+
FileUtils.rm_rf @config_targets
|
800
|
+
FileUtils.mkdir_p(File.join(@config_targets, 'SYSTEM', 'cmd_tlm'))
|
801
|
+
file = File.open(File.join(@config_targets, 'SYSTEM', 'cmd_tlm', 'meta_tlm.txt'), 'w')
|
802
|
+
file.puts "TELEMETRY SYSTEM META BIG_ENDIAN"
|
803
|
+
file.puts "APPEND_ID_ITEM PKTID 8 UINT 1"
|
804
|
+
file.puts "APPEND_ITEM CONFIG 256 STRING"
|
805
|
+
file.puts "APPEND_ITEM COSMOS_VERSION 240 STRING"
|
806
|
+
file.puts "APPEND_ITEM USER_VERSION 240 STRING"
|
807
|
+
file.puts "APPEND_ITEM RUBY_VERSION 240 STRING"
|
808
|
+
file.puts "APPEND_ITEM TEST 512 STRING"
|
809
|
+
file.puts "APPEND_ITEM ID 32 UINT"
|
810
|
+
file.close
|
811
|
+
|
812
|
+
meta = Tempfile.new('meta')
|
813
|
+
meta.puts("USER_VERSION 4.5")
|
814
|
+
meta.puts("TEST hello")
|
815
|
+
meta.puts("ID 123456789")
|
816
|
+
meta.close
|
817
|
+
tf = Tempfile.new('unittest')
|
818
|
+
tf.puts("AUTO_DECLARE_TARGETS")
|
819
|
+
tf.puts("META_INIT #{meta.path}")
|
820
|
+
tf.close
|
821
|
+
System.class_variable_set(:@@instance, nil)
|
822
|
+
System.new(tf.path)
|
823
|
+
tlm = System.telemetry.packet("SYSTEM", "META")
|
824
|
+
expect(tlm.read("USER_VERSION")).to eql '4.5'
|
825
|
+
expect(tlm.read("TEST")).to eql 'hello'
|
826
|
+
expect(tlm.read("ID")).to eql 123456789
|
827
|
+
cmd = System.commands.packet("SYSTEM", "META")
|
828
|
+
expect(cmd.read("USER_VERSION")).to eql tlm.read("USER_VERSION")
|
829
|
+
expect(cmd.read("TEST")).to eql tlm.read("TEST")
|
830
|
+
expect(cmd.read("ID")).to eql tlm.read("ID")
|
831
|
+
tf.unlink
|
832
|
+
meta.unlink
|
833
|
+
FileUtils.rm_rf(File.join(@config_targets, 'SYSTEM'))
|
834
|
+
end
|
835
|
+
end
|
836
|
+
|
645
837
|
context "with ADD_MD5_FILE" do
|
646
838
|
it "takes 1 parameters" do
|
647
839
|
tf = Tempfile.new('unittest')
|
data/spec/system/target_spec.rb
CHANGED
@@ -132,13 +132,13 @@ module Cosmos
|
|
132
132
|
end
|
133
133
|
|
134
134
|
it "requires the file in the target lib directory over system lib" do
|
135
|
-
|
136
|
-
File.open(
|
135
|
+
filename1 = File.join(Cosmos::USERPATH, 'config', 'targets', 'INST', 'lib', 'tgt_file.rb')
|
136
|
+
File.open(filename1, 'w') do |file|
|
137
137
|
file.puts "class TgtLibFile"
|
138
138
|
file.puts "end"
|
139
139
|
end
|
140
|
-
|
141
|
-
File.open(
|
140
|
+
filename2 = File.join(Cosmos::USERPATH, 'lib', 'tgt_file.rb')
|
141
|
+
File.open(filename2, 'w') do |file|
|
142
142
|
file.puts "class SystemLibFile"
|
143
143
|
file.puts "end"
|
144
144
|
end
|
@@ -150,7 +150,8 @@ module Cosmos
|
|
150
150
|
expect { TgtLibFile.new }.to_not raise_error
|
151
151
|
expect(Object.const_defined?('TgtLibFile')).to be true
|
152
152
|
expect(Object.const_defined?('SystemLibFile')).to be false
|
153
|
-
File.delete
|
153
|
+
File.delete filename1
|
154
|
+
File.delete filename2
|
154
155
|
tf.unlink
|
155
156
|
end
|
156
157
|
|