"""
main matrix run dot file
"""

#==============================================================================#
# Tilt mode
import time
from hardware import hardware as hw
from hardware import dot_mat
# import mode_clock
from tools.face_side import side_mode
from tools.timer import Timer as GTIME
from tools.time_format import set_et
import mode_bounce
from machine import Timer

# testing out pixel draw functionality
# dot_mat.test_draw()

#==============================================================================#
# TIMER
class DotMan:
    """timer"""
    def __init__(self):
        self.it = time.ticks_ms()
        self.t_dur = 60*5
        self.side = 0
        self.t_sw = GTIME()
        self.t_timer = GTIME()

    #==============================================================================#
    # timer to check side every 1 second
    def side_check(self):
        new_side = side_mode.loop()
        if new_side:
            if new_side in [1,3]:
                print('Reset SW')
                self.t_sw.start()
            if new_side == 2:
                print('Timer')
                self.t_timer.start()

    def loop(self):
        if side_mode.side in [1,3]:
            et = self.t_sw.time_elapsed()
            # et = et*1000
            set_et(et)
            is_even = (et % 2 == 0)
        elif side_mode.side == 2:
            et = self.t_timer.time_remain()
            set_et(et)
        # elif side_mode.side == 3:
        #     t_now = mode_clock.clock.loop()
        elif side_mode.side == 4:
            mode_bounce.mode_bounce.loop()

dot_man = DotMan()

# check side every second
def side_check_cb(timer):
    dot_man.side_check()
tim_side = Timer(0)
tim_side.init(period=1000, mode=Timer.PERIODIC, callback=side_check_cb)

#==============================================================================#
# Main run loop
hz_loop = 10
while True:
    dot_man.loop()
    time.sleep(1/hz_loop)