cosmos 4.4.1 → 4.5.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (160) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/build_v4.yml +33 -0
  3. data/Dockerfile +10 -4
  4. data/Gemfile +1 -1
  5. data/Manifest.txt +26 -2
  6. data/README.md +4 -1
  7. data/Rakefile +33 -27
  8. data/autohotkey/tools/cmd_extractor.ahk +11 -9
  9. data/autohotkey/tools/cmd_sender.ahk +1 -1
  10. data/autohotkey/tools/cmd_sequence.ahk +1 -1
  11. data/autohotkey/tools/data_viewer.ahk +1 -1
  12. data/autohotkey/tools/limits_monitor.ahk +1 -1
  13. data/autohotkey/tools/packet_viewer.ahk +1 -1
  14. data/autohotkey/tools/script_runner.ahk +1 -1
  15. data/autohotkey/tools/test_runner2.ahk +1 -1
  16. data/autohotkey/tools/tlm_grapher.ahk +1 -1
  17. data/autohotkey/tools/tlm_grapher3.ahk +1 -1
  18. data/autohotkey/tools/tlm_viewer.ahk +1 -1
  19. data/autohotkey/tools/tlm_viewer2.ahk +1 -1
  20. data/autohotkey/tools/tlm_viewer5.ahk +1 -1
  21. data/bin/rubysloc +73 -28
  22. data/bin/xtce_converter +1 -1
  23. data/cosmos.gemspec +6 -12
  24. data/data/config/interface_modifiers.yaml +3 -2
  25. data/data/config/system.yaml +81 -24
  26. data/data/crc.txt +435 -435
  27. data/demo/Rakefile +4 -4
  28. data/demo/config/data/crc.txt +250 -250
  29. data/demo/config/system/system.txt +15 -7
  30. data/demo/config/system/system2.txt +15 -7
  31. data/demo/config/system/system_alt_ports.txt +15 -7
  32. data/demo/config/targets/INST/cmd_tlm/inst_cmds.txt +1 -1
  33. data/demo/config/tools/handbook_creator/default_toc.xsl +59 -59
  34. data/ext/cosmos/ext/buffered_file/buffered_file.c +2 -2
  35. data/ext/cosmos/ext/config_parser/config_parser.c +1 -2
  36. data/ext/cosmos/ext/line_graph/line_graph.c +53 -94
  37. data/ext/cosmos/ext/packet/packet.c +0 -6
  38. data/ext/cosmos/ext/platform/platform.c +56 -21
  39. data/ext/cosmos/ext/polynomial_conversion/polynomial_conversion.c +4 -8
  40. data/ext/cosmos/ext/structure/structure.c +12 -0
  41. data/extensions/vscode/.gitignore +4 -0
  42. data/extensions/vscode/.vscode/launch.json +32 -0
  43. data/extensions/vscode/.vscode/settings.json +13 -0
  44. data/extensions/vscode/.vscode/tasks.json +79 -0
  45. data/extensions/vscode/License.txt +879 -0
  46. data/extensions/vscode/README.md +9 -0
  47. data/extensions/vscode/client/License.txt +879 -0
  48. data/extensions/vscode/client/README.md +39 -0
  49. data/extensions/vscode/client/cosmos.configuration.json +23 -0
  50. data/extensions/vscode/client/images/icon.png +0 -0
  51. data/extensions/vscode/client/package-lock.json +414 -0
  52. data/extensions/vscode/client/package.json +105 -0
  53. data/extensions/vscode/client/src/extension.ts +132 -0
  54. data/extensions/vscode/client/src/screen_preview.rb +25 -0
  55. data/extensions/vscode/client/syntaxes/cosmos.tmLanguage.json +219 -0
  56. data/extensions/vscode/client/tsconfig.json +17 -0
  57. data/extensions/vscode/package-lock.json +26 -0
  58. data/extensions/vscode/package.json +35 -0
  59. data/extensions/vscode/server/License.txt +879 -0
  60. data/extensions/vscode/server/package-lock.json +236 -0
  61. data/extensions/vscode/server/package.json +29 -0
  62. data/extensions/vscode/server/src/server.ts +59 -0
  63. data/extensions/vscode/server/tsconfig.json +16 -0
  64. data/install/Rakefile +4 -4
  65. data/install/config/data/crc.txt +145 -145
  66. data/install/config/system/system.txt +15 -7
  67. data/install/config/tools/handbook_creator/default_toc.xsl +59 -59
  68. data/lib/cosmos/config/config_parser.rb +2 -10
  69. data/lib/cosmos/core_ext/class.rb +10 -0
  70. data/lib/cosmos/core_ext/time.rb +5 -3
  71. data/lib/cosmos/dart/examples/dart_decom_client.rb +1 -1
  72. data/lib/cosmos/dart/lib/dart_common.rb +3 -3
  73. data/lib/cosmos/dart/lib/dart_decommutator.rb +4 -4
  74. data/lib/cosmos/dart/processes/dart_decom_server.rb +1 -1
  75. data/lib/cosmos/dart/processes/dart_master.rb +1 -1
  76. data/lib/cosmos/dart/spec/dart/dart_database_cleaner_spec.rb +2 -2
  77. data/lib/cosmos/gui/qt.rb +10 -10
  78. data/lib/cosmos/gui/qt_tool.rb +17 -12
  79. data/lib/cosmos/gui/text/completion_text_edit.rb +2 -0
  80. data/lib/cosmos/gui/widgets/dart_meta_frame.rb +1 -1
  81. data/lib/cosmos/interfaces/dart_status_interface.rb +1 -1
  82. data/lib/cosmos/interfaces/linc_interface.rb +3 -3
  83. data/lib/cosmos/interfaces/protocols/burst_protocol.rb +1 -1
  84. data/lib/cosmos/interfaces/protocols/crc_protocol.rb +1 -1
  85. data/lib/cosmos/interfaces/protocols/template_protocol.rb +3 -3
  86. data/lib/cosmos/interfaces/serial_interface.rb +7 -1
  87. data/lib/cosmos/interfaces/stream_interface.rb +1 -1
  88. data/lib/cosmos/interfaces/tcpip_server_interface.rb +16 -16
  89. data/lib/cosmos/io/io_multiplexer.rb +6 -2
  90. data/lib/cosmos/io/json_drb.rb +3 -11
  91. data/lib/cosmos/io/json_drb_object.rb +7 -2
  92. data/lib/cosmos/io/json_drb_rack.rb +25 -5
  93. data/lib/cosmos/io/json_rpc.rb +1 -1
  94. data/lib/cosmos/io/posix_serial_driver.rb +60 -22
  95. data/lib/cosmos/io/serial_driver.rb +11 -8
  96. data/lib/cosmos/io/win32_serial_driver.rb +8 -1
  97. data/lib/cosmos/packets/packet.rb +8 -8
  98. data/lib/cosmos/packets/packet_config.rb +1 -1
  99. data/lib/cosmos/packets/packet_item_limits.rb +2 -14
  100. data/lib/cosmos/packets/parsers/xtce_converter.rb +10 -10
  101. data/lib/cosmos/packets/parsers/xtce_parser.rb +3 -0
  102. data/lib/cosmos/packets/structure.rb +18 -5
  103. data/lib/cosmos/packets/structure_item.rb +4 -21
  104. data/lib/cosmos/script/api_shared.rb +18 -1
  105. data/lib/cosmos/script/extract.rb +1 -1
  106. data/lib/cosmos/script/script.rb +4 -11
  107. data/lib/cosmos/streams/serial_stream.rb +11 -6
  108. data/lib/cosmos/system/system.rb +47 -13
  109. data/lib/cosmos/tools/cmd_sender/cmd_param_table_item_delegate.rb +15 -0
  110. data/lib/cosmos/tools/cmd_sender/cmd_params.rb +25 -3
  111. data/lib/cosmos/tools/cmd_sender/cmd_sender.rb +7 -0
  112. data/lib/cosmos/tools/cmd_sequence/sequence_item.rb +0 -5
  113. data/lib/cosmos/tools/cmd_tlm_server/api.rb +10 -8
  114. data/lib/cosmos/tools/cmd_tlm_server/cmd_tlm_server.rb +2 -2
  115. data/lib/cosmos/tools/cmd_tlm_server/gui/logging_tab.rb +1 -1
  116. data/lib/cosmos/tools/cmd_tlm_server/interface_thread.rb +29 -26
  117. data/lib/cosmos/tools/cmd_tlm_server/limits_groups_background_task.rb +1 -1
  118. data/lib/cosmos/tools/cmd_tlm_server/router_thread.rb +5 -0
  119. data/lib/cosmos/tools/config_editor/config_editor.rb +1 -1
  120. data/lib/cosmos/tools/handbook_creator/handbook_creator.rb +1 -1
  121. data/lib/cosmos/tools/handbook_creator/handbook_creator_config.rb +1 -1
  122. data/lib/cosmos/tools/script_runner/script_runner_frame.rb +5 -2
  123. data/lib/cosmos/tools/test_runner/test.rb +1 -1
  124. data/lib/cosmos/tools/test_runner/test_runner.rb +4 -4
  125. data/lib/cosmos/tools/tlm_extractor/tlm_extractor.rb +3 -3
  126. data/lib/cosmos/tools/tlm_extractor/tlm_extractor_config.rb +1 -4
  127. data/lib/cosmos/tools/tlm_extractor/tlm_extractor_processor.rb +3 -3
  128. data/lib/cosmos/tools/tlm_grapher/tabbed_plots_tool/tabbed_plots_dart_thread.rb +1 -1
  129. data/lib/cosmos/tools/tlm_viewer/tlm_viewer.rb +2 -2
  130. data/lib/cosmos/tools/tlm_viewer/widgets/canvasdot_widget.rb +2 -0
  131. data/lib/cosmos/top_level.rb +1 -1
  132. data/lib/cosmos/utilities/simulated_target.rb +1 -1
  133. data/lib/cosmos/version.rb +5 -5
  134. data/make_gems.sh +1 -1
  135. data/spec/core_ext/class_spec.rb +54 -0
  136. data/spec/core_ext/time_spec.rb +4 -0
  137. data/spec/gui/qt_spec.rb +1 -1
  138. data/spec/gui/utilities/script_module_gui_spec.rb +1 -1
  139. data/spec/interfaces/linc_interface_spec.rb +1 -1
  140. data/spec/interfaces/serial_interface_spec.rb +1 -5
  141. data/spec/io/json_drb_rack_spec.rb +166 -0
  142. data/spec/io/json_rpc_spec.rb +4 -5
  143. data/spec/io/posix_serial_driver_spec.rb +87 -0
  144. data/spec/io/win32_serial_driver_spec.rb +17 -1
  145. data/spec/packet_logs/packet_log_reader_spec.rb +34 -35
  146. data/spec/packets/packet_item_limits_spec.rb +6 -33
  147. data/spec/packets/structure_item_spec.rb +3 -21
  148. data/spec/script/extract_spec.rb +4 -1
  149. data/spec/system/system_spec.rb +109 -1
  150. data/spec/tools/cmd_tlm_server/api_spec.rb +12 -12
  151. data/spec/tools/cmd_tlm_server/background_tasks_spec.rb +2 -2
  152. data/spec/tools/cmd_tlm_server/interface_thread_spec.rb +4 -3
  153. data/spec/tools/cmd_tlm_server/router_thread_spec.rb +2 -3
  154. data/spec/top_level/top_level_spec.rb +2 -2
  155. data/spec/utilities/logger_spec.rb +3 -3
  156. data/test/performance/Rakefile +4 -4
  157. data/test/performance/config/data/crc.txt +67 -48
  158. metadata +59 -9
  159. data/.coveralls.yml +0 -1
  160. data/.travis.yml +0 -16
