BakeoutController-Basic  0.1
A Controller for the Omicron vacuum chamber
main/java/kernel/models/Kernel.java
1 package kernel.models;
2 
12 import org.jetbrains.annotations.Contract;
13 import org.jetbrains.annotations.NotNull;
14 import org.slf4j.Logger;
15 import org.slf4j.LoggerFactory;
16 
17 import java.util.List;
18 
23 public final class Kernel implements kernel.Kernel, CommPortReporter {
24 
29  private static final Logger log = LoggerFactory.getLogger(Kernel.class);
30 
34  private PortDriver portDriver;
35 
39  private kernel.models.DeviceContainer deviceRegistry;
40 
44  private kernel.models.VariableProviderContainer variableProviders;
45 
50  tdkLambdaPowerSupplyFactory;
51 
57  pvCiPressureGaugeFactory;
58 
63  private TaskRunner runner = new kernel.models.TaskRunner();
64 
69  public Kernel(PortDriver portDriver){
70  this.portDriver = portDriver;
71  this.deviceRegistry = new kernel.models.DeviceContainer();
72  createTDKLambdaPowerSupplyFactory();
73 
74  log.info("Started kernel {}", this.toString());
75 
76  createPVCIPressureGaugeFactory();
77  createVariableProviderRegistry();
78  }
79 
84  @Contract(pure = true)
86  return this;
87  }
88 
92  @Override public List<String> getSerialPortNames(){
93  List<String> portNames = this.portDriver.getSerialPortNames();
94  handleLogging(portNames);
95  return portNames;
96  }
97 
103  @NotNull
104  @Override public Boolean isPortInUse(String portName){
105  SerialPort port = portDriver.getPortByName(portName);
106  return port.isPortOpen();
107  }
108 
113  @Override
115  return this.portDriver;
116  }
117 
122  @Contract(pure = true)
123  @Override
125  return this.deviceRegistry;
126  }
127 
132  @Contract(pure = true)
133  @Override
135  return this.deviceRegistry;
136  }
137 
142  @Override
144  return this.tdkLambdaPowerSupplyFactory;
145  }
146 
150  @Contract(" -> !null")
151  @Override
153  return new ModBusConnectionManager();
154  }
155 
160  @Override
163  return this.pvCiPressureGaugeFactory;
164  }
165 
170  @Contract(pure = true)
171  @Override
173  return this.variableProviders;
174  }
175 
179  @Contract(pure = true)
180  @Override
183  return this.variableProviders;
184  }
185 
190  @Override
192  return this.runner;
193  }
194 
198  @Override
199  public void setTaskRunner(TaskRunner runner){
200  this.runner = runner;
201  }
202 
208  private void createTDKLambdaPowerSupplyFactory(){
209  this.tdkLambdaPowerSupplyFactory = new kernel.models
211  this.tdkLambdaPowerSupplyFactory.setKernel(this);
212  }
213 
218  private void createPVCIPressureGaugeFactory(){
219  this.pvCiPressureGaugeFactory = new PVCiPressureGaugeFactory();
220  this.pvCiPressureGaugeFactory.setKernel(this);
221  }
222 
226  private void createVariableProviderRegistry(){
227  this.variableProviders = new kernel.models.VariableProviderContainer();
228  }
229 
236  private void handleLogging(List<String> portNames){
237  if (portNames.isEmpty()) {
238  writeLogEntryForEmptyList();
239  } else {
240  writeLogEntryForPortsDetected(portNames);
241  }
242  }
243 
248  private void writeLogEntryForEmptyList(){
249  log.warn("Kernel {} has not detected any available serial ports",
250  this.toString());
251  }
252 
257  private void writeLogEntryForPortsDetected(List<String> portNames){
258  for (String portName: portNames){
259  log.info("Kernel {} detected serial port {}", this, portName);
260  }
261  }
262 }
kernel.views.VariableProviderContainer getVariableProvidersView()
SerialPort getPortByName(String portName)
Boolean isPortInUse(String portName)
VariableProviderContainer getVariableProvidersController()
void setTaskRunner(TaskRunner runner)
List< String > getSerialPortNames()
kernel.controllers.PVCiPressureGaugeFactory getPressureGaugeFactory()
kernel.controllers.DeviceRegistry getDeviceRegistryController()
TDKLambdaPowerSupplyFactory getPowerSupplyFactory()
Git Repo