cosmos 4.4.1-java → 4.5.2-java

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.
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 +53 -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