import gnu.io.SerialPort;

/* This class is used to control the elevator by receiving and sending commands
via serial port. It contains bunch of methods that basically emulate button actions.
Floor codes are taken from sources. */
public class ElevatorController {
    private SerialPortController elevator = null;

    // class constructor
    public ElevatorController() {
        try {
            elevator = new SerialPortController(SerialControllerInterface.PORT_ttyS0,
                    SerialControllerInterface.BAUD_38400,
                    SerialPort.DATABITS_8,
                    SerialPort.STOPBITS_1,
                    SerialPort.PARITY_NONE);
        } catch (UnsatisfiedLinkError e) {
            System.err.println(e.getMessage());
        }
    }

    // we ask the elevator to send us current floor number
    public int getCurrentFloor(){
        // this is a stub, implementation goes below
        return elevator.getCurrentFloor();
    }

    // this method emulates button push in the elevator
    public void pushButton(int number){
        switch (number) {
            case 0:
                elevator.move(SerialControllerInterface.floor0);
                break;
            case 1:
                elevator.move(SerialControllerInterface.floor0_5);
                break;
            case 2:
                elevator.move(SerialControllerInterface.floor1);
                break;
            case 3:
                elevator.move(SerialControllerInterface.floor1_5);
                break;
            case 4:
                elevator.move(SerialControllerInterface.floor2);
                break;
            case 5:
                elevator.move(SerialControllerInterface.floor3);
                break;
            default:
                System.out.format("ERROR: Floor number [%d] is out of range!", number);
                break;
        }
    }
}