|
@@ -1,40 +1,45 @@
|
|
|
-from enum import Enum, auto
|
|
|
+import button
|
|
|
import machine
|
|
|
+from machine import Pin
|
|
|
import network
|
|
|
import urequests as requests
|
|
|
|
|
|
-class ButtonState(Enum):
|
|
|
- IDLE = auto()
|
|
|
- FWD_1 = auto()
|
|
|
- FWD_2 = auto()
|
|
|
- FWD_RDY = auto()
|
|
|
- REV_1 = auto()
|
|
|
- REV_2 = auto()
|
|
|
- REV_RDY = auto()
|
|
|
+BTN_IDLE = 0
|
|
|
+BTN_FWD_1 = 1
|
|
|
+BTN_FWD_2 = 2
|
|
|
+BTN_FWD_RDY = 3
|
|
|
+BTN_REV_1 = 4
|
|
|
+BTN_REV_2 = 5
|
|
|
+BTN_REV_RDY = 6
|
|
|
|
|
|
def check_forward_1(handler):
|
|
|
- if handler.total_change > 30:
|
|
|
+ if handler.total_change > 100:
|
|
|
led_red2.on()
|
|
|
handler.reset()
|
|
|
- return ButtonState.FWD_2
|
|
|
- return ButtonState.FWD_1
|
|
|
+ return BTN_FWD_2
|
|
|
+ return BTN_FWD_1
|
|
|
|
|
|
def check_forward_2(handler):
|
|
|
global button_triggered
|
|
|
- if handler.total_change > 30 and wifi.isconnected():
|
|
|
+ if handler.total_change > 150 and wifi.isconnected():
|
|
|
led_green.on()
|
|
|
button_triggered = False
|
|
|
- return ButtonState.FWD_RDY
|
|
|
- return ButtonState.FWD_2
|
|
|
+ print('Button armed')
|
|
|
+ return BTN_FWD_RDY
|
|
|
+ return BTN_FWD_2
|
|
|
|
|
|
def check_forward_trigger(handler):
|
|
|
- if (button_triggered):
|
|
|
+ if (THE_BUTTON.pressed):
|
|
|
# Ping overlay server
|
|
|
+ requests.get('http://192.168.0.210:42069/rdp')
|
|
|
led_red1.off()
|
|
|
led_red2.off()
|
|
|
led_green.off()
|
|
|
- return ButtonState.IDLE
|
|
|
- return ButtonState.FWD_RDY
|
|
|
+ activity_timeout.deinit()
|
|
|
+ machine.lightsleep(5)
|
|
|
+ THE_BUTTON.reset()
|
|
|
+ return BTN_IDLE
|
|
|
+ return BTN_FWD_RDY
|
|
|
|
|
|
button_triggered = False
|
|
|
def button_handler(pin):
|
|
@@ -43,8 +48,12 @@ def button_handler(pin):
|
|
|
|
|
|
def time_up(timer):
|
|
|
global current_state, current_pos
|
|
|
- current_state = ButtonState.IDLE
|
|
|
+ print('Timeout exceeded, resetting')
|
|
|
+ current_state = BTN_IDLE
|
|
|
current_pos = 0
|
|
|
+ led_red1.off()
|
|
|
+ led_red2.off()
|
|
|
+ led_green.off()
|
|
|
input_handler.reset()
|
|
|
|
|
|
def dummy_cb(*args, **kwargs):
|
|
@@ -52,33 +61,36 @@ def dummy_cb(*args, **kwargs):
|
|
|
|
|
|
def get_state_handler(state):
|
|
|
handler_map = {
|
|
|
- ButtonState.FWD_1: check_forward_1,
|
|
|
- ButtonState.FWD_2: check_forward_2,
|
|
|
- ButtonState.FWD_RDY: check_forward_trigger
|
|
|
+ BTN_FWD_1: check_forward_1,
|
|
|
+ BTN_FWD_2: check_forward_2,
|
|
|
+ BTN_FWD_RDY: check_forward_trigger
|
|
|
}
|
|
|
return handler_map.get(state, dummy_cb)
|
|
|
|
|
|
+btn_pin = Pin(CONFIG['pins']['play_dat'], Pin.IN, Pin.PULL_UP)
|
|
|
+THE_BUTTON = button.Button(btn_pin)
|
|
|
+
|
|
|
activity_timeout = machine.Timer(-1)
|
|
|
current_pos = input_handler.total_change
|
|
|
-current_state = ButtonState.IDLE
|
|
|
+current_state = BTN_IDLE
|
|
|
|
|
|
while True:
|
|
|
- while current_state == ButtonState.IDLE:
|
|
|
+ while current_state == BTN_IDLE:
|
|
|
machine.lightsleep(CONFIG['logic']['sleep_time'] * 1000)
|
|
|
if input_handler.total_change - current_pos > CONFIG['logic']['wake_threshold']:
|
|
|
- current_state = ButtonState.FWD_1
|
|
|
+ current_state = BTN_FWD_1
|
|
|
elif current_pos - input_handler.total_change > CONFIG['logic']['wake_threshold']:
|
|
|
- current_state = ButtonState.REV_1
|
|
|
+ current_state = BTN_REV_1
|
|
|
|
|
|
wifi = network.WLAN(network.STA_IF)
|
|
|
wifi.active(True)
|
|
|
- wifi.connect(config['wifi']['ssid'], config['wifi']['password'])
|
|
|
+ wifi.connect(CONFIG['wifi']['ssid'], CONFIG['wifi']['password'])
|
|
|
led_red1.on()
|
|
|
activity_timeout.init(mode=machine.Timer.ONE_SHOT, callback=time_up,
|
|
|
period=CONFIG['logic']['active_time'] * 1000)
|
|
|
input_handler.reset()
|
|
|
- while current_state != ButtonState.IDLE:
|
|
|
- machine.lightSleep(100)
|
|
|
+ while current_state != BTN_IDLE:
|
|
|
+ machine.lightsleep(100)
|
|
|
handler_func = get_state_handler(current_state)
|
|
|
current_state = handler_func(input_handler)
|
|
|
wifi.active(False)
|