@@ -84,25 +84,11 @@ module Cosmos
84
84
  end
85
85
 
86
86
  it "complains about persistence_setting = nil" do
87
- if 0.class == Integer
88
- # Ruby version >= 2.4.0
89
- expect { @l.persistence_setting = nil}.to raise_error(ArgumentError, "persistence_setting must be an Integer but is a NilClass")
90
- else
91
- # Ruby version < 2.4.0
92
- expect { @l.persistence_setting = nil}.to raise_error(ArgumentError, "persistence_setting must be a Fixnum but is a NilClass")
93
- end
87
+ expect { @l.persistence_setting = nil}.to raise_error(ArgumentError, "persistence_setting must be an Integer but is a NilClass")
94
88
  end
95
89
 
96
- if 0.class == Integer
97
- # Ruby version >= 2.4.0
98
- it "complains about persistence_setting that aren't Integer" do
99
- expect { @l.persistence_setting = 5.5}.to raise_error(ArgumentError, "persistence_setting must be an Integer but is a Float")
100
- end
101
- else
102
- # Ruby version < 2.4.0
103
- it "complains about persistence_setting that aren't Fixnum" do
104
- expect { @l.persistence_setting = 5.5}.to raise_error(ArgumentError, "persistence_setting must be a Fixnum but is a Float")
105
- end
90
+ it "complains about persistence_setting that aren't Integer" do
91
+ expect { @l.persistence_setting = 5.5}.to raise_error(ArgumentError, "persistence_setting must be an Integer but is a Float")
106
92
  end
107
93
  end
108
94
 
@@ -114,24 +100,11 @@ module Cosmos
114
100
  end
