2021-06-09 12:10:12 +02:00
|
|
|
//
|
|
|
|
// Library for controlling Electronic Assembly eDIPTFT displays
|
|
|
|
//
|
|
|
|
// Copyright (c) 2013 Stefan Gofferje. All rights reserved.
|
|
|
|
//
|
|
|
|
// This library is free software; you can redistribute it and/or
|
|
|
|
// modify it under the terms of the GNU Lesser General Public
|
|
|
|
// License as published by the Free Software Foundation; either
|
|
|
|
// version 2.1 of the License, or (at your option) any later
|
|
|
|
// version.
|
|
|
|
//
|
|
|
|
// This library is distributed in the hope that it will be
|
|
|
|
// useful, but WITHOUT ANY WARRANTY; without even the implied
|
|
|
|
// warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
|
|
|
|
// PURPOSE. See the GNU Lesser General Public License for more
|
|
|
|
// details.
|
|
|
|
//
|
|
|
|
// You should have received a copy of the GNU Lesser General
|
|
|
|
// Public License along with this library; if not, write to the
|
|
|
|
// Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
|
|
|
|
// Boston, MA 02110-1301 USA
|
|
|
|
//
|
|
|
|
|
|
|
|
#ifndef EDIPTFT_h
|
|
|
|
#define EDIPTFT_h
|
|
|
|
|
|
|
|
#include "Arduino.h"
|
|
|
|
|
|
|
|
// Devices
|
|
|
|
#define EDIP128 1
|
|
|
|
#define EDIP160 1
|
|
|
|
#define EDIP240 1
|
|
|
|
#define EDIP320 2
|
|
|
|
|
|
|
|
// Set your device
|
|
|
|
#define DEVICE EDIP320
|
|
|
|
#define COORD_SIZE DEVICE // Byte count for coordinates
|
|
|
|
#define SERIAL_DEV Serial3
|
|
|
|
|
2022-03-13 18:17:41 +01:00
|
|
|
#define EA_TRANSPARENT 0
|
2021-06-09 12:10:12 +02:00
|
|
|
#define EA_BLACK 1
|
|
|
|
#define EA_BLUE 2
|
|
|
|
#define EA_RED 3
|
|
|
|
#define EA_GREEN 4
|
|
|
|
#define EA_PURPLE 5
|
|
|
|
#define EA_CYAN 6
|
|
|
|
#define EA_YELLOW 7
|
|
|
|
#define EA_WHITE 8
|
|
|
|
#define EA_DARKGREY 9
|
|
|
|
#define EA_ORANGE 10
|
|
|
|
#define EA_LILA 11
|
|
|
|
#define EA_DARKPURPLE 12
|
|
|
|
#define EA_MINT 13
|
|
|
|
#define EA_GRASSGREEN 14
|
|
|
|
#define EA_LIGHTBLUE 15
|
|
|
|
#define EA_LIGHTGREY 16
|
|
|
|
|
|
|
|
// Fonts
|
|
|
|
#define EA_FONT8X8 0
|
|
|
|
#define EA_FONT4X6 1
|
|
|
|
#define EA_FONT6X8 2
|
|
|
|
#define EA_FONT7X12 3
|
|
|
|
#define EA_GENEVA10 4
|
|
|
|
#define EA_CHICAGO14 5
|
|
|
|
#define EA_SWISS30B 6
|
|
|
|
#define EA_BIGZIF57 7
|
|
|
|
|
|
|
|
#define NAK 0x15
|
|
|
|
#define ACK 0x06
|
|
|
|
#define ESC 0x1B
|
|
|
|
|
|
|
|
#define uint unsigned int
|
|
|
|
|
|
|
|
class EDIPTFT {
|
|
|
|
public:
|
2021-07-18 18:27:47 +02:00
|
|
|
EDIPTFT(boolean smallprotocol = true, boolean disconnected = false);
|
|
|
|
boolean disconnected;
|
2022-03-13 20:30:14 +01:00
|
|
|
|
2021-06-09 12:10:12 +02:00
|
|
|
void begin(long baud = 115200);
|
2022-03-13 20:30:14 +01:00
|
|
|
|
2021-06-09 12:10:12 +02:00
|
|
|
// helper functions
|
|
|
|
char readByte();
|
|
|
|
char waitandreadByte();
|
|
|
|
unsigned char datainBuffer();
|
|
|
|
int readBuffer(char* data);
|
|
|
|
void smallProtoSelect(char address);
|
|
|
|
void smallProtoDeselect(char address);
|
|
|
|
void sendData(char* data, char len);
|
2022-03-13 20:30:14 +01:00
|
|
|
|
2021-06-09 12:10:12 +02:00
|
|
|
// Basic display functions
|
|
|
|
/*! \brief Clear display
|
|
|
|
*
|
|
|
|
* Clear display contents (all pixels off) and remove touch areas
|
|
|
|
*/
|
|
|
|
void clear();
|
2022-03-13 20:30:14 +01:00
|
|
|
|
2021-06-09 12:10:12 +02:00
|
|
|
/*! \brief Delete display
|
|
|
|
*
|
|
|
|
* Delete display contents (all pixels off). Touch areas are still active.
|
|
|
|
*/
|
|
|
|
void deleteDisplay();
|
2022-03-13 20:30:14 +01:00
|
|
|
|
2021-06-09 12:10:12 +02:00
|
|
|
/*! \brief Invert display
|
|
|
|
*
|
|
|
|
* Invert display contents (invert all pixels)
|
|
|
|
*/
|
|
|
|
void invert();
|
2022-03-13 20:30:14 +01:00
|
|
|
|
2021-06-09 12:10:12 +02:00
|
|
|
void setDisplayColor(char fg, char bg);
|
2022-03-13 20:30:14 +01:00
|
|
|
|
2021-06-09 12:10:12 +02:00
|
|
|
void fillDisplayColor(char bg);
|
2022-03-13 20:30:14 +01:00
|
|
|
|
2021-06-09 12:10:12 +02:00
|
|
|
/*! \brief Terminal on
|
|
|
|
*
|
|
|
|
* Terminal display is switched on if \a on is true
|
|
|
|
*
|
|
|
|
* \param on determine if terminal is switched on
|
|
|
|
*/
|
|
|
|
void terminalOn(boolean on);
|
2022-03-13 20:30:14 +01:00
|
|
|
|
2021-06-09 12:10:12 +02:00
|
|
|
/*! \brief Load internal image
|
|
|
|
*
|
|
|
|
* Load internal image with the \a nr (0..255) from the *EEPROM* memory to
|
|
|
|
* \a x1, \a y1
|
|
|
|
*
|
|
|
|
* \param x1 x position of image on the display
|
|
|
|
* \param y1 y position of image on the display
|
|
|
|
* \param nr number of the image on the *EEPROM*
|
|
|
|
*/
|
|
|
|
void loadImage(int x1, int y1, int nr);
|
2022-03-13 20:30:14 +01:00
|
|
|
|
2021-06-09 12:10:12 +02:00
|
|
|
/*! \brief Cursor on/off
|
|
|
|
*
|
|
|
|
* Switch cursor on/off
|
|
|
|
*
|
|
|
|
* \param on `n1=0`: cursor is invisible, `n1=1`: cursor flashes
|
|
|
|
*/
|
|
|
|
void cursorOn(boolean on);
|
2022-03-13 20:30:14 +01:00
|
|
|
|
2021-06-09 12:10:12 +02:00
|
|
|
/*! \brief Position cursor
|
|
|
|
*
|
|
|
|
* origin upper-left corner `(1, 1)`
|
|
|
|
*
|
|
|
|
* \param col new cursor column
|
|
|
|
* \param row new cursor row
|
|
|
|
*/
|
|
|
|
void setCursor(char col, char row);
|
2022-03-13 20:30:14 +01:00
|
|
|
|
2021-06-09 12:10:12 +02:00
|
|
|
void displayLight(char no);
|
|
|
|
// Bargraph
|
|
|
|
/*! \brief Define bargraph
|
|
|
|
*
|
|
|
|
* Define bargraph to form the rectangle enclosing the
|
|
|
|
* bargraph. \a sv and \a ev are the values for `0%` and `100%`.
|
|
|
|
*
|
|
|
|
* \param dir direction ('L'eft, 'R'ight, 'O'up, 'U'down)
|
|
|
|
* \param no bargraph number `1..32`
|
|
|
|
* \param x1 upper left x coordinate
|
|
|
|
* \param y1 upper left y coordinate
|
|
|
|
* \param x2 lower right x coordinate
|
|
|
|
* \param y2 lower right y coordinate
|
|
|
|
* \param sv start value (0%)
|
|
|
|
* \param ev end value (100%)
|
2022-03-13 20:30:14 +01:00
|
|
|
|
2021-06-09 12:10:12 +02:00
|
|
|
* \param type set the style of the bargraph:\n
|
|
|
|
* `type=0`: pattern bar, \a mst=bar pattern,\n
|
|
|
|
* `type=1`: pattern bar in rectangle, \a mst=bar pattern,\n
|
|
|
|
* `type=2`: pattern line, \a mst=line width,\n
|
|
|
|
* `type=3`: pattern line in rectangle, \a mst=line width
|
|
|
|
*
|
|
|
|
* \param mst additional parameter for type specification
|
|
|
|
*/
|
|
|
|
void defineBargraph(char dir, char no, int x1, int y1, int x2, int y2,
|
|
|
|
byte sv, byte ev, char type, char mst);
|
2022-03-13 20:30:14 +01:00
|
|
|
|
2021-06-09 12:10:12 +02:00
|
|
|
/*! \brief Update bargraph
|
|
|
|
*
|
|
|
|
* Set and draw the bargraph *no* to the new *value*
|
|
|
|
*
|
|
|
|
* \param no number of the bargraph `1..32`
|
|
|
|
* \param val new value of the bargraph
|
|
|
|
*/
|
|
|
|
void updateBargraph(char no, char val);
|
2022-03-13 20:30:14 +01:00
|
|
|
|
2021-06-09 12:10:12 +02:00
|
|
|
void setBargraphColor(char no, char fg, char bg, char fr);
|
2022-03-13 20:30:14 +01:00
|
|
|
|
2021-06-09 12:10:12 +02:00
|
|
|
/*! \brief Set bargraph by touch
|
|
|
|
*
|
|
|
|
* The bargraph with number *no* is defined for input by touch panel
|
|
|
|
*
|
|
|
|
* \param no number of the bargraph `1..32`
|
|
|
|
*/
|
|
|
|
void makeBargraphTouch(char no);
|
2022-03-13 20:30:14 +01:00
|
|
|
|
2021-06-09 12:10:12 +02:00
|
|
|
void linkBargraphLight(char no);
|
2022-03-13 20:30:14 +01:00
|
|
|
|
2021-06-09 12:10:12 +02:00
|
|
|
/*! \brief Delete bargraph
|
|
|
|
*
|
|
|
|
* The definition of the bargraph with number *no* becomes invalid. If the
|
|
|
|
* bargraph was defined as input with touch, the touchfield will also be
|
|
|
|
* deleted.
|
|
|
|
*
|
|
|
|
* \param no number of the bargraph `1..32`
|
|
|
|
* \param n1 additional parameter\n
|
|
|
|
* `n1=0`: bargraph remains visible\n
|
|
|
|
* `n1=1`: bargraph is deleted
|
|
|
|
*/
|
|
|
|
void deleteBargraph(char no, char n1);
|
2022-03-13 20:30:14 +01:00
|
|
|
|
2021-06-09 12:10:12 +02:00
|
|
|
// Instrument
|
|
|
|
void defineInstrument(char no, int x1, int y1, char image, char angle,
|
|
|
|
char sv, char ev);
|
|
|
|
void updateInstrument(char no, char val);
|
|
|
|
void redrawInstrument(char no);
|
|
|
|
void deleteInstrument(char no, char n1, char n2);
|
2022-03-13 20:30:14 +01:00
|
|
|
|
2021-06-09 12:10:12 +02:00
|
|
|
// Text
|
|
|
|
void setTextColor(char fg, char bg);
|
2022-03-13 20:30:14 +01:00
|
|
|
|
2021-06-09 12:10:12 +02:00
|
|
|
/*! \brief Set font
|
|
|
|
*
|
|
|
|
* Set font with the number *font*
|
|
|
|
*
|
|
|
|
* \param font font number `font=0..15`, use font defines here
|
|
|
|
*/
|
|
|
|
void setTextFont(char font);
|
2022-03-13 20:30:14 +01:00
|
|
|
|
2021-06-09 12:10:12 +02:00
|
|
|
void setTextSize(int xsize, int ysize);
|
2022-03-13 20:30:14 +01:00
|
|
|
|
2021-06-09 12:10:12 +02:00
|
|
|
/*! \brief Set text angle
|
|
|
|
*
|
|
|
|
* Set text output angle
|
|
|
|
*
|
|
|
|
* \param angle text output angle\n
|
|
|
|
`angle=0`: 0°
|
|
|
|
`angle=1`: 90°
|
|
|
|
*/
|
|
|
|
void setTextAngle(char angle);
|
2022-03-13 20:30:14 +01:00
|
|
|
|
2021-06-09 12:10:12 +02:00
|
|
|
/*! \brief Draw text on display
|
|
|
|
*
|
|
|
|
* Draw a *text* on screen. Several lines are separated by the character `|`
|
|
|
|
* ($7C).
|
|
|
|
* * place text between `~`: characters flash on/off
|
|
|
|
* * place text between `@`: characters flash inversely
|
|
|
|
* * use `\\` as to escape special characters
|
|
|
|
*
|
|
|
|
* \param x1: x coordinate
|
|
|
|
* \param y1: y coordinate
|
|
|
|
* \param justification set text justification to `L`(eft), `R`(ight),
|
|
|
|
* `C`(enter)
|
|
|
|
* \param text text to draw on display
|
|
|
|
*/
|
|
|
|
void drawText(uint16_t x1, uint16_t y1, char justification, const char* text);
|
2022-03-13 20:30:14 +01:00
|
|
|
|
2022-03-13 18:17:41 +01:00
|
|
|
/*! \brief Draw text on display in an area
|
|
|
|
*
|
|
|
|
* Draw a *text* on screen. Several lines are separated by the character `|`
|
|
|
|
* ($7C).
|
|
|
|
* * place text between `~`: characters flash on/off
|
|
|
|
* * place text between `@`: characters flash inversely
|
|
|
|
* * use `\\` as to escape special characters
|
|
|
|
*
|
|
|
|
* \param align set alignment in the rectangle. 1 = top left, 2 = top
|
|
|
|
* center, 3 = top right, 4 = center left, 5 = center, 6 = center right, 7 =
|
|
|
|
* bottom left, 8 = bottom center, 9 = bottom right.
|
|
|
|
* \param text text to draw on display
|
|
|
|
*/
|
|
|
|
void drawTextInRect(int x1, int y1, int x2, int y2, uint8_t align,
|
|
|
|
const char* text);
|
2022-03-13 20:30:14 +01:00
|
|
|
|
2021-06-09 12:10:12 +02:00
|
|
|
// Rectangle and Line
|
|
|
|
void setLineColor(char fg, char bg);
|
2022-03-13 20:30:14 +01:00
|
|
|
|
2021-06-09 12:10:12 +02:00
|
|
|
/*! \brief Point size/line thickness
|
|
|
|
*
|
|
|
|
* \param x x-point size (1..15)
|
|
|
|
* \param y y-point size (1..15)
|
|
|
|
*/
|
|
|
|
void setLineThick(char x, char y);
|
2022-03-13 20:30:14 +01:00
|
|
|
|
2021-06-09 12:10:12 +02:00
|
|
|
/*! \brief Draw straight line
|
|
|
|
*
|
|
|
|
* Draw straight line from point *x1*, *y1* to point *x2*, *y2*
|
|
|
|
*/
|
|
|
|
void drawLine(int x1, int y1, int x2, int y2);
|
2022-03-13 20:30:14 +01:00
|
|
|
|
2021-06-09 12:10:12 +02:00
|
|
|
/*! \brief Draw rectangle
|
|
|
|
*
|
|
|
|
* Draw four straight lines as a rectangle from *x1*, *y1* to *x2*, *y2*
|
|
|
|
*/
|
|
|
|
void drawRect(int x1, int y1, int x2, int y2);
|
2022-03-13 20:30:14 +01:00
|
|
|
|
2021-06-09 12:10:12 +02:00
|
|
|
void drawRectf(int x1, int y1, int x2, int y2, char color);
|
2022-03-13 20:30:14 +01:00
|
|
|
|
2022-03-13 18:17:41 +01:00
|
|
|
/*! \brief Clear rectangular area */
|
|
|
|
void clearRect(int x1, int y1, int x2, int y2);
|
2022-03-13 20:30:14 +01:00
|
|
|
|
2021-06-09 12:10:12 +02:00
|
|
|
// Touch keys
|
2022-03-13 20:30:14 +01:00
|
|
|
|
2021-06-09 12:10:12 +02:00
|
|
|
/*! \brief Define touch key
|
|
|
|
*
|
|
|
|
* Key remains pressed as long as there is contact. The area from *x1*, *y1*
|
|
|
|
* to *x2*, *y2* is drawn with actual border and defined as a key.
|
|
|
|
* The label is drawn with the current touch font. The first character
|
|
|
|
* determines the alignment of the text (`L`(eft), `R`(ight), `C`(enter)).
|
|
|
|
* Multiline texts are separated by the character `|`.
|
|
|
|
*
|
|
|
|
* \param down return/touchmacro (1-255) if pressed
|
|
|
|
* \param up return/touchmacro (1-255) if released
|
|
|
|
* \param text label of the touch key
|
|
|
|
*/
|
|
|
|
void defineTouchKey(int x1, int y1, int x2, int y2, char down, char up,
|
|
|
|
const char* text);
|
2022-03-13 20:30:14 +01:00
|
|
|
|
2021-06-09 12:10:12 +02:00
|
|
|
/*! \brief Define touch switch
|
|
|
|
*
|
|
|
|
* Status of the switch toggles after each contact. The area from *x1*, *y1*
|
|
|
|
* to *x2*, *y2* is drawn with actual border and defined as a key.
|
|
|
|
* The label is drawn with the current touch font. The first character
|
|
|
|
* determines the alignment of the text (`L`(eft), `R`(ight), `C`(enter)).
|
|
|
|
* Multiline texts are separated by the character `|`.
|
|
|
|
*
|
|
|
|
* \param down return/touchmacro (1-255) if pressed
|
|
|
|
* \param up return/touchmacro (1-255) if released
|
|
|
|
* \param text label of the touch key
|
|
|
|
*/
|
|
|
|
void defineTouchSwitch(int x1, int y1, int x2, int y2, char down, char up,
|
|
|
|
const char* text);
|
2022-03-13 20:30:14 +01:00
|
|
|
|
2021-06-09 12:10:12 +02:00
|
|
|
/*! \brief Define touch switch with image
|
|
|
|
*
|
|
|
|
* Status of the switch toggles after each contact. Image number *img* is
|
|
|
|
* loaded to *x*, *y* and defined as a switch.
|
|
|
|
* The label is drawn with the current touch font. The first character
|
|
|
|
* determines the alignment of the text (`L`(eft), `R`(ight), `C`(enter)).
|
|
|
|
* Multiline texts are separated by the character `|`.
|
|
|
|
*
|
|
|
|
* \param down return/touchmacro (1-255) if pressed
|
|
|
|
* \param up return/touchmacro (1-255) if released
|
|
|
|
* \param text label of the touch switch
|
|
|
|
*/
|
|
|
|
void defineTouchSwitch(int x, int y, int img, char downcode, char upcode,
|
|
|
|
const char* text);
|
2022-03-13 20:30:14 +01:00
|
|
|
|
2021-06-09 12:10:12 +02:00
|
|
|
/*! \brief Set touch switch
|
|
|
|
*
|
|
|
|
* Set the status of the touch switch with the return code *code*
|
|
|
|
* to *value*.
|
|
|
|
*
|
|
|
|
* \param code Return code of the switch
|
|
|
|
* \param value `value=0`: OFF, `value=1`: ON
|
|
|
|
*/
|
|
|
|
void setTouchSwitch(char code, char value);
|
2022-03-13 20:30:14 +01:00
|
|
|
|
2021-06-09 12:10:12 +02:00
|
|
|
void setTouchkeyColors(char n1, char n2, char n3, char s1, char s2, char s3);
|
2022-03-13 20:30:14 +01:00
|
|
|
|
2021-06-09 12:10:12 +02:00
|
|
|
/*! \brief Label font
|
|
|
|
*
|
|
|
|
* Apply font with number *font* for touch key labels
|
|
|
|
*/
|
|
|
|
void setTouchkeyFont(char font);
|
2022-03-13 20:30:14 +01:00
|
|
|
|
2021-06-09 12:10:12 +02:00
|
|
|
void setTouchkeyLabelColors(char nf, char sf);
|
2022-03-13 20:30:14 +01:00
|
|
|
|
2021-06-09 12:10:12 +02:00
|
|
|
/*! \brief Radio group for switches
|
|
|
|
*
|
|
|
|
* `group=0`: newly defined switches don't belong to a group
|
|
|
|
* `group=1..255`: newly defined switches are assigned to the group with
|
|
|
|
* the given number
|
|
|
|
* Only one switch in a group is active at once. All others are deactivated.
|
|
|
|
* For switches only the *down code* is applicable. The *up code* will be
|
|
|
|
* ignored.
|
|
|
|
*/
|
|
|
|
void setTouchGroup(char group);
|
2022-03-13 20:30:14 +01:00
|
|
|
|
2021-06-09 12:10:12 +02:00
|
|
|
/*! \brief Delete toch area by up- or downcode
|
|
|
|
*
|
|
|
|
* The touch area with the return code is removed from the touch query
|
|
|
|
*
|
|
|
|
* \param code the code of the touch area (code=0: all touch areas)
|
|
|
|
* \param n1 n1==0: the area remains visible on the display,
|
|
|
|
* n1==1: the area is deleted
|
|
|
|
*/
|
|
|
|
void removeTouchArea(char code, char n1);
|
2022-03-13 20:30:14 +01:00
|
|
|
|
2021-06-09 12:10:12 +02:00
|
|
|
// Macro Calls
|
|
|
|
/*! \brief Run macro
|
|
|
|
*
|
|
|
|
* Call the (normal) macro with number *nr* (max. 7 levels).
|
|
|
|
*/
|
|
|
|
void callMacro(uint nr);
|
2022-03-13 20:30:14 +01:00
|
|
|
|
2021-06-09 12:10:12 +02:00
|
|
|
/*! \brief Run touch macro
|
|
|
|
*
|
|
|
|
* Call touch macro with number *nr* (max. 7 levels)
|
|
|
|
*/
|
|
|
|
void callTouchMacro(uint nr);
|
2022-03-13 20:30:14 +01:00
|
|
|
|
2021-06-09 12:10:12 +02:00
|
|
|
/*! \brief Run menu macro
|
|
|
|
*
|
|
|
|
* Call menu macro with number *nr* (max. 7 levels)
|
|
|
|
*/
|
|
|
|
void callMenuMacro(uint nr);
|
2022-03-13 20:30:14 +01:00
|
|
|
|
2021-06-09 12:10:12 +02:00
|
|
|
/*! \brief Define touch key with menu function
|
|
|
|
*
|
|
|
|
* Define the area from *x1*, *y1* to *x2*, *y2* as a menu key.
|
|
|
|
* The first character determines the direction in which the menu opens
|
|
|
|
* (R=right,L=left,O=up,U=down) The second character determines the alignment
|
|
|
|
* of the touch text (C=center,L=left-,R=right justified) The menu items are
|
|
|
|
* separated by the character '|' ($7C,dec:124) (e.g.
|
|
|
|
* "UCkey|item1|item2|item3". The key text is written with the current touch
|
|
|
|
* font and the menu items are written with the current menu font. The
|
|
|
|
* background of the menu is saved automatically. \param downcode `1-255`
|
|
|
|
* return/touchmacro if pressed \param upcode `1-255` return/touchmacro if
|
|
|
|
* released \param mnucode return/menumacro+(item nr - 1) after selection of a
|
|
|
|
* menu item
|
|
|
|
* \param text string with the key text and menu items
|
|
|
|
*/
|
|
|
|
void defineTouchMenu(int x1, int y1, int x2, int y2, char downcode,
|
|
|
|
char upcode, char mnucode, const char* text);
|
2022-03-13 20:30:14 +01:00
|
|
|
|
2021-06-09 12:10:12 +02:00
|
|
|
/*! \brief Send *open* signal after a Menu open request has been sent from
|
|
|
|
* TFT.
|
|
|
|
*
|
|
|
|
* If a touch menu is not set to open automatically the TFT sends a
|
|
|
|
* request 'ESC T 0'. This function sends 'ESC N T 2' to open the menu.
|
|
|
|
*/
|
|
|
|
void openTouchMenu();
|
2022-03-13 20:30:14 +01:00
|
|
|
|
2021-06-09 12:10:12 +02:00
|
|
|
/*! \brief Set menu font
|
|
|
|
*
|
|
|
|
* Set font with number *font* (`0..15`) for menu display
|
|
|
|
*/
|
|
|
|
void setMenuFont(char font);
|
2022-03-13 20:30:14 +01:00
|
|
|
|
2021-06-09 12:10:12 +02:00
|
|
|
/*! \brief enable/disable touchmenu automation
|
|
|
|
*
|
|
|
|
* if val==true touch menu opens automatically, if val==false touchmenu
|
|
|
|
* doesn' t open automatically, instead a request is sent to the
|
|
|
|
* host computer, which can then open the menu with openTouchMenu()
|
|
|
|
*/
|
|
|
|
void setTouchMenuAutomation(bool val);
|
2022-03-13 20:30:14 +01:00
|
|
|
|
2021-06-09 12:10:12 +02:00
|
|
|
private:
|
|
|
|
boolean _smallprotocol;
|
|
|
|
int _counter;
|
|
|
|
unsigned char bytesAvailable();
|
|
|
|
void waitBytesAvailable();
|
|
|
|
void sendByte(char data);
|
|
|
|
void sendSmall(char* data, char len);
|
|
|
|
void sendSmallDC2(char* data, char len);
|
|
|
|
};
|
|
|
|
#endif
|