mirror of
https://github.com/RobTillaart/Arduino.git
synced 2024-10-03 18:09:02 -04:00
0.2.1 ANSI
This commit is contained in:
parent
c3bb5e50e1
commit
2d8a4ceff3
@ -6,6 +6,13 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/)
|
||||
and this project adheres to [Semantic Versioning](http://semver.org/).
|
||||
|
||||
|
||||
## [0.2.1] - 2023-10-17
|
||||
- update readme.md (badges)
|
||||
- fix version in ansi.cpp
|
||||
- add a derived VT100 class (wrapper for now).
|
||||
- minor edits
|
||||
|
||||
|
||||
## [0.2.0] - 2023-02-26
|
||||
- fix #13 gotoXY(column, row)
|
||||
- add ansi_gotoXY example.
|
||||
|
@ -2,8 +2,11 @@
|
||||
[![Arduino CI](https://github.com/RobTillaart/ANSI/workflows/Arduino%20CI/badge.svg)](https://github.com/marketplace/actions/arduino_ci)
|
||||
[![Arduino-lint](https://github.com/RobTillaart/ANSI/actions/workflows/arduino-lint.yml/badge.svg)](https://github.com/RobTillaart/ANSI/actions/workflows/arduino-lint.yml)
|
||||
[![JSON check](https://github.com/RobTillaart/ANSI/actions/workflows/jsoncheck.yml/badge.svg)](https://github.com/RobTillaart/ANSI/actions/workflows/jsoncheck.yml)
|
||||
[![GitHub issues](https://img.shields.io/github/issues/RobTillaart/ANSI.svg)](https://github.com/RobTillaart/ANSI/issues)
|
||||
|
||||
[![License: MIT](https://img.shields.io/badge/license-MIT-green.svg)](https://github.com/RobTillaart/ANSI/blob/master/LICENSE)
|
||||
[![GitHub release](https://img.shields.io/github/release/RobTillaart/ANSI.svg?maxAge=3600)](https://github.com/RobTillaart/ANSI/releases)
|
||||
[![PlatformIO Registry](https://badges.registry.platformio.org/packages/robtillaart/library/ANSI.svg)](https://registry.platformio.org/libraries/robtillaart/ANSI)
|
||||
|
||||
|
||||
# ANSI
|
||||
@ -54,10 +57,11 @@ See examples
|
||||
#include "ansi.h"
|
||||
```
|
||||
|
||||
#### Constructor
|
||||
#### Constructors
|
||||
|
||||
- **ANSI(Stream \* stream = &Serial)** wrapper around Serial.
|
||||
Can be a software serial too.
|
||||
- **VT100(Stream \* stream = &Serial)** derived class (wrapper)
|
||||
|
||||
|
||||
#### Stream interface
|
||||
@ -91,8 +95,7 @@ Three helpers to map to the nearest colour.
|
||||
- **uint8_t grey2color(uint8_t grey)** idem
|
||||
- **uint8_t rgb2color(uint8_t r, uint8_t g, uint8_t b)**
|
||||
|
||||
|
||||
To do colour table
|
||||
- https://en.wikipedia.org/wiki/ANSI_escape_code#3-bit_and_4-bit
|
||||
|
||||
|
||||
#### Positioning
|
||||
@ -111,13 +114,26 @@ Note X == row and Y == column. See #13.
|
||||
|
||||
#### Experimental
|
||||
|
||||
look into **ansi.h** for experimental functions and notes.
|
||||
Look into **ansi.h** for experimental functions and notes.
|
||||
|
||||
Version 0.1.6 added a number of experimental function that need more testing.
|
||||
Some are working with Teraterm, others are unclear of fail.
|
||||
The user can uncomment these and verify if these work with their terminal.
|
||||
|
||||
Also added is the **int deviceType()** function which also need more testing.
|
||||
|
||||
##### Experimental device type
|
||||
|
||||
The **int deviceType()** function needs more testing.
|
||||
|
||||
See - https://github.com/RobTillaart/ANSI/issues/9
|
||||
|
||||
| Type | Description |
|
||||
|:-------:|:--------------|
|
||||
| -1 | unknown |
|
||||
| 1 | VT52 |
|
||||
| 2 | VT100 |
|
||||
| 3 | VT220 |
|
||||
| other | unknown |
|
||||
|
||||
As always, constructive feedback is welcome.
|
||||
|
||||
@ -128,7 +144,7 @@ Since 0.1.5 there is some focus on performance.
|
||||
Using **ansi.print()** and **ansi.println()** for printing text and numbers is
|
||||
improved a bit since 0.1.4 by adding the private **write(array, length)**.
|
||||
|
||||
Since 0.2.0 the print() statements are replaced by write().
|
||||
Since 0.2.0 the (internal) print() statements are replaced by write().
|
||||
Although it are small improvements these add up.
|
||||
|
||||
|
||||
@ -148,7 +164,6 @@ Although it are small improvements these add up.
|
||||
- DOS emulator?
|
||||
- experimental section
|
||||
- evaluate experimental code
|
||||
- move code from .h to .cpp
|
||||
|
||||
#### Could
|
||||
|
||||
@ -157,9 +172,20 @@ Although it are small improvements these add up.
|
||||
- investigate performance.
|
||||
- add line buffer in write(c) to improve throughput?
|
||||
- need for flush() with line buffer?
|
||||
- move code from .h to .cpp
|
||||
- more derived classes
|
||||
|
||||
#### Wont
|
||||
|
||||
- move static strings to PROGMEM? as defines?
|
||||
roughly ~20 bytes progmem for 4 bytes RAM...
|
||||
|
||||
|
||||
## Support
|
||||
|
||||
If you appreciate my libraries, you can support the development and maintenance.
|
||||
Improve the quality of the libraries by providing issues and Pull Requests, or
|
||||
donate through PayPal or GitHub sponsors.
|
||||
|
||||
Thank you,
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
//
|
||||
// FILE: ansi.cpp
|
||||
// AUTHOR: Rob Tillaart
|
||||
// VERSION: 0.1.8
|
||||
// VERSION: 0.2.1
|
||||
// PURPOSE: Arduino library to send ANSI escape sequences
|
||||
// DATE: 2020-04-28
|
||||
// URL: https://github.com/RobTillaart/ANSI
|
||||
@ -197,7 +197,6 @@ uint8_t ANSI::rgb2color(uint8_t r, uint8_t g, uint8_t b) {
|
||||
}
|
||||
|
||||
|
||||
|
||||
int ANSI::deviceType(uint32_t timeout)
|
||||
{
|
||||
int type = -1; // -1 = unknown
|
||||
@ -223,14 +222,7 @@ int ANSI::deviceType(uint32_t timeout)
|
||||
|
||||
//////////////////////////////////////////////////
|
||||
//
|
||||
// EXPERIMENTAL
|
||||
//
|
||||
|
||||
|
||||
|
||||
//////////////////////////////////////////////////
|
||||
//
|
||||
// PRIVATE
|
||||
// PROTECTED
|
||||
//
|
||||
size_t ANSI::write(uint8_t c)
|
||||
{
|
||||
@ -245,7 +237,6 @@ size_t ANSI::write(uint8_t * array, uint8_t length)
|
||||
}
|
||||
|
||||
|
||||
|
||||
void ANSI::color4_code(uint8_t base, uint8_t color) {
|
||||
if (color < 8) {
|
||||
print(base + color);
|
||||
@ -282,5 +273,14 @@ void ANSI::color8(uint8_t base, uint8_t color) {
|
||||
}
|
||||
|
||||
|
||||
//////////////////////////////////////////////////////
|
||||
//
|
||||
// DERIVED
|
||||
//
|
||||
VT100::VT100(Stream * stream) : ANSI(stream)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
// -- END OF FILE --
|
||||
|
||||
|
@ -2,7 +2,7 @@
|
||||
//
|
||||
// FILE: ansi.h
|
||||
// AUTHOR: Rob Tillaart
|
||||
// VERSION: 0.2.0
|
||||
// VERSION: 0.2.1
|
||||
// PURPOSE: Arduino library to send ANSI escape sequences
|
||||
// DATE: 2020-04-28
|
||||
// URL: https://github.com/RobTillaart/ANSI
|
||||
@ -10,7 +10,7 @@
|
||||
|
||||
#include "Arduino.h"
|
||||
|
||||
#define ANSI_LIB_VERSION (F("0.2.0"))
|
||||
#define ANSI_LIB_VERSION (F("0.2.1"))
|
||||
|
||||
|
||||
class ANSI : public Stream
|
||||
@ -81,16 +81,18 @@ public:
|
||||
// (for named colors, this is 25% faster than setting one then the other)
|
||||
void color(uint8_t fgcolor, uint8_t bgcolor);
|
||||
|
||||
// Convert gray to ANSI 24-level gray in 4-bit colorspace
|
||||
// Convert gray to ANSI 24-level gray in 4-bit color space
|
||||
// Pass in a gray level from 0 (black) to 255 (white)
|
||||
uint8_t gray2color(uint8_t gray) { return 232 + uint16_t(gray) * 24 / 256; }
|
||||
uint8_t grey2color(uint8_t grey) { return this->gray2color(grey); }
|
||||
|
||||
// Convert RGB color to ANSI color in 4-bit colorspace
|
||||
// Convert RGB color to ANSI color in 4-bit color space
|
||||
// Pass in a RGB level from 0 (dark) to 255 (light)
|
||||
uint8_t rgb2color(uint8_t r, uint8_t g, uint8_t b);
|
||||
|
||||
|
||||
// EXPERIMENTAL SECTION
|
||||
// use at own risk
|
||||
// META
|
||||
// deviceType is discussed
|
||||
// - https://github.com/RobTillaart/ANSI/issues/9
|
||||
@ -101,10 +103,8 @@ public:
|
||||
int deviceType(uint32_t timeout = 100);
|
||||
|
||||
|
||||
// EXPERIMENTAL SECTION
|
||||
// use at own risk
|
||||
// check if it works on your terminal
|
||||
// TERA
|
||||
// TERATERM
|
||||
void set132columns() { print("\033[?3h"); }; // +
|
||||
void set80columns() { print("\033[?3l"); }; // +
|
||||
|
||||
@ -118,9 +118,9 @@ public:
|
||||
void reset() { print("\033c"); }; // +
|
||||
|
||||
|
||||
// NOT working on TERA TERM (or need testing)
|
||||
// NOT working on TERATERM (or need more testing)
|
||||
// use at own risk
|
||||
// check if it works on your terminal TERA
|
||||
// check if it works on your terminal TERATERM
|
||||
/*
|
||||
void setSmoothScroll() { print("\033[?4h"); }; // -
|
||||
void setJumpScroll() { print("\033[?4l"); }; // -
|
||||
@ -130,14 +130,14 @@ public:
|
||||
|
||||
// PRINTING
|
||||
// use at own risk
|
||||
// check if it works on your terminal TERA
|
||||
// check if it works on your terminal TERATERM
|
||||
void printLine() { print("\033[1i"); }; // ?
|
||||
void startPrintLog() { print("\033[4i"); }; // ?
|
||||
void stopPrintLog() { print("\033[5i"); }; // ?
|
||||
*/
|
||||
|
||||
|
||||
private:
|
||||
protected:
|
||||
size_t write(uint8_t c);
|
||||
size_t write(uint8_t * array, uint8_t length);
|
||||
|
||||
@ -151,5 +151,16 @@ private:
|
||||
};
|
||||
|
||||
|
||||
//////////////////////////////////////////////////////
|
||||
//
|
||||
// DERIVED
|
||||
//
|
||||
class VT100 : public ANSI
|
||||
{
|
||||
public:
|
||||
VT100(Stream * stream = &Serial);
|
||||
};
|
||||
|
||||
|
||||
// -- END OF FILE --
|
||||
|
||||
|
@ -3,6 +3,7 @@
|
||||
|
||||
# Data types (KEYWORD1)
|
||||
ANSI KEYWORD1
|
||||
VT100 KEYWORD1
|
||||
|
||||
|
||||
# Methods and Functions (KEYWORD2)
|
||||
|
@ -15,9 +15,9 @@
|
||||
"type": "git",
|
||||
"url": "https://github.com/RobTillaart/ANSI.git"
|
||||
},
|
||||
"version": "0.2.0",
|
||||
"version": "0.2.1",
|
||||
"license": "MIT",
|
||||
"frameworks": "arduino",
|
||||
"frameworks": "*",
|
||||
"platforms": "*",
|
||||
"headers": "ansi.h"
|
||||
}
|
||||
|
@ -1,5 +1,5 @@
|
||||
name=ANSI
|
||||
version=0.2.0
|
||||
version=0.2.1
|
||||
author=Rob Tillaart <rob.tillaart@gmail.com>
|
||||
maintainer=Rob Tillaart <rob.tillaart@gmail.com>
|
||||
sentence=Arduino library to send ANSI escape sequences.
|
||||
|
@ -40,8 +40,10 @@ unittest_teardown()
|
||||
unittest(test_constructor)
|
||||
{
|
||||
ANSI ansi(&Serial);
|
||||
|
||||
assertEqual(12, ansi.println("1234567890") );
|
||||
|
||||
VT100 vt(&Serial);
|
||||
assertEqual(10, vt.print("1234567890") );
|
||||
}
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user