func main() { driver.IOInit() time.Sleep(time.Second * 1) hardware.ResetLights() hardware.SetMotorDirection(0) time.Sleep(time.Second * 1) }
func Init(buttonChannel chan<- ButtonEvent, lightChannel <-chan LightEvent, motorChannel <-chan int, floorChannel chan<- FloorEvent, pollingDelay time.Duration) error { if initialized { return fmt.Errorf("Hardware is already initialized.") } initSuccess := driver.IOInit() if initSuccess != nil { return fmt.Errorf("Unable to initialize hardware.") } resetLights() setMotorDirection(typedef.DIR_STOP) // If initialized between floors, move down to nearest floor. if checkFloor() == -1 { fmt.Printf("HARDWARE:\t Starting between floors, going down.\n") setMotorDirection(typedef.DIR_DOWN) for { if floor := checkFloor(); floor != -1 { fmt.Printf("HARDWARE:\t INIT -> Arrived at floor: %d\n", floor) setMotorDirection(typedef.DIR_STOP) floorChannel <- FloorEvent{CurrentDirection: typedef.DIR_STOP, Floor: floor} break } else { time.Sleep(pollingDelay) } } } // Start goroutines to handle hardware events. go controlLights(lightChannel) go controlMotor(motorChannel) go readButtons(buttonChannel, pollingDelay) go readFloorSensors(floorChannel, pollingDelay) return nil // TODO -> Acceptance test!!! }