mirror of
https://github.com/UpsilonNumworks/Upsilon.git
synced 2026-03-20 14:20:39 +01:00
[apps/hardware_test] Clean plugging USB test
Change-Id: I4fcc116c4d498bbc3510c9d9be4596c4e3472f4f
This commit is contained in:
@@ -18,8 +18,22 @@ App::Descriptor * App::Snapshot::descriptor() {
|
||||
|
||||
App::App(Container * container, Snapshot * snapshot) :
|
||||
::App(container, snapshot, &m_keyboardController),
|
||||
m_keyboardController(&m_modalViewController)
|
||||
m_keyboardController(&m_modalViewController),
|
||||
m_USBTestController(nullptr)
|
||||
{
|
||||
}
|
||||
|
||||
ViewController * App::USBController() {
|
||||
return &m_USBTestController;
|
||||
}
|
||||
|
||||
int App::numberOfTimers() {
|
||||
return firstResponder() == &m_USBTestController;
|
||||
}
|
||||
|
||||
Timer * App::timerAtIndex(int i) {
|
||||
assert(i == 0);
|
||||
return &m_USBTestController;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
#define HARDWARE_TEST_APP_H
|
||||
|
||||
#include <escher.h>
|
||||
#include "usb_test_controller.h"
|
||||
#include "keyboard_test_controller.h"
|
||||
|
||||
class AppsContainer;
|
||||
@@ -15,9 +16,13 @@ public:
|
||||
App * unpack(Container * container) override;
|
||||
Descriptor * descriptor() override;
|
||||
};
|
||||
ViewController * USBController();
|
||||
int numberOfTimers() override;
|
||||
Timer * timerAtIndex(int i) override;
|
||||
private:
|
||||
App(Container * container, Snapshot * snapshot);
|
||||
KeyboardTestController m_keyboardController;
|
||||
USBTestController m_USBTestController;
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
#include "battery_test_controller.h"
|
||||
#include "../constant.h"
|
||||
#include "app.h"
|
||||
extern "C" {
|
||||
#include <assert.h>
|
||||
}
|
||||
@@ -11,8 +12,7 @@ namespace HardwareTest {
|
||||
|
||||
BatteryTestController::BatteryTestController(Responder * parentResponder) :
|
||||
ViewController(parentResponder),
|
||||
m_view(),
|
||||
m_usbTestController(this)
|
||||
m_view()
|
||||
{
|
||||
}
|
||||
|
||||
@@ -24,7 +24,8 @@ bool BatteryTestController::handleEvent(Ion::Events::Event event) {
|
||||
if (event == Ion::Events::OK) {
|
||||
if (strcmp(m_view.batteryStateTextView()->text(), k_batteryOKText) == 0) {
|
||||
ModalViewController * modal = (ModalViewController *)parentResponder();
|
||||
modal->displayModalViewController(&m_usbTestController, 0.0f, 0.0f);
|
||||
App * a = (App *)app();
|
||||
modal->displayModalViewController(a->USBController(), 0.0f, 0.0f);
|
||||
}
|
||||
}
|
||||
updateBatteryState(Ion::Battery::voltage(), Ion::Battery::isCharging());
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
#define HARDWARE_TEST_BATTERY_TEST_CONTROLLER_H
|
||||
|
||||
#include <escher.h>
|
||||
#include "usb_test_controller.h"
|
||||
|
||||
namespace HardwareTest {
|
||||
|
||||
@@ -35,7 +34,6 @@ private:
|
||||
constexpr static const char * k_batteryNeedChargingText = "BATTERY: NEED RECHARGE";
|
||||
void updateBatteryState(float batteryLevel, bool batteryCharging);
|
||||
ContentView m_view;
|
||||
USBTestController m_usbTestController;
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
@@ -10,7 +10,9 @@ namespace HardwareTest {
|
||||
|
||||
USBTestController::USBTestController(Responder * parentResponder) :
|
||||
ViewController(parentResponder),
|
||||
Timer(1),
|
||||
m_view(),
|
||||
m_shouldPlugUSB(true),
|
||||
m_resetController(this)
|
||||
{
|
||||
}
|
||||
@@ -19,41 +21,31 @@ View * USBTestController::view() {
|
||||
return &m_view;
|
||||
}
|
||||
|
||||
bool USBTestController::handleEvent(Ion::Events::Event event) {
|
||||
if (event == Ion::Events::UpperM) {
|
||||
return true;
|
||||
}
|
||||
if (event == Ion::Events::OK) {
|
||||
if (Ion::USB::isPlugged() && strcmp(m_view.USBTextView()->text(), k_USBPlugText) == 0) {
|
||||
m_view.USBTextView()->setText(k_USBUnplugText);
|
||||
m_view.arrowView()->setDirection(false);
|
||||
m_view.arrowView()->setColor(KDColorRed);
|
||||
}
|
||||
if (!Ion::USB::isPlugged() && strcmp(m_view.USBTextView()->text(), k_USBUnplugText) == 0) {
|
||||
ModalViewController * modal = (ModalViewController *)parentResponder();
|
||||
modal->displayModalViewController(&m_resetController, 0.0f, 0.0f);
|
||||
}
|
||||
}
|
||||
bool USBTestController::handleEvent(Ion::Events::Event e) {
|
||||
return true;
|
||||
}
|
||||
|
||||
void USBTestController::viewWillAppear() {
|
||||
m_view.USBTextView()->setText(k_USBPlugText);
|
||||
m_view.arrowView()->setDirection(true);
|
||||
m_view.arrowView()->setColor(KDColorGreen);
|
||||
bool USBTestController::fire() {
|
||||
if (Ion::USB::isPlugged() && m_shouldPlugUSB) {
|
||||
m_view.USBTextView()->setText(k_USBUnplugText);
|
||||
m_view.arrowView()->setDirection(false);
|
||||
m_view.arrowView()->setColor(KDColorRed);
|
||||
m_shouldPlugUSB = false;
|
||||
return true;
|
||||
}
|
||||
if (!Ion::USB::isPlugged() && !m_shouldPlugUSB) {
|
||||
ModalViewController * modal = (ModalViewController *)parentResponder();
|
||||
modal->displayModalViewController(&m_resetController, 0.0f, 0.0f);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
void USBTestController::didBecomeFirstResponder() {
|
||||
Container * c = (Container *)app()->container();
|
||||
/* We dispatch a random event that is caught by the hardware test application
|
||||
* to force the window redraw. */
|
||||
c->dispatchEvent(Ion::Events::UpperM);
|
||||
while (!Ion::USB::isPlugged() && strcmp(m_view.USBTextView()->text(), k_USBPlugText) == 0) {}
|
||||
/* We dispatch an event to force the window to redraw (and update the drawn
|
||||
* instructions at the same type) */
|
||||
c->dispatchEvent(Ion::Events::OK);
|
||||
while (Ion::USB::isPlugged() && strcmp(m_view.USBTextView()->text(), k_USBUnplugText) == 0) {}
|
||||
c->dispatchEvent(Ion::Events::OK);
|
||||
void USBTestController::viewWillAppear() {
|
||||
m_shouldPlugUSB = true;
|
||||
m_view.USBTextView()->setText(k_USBPlugText);
|
||||
m_view.arrowView()->setDirection(true);
|
||||
m_view.arrowView()->setColor(KDColorGreen);
|
||||
}
|
||||
|
||||
void USBTestController::ContentView::USBView::drawRect(KDContext * ctx, KDRect rect) const {
|
||||
|
||||
@@ -7,14 +7,14 @@
|
||||
|
||||
namespace HardwareTest {
|
||||
|
||||
class USBTestController : public ViewController {
|
||||
class USBTestController : public ViewController, public Timer {
|
||||
public:
|
||||
USBTestController(Responder * parentResponder);
|
||||
View * view() override;
|
||||
bool handleEvent(Ion::Events::Event event) override;
|
||||
void viewWillAppear() override;
|
||||
void didBecomeFirstResponder() override;
|
||||
bool handleEvent(Ion::Events::Event e) override;
|
||||
private:
|
||||
bool fire() override;
|
||||
class ContentView : public SolidColorView {
|
||||
public:
|
||||
ContentView();
|
||||
@@ -39,6 +39,7 @@ private:
|
||||
constexpr static const char * k_USBPlugText = "PLUG USB";
|
||||
constexpr static const char * k_USBUnplugText = "OK, UNPLUG USB";
|
||||
ContentView m_view;
|
||||
bool m_shouldPlugUSB;
|
||||
ResetController m_resetController;
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user