Implement PLC-driven field reset light.

This commit is contained in:
Patrick Fairbank
2019-08-08 22:03:13 -07:00
parent a603840b0d
commit 5b66b5856d
2 changed files with 10 additions and 22 deletions

View File

@@ -68,8 +68,6 @@ type Arena struct {
BypassPreMatchScore bool
MuteMatchSounds bool
matchAborted bool
lastRedAllianceReady bool
lastBlueAllianceReady bool
soundsPlayed map[*game.MatchSound]struct{}
}
@@ -199,8 +197,7 @@ func (arena *Arena) LoadMatch(match *model.Match) error {
arena.AllianceStationDisplayModeNotifier.Notify()
// Set the initial state of the lights.
arena.lastRedAllianceReady = false
arena.lastBlueAllianceReady = false
arena.Plc.SetFieldResetLight(true)
return nil
}
@@ -685,26 +682,13 @@ func (arena *Arena) handleLeds() {
arena.Plc.SetStackBuzzer(redAllianceReady && blueAllianceReady && preMatchScoreReady)
// Turn off lights if all teams become ready.
// TODO(pat): Implement for 2019.
if redAllianceReady && blueAllianceReady && !(arena.lastRedAllianceReady && arena.lastBlueAllianceReady) {
//arena.ScaleLeds.SetMode(led.OffMode, led.OffMode)
} else if !(redAllianceReady && blueAllianceReady) && arena.lastRedAllianceReady &&
arena.lastBlueAllianceReady {
//arena.ScaleLeds.SetMode(led.GreenMode, led.GreenMode)
if redAllianceReady && blueAllianceReady {
arena.Plc.SetFieldResetLight(false)
}
if redAllianceReady && !arena.lastRedAllianceReady {
//arena.RedSwitchLeds.SetMode(led.OffMode, led.OffMode)
} else if !redAllianceReady && arena.lastRedAllianceReady {
//arena.RedSwitchLeds.SetMode(led.RedMode, led.RedMode)
}
arena.lastRedAllianceReady = redAllianceReady
if blueAllianceReady && !arena.lastBlueAllianceReady {
//arena.BlueSwitchLeds.SetMode(led.OffMode, led.OffMode)
} else if !blueAllianceReady && arena.lastBlueAllianceReady {
//arena.BlueSwitchLeds.SetMode(led.BlueMode, led.BlueMode)
}
arena.lastBlueAllianceReady = blueAllianceReady
case PostMatch:
if arena.FieldReset {
arena.Plc.SetFieldResetLight(true)
}
scoreReady := arena.RedRealtimeScore.FoulsCommitted && arena.BlueRealtimeScore.FoulsCommitted &&
arena.alliancePostMatchScoreReady("red") && arena.alliancePostMatchScoreReady("blue")
arena.Plc.SetStackLights(false, false, !scoreReady, false)

View File

@@ -177,6 +177,10 @@ func (plc *Plc) SetStackBuzzer(state bool) {
plc.coils[stackLightBuzzer] = state
}
func (plc *Plc) SetFieldResetLight(state bool) {
plc.coils[fieldResetLight] = state
}
func (plc *Plc) GetCycleState(max, index, duration int) bool {
return plc.cycleCounter/duration%max == index
}