Esempio n. 1
0
func receiveOrder(commChannel chan ElevatorOrder) {
	var prevOrderMatrix [driver.N_FLOORS][driver.N_BUTTONS]int
	for i := 0; i < driver.N_FLOORS; i++ {
		for j := 0; j < driver.N_BUTTONS; j++ {
			prevOrderMatrix[i][j] = 0
		}
	}
	var currentOrderMatrix [driver.N_FLOORS][driver.N_BUTTONS]int
	var tempOrder ElevatorOrder
	for {
		time.Sleep(time.Millisecond * 10)
		for i := 0; i < driver.N_FLOORS; i++ {
			for j := 0; j < driver.N_BUTTONS; j++ {
				currentOrderMatrix[i][j] = driver.Elev_get_button_signal(driver.Elev_button_type_t(j), i)
			}
		}
		for i := 0; i < driver.N_FLOORS; i++ {
			for j := 0; j < driver.N_BUTTONS; j++ {
				if (currentOrderMatrix[i][j] == 1) && (prevOrderMatrix[i][j] == 0) {
					tempOrder.OrderType = driver.Elev_button_type_t(j)
					tempOrder.Floor = i
					commChannel <- tempOrder
				}
			}
		}
		prevOrderMatrix = currentOrderMatrix
	}
}
Esempio n. 2
0
//Light functions
func setLights(lightArray [driver.N_BUTTONS][driver.N_FLOORS]int) {
	driver.Elev_set_floor_indicator(currentFloor)
	for i := 0; i < driver.N_BUTTONS; i++ {
		for j := 0; j < driver.N_FLOORS; j++ {
			driver.Elev_set_button_lamp(driver.Elev_button_type_t(i), j, lightArray[i][j])
		}
	}
}