#!/usr/bin/env python3

import sys
import time
import threading
import evdev
import ev3dev.auto as ev3
from ev3dev2.motor import LargeMotor, SpeedDPS, SpeedRPM, SpeedRPS, SpeedDPM

posx = 0  # x-ova suradnica mysi
posy = 0  # y-ova suradnica mysi


def main():
    global posx
    global posy
    t = threading.Thread(target=mousesignal, args=())
    t.start()  # spusti thread ktora pocita suradnice mysi
    lm = LargeMotor('outA')  # inicializuj motor
    lm.stop(stop_action="hold")
    prevx = 0  # predosla suradnica
    while True:
        print("suradnice mysi: ", posx, posy)
        if posx - prevx < -250:  # ak sme mys pohli jednym smerom
            lm.on_for_seconds(speed=-20, seconds=(prevx-posx)/3500)
            prevx = posx
        elif posx - prevx > 250:  # ak sme mys pohli druhym smerom
            lm.on_for_seconds(speed=20, seconds=(posx-prevx)/3500)
            prevx = posx
        else:       # inac je rozdiel natolko maly, ze by sa motory
            pass    # za ten cas ani nerozbehli


def mousesignal():
    global posx
    global posy
    devices = [evdev.InputDevice(path) for path in evdev.list_devices()]
    device = devices[0]  # najdi si mys
    print(device)
    for event in device.read_loop():
        if event.type == 2 and event.code == 1:
            posy += event.value  # spracuj zmenu y-ovej suradnice
        if event.type == 2 and event.code == 0:
            posx += event.value  # spracuj zmenu x-ovej suradnice


if __name__ == '__main__':
    main()