115
101
 
116
102
  it "complains about persistence_count = nil" do
117
- if 0.class == Integer
118
- # Ruby version >= 2.4.0
119
- expect { @l.persistence_count = nil}.to raise_error(ArgumentError, "persistence_count must be an Integer but is a NilClass")
120
- else
121
- # Ruby version < 2.4.0
122
- expect { @l.persistence_count = nil}.to raise_error(ArgumentError, "persistence_count must be a Fixnum but is a NilClass")
123
- end
103
+ expect { @l.persistence_count = nil}.to raise_error(ArgumentError, "persistence_count must be an Integer but is a NilClass")
124
104
  end
125
105
 
126
- if 0.class == Integer
127
- it "complains about persistence_count that aren't Integer" do
128
- expect { @l.persistence_count = 5.5}.to raise_error(ArgumentError, "persistence_count must be an Integer but is a Float")
129
- end
130
- else
131
- # Ruby version < 2.4.0
132
- it "complains about persistence_count that aren't Fixnum" do
133
- expect { @l.persistence_count = 5.5}.to raise_error(ArgumentError, "persistence_count must be a Fixnum but is a Float")
134
- end
106
+ it "complains about persistence_count that aren't Integer" do
107
+ expect { @l.persistence_count = 5.5}.to raise_error(ArgumentError, "persistence_count must be an Integer but is a Float")
135
108
  end
136
109
  end
137
110
 
@@ -69,13 +69,7 @@ module Cosmos
69
69
 
70
70
  describe "bit_offset=" do
71
71
  it "compains about bad bit offsets types" do
72
- if 0.class == Integer
73
- # Ruby version >= 2.4.0
74
- expect { StructureItem.new("test", nil, 8, :UINT, :BIG_ENDIAN, nil) }.to raise_error(ArgumentError, "TEST: bit_offset must be an Integer")
75
- else
76
- # Ruby version < 2.4.0
77
- expect { StructureItem.new("test", nil, 8, :UINT, :BIG_ENDIAN, nil) }.to raise_error(ArgumentError, "TEST: bit_offset must be a Fixnum")
78
- end
72
+ expect { StructureItem.new("test", nil, 8, :UINT, :BIG_ENDIAN, nil) }.to raise_error(ArgumentError, "TEST: bit_offset must be an Integer")
79
73
  end
80
74
 
81
75
  it "complains about unaligned bit offsets" do
@@ -91,13 +85,7 @@ module Cosmos
91
85
 
92
86
  describe "bit_size=" do
93
87
  it "complains about bad bit sizes types" do
94
- if 0.class == Integer
95
- # Ruby version >= 2.4.0
96
- expect { StructureItem.new("test", 0, nil, :UINT, :BIG_ENDIAN, nil) }.to raise_error(ArgumentError, "TEST: bit_size must be an Integer")
97
- else
98
- # Ruby version < 2.4.0
99
- expect { StructureItem.new("test", 0, nil, :UINT, :BIG_ENDIAN, nil) }.to raise_error(ArgumentError, "TEST: bit_size must be a Fixnum")
100
- end
88
+ expect { StructureItem.new("test", 0, nil, :UINT, :BIG_ENDIAN, nil) }.to raise_error(ArgumentError, "TEST: bit_size must be an Integer")
101
89
  end
102
90
 
103
91
  it "complains about 0 size INT, UINT, and FLOAT" do
@@ -122,13 +110,7 @@ module Cosmos
122
110
 
123
111
  describe "array_size=" do
124
112
  it "complains about bad array size types" do
125
- if 0.class == Integer
126
- # Ruby version >= 2.4.0
127
- expect { StructureItem.new("test", 0, 8, :UINT, :BIG_ENDIAN, "") }.to raise_error(ArgumentError, "TEST: array_size must be an Integer")
128
- else
129
- # Ruby version < 2.4.0
130
- expect { StructureItem.new("test", 0, 8, :UINT, :BIG_ENDIAN, "") }.to raise_error(ArgumentError, "TEST: array_size must be a Fixnum")
131
- end
113
+ expect { StructureItem.new("test", 0, 8, :UINT, :BIG_ENDIAN, "") }.to raise_error(ArgumentError, "TEST: array_size must be an Integer")
132
114
  end
133
115
 
134
116
  it "complains about array size != multiple of bit size" do
@@ -148,6 +148,10 @@ module Cosmos
148
148
  expect(extract_fields_from_check_text("TARGET PACKET ITEM < 5")).to eql(['TARGET', 'PACKET', 'ITEM', '< 5'])
149
149
  end
150
150
 
151
+ it "should support target packet items named the same" do
152
+ expect(extract_fields_from_check_text("TEST TEST TEST == 5")).to eql(['TEST', 'TEST', 'TEST', '== 5'])
153
+ end
154
+
151
155
  it "should complain about trying to do an = comparison" do
152
156
  expect { extract_fields_from_check_text("TARGET PACKET ITEM = 5") }.to raise_error(/ERROR: Use/)
153
157
  end
@@ -160,4 +164,3 @@ module Cosmos
160
164
 
161
165
  end
162
166
  end
163
-
@@ -359,7 +359,7 @@ module Cosmos
359
359
  expect(System.telemetry.packets('SYSTEM').keys).not_to include "TEST2"
360
360
 
361
361
  # Now remove system.txt from the third configuration and try to load it again to cause an error
362
- #third_config_path = System.instance.send(:find_configuration, third_config_name)
362
+ #third_config_path = System.instance.public_send(:find_configuration, third_config_name)
363
363
  #FileUtils.mv File.join(third_config_path, 'system.txt'), File.join(third_config_path, 'system2.txt')
364
364
  #result, err = System.load_configuration(third_config_name)
365
365
  #expect(result).to eql original_config_name
@@ -703,6 +703,114 @@ module Cosmos
703
703
  end
704
704
  end
705
705
 
