cosmos-unpacking_interface 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (84) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +10 -0
  3. data/.travis.yml +7 -0
  4. data/Gemfile +4 -0
  5. data/LICENSE.txt +21 -0
  6. data/README.md +158 -0
  7. data/Rakefile +12 -0
  8. data/bin/console +14 -0
  9. data/bin/setup +8 -0
  10. data/config/data/README.txt +1 -0
  11. data/config/data/crc.txt +198 -0
  12. data/config/system/system.txt +29 -0
  13. data/config/targets/COSMOS/cmd_tlm/cosmos_server_cmds.txt +41 -0
  14. data/config/targets/COSMOS/cmd_tlm/cosmos_server_tlm.txt +15 -0
  15. data/config/targets/COSMOS/cmd_tlm_server.txt +6 -0
  16. data/config/targets/COSMOS/screens/limits_change.txt +20 -0
  17. data/config/targets/COSMOS/screens/version.txt +19 -0
  18. data/config/targets/COSMOS/target.txt +9 -0
  19. data/config/targets/PI/cmd_tlm/pi_tlm_test.txt +12 -0
  20. data/config/targets/PI/cmd_tlm/pi_tlm_test_1.txt +13 -0
  21. data/config/targets/PI/cmd_tlm/pi_tlm_test_2.txt +68 -0
  22. data/config/targets/PI/cmd_tlm/pi_tlm_test_3.txt +12 -0
  23. data/config/targets/PI/cmd_tlm_server.txt +4 -0
  24. data/config/targets/PI/target.txt +4 -0
  25. data/cosmos-unpacking_interface.gemspec +34 -0
  26. data/doc/Cosmos.html +98 -0
  27. data/doc/Cosmos/AggregatePacketMapper.html +152 -0
  28. data/doc/Cosmos/AggregatePacketProcesser.html +249 -0
  29. data/doc/Cosmos/BaseNameMap.html +364 -0
  30. data/doc/Cosmos/UnpackingInterface.html +399 -0
  31. data/doc/UnpackingInterface.html +110 -0
  32. data/doc/created.rid +7 -0
  33. data/doc/css/fonts.css +167 -0
  34. data/doc/css/rdoc.css +590 -0
  35. data/doc/fonts/Lato-Light.ttf +0 -0
  36. data/doc/fonts/Lato-LightItalic.ttf +0 -0
  37. data/doc/fonts/Lato-Regular.ttf +0 -0
  38. data/doc/fonts/Lato-RegularItalic.ttf +0 -0
  39. data/doc/fonts/SourceCodePro-Bold.ttf +0 -0
  40. data/doc/fonts/SourceCodePro-Regular.ttf +0 -0
  41. data/doc/images/add.png +0 -0
  42. data/doc/images/arrow_up.png +0 -0
  43. data/doc/images/brick.png +0 -0
  44. data/doc/images/brick_link.png +0 -0
  45. data/doc/images/bug.png +0 -0
  46. data/doc/images/bullet_black.png +0 -0
  47. data/doc/images/bullet_toggle_minus.png +0 -0
  48. data/doc/images/bullet_toggle_plus.png +0 -0
  49. data/doc/images/date.png +0 -0
  50. data/doc/images/delete.png +0 -0
  51. data/doc/images/find.png +0 -0
  52. data/doc/images/loadingAnimation.gif +0 -0
  53. data/doc/images/macFFBgHack.png +0 -0
  54. data/doc/images/package.png +0 -0
  55. data/doc/images/page_green.png +0 -0
  56. data/doc/images/page_white_text.png +0 -0
  57. data/doc/images/page_white_width.png +0 -0
  58. data/doc/images/plugin.png +0 -0
  59. data/doc/images/ruby.png +0 -0
  60. data/doc/images/tag_blue.png +0 -0
  61. data/doc/images/tag_green.png +0 -0
  62. data/doc/images/transparent.png +0 -0
  63. data/doc/images/wrench.png +0 -0
  64. data/doc/images/wrench_orange.png +0 -0
  65. data/doc/images/zoom.png +0 -0
  66. data/doc/index.html +91 -0
  67. data/doc/js/darkfish.js +161 -0
  68. data/doc/js/jquery.js +4 -0
  69. data/doc/js/navigation.js +141 -0
  70. data/doc/js/navigation.js.gz +0 -0
  71. data/doc/js/search.js +109 -0
  72. data/doc/js/search_index.js +1 -0
  73. data/doc/js/search_index.js.gz +0 -0
  74. data/doc/js/searcher.js +229 -0
  75. data/doc/js/searcher.js.gz +0 -0
  76. data/doc/lib/README_rdoc.html +118 -0
  77. data/doc/table_of_contents.html +140 -0
  78. data/lib/cosmos/unpacking_interface.rb +14 -0
  79. data/lib/cosmos/unpacking_interface/aggregate_packet_mapper.rb +14 -0
  80. data/lib/cosmos/unpacking_interface/aggregate_packet_processor.rb +42 -0
  81. data/lib/cosmos/unpacking_interface/base_name_map.rb +67 -0
  82. data/lib/cosmos/unpacking_interface/unpacking_interface.rb +87 -0
  83. data/lib/cosmos/unpacking_interface/version.rb +3 -0
  84. metadata +174 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 79a433548e75160c942ae28fd5916ffcbd738218
