From f2137f4f97f079479c2a2726111b996fca258263 Mon Sep 17 00:00:00 2001 From: erikkaashoek Date: Mon, 23 Mar 2020 09:49:01 +0100 Subject: [PATCH] All except waterfall working --- Font7x13b.c | 3959 +++++++++++++++++++++++++++++++++++++++++++++++++++ Makefile | 2 +- chconf.h | 2 +- ili9341.c | 13 +- main.c | 30 +- nanovna.h | 11 +- plot.c | 107 +- sa_core.c | 50 +- ui.c | 7 +- ui_sa.c | 3 +- 10 files changed, 4136 insertions(+), 48 deletions(-) create mode 100644 Font7x13b.c diff --git a/Font7x13b.c b/Font7x13b.c new file mode 100644 index 0000000..b3656b2 --- /dev/null +++ b/Font7x13b.c @@ -0,0 +1,3959 @@ +/* Generated by convbdf on Mon Apr 29 14:40:18 2019. */ + +/* Font information: + name: 7x13B + facename: -Misc-Fixed-Bold-R-Normal--13-120-75-75-C-70-ISO8859-2 + w x h: 7x13 + size: 127 + ascent: 11 + descent: 2 + first char: 0 (0x00) + last char: 126 (0x7e) + default char: 0 (0x00) + proportional: no + Public domain font. Share and enjoy. Copyright (c) 1996 BIZNET Poland, Inc. All Rights Reserved. +*/ + +#include + +/* Font character bitmap data. */ +const uint16_t x7x13b_bits [] = +{ + + /* Character 0 (0x00): + width 7 + +-------+ + | | + | ***** | + | ***** | + | ***** | + | ***** | + | ***** | + | ***** | + | ***** | + | ***** | + | ***** | + | ***** | + | ***** | + | | + +-------+ */ + 0x0000, + 0x7c00, + 0x7c00, + 0x7c00, + 0x7c00, + 0x7c00, + 0x7c00, + 0x7c00, + 0x7c00, + 0x7c00, + 0x7c00, + 0x7c00, + 0x0000, + + /* Character 1 (0x01): + width 7 + +-------+ + | | + | | + | | + | | + | | + | ** | + | **** | + |****** | + | **** | + | ** | + | | + | | + | | + +-------+ */ + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x3000, + 0x7800, + 0xfc00, + 0x7800, + 0x3000, + 0x0000, + 0x0000, + 0x0000, + + /* Character 2 (0x02): + width 7 + +-------+ + | | + |** ** | + | ** | + |** ** | + | ** | + |** ** | + | ** | + |** ** | + | ** | + |** ** | + | ** | + |** ** | + | | + +-------+ */ + 0x0000, + 0xcc00, + 0x3000, + 0xcc00, + 0x3000, + 0xcc00, + 0x3000, + 0xcc00, + 0x3000, + 0xcc00, + 0x3000, + 0xcc00, + 0x0000, + + /* Character 3 (0x03): + width 7 + +-------+ + | | + |** ** | + |** ** | + |***** | + |** ** | + |** ** | + | | + | **** | + | ** | + | ** | + | ** | + | ** | + | | + +-------+ */ + 0x0000, + 0xd800, + 0xd800, + 0xf800, + 0xd800, + 0xd800, + 0x0000, + 0x3c00, + 0x1800, + 0x1800, + 0x1800, + 0x1800, + 0x0000, + + /* Character 4 (0x04): + width 7 + +-------+ + | | + |**** | + |** | + |*** | + |** | + |** | + | | + | **** | + | ** | + | *** | + | ** | + | ** | + | | + +-------+ */ + 0x0000, + 0xf000, + 0xc000, + 0xe000, + 0xc000, + 0xc000, + 0x0000, + 0x3c00, + 0x3000, + 0x3800, + 0x3000, + 0x3000, + 0x0000, + + /* Character 5 (0x05): + width 7 + +-------+ + | | + | *** | + |** | + |** | + |** | + | *** | + | | + | *** | + | ** * | + | *** | + | ** * | + | ** * | + | | + +-------+ */ + 0x0000, + 0x7000, + 0xc000, + 0xc000, + 0xc000, + 0x7000, + 0x0000, + 0x3800, + 0x3400, + 0x3800, + 0x3400, + 0x3400, + 0x0000, + + /* Character 6 (0x06): + width 7 + +-------+ + | | + |** | + |** | + |** | + |** | + |**** | + | | + | **** | + | ** | + | *** | + | ** | + | ** | + | | + +-------+ */ + 0x0000, + 0xc000, + 0xc000, + 0xc000, + 0xc000, + 0xf000, + 0x0000, + 0x3c00, + 0x3000, + 0x3800, + 0x3000, + 0x3000, + 0x0000, + + /* Character 7 (0x07): + width 7 + +-------+ + | | + | | + | **** | + |** ** | + |** ** | + | **** | + | | + | | + | | + | | + | | + | | + | | + +-------+ */ + 0x0000, + 0x0000, + 0x7800, + 0xcc00, + 0xcc00, + 0x7800, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + + /* Character 8 (0x08): + width 7 + +-------+ + | | + | | + | ** | + | ** | + |****** | + |****** | + | ** | + | ** | + | | + |****** | + |****** | + | | + | | + +-------+ */ + 0x0000, + 0x0000, + 0x3000, + 0x3000, + 0xfc00, + 0xfc00, + 0x3000, + 0x3000, + 0x0000, + 0xfc00, + 0xfc00, + 0x0000, + 0x0000, + + /* Character 9 (0x09): + width 7 + +-------+ + | | + |** ** | + |*** ** | + |****** | + |** *** | + |** ** | + | | + | ** | + | ** | + | ** | + | ** | + | **** | + | | + +-------+ */ + 0x0000, + 0xcc00, + 0xec00, + 0xfc00, + 0xdc00, + 0xcc00, + 0x0000, + 0x3000, + 0x3000, + 0x3000, + 0x3000, + 0x3c00, + 0x0000, + + /* Character 10 (0x0a): + width 7 + +-------+ + | | + |** ** | + |** ** | + | * * | + | **** | + | ** | + | | + | **** | + | ** | + | ** | + | ** | + | ** | + | | + +-------+ */ + 0x0000, + 0xcc00, + 0xcc00, + 0x4800, + 0x7800, + 0x3000, + 0x0000, + 0x3c00, + 0x1800, + 0x1800, + 0x1800, + 0x1800, + 0x0000, + + /* Character 11 (0x0b): + width 7 + +-------+ + | ** | + | ** | + | ** | + | ** | + | ** | + | ** | + |**** | + |**** | + | | + | | + | | + | | + | | + +-------+ */ + 0x3000, + 0x3000, + 0x3000, + 0x3000, + 0x3000, + 0x3000, + 0xf000, + 0xf000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + + /* Character 12 (0x0c): + width 7 + +-------+ + | | + | | + | | + | | + | | + | | + |**** | + |**** | + | ** | + | ** | + | ** | + | ** | + | ** | + +-------+ */ + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0xf000, + 0xf000, + 0x3000, + 0x3000, + 0x3000, + 0x3000, + 0x3000, + + /* Character 13 (0x0d): + width 7 + +-------+ + | | + | | + | | + | | + | | + | | + | *****| + | *****| + | ** | + | ** | + | ** | + | ** | + | ** | + +-------+ */ + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x3e00, + 0x3e00, + 0x3000, + 0x3000, + 0x3000, + 0x3000, + 0x3000, + + /* Character 14 (0x0e): + width 7 + +-------+ + | ** | + | ** | + | ** | + | ** | + | ** | + | ** | + | *****| + | *****| + | | + | | + | | + | | + | | + +-------+ */ + 0x3000, + 0x3000, + 0x3000, + 0x3000, + 0x3000, + 0x3000, + 0x3e00, + 0x3e00, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + + /* Character 15 (0x0f): + width 7 + +-------+ + | ** | + | ** | + | ** | + | ** | + | ** | + | ** | + |*******| + |*******| + | ** | + | ** | + | ** | + | ** | + | ** | + +-------+ */ + 0x3000, + 0x3000, + 0x3000, + 0x3000, + 0x3000, + 0x3000, + 0xfe00, + 0xfe00, + 0x3000, + 0x3000, + 0x3000, + 0x3000, + 0x3000, + + /* Character 16 (0x10): + width 7 + +-------+ + | | + | | + |*******| + |*******| + | | + | | + | | + | | + | | + | | + | | + | | + | | + +-------+ */ + 0x0000, + 0x0000, + 0xfe00, + 0xfe00, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + + /* Character 17 (0x11): + width 7 + +-------+ + | | + | | + | | + | | + |*******| + |*******| + | | + | | + | | + | | + | | + | | + | | + +-------+ */ + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0xfe00, + 0xfe00, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + + /* Character 18 (0x12): + width 7 + +-------+ + | | + | | + | | + | | + | | + | | + |*******| + |*******| + | | + | | + | | + | | + | | + +-------+ */ + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0xfe00, + 0xfe00, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + + /* Character 19 (0x13): + width 7 + +-------+ + | | + | | + | | + | | + | | + | | + | | + | | + |*******| + |*******| + | | + | | + | | + +-------+ */ + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0xfe00, + 0xfe00, + 0x0000, + 0x0000, + 0x0000, + + /* Character 20 (0x14): + width 7 + +-------+ + | | + | | + | | + | | + | | + | | + | | + | | + | | + | | + |*******| + |*******| + | | + +-------+ */ + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0xfe00, + 0xfe00, + 0x0000, + + /* Character 21 (0x15): + width 7 + +-------+ + | ** | + | ** | + | ** | + | ** | + | ** | + | ** | + | *****| + | *****| + | ** | + | ** | + | ** | + | ** | + | ** | + +-------+ */ + 0x3000, + 0x3000, + 0x3000, + 0x3000, + 0x3000, + 0x3000, + 0x3e00, + 0x3e00, + 0x3000, + 0x3000, + 0x3000, + 0x3000, + 0x3000, + + /* Character 22 (0x16): + width 7 + +-------+ + | ** | + | ** | + | ** | + | ** | + | ** | + | ** | + |**** | + |**** | + | ** | + | ** | + | ** | + | ** | + | ** | + +-------+ */ + 0x3000, + 0x3000, + 0x3000, + 0x3000, + 0x3000, + 0x3000, + 0xf000, + 0xf000, + 0x3000, + 0x3000, + 0x3000, + 0x3000, + 0x3000, + + /* Character 23 (0x17): + width 7 + +-------+ + | ** | + | ** | + | ** | + | ** | + | ** | + | ** | + |*******| + |*******| + | | + | | + | | + | | + | | + +-------+ */ + 0x3000, + 0x3000, + 0x3000, + 0x3000, + 0x3000, + 0x3000, + 0xfe00, + 0xfe00, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + + /* Character 24 (0x18): + width 7 + +-------+ + | | + | | + | | + | | + | | + | | + |*******| + |*******| + | ** | + | ** | + | ** | + | ** | + | ** | + +-------+ */ + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0xfe00, + 0xfe00, + 0x3000, + 0x3000, + 0x3000, + 0x3000, + 0x3000, + + /* Character 25 (0x19): + width 7 + +-------+ + | ** | + | ** | + | ** | + | ** | + | ** | + | ** | + | ** | + | ** | + | ** | + | ** | + | ** | + | ** | + | ** | + +-------+ */ + 0x3000, + 0x3000, + 0x3000, + 0x3000, + 0x3000, + 0x3000, + 0x3000, + 0x3000, + 0x3000, + 0x3000, + 0x3000, + 0x3000, + 0x3000, + + /* Character 26 (0x1a): + width 7 + +-------+ + | | + | | + | | + | * | + | ** | + |****** | + |****** | + | ** | + | * | + | | + | | + | | + | | + +-------+ */ +0x0000, +0x0000, +0x0000, +0x2000, +0x6000, +0xfc00, +0xfc00, +0x6000, +0x2000, +0x0000, +0x0000, +0x0000, +0x0000, + /* Character 27 (0x1b): + width 7 + +-------+ + | | + | | + | | + | * | + | ** | + |****** | + |****** | + | ** | + | * | + | | + | | + | | + | | + +-------+ */ +0x0000, +0x0000, +0x0000, +0x1000, +0x1800, +0xfc00, +0xfc00, +0x1800, +0x1000, +0x0000, +0x0000, +0x0000, +0x0000, + + + /* Character 28 (0x1c): + width 7 + +-------+ + | | + | | + | | + | | + | | + |****** | + | ** ** | + | ** ** | + | ** ** | + |*** ** | + |** ** | + | | + | | + +-------+ */ + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0xfc00, + 0x6c00, + 0x6c00, + 0x6c00, + 0xec00, + 0xcc00, + 0x0000, + 0x0000, + + /* Character 29 (0x1d): + width 7 + +-------+ + | | + | | + | | + | | + | | + |** ** | + |** ** | + |** ** | + |** ** | + |** ** | + |****** | + |** | + |** | + +-------+ */ +0x0000, +0x0000, +0x0000, +0x0000, +0x0000, +0xcc00, +0xcc00, +0xcc00, +0xcc00, +0xcc00, +0xfc00, +0xc000, +0xc000, + /* Character 30 (0x1e): + width 7 + +-------+ + | | + | | + | **** | + |** ** | + |** ** | + |** ** | + |** ** | + |** ** | + | * * | + | * * | + |** ** | + | | + | | + +-------+ */ +0x0000, +0x0000, +0x7800, +0xcc00, +0xcc00, +0xcc00, +0xcc00, +0xcc00, +0x4800, +0x4800, +0xcc00, +0x0000, +0x0000, + + /* Character 31 (0x1f): + width 7 + +-------+ + | | + | | + | **** | + |** ** | + |** ** | + | **** | + | | + | | + | | + | | + | | + | | + | | + +-------+ */ +0x0000, +0x0000, +0x7800, +0xcc00, +0xcc00, +0x7800, +0x0000, +0x0000, +0x0000, +0x0000, +0x0000, +0x0000, +0x0000, + + /* Character 32 (0x20): + width 7 + +-------+ + | | + | | + | | + | | + | | + | | + | | + | | + | | + | | + | | + | | + | | + +-------+ */ + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + + /* Character 33 (0x21): + width 7 + +-------+ + | | + | | + | ** | + | ** | + | ** | + | ** | + | ** | + | ** | + | | + | ** | + | ** | + | | + | | + +-------+ */ + 0x0000, + 0x0000, + 0x3000, + 0x3000, + 0x3000, + 0x3000, + 0x3000, + 0x3000, + 0x0000, + 0x3000, + 0x3000, + 0x0000, + 0x0000, + + /* Character 34 (0x22): + width 7 + +-------+ + | | + | | + | ** ** | + | ** ** | + | ** ** | + | | + | | + | | + | | + | | + | | + | | + | | + +-------+ */ + 0x0000, + 0x0000, + 0x6c00, + 0x6c00, + 0x6c00, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + + /* Character 35 (0x23): + width 7 + +-------+ + | | + | | + | * * | + | * * | + | ***** | + | ***** | + | * * | + | ***** | + | ***** | + | * * | + | * * | + | | + | | + +-------+ */ + 0x0000, + 0x0000, + 0x2800, + 0x2800, + 0x7c00, + 0x7c00, + 0x2800, + 0x7c00, + 0x7c00, + 0x2800, + 0x2800, + 0x0000, + 0x0000, + + /* Character 36 (0x24): + width 7 + +-------+ + | | + | | + | ** | + | **** | + |* ** * | + |* ** | + | **** | + | ** * | + |* ** * | + | **** | + | ** | + | | + | | + +-------+ */ + 0x0000, + 0x0000, + 0x3000, + 0x7800, + 0xb400, + 0xb000, + 0x7800, + 0x3400, + 0xb400, + 0x7800, + 0x3000, + 0x0000, + 0x0000, + + /* Character 37 (0x25): + width 7 + +-------+ + | | + | | + |*** * | + |* * ** | + |*** * | + | ** | + | ** | + | ** | + | * *** | + |** * * | + |* *** | + | | + | | + +-------+ */ + 0x0000, + 0x0000, + 0xe400, + 0xac00, + 0xe800, + 0x1800, + 0x3000, + 0x6000, + 0x5c00, + 0xd400, + 0x9c00, + 0x0000, + 0x0000, + + /* Character 38 (0x26): + width 7 + +-------+ + | | + | | + | *** | + |** ** | + |** ** | + |** ** | + | *** | + |** * * | + |** *** | + |** ** | + | *** * | + | | + | | + +-------+ */ + 0x0000, + 0x0000, + 0x7000, + 0xd800, + 0xd800, + 0xd800, + 0x7000, + 0xd400, + 0xdc00, + 0xd800, + 0x7400, + 0x0000, + 0x0000, + + /* Character 39 (0x27): + width 7 + +-------+ + | | + | | + | *** | + | *** | + | ** | + | ** | + | | + | | + | | + | | + | | + | | + | | + +-------+ */ + 0x0000, + 0x0000, + 0x3800, + 0x3800, + 0x3000, + 0x6000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + + /* Character 40 (0x28): + width 7 + +-------+ + | | + | | + | ** | + | ** | + | ** | + | ** | + | ** | + | ** | + | ** | + | ** | + | ** | + | | + | | + +-------+ */ + 0x0000, + 0x0000, + 0x1800, + 0x3000, + 0x3000, + 0x6000, + 0x6000, + 0x6000, + 0x3000, + 0x3000, + 0x1800, + 0x0000, + 0x0000, + + /* Character 41 (0x29): + width 7 + +-------+ + | | + | | + | ** | + | ** | + | ** | + | ** | + | ** | + | ** | + | ** | + | ** | + | ** | + | | + | | + +-------+ */ + 0x0000, + 0x0000, + 0x6000, + 0x3000, + 0x3000, + 0x1800, + 0x1800, + 0x1800, + 0x3000, + 0x3000, + 0x6000, + 0x0000, + 0x0000, + + /* Character 42 (0x2a): + width 7 + +-------+ + | | + | | + | | + | | + | * * | + | ** | + |****** | + |****** | + | ** | + | * * | + | | + | | + | | + +-------+ */ + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x4800, + 0x3000, + 0xfc00, + 0xfc00, + 0x3000, + 0x4800, + 0x0000, + 0x0000, + 0x0000, + + /* Character 43 (0x2b): + width 7 + +-------+ + | | + | | + | | + | | + | ** | + | ** | + |****** | + |****** | + | ** | + | ** | + | | + | | + | | + +-------+ */ + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x3000, + 0x3000, + 0xfc00, + 0xfc00, + 0x3000, + 0x3000, + 0x0000, + 0x0000, + 0x0000, + + /* Character 44 (0x2c): + width 7 + +-------+ + | | + | | + | | + | | + | | + | | + | | + | | + | *** | + | *** | + | ** | + | ** | + | | + +-------+ */ + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x3800, + 0x3800, + 0x3000, + 0x6000, + 0x0000, + + /* Character 45 (0x2d): + width 7 + +-------+ + | | + | | + | | + | | + | | + | | + |****** | + |****** | + | | + | | + | | + | | + | | + +-------+ */ + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0xfc00, + 0xfc00, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + + /* Character 46 (0x2e): + width 7 + +-------+ + | | + | | + | | + | | + | | + | | + | | + | | + | | + | ** | + | **** | + | ** | + | | + +-------+ */ + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x3000, + 0x7800, + 0x3000, + 0x0000, + + /* Character 47 (0x2f): + width 7 + +-------+ + | | + | | + | ** | + | ** | + | ** | + | ** | + | ** | + | ** | + | ** | + |** | + |** | + | | + | | + +-------+ */ + 0x0000, + 0x0000, + 0x0c00, + 0x0c00, + 0x1800, + 0x1800, + 0x3000, + 0x6000, + 0x6000, + 0xc000, + 0xc000, + 0x0000, + 0x0000, + /* Character 48 (0x30): + width 7 + +-------+ + | | + | | + | ** | + | * * | + |** ** | + |** ** | + |** ** | + |** ** | + |** ** | + | * * | + | ** | + | | + | | + +-------+ */ + 0x0000, + 0x0000, + 0x3000, + 0x4800, + 0xcc00, + 0xcc00, + 0xcc00, + 0xcc00, + 0xcc00, + 0x4800, + 0x3000, + 0x0000, + 0x0000, + + /* Character 49 (0x31): + width 7 + +-------+ + | | + | | + | ** | + | *** | + |* ** | + | ** | + | ** | + | ** | + | ** | + | ** | + |****** | + | | + | | + +-------+ */ + 0x0000, + 0x0000, + 0x3000, + 0x7000, + 0xb000, + 0x3000, + 0x3000, + 0x3000, + 0x3000, + 0x3000, + 0xfc00, + 0x0000, + 0x0000, + + /* Character 50 (0x32): + width 7 + +-------+ + | | + | | + | **** | + |** ** | + |** ** | + | ** | + | *** | + | ** | + |** | + |** | + |****** | + | | + | | + +-------+ */ + 0x0000, + 0x0000, + 0x7800, + 0xcc00, + 0xcc00, + 0x0c00, + 0x3800, + 0x6000, + 0xc000, + 0xc000, + 0xfc00, + 0x0000, + 0x0000, + + /* Character 51 (0x33): + width 7 + +-------+ + | | + | | + |****** | + | ** | + | ** | + | ** | + | **** | + | ** | + | ** | + |** ** | + | **** | + | | + | | + +-------+ */ + 0x0000, + 0x0000, + 0xfc00, + 0x0c00, + 0x1800, + 0x3000, + 0x7800, + 0x0c00, + 0x0c00, + 0xcc00, + 0x7800, + 0x0000, + 0x0000, + + /* Character 52 (0x34): + width 7 + +-------+ + | | + | | + | ** | + | *** | + | **** | + | ** ** | + |** ** | + |** ** | + |****** | + | ** | + | ** | + | | + | | + +-------+ */ + 0x0000, + 0x0000, + 0x0c00, + 0x1c00, + 0x3c00, + 0x6c00, + 0xcc00, + 0xcc00, + 0xfc00, + 0x0c00, + 0x0c00, + 0x0000, + 0x0000, + + /* Character 53 (0x35): + width 7 + +-------+ + | | + | | + |****** | + |** | + |** | + |***** | + |** ** | + | ** | + | ** | + |** ** | + | **** | + | | + | | + +-------+ */ + 0x0000, + 0x0000, + 0xfc00, + 0xc000, + 0xc000, + 0xf800, + 0xcc00, + 0x0c00, + 0x0c00, + 0xcc00, + 0x7800, + 0x0000, + 0x0000, + + /* Character 54 (0x36): + width 7 + +-------+ + | | + | | + | **** | + |** ** | + |** | + |** | + |***** | + |** ** | + |** ** | + |** ** | + | **** | + | | + | | + +-------+ */ + 0x0000, + 0x0000, + 0x7800, + 0xcc00, + 0xc000, + 0xc000, + 0xf800, + 0xcc00, + 0xcc00, + 0xcc00, + 0x7800, + 0x0000, + 0x0000, + + /* Character 55 (0x37): + width 7 + +-------+ + | | + | | + |****** | + | ** | + | ** | + | ** | + | ** | + | ** | + | ** | + | ** | + | ** | + | | + | | + +-------+ */ + 0x0000, + 0x0000, + 0xfc00, + 0x0c00, + 0x0c00, + 0x1800, + 0x1800, + 0x3000, + 0x3000, + 0x6000, + 0x6000, + 0x0000, + 0x0000, + + /* Character 56 (0x38): + width 7 + +-------+ + | | + | | + | **** | + |** ** | + |** ** | + |** ** | + | **** | + |** ** | + |** ** | + |** ** | + | **** | + | | + | | + +-------+ */ + 0x0000, + 0x0000, + 0x7800, + 0xcc00, + 0xcc00, + 0xcc00, + 0x7800, + 0xcc00, + 0xcc00, + 0xcc00, + 0x7800, + 0x0000, + 0x0000, + + /* Character 57 (0x39): + width 7 + +-------+ + | | + | | + | **** | + |** ** | + |** ** | + |** ** | + | ***** | + | ** | + | ** | + |** ** | + | **** | + | | + | | + +-------+ */ + 0x0000, + 0x0000, + 0x7800, + 0xcc00, + 0xcc00, + 0xcc00, + 0x7c00, + 0x0c00, + 0x0c00, + 0xcc00, + 0x7800, + 0x0000, + 0x0000, + + /* Character 58 (0x3a): + width 7 + +-------+ + | | + | | + | | + | | + | ** | + | **** | + | ** | + | | + | | + | ** | + | **** | + | ** | + | | + +-------+ */ + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x3000, + 0x7800, + 0x3000, + 0x0000, + 0x0000, + 0x3000, + 0x7800, + 0x3000, + 0x0000, + + /* Character 59 (0x3b): + width 7 + +-------+ + | | + | | + | | + | | + | ** | + | **** | + | ** | + | | + | *** | + | *** | + | ** | + | ** | + | | + +-------+ */ + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x3000, + 0x7800, + 0x3000, + 0x0000, + 0x3800, + 0x3800, + 0x3000, + 0x6000, + 0x0000, + + /* Character 60 (0x3c): + width 7 + +-------+ + | | + | | + | ** | + | ** | + | ** | + | ** | + |** | + | ** | + | ** | + | ** | + | ** | + | | + | | + +-------+ */ + 0x0000, + 0x0000, + 0x0c00, + 0x1800, + 0x3000, + 0x6000, + 0xc000, + 0x6000, + 0x3000, + 0x1800, + 0x0c00, + 0x0000, + 0x0000, + + /* Character 61 (0x3d): + width 7 + +-------+ + | | + | | + | | + | | + | | + |****** | + | | + | | + |****** | + | | + | | + | | + | | + +-------+ */ + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0xfc00, + 0x0000, + 0x0000, + 0xfc00, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + + /* Character 62 (0x3e): + width 7 + +-------+ + | | + | | + |** | + | ** | + | ** | + | ** | + | ** | + | ** | + | ** | + | ** | + |** | + | | + | | + +-------+ */ + 0x0000, + 0x0000, + 0xc000, + 0x6000, + 0x3000, + 0x1800, + 0x0c00, + 0x1800, + 0x3000, + 0x6000, + 0xc000, + 0x0000, + 0x0000, + + /* Character 63 (0x3f): + width 7 + +-------+ + | | + | | + | **** | + |** ** | + |** ** | + | ** | + | *** | + | ** | + | | + | ** | + | ** | + | | + | | + +-------+ */ + 0x0000, + 0x0000, + 0x7800, + 0xcc00, + 0xcc00, + 0x0c00, + 0x3800, + 0x3000, + 0x0000, + 0x3000, + 0x3000, + 0x0000, + 0x0000, + + /* Character 64 (0x40): + width 7 + +-------+ + | | + | | + | **** | + |* ** | + |* ** | + |* **** | + |* * ** | + |* **** | + |* | + |* ** | + | **** | + | | + | | + +-------+ */ + 0x0000, + 0x0000, + 0x7800, + 0x8c00, + 0x8c00, + 0xbc00, + 0xac00, + 0xbc00, + 0x8000, + 0x8c00, + 0x7800, + 0x0000, + 0x0000, + + /* Character 65 (0x41): + width 7 + +-------+ + | | + | | + | **** | + |** ** | + |** ** | + |** ** | + |****** | + |** ** | + |** ** | + |** ** | + |** ** | + | | + | | + +-------+ */ + 0x0000, + 0x0000, + 0x7800, + 0xcc00, + 0xcc00, + 0xcc00, + 0xfc00, + 0xcc00, + 0xcc00, + 0xcc00, + 0xcc00, + 0x0000, + 0x0000, + + /* Character 66 (0x42): + width 7 + +-------+ + | | + | | + |***** | + |** ** | + |** ** | + |** ** | + |***** | + |** ** | + |** ** | + |** ** | + |***** | + | | + | | + +-------+ */ + 0x0000, + 0x0000, + 0xf800, + 0xcc00, + 0xcc00, + 0xcc00, + 0xf800, + 0xcc00, + 0xcc00, + 0xcc00, + 0xf800, + 0x0000, + 0x0000, + + /* Character 67 (0x43): + width 7 + +-------+ + | | + | | + | **** | + |** ** | + |** | + |** | + |** | + |** | + |** | + |** ** | + | **** | + | | + | | + +-------+ */ + 0x0000, + 0x0000, + 0x7800, + 0xcc00, + 0xc000, + 0xc000, + 0xc000, + 0xc000, + 0xc000, + 0xcc00, + 0x7800, + 0x0000, + 0x0000, + + /* Character 68 (0x44): + width 7 + +-------+ + | | + | | + |***** | + |** ** | + |** ** | + |** ** | + |** ** | + |** ** | + |** ** | + |** ** | + |***** | + | | + | | + +-------+ */ + 0x0000, + 0x0000, + 0xf800, + 0xcc00, + 0xcc00, + 0xcc00, + 0xcc00, + 0xcc00, + 0xcc00, + 0xcc00, + 0xf800, + 0x0000, + 0x0000, + + /* Character 69 (0x45): + width 7 + +-------+ + | | + | | + |****** | + |** | + |** | + |** | + |***** | + |** | + |** | + |** | + |****** | + | | + | | + +-------+ */ + 0x0000, + 0x0000, + 0xfc00, + 0xc000, + 0xc000, + 0xc000, + 0xf800, + 0xc000, + 0xc000, + 0xc000, + 0xfc00, + 0x0000, + 0x0000, + + /* Character 70 (0x46): + width 7 + +-------+ + | | + | | + |****** | + |** | + |** | + |** | + |***** | + |** | + |** | + |** | + |** | + | | + | | + +-------+ */ + 0x0000, + 0x0000, + 0xfc00, + 0xc000, + 0xc000, + 0xc000, + 0xf800, + 0xc000, + 0xc000, + 0xc000, + 0xc000, + 0x0000, + 0x0000, + + /* Character 71 (0x47): + width 7 + +-------+ + | | + | | + | **** | + |** ** | + |** | + |** | + |** *** | + |** ** | + |** ** | + |** ** | + | ***** | + | | + | | + +-------+ */ + 0x0000, + 0x0000, + 0x7800, + 0xcc00, + 0xc000, + 0xc000, + 0xdc00, + 0xcc00, + 0xcc00, + 0xcc00, + 0x7c00, + 0x0000, + 0x0000, + + /* Character 72 (0x48): + width 7 + +-------+ + | | + | | + |** ** | + |** ** | + |** ** | + |** ** | + |****** | + |** ** | + |** ** | + |** ** | + |** ** | + | | + | | + +-------+ */ + 0x0000, + 0x0000, + 0xcc00, + 0xcc00, + 0xcc00, + 0xcc00, + 0xfc00, + 0xcc00, + 0xcc00, + 0xcc00, + 0xcc00, + 0x0000, + 0x0000, + + /* Character 73 (0x49): + width 7 + +-------+ + | | + | | + |****** | + | ** | + | ** | + | ** | + | ** | + | ** | + | ** | + | ** | + |****** | + | | + | | + +-------+ */ + 0x0000, + 0x0000, + 0xfc00, + 0x3000, + 0x3000, + 0x3000, + 0x3000, + 0x3000, + 0x3000, + 0x3000, + 0xfc00, + 0x0000, + 0x0000, + + /* Character 74 (0x4a): + width 7 + +-------+ + | | + | | + | ** | + | ** | + | ** | + | ** | + | ** | + | ** | + | ** | + |** ** | + | **** | + | | + | | + +-------+ */ + 0x0000, + 0x0000, + 0x0c00, + 0x0c00, + 0x0c00, + 0x0c00, + 0x0c00, + 0x0c00, + 0x0c00, + 0xcc00, + 0x7800, + 0x0000, + 0x0000, + + /* Character 75 (0x4b): + width 7 + +-------+ + | | + | | + |** * | + |** ** | + |** ** | + |**** | + |*** | + |**** | + |** ** | + |** ** | + |** * | + | | + | | + +-------+ */ + 0x0000, + 0x0000, + 0xc400, + 0xcc00, + 0xd800, + 0xf000, + 0xe000, + 0xf000, + 0xd800, + 0xcc00, + 0xc400, + 0x0000, + 0x0000, + + /* Character 76 (0x4c): + width 7 + +-------+ + | | + | | + |** | + |** | + |** | + |** | + |** | + |** | + |** | + |** | + |****** | + | | + | | + +-------+ */ + 0x0000, + 0x0000, + 0xc000, + 0xc000, + 0xc000, + 0xc000, + 0xc000, + 0xc000, + 0xc000, + 0xc000, + 0xfc00, + 0x0000, + 0x0000, + + /* Character 77 (0x4d): + width 7 + +-------+ + | | + | | + |* * | + |** ** | + |****** | + |****** | + |** ** | + |** ** | + |** ** | + |** ** | + |** ** | + | | + | | + +-------+ */ + 0x0000, + 0x0000, + 0x8400, + 0xcc00, + 0xfc00, + 0xfc00, + 0xcc00, + 0xcc00, + 0xcc00, + 0xcc00, + 0xcc00, + 0x0000, + 0x0000, + + /* Character 78 (0x4e): + width 7 + +-------+ + | | + | | + |** ** | + |** ** | + |*** ** | + |*** ** | + |****** | + |** *** | + |** *** | + |** ** | + |** ** | + | | + | | + +-------+ */ + 0x0000, + 0x0000, + 0xcc00, + 0xcc00, + 0xec00, + 0xec00, + 0xfc00, + 0xdc00, + 0xdc00, + 0xcc00, + 0xcc00, + 0x0000, + 0x0000, + + /* Character 79 (0x4f): + width 7 + +-------+ + | | + | | + | **** | + |** ** | + |** ** | + |** ** | + |** ** | + |** ** | + |** ** | + |** ** | + | **** | + | | + | | + +-------+ */ + 0x0000, + 0x0000, + 0x7800, + 0xcc00, + 0xcc00, + 0xcc00, + 0xcc00, + 0xcc00, + 0xcc00, + 0xcc00, + 0x7800, + 0x0000, + 0x0000, + + /* Character 80 (0x50): + width 7 + +-------+ + | | + | | + |***** | + |** ** | + |** ** | + |** ** | + |***** | + |** | + |** | + |** | + |** | + | | + | | + +-------+ */ + 0x0000, + 0x0000, + 0xf800, + 0xcc00, + 0xcc00, + 0xcc00, + 0xf800, + 0xc000, + 0xc000, + 0xc000, + 0xc000, + 0x0000, + 0x0000, + + /* Character 81 (0x51): + width 7 + +-------+ + | | + | | + | **** | + |** ** | + |** ** | + |** ** | + |** ** | + |** ** | + |*** ** | + |** *** | + | **** | + | ** | + | | + +-------+ */ + 0x0000, + 0x0000, + 0x7800, + 0xcc00, + 0xcc00, + 0xcc00, + 0xcc00, + 0xcc00, + 0xec00, + 0xdc00, + 0x7800, + 0x0c00, + 0x0000, + + /* Character 82 (0x52): + width 7 + +-------+ + | | + | | + |***** | + |** ** | + |** ** | + |** ** | + |***** | + |**** | + |** ** | + |** ** | + |** * | + | | + | | + +-------+ */ + 0x0000, + 0x0000, + 0xf800, + 0xcc00, + 0xcc00, + 0xcc00, + 0xf800, + 0xf000, + 0xd800, + 0xcc00, + 0xc400, + 0x0000, + 0x0000, + + /* Character 83 (0x53): + width 7 + +-------+ + | | + | | + | **** | + |** ** | + |** | + |** | + | **** | + | ** | + | ** | + |** ** | + | **** | + | | + | | + +-------+ */ + 0x0000, + 0x0000, + 0x7800, + 0xcc00, + 0xc000, + 0xc000, + 0x7800, + 0x0c00, + 0x0c00, + 0xcc00, + 0x7800, + 0x0000, + 0x0000, + + /* Character 84 (0x54): + width 7 + +-------+ + | | + | | + |****** | + | ** | + | ** | + | ** | + | ** | + | ** | + | ** | + | ** | + | ** | + | | + | | + +-------+ */ + 0x0000, + 0x0000, + 0xfc00, + 0x3000, + 0x3000, + 0x3000, + 0x3000, + 0x3000, + 0x3000, + 0x3000, + 0x3000, + 0x0000, + 0x0000, + + /* Character 85 (0x55): + width 7 + +-------+ + | | + | | + |** ** | + |** ** | + |** ** | + |** ** | + |** ** | + |** ** | + |** ** | + |** ** | + | **** | + | | + | | + +-------+ */ + 0x0000, + 0x0000, + 0xcc00, + 0xcc00, + 0xcc00, + 0xcc00, + 0xcc00, + 0xcc00, + 0xcc00, + 0xcc00, + 0x7800, + 0x0000, + 0x0000, + + /* Character 86 (0x56): + width 7 + +-------+ + | | + | | + |** ** | + |** ** | + |** ** | + | * * | + | * * | + | **** | + | ** | + | ** | + | ** | + | | + | | + +-------+ */ + 0x0000, + 0x0000, + 0xcc00, + 0xcc00, + 0xcc00, + 0x4800, + 0x4800, + 0x7800, + 0x3000, + 0x3000, + 0x3000, + 0x0000, + 0x0000, + + /* Character 87 (0x57): + width 7 + +-------+ + | | + | | + |** ** | + |** ** | + |** ** | + |** ** | + |** ** | + |****** | + |****** | + |** ** | + |* * | + | | + | | + +-------+ */ + 0x0000, + 0x0000, + 0xcc00, + 0xcc00, + 0xcc00, + 0xcc00, + 0xcc00, + 0xfc00, + 0xfc00, + 0xcc00, + 0x8400, + 0x0000, + 0x0000, + + /* Character 88 (0x58): + width 7 + +-------+ + | | + | | + |* * | + |** ** | + | * * | + | **** | + | ** | + | **** | + | * * | + |** ** | + |* * | + | | + | | + +-------+ */ + 0x0000, + 0x0000, + 0x8400, + 0xcc00, + 0x4800, + 0x7800, + 0x3000, + 0x7800, + 0x4800, + 0xcc00, + 0x8400, + 0x0000, + 0x0000, + + /* Character 89 (0x59): + width 7 + +-------+ + | | + | | + |** ** | + |** ** | + | **** | + | **** | + | ** | + | ** | + | ** | + | ** | + | ** | + | | + | | + +-------+ */ + 0x0000, + 0x0000, + 0xcc00, + 0xcc00, + 0x7800, + 0x7800, + 0x3000, + 0x3000, + 0x3000, + 0x3000, + 0x3000, + 0x0000, + 0x0000, + + /* Character 90 (0x5a): + width 7 + +-------+ + | | + | | + |****** | + | ** | + | ** | + | ** | + | ** | + | ** | + |** | + |** | + |****** | + | | + | | + +-------+ */ + 0x0000, + 0x0000, + 0xfc00, + 0x0c00, + 0x0c00, + 0x1800, + 0x3000, + 0x6000, + 0xc000, + 0xc000, + 0xfc00, + 0x0000, + 0x0000, + + /* Character 91 (0x5b): + width 7 + +-------+ + | | + | | + | **** | + | ** | + | ** | + | ** | + | ** | + | ** | + | ** | + | ** | + | **** | + | | + | | + +-------+ */ + 0x0000, + 0x0000, + 0x7800, + 0x6000, + 0x6000, + 0x6000, + 0x6000, + 0x6000, + 0x6000, + 0x6000, + 0x7800, + 0x0000, + 0x0000, + + /* Character 92 (0x5c): + width 7 + +-------+ + | | + | | + |** | + |** | + | ** | + | ** | + | ** | + | ** | + | ** | + | ** | + | ** | + | | + | | + +-------+ */ + 0x0000, + 0x0000, + 0xc000, + 0xc000, + 0x6000, + 0x6000, + 0x3000, + 0x1800, + 0x1800, + 0x0c00, + 0x0c00, + 0x0000, + 0x0000, + + /* Character 93 (0x5d): + width 7 + +-------+ + | | + | | + | **** | + | ** | + | ** | + | ** | + | ** | + | ** | + | ** | + | ** | + | **** | + | | + | | + +-------+ */ + 0x0000, + 0x0000, + 0x7800, + 0x1800, + 0x1800, + 0x1800, + 0x1800, + 0x1800, + 0x1800, + 0x1800, + 0x7800, + 0x0000, + 0x0000, + + /* Character 94 (0x5e): + width 7 + +-------+ + | | + | | + | ** | + | **** | + |** ** | + |* * | + | | + | | + | | + | | + | | + | | + | | + +-------+ */ + 0x0000, + 0x0000, + 0x3000, + 0x7800, + 0xcc00, + 0x8400, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + + /* Character 95 (0x5f): + width 7 + +-------+ + | | + | | + | | + | | + | | + | | + | | + | | + | | + | | + |****** | + |****** | + | | + +-------+ */ + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0xfc00, + 0xfc00, + 0x0000, + + /* Character 96 (0x60): + width 7 + +-------+ + | | + | ** | + | ** | + | ** | + | | + | | + | | + | | + | | + | | + | | + | | + | | + +-------+ */ + 0x0000, + 0x6000, + 0x3000, + 0x1800, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + + /* Character 97 (0x61): + width 7 + +-------+ + | | + | | + | | + | | + | | + | **** | + | ** | + | ***** | + |** ** | + |** ** | + | ***** | + | | + | | + +-------+ */ + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x7800, + 0x0c00, + 0x7c00, + 0xcc00, + 0xcc00, + 0x7c00, + 0x0000, + 0x0000, + + /* Character 98 (0x62): + width 7 + +-------+ + | | + | | + |** | + |** | + |** | + |***** | + |** ** | + |** ** | + |** ** | + |** ** | + |***** | + | | + | | + +-------+ */ + 0x0000, + 0x0000, + 0xc000, + 0xc000, + 0xc000, + 0xf800, + 0xcc00, + 0xcc00, + 0xcc00, + 0xcc00, + 0xf800, + 0x0000, + 0x0000, + + /* Character 99 (0x63): + width 7 + +-------+ + | | + | | + | | + | | + | | + | **** | + |** ** | + |** | + |** | + |** ** | + | **** | + | | + | | + +-------+ */ + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x7800, + 0xcc00, + 0xc000, + 0xc000, + 0xcc00, + 0x7800, + 0x0000, + 0x0000, + + /* Character 100 (0x64): + width 7 + +-------+ + | | + | | + | ** | + | ** | + | ** | + | ***** | + |** ** | + |** ** | + |** ** | + |** ** | + | ***** | + | | + | | + +-------+ */ + 0x0000, + 0x0000, + 0x0c00, + 0x0c00, + 0x0c00, + 0x7c00, + 0xcc00, + 0xcc00, + 0xcc00, + 0xcc00, + 0x7c00, + 0x0000, + 0x0000, + + /* Character 101 (0x65): + width 7 + +-------+ + | | + | | + | | + | | + | | + | **** | + |** ** | + |****** | + |** | + |** ** | + | **** | + | | + | | + +-------+ */ + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x7800, + 0xcc00, + 0xfc00, + 0xc000, + 0xcc00, + 0x7800, + 0x0000, + 0x0000, + + /* Character 102 (0x66): + width 7 + +-------+ + | | + | | + | *** | + | ** ** | + | ** | + | ** | + |**** | + | ** | + | ** | + | ** | + | ** | + | | + | | + +-------+ */ + 0x0000, + 0x0000, + 0x3800, + 0x6c00, + 0x6000, + 0x6000, + 0xf000, + 0x6000, + 0x6000, + 0x6000, + 0x6000, + 0x0000, + 0x0000, + + /* Character 103 (0x67): + width 7 + +-------+ + | | + | | + | | + | | + | | + | *** * | + |** ** | + |** ** | + | **** | + |** | + | **** | + |** ** | + | **** | + +-------+ */ + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x7400, + 0xcc00, + 0xcc00, + 0x7800, + 0xc000, + 0x7800, + 0xcc00, + 0x7800, + + /* Character 104 (0x68): + width 7 + +-------+ + | | + | | + |** | + |** | + |** | + |***** | + |** ** | + |** ** | + |** ** | + |** ** | + |** ** | + | | + | | + +-------+ */ + 0x0000, + 0x0000, + 0xc000, + 0xc000, + 0xc000, + 0xf800, + 0xcc00, + 0xcc00, + 0xcc00, + 0xcc00, + 0xcc00, + 0x0000, + 0x0000, + + /* Character 105 (0x69): + width 7 + +-------+ + | | + | | + | ** | + | ** | + | | + | *** | + | ** | + | ** | + | ** | + | ** | + |****** | + | | + | | + +-------+ */ + 0x0000, + 0x0000, + 0x3000, + 0x3000, + 0x0000, + 0x7000, + 0x3000, + 0x3000, + 0x3000, + 0x3000, + 0xfc00, + 0x0000, + 0x0000, + + /* Character 106 (0x6a): + width 7 + +-------+ + | | + | | + | ** | + | ** | + | | + | ** | + | ** | + | ** | + | ** | + | ** | + | ** | + |** ** | + | **** | + +-------+ */ + 0x0000, + 0x0000, + 0x0c00, + 0x0c00, + 0x0000, + 0x0c00, + 0x0c00, + 0x0c00, + 0x0c00, + 0x0c00, + 0x0c00, + 0xcc00, + 0x7800, + + /* Character 107 (0x6b): + width 7 + +-------+ + | | + | | + |** | + |** | + |** | + |** ** | + |** ** | + |**** | + |**** | + |** ** | + |** ** | + | | + | | + +-------+ */ + 0x0000, + 0x0000, + 0xc000, + 0xc000, + 0xc000, + 0xcc00, + 0xd800, + 0xf000, + 0xf000, + 0xd800, + 0xcc00, + 0x0000, + 0x0000, + + /* Character 108 (0x6c): + width 7 + +-------+ + | | + | | + | *** | + | ** | + | ** | + | ** | + | ** | + | ** | + | ** | + | ** | + |****** | + | | + | | + +-------+ */ + 0x0000, + 0x0000, + 0x7000, + 0x3000, + 0x3000, + 0x3000, + 0x3000, + 0x3000, + 0x3000, + 0x3000, + 0xfc00, + 0x0000, + 0x0000, + + /* Character 109 (0x6d): + width 7 + +-------+ + | | + | | + | | + | | + | | + |** ** | + |****** | + |****** | + |** ** | + |** ** | + |** ** | + | | + | | + +-------+ */ + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0xd800, + 0xfc00, + 0xfc00, + 0xcc00, + 0xcc00, + 0xcc00, + 0x0000, + 0x0000, + + /* Character 110 (0x6e): + width 7 + +-------+ + | | + | | + | | + | | + | | + |***** | + |** ** | + |** ** | + |** ** | + |** ** | + |** ** | + | | + | | + +-------+ */ + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0xf800, + 0xcc00, + 0xcc00, + 0xcc00, + 0xcc00, + 0xcc00, + 0x0000, + 0x0000, + + /* Character 111 (0x6f): + width 7 + +-------+ + | | + | | + | | + | | + | | + | **** | + |** ** | + |** ** | + |** ** | + |** ** | + | **** | + | | + | | + +-------+ */ + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x7800, + 0xcc00, + 0xcc00, + 0xcc00, + 0xcc00, + 0x7800, + 0x0000, + 0x0000, + + /* Character 112 (0x70): + width 7 + +-------+ + | | + | | + | | + | | + | | + |***** | + |** ** | + |** ** | + |** ** | + |***** | + |** | + |** | + |** | + +-------+ */ + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0xf800, + 0xcc00, + 0xcc00, + 0xcc00, + 0xf800, + 0xc000, + 0xc000, + 0xc000, + + /* Character 113 (0x71): + width 7 + +-------+ + | | + | | + | | + | | + | | + | ***** | + |** ** | + |** ** | + |** ** | + | ***** | + | ** | + | ** | + | ** | + +-------+ */ + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x7c00, + 0xcc00, + 0xcc00, + 0xcc00, + 0x7c00, + 0x0c00, + 0x0c00, + 0x0c00, + + /* Character 114 (0x72): + width 7 + +-------+ + | | + | | + | | + | | + | | + |***** | + |** ** | + |** | + |** | + |** | + |** | + | | + | | + +-------+ */ + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0xf800, + 0xcc00, + 0xc000, + 0xc000, + 0xc000, + 0xc000, + 0x0000, + 0x0000, + + /* Character 115 (0x73): + width 7 + +-------+ + | | + | | + | | + | | + | | + | **** | + |** ** | + | ** | + | ** | + |** ** | + | **** | + | | + | | + +-------+ */ + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x7800, + 0xcc00, + 0x6000, + 0x1800, + 0xcc00, + 0x7800, + 0x0000, + 0x0000, + + /* Character 116 (0x74): + width 7 + +-------+ + | | + | | + | | + | ** | + | ** | + |***** | + | ** | + | ** | + | ** | + | ** ** | + | *** | + | | + | | + +-------+ */ + 0x0000, + 0x0000, + 0x0000, + 0x6000, + 0x6000, + 0xf800, + 0x6000, + 0x6000, + 0x6000, + 0x6c00, + 0x3800, + 0x0000, + 0x0000, + + /* Character 117 (0x75): + width 7 + +-------+ + | | + | | + | | + | | + | | + |** ** | + |** ** | + |** ** | + |** ** | + |** ** | + | ***** | + | | + | | + +-------+ */ + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0xcc00, + 0xcc00, + 0xcc00, + 0xcc00, + 0xcc00, + 0x7c00, + 0x0000, + 0x0000, + + /* Character 118 (0x76): + width 7 + +-------+ + | | + | | + | | + | | + | | + |** ** | + |** ** | + |** ** | + | **** | + | **** | + | ** | + | | + | | + +-------+ */ + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0xcc00, + 0xcc00, + 0xcc00, + 0x7800, + 0x7800, + 0x3000, + 0x0000, + 0x0000, + + /* Character 119 (0x77): + width 7 + +-------+ + | | + | | + | | + | | + | | + |** ** | + |** ** | + |** ** | + |****** | + |****** | + | * * | + | | + | | + +-------+ */ + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0xcc00, + 0xcc00, + 0xcc00, + 0xfc00, + 0xfc00, + 0x4800, + 0x0000, + 0x0000, + + /* Character 120 (0x78): + width 7 + +-------+ + | | + | | + | | + | | + | | + |** ** | + |** ** | + | **** | + | **** | + |** ** | + |** ** | + | | + | | + +-------+ */ + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0xcc00, + 0xcc00, + 0x7800, + 0x7800, + 0xcc00, + 0xcc00, + 0x0000, + 0x0000, + + /* Character 121 (0x79): + width 7 + +-------+ + | | + | | + | | + | | + | | + |** ** | + |** ** | + |** ** | + |** ** | + | ***** | + | ** | + |** ** | + | **** | + +-------+ */ + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0xcc00, + 0xcc00, + 0xcc00, + 0xcc00, + 0x7c00, + 0x0c00, + 0xcc00, + 0x7800, + + /* Character 122 (0x7a): + width 7 + +-------+ + | | + | | + | | + | | + | | + |****** | + | ** | + | ** | + | ** | + |** | + |****** | + | | + | | + +-------+ */ + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0xfc00, + 0x0c00, + 0x1800, + 0x6000, + 0xc000, + 0xfc00, + 0x0000, + 0x0000, + + /* Character 123 (0x7b): + width 7 + +-------+ + | | + | | + | *** | + | ** | + | ** | + | ** | + | ** | + | ** | + | ** | + | ** | + | *** | + | | + | | + +-------+ */ + 0x0000, + 0x0000, + 0x3800, + 0x6000, + 0x6000, + 0x3000, + 0x6000, + 0x3000, + 0x6000, + 0x6000, + 0x3800, + 0x0000, + 0x0000, + + /* Character 124 (0x7c): + width 7 + +-------+ + | | + | | + | ** | + | ** | + | ** | + | ** | + | ** | + | ** | + | ** | + | ** | + | ** | + | | + | | + +-------+ */ + 0x0000, + 0x0000, + 0x3000, + 0x3000, + 0x3000, + 0x3000, + 0x3000, + 0x3000, + 0x3000, + 0x3000, + 0x3000, + 0x0000, + 0x0000, + + /* Character 125 (0x7d): + width 7 + +-------+ + | | + | | + | *** | + | ** | + | ** | + | ** | + | ** | + | ** | + | ** | + | ** | + | *** | + | | + | | + +-------+ */ + 0x0000, + 0x0000, + 0x7000, + 0x1800, + 0x1800, + 0x3000, + 0x1800, + 0x3000, + 0x1800, + 0x1800, + 0x7000, + 0x0000, + 0x0000, + + /* Character 126 (0x7e): + width 7 + +-------+ + | | + | | + | ** * | + |****** | + |* ** | + | | + | | + | | + | | + | | + | | + | | + | | + +-------+ */ + 0x0000, + 0x0000, + 0x6400, + 0xfc00, + 0x9800, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, +}; + + diff --git a/Makefile b/Makefile index 7fdcd84..e16ea2e 100644 --- a/Makefile +++ b/Makefile @@ -120,7 +120,7 @@ CSRC = $(STARTUPSRC) \ $(BOARDSRC) \ $(STREAMSSRC) \ usbcfg.c \ - main.c plot.c ui.c ili9341.c numfont20x22.c Font5x7.c flash.c adc.c si4432.c + main.c plot.c ui.c ili9341.c numfont20x22.c Font5x7.c flash.c adc.c si4432.c Font7x13b.c # C++ sources that can be compiled in ARM or THUMB mode depending on the global # setting. diff --git a/chconf.h b/chconf.h index fd54b74..08860ae 100644 --- a/chconf.h +++ b/chconf.h @@ -147,7 +147,7 @@ * * @note The default is @p TRUE. */ -#define CH_CFG_USE_REGISTRY FALSE +#define CH_CFG_USE_REGISTRY TRUE /** * @brief Threads synchronization APIs. diff --git a/ili9341.c b/ili9341.c index f1e4674..a1942ab 100644 --- a/ili9341.c +++ b/ili9341.c @@ -383,7 +383,7 @@ void ili9341_bulk(int x, int y, int w, int h) SPI_WRITE_16BIT(*buf++); } } - +#else static uint8_t ssp_sendrecvdata(void) { // Start RX clock (by sending data) @@ -417,7 +417,7 @@ void ili9341_read_memory(int x, int y, int w, int h, int len, uint16_t *out) } CS_HIGH; } -#else + // // Use DMA for send data // @@ -469,7 +469,7 @@ void ili9341_bulk(int x, int y, int w, int h) STM32_DMA_CR_MSIZE_HWORD | STM32_DMA_CR_MINC); dmaStreamFlush(w * h); } - +#if 0 // Read DMA hangs // Copy screen data to buffer // Warning!!! buffer size must be greater then 3*len + 1 bytes void ili9341_read_memory(int x, int y, int w, int h, int len, uint16_t *out) @@ -516,6 +516,7 @@ void ili9341_read_memory(int x, int y, int w, int h, int len, uint16_t *out) } } #endif +#endif void ili9341_clear_screen(void) { @@ -567,6 +568,12 @@ static void blit16BitWidthBitmap(uint16_t x, uint16_t y, uint16_t width, uint16_ ili9341_bulk(x, y, width, height); } +int ili9341_size = 1; + +void ili9341_charsize(int s) +{ + ili9341_size = s; +} void ili9341_drawchar(uint8_t ch, int x, int y) { blit8BitWidthBitmap(x, y, FONT_GET_WIDTH(ch), FONT_GET_HEIGHT, FONT_GET_DATA(ch)); diff --git a/main.c b/main.c index d25530c..8a4007f 100644 --- a/main.c +++ b/main.c @@ -71,7 +71,7 @@ static volatile vna_shellcmd_t shell_function = 0; //#define ENABLED_DUMP // Allow get threads debug info -//#define ENABLE_THREADS_COMMAND +#define ENABLE_THREADS_COMMAND // RTC time not used //#define ENABLE_TIME_COMMAND // Enable vbat_offset command, allow change battery voltage correction in config @@ -117,7 +117,7 @@ const char *info_about[]={ 0 // sentinel }; -static THD_WORKING_AREA(waThread1, 700); +static THD_WORKING_AREA(waThread1, 750); static THD_FUNCTION(Thread1, arg) { (void)arg; @@ -786,7 +786,8 @@ config_t config = { .harmonic_freq_threshold = 300000000, #endif .vbat_offset = 500, - .level_offset = 0 + .low_level_offset = 0, + .high_level_offset = 0, }; properties_t current_props; @@ -2221,6 +2222,14 @@ VNA_SHELL_FUNCTION(cmd_o) setFreq(VFO, value); } +VNA_SHELL_FUNCTION(cmd_d) +{ + (void) argc; + int32_t a = my_atoi(argv[0]); + settingDrive = a; +} + + VNA_SHELL_FUNCTION(cmd_a) { (void)argc; @@ -2289,8 +2298,12 @@ VNA_SHELL_FUNCTION(cmd_p) int a = my_atoi(argv[1]); if (p==5) SetAttenuation(-a); -// if (p==6) -// SetMode(a); + if (p==6) + if (a != GetMode()) + SetMode(a); + if (p==1) + if (get_refer_output() != a) + set_refer_output(a); } VNA_SHELL_FUNCTION(cmd_w) @@ -2383,7 +2396,8 @@ static const VNAShellCommand commands[] = { "m", cmd_m, 0 }, { "p", cmd_p, 0 }, { "w", cmd_w, 0 }, - { "o", cmd_o, 0 }, + { "o", cmd_o, 0 }, + { "d", cmd_d, 0 }, #ifdef ENABLE_THREADS_COMMAND {"threads" , cmd_threads , 0}, #endif @@ -2539,12 +2553,12 @@ static const I2CConfig i2ccfg = { .cr1 = 0, // CR1 register initialization. .cr2 = 0 // CR2 register initialization. }; -#endif static DACConfig dac1cfg1 = { //init: 2047U, init: 1922U, datamode: DAC_DHRM_12BIT_RIGHT }; +#endif // Main thread stack size defined in makefile USE_PROCESS_STACKSIZE = 0x200 @@ -2587,9 +2601,9 @@ int main(void) /* restore config */ config_recall(); + caldata_recall(0); // must be done to setup the scanning stuff /* restore frequencies and calibration 0 slot properties from flash memory */ - caldata_recall(0); #ifdef __VNA__ dac1cfg1.init = config.dac_value; /* diff --git a/nanovna.h b/nanovna.h index 1334f7c..93398a9 100644 --- a/nanovna.h +++ b/nanovna.h @@ -210,6 +210,7 @@ extern int16_t area_height; // font extern const uint8_t x5x7_bits []; +extern const uint16_t x7x13b_bits []; #define FONT_GET_DATA(ch) (&x5x7_bits[ch*7]) #define FONT_GET_WIDTH(ch) (8-(x5x7_bits[ch*7]&7)) #define FONT_MAX_WIDTH 7 @@ -276,13 +277,15 @@ typedef struct config { uint32_t harmonic_freq_threshold; #endif uint16_t vbat_offset; - int16_t level_offset; - uint8_t _reserved[24]; + int16_t low_level_offset; + int16_t high_level_offset; + uint8_t _reserved[22]; uint32_t checksum; } config_t; extern config_t config; -#define settingLevelOffset config.level_offset +//#define settingLevelOffset config.level_offset +int settingLevelOffset(void); void set_trace_type(int t, int type); void set_trace_channel(int t, int channel); @@ -492,9 +495,9 @@ extern properties_t current_props; #define FREQ_IS_STARTSTOP() (!(config.freq_mode&FREQ_MODE_CENTER_SPAN)) #define FREQ_IS_CENTERSPAN() (config.freq_mode&FREQ_MODE_CENTER_SPAN) #define FREQ_IS_CW() (frequency0 == frequency1) +int caldata_recall(int id); #ifdef __VNA__ int caldata_save(int id); -int caldata_recall(int id); const properties_t *caldata_ref(int id); #endif int config_save(void); diff --git a/plot.c b/plot.c index 325cd7d..31a7771 100644 --- a/plot.c +++ b/plot.c @@ -32,7 +32,7 @@ int fullscreen = true; #endif static void cell_draw_marker_info(int x0, int y0); static void draw_battery_status(void); -void cell_draw_test_info(int m, int n, int w, int h); +void cell_draw_test_info(int x0, int y0); static void frequency_string(char *buf, size_t len, int32_t freq); static int16_t grid_offset; @@ -85,7 +85,7 @@ uint8_t current_mappage = 0; // Trace data cache, for faster redraw cells // CELL_X[16:31] x position // CELL_Y[ 0:15] y position -typedef uint32_t index_t; +typedef uint32_t index_t; static index_t trace_index[TRACES_MAX][POINTS_COUNT]; #define INDEX(x, y) ((((index_t)x)<<16)|(((index_t)y))) @@ -1394,7 +1394,8 @@ draw_cell(int m, int n) // Check marker icon on cell if (x + MARKER_WIDTH >= 0 && x - MARKER_WIDTH < CELLWIDTH && y + MARKER_HEIGHT >= 0 && y - MARKER_HEIGHT < CELLHEIGHT) - draw_marker(x, y, config.trace_color[t], i); + draw_marker(x, y, marker_color[markers[i].mtype], i); +// draw_marker(x, y, config.trace_color[t], i); } } #endif @@ -1403,7 +1404,7 @@ draw_cell(int m, int n) if (n == 0) cell_draw_marker_info(x0, y0); #endif - cell_draw_test_info(m, n, w, h); + cell_draw_test_info(x0, y0); // PULSE; // Draw reference position (<10 system ticks for all screen calls) for (t = 0; t < TRACES_MAX; t++) { @@ -1456,7 +1457,7 @@ draw_all_cells(bool flush_markmap) } #ifdef __SCROLL__ if (waterfall) { - for (m = 226; m >= HEIGHT; m -= 1) { // Scroll down + for (m = 226; m >= HEIGHT+3; m -= 1) { // Scroll down uint16_t *buf = &spi_buffer[0]; ili9341_read_memory(5*5, m, area_width, 1, area_width, buf); ili9341_bulk(5*5,m+1, area_width,1); @@ -1496,7 +1497,7 @@ draw_all_cells(bool flush_markmap) #endif spi_buffer[i] = RGB565(r,g,b); } - ili9341_bulk(5*5,HEIGHT, 290,1); + ili9341_bulk(5*5,HEIGHT+3, 290,1); } #endif } @@ -1578,6 +1579,35 @@ cell_drawchar(uint8_t ch, int x, int y) return ch_size; } +static int +cell_drawchar_size(uint8_t ch, int x, int y, int size) +{ + uint8_t bits; + int c, r, ch_size; + const uint8_t *char_buf = FONT_GET_DATA(ch); + ch_size = FONT_GET_WIDTH(ch); + // if (y <= -FONT_GET_HEIGHT || y >= CELLHEIGHT || x <= -ch_size || x >= CELLWIDTH) + // return ch_size; + if (x <= -ch_size*size) + return ch_size*size; + for (c = 0; c < FONT_GET_HEIGHT; c++) { + for (int i=0; i < size; i++) { + bits = *char_buf; + if ((y + c*size+i) < 0 || (y + c*size+i) >= CELLHEIGHT) + continue; + for (r = 0; r < ch_size; r++) { + for (int j = 0; j < size; j++) { + if ((x+r*size + j) >= 0 && (x+r*size+j) < CELLWIDTH && (0x80 & bits)) + cell_buffer[(y+c*size+i)*CELLWIDTH + (x+r*size+j)] = foreground_color; + } + bits <<= 1; + } + } + char_buf++; + } + return ch_size*size; +} + void cell_drawstring(char *str, int x, int y) { @@ -1590,6 +1620,54 @@ cell_drawstring(char *str, int x, int y) } } +void +cell_drawstring_size(char *str, int x, int y, int size) +{ + if (y <= -FONT_GET_HEIGHT*2 || y >= CELLHEIGHT) + return; + while (*str) { + if (x >= CELLWIDTH) + return; + x += cell_drawchar_size(*str++, x, y, size); + } +} + +static int +cell_drawchar_7x13(uint8_t ch, int x, int y) +{ + uint16_t bits; + int c, r, ch_size; + ch_size = 7; + // if (y <= -FONT_GET_HEIGHT || y >= CELLHEIGHT || x <= -ch_size || x >= CELLWIDTH) + // return ch_size; + if (x <= -ch_size) + return ch_size; + for (c = 0; c < 13; c++) { + bits = x7x13b_bits[(ch * 13) + c]; + if ((y + c) < 0 || (y + c) >= CELLHEIGHT) + continue; + for (r = 0; r < ch_size; r++) { + if ((x+r) >= 0 && (x+r) < CELLWIDTH && (0x8000 & bits)) + cell_buffer[(y+c)*CELLWIDTH + (x+r)] = foreground_color; + bits <<= 1; + } + } + return ch_size; +} + + +void +cell_drawstring_7x13(char *str, int x, int y) +{ + if (y <= -13 || y >= CELLHEIGHT) + return; + while (*str) { + if (x >= CELLWIDTH) + return; + x += cell_drawchar_7x13(*str++, x, y); + } +} + #ifdef __VNA__ static void cell_draw_marker_info(int x0, int y0) @@ -1737,8 +1815,13 @@ static void cell_draw_marker_info(int x0, int y0) for (t = TRACE_ACTUAL; t <= TRACE_ACTUAL; t++) { // Only show info on actual trace if (!trace[t].enabled) continue; +#if 1 int xpos = 1 + (j%2)*(WIDTH/2) + CELLOFFSETX - x0; - int ypos = 1 + (j/2)*(FONT_GET_HEIGHT+1) - y0; + int ypos = 1 + (j/2)*(13) - y0; +#else + int xpos = 1 + CELLOFFSETX - x0; + int ypos = 1 + j*(FONT_GET_HEIGHT*2+1) - y0; +#endif int k = 0; if (i == active_marker) buf[k++] = '\033'; // Right arrow (?) @@ -1748,12 +1831,12 @@ static void cell_draw_marker_info(int x0, int y0) buf[k++] = marker_letter[markers[i].mtype]; buf[k++] = 0; ili9341_set_foreground(marker_color[markers[i].mtype]); - cell_drawstring(buf, xpos, ypos); + cell_drawstring_7x13(buf, xpos, ypos); trace_get_value_string( t, buf, sizeof buf, idx, measured[trace[t].channel], frequencies, sweep_points, ridx, markers[i].mtype); // cell_drawstring_7x13(w, h, buf, xpos+2*7, ypos, config.trace_color[t]); - cell_drawstring(buf, xpos+2*7, ypos); + cell_drawstring_7x13(buf, xpos+4*7, ypos); j++; } } @@ -1780,14 +1863,16 @@ static void frequency_string(char *buf, size_t len, int32_t freq) } #endif #ifdef __SA__ +/* if (freq < 1000) { plot_printf(buf, len, "%dHz", (int)freq); } else if (freq < 1000000) { plot_printf(buf, len, "%d.%03dkHz", (int)(freq / 1000), (int)(freq % 1000)); - } else { - plot_printf(buf, len, "%d.%03dMHz", + } else +*/ { + plot_printf(buf, len, "%d.%03", (int)(freq / 1000000), (int)((freq / 1000) % 1000)); } diff --git a/sa_core.c b/sa_core.c index e5d66d8..d870670 100644 --- a/sa_core.c +++ b/sa_core.c @@ -82,7 +82,7 @@ int settingLNA = false; int extraVFO = false; uint32_t minFreq = 0; -uint32_t maxFreq = 350000000; +uint32_t maxFreq = 520000000; void set_refer_output(int v) { @@ -176,13 +176,26 @@ int GetSubtractStorage(void) extern float peakLevel; void SetPowerLevel(int o) { - if (o != 100) - settingLevelOffset = o - peakLevel - settingAttenuate + settingLevelOffset; - else - settingLevelOffset = 0; + if (o != 100) { + if (settingMode & 1) + config.high_level_offset = o - peakLevel - settingAttenuate + settingLevelOffset(); + else + config.low_level_offset = o - peakLevel - settingAttenuate + settingLevelOffset(); + } + else { + config.low_level_offset = 0; + config.high_level_offset = 0; + } dirty = true; } +int settingLevelOffset(void) +{ + if (settingMode & 1) + return(config.high_level_offset); + return(config.low_level_offset); +} + void SetRBW(int v) { settingBandwidth = v; @@ -594,7 +607,7 @@ float perform(bool break_on_operation, int i, int32_t f, int extraV) if (extraV) setFreq (0, local_IF + lf - refferFreq[settingRefer]); // Offset so fundamental of reffer is visible setFreq (1, local_IF + lf); - float subRSSI = SI4432_RSSI(lf, (settingMode & 1))+settingLevelOffset+settingAttenuate; + float subRSSI = SI4432_RSSI(lf, (settingMode & 1))+settingLevelOffset()+settingAttenuate; if (RSSI < subRSSI) RSSI = subRSSI; t++; @@ -957,28 +970,28 @@ static void test_acquire(int i) extern void cell_drawstring_5x7(int w, int h, char *str, int x, int y, uint16_t fg); extern void cell_drawstring_7x13(int w, int h, char *str, int x, int y, uint16_t fg); +void cell_drawstring(char *str, int x, int y); -void cell_draw_test_info(int m, int n, int w, int h) +static char self_test_status_buf[35]; +void cell_draw_test_info(int x0, int y0) { #define INFO_SPACING 13 - char buf[35]; +// char self_test_status_buf[35]; if (!show_test_info) return; for (int i = -1; i < TEST_COUNT+1; i++) { - int xpos = 25; - int ypos = 40+i*INFO_SPACING; - xpos -= m * CELLWIDTH -CELLOFFSETX; - ypos -= n * CELLHEIGHT; + int xpos = 25 - x0; + int ypos = 40+i*INFO_SPACING - y0; unsigned int color = RGBHEX(0xFFFFFF); if (i == -1) { - plot_printf(buf, sizeof buf, "Self test status:"); + plot_printf(self_test_status_buf, sizeof self_test_status_buf, "Self test status:"); } else if (i == TEST_COUNT) { if (test_wait) - plot_printf(buf, sizeof buf, "Touch screen to continue"); + plot_printf(self_test_status_buf, sizeof self_test_status_buf, "Touch screen to continue"); else - buf[0] = 0; + self_test_status_buf[0] = 0; } else { - plot_printf(buf, sizeof buf, "Test %d: %s%s", i+1, test_fail_cause[i], test_text[test_status[i]] ); + plot_printf(self_test_status_buf, sizeof self_test_status_buf, "Test %d: %s%s", i+1, test_fail_cause[i], test_text[test_status[i]] ); if (test_status[i] == TS_PASS) color = RGBHEX(0x00FF00); else if (test_status[i] == TS_CRITICAL) @@ -988,7 +1001,8 @@ void cell_draw_test_info(int m, int n, int w, int h) else color = RGBHEX(0x0000FF); } - cell_drawstring(buf, xpos, ypos, color); + ili9341_set_foreground(color); + cell_drawstring(self_test_status_buf, xpos, ypos); } } @@ -1137,7 +1151,7 @@ void self_test(void) break; case TP_10MHZEXTRA: // Swept receiver extraVFO = true; //Sweep BPF - // Fall through intended!!!!!! + goto common; case TP_10MHZ: // 10MHz input common: set_refer_output(2); diff --git a/ui.c b/ui.c index a75838b..5460ebe 100644 --- a/ui.c +++ b/ui.c @@ -2208,11 +2208,16 @@ void ui_process_touch(void) touch_start_watchdog(); } +static int previous_button_state = 0; + void ui_process(void) { - if (operation_requested&OP_LEVER) + int button_state = READ_PORT() & BUTTON_MASK; + if (operation_requested&OP_LEVER || previous_button_state != button_state) { ui_process_lever(); + previous_button_state = button_state; + } if (operation_requested&OP_TOUCH) ui_process_touch(); operation_requested = OP_NONE; diff --git a/ui_sa.c b/ui_sa.c index d6adfd3..00e5aef 100644 --- a/ui_sa.c +++ b/ui_sa.c @@ -200,6 +200,7 @@ void menu_autosettings_cb(int item, uint8_t data) set_refer_output(1); SetAttenuation(0); SetPowerLevel(100); // Reset + SetClearStorage(); SetRBW(0); dirty = true; menu_move_back(); @@ -751,7 +752,7 @@ static void fetch_numeric_target(void) uistat.value = settingAttenuate; break; case KM_ACTUALPOWER: - uistat.value = settingLevelOffset; + uistat.value = settingLevelOffset(); break; case KM_IF: uistat.value = frequency_IF;