706
+ context "with ALLOW_ROUTER_COMMANDING" do
707
+ it "takes 0 parameters" do
708
+ tf = Tempfile.new('unittest')
709
+ tf.puts("ALLOW_ROUTER_COMMANDING BLAH TRUE")
710
+ tf.close
711
+ expect { System.instance.process_file(tf.path) }.to raise_error(ConfigParser::Error, /Too many parameters for ALLOW_ROUTER_COMMANDING./)
712
+ tf.unlink
713
+ end
714
+
715
+ it "allows router commanding" do
716
+ tf = Tempfile.new('unittest')
717
+ tf.puts("ALLOW_ROUTER_COMMANDING")
718
+ tf.close
719
+ expect(System.allow_router_commanding).to be false
720
+ System.instance.process_file(tf.path)
721
+ expect(System.allow_router_commanding).to be true
722
+ tf.unlink
723
+ end
724
+
725
+ it "it disallows router commanding if not present" do
726
+ tf = Tempfile.new('unittest')
727
+
728
+ tf.close
729
+ expect(System.allow_router_commanding).to be false
730
+ System.instance.process_file(tf.path)
731
+ expect(System.allow_router_commanding).to be false
732
+ tf.unlink
733
+ end
734
+ end
735
+
736
+ context "with X_CSRF_TOKEN" do
737
+ it "takes 1 parameters" do
738
+ tf = Tempfile.new('unittest')
739
+ tf.puts("X_CSRF_TOKEN")
740
+ tf.close
741
+ expect { System.instance.process_file(tf.path) }.to raise_error(ConfigParser::Error, /Not enough parameters for X_CSRF_TOKEN./)
742
+ tf.unlink
743
+
744
+ tf = Tempfile.new('unittest')
745
+ tf.puts("X_CSRF_TOKEN localhost true")
746
+ tf.close
747
+ expect { System.instance.process_file(tf.path) }.to raise_error(ConfigParser::Error, /Too many parameters for X_CSRF_TOKEN./)
748
+ tf.unlink
749
+ end
750
+
751
+ it "updates the CSRF token" do
752
+ tf = Tempfile.new('unittest')
753
+ tf.puts("X_CSRF_TOKEN ExtraSpecial")
754
+ tf.close
755
+ expect(System.x_csrf_token).to eql "SuperSecret"
756
+ System.instance.process_file(tf.path)
757
+ expect(System.x_csrf_token).to eql "ExtraSpecial"
758
+ tf.unlink
759
+ end
760
+ end
761
+
762
+ context "with ALLOW_HOST" do
763
+ it "takes 1 parameters" do
764
+ tf = Tempfile.new('unittest')
765
+ tf.puts("ALLOW_HOST")
766
+ tf.close
767
+ expect { System.instance.process_file(tf.path) }.to raise_error(ConfigParser::Error, /Not enough parameters for ALLOW_HOST./)
768
+ tf.unlink
769
+
770
+ tf = Tempfile.new('unittest')
771
+ tf.puts("ALLOW_HOST localhost true")
772
+ tf.close
773
+ expect { System.instance.process_file(tf.path) }.to raise_error(ConfigParser::Error, /Too many parameters for ALLOW_HOST./)
774
+ tf.unlink
775
+ end
776
+
777
+ it "adds to allowed hosts" do
778
+ tf = Tempfile.new('unittest')
779
+ tf.puts("ALLOW_HOST 1.2.3.4:8888")
780
+ tf.close
781
+ expect(System.allowed_hosts).to_not include("1.2.3.4:8888")
782
+ System.instance.process_file(tf.path)
783
+ expect(System.allowed_hosts).to include("1.2.3.4:8888")
784
+ tf.unlink
785
+ end
786
+ end
787
+
788
+ context "with ALLOW_ORIGIN" do
789
+ it "takes 1 parameters" do
790
+ tf = Tempfile.new('unittest')
791
+ tf.puts("ALLOW_ORIGIN")
792
+ tf.close
793
+ expect { System.instance.process_file(tf.path) }.to raise_error(ConfigParser::Error, /Not enough parameters for ALLOW_ORIGIN./)
794
+ tf.unlink
795
+
796
+ tf = Tempfile.new('unittest')
797
+ tf.puts("ALLOW_ORIGIN localhost true")
798
+ tf.close
799
+ expect { System.instance.process_file(tf.path) }.to raise_error(ConfigParser::Error, /Too many parameters for ALLOW_ORIGIN./)
800
+ tf.unlink
801
+ end
802
+
803
+ it "adds to allowed origins" do
804
+ tf = Tempfile.new('unittest')
805
+ tf.puts("ALLOW_ORIGIN 1.2.3.4:8888")
806
+ tf.close
807
+ expect(System.allowed_origins).to_not include("1.2.3.4:8888")
808
+ System.instance.process_file(tf.path)
809
+ expect(System.allowed_origins).to include("1.2.3.4:8888")
810
+ tf.unlink
811
+ end
812
+ end
813
+
706
814
  context "with ALLOW_ACCESS" do
707
815
  it "takes 1 parameters" do
708
816
  tf = Tempfile.new('unittest')
@@ -102,12 +102,12 @@ DOC
102
102
  end
103
103
 
104
104
  def test_cmd_unknown(method)
105
- expect { @api.send(method,"BLAH COLLECT with TYPE NORMAL") }.to raise_error(/does not exist/)
106
- expect { @api.send(method,"INST UNKNOWN with TYPE NORMAL") }.to raise_error(/does not exist/)
107
- expect { @api.send(method,"INST COLLECT with BLAH NORMAL") }.to raise_error(/does not exist/)
108
- expect { @api.send(method,"BLAH","COLLECT","TYPE"=>"NORMAL") }.to raise_error(/does not exist/)
109
- expect { @api.send(method,"INST","UNKNOWN","TYPE"=>"NORMAL") }.to raise_error(/does not exist/)
110
- expect { @api.send(method,"INST","COLLECT","BLAH"=>"NORMAL") }.to raise_error(/does not exist/)
105
+ expect { @api.public_send(method,"BLAH COLLECT with TYPE NORMAL") }.to raise_error(/does not exist/)
106
+ expect { @api.public_send(method,"INST UNKNOWN with TYPE NORMAL") }.to raise_error(/does not exist/)
107
+ expect { @api.public_send(method,"INST COLLECT with BLAH NORMAL") }.to raise_error(/does not exist/)
108
+ expect { @api.public_send(method,"BLAH","COLLECT","TYPE"=>"NORMAL") }.to raise_error(/does not exist/)
109
+ expect { @api.public_send(method,"INST","UNKNOWN","TYPE"=>"NORMAL") }.to raise_error(/does not exist/)
110
+ expect { @api.public_send(method,"INST","COLLECT","BLAH"=>"NORMAL") }.to raise_error(/does not exist/)
111
111
  end
112
112
 
113
113
  describe "cmd" do
@@ -571,12 +571,12 @@ DOC
571
571
  end
572
572
 
573
573
  def test_tlm_unknown(method)
