cosmos 4.4.0 → 4.5.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (202) hide show
  1. checksums.yaml +5 -5
  2. data/.dockerignore +2 -0
  3. data/.gitignore +1 -0
  4. data/.travis.yml +6 -6
  5. data/Dockerfile +70 -0
  6. data/Manifest.txt +37 -2
  7. data/README.md +9 -0
  8. data/Rakefile +55 -5
  9. data/appveyor.yml +18 -8
  10. data/autohotkey/config/tools/cmd_sequence/cmd_sequence.txt +2 -0
  11. data/autohotkey/lib/cmd_sequence_exporter.rb +52 -0
  12. data/autohotkey/procedures/collect.rb +2 -2
  13. data/autohotkey/procedures/collect_util.rb +1 -1
  14. data/autohotkey/procedures/script_test.rb +1 -1
  15. data/autohotkey/tools/CmdSenderAHK2 +18 -0
  16. data/autohotkey/tools/cmd_extractor.ahk +11 -9
  17. data/autohotkey/tools/cmd_sender.ahk +35 -7
  18. data/autohotkey/tools/cmd_sender2.ahk +4 -0
  19. data/autohotkey/tools/cmd_sequence.ahk +22 -9
  20. data/autohotkey/tools/config_editor.ahk +4 -4
  21. data/autohotkey/tools/data_viewer.ahk +1 -1
  22. data/autohotkey/tools/limits_monitor.ahk +1 -1
  23. data/autohotkey/tools/packet_viewer.ahk +1 -1
  24. data/autohotkey/tools/script_runner.ahk +1 -1
  25. data/autohotkey/tools/test_runner2.ahk +1 -1
  26. data/autohotkey/tools/tlm_grapher.ahk +1 -1
  27. data/autohotkey/tools/tlm_grapher3.ahk +1 -1
  28. data/autohotkey/tools/tlm_viewer.ahk +1 -1
  29. data/autohotkey/tools/tlm_viewer2.ahk +1 -1
  30. data/autohotkey/tools/tlm_viewer5.ahk +1 -1
  31. data/bin/cstol_converter +1 -1
  32. data/bin/rubysloc +73 -28
  33. data/bin/xtce_converter +1 -1
  34. data/cosmos.gemspec +2 -2
  35. data/data/config/command_modifiers.yaml +16 -1
  36. data/data/config/interface_modifiers.yaml +3 -2
  37. data/data/config/param_item_modifiers.yaml +5 -0
  38. data/data/config/system.yaml +110 -23
  39. data/data/config/telemetry_modifiers.yaml +16 -1
  40. data/data/crc.txt +416 -411
  41. data/demo/Rakefile +4 -4
  42. data/demo/config/dart/Gemfile +1 -6
  43. data/demo/config/data/crc.txt +233 -232
  44. data/demo/config/system/system.txt +17 -6
  45. data/demo/config/system/system2.txt +17 -6
  46. data/demo/config/system/system_alt_ports.txt +17 -6
  47. data/demo/config/targets/INST/cmd_tlm/inst_cmds.txt +4 -4
  48. data/demo/config/targets/INST/cmd_tlm/inst_tlm.txt +4 -0
  49. data/demo/config/targets/INST/cmd_tlm/inst_tlm_override.txt +12 -0
  50. data/demo/config/targets/INST/lib/sim_inst.rb +2 -2
  51. data/demo/config/targets/INST/target.txt +1 -0
  52. data/demo/config/tools/handbook_creator/default_toc.xsl +59 -59
  53. data/demo/procedures/cosmos_api_test.rb +8 -8
  54. data/ext/cosmos/ext/buffered_file/buffered_file.c +2 -2
  55. data/ext/cosmos/ext/config_parser/config_parser.c +1 -2
  56. data/ext/cosmos/ext/line_graph/line_graph.c +53 -94
  57. data/ext/cosmos/ext/platform/platform.c +56 -21
  58. data/ext/cosmos/ext/polynomial_conversion/polynomial_conversion.c +4 -8
  59. data/ext/cosmos/ext/structure/structure.c +12 -0
  60. data/extensions/vscode/.gitignore +4 -0
  61. data/extensions/vscode/.vscode/launch.json +32 -0
  62. data/extensions/vscode/.vscode/settings.json +13 -0
  63. data/extensions/vscode/.vscode/tasks.json +79 -0
  64. data/extensions/vscode/License.txt +879 -0
  65. data/extensions/vscode/README.md +9 -0
  66. data/extensions/vscode/client/License.txt +879 -0
  67. data/extensions/vscode/client/README.md +39 -0
  68. data/extensions/vscode/client/cosmos.configuration.json +23 -0
  69. data/extensions/vscode/client/images/icon.png +0 -0
  70. data/extensions/vscode/client/package-lock.json +414 -0
  71. data/extensions/vscode/client/package.json +105 -0
  72. data/extensions/vscode/client/src/extension.ts +132 -0
  73. data/extensions/vscode/client/src/screen_preview.rb +25 -0
  74. data/extensions/vscode/client/syntaxes/cosmos.tmLanguage.json +219 -0
  75. data/extensions/vscode/client/tsconfig.json +17 -0
  76. data/extensions/vscode/package-lock.json +26 -0
  77. data/extensions/vscode/package.json +35 -0
  78. data/extensions/vscode/server/License.txt +879 -0
  79. data/extensions/vscode/server/package-lock.json +236 -0
  80. data/extensions/vscode/server/package.json +29 -0
  81. data/extensions/vscode/server/src/server.ts +59 -0
  82. data/extensions/vscode/server/tsconfig.json +16 -0
  83. data/install/Rakefile +4 -4
  84. data/install/config/dart/Gemfile +2 -7
  85. data/install/config/data/crc.txt +137 -137
  86. data/install/config/system/system.txt +17 -6
  87. data/install/config/tools/handbook_creator/default_toc.xsl +59 -59
  88. data/lib/cosmos/config/config_parser.rb +2 -10
  89. data/lib/cosmos/core_ext/class.rb +10 -0
  90. data/lib/cosmos/core_ext/time.rb +5 -3
  91. data/lib/cosmos/dart/config/boot.rb +1 -1
  92. data/lib/cosmos/dart/config/database.yml +2 -0
  93. data/lib/cosmos/dart/examples/dart_decom_client.rb +1 -1
  94. data/lib/cosmos/dart/lib/dart_common.rb +12 -5
  95. data/lib/cosmos/dart/lib/dart_constants.rb +15 -0
  96. data/lib/cosmos/dart/lib/dart_decom_query.rb +5 -6
  97. data/lib/cosmos/dart/lib/dart_decommutator.rb +64 -54
  98. data/lib/cosmos/dart/lib/dart_master_query.rb +71 -0
  99. data/lib/cosmos/dart/lib/dart_reducer_worker_thread.rb +165 -134
  100. data/lib/cosmos/dart/processes/dart.rb +4 -2
  101. data/lib/cosmos/dart/processes/dart_decom_server.rb +3 -3
  102. data/lib/cosmos/dart/processes/dart_ingester.rb +38 -1
  103. data/lib/cosmos/dart/processes/dart_master.rb +44 -0
  104. data/lib/cosmos/dart/processes/dart_util.rb +115 -0
  105. data/lib/cosmos/dart/spec/dart/dart_database_cleaner_spec.rb +2 -2
  106. data/lib/cosmos/gui/qt.rb +10 -10
  107. data/lib/cosmos/gui/qt_tool.rb +17 -12
  108. data/lib/cosmos/gui/text/completion_text_edit.rb +2 -0
  109. data/lib/cosmos/gui/widgets/dart_meta_frame.rb +22 -3
  110. data/lib/cosmos/interfaces/dart_status_interface.rb +1 -1
  111. data/lib/cosmos/interfaces/linc_interface.rb +3 -3
  112. data/lib/cosmos/interfaces/protocols/burst_protocol.rb +1 -1
  113. data/lib/cosmos/interfaces/protocols/crc_protocol.rb +1 -1
  114. data/lib/cosmos/interfaces/protocols/length_protocol.rb +5 -0
  115. data/lib/cosmos/interfaces/protocols/template_protocol.rb +3 -3
  116. data/lib/cosmos/interfaces/serial_interface.rb +7 -1
  117. data/lib/cosmos/interfaces/stream_interface.rb +1 -1
  118. data/lib/cosmos/interfaces/tcpip_server_interface.rb +16 -16
  119. data/lib/cosmos/io/io_multiplexer.rb +6 -2
  120. data/lib/cosmos/io/json_drb.rb +5 -5
  121. data/lib/cosmos/io/json_drb_object.rb +7 -2
  122. data/lib/cosmos/io/json_drb_rack.rb +25 -5
  123. data/lib/cosmos/io/json_rpc.rb +1 -1
  124. data/lib/cosmos/io/posix_serial_driver.rb +60 -22
  125. data/lib/cosmos/io/serial_driver.rb +11 -8
  126. data/lib/cosmos/io/win32_serial_driver.rb +31 -3
  127. data/lib/cosmos/packet_logs/packet_log_reader.rb +2 -2
  128. data/lib/cosmos/packets/packet.rb +9 -9
  129. data/lib/cosmos/packets/packet_config.rb +27 -9
  130. data/lib/cosmos/packets/parsers/xtce_converter.rb +10 -10
  131. data/lib/cosmos/packets/parsers/xtce_parser.rb +3 -0
  132. data/lib/cosmos/packets/structure.rb +35 -5
  133. data/lib/cosmos/packets/structure_item.rb +5 -1
  134. data/lib/cosmos/packets/telemetry.rb +7 -1
  135. data/lib/cosmos/script/api_shared.rb +18 -1
  136. data/lib/cosmos/script/extract.rb +1 -1
  137. data/lib/cosmos/script/script.rb +4 -11
  138. data/lib/cosmos/streams/serial_stream.rb +11 -6
  139. data/lib/cosmos/system/system.rb +155 -57
  140. data/lib/cosmos/tools/cmd_sender/cmd_param_table_item_delegate.rb +15 -0
  141. data/lib/cosmos/tools/cmd_sender/cmd_params.rb +382 -0
  142. data/lib/cosmos/tools/cmd_sender/cmd_sender.rb +29 -318
  143. data/lib/cosmos/tools/cmd_sequence/cmd_sequence.rb +14 -17
  144. data/lib/cosmos/tools/cmd_sequence/sequence_item.rb +38 -331
  145. data/lib/cosmos/tools/cmd_sequence/sequence_list.rb +16 -11
  146. data/lib/cosmos/tools/cmd_tlm_server/api.rb +10 -8
  147. data/lib/cosmos/tools/cmd_tlm_server/cmd_tlm_server.rb +2 -2
  148. data/lib/cosmos/tools/cmd_tlm_server/cmd_tlm_server_gui.rb +1 -0
  149. data/lib/cosmos/tools/cmd_tlm_server/gui/logging_tab.rb +1 -1
  150. data/lib/cosmos/tools/cmd_tlm_server/interface_thread.rb +29 -26
  151. data/lib/cosmos/tools/cmd_tlm_server/limits_groups_background_task.rb +1 -1
  152. data/lib/cosmos/tools/cmd_tlm_server/router_thread.rb +5 -0
  153. data/lib/cosmos/tools/config_editor/config_editor.rb +34 -3
  154. data/lib/cosmos/tools/config_editor/config_editor_frame.rb +8 -9
  155. data/lib/cosmos/tools/config_editor/system_config_dialog.rb +158 -0
  156. data/lib/cosmos/tools/handbook_creator/handbook_creator.rb +1 -1
  157. data/lib/cosmos/tools/handbook_creator/handbook_creator_config.rb +1 -1
  158. data/lib/cosmos/tools/script_runner/script_runner_frame.rb +7 -4
  159. data/lib/cosmos/tools/test_runner/test.rb +6 -3
  160. data/lib/cosmos/tools/test_runner/test_runner.rb +6 -6
  161. data/lib/cosmos/tools/tlm_extractor/tlm_extractor.rb +3 -3
  162. data/lib/cosmos/tools/tlm_extractor/tlm_extractor_config.rb +1 -4
  163. data/lib/cosmos/tools/tlm_extractor/tlm_extractor_processor.rb +20 -16
  164. data/lib/cosmos/tools/tlm_grapher/tabbed_plots_tool/tabbed_plots_dart_thread.rb +21 -17
  165. data/lib/cosmos/tools/tlm_grapher/tlm_grapher.rb +18 -11
  166. data/lib/cosmos/tools/tlm_viewer/tlm_viewer.rb +17 -6
  167. data/lib/cosmos/tools/tlm_viewer/widgets/canvasdot_widget.rb +2 -0
  168. data/lib/cosmos/top_level.rb +1 -1
  169. data/lib/cosmos/utilities/ruby_lex_utils.rb +34 -30
  170. data/lib/cosmos/utilities/simulated_target.rb +1 -1
  171. data/lib/cosmos/version.rb +5 -5
  172. data/lib/cosmos/win32/excel.rb +23 -17
  173. data/run_gui_tests.bat +1 -0
  174. data/spec/core_ext/class_spec.rb +54 -0
  175. data/spec/core_ext/socket_spec.rb +1 -1
  176. data/spec/core_ext/time_spec.rb +4 -0
  177. data/spec/install/yaml_docs_spec.rb +26 -6
  178. data/spec/interfaces/linc_interface_spec.rb +1 -1
  179. data/spec/interfaces/protocols/length_protocol_spec.rb +39 -0
  180. data/spec/interfaces/serial_interface_spec.rb +1 -5
  181. data/spec/io/json_drb_rack_spec.rb +166 -0
  182. data/spec/io/json_drb_spec.rb +14 -0
  183. data/spec/io/json_rpc_spec.rb +4 -5
  184. data/spec/io/posix_serial_driver_spec.rb +81 -0
  185. data/spec/io/win32_serial_driver_spec.rb +33 -3
  186. data/spec/packet_logs/packet_log_reader_spec.rb +36 -37
  187. data/spec/packets/structure_spec.rb +52 -2
  188. data/spec/packets/telemetry_spec.rb +29 -1
  189. data/spec/script/extract_spec.rb +4 -1
  190. data/spec/system/system_spec.rb +111 -3
  191. data/spec/tools/cmd_tlm_server/api_spec.rb +12 -12
  192. data/spec/tools/cmd_tlm_server/background_tasks_spec.rb +2 -2
  193. data/spec/tools/cmd_tlm_server/interface_thread_spec.rb +4 -3
  194. data/spec/tools/cmd_tlm_server/router_thread_spec.rb +2 -3
  195. data/spec/utilities/logger_spec.rb +3 -3
  196. data/spec/utilities/message_log_spec.rb +6 -3
  197. data/tasks/gemfile_stats.rake +22 -13
  198. data/test/performance/Rakefile +4 -4
  199. data/test/performance/config/data/crc.txt +67 -48
  200. metadata +52 -11
  201. data/demo/outputs/dart/logs/README.txt +0 -1
  202. data/lib/cosmos/dart/Gemfile +0 -69
