Documentation ¶
Index ¶
- Constants
- Variables
- func SaveJSON(object interface{}, f string) error
- type LEDController
- func (lc *LEDController) ClearAll()
- func (lc *LEDController) Close()
- func (lc *LEDController) FlashLEDs(t *TrafficLight)
- func (lc *LEDController) Off(gpio int)
- func (lc *LEDController) On(gpio int)
- func (lc *LEDController) Open()
- func (lc *LEDController) ReadGPIOConfig() (*[8]int, error)
- func (lc *LEDController) Save() error
- type LEDs
- type Phase
- type Program
- type ProgramRepository
- type TrafficLight
- type TrafficManager
Constants ¶
const ( ProgramWarningName = "Warning" ProgramTestName = "Test" )
Variables ¶
var ( // Monitor - write preudo LEDs on monitor Monitor bool // EnableLEDs - Trigger real LEDs connected EnableLEDs bool )
var ProgramNormal1 = &Program{ Name: "Normal1", Phases: []Phase{ Phase{green, 3}, Phase{yellow, 1}, Phase{red, 1}, Phase{red, 1}, Phase{red, 3}, Phase{red, 3}, Phase{red, 1}, Phase{red, 1}, Phase{redyellow, 1}, Phase{green, 3}, }, ClockSpeed: time.Second * 1, }
var ProgramNormal2 = &Program{ Name: "Normal2", Phases: []Phase{ Phase{green, 3}, Phase{yellow, 1}, Phase{red, 1}, Phase{red, 3}, Phase{red, 3}, Phase{red, 1}, Phase{redyellow, 1}, Phase{green, 3}, }, ClockSpeed: time.Second * 1, }
ProgramNormal2 - Just the common traffic light
var ProgramNormal3 = &Program{ Name: "Normal3", Phases: []Phase{ Phase{green, 3}, Phase{yellow, 1}, Phase{yellow, 1}, Phase{red, 3}, Phase{red, 1}, Phase{redyellow, 1}, }, ClockSpeed: time.Second * 1, }
ProgramNormal3 - Just the common traffic light
var ProgramTest = &Program{ Name: ProgramTestName, Phases: []Phase{ Phase{red, 1}, Phase{yellow, 1}, Phase{green, 1}, Phase{yellow, 1}, }, ClockSpeed: time.Millisecond * 50, }
ProgramTest - Turn every lamp on
var ProgramWarning = &Program{ Name: ProgramWarningName, Phases: []Phase{ Phase{yellow, 1}, Phase{off, 1}, }, ClockSpeed: time.Millisecond * 500, }
ProgramWarning - Traffic light is not working, just blink
Functions ¶
Types ¶
type LEDController ¶
type LEDController struct {
// contains filtered or unexported fields
}
LEDController -
func (*LEDController) ReadGPIOConfig ¶
func (lc *LEDController) ReadGPIOConfig() (*[8]int, error)
ReadGPIOConfig -
type LEDs ¶
type LEDs struct {
Pin [3]int // red, yellow, green
}
LEDs - LED GPIO numbers for lights of one traffic light
type Program ¶
type Program struct { Name string `json:"name"` Phases []Phase `json:"phases"` ClockSpeed time.Duration `json:"clock_speed"` // contains filtered or unexported fields }
Program - Has phases and a state (active phase)
type ProgramRepository ¶
ProgramRepository -
func NewProgramRepository ¶
func NewProgramRepository() ProgramRepository
func (*ProgramRepository) Load ¶
func (pr *ProgramRepository) Load() (ProgramRepository, error)
Load -
type TrafficLight ¶
type TrafficLight struct {
// contains filtered or unexported fields
}
TrafficLight -
func NewTrafficLight ¶
func NewTrafficLight(number int, leds LEDs) (t *TrafficLight)
NewTrafficLight -- Create a new trafficlight
func (*TrafficLight) Advance ¶
func (t *TrafficLight) Advance()
Advance -- Advances a trafficlight to next phase
func (*TrafficLight) Load ¶
func (t *TrafficLight) Load(startPhase int, program Program)
Load - Load new program
func (*TrafficLight) On ¶
func (t *TrafficLight) On(callBack chan int, lc *LEDController)
On - Turn trafficlight on
func (*TrafficLight) String ¶
func (t *TrafficLight) String() string
Implement Stringer interface to display a readable form of the traffic light
type TrafficManager ¶
type TrafficManager struct {
// contains filtered or unexported fields
}
TrafficManager -
func NewTrafficManager ¶
func NewTrafficManager(ledController *LEDController, trafficLights []*TrafficLight) *TrafficManager
NewTrafficManager -
func (*TrafficManager) LoadProgram ¶
func (tm *TrafficManager) LoadProgram(program *Program)
LoadProgram - load new program in trafficlights
func (*TrafficManager) Start ¶
func (tm *TrafficManager) Start()
Start - Start trafficmanager and manage trafficlights
func (*TrafficManager) Stop ¶
func (tm *TrafficManager) Stop()
Stop - Stop trafficmanager and trafficlights