Module: RSMP::TLC::Proxy::Control
- Included in:
- TrafficControllerProxy
- Defined in:
- lib/rsmp/tlc/proxy/control.rb
Overview
Command methods for operational control of a remote TLC. Covers functional position, emergency routes, I/O modes, signal group orders, and system settings.
Instance Method Summary collapse
-
#set_emergency_route(route:, active:, within:) ⇒ Object
M0005 — Set or clear an emergency route.
-
#set_fixed_time(status, within:) ⇒ Object
M0007 — Enable or disable fixed-time control.
-
#set_functional_position(status, within:, timeout_minutes: 0) ⇒ Object
M0001 — Set functional position (NormalControl, YellowFlash, Dark).
-
#set_traffic_situation(situation, within:) ⇒ Object
M0003 — Set traffic situation (activate a specific situation number).
-
#unset_traffic_situation(within:) ⇒ Object
M0003 — Clear the active traffic situation.
Instance Method Details
#set_emergency_route(route:, active:, within:) ⇒ Object
M0005 — Set or clear an emergency route.
21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
# File 'lib/rsmp/tlc/proxy/control.rb', line 21 def set_emergency_route(route:, active:, within:) validate_ready 'set emergency route' raise 'TLC main component not found' unless main security_code = security_code_for(2) active_str = active ? 'True' : 'False' command_list = [{ 'cCI' => 'M0005', 'cO' => 'setEmergency', 'n' => 'status', 'v' => active_str }, { 'cCI' => 'M0005', 'cO' => 'setEmergency', 'n' => 'securityCode', 'v' => security_code.to_s }, { 'cCI' => 'M0005', 'cO' => 'setEmergency', 'n' => 'emergencyroute', 'v' => route.to_s }] send_command_and_collect(command_list, within: within).ok! end |
#set_fixed_time(status, within:) ⇒ Object
M0007 — Enable or disable fixed-time control.
49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 |
# File 'lib/rsmp/tlc/proxy/control.rb', line 49 def set_fixed_time(status, within:) validate_ready 'set fixed time' raise 'TLC main component not found' unless main security_code = security_code_for(2) command_list = [{ 'cCI' => 'M0007', 'cO' => 'setFixedTime', 'n' => 'status', 'v' => status.to_s }, { 'cCI' => 'M0007', 'cO' => 'setFixedTime', 'n' => 'securityCode', 'v' => security_code.to_s }] confirm_status = [{ 'sCI' => 'S0009', 'n' => 'status', 's' => /^#{Regexp.escape(status.to_s)}(,#{Regexp.escape(status.to_s)})*$/ }] send_command_and_collect(command_list, within: within).ok! wait_for_status "fixed time #{status}", confirm_status, timeout: within end |
#set_functional_position(status, within:, timeout_minutes: 0) ⇒ Object
M0001 — Set functional position (NormalControl, YellowFlash, Dark).
8 9 10 11 12 13 14 15 16 17 18 |
# File 'lib/rsmp/tlc/proxy/control.rb', line 8 def set_functional_position(status, within:, timeout_minutes: 0) validate_ready 'set functional position' raise 'TLC main component not found' unless main command_list = functional_position_command_list(status, timeout_minutes) confirm_status = functional_position_confirm_status(status) collector = send_command_and_collect(command_list, within: within) collector.ok! wait_for_status "functional position #{status}", confirm_status, timeout: within unless confirm_status.empty? { collector: collector } end |
#set_traffic_situation(situation, within:) ⇒ Object
M0003 — Set traffic situation (activate a specific situation number).
74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 |
# File 'lib/rsmp/tlc/proxy/control.rb', line 74 def set_traffic_situation(situation, within:) validate_ready 'set traffic situation' raise 'TLC main component not found' unless main security_code = security_code_for(2) command_list = [{ 'cCI' => 'M0003', 'cO' => 'setTrafficSituation', 'n' => 'status', 'v' => 'True' }, { 'cCI' => 'M0003', 'cO' => 'setTrafficSituation', 'n' => 'securityCode', 'v' => security_code.to_s }, { 'cCI' => 'M0003', 'cO' => 'setTrafficSituation', 'n' => 'traficsituation', 'v' => situation.to_s }] confirm_status = [{ 'sCI' => 'S0015', 'n' => 'status', 's' => situation.to_s }] send_command_and_collect(command_list, within: within).ok! wait_for_status "traffic situation #{situation}", confirm_status, timeout: within end |
#unset_traffic_situation(within:) ⇒ Object
M0003 — Clear the active traffic situation.
103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 |
# File 'lib/rsmp/tlc/proxy/control.rb', line 103 def unset_traffic_situation(within:) validate_ready 'unset traffic situation' raise 'TLC main component not found' unless main security_code = security_code_for(2) command_list = [{ 'cCI' => 'M0003', 'cO' => 'setTrafficSituation', 'n' => 'status', 'v' => 'False' }, { 'cCI' => 'M0003', 'cO' => 'setTrafficSituation', 'n' => 'securityCode', 'v' => security_code.to_s }, { 'cCI' => 'M0003', 'cO' => 'setTrafficSituation', 'n' => 'traficsituation', 'v' => '1' }] confirm_status = [{ 'sCI' => 'S0015', 'n' => 'status', 's' => '1' }] send_command_and_collect(command_list, within: within).ok! wait_for_status 'traffic situation unset', confirm_status, timeout: within end |