Package com.googlecode.grt192.HH11.deploy

Source Code of com.googlecode.grt192.HH11.deploy.HauntedHouse

package com.googlecode.grt192.HH11.deploy;

import com.googlecode.grt192.HH11.actuator.ISolenoid;
import com.googlecode.grt192.HH11.actuator.PneumaticActuatorDisplay;
import com.googlecode.grt192.HH11.controller.HHController;
import com.googlecode.grt192.HH11.mechanism.HHMechanism;
import com.googlecode.grt192.HH11.sensor.HHSafety;
import com.googlecode.grt192.HH11.sensor.HHToggleSwitch;
import com.googlecode.grt192.HH11.sensor.IHHSwitch;
import com.googlecode.grt192.HH11.sensor.SwitchDisplay;
import com.googlecode.grtframework.rpc.RPCConnection;
import com.googlecode.grtframework.sensor.ISwitch;
import com.googlecode.grtframework.vis.Displayer;

/**
* A HauntedHouse controls a set of linear actuators.
*
* The HauntedHouse can simulate and visualize all components.
*
* Actuators are always visualized.
*
* Switches can be selected for simulation but switching between switches
* shouldn't require rerun of code things that listen to them will
*
* Switches are always visualized.
*
* @author ajc
*
*/
public class HauntedHouse {

  private final String crioAddress;
  private final int crioPort;
  private final String usbPort;
  private final int masterRPCKey;
  private final int autoRPCKey;
  private final int[] switchRPCKeys;
  private final int[] actuatorRPCkeys;
  private final int numMechs;

  RPCConnection crioRPC;
  RPCConnection spotRPC;

  Displayer houseDisplay;
  // JFrame house;

  Displayer switchDisplay;
  // JFrame switches;

  ISwitch masterButtonSim;
  ISwitch masterButtonRPC;
  SwitchDisplay masterButtonDisplay;

  ISwitch autoButtonSim;
  ISwitch autoButtonRPC;
  SwitchDisplay autoButtonDisplay;

  ISwitch[] switchSims;
  ISwitch[] switchRPCs;
  SwitchDisplay[] switchDisplays;

  PneumaticActuatorDisplay[] actuatorSims;
  ISolenoid[] actuatorRPCs;

  HHSafety safetyButton;

  IHHSwitch[] switches;

  HHMechanism[] mechanisms;

  HHController[] controllers;

  public HauntedHouse(String crioAddress, int crioPort, String usbPort,
      Displayer houseDisplay, Displayer switchDisplay,
      ISwitch masterButtonSim, int masterRPCKey,
      SwitchDisplay masterButtonDisplay, ISwitch autoButtonSim,
      int autoRPCKey, SwitchDisplay autoButtonDisplay,
      ISwitch[] switchSims, SwitchDisplay[] switchDisplays,
      int[] switchRPCKeys, PneumaticActuatorDisplay[] actuatorSims,
      int[] actuatorRPCkeys, int numMechs, int[][] waitTimes) {
    this.crioAddress = crioAddress;
    this.crioPort = crioPort;
    this.usbPort = usbPort;
    this.houseDisplay = houseDisplay;
    this.switchDisplay = switchDisplay;
    this.masterButtonSim = masterButtonSim;
    this.masterRPCKey = masterRPCKey;
    this.autoRPCKey = autoRPCKey;
    this.switchRPCKeys = switchRPCKeys;
    this.actuatorRPCkeys = actuatorRPCkeys;
    this.numMechs = numMechs;
    // this.masterButtonRPC = masterButtonRPC;
    this.masterButtonDisplay = masterButtonDisplay;
    this.autoButtonSim = autoButtonSim;
    // this.autoButtonRPC = autoButtonRPC;
    this.autoButtonDisplay = autoButtonDisplay;
    this.switchSims = switchSims;
    // this.switchRPCs = switchRPCs;
    this.switchDisplays = switchDisplays;
    this.actuatorSims = actuatorSims;
    // this.actuatorRPCs = actuatorRPCs;
    // this.safetyButton = safetyButton;
    // this.mechanisms = mechanisms;
    // this.controllers = controllers;

    safetyButton = new HHSafety(masterButtonSim);

    switches = new IHHSwitch[numMechs];
    mechanisms = new HHMechanism[numMechs];
    controllers = new HHController[numMechs];
    for (int i = 0; i < numMechs; i++) {
      switches[i] = new HHToggleSwitch(autoButtonSim, switchSims[i]);

      mechanisms[i] = new HHMechanism(
          new ISolenoid[] { this.actuatorSims[i] }, safetyButton);
      // safetyButton.addSafetyListener(mechanisms[i]);

      controllers[i] = new HHController(mechanisms[i], switches[i],
          waitTimes[i]);
    }
  }

  public void start() {
    houseDisplay.startPaintLoop();
    switchDisplay.startPaintLoop();
  }

  /**
   * Convert all control to simulated switches
   */
  public void useSimSwitches() {
    // enable sim switches (start listening)

    // disable rpc switches (stop listening)

    // all listeners: stop listening
    // all listeners: set switch to the other type of switch
    // all listeners: restart listening

    //
    masterButtonSim.start();
    masterButtonDisplay.startListening();
    switchDisplay.addDisplayable(masterButtonDisplay);
    //
    autoButtonSim.start();
    autoButtonDisplay.startListening();
    switchDisplay.addDisplayable(autoButtonDisplay);
    //
    // switchSims[0].start();
    for (int i = 0; i < numMechs; i++) {
      switchSims[i].start();
      switchDisplays[i].startListening();
      switchDisplay.addDisplayable(switchDisplays[i]);
    }
    for (int i = 0; i < numMechs; i++) {
      actuatorSims[i].start();// TODO actuator interface
      houseDisplay.addDisplayable(actuatorSims[i]);
    }

    safetyButton.startListening();

    for (int i = 0; i < numMechs; i++) {
      switches[i].startListening();
      mechanisms[i].startListening();
      controllers[i].startListening();
    }

  }

  public void useRPCSwitches() {

  }

}
TOP

Related Classes of com.googlecode.grt192.HH11.deploy.HauntedHouse

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.