This commit is contained in:
3
Doxyfile
3
Doxyfile
@ -1,6 +1,7 @@
|
|||||||
PROJECT_NAME = "MinimOSD-JSON"
|
PROJECT_NAME = "MinimOSD-JSON"
|
||||||
OUTPUT_DIRECTORY = "docs/"
|
OUTPUT_DIRECTORY = "docs/"
|
||||||
INPUT = "src" "lib"
|
INPUT = "README.md" "src" "lib"
|
||||||
RECURSIVE = YES
|
RECURSIVE = YES
|
||||||
WARNINGS = YES
|
WARNINGS = YES
|
||||||
GENERATE_LATEX = NO
|
GENERATE_LATEX = NO
|
||||||
|
USE_MDFILE_AS_MAINPAGE = README.md
|
||||||
|
@ -8,7 +8,7 @@ CommandHandler::CommandHandler(DisplayProxy *display)
|
|||||||
this->display = display;
|
this->display = display;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool CommandHandler::parse(const char *cmd)
|
bool CommandHandler::parseJSON(const char *cmd)
|
||||||
{
|
{
|
||||||
Serial.print("Handling: ");
|
Serial.print("Handling: ");
|
||||||
Serial.println(cmd);
|
Serial.println(cmd);
|
||||||
@ -23,7 +23,7 @@ bool CommandHandler::parse(const char *cmd)
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
const char *command = doc["command"];
|
const char *command = doc["cmd"];
|
||||||
if (strcmp("write", command) == 0 && doc["text"].is<const char*>() && doc["x"].is<int>() && doc["y"].is<int>())
|
if (strcmp("write", command) == 0 && doc["text"].is<const char*>() && doc["x"].is<int>() && doc["y"].is<int>())
|
||||||
{
|
{
|
||||||
const char *text = doc["text"];
|
const char *text = doc["text"];
|
||||||
|
@ -3,14 +3,31 @@
|
|||||||
#include "DisplayProxy.h"
|
#include "DisplayProxy.h"
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Parse a JSON command and convert it into a display command
|
* Parse a JSON command and convert it into display command(s)
|
||||||
*/
|
*/
|
||||||
class CommandHandler
|
class CommandHandler
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
/**
|
||||||
|
* Constructor.
|
||||||
|
*
|
||||||
|
* @param display Takes an implementation of DisplayProxy through polymorphism.
|
||||||
|
*/
|
||||||
explicit CommandHandler(DisplayProxy *display);
|
explicit CommandHandler(DisplayProxy *display);
|
||||||
bool parse(const char *cmd);
|
/**
|
||||||
|
* Parse a command in JSON format
|
||||||
|
* @code{.json}
|
||||||
|
* {"cmd":"write","x": 2, "y": 10, "text":"Hello World"}
|
||||||
|
* @endcode
|
||||||
|
*
|
||||||
|
* @param cmd String to parse
|
||||||
|
* @return True if the input was parsed correctly.
|
||||||
|
*/
|
||||||
|
bool parseJSON(const char *cmd);
|
||||||
private:
|
private:
|
||||||
|
/**
|
||||||
|
* Internal helper for printing debug strings
|
||||||
|
*/
|
||||||
void debugWrite(int x, int y, const char *text);
|
void debugWrite(int x, int y, const char *text);
|
||||||
DisplayProxy *display;
|
DisplayProxy *display;
|
||||||
|
|
||||||
|
@ -3,6 +3,7 @@
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Generic interface for a graphical display allowing for placement of text.
|
* Generic interface for a graphical display allowing for placement of text.
|
||||||
|
* Focused on TUI.
|
||||||
*/
|
*/
|
||||||
class DisplayProxy
|
class DisplayProxy
|
||||||
{
|
{
|
||||||
@ -12,6 +13,7 @@ public:
|
|||||||
* @return True if successful.
|
* @return True if successful.
|
||||||
*/
|
*/
|
||||||
virtual bool on() = 0;
|
virtual bool on() = 0;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Turn off the display.
|
* Turn off the display.
|
||||||
* @return True if successful.
|
* @return True if successful.
|
||||||
@ -27,6 +29,7 @@ public:
|
|||||||
* @return True if successful.
|
* @return True if successful.
|
||||||
*/
|
*/
|
||||||
virtual bool write(int x, int y, const char *text) = 0;
|
virtual bool write(int x, int y, const char *text) = 0;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Clear the entire screen.
|
* Clear the entire screen.
|
||||||
* @return True if successful.
|
* @return True if successful.
|
||||||
|
@ -6,12 +6,14 @@
|
|||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Text-User-Interface on a Max7456
|
* Text-User-Interface on a MAX7456
|
||||||
*
|
*
|
||||||
* The Max7456 provides On-Screen-Display rendering for composite video.
|
* The MAX7456 provides On-Screen-Display rendering for composite video.
|
||||||
* (Think old school VCR menu overlay)
|
* (Think old school VCR menu overlay)
|
||||||
*
|
*
|
||||||
* @link https://www.maximintegrated.com/en/products/analog/video-products/MAX7456.html
|
* To find the offical documentation for the part please refer to the Maxim page for the MAX7456.
|
||||||
|
* [Maxim Page](https://www.maximintegrated.com/en/products/analog/video-products/MAX7456.html)
|
||||||
|
*
|
||||||
*/
|
*/
|
||||||
class DisplayProxyMAX7456 : public DisplayProxy
|
class DisplayProxyMAX7456 : public DisplayProxy
|
||||||
{
|
{
|
||||||
@ -45,7 +47,19 @@ public:
|
|||||||
* Since the signal is analog the characters might be rendered outside the display area
|
* Since the signal is analog the characters might be rendered outside the display area
|
||||||
*/
|
*/
|
||||||
bool setOffset(int x, int y);
|
bool setOffset(int x, int y);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Turn off the external video feed
|
||||||
|
* If the external feed is disabled the background will be grey
|
||||||
|
* @param enabled True to turn on the external video input
|
||||||
|
*/
|
||||||
bool externalVideo(bool enabled);
|
bool externalVideo(bool enabled);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Turn on the overlay
|
||||||
|
*
|
||||||
|
* @param enabled True to turn on the overlay
|
||||||
|
*/
|
||||||
bool onScreenDisplay(bool enabled);
|
bool onScreenDisplay(bool enabled);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
@ -49,6 +49,6 @@ void loop()
|
|||||||
while (Serial.available() > 0)
|
while (Serial.available() > 0)
|
||||||
{
|
{
|
||||||
String input = Serial.readStringUntil('\n');
|
String input = Serial.readStringUntil('\n');
|
||||||
cmd_handler.parse(input.c_str());
|
cmd_handler.parseJSON(input.c_str());
|
||||||
}
|
}
|
||||||
}
|
}
|
Reference in New Issue
Block a user