cosmos-unpacking_interface 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.gitignore +10 -0
- data/.travis.yml +7 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +21 -0
- data/README.md +158 -0
- data/Rakefile +12 -0
- data/bin/console +14 -0
- data/bin/setup +8 -0
- data/config/data/README.txt +1 -0
- data/config/data/crc.txt +198 -0
- data/config/system/system.txt +29 -0
- data/config/targets/COSMOS/cmd_tlm/cosmos_server_cmds.txt +41 -0
- data/config/targets/COSMOS/cmd_tlm/cosmos_server_tlm.txt +15 -0
- data/config/targets/COSMOS/cmd_tlm_server.txt +6 -0
- data/config/targets/COSMOS/screens/limits_change.txt +20 -0
- data/config/targets/COSMOS/screens/version.txt +19 -0
- data/config/targets/COSMOS/target.txt +9 -0
- data/config/targets/PI/cmd_tlm/pi_tlm_test.txt +12 -0
- data/config/targets/PI/cmd_tlm/pi_tlm_test_1.txt +13 -0
- data/config/targets/PI/cmd_tlm/pi_tlm_test_2.txt +68 -0
- data/config/targets/PI/cmd_tlm/pi_tlm_test_3.txt +12 -0
- data/config/targets/PI/cmd_tlm_server.txt +4 -0
- data/config/targets/PI/target.txt +4 -0
- data/cosmos-unpacking_interface.gemspec +34 -0
- data/doc/Cosmos.html +98 -0
- data/doc/Cosmos/AggregatePacketMapper.html +152 -0
- data/doc/Cosmos/AggregatePacketProcesser.html +249 -0
- data/doc/Cosmos/BaseNameMap.html +364 -0
- data/doc/Cosmos/UnpackingInterface.html +399 -0
- data/doc/UnpackingInterface.html +110 -0
- data/doc/created.rid +7 -0
- data/doc/css/fonts.css +167 -0
- data/doc/css/rdoc.css +590 -0
- data/doc/fonts/Lato-Light.ttf +0 -0
- data/doc/fonts/Lato-LightItalic.ttf +0 -0
- data/doc/fonts/Lato-Regular.ttf +0 -0
- data/doc/fonts/Lato-RegularItalic.ttf +0 -0
- data/doc/fonts/SourceCodePro-Bold.ttf +0 -0
- data/doc/fonts/SourceCodePro-Regular.ttf +0 -0
- data/doc/images/add.png +0 -0
- data/doc/images/arrow_up.png +0 -0
- data/doc/images/brick.png +0 -0
- data/doc/images/brick_link.png +0 -0
- data/doc/images/bug.png +0 -0
- data/doc/images/bullet_black.png +0 -0
- data/doc/images/bullet_toggle_minus.png +0 -0
- data/doc/images/bullet_toggle_plus.png +0 -0
- data/doc/images/date.png +0 -0
- data/doc/images/delete.png +0 -0
- data/doc/images/find.png +0 -0
- data/doc/images/loadingAnimation.gif +0 -0
- data/doc/images/macFFBgHack.png +0 -0
- data/doc/images/package.png +0 -0
- data/doc/images/page_green.png +0 -0
- data/doc/images/page_white_text.png +0 -0
- data/doc/images/page_white_width.png +0 -0
- data/doc/images/plugin.png +0 -0
- data/doc/images/ruby.png +0 -0
- data/doc/images/tag_blue.png +0 -0
- data/doc/images/tag_green.png +0 -0
- data/doc/images/transparent.png +0 -0
- data/doc/images/wrench.png +0 -0
- data/doc/images/wrench_orange.png +0 -0
- data/doc/images/zoom.png +0 -0
- data/doc/index.html +91 -0
- data/doc/js/darkfish.js +161 -0
- data/doc/js/jquery.js +4 -0
- data/doc/js/navigation.js +141 -0
- data/doc/js/navigation.js.gz +0 -0
- data/doc/js/search.js +109 -0
- data/doc/js/search_index.js +1 -0
- data/doc/js/search_index.js.gz +0 -0
- data/doc/js/searcher.js +229 -0
- data/doc/js/searcher.js.gz +0 -0
- data/doc/lib/README_rdoc.html +118 -0
- data/doc/table_of_contents.html +140 -0
- data/lib/cosmos/unpacking_interface.rb +14 -0
- data/lib/cosmos/unpacking_interface/aggregate_packet_mapper.rb +14 -0
- data/lib/cosmos/unpacking_interface/aggregate_packet_processor.rb +42 -0
- data/lib/cosmos/unpacking_interface/base_name_map.rb +67 -0
- data/lib/cosmos/unpacking_interface/unpacking_interface.rb +87 -0
- data/lib/cosmos/unpacking_interface/version.rb +3 -0
- metadata +174 -0
@@ -0,0 +1,140 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
|
3
|
+
<html>
|
4
|
+
<head>
|
5
|
+
<meta charset="UTF-8">
|
6
|
+
|
7
|
+
<title>Table of Contents - RDoc Documentation</title>
|
8
|
+
|
9
|
+
<script type="text/javascript">
|
10
|
+
var rdoc_rel_prefix = "./";
|
11
|
+
var index_rel_prefix = "./";
|
12
|
+
</script>
|
13
|
+
|
14
|
+
<script src="./js/jquery.js"></script>
|
15
|
+
<script src="./js/darkfish.js"></script>
|
16
|
+
|
17
|
+
<link href="./css/fonts.css" rel="stylesheet">
|
18
|
+
<link href="./css/rdoc.css" rel="stylesheet">
|
19
|
+
|
20
|
+
|
21
|
+
|
22
|
+
<body id="top" class="table-of-contents">
|
23
|
+
<main role="main">
|
24
|
+
<h1 class="class">Table of Contents - RDoc Documentation</h1>
|
25
|
+
|
26
|
+
|
27
|
+
<h2 id="classes">Classes and Modules</h2>
|
28
|
+
<ul>
|
29
|
+
<li class="module">
|
30
|
+
<a href="Cosmos.html">Cosmos</a>
|
31
|
+
</li>
|
32
|
+
<li class="class">
|
33
|
+
<a href="Cosmos/AggregatePacketMapper.html">Cosmos::AggregatePacketMapper</a>
|
34
|
+
</li>
|
35
|
+
<li class="class">
|
36
|
+
<a href="Cosmos/AggregatePacketProcesser.html">Cosmos::AggregatePacketProcesser</a>
|
37
|
+
</li>
|
38
|
+
<li class="class">
|
39
|
+
<a href="Cosmos/BaseNameMap.html">Cosmos::BaseNameMap</a>
|
40
|
+
</li>
|
41
|
+
<li class="class">
|
42
|
+
<a href="Cosmos/UnpackingInterface.html">Cosmos::UnpackingInterface</a>
|
43
|
+
</li>
|
44
|
+
<li class="module">
|
45
|
+
<a href="UnpackingInterface.html">UnpackingInterface</a>
|
46
|
+
</li>
|
47
|
+
</ul>
|
48
|
+
|
49
|
+
<h2 id="methods">Methods</h2>
|
50
|
+
<ul>
|
51
|
+
|
52
|
+
<li class="method">
|
53
|
+
<a href="Cosmos/AggregatePacketProcesser.html#method-c-new">::new</a>
|
54
|
+
—
|
55
|
+
<span class="container">Cosmos::AggregatePacketProcesser</span>
|
56
|
+
|
57
|
+
<li class="method">
|
58
|
+
<a href="Cosmos/BaseNameMap.html#method-c-new">::new</a>
|
59
|
+
—
|
60
|
+
<span class="container">Cosmos::BaseNameMap</span>
|
61
|
+
|
62
|
+
<li class="method">
|
63
|
+
<a href="Cosmos/AggregatePacketProcesser.html#method-i-_extract_map">#_extract_map</a>
|
64
|
+
—
|
65
|
+
<span class="container">Cosmos::AggregatePacketProcesser</span>
|
66
|
+
|
67
|
+
<li class="method">
|
68
|
+
<a href="Cosmos/BaseNameMap.html#method-i-_field_arity">#_field_arity</a>
|
69
|
+
—
|
70
|
+
<span class="container">Cosmos::BaseNameMap</span>
|
71
|
+
|
72
|
+
<li class="method">
|
73
|
+
<a href="Cosmos/BaseNameMap.html#method-i-_max_arity">#_max_arity</a>
|
74
|
+
—
|
75
|
+
<span class="container">Cosmos::BaseNameMap</span>
|
76
|
+
|
77
|
+
<li class="method">
|
78
|
+
<a href="Cosmos/UnpackingInterface.html#method-i-agg_pkt_map">#agg_pkt_map</a>
|
79
|
+
—
|
80
|
+
<span class="container">Cosmos::UnpackingInterface</span>
|
81
|
+
|
82
|
+
<li class="method">
|
83
|
+
<a href="Cosmos/AggregatePacketMapper.html#method-i-build_map">#build_map</a>
|
84
|
+
—
|
85
|
+
<span class="container">Cosmos::AggregatePacketMapper</span>
|
86
|
+
|
87
|
+
<li class="method">
|
88
|
+
<a href="Cosmos/UnpackingInterface.html#method-i-connect">#connect</a>
|
89
|
+
—
|
90
|
+
<span class="container">Cosmos::UnpackingInterface</span>
|
91
|
+
|
92
|
+
<li class="method">
|
93
|
+
<a href="Cosmos/BaseNameMap.html#method-i-extract_all">#extract_all</a>
|
94
|
+
—
|
95
|
+
<span class="container">Cosmos::BaseNameMap</span>
|
96
|
+
|
97
|
+
<li class="method">
|
98
|
+
<a href="Cosmos/UnpackingInterface.html#method-i-packet_mapper">#packet_mapper</a>
|
99
|
+
—
|
100
|
+
<span class="container">Cosmos::UnpackingInterface</span>
|
101
|
+
|
102
|
+
<li class="method">
|
103
|
+
<a href="Cosmos/UnpackingInterface.html#method-i-process">#process</a>
|
104
|
+
—
|
105
|
+
<span class="container">Cosmos::UnpackingInterface</span>
|
106
|
+
|
107
|
+
<li class="method">
|
108
|
+
<a href="Cosmos/UnpackingInterface.html#method-i-read">#read</a>
|
109
|
+
—
|
110
|
+
<span class="container">Cosmos::UnpackingInterface</span>
|
111
|
+
|
112
|
+
<li class="method">
|
113
|
+
<a href="Cosmos/BaseNameMap.html#method-i-size">#size</a>
|
114
|
+
—
|
115
|
+
<span class="container">Cosmos::BaseNameMap</span>
|
116
|
+
|
117
|
+
<li class="method">
|
118
|
+
<a href="Cosmos/UnpackingInterface.html#method-i-target">#target</a>
|
119
|
+
—
|
120
|
+
<span class="container">Cosmos::UnpackingInterface</span>
|
121
|
+
|
122
|
+
<li class="method">
|
123
|
+
<a href="Cosmos/UnpackingInterface.html#method-i-transforms">#transforms</a>
|
124
|
+
—
|
125
|
+
<span class="container">Cosmos::UnpackingInterface</span>
|
126
|
+
|
127
|
+
<li class="method">
|
128
|
+
<a href="Cosmos/AggregatePacketProcesser.html#method-i-unpack">#unpack</a>
|
129
|
+
—
|
130
|
+
<span class="container">Cosmos::AggregatePacketProcesser</span>
|
131
|
+
</ul>
|
132
|
+
</main>
|
133
|
+
|
134
|
+
|
135
|
+
<footer id="validator-badges" role="contentinfo">
|
136
|
+
<p><a href="https://validator.w3.org/check/referer">Validate</a>
|
137
|
+
<p>Generated by <a href="https://ruby.github.io/rdoc/">RDoc</a> 6.1.1.
|
138
|
+
<p>Based on <a href="http://deveiate.org/projects/Darkfish-RDoc/">Darkfish</a> by <a href="http://deveiate.org">Michael Granger</a>.
|
139
|
+
</footer>
|
140
|
+
|
@@ -0,0 +1,14 @@
|
|
1
|
+
require "cosmos/unpacking_interface/version"
|
2
|
+
##
|
3
|
+
# A custom extendable interface that unpacks aggregate packets (packets with many granules) into many
|
4
|
+
# simple packets (packets with a single granule). 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
|
+
module UnpackingInterface
|
9
|
+
end
|
10
|
+
|
11
|
+
require "cosmos/unpacking_interface/base_name_map"
|
12
|
+
require "cosmos/unpacking_interface/aggregate_packet_mapper"
|
13
|
+
require "cosmos/unpacking_interface/aggregate_packet_processor"
|
14
|
+
require "cosmos/unpacking_interface/unpacking_interface"
|
@@ -0,0 +1,14 @@
|
|
1
|
+
##
|
2
|
+
# Encapsulates the conversion of an aggregate packet into a BaseNameMap, our
|
3
|
+
# internal representation of the fields in an aggregate packet
|
4
|
+
|
5
|
+
module Cosmos
|
6
|
+
class AggregatePacketMapper
|
7
|
+
|
8
|
+
##
|
9
|
+
# Builds a BaseNameMap from a cosmos aggregate packet
|
10
|
+
def build_map(packet)
|
11
|
+
BaseNameMap.new({}, packet.packet_name)
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
@@ -0,0 +1,42 @@
|
|
1
|
+
|
2
|
+
module Cosmos
|
3
|
+
|
4
|
+
##
|
5
|
+
# Encapsulates the transformation of an aggregate packet into many simple packets
|
6
|
+
class AggregatePacketProcesser
|
7
|
+
|
8
|
+
def initialize(mapper, transforms = {})
|
9
|
+
@mapper = mapper
|
10
|
+
@transforms = transforms
|
11
|
+
end
|
12
|
+
|
13
|
+
##
|
14
|
+
# Converts the aggregate packet into an array of simple packets.
|
15
|
+
def unpack(packet, target, item)
|
16
|
+
values_map = @mapper.build_map(packet) #
|
17
|
+
_extract_map(values_map, target, item)
|
18
|
+
end
|
19
|
+
|
20
|
+
##
|
21
|
+
# Extract our internal BaseNameMap into an array of packets of type target/item, applying
|
22
|
+
# transformations if applicable
|
23
|
+
def _extract_map(map, target, item)
|
24
|
+
map.extract_all.each_with_index.map do |m, i|
|
25
|
+
keys = m.keys
|
26
|
+
pkt = System.telemetry.packet(target, item).clone
|
27
|
+
|
28
|
+
keys.reduce(pkt) do |p, key|
|
29
|
+
value = m[key]
|
30
|
+
transform_key = [target, item, key].join("-")
|
31
|
+
|
32
|
+
if @transforms[transform_key]
|
33
|
+
p.write(key, @transforms[transform_key].call(target, item, key, value, i))
|
34
|
+
else
|
35
|
+
p.write(key, value)
|
36
|
+
end
|
37
|
+
p
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
@@ -0,0 +1,67 @@
|
|
1
|
+
##
|
2
|
+
# Internal respresentation of an aggregate packet
|
3
|
+
module Cosmos
|
4
|
+
class BaseNameMap
|
5
|
+
attr_accessor :map, :name
|
6
|
+
|
7
|
+
##
|
8
|
+
# map is a hash where keys are normalized item names (i.e. VALUE_A instead of VALUE_A_0) and
|
9
|
+
# values are arrays of all the values whose original keys (VALUE_A_x) mapped to that value. For example:
|
10
|
+
# { 'VALUE_A' => [1,2,3]}.
|
11
|
+
#
|
12
|
+
# name is the name of the packet
|
13
|
+
def initialize(map, name)
|
14
|
+
@map = map
|
15
|
+
@name = name # packet name
|
16
|
+
end
|
17
|
+
|
18
|
+
##
|
19
|
+
# Number of simple packets contained within the aggregate packet
|
20
|
+
def size
|
21
|
+
if @map.empty?
|
22
|
+
return 0
|
23
|
+
else
|
24
|
+
_max_arity
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
def _max_arity
|
29
|
+
return 0 if @map.empty?
|
30
|
+
@map.max_by {|k, v| v.length}.last.length
|
31
|
+
end
|
32
|
+
|
33
|
+
def _field_arity(k)
|
34
|
+
result = @map[k]
|
35
|
+
if result.nil?
|
36
|
+
0
|
37
|
+
else
|
38
|
+
result.length
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
##
|
43
|
+
# Expands map of keys to arrays of values into a single array containing hashes where
|
44
|
+
# each key maps to only a single value
|
45
|
+
# i.e. {'VALUE_A' => [1,2]} => [{'VALUE_A' => 1}, {'VALUE_A' => 2}]
|
46
|
+
def extract_all
|
47
|
+
max = _max_arity
|
48
|
+
range = if(max > 0)
|
49
|
+
[*0..(max - 1)]
|
50
|
+
else
|
51
|
+
[0]
|
52
|
+
end
|
53
|
+
|
54
|
+
range.map do |i|
|
55
|
+
keys = @map.keys
|
56
|
+
keys.reduce({}) do |acc, k|
|
57
|
+
if(_field_arity(k) == 1)
|
58
|
+
acc[k] = @map[k].first
|
59
|
+
else
|
60
|
+
acc[k] = @map[k][i]
|
61
|
+
end
|
62
|
+
acc
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
@@ -0,0 +1,87 @@
|
|
1
|
+
require 'cosmos'
|
2
|
+
require 'cosmos/interfaces/tcpip_server_interface'
|
3
|
+
|
4
|
+
|
5
|
+
|
6
|
+
module Cosmos
|
7
|
+
##
|
8
|
+
# A custom interface that unpacks aggregate packets (packets with many granules) into many
|
9
|
+
# simple packets (packets with a single granule). This way we can use all the cosmos niceties
|
10
|
+
# without having to send packets for individual measurements. Essentially we unpack an aggregate
|
11
|
+
# packet into many packets that are stored in a queue that is read from. When the queue is empty
|
12
|
+
# we look for new aggregate packets
|
13
|
+
class UnpackingInterface < TcpipServerInterface
|
14
|
+
##
|
15
|
+
# Transformations defined on an item in a simple packet. Entries should be of the
|
16
|
+
# form: "<TARGET>-<PACKET_NAME>-<ITEM_NAME>" => Proc
|
17
|
+
# where the proc can accept the following parameters TargetName, ItemName, key, value, index
|
18
|
+
# index is the index of the granule in the aggregate packet that was transformed into the simple packet
|
19
|
+
# More info about procs can be found here: https://ruby-doc.org/core-2.4.1/Proc.html
|
20
|
+
def transforms
|
21
|
+
{}
|
22
|
+
end
|
23
|
+
|
24
|
+
##
|
25
|
+
# Maps aggregate packets (packets with many granules) to simple packets (packets with a single granule)
|
26
|
+
# should have the form 'AggregatePacket' => 'SimplePacket'
|
27
|
+
# For example: 'Science' => 'Science2'
|
28
|
+
def agg_pkt_map
|
29
|
+
{}
|
30
|
+
end
|
31
|
+
|
32
|
+
##
|
33
|
+
# Cosmos target interface is being used with
|
34
|
+
def target
|
35
|
+
""
|
36
|
+
end
|
37
|
+
|
38
|
+
##
|
39
|
+
# Create and return a new instance of your own custom PacketMapper
|
40
|
+
def packet_mapper
|
41
|
+
PacketMapper.new
|
42
|
+
end
|
43
|
+
|
44
|
+
def connect
|
45
|
+
@derived_queue = []
|
46
|
+
super()
|
47
|
+
end
|
48
|
+
|
49
|
+
|
50
|
+
##
|
51
|
+
# Unpack an aggregate packet if necessary and add resulting packets to the internal FIFO queue
|
52
|
+
def process(packet:, target:, agg_packet:, simple_packet:)
|
53
|
+
agg_pkt = System.telemetry.packet(target, agg_packet)
|
54
|
+
if(agg_pkt.identify?(packet.buffer))
|
55
|
+
processor = AggregatePacketProcesser.new(packet_mapper, transforms)
|
56
|
+
agg_pkt.buffer = packet.buffer.clone
|
57
|
+
result = processor.unpack(agg_pkt, target, simple_packet)
|
58
|
+
|
59
|
+
@derived_queue.concat(result)
|
60
|
+
end
|
61
|
+
return packet
|
62
|
+
end
|
63
|
+
|
64
|
+
##
|
65
|
+
# This method is called by COSMOS internally, essentially if we have packets on the queue read those
|
66
|
+
# otherwise wait for a packet, and unpack if necessary
|
67
|
+
def read
|
68
|
+
if !@derived_queue.empty?
|
69
|
+
p1 = @derived_queue.shift
|
70
|
+
return p1
|
71
|
+
else
|
72
|
+
|
73
|
+
# This is a blocking call to wait for an actual packet to come over the wire
|
74
|
+
packet = super()
|
75
|
+
|
76
|
+
agg_pkt_map.select do |agg_packet, simple_packet|
|
77
|
+
agg_pkt = System.telemetry.packet(target, agg_packet)
|
78
|
+
if(agg_pkt.identify?(packet.buffer))
|
79
|
+
process(packet: packet, target: target, agg_packet: agg_packet, simple_packet: simple_packet)
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
83
|
+
return packet
|
84
|
+
end
|
85
|
+
end
|
86
|
+
end
|
87
|
+
end
|
metadata
ADDED
@@ -0,0 +1,174 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: cosmos-unpacking_interface
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.0.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Center for Space Engineering
|
8
|
+
- Nick Benoit
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2019-04-20 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: bundler
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
requirements:
|
18
|
+
- - "~>"
|
19
|
+
- !ruby/object:Gem::Version
|
20
|
+
version: '1.3'
|
21
|
+
type: :development
|
22
|
+
prerelease: false
|
23
|
+
version_requirements: !ruby/object:Gem::Requirement
|
24
|
+
requirements:
|
25
|
+
- - "~>"
|
26
|
+
- !ruby/object:Gem::Version
|
27
|
+
version: '1.3'
|
28
|
+
- !ruby/object:Gem::Dependency
|
29
|
+
name: rake
|
30
|
+
requirement: !ruby/object:Gem::Requirement
|
31
|
+
requirements:
|
32
|
+
- - "~>"
|
33
|
+
- !ruby/object:Gem::Version
|
34
|
+
version: '10.0'
|
35
|
+
type: :development
|
36
|
+
prerelease: false
|
37
|
+
version_requirements: !ruby/object:Gem::Requirement
|
38
|
+
requirements:
|
39
|
+
- - "~>"
|
40
|
+
- !ruby/object:Gem::Version
|
41
|
+
version: '10.0'
|
42
|
+
- !ruby/object:Gem::Dependency
|
43
|
+
name: cosmos
|
44
|
+
requirement: !ruby/object:Gem::Requirement
|
45
|
+
requirements:
|
46
|
+
- - '='
|
47
|
+
- !ruby/object:Gem::Version
|
48
|
+
version: '4.3'
|
49
|
+
type: :runtime
|
50
|
+
prerelease: false
|
51
|
+
version_requirements: !ruby/object:Gem::Requirement
|
52
|
+
requirements:
|
53
|
+
- - '='
|
54
|
+
- !ruby/object:Gem::Version
|
55
|
+
version: '4.3'
|
56
|
+
description:
|
57
|
+
email:
|
58
|
+
- cse@engineering.usu.edu
|
59
|
+
- nick.benoit14@gmail.com
|
60
|
+
executables: []
|
61
|
+
extensions: []
|
62
|
+
extra_rdoc_files: []
|
63
|
+
files:
|
64
|
+
- ".gitignore"
|
65
|
+
- ".travis.yml"
|
66
|
+
- Gemfile
|
67
|
+
- LICENSE.txt
|
68
|
+
- README.md
|
69
|
+
- Rakefile
|
70
|
+
- bin/console
|
71
|
+
- bin/setup
|
72
|
+
- config/data/README.txt
|
73
|
+
- config/data/crc.txt
|
74
|
+
- config/system/system.txt
|
75
|
+
- config/targets/COSMOS/cmd_tlm/cosmos_server_cmds.txt
|
76
|
+
- config/targets/COSMOS/cmd_tlm/cosmos_server_tlm.txt
|
77
|
+
- config/targets/COSMOS/cmd_tlm_server.txt
|
78
|
+
- config/targets/COSMOS/screens/limits_change.txt
|
79
|
+
- config/targets/COSMOS/screens/version.txt
|
80
|
+
- config/targets/COSMOS/target.txt
|
81
|
+
- config/targets/PI/cmd_tlm/pi_tlm_test.txt
|
82
|
+
- config/targets/PI/cmd_tlm/pi_tlm_test_1.txt
|
83
|
+
- config/targets/PI/cmd_tlm/pi_tlm_test_2.txt
|
84
|
+
- config/targets/PI/cmd_tlm/pi_tlm_test_3.txt
|
85
|
+
- config/targets/PI/cmd_tlm_server.txt
|
86
|
+
- config/targets/PI/target.txt
|
87
|
+
- cosmos-unpacking_interface.gemspec
|
88
|
+
- doc/Cosmos.html
|
89
|
+
- doc/Cosmos/AggregatePacketMapper.html
|
90
|
+
- doc/Cosmos/AggregatePacketProcesser.html
|
91
|
+
- doc/Cosmos/BaseNameMap.html
|
92
|
+
- doc/Cosmos/UnpackingInterface.html
|
93
|
+
- doc/UnpackingInterface.html
|
94
|
+
- doc/created.rid
|
95
|
+
- doc/css/fonts.css
|
96
|
+
- doc/css/rdoc.css
|
97
|
+
- doc/fonts/Lato-Light.ttf
|
98
|
+
- doc/fonts/Lato-LightItalic.ttf
|
99
|
+
- doc/fonts/Lato-Regular.ttf
|
100
|
+
- doc/fonts/Lato-RegularItalic.ttf
|
101
|
+
- doc/fonts/SourceCodePro-Bold.ttf
|
102
|
+
- doc/fonts/SourceCodePro-Regular.ttf
|
103
|
+
- doc/images/add.png
|
104
|
+
- doc/images/arrow_up.png
|
105
|
+
- doc/images/brick.png
|
106
|
+
- doc/images/brick_link.png
|
107
|
+
- doc/images/bug.png
|
108
|
+
- doc/images/bullet_black.png
|
109
|
+
- doc/images/bullet_toggle_minus.png
|
110
|
+
- doc/images/bullet_toggle_plus.png
|
111
|
+
- doc/images/date.png
|
112
|
+
- doc/images/delete.png
|
113
|
+
- doc/images/find.png
|
114
|
+
- doc/images/loadingAnimation.gif
|
115
|
+
- doc/images/macFFBgHack.png
|
116
|
+
- doc/images/package.png
|
117
|
+
- doc/images/page_green.png
|
118
|
+
- doc/images/page_white_text.png
|
119
|
+
- doc/images/page_white_width.png
|
120
|
+
- doc/images/plugin.png
|
121
|
+
- doc/images/ruby.png
|
122
|
+
- doc/images/tag_blue.png
|
123
|
+
- doc/images/tag_green.png
|
124
|
+
- doc/images/transparent.png
|
125
|
+
- doc/images/wrench.png
|
126
|
+
- doc/images/wrench_orange.png
|
127
|
+
- doc/images/zoom.png
|
128
|
+
- doc/index.html
|
129
|
+
- doc/js/darkfish.js
|
130
|
+
- doc/js/jquery.js
|
131
|
+
- doc/js/navigation.js
|
132
|
+
- doc/js/navigation.js.gz
|
133
|
+
- doc/js/search.js
|
134
|
+
- doc/js/search_index.js
|
135
|
+
- doc/js/search_index.js.gz
|
136
|
+
- doc/js/searcher.js
|
137
|
+
- doc/js/searcher.js.gz
|
138
|
+
- doc/lib/README_rdoc.html
|
139
|
+
- doc/table_of_contents.html
|
140
|
+
- lib/cosmos/unpacking_interface.rb
|
141
|
+
- lib/cosmos/unpacking_interface/aggregate_packet_mapper.rb
|
142
|
+
- lib/cosmos/unpacking_interface/aggregate_packet_processor.rb
|
143
|
+
- lib/cosmos/unpacking_interface/base_name_map.rb
|
144
|
+
- lib/cosmos/unpacking_interface/unpacking_interface.rb
|
145
|
+
- lib/cosmos/unpacking_interface/version.rb
|
146
|
+
homepage: https://github.com/nick-benoit14/cosmos-unpacking_interface
|
147
|
+
licenses:
|
148
|
+
- MIT
|
149
|
+
metadata: {}
|
150
|
+
post_install_message:
|
151
|
+
rdoc_options: []
|
152
|
+
require_paths:
|
153
|
+
- lib
|
154
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
155
|
+
requirements:
|
156
|
+
- - ">="
|
157
|
+
- !ruby/object:Gem::Version
|
158
|
+
version: '0'
|
159
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
160
|
+
requirements:
|
161
|
+
- - ">="
|
162
|
+
- !ruby/object:Gem::Version
|
163
|
+
version: '0'
|
164
|
+
requirements: []
|
165
|
+
rubyforge_project:
|
166
|
+
rubygems_version: 2.4.8
|
167
|
+
signing_key:
|
168
|
+
specification_version: 4
|
169
|
+
summary: A custom interface that unpacks aggregate packets (packets with many granules)
|
170
|
+
into many simple packets (packets with a single granule). This way we can use all
|
171
|
+
the cosmos niceties without having to send packets for individual measurements.
|
172
|
+
Essentially we unpack an aggregate packet into many packets that are stored in
|
173
|
+
a queue that is read from. When the queue is empty we look for new aggregate packets
|
174
|
+
test_files: []
|