574
- expect { @api.send(method,"BLAH HEALTH_STATUS COLLECTS") }.to raise_error(/does not exist/)
575
- expect { @api.send(method,"INST UNKNOWN COLLECTS") }.to raise_error(/does not exist/)
576
- expect { @api.send(method,"INST HEALTH_STATUS BLAH") }.to raise_error(/does not exist/)
577
- expect { @api.send(method,"BLAH","HEALTH_STATUS","COLLECTS") }.to raise_error(/does not exist/)
578
- expect { @api.send(method,"INST","UNKNOWN","COLLECTS") }.to raise_error(/does not exist/)
579
- expect { @api.send(method,"INST","HEALTH_STATUS","BLAH") }.to raise_error(/does not exist/)
574
+ expect { @api.public_send(method,"BLAH HEALTH_STATUS COLLECTS") }.to raise_error(/does not exist/)
575
+ expect { @api.public_send(method,"INST UNKNOWN COLLECTS") }.to raise_error(/does not exist/)
576
+ expect { @api.public_send(method,"INST HEALTH_STATUS BLAH") }.to raise_error(/does not exist/)
577
+ expect { @api.public_send(method,"BLAH","HEALTH_STATUS","COLLECTS") }.to raise_error(/does not exist/)
578
+ expect { @api.public_send(method,"INST","UNKNOWN","COLLECTS") }.to raise_error(/does not exist/)
579
+ expect { @api.public_send(method,"INST","HEALTH_STATUS","BLAH") }.to raise_error(/does not exist/)
580
580
  end
581
581
 
582
582
  describe "tlm" do
@@ -165,7 +165,7 @@ module Cosmos
165
165
  expect(running_threads.length).to eql(2)
166
166
  expect(bt.instance_variable_get("@threads").length).to eq 1
167
167
  expect(bt.instance_variable_get("@threads")[0].alive?).to eq true
168
- sleep 1.1 # Allow the thread to crash
168
+ sleep 2 # Allow the thread to crash
169
169
  expect(running_threads.length).to eql(1)
170
170
  expect(bt.instance_variable_get("@threads")[0]).to be_nil
171
171
  expect(stdout.string).to match("unexpectedly died")
@@ -178,7 +178,7 @@ module Cosmos
178
178
  expect(running_threads.length).to eql(2)
179
179
  expect(bt.instance_variable_get("@threads").length).to eq 1
180
180
  expect(bt.instance_variable_get("@threads")[0].alive?).to eq true
181
- sleep 1.1 # Allow the thread to crash
181
+ sleep 2 # Allow the thread to crash
182
182
  expect(running_threads.length).to eql(1)
183
183
  expect(bt.instance_variable_get("@threads")[0]).to be_nil
184
184
  expect(stdout.string).to match("unexpectedly died")
@@ -39,8 +39,8 @@ module Cosmos
39
39
  @packet
40
40
  end
41
41
 
42
- allow(System).to receive_message_chain(:telemetry,:identify!).and_return(nil)
43
- allow(System).to receive_message_chain(:telemetry,:update!).and_return(@packet)
42
+ allow(System).to receive_message_chain(:telemetry,:packet).and_return(@packet)
43
+ allow(System).to receive_message_chain(:telemetry,:identify).and_return(nil)
44
44
  allow(System).to receive_message_chain(:telemetry,:identify_and_define_packet).and_return(@packet)
45
45
  targets = {'TGT'=>Target.new('TGT')}
46
46
  allow(System).to receive(:targets).and_return(targets)
@@ -237,6 +237,7 @@ module Cosmos
237
237
  it "handles unidentified packets" do
238
238
  capture_io do |stdout|
239
239
  @packet = Packet.new(nil,nil)
240
+ @packet.buffer = "\x01\x02"
240
241
  thread = InterfaceThread.new(@interface)
241
242
  thread.start
242
243
  sleep 0.1
@@ -253,7 +254,7 @@ module Cosmos
253
254
  capture_io do |stdout|
254
255
  @packet.target_name = 'BOB'
255
256
  @packet.packet_name = 'SMITH'
256
- allow(System).to receive_message_chain(:telemetry,:update!).and_raise(RuntimeError)
257
+ allow(System).to receive_message_chain(:telemetry,:packet).and_raise(RuntimeError)
257
258
  thread = InterfaceThread.new(@interface)
258
259
  thread.start
259
260
  sleep 0.1
@@ -20,7 +20,7 @@ module Cosmos
20
20
  before(:each) do
21
21
  @packet = Packet.new('TGT','PKT')
22
22
  @packet.buffer = "\x01\x02"
23
-
23
+ System.instance.instance_variable_set(:@allow_router_commanding, true)
24
24
  @interface = Interface.new
25
25
  # Interface#connected? implemented in each test case
26
26
  allow(@interface).to receive(:connect)
@@ -32,7 +32,7 @@ module Cosmos
32
32
  end
33
33
 
34
34
  describe "handle_packet" do
35
- it "handles disconnectd interfaces" do
35
+ it "handles disconnected interfaces" do
36
36
  allow(@interface).to receive(:connected?).and_return(false)
37
37
  @interface.interfaces = [@interface]
38
38
  thread = RouterThread.new(@interface)
@@ -148,4 +148,3 @@ module Cosmos
148
148
  end
149
149
  end
150
150
  end
151
-
@@ -520,7 +520,7 @@ module Cosmos
520
520
 
521
521
  describe "open_file_browser" do
522
522
  it "opens a file browser" do
