[hardware_test] Split Screen test into centred screen and dead pixels

This commit is contained in:
Léa Saviot
2019-04-12 16:43:38 +02:00
parent 253833d7e9
commit 499f0cee21
13 changed files with 108 additions and 179 deletions

View File

@@ -2,16 +2,14 @@ app_src += $(addprefix apps/hardware_test/,\
app.cpp \
arrow_view.cpp \
battery_test_controller.cpp \
centered_screen_test_controller.cpp \
code_128b_view.cpp \
dead_pixels_test_controller.cpp \
keyboard_test_controller.cpp \
keyboard_view.cpp \
lcd_data_test_controller.cpp \
led_test_controller.cpp \
pattern.cpp \
pattern_view.cpp \
pop_up_controller.cpp \
screen_test_controller.cpp \
screen_test_controller.cpp \
serial_number_controller.cpp \
vblank_test_controller.cpp \
)

View File

@@ -1,10 +1,6 @@
#include "app.h"
#include "../apps_container.h"
extern "C" {
#include <assert.h>
}
namespace HardwareTest {
App * App::Snapshot::unpack(Container * container) {
@@ -24,11 +20,12 @@ App::App(Container * container, Snapshot * snapshot) :
App::WizardViewController::WizardViewController(Responder * parentResponder) :
BankViewController(parentResponder),
m_batteryTestController(this),
m_centeredScreenTestController(this),
m_deadPixelsTestController(this),
m_keyboardController(this),
m_screenTestController(this),
m_lcdDataTestController(this),
m_ledTestController(this),
m_batteryTestController(this),
m_serialNumberController(this),
m_vBlankTestController(this)
{
@@ -42,9 +39,10 @@ ViewController * App::WizardViewController::childAtIndex(int i) {
ViewController * children[] = {
&m_vBlankTestController,
&m_lcdDataTestController,
&m_keyboardController,
&m_screenTestController,
&m_centeredScreenTestController,
&m_deadPixelsTestController,
&m_ledTestController,
&m_keyboardController,
&m_batteryTestController,
&m_serialNumberController
};

View File

@@ -2,11 +2,12 @@
#define HARDWARE_TEST_APP_H
#include <escher.h>
#include "battery_test_controller.h"
#include "centered_screen_test_controller.h"
#include "dead_pixels_test_controller.h"
#include "keyboard_test_controller.h"
#include "screen_test_controller.h"
#include "lcd_data_test_controller.h"
#include "led_test_controller.h"
#include "battery_test_controller.h"
#include "serial_number_controller.h"
#include "vblank_test_controller.h"
@@ -29,11 +30,12 @@ private:
ViewController * childAtIndex(int i) override;
bool handleEvent(Ion::Events::Event event) override;
private:
BatteryTestController m_batteryTestController;
CenteredScreenTestController m_centeredScreenTestController;
DeadPixelsTestController m_deadPixelsTestController;
KeyboardTestController m_keyboardController;
ScreenTestController m_screenTestController;
LCDDataTestController m_lcdDataTestController;
LEDTestController m_ledTestController;
BatteryTestController m_batteryTestController;
SerialNumberController m_serialNumberController;
VBlankTestController m_vBlankTestController;
};

View File

@@ -0,0 +1,10 @@
#include "centered_screen_test_controller.h"
namespace HardwareTest {
void CenteredScreenTestController::ContentView::drawRect(KDContext * ctx, KDRect rect) const {
ctx->fillRect(rect, KDColorWhite);
ctx->fillRect(KDRect(k_outlineThickness, k_outlineThickness, bounds().width()-2*k_outlineThickness, bounds().height()-2*k_outlineThickness), KDColorBlack);
}
}

View File

@@ -0,0 +1,34 @@
#ifndef HARDWARE_TEST_CENTERED_SCREEN_TEST_CONTROLLER_H
#define HARDWARE_TEST_CENTERED_SCREEN_TEST_CONTROLLER_H
#include <escher.h>
namespace HardwareTest {
class CenteredScreenTestController : public ViewController {
public:
CenteredScreenTestController(Responder * parentResponder) :
ViewController(parentResponder),
m_view()
{}
View * view() override { return &m_view; }
bool handleEvent(Ion::Events::Event event) override {
// This will be handled by the WizardViewController
return false;
}
private:
class ContentView : public View {
public:
ContentView() {}
void drawRect(KDContext * ctx, KDRect rect) const override;
private:
constexpr static KDCoordinate k_outlineThickness = 1;
};
ContentView m_view;
};
}
#endif

View File

@@ -0,0 +1,22 @@
#include "dead_pixels_test_controller.h"
namespace HardwareTest {
constexpr KDColor DeadPixelsTestController::k_colors[DeadPixelsTestController::k_numberOfColors - 1];
bool DeadPixelsTestController::handleEvent(Ion::Events::Event event) {
if (event != Ion::Events::OK) {
return true;
}
if (m_colorIndex == k_numberOfColors) {
// Go to the next step - this will be handled by the WizardViewController
return false;
} else {
m_colorIndex++;
m_view.setColor(k_colors[m_colorIndex - 1]);
}
return true;
}
}

View File

@@ -0,0 +1,28 @@
#ifndef HARDWARE_TEST_DEAD_PIXELS_TEST_CONTROLLER_H
#define HARDWARE_TEST_DEAD_PIXELS_TEST_CONTROLLER_H
#include <escher/view_controller.h>
#include <escher/solid_color_view.h>
namespace HardwareTest {
class DeadPixelsTestController : public ViewController {
public:
DeadPixelsTestController(Responder * parentResponder) :
ViewController(parentResponder),
m_colorIndex(0),
m_view(KDColorRed)
{}
View * view() override { return &m_view; }
bool handleEvent(Ion::Events::Event event) override;
private:
constexpr static int k_numberOfColors = 4;
constexpr static KDColor k_colors[k_numberOfColors - 1] = {KDColorBlue, KDColorGreen, KDColorWhite}; // KDColorRed is the first color, set in the constructor
int m_colorIndex;
SolidColorView m_view;
};
}
#endif

View File

@@ -1,29 +0,0 @@
#include "pattern.h"
namespace HardwareTest {
constexpr KDColor Pattern::k_fillColors[Pattern::k_numberOfPatterns];
constexpr KDColor Pattern::k_outlineColors[Pattern::k_numberOfPatterns];
int Pattern::numberOfPatterns() {
return k_numberOfPatterns;
}
Pattern Pattern::patternAtIndex(int i) {
return Pattern(i);
}
KDColor Pattern::fillColor() const {
return k_fillColors[m_i];
}
KDColor Pattern::outlineColor() const {
return k_outlineColors[m_i];
}
Pattern::Pattern(int i) :
m_i(i)
{
}
}

View File

@@ -1,25 +0,0 @@
#ifndef HARDWARE_TEST_PATTERN_H
#define HARDWARE_TEST_PATTERN_H
#include <escher.h>
namespace HardwareTest {
class Pattern {
public:
static int numberOfPatterns();
static Pattern patternAtIndex(int i);
KDColor fillColor() const;
KDColor outlineColor() const;
private:
Pattern(int i);
int m_i;
constexpr static int k_numberOfPatterns = 5;
constexpr static KDColor k_fillColors[k_numberOfPatterns] = {KDColorBlack, KDColorRed, KDColorBlue, KDColorGreen, KDColorWhite};
constexpr static KDColor k_outlineColors[k_numberOfPatterns] = {KDColorWhite, KDColorGreen, KDColorRed, KDColorRed, KDColorGreen};
};
}
#endif

View File

@@ -1,20 +0,0 @@
#include "pattern_view.h"
namespace HardwareTest {
PatternView::PatternView() :
m_pattern(Pattern::patternAtIndex(0))
{
}
void PatternView::setPattern(Pattern p) {
m_pattern = p;
markRectAsDirty(bounds());
}
void PatternView::drawRect(KDContext * ctx, KDRect rect) const {
ctx->fillRect(rect, m_pattern.outlineColor());
ctx->fillRect(KDRect(k_outlineThickness, k_outlineThickness, bounds().width()-2*k_outlineThickness, bounds().height()-2*k_outlineThickness), m_pattern.fillColor());
}
}

View File

@@ -1,22 +0,0 @@
#ifndef HARDWARE_TEST_PATTERN_VIEW_H
#define HARDWARE_TEST_PATTERN_VIEW_H
#include <escher.h>
#include "pattern.h"
namespace HardwareTest {
class PatternView : public View {
public:
PatternView();
void setPattern(Pattern p);
void drawRect(KDContext * ctx, KDRect rect) const override;
private:
constexpr static KDCoordinate k_outlineThickness = 1;
Pattern m_pattern;
};
}
#endif

View File

@@ -1,42 +0,0 @@
#include "screen_test_controller.h"
extern "C" {
#include <assert.h>
}
namespace HardwareTest {
ScreenTestController::ScreenTestController(Responder * parentResponder) :
ViewController(parentResponder),
m_patternIndex(0),
m_view()
{
}
View * ScreenTestController::view() {
return &m_view;
}
bool ScreenTestController::handleEvent(Ion::Events::Event event) {
if (event != Ion::Events::OK) {
return true;
}
if (m_patternIndex == Pattern::numberOfPatterns()) {
// Go to the next step - this will be handled by the WizardViewController
return false;
} else {
showNextPattern();
}
return true;
}
void ScreenTestController::viewWillAppear() {
m_patternIndex = 0;
showNextPattern();
}
void ScreenTestController::showNextPattern() {
m_view.setPattern(Pattern::patternAtIndex(m_patternIndex++));
}
}

View File

@@ -1,25 +0,0 @@
#ifndef HARDWARE_TEST_SCREEN_TEST_CONTROLLER_H
#define HARDWARE_TEST_SCREEN_TEST_CONTROLLER_H
#include <escher.h>
#include "pattern_view.h"
#include "pattern.h"
namespace HardwareTest {
class ScreenTestController : public ViewController {
public:
ScreenTestController(Responder * parentResponder);
View * view() override;
bool handleEvent(Ion::Events::Event event) override;
void viewWillAppear() override;
private:
void showNextPattern();
int m_patternIndex;
PatternView m_view;
};
}
#endif