mirror of
https://github.com/UpsilonNumworks/Upsilon.git
synced 2026-01-18 16:27:34 +01:00
[hardware_test] Keyboard test: check only a subset of keys
This commit is contained in:
committed by
LeaNumworks
parent
a515160470
commit
b36f9416b4
@@ -6,6 +6,7 @@ app_hardware_test_src = $(addprefix apps/hardware_test/,\
|
|||||||
colors_lcd_test_controller.cpp \
|
colors_lcd_test_controller.cpp \
|
||||||
dead_pixels_test_controller.cpp \
|
dead_pixels_test_controller.cpp \
|
||||||
keyboard_test_controller.cpp \
|
keyboard_test_controller.cpp \
|
||||||
|
keyboard_model.cpp \
|
||||||
keyboard_view.cpp \
|
keyboard_view.cpp \
|
||||||
lcd_data_test_controller.cpp \
|
lcd_data_test_controller.cpp \
|
||||||
lcd_timing_test_controller.cpp \
|
lcd_timing_test_controller.cpp \
|
||||||
|
|||||||
16
apps/hardware_test/keyboard_model.cpp
Normal file
16
apps/hardware_test/keyboard_model.cpp
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
#include "keyboard_model.h"
|
||||||
|
|
||||||
|
namespace HardwareTest {
|
||||||
|
|
||||||
|
constexpr Ion::Keyboard::Key KeyboardModel::TestedKeys[KeyboardModel::NumberOfTestedKeys];
|
||||||
|
|
||||||
|
bool KeyboardModel::belongsToTestedKeysSubset(Ion::Keyboard::Key key) const {
|
||||||
|
for (int i = 0; i < NumberOfTestedKeys; i++) {
|
||||||
|
if (TestedKeys[i] == key) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
37
apps/hardware_test/keyboard_model.h
Normal file
37
apps/hardware_test/keyboard_model.h
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
#ifndef HARDWARE_TEST_KEYBOARD_MODEL_H
|
||||||
|
#define HARDWARE_TEST_KEYBOARD_MODEL_H
|
||||||
|
|
||||||
|
#include <ion/keyboard.h>
|
||||||
|
|
||||||
|
namespace HardwareTest {
|
||||||
|
|
||||||
|
class KeyboardModel {
|
||||||
|
public:
|
||||||
|
KeyboardModel() : m_testedKeyIndex(0) {}
|
||||||
|
Ion::Keyboard::Key testedKey() const { return TestedKeys[m_testedKeyIndex]; }
|
||||||
|
int testedKeyIndex() const { return m_testedKeyIndex; }
|
||||||
|
void setTestedKeyIndex(int i) {
|
||||||
|
assert(i >= 0 && i < NumberOfTestedKeys);
|
||||||
|
m_testedKeyIndex = i;
|
||||||
|
}
|
||||||
|
bool belongsToTestedKeysSubset(Ion::Keyboard::Key key) const;
|
||||||
|
|
||||||
|
static constexpr int NumberOfTestedKeys = 20;
|
||||||
|
static constexpr Ion::Keyboard::Key TestedKeys[KeyboardModel::NumberOfTestedKeys] = {
|
||||||
|
Ion::Keyboard::Key::Left, Ion::Keyboard::Key::Up, Ion::Keyboard::Key::Down, Ion::Keyboard::Key::Right, Ion::Keyboard::Key::OK, Ion::Keyboard::Key::Back,
|
||||||
|
Ion::Keyboard::Key::Home, Ion::Keyboard::Key::OnOff,
|
||||||
|
Ion::Keyboard::Key::Shift, Ion::Keyboard::Key::Alpha, Ion::Keyboard::Key::XNT, Ion::Keyboard::Key::Var, Ion::Keyboard::Key::Toolbox, Ion::Keyboard::Key::Backspace,
|
||||||
|
Ion::Keyboard::Key::Power,
|
||||||
|
Ion::Keyboard::Key::Square,
|
||||||
|
Ion::Keyboard::Key::RightParenthesis,
|
||||||
|
Ion::Keyboard::Key::Division,
|
||||||
|
Ion::Keyboard::Key::Minus,
|
||||||
|
Ion::Keyboard::Key::EXE
|
||||||
|
};
|
||||||
|
private:
|
||||||
|
int m_testedKeyIndex;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
@@ -17,10 +17,10 @@ View * KeyboardTestController::view() {
|
|||||||
|
|
||||||
bool KeyboardTestController::handleEvent(Ion::Events::Event event) {
|
bool KeyboardTestController::handleEvent(Ion::Events::Event event) {
|
||||||
Ion::Keyboard::State state = Ion::Keyboard::scan();
|
Ion::Keyboard::State state = Ion::Keyboard::scan();
|
||||||
Ion::Keyboard::State onlyKeyDown = Ion::Keyboard::State(Ion::Keyboard::ValidKeys[m_keyboardView.testedKeyIndex()]);
|
Ion::Keyboard::State onlyKeyDown = Ion::Keyboard::State(KeyboardModel::TestedKeys[m_keyboardView.testedKeyIndex()]);
|
||||||
if (state == onlyKeyDown) {
|
if (state == onlyKeyDown) {
|
||||||
m_keyboardView.setTestedKeyIndex(m_keyboardView.testedKeyIndex()+1);
|
m_keyboardView.setTestedKeyIndex(m_keyboardView.testedKeyIndex() + 1);
|
||||||
if (m_keyboardView.testedKeyIndex() == Ion::Keyboard::NumberOfValidKeys) {
|
if (m_keyboardView.testedKeyIndex() == KeyboardModel::NumberOfTestedKeys) {
|
||||||
// Returning false will go to the next step in the WizardViewController
|
// Returning false will go to the next step in the WizardViewController
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,17 +3,8 @@
|
|||||||
|
|
||||||
namespace HardwareTest {
|
namespace HardwareTest {
|
||||||
|
|
||||||
KeyboardView::KeyboardView() :
|
|
||||||
m_testedKeyIndex(0)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
int KeyboardView::testedKeyIndex() const {
|
|
||||||
return m_testedKeyIndex;
|
|
||||||
}
|
|
||||||
|
|
||||||
void KeyboardView::setTestedKeyIndex(int i) {
|
void KeyboardView::setTestedKeyIndex(int i) {
|
||||||
m_testedKeyIndex = i;
|
m_keyboardModel.setTestedKeyIndex(i);
|
||||||
markRectAsDirty(bounds());
|
markRectAsDirty(bounds());
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -26,11 +17,8 @@ void KeyboardView::drawRect(KDContext * ctx, KDRect rect) const {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void KeyboardView::drawKey(int keyIndex, KDContext * ctx, KDRect rect) const {
|
void KeyboardView::drawKey(int keyIndex, KDContext * ctx, KDRect rect) const {
|
||||||
KDColor color = keyIndex < m_testedKeyIndex ? KDColorGreen: KDColorBlack;
|
|
||||||
if (keyIndex == m_testedKeyIndex) {
|
|
||||||
color = KDColorBlue;
|
|
||||||
}
|
|
||||||
Ion::Keyboard::Key key = Ion::Keyboard::ValidKeys[keyIndex];
|
Ion::Keyboard::Key key = Ion::Keyboard::ValidKeys[keyIndex];
|
||||||
|
KDColor color = keyColor(key);
|
||||||
/* the key is on the cross */
|
/* the key is on the cross */
|
||||||
if ((uint8_t)key < 4) {
|
if ((uint8_t)key < 4) {
|
||||||
KDCoordinate x = (uint8_t)key == 1 || (uint8_t)key == 2 ? k_margin + k_smallSquareSize : k_margin;
|
KDCoordinate x = (uint8_t)key == 1 || (uint8_t)key == 2 ? k_margin + k_smallSquareSize : k_margin;
|
||||||
@@ -69,4 +57,14 @@ void KeyboardView::drawKey(int keyIndex, KDContext * ctx, KDRect rect) const {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
KDColor KeyboardView::keyColor(Ion::Keyboard::Key key) const {
|
||||||
|
if (!m_keyboardModel.belongsToTestedKeysSubset(key)) {
|
||||||
|
return Palette::GreyBright;
|
||||||
|
}
|
||||||
|
if (m_keyboardModel.testedKey() == key) {
|
||||||
|
return KDColorBlue;
|
||||||
|
}
|
||||||
|
return (uint8_t)key < (uint8_t)m_keyboardModel.testedKey() ? KDColorGreen : KDColorBlack;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,17 +2,19 @@
|
|||||||
#define HARDWARE_TEST_KEYBOARD_VIEW_H
|
#define HARDWARE_TEST_KEYBOARD_VIEW_H
|
||||||
|
|
||||||
#include <escher.h>
|
#include <escher.h>
|
||||||
|
#include "keyboard_model.h"
|
||||||
|
|
||||||
namespace HardwareTest {
|
namespace HardwareTest {
|
||||||
|
|
||||||
class KeyboardView : public View {
|
class KeyboardView : public View {
|
||||||
public:
|
public:
|
||||||
KeyboardView();
|
KeyboardView() : m_keyboardModel() {}
|
||||||
int testedKeyIndex() const;
|
int testedKeyIndex() const { return m_keyboardModel.testedKeyIndex(); }
|
||||||
void setTestedKeyIndex(int i);
|
void setTestedKeyIndex(int i);
|
||||||
void drawRect(KDContext * ctx, KDRect rect) const override;
|
void drawRect(KDContext * ctx, KDRect rect) const override;
|
||||||
private:
|
private:
|
||||||
void drawKey(int key, KDContext * ctx, KDRect rect) const;
|
void drawKey(int key, KDContext * ctx, KDRect rect) const;
|
||||||
|
KDColor keyColor(Ion::Keyboard::Key key) const;
|
||||||
constexpr static int k_margin = 4;
|
constexpr static int k_margin = 4;
|
||||||
constexpr static int k_smallSquareSize = 8;
|
constexpr static int k_smallSquareSize = 8;
|
||||||
constexpr static int k_bigSquareSize = 14;
|
constexpr static int k_bigSquareSize = 14;
|
||||||
@@ -20,7 +22,7 @@ private:
|
|||||||
constexpr static int k_smallRectWidth = 16;
|
constexpr static int k_smallRectWidth = 16;
|
||||||
constexpr static int k_bigRectHeight = 14;
|
constexpr static int k_bigRectHeight = 14;
|
||||||
constexpr static int k_bigRectWidth = 20;
|
constexpr static int k_bigRectWidth = 20;
|
||||||
int m_testedKeyIndex;
|
KeyboardModel m_keyboardModel;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user