@@ -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
-
@@ -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
@@ -70,9 +70,12 @@ module Cosmos
70
70
  log = MessageLog.new('TEST')
71
71
  log.start
72
72
  log.stop
73
- Cosmos.set_working_dir do
74
- expect(File.stat(log.filename).writable?).to be false
75
- File.delete log.filename
73
+ if Kernel.is_windows? or Process.uid != 0
74
+ # writable? is always true for root, so skip this check
75
+ Cosmos.set_working_dir do
76
+ expect(File.stat(log.filename).writable?).to be false
77
+ File.delete log.filename
78
+ end
76
79
  end
77
80
  end
78
81
  end
@@ -15,18 +15,25 @@ task :gemfile_stats do
15
15
 
16
16
  def get_latest_gem_data
17
17
  gem_data = []
18
+ # This is the only API call to Rubygems
18
19
  versions = Gems.versions 'cosmos'
19
20
  versions.each do |version|
20
21
  version_no = version['number']
22
+ next if version_no.split('.')[0] < '3' # anything before 3 is another gem
21
23
  month = version['built_at'].split('-')[0..1].join('-')
22
- gem_data << [month, version_no, Gems.total_downloads("cosmos",version_no)[:version_downloads]] if version_no.split('.')[0] >= '3' # anything before 3 is another gem
24
+ downloads = version['downloads_count'].to_i
25
+ if gem_data.length > 0 && gem_data[-1][1] == version_no
26
+ gem_data[-1][2] += downloads
27
+ else
28
+ gem_data << [month, version_no, downloads]
29
+ end
23
30
  end
