1
0

Modernizing code. Bit more OO design than previously.
All checks were successful
continuous-integration/drone Build is passing

This commit is contained in:
Jens True 2021-10-28 11:50:57 +00:00
parent c88eadff35
commit 2b8b4a048a
8 changed files with 70 additions and 65 deletions

@ -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:

@ -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;
}; };

@ -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());
}
} }