cosmos 4.0.0 → 4.0.1
Sign up to get free protection for your applications and to get access to all the features.
- 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
@@ -14,25 +14,6 @@ module Cosmos
|
|
14
14
|
|
15
15
|
private
|
16
16
|
|
17
|
-
# Get a packet which was previously subscribed to by
|
18
|
-
# subscribe_packet_data. This method can block waiting for new packets or
|
19
|
-
# not based on the second parameter. It returns a single Cosmos::Packet instance
|
20
|
-
# and will return nil when no more packets are buffered (assuming non_block
|
21
|
-
# is false).
|
22
|
-
# Usage:
|
23
|
-
# get_packet(id, <true or false to block>)
|
24
|
-
def get_packet(id, non_block = false)
|
25
|
-
packet = nil
|
26
|
-
buffer, target_name, packet_name, received_time, received_count = get_packet_data(id, non_block)
|
27
|
-
if buffer
|
28
|
-
packet = System.telemetry.packet(target_name, packet_name).clone
|
29
|
-
packet.buffer = buffer
|
30
|
-
packet.received_time = received_time
|
31
|
-
packet.received_count = received_count
|
32
|
-
end
|
33
|
-
packet
|
34
|
-
end
|
35
|
-
|
36
17
|
# Creates a string with the parameters upcased
|
37
18
|
def _upcase(target_name, packet_name, item_name)
|
38
19
|
"#{target_name.upcase} #{packet_name.upcase} #{item_name.upcase}"
|
@@ -984,17 +965,8 @@ module Cosmos
|
|
984
965
|
|
985
966
|
def start_tlm_viewer
|
986
967
|
system_file = File.basename(System.initial_filename)
|
987
|
-
|
988
|
-
|
989
|
-
if Kernel.is_mac? && File.exist?(mac_app)
|
990
|
-
Cosmos.run_process("open '#{mac_app}' --args --system #{system_file}")
|
991
|
-
else
|
992
|
-
cmd = 'ruby'
|
993
|
-
cmd << 'w' if Kernel.is_windows? # Windows uses rubyw to avoid creating a DOS shell
|
994
|
-
Cosmos.run_process("#{cmd} '#{File.join(Cosmos::USERPATH, 'tools', 'TlmViewer')}' --system #{system_file}")
|
995
|
-
end
|
968
|
+
Cosmos.run_cosmos_tool('TlmViewer', "--system #{system_file}")
|
996
969
|
cosmos_script_sleep(1)
|
997
970
|
end
|
998
|
-
|
999
971
|
end
|
1000
972
|
end
|
@@ -9,7 +9,6 @@
|
|
9
9
|
# attribution addendums as found in the LICENSE.txt
|
10
10
|
|
11
11
|
module Cosmos
|
12
|
-
|
13
12
|
module Script
|
14
13
|
private
|
15
14
|
|
@@ -19,7 +18,7 @@ module Cosmos
|
|
19
18
|
# or
|
20
19
|
# tlm('target_name packet_name item_name')
|
21
20
|
def tlm(*args)
|
22
|
-
|
21
|
+
$cmd_tlm_server.tlm(*args)
|
23
22
|
end
|
24
23
|
|
25
24
|
# Poll for the raw value of a telemetry item
|
@@ -28,7 +27,7 @@ module Cosmos
|
|
28
27
|
# or
|
29
28
|
# tlm_raw('target_name packet_name item_name')
|
30
29
|
def tlm_raw(*args)
|
31
|
-
|
30
|
+
$cmd_tlm_server.tlm_raw(*args)
|
32
31
|
end
|
33
32
|
|
34
33
|
# Poll for the formatted value of a telemetry item
|
@@ -37,7 +36,7 @@ module Cosmos
|
|
37
36
|
# or
|
38
37
|
# tlm_formatted('target_name packet_name item_name')
|
39
38
|
def tlm_formatted(*args)
|
40
|
-
|
39
|
+
$cmd_tlm_server.tlm_formatted(*args)
|
41
40
|
end
|
42
41
|
|
43
42
|
# Poll for the formatted with units value of a telemetry item
|
@@ -46,11 +45,11 @@ module Cosmos
|
|
46
45
|
# or
|
47
46
|
# tlm_with_units('target_name packet_name item_name')
|
48
47
|
def tlm_with_units(*args)
|
49
|
-
|
48
|
+
$cmd_tlm_server.tlm_with_units(*args)
|
50
49
|
end
|
51
50
|
|
52
51
|
def tlm_variable(*args)
|
53
|
-
|
52
|
+
$cmd_tlm_server.tlm_variable(*args)
|
54
53
|
end
|
55
54
|
|
56
55
|
# Set a telemetry point to a given value. Note this will be over written in
|
@@ -60,7 +59,7 @@ module Cosmos
|
|
60
59
|
# or
|
61
60
|
# set_tlm("target_name packet_name item_name = value")
|
62
61
|
def set_tlm(*args)
|
63
|
-
|
62
|
+
$cmd_tlm_server.set_tlm(*args)
|
64
63
|
end
|
65
64
|
|
66
65
|
# Set the raw value of a telemetry point to a given value. Note this will
|
@@ -70,7 +69,7 @@ module Cosmos
|
|
70
69
|
# or
|
71
70
|
# set_tlm_raw("target_name packet_name item_name = value")
|
72
71
|
def set_tlm_raw(*args)
|
73
|
-
|
72
|
+
$cmd_tlm_server.set_tlm_raw(*args)
|
74
73
|
end
|
75
74
|
|
76
75
|
# Injects a packet into the system as if it was received from an interface
|
@@ -83,7 +82,7 @@ module Cosmos
|
|
83
82
|
# @param send_packet_log_writers[Boolean] Whether or not to send to the packet log writers for the target's interface
|
84
83
|
# @param create_new_logs[Boolean] Whether or not to create new log files before writing this packet to logs
|
85
84
|
def inject_tlm(target_name, packet_name, item_hash = nil, value_type = :CONVERTED, send_routers = true, send_packet_log_writers = true, create_new_logs = false)
|
86
|
-
|
85
|
+
$cmd_tlm_server.inject_tlm(target_name, packet_name, item_hash, value_type, send_routers, send_packet_log_writers, create_new_logs)
|
87
86
|
end
|
88
87
|
|
89
88
|
# Permanently set the converted value of a telemetry point to a given value
|
@@ -92,7 +91,7 @@ module Cosmos
|
|
92
91
|
# or
|
93
92
|
# override_tlm("target_name packet_name item_name = value")
|
94
93
|
def override_tlm(*args)
|
95
|
-
|
94
|
+
$cmd_tlm_server.override_tlm(*args)
|
96
95
|
end
|
97
96
|
|
98
97
|
# Permanently set the raw value of a telemetry point to a given value
|
@@ -101,7 +100,7 @@ module Cosmos
|
|
101
100
|
# or
|
102
101
|
# override_tlm_raw("target_name packet_name item_name = value")
|
103
102
|
def override_tlm_raw(*args)
|
104
|
-
|
103
|
+
$cmd_tlm_server.override_tlm_raw(*args)
|
105
104
|
end
|
106
105
|
|
107
106
|
# Clear an override of a telemetry point
|
@@ -110,7 +109,7 @@ module Cosmos
|
|
110
109
|
# or
|
111
110
|
# normalize_tlm("target_name packet_name item_name")
|
112
111
|
def normalize_tlm(*args)
|
113
|
-
|
112
|
+
$cmd_tlm_server.normalize_tlm(*args)
|
114
113
|
end
|
115
114
|
|
116
115
|
# Gets all the values from the given packet returned in a two dimensional
|
@@ -144,18 +143,18 @@ module Cosmos
|
|
144
143
|
# Gets the packets for a given target name. Returns an array of arrays
|
145
144
|
# consisting of packet names and packet descriptions.
|
146
145
|
def get_tlm_list(target_name)
|
147
|
-
|
146
|
+
$cmd_tlm_server.get_tlm_list(target_name)
|
148
147
|
end
|
149
148
|
|
150
149
|
# Gets all the telemetry mnemonics for a given target and packet. Returns an
|
151
150
|
# array of arrays consisting of item names, item states, and item descriptions.
|
152
151
|
def get_tlm_item_list(target_name, packet_name)
|
153
|
-
|
152
|
+
$cmd_tlm_server.get_tlm_item_list(target_name, packet_name)
|
154
153
|
end
|
155
154
|
|
156
155
|
# Gets the list of all defined targets.
|
157
156
|
def get_target_list
|
158
|
-
|
157
|
+
$cmd_tlm_server.get_target_list
|
159
158
|
end
|
160
159
|
|
161
160
|
def get_tlm_details(items)
|
@@ -164,7 +163,7 @@ module Cosmos
|
|
164
163
|
|
165
164
|
# Returns the buffer from the telemetry packet.
|
166
165
|
def get_tlm_buffer(target_name, packet_name)
|
167
|
-
|
166
|
+
$cmd_tlm_server.get_tlm_buffer(target_name, packet_name)
|
168
167
|
end
|
169
168
|
|
170
169
|
# Subscribe to one or more telemetry packets. The queue ID is returned for
|
@@ -172,8 +171,7 @@ module Cosmos
|
|
172
171
|
# Usage:
|
173
172
|
# id = subscribe_packet_data([[target_name,packet_name], ...], <queue_size>)
|
174
173
|
def subscribe_packet_data(packets, queue_size = CmdTlmServer::DEFAULT_PACKET_DATA_QUEUE_SIZE)
|
175
|
-
|
176
|
-
result
|
174
|
+
$cmd_tlm_server.subscribe_packet_data(packets, queue_size)
|
177
175
|
end
|
178
176
|
|
179
177
|
# Unsubscribe to telemetry packets. Pass the queue ID which was returned by
|
@@ -181,11 +179,10 @@ module Cosmos
|
|
181
179
|
# Usage:
|
182
180
|
# unsubscribe_packet_data(id)
|
183
181
|
def unsubscribe_packet_data(id)
|
184
|
-
|
185
|
-
result
|
182
|
+
$cmd_tlm_server.unsubscribe_packet_data(id)
|
186
183
|
end
|
187
184
|
|
188
|
-
# DEPRECATED
|
185
|
+
# DEPRECATED for Ruby APIs although still necessary
|
189
186
|
def get_packet_data(id, non_block = false)
|
190
187
|
results = $cmd_tlm_server.get_packet_data(id, non_block)
|
191
188
|
if Array === results and results[3] and results[4]
|
@@ -195,6 +192,25 @@ module Cosmos
|
|
195
192
|
results
|
196
193
|
end
|
197
194
|
|
195
|
+
# Get a packet which was previously subscribed to by
|
196
|
+
# subscribe_packet_data. This method can block waiting for new packets or
|
197
|
+
# not based on the second parameter. It returns a single Cosmos::Packet instance
|
198
|
+
# and will return nil when no more packets are buffered (assuming non_block
|
199
|
+
# is false).
|
200
|
+
# Usage:
|
201
|
+
# get_packet(id, <true or false to block>)
|
202
|
+
def get_packet(id, non_block = false)
|
203
|
+
packet = nil
|
204
|
+
# The get_packet_data above returns a Ruby time after the packet_name.
|
205
|
+
# This is different from the API.s
|
206
|
+
buffer, target_name, packet_name, time, rx_count = get_packet_data(id, non_block)
|
207
|
+
if buffer
|
208
|
+
packet = System.telemetry.packet(target_name, packet_name).clone
|
209
|
+
packet.buffer = buffer
|
210
|
+
packet.received_time = time
|
211
|
+
packet.received_count = rx_count
|
212
|
+
end
|
213
|
+
packet
|
214
|
+
end
|
198
215
|
end
|
199
216
|
end
|
200
|
-
|
data/lib/cosmos/system/system.rb
CHANGED
@@ -105,6 +105,7 @@ module Cosmos
|
|
105
105
|
@limits_set = :DEFAULT
|
106
106
|
@use_utc = false
|
107
107
|
@additional_md5_files = []
|
108
|
+
@meta_init_filename = nil
|
108
109
|
|
109
110
|
@ports = {}
|
110
111
|
@ports['CTS_API'] = 7777
|
@@ -150,7 +151,6 @@ module Cosmos
|
|
150
151
|
|
151
152
|
@initial_filename = filename
|
152
153
|
@initial_config = nil
|
153
|
-
@meta_init_filename = nil
|
154
154
|
@@instance = self
|
155
155
|
end
|
156
156
|
|
@@ -687,64 +687,27 @@ module Cosmos
|
|
687
687
|
def setup_system_meta
|
688
688
|
# Ensure SYSTEM META is defined and defined correctly
|
689
689
|
begin
|
690
|
+
if @commands.target_names.include?("SYSTEM")
|
691
|
+
pkts = @commands.packets('SYSTEM')
|
692
|
+
# User should not define COMMAND SYSTEM META as we build it to match TELEMETRY
|
693
|
+
raise "COMMAND SYSTEM META defined" if pkts.keys.include?('META')
|
694
|
+
end
|
690
695
|
tlm_meta = @telemetry.packet('SYSTEM', 'META')
|
691
|
-
cmd_meta = @commands.packet('SYSTEM', 'META')
|
692
696
|
item = tlm_meta.get_item('PKTID')
|
693
|
-
raise "PKTID
|
694
|
-
item = cmd_meta.get_item('PKTID')
|
695
|
-
raise "PKTID Incorrect" unless (item.bit_size == 8) && (item.bit_offset == 0)
|
697
|
+
raise "PKTID incorrect" unless (item.bit_size == 8) && (item.bit_offset == 0)
|
696
698
|
item = tlm_meta.get_item('CONFIG')
|
697
|
-
raise "CONFIG
|
698
|
-
item = cmd_meta.get_item('CONFIG')
|
699
|
-
raise "CONFIG Incorrect" unless (item.bit_size == 256) && (item.bit_offset == 8)
|
699
|
+
raise "CONFIG incorrect" unless (item.bit_size == 256) && (item.bit_offset == 8)
|
700
700
|
item = tlm_meta.get_item('COSMOS_VERSION')
|
701
|
-
raise "
|
702
|
-
item = cmd_meta.get_item('COSMOS_VERSION')
|
703
|
-
raise "CONFIG Incorrect" unless (item.bit_size == 240) && (item.bit_offset == 264)
|
701
|
+
raise "COSMOS_VERSION incorrect" unless (item.bit_size == 240) && (item.bit_offset == 264)
|
704
702
|
item = tlm_meta.get_item('USER_VERSION')
|
705
|
-
raise "
|
706
|
-
item = cmd_meta.get_item('USER_VERSION')
|
707
|
-
raise "CONFIG Incorrect" unless (item.bit_size == 240) && (item.bit_offset == 504)
|
703
|
+
raise "USER_VERSION incorrect" unless (item.bit_size == 240) && (item.bit_offset == 504)
|
708
704
|
item = tlm_meta.get_item('RUBY_VERSION')
|
709
|
-
raise "
|
710
|
-
|
711
|
-
|
712
|
-
|
713
|
-
|
714
|
-
|
715
|
-
cmd_meta = Packet.new('SYSTEM', 'META', :BIG_ENDIAN)
|
716
|
-
item = cmd_meta.append_item('PKTID', 8, :UINT, nil, :BIG_ENDIAN, :ERROR, nil, nil, nil, 1)
|
717
|
-
item.range = 1..1
|
718
|
-
item.default = 1
|
719
|
-
item.description = 'Packet Id'
|
720
|
-
item = cmd_meta.append_item('CONFIG', 32 * 8, :STRING)
|
721
|
-
item.default = ''
|
722
|
-
item.description = 'Configuration Name'
|
723
|
-
item = cmd_meta.append_item('COSMOS_VERSION', 30 * 8, :STRING)
|
724
|
-
item.default = ''
|
725
|
-
item.description = 'COSMOS Version'
|
726
|
-
item = cmd_meta.append_item('USER_VERSION', 30 * 8, :STRING)
|
727
|
-
item.default = ''
|
728
|
-
item.description = 'User Project Version'
|
729
|
-
item = cmd_meta.append_item('RUBY_VERSION', 30 * 8, :STRING)
|
730
|
-
item.default = ''
|
731
|
-
item.description = 'Ruby Version'
|
732
|
-
@config.commands['SYSTEM'] ||= {}
|
733
|
-
@config.commands['SYSTEM']['META'] = cmd_meta
|
734
|
-
|
735
|
-
tlm_meta = Packet.new('SYSTEM', 'META', :BIG_ENDIAN)
|
736
|
-
item = tlm_meta.append_item('PKTID', 8, :UINT, nil, :BIG_ENDIAN, :ERROR, nil, nil, nil, 1)
|
737
|
-
item.description = 'Packet Id'
|
738
|
-
item = tlm_meta.append_item('CONFIG', 32 * 8, :STRING)
|
739
|
-
item.description = 'Configuration Name'
|
740
|
-
item = tlm_meta.append_item('COSMOS_VERSION', 30 * 8, :STRING)
|
741
|
-
item.description = 'COSMOS Version'
|
742
|
-
item = tlm_meta.append_item('USER_VERSION', 30 * 8, :STRING)
|
743
|
-
item.description = 'User Project Version'
|
744
|
-
item = tlm_meta.append_item('RUBY_VERSION', 30 * 8, :STRING)
|
745
|
-
item.description = 'Ruby Version'
|
746
|
-
@config.telemetry['SYSTEM'] ||= {}
|
747
|
-
@config.telemetry['SYSTEM']['META'] = tlm_meta
|
705
|
+
raise "RUBY_VERSION incorrect" unless (item.bit_size == 240) && (item.bit_offset == 744)
|
706
|
+
cmd_meta = build_cmd_system_meta()
|
707
|
+
rescue => err
|
708
|
+
Logger.error "SYSTEM META not defined correctly due to #{err.message} - defaulting"
|
709
|
+
tlm_meta = build_tlm_system_meta()
|
710
|
+
cmd_meta = build_cmd_system_meta()
|
748
711
|
end
|
749
712
|
|
750
713
|
# Initialize the meta packet (if given init filename)
|
@@ -776,5 +739,40 @@ module Cosmos
|
|
776
739
|
|
777
740
|
cmd_meta.buffer = tlm_meta.buffer
|
778
741
|
end
|
742
|
+
|
743
|
+
def build_cmd_system_meta
|
744
|
+
cmd_meta = Packet.new('SYSTEM', 'META', :BIG_ENDIAN)
|
745
|
+
cmd_meta.disabled = true
|
746
|
+
tlm_meta = @telemetry.packet('SYSTEM', 'META')
|
747
|
+
tlm_meta.sorted_items.each do |item|
|
748
|
+
next if item.name.include?("RECEIVED") # Tlm only items
|
749
|
+
cmd_meta.define(item.clone)
|
750
|
+
end
|
751
|
+
@config.commands['SYSTEM'] ||= {}
|
752
|
+
@config.commands['SYSTEM']['META'] = cmd_meta
|
753
|
+
cmd_meta
|
754
|
+
end
|
755
|
+
|
756
|
+
def build_tlm_system_meta
|
757
|
+
tlm_meta = Packet.new('SYSTEM', 'META', :BIG_ENDIAN)
|
758
|
+
item = tlm_meta.append_item('PKTID', 8, :UINT, nil, :BIG_ENDIAN, :ERROR, nil, nil, nil, 1)
|
759
|
+
item.description = 'Packet Id'
|
760
|
+
item.meta["READ_ONLY"] = []
|
761
|
+
item = tlm_meta.append_item('CONFIG', 32 * 8, :STRING)
|
762
|
+
item.description = 'Configuration Name'
|
763
|
+
item.meta["READ_ONLY"] = []
|
764
|
+
item = tlm_meta.append_item('COSMOS_VERSION', 30 * 8, :STRING)
|
765
|
+
item.description = 'COSMOS Version'
|
766
|
+
item.meta["READ_ONLY"] = []
|
767
|
+
item = tlm_meta.append_item('USER_VERSION', 30 * 8, :STRING)
|
768
|
+
item.description = 'User Project Version'
|
769
|
+
item.meta["READ_ONLY"] = []
|
770
|
+
item = tlm_meta.append_item('RUBY_VERSION', 30 * 8, :STRING)
|
771
|
+
item.description = 'Ruby Version'
|
772
|
+
item.meta["READ_ONLY"] = []
|
773
|
+
@config.telemetry['SYSTEM'] ||= {}
|
774
|
+
@config.telemetry['SYSTEM']['META'] = tlm_meta
|
775
|
+
tlm_meta
|
776
|
+
end
|
779
777
|
end
|
780
778
|
end
|
@@ -532,10 +532,12 @@ module Cosmos
|
|
532
532
|
packet = cvt_packet.clone
|
533
533
|
packet.received_time = received_time
|
534
534
|
|
535
|
-
|
536
|
-
|
537
|
-
|
538
|
-
|
535
|
+
if item_hash
|
536
|
+
# Update the packet with item_hash
|
537
|
+
value_type = value_type.to_s.intern
|
538
|
+
item_hash.each do |item_name, item_value|
|
539
|
+
packet.write(item_name, item_value, value_type)
|
540
|
+
end
|
539
541
|
end
|
540
542
|
|
541
543
|
# Update current value table
|
@@ -945,6 +947,27 @@ module Cosmos
|
|
945
947
|
CmdTlmServer.get_packet_data(id, non_block)
|
946
948
|
end
|
947
949
|
|
950
|
+
# Get a packet which was previously subscribed to by
|
951
|
+
# subscribe_packet_data. This method can block waiting for new packets or
|
952
|
+
# not based on the second parameter. It returns a single Cosmos::Packet instance
|
953
|
+
# and will return nil when no more packets are buffered (assuming non_block
|
954
|
+
# is false).
|
955
|
+
# Usage:
|
956
|
+
# get_packet(id, <true or false to block>)
|
957
|
+
def get_packet(id, non_block = false)
|
958
|
+
packet = nil
|
959
|
+
# The get_packet_data in the CmdTlmServer returns the number of seconds
|
960
|
+
# followed by microseconds after the packet_name. This is different that the Script API.
|
961
|
+
buffer, target_name, packet_name, rx_sec, rx_usec, rx_count = get_packet_data(id, non_block)
|
962
|
+
if buffer
|
963
|
+
packet = System.telemetry.packet(target_name, packet_name).clone
|
964
|
+
packet.buffer = buffer
|
965
|
+
packet.received_time = Time.at(rx_sec, rx_usec).sys
|
966
|
+
packet.received_count = rx_count
|
967
|
+
end
|
968
|
+
packet
|
969
|
+
end
|
970
|
+
|
948
971
|
#
|
949
972
|
# Methods for scripting
|
950
973
|
#
|
@@ -137,13 +137,7 @@ module Cosmos
|
|
137
137
|
view_pv = Qt::PushButton.new("View in #{tool_name}")
|
138
138
|
view_pv.connect(SIGNAL('clicked()')) do
|
139
139
|
tool_name = tool_name.split.join.gsub("Command","Cmd") # remove space and convert name
|
140
|
-
|
141
|
-
Cosmos.run_process("rubyw tools/#{tool_name} -p \"#{target_name} #{packet_name}\" --system #{File.basename(System.initial_filename)}")
|
142
|
-
elsif Kernel.is_mac? and File.exist?("tools/mac/#{tool_name}.app")
|
143
|
-
Cosmos.run_process("open tools/mac/#{tool_name}.app --args -p \"#{target_name} #{packet_name}\" --system #{File.basename(System.initial_filename)}")
|
144
|
-
else
|
145
|
-
Cosmos.run_process("ruby tools/#{tool_name} -p \"#{target_name} #{packet_name}\" --system #{File.basename(System.initial_filename)}")
|
146
|
-
end
|
140
|
+
Cosmos.run_cosmos_tool(tool_name, "-p \"#{target_name} #{packet_name}\" --system #{File.basename(System.initial_filename)}")
|
147
141
|
end
|
148
142
|
table.setCellWidget(row, 4, view_pv)
|
149
143
|
else
|
@@ -75,7 +75,11 @@ module Cosmos
|
|
75
75
|
initialize_central_widget()
|
76
76
|
complete_initialize()
|
77
77
|
|
78
|
-
|
78
|
+
if options.filename
|
79
|
+
file_open(options.filename)
|
80
|
+
else
|
81
|
+
create_tab()
|
82
|
+
end
|
79
83
|
end
|
80
84
|
|
81
85
|
def initialize_actions
|
@@ -712,6 +716,10 @@ module Cosmos
|
|
712
716
|
options.height = 600
|
713
717
|
options.title = "Config Editor : #{UNTITLED}"
|
714
718
|
options.auto_size = false
|
719
|
+
option_parser.separator "Config Editor Specific Options:"
|
720
|
+
option_parser.on("-f", "--file FILENAME", "Open the specified configuration file") do |arg|
|
721
|
+
options.filename = arg
|
722
|
+
end
|
715
723
|
end
|
716
724
|
super(option_parser, options)
|
717
725
|
end
|