24
31
  gem_data
25
32
  end
26
33
 
27
34
  # This is useful for testing to prevent server round trips
28
35
  # Simply comment out this line when working on the formatting below (after first running once)
29
- File.open("gemdata.marshall", 'w') {|file| file.write(Marshal.dump(get_latest_gem_data)) }
36
+ File.open("gemdata.marshall", 'w') {|file| file.write(Marshal.dump(get_latest_gem_data())) }
30
37
  gem_data = Marshal.load(File.read("gemdata.marshall"))
31
38
 
32
39
  # Convert all the date text into Ruby Dates
@@ -68,26 +75,28 @@ task :gemfile_stats do
68
75
  end
69
76
  end
70
77
 
71
- # Force the date row to be text
72
- sheet.Rows(1).NumberFormat = "\@"
78
+ # Put dates in rows as there are more dates than there are releases
79
+ # Force the date column to be text
80
+ sheet.Columns(1).NumberFormat = "\@"
73
81
  labels.values.each_with_index do |val, x|
74
- sheet.Cells(1, (x+2)).Value = val
82
+ sheet.Cells((x+2), 1).Value = val
75
83
  end
76
84
 
77
- row = 2
85
+ col = 2
78
86
  dataset.each do |version, data|
79
- # Set the version (e.g. 3.0) in column 1
80
- sheet.Cells(row, 1).Value = version
87
+ # Set the version (e.g. 3.0) in the top row
88
+ sheet.Cells(1, col).Value = version
89
+ # The download values by date appear below the version in the same column
81
90
  data.each_with_index do |val, x|
82
- sheet.Cells(row, (x+2)).Value = val
91
+ sheet.Cells((x+2), col).Value = val
83
92
  end
84
- row += 1
93
+ col += 1
85
94
  end
86
- # Excel column name lookup
87
- letters = ('A'..'Z').to_a.concat(('AA'..'AZ').to_a)
95
+ # Excel column name lookup, 4 sets of alphabets gives us 104 versions to work with
96
+ letters = ('A'..'Z').to_a.concat(('AA'..'AZ').to_a).concat(('BA'..'BZ').to_a).concat(('CA'..'CZ').to_a)
88
97
  chart = book.Charts.Add
89
98
  chart.Name = "COSMOS Downloads"
90
- chart.SetSourceData(sheet.Range("A1:#{letters[labels.length]}#{dataset.length}"))
99
+ chart.SetSourceData(sheet.Range("A1:#{letters[dataset.length]}#{labels.length+1}"))
91
100
  chart.HasTitle = true
92
101
  chart.ChartTitle.Characters.Text = "COSMOS Downloads"
93
102
  chart.ChartType = 76 # AreaStacked
@@ -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