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
@@ -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
|