Skip to content

Commit e6744ff

Browse files
committed
perf: optimize performance, update plugins, update GUI
1 parent 64ad47b commit e6744ff

File tree

16 files changed

+1379
-1329
lines changed

16 files changed

+1379
-1329
lines changed

frontend/src/components/led-matrix.tsx

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -152,7 +152,6 @@ export const LedMatrix: Component<Props> = (props) => {
152152
createEffect(() => {
153153
const data = props.data;
154154
const indexData = props.indexData;
155-
const brightness = props.brightness;
156155

157156
if (canvasRef && data.length && indexData.length) {
158157
drawMatrix(data, indexData);

include/constants.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
#pragma once
22

3+
#include <Arduino.h>
4+
35
// disable if you do not want to have online functionality
46
#define ENABLE_SERVER
57

@@ -35,6 +37,10 @@
3537
#define COLS 16
3638
#define ROWS 16
3739

40+
// Display constants
41+
constexpr uint8_t MAX_BRIGHTNESS = 255;
42+
constexpr uint16_t TOTAL_PIXELS = ROWS * COLS;
43+
3844
// set your city or coords (https://github.com/chubin/wttr.in)
3945
#define WEATHER_LOCATION "Hamburg"
4046

include/messages.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ class Message
2828
class MessagePool
2929
{
3030
private:
31-
static const size_t POOL_SIZE = 10;
31+
static constexpr size_t POOL_SIZE = 10;
3232
Message pool[POOL_SIZE];
3333
bool used[POOL_SIZE];
3434

include/plugins/BreakoutPlugin.h

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -5,22 +5,22 @@
55
class BreakoutPlugin : public Plugin
66
{
77
private:
8-
static const uint8_t DEBOUNCE_TIME = 100;
9-
static const uint8_t X_MAX = 16;
10-
static const uint8_t Y_MAX = 16;
11-
static const uint8_t BRICK_AMOUNT = X_MAX * 4;
12-
static const uint8_t BALL_DELAY_MAX = 200;
13-
static const uint8_t BALL_DELAY_MIN = 100;
14-
static const uint8_t BALL_DELAY_STEP = 5;
15-
static const uint8_t PADDLE_WIDTH = 5;
16-
static const uint8_t DIRECTION_NONE = 0;
17-
static const uint8_t DIRECTION_LEFT = 1;
18-
static const uint8_t DIRECTION_RIGHT = 2;
19-
static const uint8_t LED_TYPE_OFF = 0;
20-
static const uint8_t LED_TYPE_ON = 1;
21-
static const uint8_t GAME_STATE_RUNNING = 1;
22-
static const uint8_t GAME_STATE_END = 2;
23-
static const uint8_t GAME_STATE_LEVEL = 3;
8+
static constexpr uint8_t DEBOUNCE_TIME = 100;
9+
static constexpr uint8_t X_MAX = 16;
10+
static constexpr uint8_t Y_MAX = 16;
11+
static constexpr uint8_t BRICK_AMOUNT = X_MAX * 4;
12+
static constexpr uint8_t BALL_DELAY_MAX = 200;
13+
static constexpr uint8_t BALL_DELAY_MIN = 100;
14+
static constexpr uint8_t BALL_DELAY_STEP = 5;
15+
static constexpr uint8_t PADDLE_WIDTH = 5;
16+
static constexpr uint8_t DIRECTION_NONE = 0;
17+
static constexpr uint8_t DIRECTION_LEFT = 1;
18+
static constexpr uint8_t DIRECTION_RIGHT = 2;
19+
static constexpr uint8_t LED_TYPE_OFF = 0;
20+
static constexpr uint8_t LED_TYPE_ON = 1;
21+
static constexpr uint8_t GAME_STATE_RUNNING = 1;
22+
static constexpr uint8_t GAME_STATE_END = 2;
23+
static constexpr uint8_t GAME_STATE_LEVEL = 3;
2424
struct Coords
2525
{
2626
unsigned char x;

include/plugins/GameOfLifePlugin.h

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,10 @@
66
class GameOfLifePlugin : public Plugin
77
{
88
private:
9-
static const uint8_t STATE_RUNNING = 1;
10-
static const uint8_t STATE_END = 2;
11-
static const uint8_t STATE_INIT = 3;
12-
static const uint8_t STATE_END_DELAY = 4;
9+
static constexpr uint8_t STATE_RUNNING = 1;
10+
static constexpr uint8_t STATE_END = 2;
11+
static constexpr uint8_t STATE_INIT = 3;
12+
static constexpr uint8_t STATE_END_DELAY = 4;
1313
uint8_t state;
1414
uint8_t previous2[ROWS * COLS];
1515
uint8_t previous[ROWS * COLS];

include/plugins/PongClockPlugin.h

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,11 @@
55
class PongClockPlugin : public Plugin
66
{
77
private:
8-
static const uint8_t X_MAX = 16;
9-
static const uint8_t Y_MAX = 16;
10-
static const uint8_t LED_TYPE_OFF = 0;
11-
static const uint8_t LED_TYPE_ON = 1;
12-
static const uint8_t SPEED = 100;
8+
static constexpr uint8_t X_MAX = 16;
9+
static constexpr uint8_t Y_MAX = 16;
10+
static constexpr uint8_t LED_TYPE_OFF = 0;
11+
static constexpr uint8_t LED_TYPE_ON = 1;
12+
static constexpr uint8_t SPEED = 100;
1313

1414
struct tm timeinfo;
1515

include/plugins/RainPlugin.h

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,11 @@
55
class RainPlugin : public Plugin
66
{
77
private:
8-
static const uint8_t NUM_DROPS = 10;
9-
static const uint8_t X_MAX = 16;
10-
static const uint8_t Y_MAX = 16;
11-
static const uint8_t LED_TYPE_OFF = 0;
12-
static const uint8_t LED_TYPE_ON = 1;
8+
static constexpr uint8_t NUM_DROPS = 10;
9+
static constexpr uint8_t X_MAX = 16;
10+
static constexpr uint8_t Y_MAX = 16;
11+
static constexpr uint8_t LED_TYPE_OFF = 0;
12+
static constexpr uint8_t LED_TYPE_ON = 1;
1313
struct Drop
1414
{
1515
unsigned char x;

include/plugins/SnakePlugin.h

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,15 @@
66
class SnakePlugin : public Plugin
77
{
88
private:
9-
static const uint8_t LED_TYPE_OFF = 0;
10-
static const uint8_t LED_TYPE_ON = 1;
11-
static const uint8_t GAME_STATE_RUNNING = 1;
12-
static const uint8_t GAME_STATE_END = 2;
13-
static const uint8_t GAME_STATE_DEATH_ANIMATION = 3;
9+
static constexpr uint8_t LED_TYPE_OFF = 0;
10+
static constexpr uint8_t LED_TYPE_ON = 1;
11+
static constexpr uint8_t GAME_STATE_RUNNING = 1;
12+
static constexpr uint8_t GAME_STATE_END = 2;
13+
static constexpr uint8_t GAME_STATE_DEATH_ANIMATION = 3;
14+
15+
static constexpr uint16_t SNAKE_DELAY_MS = 100;
16+
static constexpr uint16_t BLINK_SHORT_MS = 200;
17+
static constexpr uint16_t BLINK_LONG_MS = 500;
1418

1519
unsigned char gameState;
1620
unsigned char lastDirection = 0; // 0=unset 1=up 2=right 3=down 4 =left

include/plugins/WeatherPlugin.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,5 +47,6 @@ class WeatherPlugin : public Plugin
4747
void update();
4848
void setup() override;
4949
void loop() override;
50+
void teardown() override;
5051
const char *getName() const override;
5152
};

include/screen.h

Lines changed: 26 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ class Screen_
1111
private:
1212
Screen_() = default;
1313

14-
uint8_t brightness_ = 255;
14+
uint8_t brightness_ = MAX_BRIGHTNESS;
1515
uint8_t renderBuffer_[ROWS * COLS];
1616
uint8_t rotatedRenderBuffer_[ROWS * COLS];
1717
uint8_t positions[ROWS * COLS] = {
@@ -55,35 +55,48 @@ class Screen_
5555
void clear();
5656
void clearRect(int x, int y, int width, int height);
5757

58-
void setPixel(uint8_t x, uint8_t y, uint8_t value, uint8_t brightness = 255);
59-
void setPixelAtIndex(uint8_t index, uint8_t value, uint8_t brightness = 255);
58+
void setPixel(uint8_t x, uint8_t y, uint8_t value, uint8_t brightness = MAX_BRIGHTNESS);
59+
void setPixelAtIndex(uint8_t index, uint8_t value, uint8_t brightness = MAX_BRIGHTNESS);
6060

6161
void setup();
6262

6363
void loadFromStorage();
6464
void persist();
6565
uint8_t getBufferIndex(int index);
6666

67-
void drawLine(int x1, int y1, int x2, int y2, int ledStatus, uint8_t brightness = 255);
67+
void drawLine(int x1, int y1, int x2, int y2, int ledStatus, uint8_t brightness = MAX_BRIGHTNESS);
6868
void drawRectangle(int x,
6969
int y,
7070
int width,
7171
int height,
7272
bool fill,
7373
int ledStatus,
74-
uint8_t brightness = 255);
75-
void drawCharacter(int x, int y, std::vector<int> bits, int bitCount, uint8_t brightness = 255);
76-
void drawNumbers(int x, int y, std::vector<int> numbers, uint8_t brightness = 255);
77-
void drawBigNumbers(int x, int y, std::vector<int> numbers, uint8_t brightness = 255);
78-
void drawWeather(int x, int y, int weather, uint8_t brightness = 255);
79-
std::vector<int> readBytes(std::vector<int> bytes);
74+
uint8_t brightness = MAX_BRIGHTNESS);
75+
void drawCharacter(int x,
76+
int y,
77+
const std::vector<int> &bits,
78+
int bitCount,
79+
uint8_t brightness = MAX_BRIGHTNESS);
80+
void drawNumbers(int x,
81+
int y,
82+
const std::vector<int> &numbers,
83+
uint8_t brightness = MAX_BRIGHTNESS);
84+
void drawBigNumbers(int x,
85+
int y,
86+
const std::vector<int> &numbers,
87+
uint8_t brightness = MAX_BRIGHTNESS);
88+
void drawWeather(int x, int y, int weather, uint8_t brightness = MAX_BRIGHTNESS);
89+
std::vector<int> readBytes(const std::vector<int> &bytes);
8090

81-
void scrollText(std::string text, int delayTime = 30, uint8_t brightness = 255, uint8_t fontid = 0);
82-
void scrollGraph(std::vector<int> graph = {},
91+
void scrollText(const std::string &text,
92+
int delayTime = 30,
93+
uint8_t brightness = MAX_BRIGHTNESS,
94+
uint8_t fontid = 0);
95+
void scrollGraph(const std::vector<int> &graph = {},
8396
int miny = 0,
8497
int maxy = 15,
8598
int delayTime = 60,
86-
uint8_t brightness = 255);
99+
uint8_t brightness = MAX_BRIGHTNESS);
87100
};
88101

89102
extern Screen_ &Screen;

0 commit comments

Comments
 (0)