Modernizing code. Bit more OO design than previously.
All checks were successful
continuous-integration/drone Build is passing
All checks were successful
continuous-integration/drone Build is passing
This commit is contained in:
@ -7,6 +7,7 @@ steps:
|
|||||||
commands:
|
commands:
|
||||||
- pip install platformio
|
- pip install platformio
|
||||||
- pio run
|
- pio run
|
||||||
|
- pio check --skip-packages
|
||||||
- name: release
|
- name: release
|
||||||
image: plugins/gitea-release
|
image: plugins/gitea-release
|
||||||
settings:
|
settings:
|
||||||
|
14
.vscode/extensions.json
vendored
14
.vscode/extensions.json
vendored
@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
// See http://go.microsoft.com/fwlink/?LinkId=827846
|
// See http://go.microsoft.com/fwlink/?LinkId=827846
|
||||||
// for the documentation about the extensions.json format
|
// for the documentation about the extensions.json format
|
||||||
"recommendations": [
|
"recommendations": [
|
||||||
"platformio.platformio-ide"
|
"platformio.platformio-ide"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
@ -10,11 +10,11 @@
|
|||||||
#define VERSION_BUILD 1
|
#define VERSION_BUILD 1
|
||||||
|
|
||||||
|
|
||||||
#define VERSION_STRING STR(VERSION_MAJOR) "." STR(VERSION_MINOR) "." STR(VERSION_BUILD)
|
#define VERSION_STRING STR(VERSION_MAJOR) "." STR(VERSION_MINOR) "." STR(VERSION_BUILD)
|
||||||
#define VERSION_DATE __DATE__
|
#define VERSION_DATE __DATE__
|
||||||
|
|
||||||
|
|
||||||
#define BAUDRATE 115200
|
#define BAUDRATE 115200
|
||||||
#define DISP_OFFSET_X 49
|
#define DISP_OFFSET_X 49
|
||||||
#define DISP_OFFSET_Y 27
|
#define DISP_OFFSET_Y 27
|
||||||
#endif /* CONFIG_H */
|
#endif /* CONFIG_H */
|
||||||
|
@ -8,7 +8,7 @@ CommandHandler::CommandHandler(DisplayProxy *display)
|
|||||||
this->display = display;
|
this->display = display;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool CommandHandler::parse(char *cmd)
|
bool CommandHandler::parse(const char *cmd)
|
||||||
{
|
{
|
||||||
Serial.print("Handling: ");
|
Serial.print("Handling: ");
|
||||||
Serial.println(cmd);
|
Serial.println(cmd);
|
||||||
|
@ -5,8 +5,8 @@
|
|||||||
class CommandHandler
|
class CommandHandler
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
CommandHandler(DisplayProxy *display);
|
explicit CommandHandler(DisplayProxy *display);
|
||||||
bool parse(char *cmd);
|
bool parse(const char *cmd);
|
||||||
private:
|
private:
|
||||||
void debugWrite(int x, int y, const char *text);
|
void debugWrite(int x, int y, const char *text);
|
||||||
DisplayProxy *display;
|
DisplayProxy *display;
|
||||||
|
@ -3,22 +3,54 @@
|
|||||||
DisplayProxyMAX7456::DisplayProxyMAX7456(Max7456 *osd)
|
DisplayProxyMAX7456::DisplayProxyMAX7456(Max7456 *osd)
|
||||||
{
|
{
|
||||||
this->osd = osd;
|
this->osd = osd;
|
||||||
|
this->osd->init(6);
|
||||||
|
clear();
|
||||||
|
this->osd->setBlinkParams(_8fields, _BT_3BT);
|
||||||
|
|
||||||
|
externalVideo(false);
|
||||||
|
onScreenDisplay(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Write a text string to the display at the given position
|
||||||
|
* @param x Position along the X axis
|
||||||
|
* @param y Position along the Y axis
|
||||||
|
* @param text The string to print
|
||||||
|
* @return Success or false
|
||||||
|
*/
|
||||||
bool DisplayProxyMAX7456::write(int x, int y, const char *text)
|
bool DisplayProxyMAX7456::write(int x, int y, const char *text)
|
||||||
{
|
{
|
||||||
this->osd->print(text, x, y);
|
this->osd->print(text, x, y);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Clear the entire screen
|
||||||
|
*/
|
||||||
bool DisplayProxyMAX7456::clear()
|
bool DisplayProxyMAX7456::clear()
|
||||||
{
|
{
|
||||||
this->osd->clearScreen();
|
this->osd->clearScreen();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Adjust the display offset.
|
||||||
|
* Since the signal is analog the characters might be rendered outside the display area
|
||||||
|
*/
|
||||||
bool DisplayProxyMAX7456::setOffset(int x, int y)
|
bool DisplayProxyMAX7456::setOffset(int x, int y)
|
||||||
{
|
{
|
||||||
this->osd->setDisplayOffsets(x, y);
|
this->osd->setDisplayOffsets(x, y);
|
||||||
return true;
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool DisplayProxyMAX7456::externalVideo(bool enabled)
|
||||||
|
{
|
||||||
|
this->osd->activateExternalVideo(enabled);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool DisplayProxyMAX7456::onScreenDisplay(bool enabled)
|
||||||
|
{
|
||||||
|
this->osd->activateOSD(enabled);
|
||||||
|
return true;
|
||||||
}
|
}
|
@ -7,11 +7,14 @@
|
|||||||
class DisplayProxyMAX7456 : public DisplayProxy
|
class DisplayProxyMAX7456 : public DisplayProxy
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
DisplayProxyMAX7456(Max7456 *osd);
|
explicit DisplayProxyMAX7456(Max7456 *osd);
|
||||||
|
|
||||||
|
bool write(int x, int y, const char *text) override;
|
||||||
|
bool clear() override;
|
||||||
|
bool setOffset(int x, int y) override;
|
||||||
|
bool externalVideo(bool enabled);
|
||||||
|
bool onScreenDisplay(bool enabled);
|
||||||
|
|
||||||
bool write(int x, int y, const char *text);
|
|
||||||
bool clear() ;
|
|
||||||
bool setOffset(int x, int y);
|
|
||||||
private:
|
private:
|
||||||
Max7456 *osd;
|
Max7456 *osd;
|
||||||
};
|
};
|
||||||
|
61
src/main.cpp
61
src/main.cpp
@ -5,40 +5,10 @@
|
|||||||
#include "CommandHandler.h"
|
#include "CommandHandler.h"
|
||||||
#include "DisplayProxyMAX7456.h"
|
#include "DisplayProxyMAX7456.h"
|
||||||
#include "max7456.h"
|
#include "max7456.h"
|
||||||
|
|
||||||
Max7456 osd;
|
Max7456 osd;
|
||||||
DisplayProxyMAX7456 proxy(&osd);
|
DisplayProxyMAX7456 display(&osd);
|
||||||
CommandHandler cmd_handler(&proxy);
|
CommandHandler cmd_handler(&display);
|
||||||
|
|
||||||
void processSerial()
|
|
||||||
{
|
|
||||||
static byte ndx = 0;
|
|
||||||
char endMarker = '\n';
|
|
||||||
char rc;
|
|
||||||
|
|
||||||
const byte numChars = 128;
|
|
||||||
char receivedChars[numChars]; // an array to store the received data
|
|
||||||
|
|
||||||
while (Serial.available() > 0)
|
|
||||||
{
|
|
||||||
rc = Serial.read();
|
|
||||||
|
|
||||||
if (rc != endMarker)
|
|
||||||
{
|
|
||||||
receivedChars[ndx] = rc;
|
|
||||||
ndx++;
|
|
||||||
if (ndx >= numChars)
|
|
||||||
{
|
|
||||||
ndx = numChars - 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
receivedChars[ndx] = '\0'; // terminate the string
|
|
||||||
ndx = 0;
|
|
||||||
cmd_handler.parse(receivedChars);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void setup()
|
void setup()
|
||||||
{
|
{
|
||||||
@ -51,25 +21,24 @@ void setup()
|
|||||||
Serial.println("================================================================================");
|
Serial.println("================================================================================");
|
||||||
Serial.println("Initialize...");
|
Serial.println("Initialize...");
|
||||||
SPI.begin();
|
SPI.begin();
|
||||||
osd.init(6);
|
display.setOffset(DISP_OFFSET_X, DISP_OFFSET_Y);
|
||||||
osd.clearScreen();
|
|
||||||
osd.setDisplayOffsets(DISP_OFFSET_X, DISP_OFFSET_Y);
|
|
||||||
osd.setBlinkParams(_8fields, _BT_3BT);
|
|
||||||
|
|
||||||
osd.activateOSD();
|
display.write(0, 0, "==========================");
|
||||||
osd.activateExternalVideo(false);
|
display.write(0, 1, "Firmware: " PROJECT_NAME);
|
||||||
osd.print("==========================", 0, 0);
|
display.write(0, 2, "Version: " VERSION_STRING);
|
||||||
osd.print("Firmware: " PROJECT_NAME, 0, 1);
|
display.write(0, 3, "Built: " __DATE__ ", " __TIME__);
|
||||||
osd.print("Version: " VERSION_STRING, 0, 2);
|
display.write(0, 4, "==========================");
|
||||||
osd.print("Built: " __DATE__ ", " __TIME__, 0, 3);
|
|
||||||
osd.print("==========================", 0, 4);
|
|
||||||
|
|
||||||
delay(3000);
|
delay(3000);
|
||||||
osd.clearScreen();
|
display.clear();
|
||||||
Serial.println("Ready!");
|
Serial.println("Ready!");
|
||||||
}
|
}
|
||||||
|
|
||||||
void loop()
|
void loop()
|
||||||
{
|
{
|
||||||
processSerial();
|
while (Serial.available() > 0)
|
||||||
|
{
|
||||||
|
String input = Serial.readStringUntil('\n');
|
||||||
|
cmd_handler.parse(input.c_str());
|
||||||
|
}
|
||||||
}
|
}
|
Reference in New Issue
Block a user