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

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