from picozero import pico_led
import time
from machine import Pin

from picozero import pico_led

PUMP_ON = 0

if PUMP_ON == 0:
    print("PUMPS ARE CURRENTLY DISABLED")

class Pump():
    
    def __init__(self, forward_pin):
        self.forward_pin = forward_pin
        self.bidirectional = False

        self.pump = Pin(forward_pin, Pin.OUT)
        self.pump.value(0)
        self.pump_on = False

        self.time_last_on = 0

        self.total_time_on = 0

    def on(self, duration=None):
        self.pump.value(PUMP_ON)
        pico_led.on()
        self.pump_on = True
        # TODO log message
        self.time_last_on = time.time()
        if duration:
            time.sleep(duration)
            self.off()

    def off(self):
        if self.pump_on:
            time_on = time.time() - self.time_last_on
            self.total_time_on += time_on
        self.pump.value(0)
        pico_led.off()
        self.pump_on = False
        # calculate how long the pump was on
        # TODO log message


class BiDirectionalPump(Pump):
    def __init__(self, forward_pin, backward_pin):
        super().__init__(forward_pin)
        self.backward_pin = backward_pin
        self.backward_pump = Pin(backward_pin, Pin.OUT)
        self.backward_pump.value(0)
        self.bidirectional = True


    def on(self, duration=None, direction='forward'):
        pico_led.on()
        if direction == 'forward':
            self.backward_pump.value(0)
            self.pump.value(PUMP_ON)
        else:
            self.pump.value(0)
            self.backward_pump.value(PUMP_ON)
        self.pump_on = True
        self.time_last_on = time.time()
        if duration:
            time.sleep(duration)
            self.off()

    def off(self):
        self.pump.value(0)
        self.backward_pump.value(0)
        pico_led.off()
        self.pump_on = False