4
+ data.tar.gz: f6b575b0a7eeb12f06cad7f6b79b20273fb4b12d
5
+ SHA512:
6
+ metadata.gz: 0e47df0df0fe1c53932491315aa0df536fceb18a64123cbfcf626b27f50ac1efc685600339fd7e10523c9ad9d8fface35a5a78662eba670bc55f811b6acad05f
7
+ data.tar.gz: 9c9c587ace54cc7b281b44c2312ca2b65eadff2e4de749fe758b0bb9a15b3b90db4e19e94fbf4657fa93bca2bc0319cfaa386a425b6b0c626599affa4b9e1295
data/.gitignore ADDED
@@ -0,0 +1,10 @@
1
+ /.bundle/
2
+ /.yardoc
3
+ /_yardoc/
4
+ /coverage/
5
+ /pkg/
6
+ /spec/reports/
7
+ /tmp/
8
+ outputs/
9
+ notes.md
10
+ Gemfile.lock
data/.travis.yml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ sudo: false
3
+ language: ruby
4
+ cache: bundler
5
+ rvm:
6
+ - 2.3.7
7
+ before_install: gem install bundler -v 2.0.1
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source "https://rubygems.org"
2
+
3
+ # Specify your gem's dependencies in UnpackingInterface.gemspec
4
+ gemspec
data/LICENSE.txt ADDED
@@ -0,0 +1,21 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2019 Nick Benoit
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in
13
+ all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
+ THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,158 @@
1
+ # UnpackingInterface
2
+
3
+ A custom extendable cosmos interface that unpacks aggregate packets (packets with many granules/datapoints) into many
4
+ simple packets (packets with a single granule/datapoint). This way we can use all the cosmos niceties
5
+ without having to send packets for individual measurements. Essentially we unpack an aggregate
6
+ packet into many packets that are stored in a queue that is read from. When the queue is empty
7
+ we look for new aggregate packets
8
+
9
+ For more information about cosmos interfaces look [here](https://cosmosrb.com/docs/interfaces/)
10
+
11
+
12
+ ## Installation
13
+
14
+ Add this line to your application's Gemfile:
15
+
16
+ ```ruby
17
+ gem 'cosmos-unpacking_interface'
18
+ ```
19
+
20
+ And then execute:
21
+
22
+ $ bundle
23
+
24
+ Or install it yourself as:
25
+
26
+ ```
27
+ $ gem install cosmos-unpacking_interface
28
+ ```
29
+
30
+ ## Usage
31
+
32
+ You will likely need to define your own custom PacketMapper. A PacketMapper handles mapping a cosmos packet into our internal representation, a `BaseNameMap`. As an example you can look at the Rdoc generated docs in the `docs` folder of this repository. An example is given here:
33
+
34
+ ```
35
+ require 'cosmos/unpacking_interface'
36
+
37
+ ##
38
+ # Example AggregatePacketMapper. This class encapsulates specific assumptions
39
+ # that can be made in mapping an aggregate packet into a BaseNameMap
40
+ module Cosmos
41
+ class MyPacketMapper < AggregatePacketMapper
42
+
43
+ ##
44
+ # Maps an item name like 'VALUE_A_42' => 'VALUE_A'
45
+ def _get_normalized_key(str)
46
+ match = /(.+)_\d+/.match(str)
47
+ return str if match.nil?
48
+
49
+ m = match[1]
50
+ if m.nil?
51
+ str
52
+ else
53
+ m
54
+ end end
55
+
56
+ ##
57
+ # Builds a BaseNameMap from an aggregate packet
58
+ def build_map(packet)
59
+ all_item_names = packet.items.keys
60
+
61
+ map = all_item_names.reduce({}) do |acc, raw_key|
62
+ value = packet.read(raw_key)
63
+ key = _get_normalized_key(raw_key)
64
+
65
+ if(_should_write(key))
66
+ acc[key] = [] if(acc[key].nil?)
67
+ acc[key] << value
68
+ end
69
+
70
+ acc
71
+ end
72
+
73
+ BaseNameMap.new(map, packet.packet_name)
74
+ end
75
+
76
+ ##
77
+ # List of fields not to be included in BaseNameMap. These are mostly cosmos auto generated derived
78
+ # fields
79
+ def _should_write(k)
80
+ not_allowed = [
81
+ 'RECEIVED_TIMESECONDS',
82
+ 'RECEIVED_TIMEFORMATTED',
83
+ 'RECEIVED_COUNT',
84
+ 'PACKET_TIMESECONDS',
85
+ 'PACKET_TIMEFORMATTED'
86
+ ]
87
+ !not_allowed.include?(k)
88
+ end
89
+ end
90
+ end
91
+ ```
92
+
93
+ A target is typically configured to use a specific interface in the `cmd_tlm_server.txt` file. In order to use the unpacking interface, you must add a ruby file `lib/my_interface` your cosmos project. It should define a class that extends `UnpackingInterface`. Then in your `cmd_tlm_server.txt` you should reference your file `lib/my_interface`. As an example:
94
+
95
+ ```
96
+ require 'cosmos'
97
+ require 'cosmos/unpacking_interface'
98
+
99
+ module Cosmos
100
+
101
+ ##
102
+ # Maps aggregate packets (packets with many granules/readings) to simple packets (packets with a single granule/readings)
103
+ # should have the form 'AggregatePacket' => 'SimplePacket'
104
+ # For example: 'Science' => 'Science2'
105
+ AGG_PKT_MAP = {
106
+ 'AGGREGATE_PACKET_NAME' => 'SIMPLE_PACKET_NAME'
107
+ }
108
+
109
+ ##
110
+ # Transformations defined on an item in a simple packet. Entries should be of the
111
+ # form: "<TARGET>-<PACKET_NAME>-<ITEM_NAME>" => Proc
112
+ # where the proc can accept the following parameters TargetName, ItemName, key, value, index
113
+ # index is the index of the granule in the aggregate packet that was transformed into the simple packet
114
+ # More info about procs can be found here: https://ruby-doc.org/core-2.4.1/Proc.html
115
+ TRANSFORMS = {
116
+ 'MYTARGET-PACKET-VALUE_A' => Proc.new do |target, item, key, value, index|
117
+ value # modify and return value
118
+ end
119
+ }
120
+
121
+
122
+ TARGET = 'MYTARGET'
123
+
124
+ class MyInterface < UnpackingInterface
125
+ def transforms
126
+ TRANSFORMS
127
+ end
128
+
129
+ def agg_pkt_map
130
+ AGG_PKT_MAP
131
+ end
132
+
133
+ def target
134
+ TARGET
135
+ end
136
+
137
+ def packet_mapper
138
+ MyPacketMapper.new
139
+ end
140
+
141
+ end
142
+ end
143
+ ```
144
+
145
+
146
+ ## Development
147
+
148
+ Run `rake test` to run the tests.
149
+
150
+ To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
151
+
152
+ ## Contributing
153
+
154
+ Bug reports and pull requests are welcome on GitHub at https://github.com/nick-benoit14/cosmos-unpacking_interface
155
+
156
+ ## License
157
+
158
+ The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
data/Rakefile ADDED
@@ -0,0 +1,12 @@
1
+
2
+ require "bundler/gem_tasks"
3
+ require "rake/testtask"
4
+ require "cosmos"
5
+
6
+ Rake::TestTask.new(:test) do |t|
7
+ t.libs << "test"
8
+ t.test_files = FileList["test/*_test.rb"]
9
+ t.verbose = true
10
+ end
11
+
12
+ task :default => :test
data/bin/console ADDED
@@ -0,0 +1,14 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require "bundler/setup"
4
+ require "UnpackingInterface"
5
+
6
+ # You can add fixtures and/or initialization code here to make experimenting
7
+ # with your gem easier. You can also use a different console, if you like.
8
+
9
+ # (If you use this, don't forget to add pry to your Gemfile!)
10
+ # require "pry"
11
+ # Pry.start
12
+
13
+ require "irb"
14
+ IRB.start(__FILE__)
data/bin/setup ADDED
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+ IFS=$'\n\t'
4
+ set -vx
5
+
6
+ bundle install
7
+
8
+ # Do any other automated setup that you need to do here
@@ -0,0 +1 @@
1
+ This file is here to make sure this folder is included in the release.
@@ -0,0 +1,198 @@
1
+ USER_MODIFIED
2
+ "lib/aggregate_packet_mapper.rb" 0x4068112E
3
+ "lib/aggregate_packet_processor.rb" 0x4258B00E
4
+ "lib/base_name_map.rb" 0x91E8E143
5
+ "lib/hkadc_conversion.rb" 0x38DDC76C
6
+ "lib/hkadc_lpsweep.rb" 0xBAF00449
7
+ "lib/my_interface.rb" 0xFC3F089B
8
+ "lib/science_granule_conversion.rb" 0x8610D03A
9
+ "lib/SLP_EFP_conv.rb" 0x7C0E5B8B
10
+ "lib/sport_packet_mapper.rb" 0xECFFCB48
11
+ "lib/temp_conversion.rb" 0xD7C76546
12
+ "lib/time_transformer.rb" 0x49551667
13
+ "lib/unpacking_interface.rb" 0x77A29883
14
+ "lib/user_version.rb" 0x8F282EE9
15
+ "config/data/README.txt" 0x93B2C07E
16
+ "config/system/system.txt" 0x6764F0C9
17
+ "config/targets/COSMOS/cmd_tlm/cosmos_server_cmds.txt" 0xE2F62B11
18
+ "config/targets/COSMOS/cmd_tlm/cosmos_server_tlm.txt" 0xC667CCD6
19
+ "config/targets/COSMOS/cmd_tlm_server.txt" 0xE53A4164
20
+ "config/targets/COSMOS/screens/limits_change.txt" 0xE8C47C54
21
+ "config/targets/COSMOS/screens/version.txt" 0x393D4F72
22
+ "config/targets/COSMOS/target.txt" 0x6C6F9A95
23
+ "config/targets/PI/cmd_tlm/cmd.txt" 0x3BB1B28F
24
+ "config/targets/PI/cmd_tlm/pi_tlm_SIPSweep.txt" 0x9A301D03
25
+ "config/targets/PI/cmd_tlm/pi_tlm_SIPTrack.txt" 0x34D43077
26
+ "config/targets/PI/cmd_tlm/pi_tlm_SLPScience.txt" 0x2C18FDF6
27
+ "config/targets/PI/cmd_tlm/pi_tlm_SLPScience2.txt" 0xF7D801F2
28
+ "config/targets/PI/cmd_tlm/pi_tlm_SLPsweep.txt" 0xC2BC6243
29
+ "config/targets/PI/cmd_tlm/pi_tlm_status.txt" 0x650698C8
30
+ "config/targets/PI/cmd_tlm/pi_tlm_test.txt" 0xB566CE74
31
+ "config/targets/PI/cmd_tlm/pi_tlm_test_1.txt" 0x850AAB7C
32
+ "config/targets/PI/cmd_tlm/pi_tlm_test_2.txt" 0xC62CC0C9
33
+ "config/targets/PI/cmd_tlm/pi_tlm_wave.txt" 0x030FE66E
34
+ "config/targets/PI/cmd_tlm_server.txt" 0x817CA568
35
+ "config/targets/PI/cmd_tlm_server_old.txt" 0xFFC7442F
36
+ "config/targets/PI/lib/multi_field_bit_conversion.rb" 0x9FAFF32B
37
+ "config/targets/PI/screens/command_display.txt" 0x17744D99
38
+ "config/targets/PI/screens/science_display.txt" 0x236FE1EE
39
+ "config/targets/PI/screens/sip_sweep_display.txt" 0x64862E3D
40
+ "config/targets/PI/screens/sip_track_display.txt" 0x6ED816C8
41
+ "config/targets/PI/screens/slp_sweep_display.txt" 0x0DA05B4E
42
+ "config/targets/PI/screens/status_display.txt" 0xD7D2428A
43
+ "config/targets/PI/screens/wave_display.txt" 0x5397D35B
44
+ "config/targets/PI/target.txt" 0x56F1158D
45
+ "config/tools/cmd_tlm_server/cmd_tlm_server.txt" 0xC6819D73
46
+ "config/tools/data_viewer/data_viewer.txt" 0xAEE0B7DF
47
+ "config/tools/handbook_creator/default_toc.xsl" 0x4122A040
48
+ "config/tools/handbook_creator/handbook_creator.txt" 0x64E4B5CC
49
+ "config/tools/handbook_creator/templates/command_packets.html.erb" 0x9897CA7A
50
+ "config/tools/handbook_creator/templates/command_toc.html.erb" 0x9159BCF9
51
+ "config/tools/handbook_creator/templates/footer.html.erb" 0x0E1F9800
52
+ "config/tools/handbook_creator/templates/header.html.erb" 0x1E490C2A
53
+ "config/tools/handbook_creator/templates/limits_groups.html.erb" 0x40FDF34C
54
+ "config/tools/handbook_creator/templates/nav.html.erb" 0xDF65AAEA
55
+ "config/tools/handbook_creator/templates/overview.html.erb" 0xDC4DD2B8
56
+ "config/tools/handbook_creator/templates/pdf_cover.html.erb" 0x7AAB9A42
57
+ "config/tools/handbook_creator/templates/pdf_footer.html.erb" 0xF0D3EB77
58
+ "config/tools/handbook_creator/templates/pdf_header.html.erb" 0x3020FEE1
59
+ "config/tools/handbook_creator/templates/telemetry_packets.html.erb" 0x44BD9695
60
+ "config/tools/handbook_creator/templates/telemetry_toc.html.erb" 0x610E3BC5
61
+ "config/tools/handbook_creator/templates/title.html.erb" 0xBC66E2BC
62
+ "config/tools/launcher/launcher.txt" 0x2F6ABBDB
63
+ "config/tools/limits_monitor/README.txt" 0x93B2C07E
64
+ "config/tools/opengl_builder/README.txt" 0x93B2C07E
65
+ "config/tools/script_runner/script_runner.txt" 0x1EECD803
66
+ "config/tools/table_manager/README.txt" 0x93B2C07E
67
+ "config/tools/test_runner/test_runner.txt" 0xD24409D2
68
+ "config/tools/tlm_extractor/diff-calibration.txt" 0xB96B9CA5
69
+ "config/tools/tlm_extractor/everything.txt" 0xA6C1B8E0
70
+ "config/tools/tlm_extractor/level_calibration.txt" 0x002C9B17
71
+ "config/tools/tlm_extractor/Pressure_Curve.txt" 0xDD01E92C
72
+ "config/tools/tlm_extractor/README.txt" 0x93B2C07E
73
+ "config/tools/tlm_grapher/everything.txt" 0x6D74DC74
74
+ "config/tools/tlm_grapher/level.txt" 0x897E659A
75
+ "config/tools/tlm_grapher/power.txt" 0x84A1E1E2
76
+ "config/tools/tlm_grapher/pressure.txt" 0xAD680050
77
+ "config/tools/tlm_grapher/README.txt" 0x93B2C07E
78
+ "config/tools/tlm_grapher/temperatures.txt" 0x1D7DE415
79
+ "config/tools/tlm_grapher/temperatures_Rev2.txt" 0x6169AD4A
80
+ "config/tools/tlm_grapher/venturi.txt" 0x4B601735
81
+ "config/tools/tlm_viewer/tlm_viewer.txt" 0xD9071527
82
+ "tools/CmdExtractor" 0x96E82AC3
83
+ "tools/CmdExtractor.bat" 0x09A34857
84
+ "tools/CmdSender" 0x10346CF4
85
+ "tools/CmdSender.bat" 0x09A34857
86
+ "tools/CmdTlmServer" 0x4C7A4FCB
87
+ "tools/CmdTlmServer.bat" 0x09A34857
88
+ "tools/DataViewer" 0x9D20734C
89
+ "tools/DataViewer.bat" 0x09A34857
90
+ "tools/HandbookCreator" 0xD927814C
91
+ "tools/HandbookCreator.bat" 0x09A34857
92
+ "tools/Launcher" 0xFD4E356C
93
+ "tools/Launcher.bat" 0x09A34857
94
+ "tools/LimitsMonitor" 0x04FD96D8
95
+ "tools/LimitsMonitor.bat" 0x09A34857
96
+ "tools/mac/CmdExtractor.app/Contents/Info.plist" 0x0E89084D
97
+ "tools/mac/CmdExtractor.app/Contents/MacOS/CmdExtractor.rb" 0x96E82AC3
98
+ "tools/mac/CmdExtractor.app/Contents/MacOS/main.sh" 0xEE3EC072
99
+ "tools/mac/CmdExtractor.app/Contents/MacOS/tool_launch.rb" 0x0BDB6696
100
+ "tools/mac/CmdExtractor.app/Contents/Resources/appIcon.icns" 0x39862FA7
101
+ "tools/mac/CmdSender.app/Contents/Info.plist" 0x87039019
102
+ "tools/mac/CmdSender.app/Contents/MacOS/CmdSender.rb" 0x10346CF4
103
+ "tools/mac/CmdSender.app/Contents/MacOS/main.sh" 0x707CA873
104
+ "tools/mac/CmdSender.app/Contents/MacOS/tool_launch.rb" 0x0BDB6696
105
+ "tools/mac/CmdSender.app/Contents/Resources/appIcon.icns" 0xEC403A52
106
+ "tools/mac/CmdTlmServer.app/Contents/Info.plist" 0x97E53674
107
+ "tools/mac/CmdTlmServer.app/Contents/MacOS/CmdTlmServer.rb" 0x4C7A4FCB
108
+ "tools/mac/CmdTlmServer.app/Contents/MacOS/main.sh" 0x1F1443E6
109
+ "tools/mac/CmdTlmServer.app/Contents/MacOS/tool_launch.rb" 0x0BDB6696
110
+ "tools/mac/CmdTlmServer.app/Contents/Resources/appIcon.icns" 0x972CDCC6
111
+ "tools/mac/DataViewer.app/Contents/Info.plist" 0xB79CA16B
112
+ "tools/mac/DataViewer.app/Contents/MacOS/DataViewer.rb" 0x9D20734C
113
+ "tools/mac/DataViewer.app/Contents/MacOS/main.sh" 0xD40D9D6C
114
+ "tools/mac/DataViewer.app/Contents/MacOS/tool_launch.rb" 0x0BDB6696
115
+ "tools/mac/DataViewer.app/Contents/Resources/appIcon.icns" 0x3EC9B207
116
+ "tools/mac/HandbookCreator.app/Contents/Info.plist" 0x7591A548
117
+ "tools/mac/HandbookCreator.app/Contents/MacOS/HandbookCreator.rb" 0xD927814C
118
+ "tools/mac/HandbookCreator.app/Contents/MacOS/main.sh" 0x358F92E1
119
+ "tools/mac/HandbookCreator.app/Contents/MacOS/tool_launch.rb" 0x0BDB6696
120
+ "tools/mac/HandbookCreator.app/Contents/Resources/appIcon.icns" 0xCEA7C465
121
+ "tools/mac/Launcher.app/Contents/Info.plist" 0x32A1EF14
122
+ "tools/mac/Launcher.app/Contents/MacOS/Launcher.rb" 0xFD4E356C
123
+ "tools/mac/Launcher.app/Contents/MacOS/main.sh" 0x0B32DAE8
124
+ "tools/mac/Launcher.app/Contents/MacOS/tool_launch.rb" 0x0BDB6696
125
+ "tools/mac/Launcher.app/Contents/Resources/appIcon.icns" 0x8857CD2B
126
+ "tools/mac/LimitsMonitor.app/Contents/Info.plist" 0xAF650287
127
+ "tools/mac/LimitsMonitor.app/Contents/MacOS/LimitsMonitor.rb" 0x04FD96D8
128
+ "tools/mac/LimitsMonitor.app/Contents/MacOS/main.sh" 0xAAF1493C
129
+ "tools/mac/LimitsMonitor.app/Contents/MacOS/tool_launch.rb" 0x0BDB6696
130
+ "tools/mac/LimitsMonitor.app/Contents/Resources/appIcon.icns" 0xC98BF799
131
+ "tools/mac/OpenGLBuilder.app/Contents/Info.plist" 0x3C2E542D
132
+ "tools/mac/OpenGLBuilder.app/Contents/MacOS/main.sh" 0xAD05D35B
133
+ "tools/mac/OpenGLBuilder.app/Contents/MacOS/OpenGLBuilder.rb" 0x585EA691
134
+ "tools/mac/OpenGLBuilder.app/Contents/MacOS/tool_launch.rb" 0x0BDB6696
135
+ "tools/mac/OpenGLBuilder.app/Contents/Resources/appIcon.icns" 0x8DDBD837
136
+ "tools/mac/PacketViewer.app/Contents/Info.plist" 0x6934BF89
137
+ "tools/mac/PacketViewer.app/Contents/MacOS/main.sh" 0x47F54F98
138
+ "tools/mac/PacketViewer.app/Contents/MacOS/PacketViewer.rb" 0xF23A40BB
139
+ "tools/mac/PacketViewer.app/Contents/MacOS/tool_launch.rb" 0x0BDB6696
140
+ "tools/mac/PacketViewer.app/Contents/Resources/appIcon.icns" 0xDF373DAE
141
+ "tools/mac/Replay.app/Contents/Info.plist" 0x894AC4CF
142
+ "tools/mac/Replay.app/Contents/MacOS/main.sh" 0x42370A6F
143
+ "tools/mac/Replay.app/Contents/MacOS/Replay.rb" 0xAC00D2AD
144
+ "tools/mac/Replay.app/Contents/MacOS/tool_launch.rb" 0x0BDB6696
145
+ "tools/mac/Replay.app/Contents/Resources/appIcon.icns" 0x0E6B32E5
146
+ "tools/mac/ScriptRunner.app/Contents/Info.plist" 0x1BC8C5E9
147
+ "tools/mac/ScriptRunner.app/Contents/MacOS/main.sh" 0xCE8AE11F
148
+ "tools/mac/ScriptRunner.app/Contents/MacOS/ScriptRunner.rb" 0x20F38758
149
+ "tools/mac/ScriptRunner.app/Contents/MacOS/tool_launch.rb" 0x0BDB6696
150
+ "tools/mac/ScriptRunner.app/Contents/Resources/appIcon.icns" 0x9246743E
151
+ "tools/mac/TableManager.app/Contents/Info.plist" 0xF6A5877F
152
+ "tools/mac/TableManager.app/Contents/MacOS/main.sh" 0x68092BA9
153
+ "tools/mac/TableManager.app/Contents/MacOS/TableManager.rb" 0x71F21C88
154
+ "tools/mac/TableManager.app/Contents/MacOS/tool_launch.rb" 0x0BDB6696
155
+ "tools/mac/TableManager.app/Contents/Resources/appIcon.icns" 0xEBF5074E
156
+ "tools/mac/TestRunner.app/Contents/Info.plist" 0x482B3BA5
157
+ "tools/mac/TestRunner.app/Contents/MacOS/main.sh" 0x5A8D958C
158
+ "tools/mac/TestRunner.app/Contents/MacOS/TestRunner.rb" 0x0B0E0B8B
159
+ "tools/mac/TestRunner.app/Contents/MacOS/tool_launch.rb" 0x0BDB6696
160
+ "tools/mac/TestRunner.app/Contents/Resources/appIcon.icns" 0xC8D32D55
161
+ "tools/mac/TlmExtractor.app/Contents/Info.plist" 0x343784F4
162
+ "tools/mac/TlmExtractor.app/Contents/MacOS/main.sh" 0x348F7440
163
+ "tools/mac/TlmExtractor.app/Contents/MacOS/TlmExtractor.rb" 0x1EC4639A
164
+ "tools/mac/TlmExtractor.app/Contents/MacOS/tool_launch.rb" 0x0BDB6696
165
+ "tools/mac/TlmExtractor.app/Contents/Resources/appIcon.icns" 0x0AC88876
166
+ "tools/mac/TlmGrapher.app/Contents/Info.plist" 0x3623B978
167
+ "tools/mac/TlmGrapher.app/Contents/MacOS/main.sh" 0x7BE28DE6
168
+ "tools/mac/TlmGrapher.app/Contents/MacOS/TlmGrapher.rb" 0x9464F502
169
+ "tools/mac/TlmGrapher.app/Contents/MacOS/tool_launch.rb" 0x0BDB6696
170
+ "tools/mac/TlmGrapher.app/Contents/Resources/appIcon.icns" 0xCA324F50
171
+ "tools/mac/TlmViewer.app/Contents/Info.plist" 0x821041E0
172
+ "tools/mac/TlmViewer.app/Contents/MacOS/main.sh" 0xE2F1EAFE
173
+ "tools/mac/TlmViewer.app/Contents/MacOS/TlmViewer.rb" 0xFE723189
174
+ "tools/mac/TlmViewer.app/Contents/MacOS/tool_launch.rb" 0x0BDB6696
175
+ "tools/mac/TlmViewer.app/Contents/Resources/appIcon.icns" 0x1CBA8EB3
176
+ "tools/OpenGLBuilder" 0x585EA691
177
+ "tools/OpenGLBuilder.bat" 0x09A34857
178
+ "tools/PacketViewer" 0xF23A40BB
179
+ "tools/PacketViewer.bat" 0x09A34857
180
+ "tools/Replay" 0xAC00D2AD
181
+ "tools/Replay.bat" 0x09A34857
182
+ "tools/ScriptRunner" 0x20F38758
183
+ "tools/ScriptRunner.bat" 0x09A34857
184
+ "tools/TableManager" 0x71F21C88
185
+ "tools/TableManager.bat" 0x09A34857
186
+ "tools/TestRunner" 0x0B0E0B8B
187
+ "tools/TestRunner.bat" 0x09A34857
188
+ "tools/TlmExtractor" 0x1EC4639A
189
+ "tools/TlmExtractor.bat" 0x09A34857
190
+ "tools/TlmGrapher" 0x9464F502
191
+ "tools/TlmGrapher.bat" 0x09A34857
192
+ "tools/TlmViewer" 0xFE723189
193
+ "tools/TlmViewer.bat" 0x09A34857
194
+ "tools/ToolLaunch.bat" 0x7896E14C
195
+ "tools/tool_launch.rb" 0x0BDB6696
196
+ "procedures/auto_test.rb" 0xD7D98CDB
197
+ "procedures/handshake.rb" 0x69D9F3B2
198
+ "procedures/README.txt" 0x93B2C07E