27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
|
# File 'lib/openc3/microservices/router_microservice.rb', line 27
def handle_packet(packet)
RouterStatusModel.set(@interface.as_json(:allow_nan => true), scope: @scope)
if !packet.identified?
identified_packet = System.commands.identify(packet.buffer(false), @interface.cmd_target_names)
packet = identified_packet if identified_packet
end
unless packet.defined?
if packet.target_name and packet.packet_name
begin
defined_packet = System.commands.packet(packet.target_name, packet.packet_name)
defined_packet.received_time = packet.received_time
defined_packet.stored = packet.stored
defined_packet.buffer = packet.buffer
packet = defined_packet
rescue => err
@logger.warn "Error defining packet of #{packet.length} bytes"
end
end
end
target_name = packet.target_name
target_name = 'UNKNOWN' unless target_name
target = System.targets[target_name]
begin
begin
log_message = true log_message = false if packet.messages_disabled
packet.sorted_items.each do |item|
if item.states and item.messages_disabled
value = packet.read_item(item)
if item.messages_disabled[value]
log_message = false
break
end
end
end
if log_message
if target and target_name != 'UNKNOWN'
@logger.info System.commands.format(packet, target.ignored_parameters)
else
@logger.warn "Unidentified packet of #{packet.length} bytes being routed to target #{@interface.cmd_target_names[0]}"
end
end
rescue => err
@logger.error "Problem formatting command from router:\n#{err.formatted}"
end
RouterTopic.route_command(packet, @interface.cmd_target_names, scope: @scope)
rescue Exception => err
@error = err
@logger.error "Error routing command from #{@interface.name}\n#{err.formatted}"
end
end
|