This repository has been archived on 2020-09-09. You can view files and clone it, but cannot push or open issues or pull requests.
arduino_universal_serial_ad.../Universal_Serial_Adapter/UI.cpp

123 lines
2.2 KiB
C++

/*
Serial Adapter Project: Dynamic serial TTY passthroughs
by: Mike Crosson
Nusku Networks
date: 2013/03/09
license: CC-BY SA 3.0 - Creative commons share-alike 3.0
use this code however you'd like, just keep this license and
attribute.
*/
#include <Metro.h>
#include "Project.h"
#include "UI.h"
UI::UI() {
#if DEBUG == 2
Serial.println("Config::UI()");
#endif
okButton = new UIButton(okButtonPin, okButtonLed);
cancelButton = new UIButton(cancelButtonPin, cancelButtonLed);
pspJoystick = new UIJoystickPSP(pspXPin, pspYPin);
lcd = new UILCD();
uiTimeout = new Metro(config->getTimeoutMilis());
startUI();
}
void UI::blinkOKButton() {
if (!config->isUIEnabled()) {
okButton->turnOnLed();
okButton->turnOffLed();
}
}
void UI::blinkCancelButton() {
if (!config->isUIEnabled()) {
cancelButton->turnOnLed();
cancelButton->turnOffLed();
}
}
void UI::setLCDTimeout() {
uiTimeout->interval(config->getTimeoutMilis());
}
void UI::resetTimeout() {
uiTimeout->reset();
}
void UI::startUI() {
#if DEBUG == 2
Serial.println("Config::startUI()");
#endif
enableUI();
lcd->start();
}
void UI::disableUI() {
#if DEBUG == 2
Serial.println("Config::disableUI()");
#endif
config->disableUI();
lcd->turnOff();
okButton->turnOffLed();
cancelButton->turnOffLed();
}
void UI::enableUI() {
#if DEBUG == 2
Serial.println("Config::enableUI()");
#endif
config->enableUI();
lcd->turnOn();
okButton->turnOnLed();
cancelButton->turnOnLed();
uiTimeout->reset();
}
void UI::processTimeoutEvents() {
if (uiTimeout->check()) {
disableUI();
}
}
void UI::processInputEvents() {
joyStickEvent = pspJoystick->direction();
if (joyStickEvent != joyNone) {
if (!config->isUIEnabled()) {
enableUI();
return;
}
#if DEBUG == 2
Serial.print("Joystick Event: ");
Serial.println(joyStickEvent);
#endif
resetTimeout();
lcd->handleJoystickEvent(joyStickEvent);
}
if (okButton->isPressed()) {
if (!config->isUIEnabled()) {
enableUI();
return;
}
resetTimeout();
lcd->handleOkButtonEvent();
}
if (cancelButton->isPressed()) {
if (!config->isUIEnabled()) {
enableUI();
return;
}
resetTimeout();
lcd->handleCancelButtonEvent();
}
}