From 306c6611dc21324c435e753c94b3e4a11ce193ca Mon Sep 17 00:00:00 2001 From: yoprogramo Date: Thu, 19 Jan 2023 16:57:34 +0100 Subject: [PATCH] v2.1.0 - more QR VERSIONS available --- README.md | 5 + library.json | 2 +- library.properties | 2 +- src/frame-v1.c | 56 +++++++++++ src/frame-v10.c | 108 +++++++++++++++++++++ src/frame-v2.c | 61 ++++++++++++ src/frame-v3.c | 68 +++++++++++++ src/frame-v4.c | 73 ++++++++++++++ src/frame-v5.c | 80 ++++++++++++++++ src/frame-v6.c | 84 ++++++++++++++++ src/{frame.c => frame-v7.c} | 186 +++++++++++++++++++----------------- src/frame-v8.c | 96 +++++++++++++++++++ src/frame-v9.c | 104 ++++++++++++++++++++ 13 files changed, 833 insertions(+), 92 deletions(-) create mode 100644 src/frame-v1.c create mode 100644 src/frame-v10.c create mode 100644 src/frame-v2.c create mode 100644 src/frame-v3.c create mode 100644 src/frame-v4.c create mode 100644 src/frame-v5.c create mode 100644 src/frame-v6.c rename src/{frame.c => frame-v7.c} (89%) create mode 100644 src/frame-v8.c create mode 100644 src/frame-v9.c diff --git a/README.md b/README.md index a6500ac..c4385de 100644 --- a/README.md +++ b/README.md @@ -16,6 +16,11 @@ Each subclass have its own repository with its own dependencies. This library ha If you do not find match for your display model feel free to contribute with a new subclasss or file an Issue here. +# How to select a different QR version + +By default the QR version is 7 and ECC 1. If you wanna use a different version you have to define in your project QRCODEVERSION with a number from 1 to 10. +We have chosen this conditional compilation to reduce the library footprint for small devices. Frame files courtesy of @slavendam. + ## Breaking changes in version 2.0.0 To avoid conflict with other libraries we have renamed the file qrcode.h to qrcodedisplay.h, so all the subclasses have to do the same change. diff --git a/library.json b/library.json index d9e163a..551d4cc 100644 --- a/library.json +++ b/library.json @@ -1,6 +1,6 @@ { "name": "QRcodeDisplay", - "version": "2.0.2", + "version": "2.1.0", "keywords": "qr code, ESP32, ESP8266, TFT display, OLED Display, E-ink display", "description": "Base clase for generating QRCodes on ESP devices with different kind of displays", "repository": diff --git a/library.properties b/library.properties index 574e499..df6fda5 100644 --- a/library.properties +++ b/library.properties @@ -1,5 +1,5 @@ name=QRcodeDisplay -version=2.0.2 +version=2.1.0 author=Jose Antonio Espinosa maintainer=Jose Antonio Espinosa sentence=Base code for displaying QRcodes on ESP based MCU with OLED, TFT or E-Ink displays diff --git a/src/frame-v1.c b/src/frame-v1.c new file mode 100644 index 0000000..c5c388d --- /dev/null +++ b/src/frame-v1.c @@ -0,0 +1,56 @@ +#if defined(QRCODEVERSION) && QRCODEVERSION == 1 +const unsigned char neccblk1 = 1; +const unsigned char neccblk2 = 0; +const unsigned char datablkw = 19; +const unsigned char eccblkwid = 7; +const unsigned char VERSION = 1; +const unsigned char ECCLEVEL = 1; +const unsigned char WD = 21; +const unsigned char WDB = 3; +unsigned char strinbuf[63]; +unsigned char qrframe[600]; +unsigned char rlens[22]; +#ifndef __AVR__ +#define PROGMEM +#define memcpy_P memcpy +#define __LPM(x) *x +#else +#include +#endif +const unsigned char framebase[] PROGMEM = { +0xfe,0x03,0xf8, +0x82,0x02,0x08, +0xba,0x02,0xe8, +0xba,0x02,0xe8, +0xba,0x02,0xe8, +0x82,0x02,0x08, +0xfe,0xab,0xf8, +0x00,0x00,0x00, +0x02,0x00,0x00, +0x00,0x00,0x00, +0x02,0x00,0x00, +0x00,0x00,0x00, +0x02,0x00,0x00, +0x00,0x80,0x00, +0xfe,0x00,0x00, +0x82,0x00,0x00, +0xba,0x00,0x00, +0xba,0x00,0x00, +0xba,0x00,0x00, +0x82,0x00,0x00, +0xfe,0x00,0x00, +}; + +const unsigned char framask[] PROGMEM = { +0xff,0xff,0xff, +0xff,0xff,0xf8, +0x10,0x04,0x00, +0x80,0x08,0x1f, +0xf0,0x7f,0xc0, +0xff,0x80,0xff, +0x80,0x7f,0xc0, +0x1f,0xf0,0x03, +0xfe,0x00,0x3f, +0xe0,0x00, +}; +#endif \ No newline at end of file diff --git a/src/frame-v10.c b/src/frame-v10.c new file mode 100644 index 0000000..546acb6 --- /dev/null +++ b/src/frame-v10.c @@ -0,0 +1,108 @@ +#if defined(QRCODEVERSION) && QRCODEVERSION == 10 +const unsigned char neccblk1 = 2; +const unsigned char neccblk2 = 2; +const unsigned char datablkw = 68; +const unsigned char eccblkwid = 18; +const unsigned char VERSION = 10; +const unsigned char ECCLEVEL = 1; +const unsigned char WD = 57; +const unsigned char WDB = 8; +unsigned char strinbuf[456]; +unsigned char qrframe[600]; +unsigned char rlens[58]; +#ifndef AVR +#define PROGMEM +#define memcpy_P memcpy +#define __LPM(x) *x +#else +#include +#endif +const unsigned char framebase[] PROGMEM = { +0xfe,0x00,0x00,0x00,0x00,0x03,0x3f,0x80, +0x82,0x00,0x00,0x00,0x00,0x01,0x20,0x80, +0xba,0x00,0x00,0x00,0x00,0x03,0x2e,0x80, +0xba,0x00,0x00,0x00,0x00,0x01,0x2e,0x80, +0xba,0x00,0x00,0x3e,0x00,0x01,0x2e,0x80, +0x82,0x00,0x00,0x22,0x00,0x02,0x20,0x80, +0xfe,0xaa,0xaa,0xaa,0xaa,0xaa,0xbf,0x80, +0x00,0x00,0x00,0x22,0x00,0x00,0x00,0x00, +0x02,0x00,0x00,0x3e,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x0f,0x80,0x00,0x3e,0x00,0x00,0xf8,0x00, +0x08,0x80,0x00,0x22,0x00,0x00,0x88,0x00, +0x0a,0x80,0x00,0x2a,0x00,0x00,0xa8,0x00, +0x08,0x80,0x00,0x22,0x00,0x00,0x88,0x00, +0x0f,0x80,0x00,0x3e,0x00,0x00,0xf8,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0xa6,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x02,0x00,0x00,0x3e,0x00,0x00,0xf8,0x00, +0x00,0x80,0x00,0x22,0x00,0x00,0x88,0x00, +0xfe,0x00,0x00,0x2a,0x00,0x00,0xa8,0x00, +0x82,0x00,0x00,0x22,0x00,0x00,0x88,0x00, +0xba,0x00,0x00,0x3e,0x00,0x00,0xf8,0x00, +0xba,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0xba,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x82,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0xfe,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +}; + +const unsigned char framask[] PROGMEM = { +0xff,0xff,0xff,0xff,0xff,0xf8,0x10,0x04, +0x00,0x80,0x08,0x00,0x40,0x01,0x00,0x02, +0x00,0x02,0x00,0x01,0x00,0x00,0x40,0x00, +0x08,0x00,0x00,0x80,0x00,0x04,0x00,0x00, +0x10,0x00,0x00,0x20,0x00,0x00,0x20,0x00, +0x00,0x10,0x00,0x00,0x1f,0x00,0x00,0x43, +0xe0,0x00,0x0c,0x3e,0x00,0x00,0xe1,0xf0, +0x00,0x07,0x87,0xc0,0x00,0x1f,0x02,0x00, +0x00,0x00,0x02,0x00,0x00,0x00,0x01,0x00, +0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x08, +0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00, +0x04,0x00,0x00,0x00,0x00,0x10,0x00,0x00, +0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x20, +0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00, +0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x80, +0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00, +0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x7f, +0x00,0x00,0x00,0x00,0x00,0xfe,0x00,0x00, +0x00,0x00,0x00,0xfe,0x00,0x00,0x3e,0x00, +0x00,0xff,0xc0,0x00,0x1f,0x00,0x00,0x7f, +0xf0,0x00,0x07,0xc0,0x00,0x1f,0xfe,0x00, +0x00,0xf8,0x00,0x03,0xff,0xe0,0x00,0x0f, +0x80,0x00,0x3f,0xff,0x00,0x00,0x00,0x00, +0x00,0x07,0xfc,0x00,0x00,0x00,0x00,0x00, +0x0f,0xf8,0x00,0x00,0x00,0x00,0x00,0x0f, +0xf8,0x00,0x00,0x00,0x00,0x00,0x00, +}; +#endif \ No newline at end of file diff --git a/src/frame-v2.c b/src/frame-v2.c new file mode 100644 index 0000000..daf218c --- /dev/null +++ b/src/frame-v2.c @@ -0,0 +1,61 @@ +#if defined(QRCODEVERSION) && QRCODEVERSION == 2 +const unsigned char neccblk1 = 1; +const unsigned char neccblk2 = 0; +const unsigned char datablkw = 34; +const unsigned char eccblkwid = 10; +const unsigned char VERSION = 2; +const unsigned char ECCLEVEL = 1; +const unsigned char WD = 25; +const unsigned char WDB = 4; +unsigned char strinbuf[100]; +unsigned char qrframe[600]; +unsigned char rlens[26]; +#ifndef __AVR__ +#define PROGMEM +#define memcpy_P memcpy +#define __LPM(x) *x +#else +#include +#endif +const unsigned char framebase[] PROGMEM = { +0xfe,0x00,0x3f,0x80, +0x82,0x00,0x20,0x80, +0xba,0x00,0x2e,0x80, +0xba,0x00,0x2e,0x80, +0xba,0x00,0x2e,0x80, +0x82,0x00,0x20,0x80, +0xfe,0xaa,0xbf,0x80, +0x00,0x00,0x00,0x00, +0x02,0x00,0x00,0x00, +0x00,0x00,0x00,0x00, +0x02,0x00,0x00,0x00, +0x00,0x00,0x00,0x00, +0x02,0x00,0x00,0x00, +0x00,0x00,0x00,0x00, +0x02,0x00,0x00,0x00, +0x00,0x00,0x00,0x00, +0x02,0x00,0xf8,0x00, +0x00,0x80,0x88,0x00, +0xfe,0x00,0xa8,0x00, +0x82,0x00,0x88,0x00, +0xba,0x00,0xf8,0x00, +0xba,0x00,0x00,0x00, +0xba,0x00,0x00,0x00, +0x82,0x00,0x00,0x00, +0xfe,0x00,0x00,0x00, +}; + +const unsigned char framask[] PROGMEM = { +0xff,0xff,0xff,0xff, +0xff,0xf8,0x10,0x04, +0x00,0x80,0x08,0x00, +0x40,0x01,0x00,0x02, +0x00,0x02,0x00,0xff, +0xc0,0x7f,0xf0,0x1f, +0xfe,0x03,0xff,0xe0, +0x3f,0xff,0x00,0x07, +0xfc,0x00,0x0f,0xf8, +0x00,0x0f,0xf8,0x00, +0x00, +}; +#endif \ No newline at end of file diff --git a/src/frame-v3.c b/src/frame-v3.c new file mode 100644 index 0000000..7c52671 --- /dev/null +++ b/src/frame-v3.c @@ -0,0 +1,68 @@ +#if defined(QRCODEVERSION) && QRCODEVERSION == 3 +const unsigned char neccblk1 = 1; +const unsigned char neccblk2 = 0; +const unsigned char datablkw = 55; +const unsigned char eccblkwid = 15; +const unsigned char VERSION = 3; +const unsigned char ECCLEVEL = 1; +const unsigned char WD = 29; +const unsigned char WDB = 4; +unsigned char strinbuf[116]; +unsigned char qrframe[600]; +unsigned char rlens[30]; +#ifndef __AVR__ +#define PROGMEM +#define memcpy_P memcpy +#define __LPM(x) *x +#else +#include +#endif +const unsigned char framebase[] PROGMEM = { +0xfe,0x00,0x03,0xf8, +0x82,0x00,0x02,0x08, +0xba,0x00,0x02,0xe8, +0xba,0x00,0x02,0xe8, +0xba,0x00,0x02,0xe8, +0x82,0x00,0x02,0x08, +0xfe,0xaa,0xab,0xf8, +0x00,0x00,0x00,0x00, +0x02,0x00,0x00,0x00, +0x00,0x00,0x00,0x00, +0x02,0x00,0x00,0x00, +0x00,0x00,0x00,0x00, +0x02,0x00,0x00,0x00, +0x00,0x00,0x00,0x00, +0x02,0x00,0x00,0x00, +0x00,0x00,0x00,0x00, +0x02,0x00,0x00,0x00, +0x00,0x00,0x00,0x00, +0x02,0x00,0x00,0x00, +0x00,0x00,0x00,0x00, +0x02,0x00,0x0f,0x80, +0x00,0x80,0x08,0x80, +0xfe,0x00,0x0a,0x80, +0x82,0x00,0x08,0x80, +0xba,0x00,0x0f,0x80, +0xba,0x00,0x00,0x00, +0xba,0x00,0x00,0x00, +0x82,0x00,0x00,0x00, +0xfe,0x00,0x00,0x00, +}; + +const unsigned char framask[] PROGMEM = { +0xff,0xff,0xff,0xff, +0xff,0xf8,0x10,0x04, +0x00,0x80,0x08,0x00, +0x40,0x01,0x00,0x02, +0x00,0x02,0x00,0x01, +0x00,0x00,0x40,0x00, +0x08,0x00,0x00,0x80, +0x03,0xff,0x00,0x1f, +0xfc,0x00,0x7f,0xf8, +0x00,0xff,0xf8,0x00, +0xff,0xfc,0x00,0x01, +0xff,0x00,0x00,0x3f, +0xe0,0x00,0x03,0xfe, +0x00,0x00,0x00, +}; +#endif \ No newline at end of file diff --git a/src/frame-v4.c b/src/frame-v4.c new file mode 100644 index 0000000..18c748e --- /dev/null +++ b/src/frame-v4.c @@ -0,0 +1,73 @@ +#if defined(QRCODEVERSION) && QRCODEVERSION == 4 +const unsigned char neccblk1 = 1; +const unsigned char neccblk2 = 0; +const unsigned char datablkw = 80; +const unsigned char eccblkwid = 20; +const unsigned char VERSION = 4; +const unsigned char ECCLEVEL = 1; +const unsigned char WD = 33; +const unsigned char WDB = 5; +unsigned char strinbuf[165]; +unsigned char qrframe[600]; +unsigned char rlens[34]; +#ifndef __AVR__ +#define PROGMEM +#define memcpy_P memcpy +#define __LPM(x) *x +#else +#include +#endif +const unsigned char framebase[] PROGMEM = { +0xfe,0x00,0x00,0x3f,0x80, +0x82,0x00,0x00,0x20,0x80, +0xba,0x00,0x00,0x2e,0x80, +0xba,0x00,0x00,0x2e,0x80, +0xba,0x00,0x00,0x2e,0x80, +0x82,0x00,0x00,0x20,0x80, +0xfe,0xaa,0xaa,0xbf,0x80, +0x00,0x00,0x00,0x00,0x00, +0x02,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00, +0x02,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00, +0x02,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00, +0x02,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00, +0x02,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00, +0x02,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00, +0x02,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00, +0x02,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00, +0x02,0x00,0x00,0xf8,0x00, +0x00,0x80,0x00,0x88,0x00, +0xfe,0x00,0x00,0xa8,0x00, +0x82,0x00,0x00,0x88,0x00, +0xba,0x00,0x00,0xf8,0x00, +0xba,0x00,0x00,0x00,0x00, +0xba,0x00,0x00,0x00,0x00, +0x82,0x00,0x00,0x00,0x00, +0xfe,0x00,0x00,0x00,0x00, +}; + +const unsigned char framask[] PROGMEM = { +0xff,0xff,0xff,0xff,0xff, +0xf8,0x10,0x04,0x00,0x80, +0x08,0x00,0x40,0x01,0x00, +0x02,0x00,0x02,0x00,0x01, +0x00,0x00,0x40,0x00,0x08, +0x00,0x00,0x80,0x00,0x04, +0x00,0x00,0x10,0x00,0x00, +0x20,0x00,0x00,0x20,0x00, +0x0f,0xfc,0x00,0x07,0xff, +0x00,0x01,0xff,0xe0,0x00, +0x3f,0xfe,0x00,0x03,0xff, +0xf0,0x00,0x00,0x7f,0xc0, +0x00,0x00,0xff,0x80,0x00, +0x00,0xff,0x80,0x00,0x00, +0x00, +}; +#endif \ No newline at end of file diff --git a/src/frame-v5.c b/src/frame-v5.c new file mode 100644 index 0000000..bd87f98 --- /dev/null +++ b/src/frame-v5.c @@ -0,0 +1,80 @@ +#if defined(QRCODEVERSION) && QRCODEVERSION == 5 +const unsigned char neccblk1 = 1; +const unsigned char neccblk2 = 0; +const unsigned char datablkw = 108; +const unsigned char eccblkwid = 26; +const unsigned char VERSION = 5; +const unsigned char ECCLEVEL = 1; +const unsigned char WD = 37; +const unsigned char WDB = 5; +unsigned char strinbuf[185]; +unsigned char qrframe[600]; +unsigned char rlens[38]; +#ifndef __AVR__ +#define PROGMEM +#define memcpy_P memcpy +#define __LPM(x) *x +#else +#include +#endif +const unsigned char framebase[] PROGMEM = { +0xfe,0x00,0x00,0x03,0xf8, +0x82,0x00,0x00,0x02,0x08, +0xba,0x00,0x00,0x02,0xe8, +0xba,0x00,0x00,0x02,0xe8, +0xba,0x00,0x00,0x02,0xe8, +0x82,0x00,0x00,0x02,0x08, +0xfe,0xaa,0xaa,0xab,0xf8, +0x00,0x00,0x00,0x00,0x00, +0x02,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00, +0x02,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00, +0x02,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00, +0x02,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00, +0x02,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00, +0x02,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00, +0x02,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00, +0x02,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00, +0x02,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00, +0x02,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00, +0x02,0x00,0x00,0x0f,0x80, +0x00,0x80,0x00,0x08,0x80, +0xfe,0x00,0x00,0x0a,0x80, +0x82,0x00,0x00,0x08,0x80, +0xba,0x00,0x00,0x0f,0x80, +0xba,0x00,0x00,0x00,0x00, +0xba,0x00,0x00,0x00,0x00, +0x82,0x00,0x00,0x00,0x00, +0xfe,0x00,0x00,0x00,0x00, +}; + +const unsigned char framask[] PROGMEM = { +0xff,0xff,0xff,0xff,0xff, +0xf8,0x10,0x04,0x00,0x80, +0x08,0x00,0x40,0x01,0x00, +0x02,0x00,0x02,0x00,0x01, +0x00,0x00,0x40,0x00,0x08, +0x00,0x00,0x80,0x00,0x04, +0x00,0x00,0x10,0x00,0x00, +0x20,0x00,0x00,0x20,0x00, +0x00,0x10,0x00,0x00,0x04, +0x00,0x00,0x00,0x80,0x00, +0x00,0x08,0x00,0x00,0x3f, +0xf0,0x00,0x01,0xff,0xc0, +0x00,0x07,0xff,0x80,0x00, +0x0f,0xff,0x80,0x00,0x0f, +0xff,0xc0,0x00,0x00,0x1f, +0xf0,0x00,0x00,0x03,0xfe, +0x00,0x00,0x00,0x3f,0xe0, +0x00,0x00,0x00, +}; +#endif \ No newline at end of file diff --git a/src/frame-v6.c b/src/frame-v6.c new file mode 100644 index 0000000..c9fb1eb --- /dev/null +++ b/src/frame-v6.c @@ -0,0 +1,84 @@ +#if defined(QRCODEVERSION) && QRCODEVERSION == 6 +const unsigned char neccblk1 = 2; +const unsigned char neccblk2 = 0; +const unsigned char datablkw = 68; +const unsigned char eccblkwid = 18; +const unsigned char VERSION = 6; +const unsigned char ECCLEVEL = 1; +const unsigned char WD = 41; +const unsigned char WDB = 6; +unsigned char strinbuf[246]; +unsigned char qrframe[600]; +unsigned char rlens[42]; +#ifndef __AVR__ +#define PROGMEM +#define memcpy_P memcpy +#define __LPM(x) *x +#else +#include +#endif +const unsigned char framebase[] PROGMEM = { +0xfe,0x00,0x00,0x00,0x3f,0x80, +0x82,0x00,0x00,0x00,0x20,0x80, +0xba,0x00,0x00,0x00,0x2e,0x80, +0xba,0x00,0x00,0x00,0x2e,0x80, +0xba,0x00,0x00,0x00,0x2e,0x80, +0x82,0x00,0x00,0x00,0x20,0x80, +0xfe,0xaa,0xaa,0xaa,0xbf,0x80, +0x00,0x00,0x00,0x00,0x00,0x00, +0x02,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00, +0x02,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00, +0x02,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00, +0x02,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00, +0x02,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00, +0x02,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00, +0x02,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00, +0x02,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00, +0x02,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00, +0x02,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00, +0x02,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00, +0x02,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00, +0x02,0x00,0x00,0x00,0xf8,0x00, +0x00,0x80,0x00,0x00,0x88,0x00, +0xfe,0x00,0x00,0x00,0xa8,0x00, +0x82,0x00,0x00,0x00,0x88,0x00, +0xba,0x00,0x00,0x00,0xf8,0x00, +0xba,0x00,0x00,0x00,0x00,0x00, +0xba,0x00,0x00,0x00,0x00,0x00, +0x82,0x00,0x00,0x00,0x00,0x00, +0xfe,0x00,0x00,0x00,0x00,0x00, +}; + +const unsigned char framask[] PROGMEM = { +0xff,0xff,0xff,0xff,0xff,0xf8, +0x10,0x04,0x00,0x80,0x08,0x00, +0x40,0x01,0x00,0x02,0x00,0x02, +0x00,0x01,0x00,0x00,0x40,0x00, +0x08,0x00,0x00,0x80,0x00,0x04, +0x00,0x00,0x10,0x00,0x00,0x20, +0x00,0x00,0x20,0x00,0x00,0x10, +0x00,0x00,0x04,0x00,0x00,0x00, +0x80,0x00,0x00,0x08,0x00,0x00, +0x00,0x40,0x00,0x00,0x01,0x00, +0x00,0x00,0x02,0x00,0x00,0x00, +0x02,0x00,0x00,0x00,0xff,0xc0, +0x00,0x00,0x7f,0xf0,0x00,0x00, +0x1f,0xfe,0x00,0x00,0x03,0xff, +0xe0,0x00,0x00,0x3f,0xff,0x00, +0x00,0x00,0x07,0xfc,0x00,0x00, +0x00,0x0f,0xf8,0x00,0x00,0x00, +0x0f,0xf8,0x00,0x00,0x00,0x00, +}; +#endif \ No newline at end of file diff --git a/src/frame.c b/src/frame-v7.c similarity index 89% rename from src/frame.c rename to src/frame-v7.c index 979b4b8..f64bef8 100644 --- a/src/frame.c +++ b/src/frame-v7.c @@ -1,90 +1,96 @@ -const unsigned char neccblk1 = 2; -const unsigned char neccblk2 = 0; -const unsigned char datablkw = 78; -const unsigned char eccblkwid = 20; -const unsigned char VERSION = 7; -const unsigned char ECCLEVEL = 1; -const unsigned char WD = 45; -const unsigned char WDB = 6; -unsigned char strinbuf[270]; -unsigned char qrframe[600]; -unsigned char rlens[46]; -#ifndef __AVR__ -#define PROGMEM -#define memcpy_P memcpy -#define __LPM(x) *x -#else -#include -#endif -const unsigned char framebase[] = { -0xfe,0x00,0x00,0x00,0x0b,0xf8, -0x82,0x00,0x00,0x00,0x12,0x08, -0xba,0x00,0x00,0x00,0x12,0xe8, -0xba,0x00,0x00,0x00,0x1a,0xe8, -0xba,0x00,0x0f,0x80,0x3a,0xe8, -0x82,0x00,0x08,0x80,0x02,0x08, -0xfe,0xaa,0xaa,0xaa,0xab,0xf8, -0x00,0x00,0x08,0x80,0x00,0x00, -0x02,0x00,0x0f,0x80,0x00,0x00, -0x00,0x00,0x00,0x00,0x00,0x00, -0x02,0x00,0x00,0x00,0x00,0x00, -0x00,0x00,0x00,0x00,0x00,0x00, -0x02,0x00,0x00,0x00,0x00,0x00, -0x00,0x00,0x00,0x00,0x00,0x00, -0x02,0x00,0x00,0x00,0x00,0x00, -0x00,0x00,0x00,0x00,0x00,0x00, -0x02,0x00,0x00,0x00,0x00,0x00, -0x00,0x00,0x00,0x00,0x00,0x00, -0x02,0x00,0x00,0x00,0x00,0x00, -0x00,0x00,0x00,0x00,0x00,0x00, -0x0f,0x80,0x0f,0x80,0x0f,0x80, -0x08,0x80,0x08,0x80,0x08,0x80, -0x0a,0x80,0x0a,0x80,0x0a,0x80, -0x08,0x80,0x08,0x80,0x08,0x80, -0x0f,0x80,0x0f,0x80,0x0f,0x80, -0x00,0x00,0x00,0x00,0x00,0x00, -0x02,0x00,0x00,0x00,0x00,0x00, -0x00,0x00,0x00,0x00,0x00,0x00, -0x02,0x00,0x00,0x00,0x00,0x00, -0x00,0x00,0x00,0x00,0x00,0x00, -0x02,0x00,0x00,0x00,0x00,0x00, -0x00,0x00,0x00,0x00,0x00,0x00, -0x02,0x00,0x00,0x00,0x00,0x00, -0x00,0x00,0x00,0x00,0x00,0x00, -0x0a,0x00,0x00,0x00,0x00,0x00, -0x78,0x00,0x00,0x00,0x00,0x00, -0x9a,0x00,0x0f,0x80,0x0f,0x80, -0x00,0x80,0x08,0x80,0x08,0x80, -0xfe,0x00,0x0a,0x80,0x0a,0x80, -0x82,0x00,0x08,0x80,0x08,0x80, -0xba,0x00,0x0f,0x80,0x0f,0x80, -0xba,0x00,0x00,0x00,0x00,0x00, -0xba,0x00,0x00,0x00,0x00,0x00, -0x82,0x00,0x00,0x00,0x00,0x00, -0xfe,0x00,0x00,0x00,0x00,0x00, -}; - -const unsigned char framask[] = { -0xff,0xff,0xff,0xff,0xff,0xf8, -0x10,0x04,0x00,0x80,0x08,0x00, -0x40,0x01,0x00,0x02,0x00,0x02, -0x00,0x01,0x00,0x00,0x40,0x00, -0x08,0x00,0x03,0xe0,0x02,0x1f, -0x00,0x18,0x7c,0x00,0x70,0xf8, -0x00,0xf0,0xf8,0x00,0xf8,0x10, -0x00,0x00,0x04,0x00,0x00,0x00, -0x80,0x00,0x00,0x08,0x00,0x00, -0x00,0x40,0x00,0x00,0x01,0x00, -0x00,0x00,0x02,0x00,0x00,0x00, -0x02,0x00,0x00,0x00,0x01,0x00, -0x00,0x00,0x1f,0xc0,0x00,0x00, -0x03,0xf8,0x00,0x00,0x00,0x3f, -0x80,0x03,0xe0,0x03,0xff,0x00, -0x1f,0x00,0x1f,0xfc,0x00,0x7c, -0x00,0x7f,0xf8,0x00,0xf8,0x00, -0xff,0xf8,0x00,0xf8,0x00,0xff, -0xfc,0x00,0x00,0x00,0x01,0xff, -0x00,0x00,0x00,0x00,0x3f,0xe0, -0x00,0x00,0x00,0x03,0xfe,0x00, -0x00,0x00,0x00,0x00, -}; +#ifndef QRCODEVERSION +#define QRCODEVERSION 7 +#endif + +#if defined(QRCODEVERSION) && QRCODEVERSION == 7 +const unsigned char neccblk1 = 2; +const unsigned char neccblk2 = 0; +const unsigned char datablkw = 78; +const unsigned char eccblkwid = 20; +const unsigned char VERSION = 7; +const unsigned char ECCLEVEL = 1; +const unsigned char WD = 45; +const unsigned char WDB = 6; +unsigned char strinbuf[270]; +unsigned char qrframe[600]; +unsigned char rlens[46]; +#ifndef __AVR__ +#define PROGMEM +#define memcpy_P memcpy +#define __LPM(x) *x +#else +#include +#endif +const unsigned char framebase[] PROGMEM = { +0xfe,0x00,0x00,0x00,0x0b,0xf8, +0x82,0x00,0x00,0x00,0x12,0x08, +0xba,0x00,0x00,0x00,0x12,0xe8, +0xba,0x00,0x00,0x00,0x1a,0xe8, +0xba,0x00,0x0f,0x80,0x3a,0xe8, +0x82,0x00,0x08,0x80,0x02,0x08, +0xfe,0xaa,0xaa,0xaa,0xab,0xf8, +0x00,0x00,0x08,0x80,0x00,0x00, +0x02,0x00,0x0f,0x80,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00, +0x02,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00, +0x02,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00, +0x02,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00, +0x02,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00, +0x02,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00, +0x0f,0x80,0x0f,0x80,0x0f,0x80, +0x08,0x80,0x08,0x80,0x08,0x80, +0x0a,0x80,0x0a,0x80,0x0a,0x80, +0x08,0x80,0x08,0x80,0x08,0x80, +0x0f,0x80,0x0f,0x80,0x0f,0x80, +0x00,0x00,0x00,0x00,0x00,0x00, +0x02,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00, +0x02,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00, +0x02,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00, +0x02,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00, +0x0a,0x00,0x00,0x00,0x00,0x00, +0x78,0x00,0x00,0x00,0x00,0x00, +0x9a,0x00,0x0f,0x80,0x0f,0x80, +0x00,0x80,0x08,0x80,0x08,0x80, +0xfe,0x00,0x0a,0x80,0x0a,0x80, +0x82,0x00,0x08,0x80,0x08,0x80, +0xba,0x00,0x0f,0x80,0x0f,0x80, +0xba,0x00,0x00,0x00,0x00,0x00, +0xba,0x00,0x00,0x00,0x00,0x00, +0x82,0x00,0x00,0x00,0x00,0x00, +0xfe,0x00,0x00,0x00,0x00,0x00, +}; + +const unsigned char framask[] PROGMEM = { +0xff,0xff,0xff,0xff,0xff,0xf8, +0x10,0x04,0x00,0x80,0x08,0x00, +0x40,0x01,0x00,0x02,0x00,0x02, +0x00,0x01,0x00,0x00,0x40,0x00, +0x08,0x00,0x03,0xe0,0x02,0x1f, +0x00,0x18,0x7c,0x00,0x70,0xf8, +0x00,0xf0,0xf8,0x00,0xf8,0x10, +0x00,0x00,0x04,0x00,0x00,0x00, +0x80,0x00,0x00,0x08,0x00,0x00, +0x00,0x40,0x00,0x00,0x01,0x00, +0x00,0x00,0x02,0x00,0x00,0x00, +0x02,0x00,0x00,0x00,0x01,0x00, +0x00,0x00,0x1f,0xc0,0x00,0x00, +0x03,0xf8,0x00,0x00,0x00,0x3f, +0x80,0x03,0xe0,0x03,0xff,0x00, +0x1f,0x00,0x1f,0xfc,0x00,0x7c, +0x00,0x7f,0xf8,0x00,0xf8,0x00, +0xff,0xf8,0x00,0xf8,0x00,0xff, +0xfc,0x00,0x00,0x00,0x01,0xff, +0x00,0x00,0x00,0x00,0x3f,0xe0, +0x00,0x00,0x00,0x03,0xfe,0x00, +0x00,0x00,0x00,0x00, +}; +#endif \ No newline at end of file diff --git a/src/frame-v8.c b/src/frame-v8.c new file mode 100644 index 0000000..75a91ed --- /dev/null +++ b/src/frame-v8.c @@ -0,0 +1,96 @@ +#if defined(QRCODEVERSION) && QRCODEVERSION == 8 +const unsigned char neccblk1 = 2; +const unsigned char neccblk2 = 0; +const unsigned char datablkw = 97; +const unsigned char eccblkwid = 24; +const unsigned char VERSION = 8; +const unsigned char ECCLEVEL = 1; +const unsigned char WD = 49; +const unsigned char WDB = 7; +unsigned char strinbuf[343]; +unsigned char qrframe[600]; +unsigned char rlens[50]; +#ifndef __AVR__ +#define PROGMEM +#define memcpy_P memcpy +#define __LPM(x) *x +#else +#include +#endif +const unsigned char framebase[] PROGMEM = { +0xfe,0x00,0x00,0x00,0x00,0xbf,0x80, +0x82,0x00,0x00,0x00,0x03,0xa0,0x80, +0xba,0x00,0x00,0x00,0x01,0xae,0x80, +0xba,0x00,0x00,0x00,0x01,0x2e,0x80, +0xba,0x00,0x03,0xe0,0x00,0x2e,0x80, +0x82,0x00,0x02,0x20,0x02,0x20,0x80, +0xfe,0xaa,0xaa,0xaa,0xaa,0xbf,0x80, +0x00,0x00,0x02,0x20,0x00,0x00,0x00, +0x02,0x00,0x03,0xe0,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x02,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x02,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x02,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x02,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x02,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x02,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x0f,0x80,0x03,0xe0,0x00,0xf8,0x00, +0x08,0x80,0x02,0x20,0x00,0x88,0x00, +0x0a,0x80,0x02,0xa0,0x00,0xa8,0x00, +0x08,0x80,0x02,0x20,0x00,0x88,0x00, +0x0f,0x80,0x03,0xe0,0x00,0xf8,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x02,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x02,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x02,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x02,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x02,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x46,0x00,0x00,0x00,0x00,0x00,0x00, +0x70,0x00,0x00,0x00,0x00,0x00,0x00, +0xe2,0x00,0x03,0xe0,0x00,0xf8,0x00, +0x00,0x80,0x02,0x20,0x00,0x88,0x00, +0xfe,0x00,0x02,0xa0,0x00,0xa8,0x00, +0x82,0x00,0x02,0x20,0x00,0x88,0x00, +0xba,0x00,0x03,0xe0,0x00,0xf8,0x00, +0xba,0x00,0x00,0x00,0x00,0x00,0x00, +0xba,0x00,0x00,0x00,0x00,0x00,0x00, +0x82,0x00,0x00,0x00,0x00,0x00,0x00, +0xfe,0x00,0x00,0x00,0x00,0x00,0x00, +}; + +const unsigned char framask[] PROGMEM = { +0xff,0xff,0xff,0xff,0xff,0xf8,0x10, +0x04,0x00,0x80,0x08,0x00,0x40,0x01, +0x00,0x02,0x00,0x02,0x00,0x01,0x00, +0x00,0x40,0x00,0x08,0x00,0x00,0x80, +0x00,0x04,0x00,0x00,0x7c,0x00,0x10, +0xf8,0x00,0x30,0xf8,0x00,0x38,0x7c, +0x00,0x1e,0x1f,0x00,0x07,0xc0,0x80, +0x00,0x00,0x08,0x00,0x00,0x00,0x40, +0x00,0x00,0x01,0x00,0x00,0x00,0x02, +0x00,0x00,0x00,0x02,0x00,0x00,0x00, +0x01,0x00,0x00,0x00,0x00,0x40,0x00, +0x00,0x00,0x08,0x00,0x00,0x00,0x00, +0x80,0x00,0x00,0x00,0x04,0x00,0x00, +0x00,0x07,0xf0,0x00,0x00,0x00,0x0f, +0xe0,0x00,0x00,0x00,0x0f,0xe0,0x00, +0x3e,0x00,0x0f,0xfc,0x00,0x1f,0x00, +0x07,0xff,0x00,0x07,0xc0,0x01,0xff, +0xe0,0x00,0xf8,0x00,0x3f,0xfe,0x00, +0x0f,0x80,0x03,0xff,0xf0,0x00,0x00, +0x00,0x00,0x7f,0xc0,0x00,0x00,0x00, +0x00,0xff,0x80,0x00,0x00,0x00,0x00, +0xff,0x80,0x00,0x00,0x00,0x00,0x00, +}; +#endif \ No newline at end of file diff --git a/src/frame-v9.c b/src/frame-v9.c new file mode 100644 index 0000000..d0a62f5 --- /dev/null +++ b/src/frame-v9.c @@ -0,0 +1,104 @@ +#if defined(QRCODEVERSION) && QRCODEVERSION == 9 +const unsigned char neccblk1 = 2; +const unsigned char neccblk2 = 0; +const unsigned char datablkw = 116; +const unsigned char eccblkwid = 30; +const unsigned char VERSION = 9; +const unsigned char ECCLEVEL = 1; +const unsigned char WD = 53; +const unsigned char WDB = 7; +unsigned char strinbuf[371]; +unsigned char qrframe[600]; +unsigned char rlens[54]; +#ifndef __AVR__ +#define PROGMEM +#define memcpy_P memcpy +#define __LPM(x) *x +#else +#include +#endif +const unsigned char framebase[] PROGMEM = { +0xfe,0x00,0x00,0x00,0x00,0x23,0xf8, +0x82,0x00,0x00,0x00,0x00,0x32,0x08, +0xba,0x00,0x00,0x00,0x00,0x12,0xe8, +0xba,0x00,0x00,0x00,0x00,0x2a,0xe8, +0xba,0x00,0x00,0xf8,0x00,0x22,0xe8, +0x82,0x00,0x00,0x88,0x00,0x22,0x08, +0xfe,0xaa,0xaa,0xaa,0xaa,0xab,0xf8, +0x00,0x00,0x00,0x88,0x00,0x00,0x00, +0x02,0x00,0x00,0xf8,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x02,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x02,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x02,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x02,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x02,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x02,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x02,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x0f,0x80,0x00,0xf8,0x00,0x0f,0x80, +0x08,0x80,0x00,0x88,0x00,0x08,0x80, +0x0a,0x80,0x00,0xa8,0x00,0x0a,0x80, +0x08,0x80,0x00,0x88,0x00,0x08,0x80, +0x0f,0x80,0x00,0xf8,0x00,0x0f,0x80, +0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x02,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x02,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x02,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x02,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x02,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x02,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0xde,0x00,0x00,0x00,0x00,0x00,0x00, +0x60,0x00,0x00,0x00,0x00,0x00,0x00, +0x12,0x00,0x00,0xf8,0x00,0x0f,0x80, +0x00,0x80,0x00,0x88,0x00,0x08,0x80, +0xfe,0x00,0x00,0xa8,0x00,0x0a,0x80, +0x82,0x00,0x00,0x88,0x00,0x08,0x80, +0xba,0x00,0x00,0xf8,0x00,0x0f,0x80, +0xba,0x00,0x00,0x00,0x00,0x00,0x00, +0xba,0x00,0x00,0x00,0x00,0x00,0x00, +0x82,0x00,0x00,0x00,0x00,0x00,0x00, +0xfe,0x00,0x00,0x00,0x00,0x00,0x00, +}; + +const unsigned char framask[] PROGMEM = { +0xff,0xff,0xff,0xff,0xff,0xf8,0x10, +0x04,0x00,0x80,0x08,0x00,0x40,0x01, +0x00,0x02,0x00,0x02,0x00,0x01,0x00, +0x00,0x40,0x00,0x08,0x00,0x00,0x80, +0x00,0x04,0x00,0x00,0x10,0x00,0x00, +0x20,0x00,0x00,0xf8,0x00,0x08,0x7c, +0x00,0x06,0x1f,0x00,0x01,0xc3,0xe0, +0x00,0x3c,0x3e,0x00,0x03,0xe0,0x40, +0x00,0x00,0x01,0x00,0x00,0x00,0x02, +0x00,0x00,0x00,0x02,0x00,0x00,0x00, +0x01,0x00,0x00,0x00,0x00,0x40,0x00, +0x00,0x00,0x08,0x00,0x00,0x00,0x00, +0x80,0x00,0x00,0x00,0x04,0x00,0x00, +0x00,0x00,0x10,0x00,0x00,0x00,0x00, +0x20,0x00,0x00,0x00,0x00,0x20,0x00, +0x00,0x00,0x00,0x10,0x00,0x00,0x00, +0x01,0xfc,0x00,0x00,0x00,0x00,0x3f, +0x80,0x00,0x00,0x00,0x03,0xf8,0x00, +0x03,0xe0,0x00,0x3f,0xf0,0x00,0x1f, +0x00,0x01,0xff,0xc0,0x00,0x7c,0x00, +0x07,0xff,0x80,0x00,0xf8,0x00,0x0f, +0xff,0x80,0x00,0xf8,0x00,0x0f,0xff, +0xc0,0x00,0x00,0x00,0x00,0x1f,0xf0, +0x00,0x00,0x00,0x00,0x03,0xfe,0x00, +0x00,0x00,0x00,0x00,0x3f,0xe0,0x00, +0x00,0x00,0x00,0x00, +}; +#endif \ No newline at end of file