523
- unless ENV['TRAVIS']
523
+ unless ENV['CI']
524
524
  expect(Cosmos).to receive(:system).with(/#{Dir.pwd}/)
525
525
  Cosmos.open_file_browser(Dir.pwd)
526
526
  end
@@ -529,7 +529,7 @@ module Cosmos
529
529
 
530
530
  describe "open_in_text_editor" do
531
531
  it "opens the file in a text editor" do
532
- unless ENV['TRAVIS']
532
+ unless ENV['CI']
533
533
  expect(Cosmos).to receive(:system).with(/#{File.basename(__FILE__)}/)
534
534
  Cosmos.open_in_text_editor(__FILE__)
535
535
  end
@@ -33,11 +33,11 @@ module Cosmos
33
33
  $stdout = stdout
34
34
  Logger.level = level
35
35
  if block
36
- Logger.send(method, "Message1") { "Block1" }
36
+ Logger.public_send(method, "Message1") { "Block1" }
37
37
  expect(stdout.string).not_to match("Message1")
38
38
  expect(stdout.string).to match("#{method.upcase}: Block1")
39
39
  else
40
- Logger.send(method, "Message1")
40
+ Logger.public_send(method, "Message1")
41
41
  expect(stdout.string).to match("#{method.upcase}: Message1")
42
42
  end
43
43
  Logger::instance.level = level + 1
@@ -46,7 +46,7 @@ module Cosmos
46
46
  expect(stdout.string).not_to match("Message2")
47
47
  expect(stdout.string).not_to match("Block2")
48
48
  else
49
- Logger.send(method, "Message2")
49
+ Logger.public_send(method, "Message2")
50
50
  expect(stdout.string).not_to match("Message2")
51
51
  end
52
52
  $stdout = STDOUT
@@ -35,14 +35,14 @@ def create_crc_file(official)
35
35
  crc = Cosmos::Crc32.new(Cosmos::Crc32::DEFAULT_POLY, Cosmos::Crc32::DEFAULT_SEED, true, false)
36
36
  File.open("config/data/crc.txt",'w') do |file|
37
37
  file.puts "USER_MODIFIED" unless official
38
- Dir[File.join('lib','**','*')].each do |filename|
38
+ Dir[File.join('lib','**','*')].sort.each do |filename|
39
39
  next if File.directory?(filename)
40
40
  next if ignore.include?(filename)
41
41
  file_data = File.open(filename, 'rb').read.gsub("\x0D\x0A", "\x0A")
42
42
  file.puts "\"#{filename}\" #{sprintf("0x%08X", crc.calc(file_data))}"
43
43
  count += 1
44
44
  end
45
- Dir[File.join('config','**','*')].each do |filename|
45
+ Dir[File.join('config','**','*')].sort.each do |filename|
46
46
  next if File.directory?(filename)
47
47
  next if ignore.include?(filename)
48
48
  next if File.basename(filename) == 'crc.txt'
@@ -50,14 +50,14 @@ def create_crc_file(official)
50
50
  file.puts "\"#{filename}\" #{sprintf("0x%08X", crc.calc(file_data))}"
51
51
  count += 1
52
52
  end
53
- Dir[File.join('tools','**','*')].each do |filename|
53
+ Dir[File.join('tools','**','*')].sort.each do |filename|
54
54
  next if File.directory?(filename)
55
55
  next if ignore.include?(filename)
56
56
  file_data = File.open(filename, 'rb').read.gsub("\x0D\x0A", "\x0A")
57
57
  file.puts "\"#{filename}\" #{sprintf("0x%08X", crc.calc(file_data))}"
58
58
  count += 1
59
59
  end
60
- Dir[File.join('procedures','**','*')].each do |filename|
60
+ Dir[File.join('procedures','**','*')].sort.each do |filename|
61
61
  next if File.directory?(filename)
62
62
  next if ignore.include?(filename)
63
63
  file_data = File.open(filename, 'rb').read.gsub("\x0D\x0A", "\x0A")
@@ -1,5 +1,6 @@
1
1
  "lib/packet_target.rb" 0x59C31C58
2
- "lib/thread_target.rb" 0x09C820AD
2
+ "lib/thread_target.rb" 0x6A2E93AF
3
+ "lib/user_version.rb" 0x8F282EE9
3
4
  "config/data/attitude.bin" 0xB6D17289
4
5
  "config/data/diamond.STL" 0xA96E4846
5
6
  "config/data/groundoff.gif" 0x7BA45A4D
@@ -16,8 +17,9 @@
16
17
  "config/data/tada.wav" 0x1ABCFFD1
17
18
  "config/data/vswitchoff.gif" 0xFAE436C9
18
19
  "config/data/vswitchon.gif" 0xD747AC45
19
- "config/system/system_packets.txt" 0xDA665B50
20
- "config/system/system_threads.txt" 0x20F6E744
20
+ "config/system/system.txt" 0x00000000
21
+ "config/system/system_packets.txt" 0xD7719176
22
+ "config/system/system_threads.txt" 0x345E358A
21
23
  "config/targets/COSMOS/cmd_tlm/cosmos_server_cmds.txt" 0x9589CE1D
22
24
  "config/targets/COSMOS/cmd_tlm/cosmos_server_tlm.txt" 0xC667CCD6
23
25
  "config/targets/COSMOS/cmd_tlm_server.txt" 0xE53A4164
@@ -25,22 +27,38 @@
25
27
  "config/targets/COSMOS/screens/version.txt" 0x393D4F72
26
28
  "config/targets/COSMOS/target.txt" 0xB39D9281
27
29
  "config/targets/PACKET/cmd_tlm/packet_cmds.txt" 0xAF042065
28
- "config/targets/PACKET/cmd_tlm/packet_tlm.txt" 0x03795B48
30
+ "config/targets/PACKET/cmd_tlm/packet_tlm.txt" 0x2FCD6766
29
31
  "config/targets/PACKET/cmd_tlm_server.txt" 0x7C18BA09
30
32
  "config/targets/PACKET/lib/packet_interface.rb" 0x0BC1909F
31
33
  "config/targets/PACKET/lib/packet_limits_response.rb" 0xA427D78E
32
34
  "config/targets/PACKET/screens/status.txt" 0xD9B1DD08
33
35
  "config/targets/PACKET/target.txt" 0x0B0338E4
34
36
  "config/targets/SYSTEM/screens/status.txt" 0x89B616E5
35
- "config/targets/THREAD/cmd_tlm/thread_cmds.txt" 0x8D82A34C
36
- "config/targets/THREAD/cmd_tlm/thread_tlm.txt" 0xAF01DDA9
37
- "config/targets/THREAD/cmd_tlm_server.txt" 0x37AE20AF
37
+ "config/targets/THREAD/cmd_tlm/thread_cmds.txt" 0xE0E86176
38
+ "config/targets/THREAD/cmd_tlm/thread_tlm.txt" 0xA9255BD2
39
+ "config/targets/THREAD/cmd_tlm_server.txt" 0xA2C09F15
38
40
  "config/targets/THREAD/lib/thread_interface.rb" 0x82FB49D8
39
41
  "config/targets/THREAD/screens/status.txt" 0xD9B1DD08
40
42
  "config/targets/THREAD/target.txt" 0x4ED5B5BC
41
43
  "config/tools/cmd_tlm_server/cmd_tlm_server_packets.txt" 0x35E7315D
42
- "config/tools/cmd_tlm_server/cmd_tlm_server_threads.txt" 0xBDC1510D
44
+ "config/tools/cmd_tlm_server/cmd_tlm_server_threads.txt" 0x7781DEEA
43
45
  "config/tools/data_viewer/data_viewer.txt" 0xCAC3B017
46
+ "config/tools/handbook_creator/assets/css/bootstrap-theme.css" 0x446F3211
47
+ "config/tools/handbook_creator/assets/css/bootstrap-theme.min.css" 0xB49F966D
48
+ "config/tools/handbook_creator/assets/css/bootstrap.css" 0x3F240B56
49
+ "config/tools/handbook_creator/assets/css/bootstrap.min.css" 0x1BD3585F
50
+ "config/tools/handbook_creator/assets/fonts/glyphicons-halflings-regular.eot" 0x50687BA4
51
+ "config/tools/handbook_creator/assets/fonts/glyphicons-halflings-regular.svg" 0x068A502C
52
+ "config/tools/handbook_creator/assets/fonts/glyphicons-halflings-regular.ttf" 0x063128D6
53
+ "config/tools/handbook_creator/assets/fonts/glyphicons-halflings-regular.woff" 0x946BFB8C
54
+ "config/tools/handbook_creator/assets/img/ball_logo.bmp" 0xAD799C2E
55
+ "config/tools/handbook_creator/assets/img/ball_logo.gif" 0xD8A3D76B
56
+ "config/tools/handbook_creator/assets/img/ball_logo.jpg" 0xA15FB300
57
+ "config/tools/handbook_creator/assets/js/bootstrap.js" 0x013B0300
58
+ "config/tools/handbook_creator/assets/js/bootstrap.min.js" 0xB3ECDABF
59
+ "config/tools/handbook_creator/assets/js/html5shiv.js" 0x15B5CD4D
60
+ "config/tools/handbook_creator/assets/js/jquery-1.10.2.min.js" 0xCDB86103
61
+ "config/tools/handbook_creator/assets/js/respond.min.js" 0xD9168C21
44
62
  "config/tools/handbook_creator/default_toc.xsl" 0x4122A040
45
63
  "config/tools/handbook_creator/handbook_creator.txt" 0xAA806C94
46
64
  "config/tools/handbook_creator/templates/command_packets.html.erb" 0x9897CA7A
@@ -57,7 +75,7 @@
57
75
  "config/tools/handbook_creator/templates/telemetry_toc.html.erb" 0x610E3BC5
58
76
  "config/tools/handbook_creator/templates/title.html.erb" 0xBC66E2BC
59
77
  "config/tools/launcher/launcher_packets.txt" 0x51DC78DA
60
- "config/tools/launcher/launcher_threads.txt" 0x878061C0
78
+ "config/tools/launcher/launcher_threads.txt" 0x5C3A58EF
61
79
  "config/tools/limits_monitor/README.txt" 0x93B2C07E
62
80
  "config/tools/opengl_builder/README.txt" 0x93B2C07E
63
81
  "config/tools/script_runner/script_runner.txt" 0x1EECD803
@@ -67,7 +85,7 @@
67
85
  "config/tools/table_manager/MCConfigurationTable_fsw2_def.txt" 0x9DE18AEA
68
86
  "config/tools/table_manager/PPSSelectionTable_def.txt" 0xE7A1E70B
69
87
  "config/tools/table_manager/TLMMonitoringTable_def.txt" 0x70DABA45
70
- "config/tools/test_runner/test_runner.txt" 0x1EB7E49C
88
+ "config/tools/test_runner/test_runner.txt" 0x6401DC8C
71
89
  "config/tools/tlm_extractor/tlm_extractor.txt" 0x51B791DF
72
90
  "config/tools/tlm_extractor/tlm_extractor2.txt" 0x210DED6A
73
91
  "config/tools/tlm_extractor/tlm_extractor3.txt" 0x3A25E012
@@ -85,14 +103,41 @@
85
103
  "tools/CmdTlmServerMemProf.bat" 0xF1C468BA
86
104
  "tools/DataViewer" 0x2F81335B
87
105
  "tools/DataViewer.bat" 0xF1C468BA
88
- "tools/ExampleTarget" 0xC7698E38
89
- "tools/ExampleTarget.bat" 0xF7D93DD0
90
106
  "tools/HandbookCreator" 0x7337665F
91
107
  "tools/HandbookCreator.bat" 0x4D5B6471
92
108
  "tools/Launcher" 0xBB5DB49A
93
109
  "tools/Launcher.bat" 0xF1C468BA
94
110
  "tools/LimitsMonitor" 0x8227E66E
95
111
  "tools/LimitsMonitor.bat" 0xF1C468BA
112
+ "tools/OpenGLBuilder" 0x70C85B16
113
+ "tools/OpenGLBuilder.bat" 0xF1C468BA
114
+ "tools/PacketTarget" 0x633EBA89
115
+ "tools/PacketTarget.bat" 0xF7D93DD0
116
+ "tools/PacketViewer" 0xCFB39857
117
+ "tools/PacketViewer.bat" 0xF1C468BA
118
+ "tools/Replay" 0x15162D45
119
+ "tools/Replay.bat" 0xF1C468BA
120
+ "tools/ScpiTarget" 0x8FB2CE09
121
+ "tools/ScpiTarget.bat" 0xF7D93DD0
122
+ "tools/ScriptRunner" 0x8DF937B6
123
+ "tools/ScriptRunner.bat" 0xF1C468BA
124
+ "tools/TableManager" 0xE75FDFFE
125
+ "tools/TableManager.bat" 0xF1C468BA
126
+ "tools/TestRunner" 0x1DBDC0CF
127
+ "tools/TestRunner.bat" 0xF1C468BA
128
+ "tools/ThreadTarget" 0x93FE9405
129
+ "tools/ThreadTarget.bat" 0xF7D93DD0
130
+ "tools/TlmExtractor" 0xE0DE48BC
131
+ "tools/TlmExtractor.bat" 0xF1C468BA
132
+ "tools/TlmGrapher" 0x8D7A0529
133
+ "tools/TlmGrapher.bat" 0xF1C468BA
134
+ "tools/TlmGrapherMemProf" 0x9A200E06
135
+ "tools/TlmGrapherMemProf.bat" 0xF1C468BA
136
+ "tools/TlmViewer" 0x120F8422
137
+ "tools/TlmViewer.bat" 0xF1C468BA
138
+ "tools/TlmViewerMemProf" 0x3CC66D92
139
+ "tools/TlmViewerMemProf.bat" 0xF1C468BA
140
+ "tools/identify_performance.rb" 0xAC543A1D
96
141
  "tools/mac/CmdExtractor.app/Contents/Info.plist" 0x0E89084D
97
142
  "tools/mac/CmdExtractor.app/Contents/MacOS/CmdExtractor.rb" 0x9AD128F4
98
143
  "tools/mac/CmdExtractor.app/Contents/MacOS/main.sh" 0x52DD5B34
@@ -122,72 +167,46 @@
122
167
  "tools/mac/LimitsMonitor.app/Contents/MacOS/main.sh" 0xCC934478
123
168
  "tools/mac/LimitsMonitor.app/Contents/Resources/appIcon.icns" 0xC98BF799
124
169
  "tools/mac/OpenGLBuilder.app/Contents/Info.plist" 0x3C2E542D
125
- "tools/mac/OpenGLBuilder.app/Contents/MacOS/main.sh" 0x5EF4D8E2
126
170
  "tools/mac/OpenGLBuilder.app/Contents/MacOS/OpenGLBuilder.rb" 0x96F7D2C2
171
+ "tools/mac/OpenGLBuilder.app/Contents/MacOS/main.sh" 0x5EF4D8E2
127
172
  "tools/mac/OpenGLBuilder.app/Contents/Resources/appIcon.icns" 0x8DDBD837
128
173
  "tools/mac/PacketViewer.app/Contents/Info.plist" 0x6934BF89
129
- "tools/mac/PacketViewer.app/Contents/MacOS/main.sh" 0x0D28EF08
130
174
  "tools/mac/PacketViewer.app/Contents/MacOS/PacketViewer.rb" 0x019FC483
175
+ "tools/mac/PacketViewer.app/Contents/MacOS/main.sh" 0x0D28EF08
131
176
  "tools/mac/PacketViewer.app/Contents/Resources/appIcon.icns" 0xDF373DAE
132
177
  "tools/mac/Replay.app/Contents/Info.plist" 0x894AC4CF
133
- "tools/mac/Replay.app/Contents/MacOS/main.sh" 0x211D29BB
134
178
  "tools/mac/Replay.app/Contents/MacOS/Replay.rb" 0xA2C90DA4
179
+ "tools/mac/Replay.app/Contents/MacOS/main.sh" 0x211D29BB
135
180
  "tools/mac/Replay.app/Contents/Resources/appIcon.icns" 0x0E6B32E5
136
181
  "tools/mac/ScriptRunner.app/Contents/Info.plist" 0x1BC8C5E9
137
- "tools/mac/ScriptRunner.app/Contents/MacOS/main.sh" 0xE3274772
138
182
  "tools/mac/ScriptRunner.app/Contents/MacOS/ScriptRunner.rb" 0x43D56B62
183
+ "tools/mac/ScriptRunner.app/Contents/MacOS/main.sh" 0xE3274772
139
184
  "tools/mac/ScriptRunner.app/Contents/Resources/appIcon.icns" 0x9246743E
140
185
  "tools/mac/TableManager.app/Contents/Info.plist" 0xF6A5877F
141
- "tools/mac/TableManager.app/Contents/MacOS/main.sh" 0x98E69D10
142
186
  "tools/mac/TableManager.app/Contents/MacOS/TableManager.rb" 0x2973832A
187
+ "tools/mac/TableManager.app/Contents/MacOS/main.sh" 0x98E69D10
143
188
  "tools/mac/TableManager.app/Contents/Resources/appIcon.icns" 0xEBF5074E
144
189
  "tools/mac/TestRunner.app/Contents/Info.plist" 0x482B3BA5
145
- "tools/mac/TestRunner.app/Contents/MacOS/main.sh" 0xD486D22B
146
190
  "tools/mac/TestRunner.app/Contents/MacOS/TestRunner.rb" 0xDE0A3BD7
191
+ "tools/mac/TestRunner.app/Contents/MacOS/main.sh" 0xD486D22B
147
192
  "tools/mac/TestRunner.app/Contents/Resources/appIcon.icns" 0xC8D32D55
148
193
  "tools/mac/TlmExtractor.app/Contents/Info.plist" 0x343784F4
149
- "tools/mac/TlmExtractor.app/Contents/MacOS/main.sh" 0x4210EF0D
150
194
  "tools/mac/TlmExtractor.app/Contents/MacOS/TlmExtractor.rb" 0x2EF21468
195
+ "tools/mac/TlmExtractor.app/Contents/MacOS/main.sh" 0x4210EF0D
151
196
  "tools/mac/TlmExtractor.app/Contents/Resources/appIcon.icns" 0x0AC88876
152
197
  "tools/mac/TlmGrapher.app/Contents/Info.plist" 0x3623B978
153
- "tools/mac/TlmGrapher.app/Contents/MacOS/main.sh" 0x427E2ECF
154
198
  "tools/mac/TlmGrapher.app/Contents/MacOS/TlmGrapher.rb" 0x4ECDFE31
199
+ "tools/mac/TlmGrapher.app/Contents/MacOS/main.sh" 0x427E2ECF
155
200
  "tools/mac/TlmGrapher.app/Contents/Resources/appIcon.icns" 0xCA324F50
156
201
  "tools/mac/TlmViewer.app/Contents/Info.plist" 0x821041E0
157
- "tools/mac/TlmViewer.app/Contents/MacOS/main.sh" 0x99FD781B
158
202
  "tools/mac/TlmViewer.app/Contents/MacOS/TlmViewer.rb" 0x922D7C22
203
+ "tools/mac/TlmViewer.app/Contents/MacOS/main.sh" 0x99FD781B
159
204
  "tools/mac/TlmViewer.app/Contents/Resources/appIcon.icns" 0x1CBA8EB3
160
- "tools/OpenGLBuilder" 0x70C85B16
161
- "tools/OpenGLBuilder.bat" 0xF1C468BA
162
- "tools/PacketTarget" 0x633EBA89
163
- "tools/PacketTarget.bat" 0xF7D93DD0
164
- "tools/PacketViewer" 0xCFB39857
165
- "tools/PacketViewer.bat" 0xF1C468BA
166
- "tools/Replay" 0x15162D45
167
- "tools/Replay.bat" 0xF1C468BA
168
- "tools/ScpiTarget" 0x8FB2CE09
169
- "tools/ScpiTarget.bat" 0xF7D93DD0
170
- "tools/ScriptRunner" 0x8DF937B6
171
- "tools/ScriptRunner.bat" 0xF1C468BA
172
- "tools/TableManager" 0xE75FDFFE
173
- "tools/TableManager.bat" 0xF1C468BA
174
- "tools/TestRunner" 0x1DBDC0CF
175
- "tools/TestRunner.bat" 0xF1C468BA
176
- "tools/TlmExtractor" 0xE0DE48BC
177
- "tools/TlmExtractor.bat" 0xF1C468BA
178
- "tools/TlmGrapher" 0x8D7A0529
179
- "tools/TlmGrapher.bat" 0xF1C468BA
180
- "tools/TlmGrapherMemProf" 0x9A200E06
181
- "tools/TlmGrapherMemProf.bat" 0xF1C468BA
182
- "tools/TlmViewer" 0x120F8422
183
- "tools/TlmViewer.bat" 0xF1C468BA
184
- "tools/TlmViewerMemProf" 0x3CC66D92
185
- "tools/TlmViewerMemProf.bat" 0xF1C468BA
186
205
  "procedures/checks.rb" 0x34EEF3E2
187
206
  "procedures/clear_util.rb" 0x5B3C1279
188
207
  "procedures/collect.rb" 0x3E52C327
189
208
  "procedures/collect_util.rb" 0x3952EB08
190
- "procedures/cosmos_api_test.rb" 0x57AE9ED2
209
+ "procedures/cosmos_api_test.rb" 0xD334796E
191
210
  "procedures/disconnect.rb" 0x5F3A18E5
192
211
  "procedures/example_test.rb" 0x4FBA73C1
193
212
  "procedures/plot_test.rb" 0x0C2972E4