hadif azli / Mbed 2 deprecated TEST123

Dependencies:   mbed Blynk

Committer:
lixianyu
Date:
Mon Jun 13 02:21:11 2016 +0000
Revision:
1:0e75de2a5d21
Parent:
0:d8f4c441e032
u8glib???????????????????????????Adafruit_GFX????OLED????????bitmap??????

Who changed what in which revision?

UserRevisionLine numberNew contents of line
lixianyu 0:d8f4c441e032 1 /*
lixianyu 0:d8f4c441e032 2
lixianyu 0:d8f4c441e032 3 u8g.h
lixianyu 0:d8f4c441e032 4
lixianyu 0:d8f4c441e032 5 Universal 8bit Graphics Library
lixianyu 0:d8f4c441e032 6
lixianyu 0:d8f4c441e032 7 Copyright (c) 2011, olikraus@gmail.com
lixianyu 0:d8f4c441e032 8 All rights reserved.
lixianyu 0:d8f4c441e032 9
lixianyu 0:d8f4c441e032 10 Redistribution and use in source and binary forms, with or without modification,
lixianyu 0:d8f4c441e032 11 are permitted provided that the following conditions are met:
lixianyu 0:d8f4c441e032 12
lixianyu 0:d8f4c441e032 13 * Redistributions of source code must retain the above copyright notice, this list
lixianyu 0:d8f4c441e032 14 of conditions and the following disclaimer.
lixianyu 0:d8f4c441e032 15
lixianyu 0:d8f4c441e032 16 * Redistributions in binary form must reproduce the above copyright notice, this
lixianyu 0:d8f4c441e032 17 list of conditions and the following disclaimer in the documentation and/or other
lixianyu 0:d8f4c441e032 18 materials provided with the distribution.
lixianyu 0:d8f4c441e032 19
lixianyu 0:d8f4c441e032 20 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
lixianyu 0:d8f4c441e032 21 CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
lixianyu 0:d8f4c441e032 22 INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
lixianyu 0:d8f4c441e032 23 MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
lixianyu 0:d8f4c441e032 24 DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
lixianyu 0:d8f4c441e032 25 CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
lixianyu 0:d8f4c441e032 26 SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
lixianyu 0:d8f4c441e032 27 NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
lixianyu 0:d8f4c441e032 28 LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
lixianyu 0:d8f4c441e032 29 CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
lixianyu 0:d8f4c441e032 30 STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
lixianyu 0:d8f4c441e032 31 ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
lixianyu 0:d8f4c441e032 32 ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
lixianyu 0:d8f4c441e032 33
lixianyu 0:d8f4c441e032 34 */
lixianyu 0:d8f4c441e032 35
lixianyu 0:d8f4c441e032 36 #ifndef _U8G_H
lixianyu 0:d8f4c441e032 37 #define _U8G_H
lixianyu 0:d8f4c441e032 38
lixianyu 0:d8f4c441e032 39 /* uncomment the following line to support displays larger than 240x240 */
lixianyu 0:d8f4c441e032 40 //#define U8G_16BIT 1
lixianyu 0:d8f4c441e032 41
lixianyu 0:d8f4c441e032 42 /* comment the following line to generate more compact but interrupt unsafe code */
lixianyu 0:d8f4c441e032 43 #define U8G_INTERRUPT_SAFE 1
lixianyu 0:d8f4c441e032 44
lixianyu 0:d8f4c441e032 45
lixianyu 0:d8f4c441e032 46 #include <stddef.h>
lixianyu 0:d8f4c441e032 47
lixianyu 0:d8f4c441e032 48 #ifdef __18CXX
lixianyu 0:d8f4c441e032 49 typedef unsigned char uint8_t;
lixianyu 0:d8f4c441e032 50 typedef signed char int8_t;
lixianyu 0:d8f4c441e032 51 typedef unsigned short uint16_t;
lixianyu 0:d8f4c441e032 52 typedef signed short int16_t;
lixianyu 0:d8f4c441e032 53 #else
lixianyu 0:d8f4c441e032 54 #include <stdint.h>
lixianyu 0:d8f4c441e032 55 #endif
lixianyu 0:d8f4c441e032 56
lixianyu 0:d8f4c441e032 57 #if defined(__AVR__)
lixianyu 0:d8f4c441e032 58 #include <avr/pgmspace.h>
lixianyu 0:d8f4c441e032 59 #endif
lixianyu 0:d8f4c441e032 60
lixianyu 0:d8f4c441e032 61 /*
lixianyu 0:d8f4c441e032 62 use the com interface directly on any systems which are not AVR or ARDUINO
lixianyu 0:d8f4c441e032 63 */
lixianyu 0:d8f4c441e032 64 #if defined(__AVR__) || defined(ARDUINO) || defined(__MSP430__)
lixianyu 0:d8f4c441e032 65 #define U8G_WITH_PINLIST
lixianyu 0:d8f4c441e032 66 #endif
lixianyu 0:d8f4c441e032 67
lixianyu 0:d8f4c441e032 68
lixianyu 0:d8f4c441e032 69 #ifdef __cplusplus
lixianyu 0:d8f4c441e032 70 extern "C" {
lixianyu 0:d8f4c441e032 71 #endif
lixianyu 0:d8f4c441e032 72
lixianyu 0:d8f4c441e032 73
lixianyu 0:d8f4c441e032 74 /*===============================================================*/
lixianyu 0:d8f4c441e032 75 #ifdef __GNUC__
lixianyu 0:d8f4c441e032 76 # define U8G_NOINLINE __attribute__((noinline))
lixianyu 0:d8f4c441e032 77 # define U8G_PURE __attribute__ ((pure))
lixianyu 0:d8f4c441e032 78 # define U8G_NOCOMMON __attribute__ ((nocommon))
lixianyu 0:d8f4c441e032 79 # define U8G_SECTION(name) __attribute__ ((section (name)))
lixianyu 0:d8f4c441e032 80 # if defined(__MSPGCC__)
lixianyu 0:d8f4c441e032 81 /* mspgcc does not have .progmem sections. Use -fdata-sections. */
lixianyu 0:d8f4c441e032 82 # define U8G_FONT_SECTION(name)
lixianyu 0:d8f4c441e032 83 # endif
lixianyu 0:d8f4c441e032 84 # if defined(__AVR__)
lixianyu 0:d8f4c441e032 85 # define U8G_FONT_SECTION(name) U8G_SECTION(".progmem." name)
lixianyu 0:d8f4c441e032 86 # endif
lixianyu 0:d8f4c441e032 87 #else
lixianyu 0:d8f4c441e032 88 # define U8G_NOINLINE
lixianyu 0:d8f4c441e032 89 # define U8G_PURE
lixianyu 0:d8f4c441e032 90 # define U8G_NOCOMMON
lixianyu 0:d8f4c441e032 91 # define U8G_SECTION(name)
lixianyu 0:d8f4c441e032 92 # define U8G_FONT_SECTION(name)
lixianyu 0:d8f4c441e032 93 #endif
lixianyu 0:d8f4c441e032 94
lixianyu 0:d8f4c441e032 95 #ifdef __MSP430__
lixianyu 0:d8f4c441e032 96 /*
lixianyu 0:d8f4c441e032 97 Specifying a section will cause the MSP-GCC to put even const data to RAM
lixianyu 0:d8f4c441e032 98 at least for the fonts. But as the fonts are consts we don't need to specify
lixianyu 0:d8f4c441e032 99 it manually - the MSP-GCC seems to be smart enough to put it into the
lixianyu 0:d8f4c441e032 100 flash memory.
lixianyu 0:d8f4c441e032 101 */
lixianyu 0:d8f4c441e032 102 # undef U8G_SECTION
lixianyu 0:d8f4c441e032 103 # define U8G_SECTION(name)
lixianyu 0:d8f4c441e032 104 #endif
lixianyu 0:d8f4c441e032 105
lixianyu 0:d8f4c441e032 106 /*===============================================================*/
lixianyu 0:d8f4c441e032 107
lixianyu 0:d8f4c441e032 108 #ifndef U8G_FONT_SECTION
lixianyu 0:d8f4c441e032 109 # define U8G_FONT_SECTION(name)
lixianyu 0:d8f4c441e032 110 #endif
lixianyu 0:d8f4c441e032 111
lixianyu 0:d8f4c441e032 112
lixianyu 0:d8f4c441e032 113 /*===============================================================*/
lixianyu 0:d8f4c441e032 114 /* flash memory access */
lixianyu 0:d8f4c441e032 115
lixianyu 0:d8f4c441e032 116 #if defined(__AVR__)
lixianyu 0:d8f4c441e032 117 /* U8G_PROGMEM is used by the XBM example */
lixianyu 0:d8f4c441e032 118 #define U8G_PROGMEM U8G_SECTION(".progmem.data")
lixianyu 0:d8f4c441e032 119 typedef uint8_t PROGMEM u8g_pgm_uint8_t;
lixianyu 0:d8f4c441e032 120 typedef uint8_t u8g_fntpgm_uint8_t;
lixianyu 0:d8f4c441e032 121 #define u8g_pgm_read(adr) pgm_read_byte_near(adr)
lixianyu 0:d8f4c441e032 122 #define U8G_PSTR(s) ((u8g_pgm_uint8_t *)PSTR(s))
lixianyu 0:d8f4c441e032 123
lixianyu 0:d8f4c441e032 124 #else
lixianyu 0:d8f4c441e032 125
lixianyu 0:d8f4c441e032 126 #define U8G_PROGMEM
lixianyu 0:d8f4c441e032 127 #define PROGMEM
lixianyu 0:d8f4c441e032 128 typedef uint8_t u8g_pgm_uint8_t;
lixianyu 0:d8f4c441e032 129 typedef uint8_t u8g_fntpgm_uint8_t;
lixianyu 0:d8f4c441e032 130 #define u8g_pgm_read(adr) (*(const u8g_pgm_uint8_t *)(adr))
lixianyu 0:d8f4c441e032 131 #define U8G_PSTR(s) ((u8g_pgm_uint8_t *)(s))
lixianyu 0:d8f4c441e032 132
lixianyu 0:d8f4c441e032 133 #endif
lixianyu 0:d8f4c441e032 134
lixianyu 0:d8f4c441e032 135 /*===============================================================*/
lixianyu 0:d8f4c441e032 136 /* interrupt safe code */
lixianyu 0:d8f4c441e032 137 #if defined(U8G_INTERRUPT_SAFE)
lixianyu 0:d8f4c441e032 138 # if defined(__AVR__)
lixianyu 0:d8f4c441e032 139 extern uint8_t global_SREG_backup; /* u8g_state.c */
lixianyu 0:d8f4c441e032 140 # define U8G_ATOMIC_START() do { global_SREG_backup = SREG; cli(); } while(0)
lixianyu 0:d8f4c441e032 141 # define U8G_ATOMIC_END() SREG = global_SREG_backup
lixianyu 0:d8f4c441e032 142 # define U8G_ATOMIC_OR(ptr, val) do { uint8_t tmpSREG = SREG; cli(); (*(ptr) |= (val)); SREG = tmpSREG; } while(0)
lixianyu 0:d8f4c441e032 143 # define U8G_ATOMIC_AND(ptr, val) do { uint8_t tmpSREG = SREG; cli(); (*(ptr) &= (val)); SREG = tmpSREG; } while(0)
lixianyu 0:d8f4c441e032 144 # else
lixianyu 0:d8f4c441e032 145 # define U8G_ATOMIC_OR(ptr, val) (*(ptr) |= (val))
lixianyu 0:d8f4c441e032 146 # define U8G_ATOMIC_AND(ptr, val) (*(ptr) &= (val))
lixianyu 0:d8f4c441e032 147 # define U8G_ATOMIC_START()
lixianyu 0:d8f4c441e032 148 # define U8G_ATOMIC_END()
lixianyu 0:d8f4c441e032 149 # endif /* __AVR__ */
lixianyu 0:d8f4c441e032 150 #else
lixianyu 0:d8f4c441e032 151 # define U8G_ATOMIC_OR(ptr, val) (*(ptr) |= (val))
lixianyu 0:d8f4c441e032 152 # define U8G_ATOMIC_AND(ptr, val) (*(ptr) &= (val))
lixianyu 0:d8f4c441e032 153 # define U8G_ATOMIC_START()
lixianyu 0:d8f4c441e032 154 # define U8G_ATOMIC_END()
lixianyu 0:d8f4c441e032 155 #endif /* U8G_INTERRUPT_SAFE */
lixianyu 0:d8f4c441e032 156
lixianyu 0:d8f4c441e032 157
lixianyu 0:d8f4c441e032 158 /*===============================================================*/
lixianyu 0:d8f4c441e032 159 /* forward */
lixianyu 0:d8f4c441e032 160 typedef struct _u8g_t u8g_t;
lixianyu 0:d8f4c441e032 161 typedef struct _u8g_dev_t u8g_dev_t;
lixianyu 0:d8f4c441e032 162
lixianyu 0:d8f4c441e032 163 typedef struct _u8g_dev_arg_pixel_t u8g_dev_arg_pixel_t;
lixianyu 0:d8f4c441e032 164 typedef struct _u8g_dev_arg_bbx_t u8g_dev_arg_bbx_t;
lixianyu 0:d8f4c441e032 165 typedef struct _u8g_box_t u8g_box_t;
lixianyu 0:d8f4c441e032 166 typedef struct _u8g_dev_arg_irgb_t u8g_dev_arg_irgb_t;
lixianyu 0:d8f4c441e032 167
lixianyu 0:d8f4c441e032 168
lixianyu 0:d8f4c441e032 169 /*===============================================================*/
lixianyu 0:d8f4c441e032 170 /* generic */
lixianyu 0:d8f4c441e032 171 #if defined(U8G_16BIT)
lixianyu 0:d8f4c441e032 172 typedef uint16_t u8g_uint_t;
lixianyu 0:d8f4c441e032 173 typedef int16_t u8g_int_t;
lixianyu 0:d8f4c441e032 174 #else
lixianyu 0:d8f4c441e032 175 typedef uint8_t u8g_uint_t;
lixianyu 0:d8f4c441e032 176 typedef int8_t u8g_int_t;
lixianyu 0:d8f4c441e032 177 #endif
lixianyu 0:d8f4c441e032 178
lixianyu 0:d8f4c441e032 179 #ifdef OBSOLETE
lixianyu 0:d8f4c441e032 180 struct _u8g_box_t {
lixianyu 0:d8f4c441e032 181 u8g_uint_t x0, y0, x1, y1;
lixianyu 0:d8f4c441e032 182 };
lixianyu 0:d8f4c441e032 183 typedef struct _u8g_box_t u8g_box_t;
lixianyu 0:d8f4c441e032 184 #endif /* OBSOLETE */
lixianyu 0:d8f4c441e032 185
lixianyu 0:d8f4c441e032 186
lixianyu 0:d8f4c441e032 187 /*===============================================================*/
lixianyu 0:d8f4c441e032 188 /* device structure */
lixianyu 0:d8f4c441e032 189
lixianyu 0:d8f4c441e032 190 #ifdef __XC8
lixianyu 0:d8f4c441e032 191 /* device prototype */
lixianyu 0:d8f4c441e032 192 typedef uint8_t (*u8g_dev_fnptr)(void *u8g, void *dev, uint8_t msg, void *arg);
lixianyu 0:d8f4c441e032 193
lixianyu 0:d8f4c441e032 194 /* com prototype */
lixianyu 0:d8f4c441e032 195 typedef uint8_t (*u8g_com_fnptr)(void *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr);
lixianyu 0:d8f4c441e032 196 #else
lixianyu 0:d8f4c441e032 197 /* device prototype */
lixianyu 0:d8f4c441e032 198 typedef uint8_t (*u8g_dev_fnptr)(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg);
lixianyu 0:d8f4c441e032 199
lixianyu 0:d8f4c441e032 200 /* com prototype */
lixianyu 0:d8f4c441e032 201 typedef uint8_t (*u8g_com_fnptr)(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr);
lixianyu 0:d8f4c441e032 202 #endif
lixianyu 0:d8f4c441e032 203
lixianyu 0:d8f4c441e032 204
lixianyu 0:d8f4c441e032 205
lixianyu 0:d8f4c441e032 206 struct _u8g_dev_t {
lixianyu 0:d8f4c441e032 207 u8g_dev_fnptr dev_fn; /* device procedure */
lixianyu 0:d8f4c441e032 208 void *dev_mem; /* device memory */
lixianyu 0:d8f4c441e032 209 u8g_com_fnptr com_fn; /* communication procedure */
lixianyu 0:d8f4c441e032 210 };
lixianyu 0:d8f4c441e032 211
lixianyu 0:d8f4c441e032 212
lixianyu 0:d8f4c441e032 213 /*===============================================================*/
lixianyu 0:d8f4c441e032 214 /* device list */
lixianyu 0:d8f4c441e032 215
lixianyu 0:d8f4c441e032 216 /* Size: 128x64 SDL, u8g_dev_sdl.c */
lixianyu 0:d8f4c441e032 217 extern u8g_dev_t u8g_dev_sdl_1bit;
lixianyu 0:d8f4c441e032 218 extern u8g_dev_t u8g_dev_sdl_1bit_h;
lixianyu 0:d8f4c441e032 219 extern u8g_dev_t u8g_dev_sdl_2bit;
lixianyu 0:d8f4c441e032 220 extern u8g_dev_t u8g_dev_sdl_2bit_double_mem;
lixianyu 0:d8f4c441e032 221 extern u8g_dev_t u8g_dev_sdl_8bit;
lixianyu 0:d8f4c441e032 222 extern u8g_dev_t u8g_dev_sdl_hicolor;
lixianyu 0:d8f4c441e032 223 extern u8g_dev_t u8g_dev_sdl_fullcolor;
lixianyu 0:d8f4c441e032 224 int u8g_sdl_get_key(void);
lixianyu 0:d8f4c441e032 225
lixianyu 0:d8f4c441e032 226 /* Size: 70x30 monochrom, stdout */
lixianyu 0:d8f4c441e032 227 extern u8g_dev_t u8g_dev_stdout;
lixianyu 0:d8f4c441e032 228
lixianyu 0:d8f4c441e032 229 /* Size: monochrom, writes "u8g.pbm" */
lixianyu 0:d8f4c441e032 230 extern u8g_dev_t u8g_dev_pbm;
lixianyu 0:d8f4c441e032 231 extern u8g_dev_t u8g_dev_pbm_8h1;
lixianyu 0:d8f4c441e032 232 extern u8g_dev_t u8g_dev_pbm_8h2; /* grayscale simulation */
lixianyu 0:d8f4c441e032 233
lixianyu 0:d8f4c441e032 234 /* Size: 128x64 monochrom, no output, used for performance measure */
lixianyu 0:d8f4c441e032 235 extern u8g_dev_t u8g_dev_gprof;
lixianyu 0:d8f4c441e032 236
lixianyu 0:d8f4c441e032 237 /* Display: EA DOGS102, Size: 102x64 monochrom */
lixianyu 0:d8f4c441e032 238 extern u8g_dev_t u8g_dev_uc1701_dogs102_sw_spi;
lixianyu 0:d8f4c441e032 239 extern u8g_dev_t u8g_dev_uc1701_dogs102_hw_spi;
lixianyu 0:d8f4c441e032 240
lixianyu 0:d8f4c441e032 241 extern u8g_dev_t u8g_dev_uc1701_dogs102_2x_sw_spi;
lixianyu 0:d8f4c441e032 242 extern u8g_dev_t u8g_dev_uc1701_dogs102_2x_hw_spi;
lixianyu 0:d8f4c441e032 243
lixianyu 0:d8f4c441e032 244 /* Display: Mini12864 (dealextreme), Size: 128x64 monochrom */
lixianyu 0:d8f4c441e032 245 extern u8g_dev_t u8g_dev_uc1701_mini12864_sw_spi;
lixianyu 0:d8f4c441e032 246 extern u8g_dev_t u8g_dev_uc1701_mini12864_hw_spi;
lixianyu 0:d8f4c441e032 247
lixianyu 0:d8f4c441e032 248 extern u8g_dev_t u8g_dev_uc1701_mini12864_2x_sw_spi;
lixianyu 0:d8f4c441e032 249 extern u8g_dev_t u8g_dev_uc1701_mini12864_2x_hw_spi;
lixianyu 0:d8f4c441e032 250
lixianyu 0:d8f4c441e032 251 /* Display: EA DOGM132, Size: 128x32 monochrom */
lixianyu 0:d8f4c441e032 252 extern u8g_dev_t u8g_dev_st7565_dogm132_sw_spi;
lixianyu 0:d8f4c441e032 253 extern u8g_dev_t u8g_dev_st7565_dogm132_hw_spi;
lixianyu 0:d8f4c441e032 254
lixianyu 0:d8f4c441e032 255 /* Display: EA DOGM128, Size: 128x64 monochrom */
lixianyu 0:d8f4c441e032 256 extern u8g_dev_t u8g_dev_st7565_dogm128_sw_spi;
lixianyu 0:d8f4c441e032 257 extern u8g_dev_t u8g_dev_st7565_dogm128_hw_spi;
lixianyu 0:d8f4c441e032 258 extern u8g_dev_t u8g_dev_st7565_dogm128_parallel;
lixianyu 0:d8f4c441e032 259
lixianyu 0:d8f4c441e032 260 extern u8g_dev_t u8g_dev_st7565_dogm128_2x_sw_spi;
lixianyu 0:d8f4c441e032 261 extern u8g_dev_t u8g_dev_st7565_dogm128_2x_hw_spi;
lixianyu 0:d8f4c441e032 262 extern u8g_dev_t u8g_dev_st7565_dogm128_2x_parallel;
lixianyu 0:d8f4c441e032 263
lixianyu 0:d8f4c441e032 264 /* EA DOGM 240-6 */
lixianyu 0:d8f4c441e032 265 extern u8g_dev_t u8g_dev_uc1611_dogm240_i2c;
lixianyu 0:d8f4c441e032 266 extern u8g_dev_t u8g_dev_uc1611_dogm240_hw_spi;
lixianyu 0:d8f4c441e032 267 extern u8g_dev_t u8g_dev_uc1611_dogm240_sw_spi;
lixianyu 0:d8f4c441e032 268 extern u8g_dev_t u8g_dev_uc1611_dogm240_8bit;
lixianyu 0:d8f4c441e032 269
lixianyu 0:d8f4c441e032 270 /* EA DOGXL 240 */
lixianyu 0:d8f4c441e032 271 extern u8g_dev_t u8g_dev_uc1611_dogxl240_i2c;
lixianyu 0:d8f4c441e032 272 extern u8g_dev_t u8g_dev_uc1611_dogxl240_hw_spi;
lixianyu 0:d8f4c441e032 273 extern u8g_dev_t u8g_dev_uc1611_dogxl240_sw_spi;
lixianyu 0:d8f4c441e032 274 extern u8g_dev_t u8g_dev_uc1611_dogxl240_8bit;
lixianyu 0:d8f4c441e032 275
lixianyu 0:d8f4c441e032 276 /* Display: Topway LM6059 128x64 (Adafruit) */
lixianyu 0:d8f4c441e032 277 extern u8g_dev_t u8g_dev_st7565_lm6059_sw_spi;
lixianyu 0:d8f4c441e032 278 extern u8g_dev_t u8g_dev_st7565_lm6059_hw_spi;
lixianyu 0:d8f4c441e032 279 extern u8g_dev_t u8g_dev_st7565_lm6059_2x_sw_spi;
lixianyu 0:d8f4c441e032 280 extern u8g_dev_t u8g_dev_st7565_lm6059_2x_hw_spi;
lixianyu 0:d8f4c441e032 281 /* Display: Topway LM6063 128x64 */
lixianyu 0:d8f4c441e032 282 extern u8g_dev_t u8g_dev_st7565_lm6063_sw_spi;
lixianyu 0:d8f4c441e032 283 extern u8g_dev_t u8g_dev_st7565_lm6063_hw_spi;
lixianyu 0:d8f4c441e032 284 extern u8g_dev_t u8g_dev_st7565_lm6063_2x_sw_spi;
lixianyu 0:d8f4c441e032 285 extern u8g_dev_t u8g_dev_st7565_lm6063_2x_hw_spi;
lixianyu 0:d8f4c441e032 286 /* Display: Newhaven NHD-C12864 */
lixianyu 0:d8f4c441e032 287 extern u8g_dev_t u8g_dev_st7565_nhd_c12864_sw_spi;
lixianyu 0:d8f4c441e032 288 extern u8g_dev_t u8g_dev_st7565_nhd_c12864_hw_spi;
lixianyu 0:d8f4c441e032 289 extern u8g_dev_t u8g_dev_st7565_nhd_c12864_2x_sw_spi;
lixianyu 0:d8f4c441e032 290 extern u8g_dev_t u8g_dev_st7565_nhd_c12864_2x_hw_spi;
lixianyu 0:d8f4c441e032 291
lixianyu 0:d8f4c441e032 292 /* Display: Newhaven NHD-C12832 */
lixianyu 0:d8f4c441e032 293 extern u8g_dev_t u8g_dev_st7565_nhd_c12832_sw_spi;
lixianyu 0:d8f4c441e032 294 extern u8g_dev_t u8g_dev_st7565_nhd_c12832_hw_spi;
lixianyu 0:d8f4c441e032 295 extern u8g_dev_t u8g_dev_st7565_nhd_c12832_parallel;
lixianyu 0:d8f4c441e032 296 extern u8g_dev_t u8g_dev_st7565_nhd_c12832_hw_usart_spi;
lixianyu 0:d8f4c441e032 297
lixianyu 0:d8f4c441e032 298 /* Display: Displaytech 64128N */
lixianyu 0:d8f4c441e032 299 extern u8g_dev_t u8g_dev_st7565_64128n_sw_spi;
lixianyu 0:d8f4c441e032 300 extern u8g_dev_t u8g_dev_st7565_64128n_hw_spi;
lixianyu 0:d8f4c441e032 301 extern u8g_dev_t u8g_dev_st7565_64128n_parallel;
lixianyu 0:d8f4c441e032 302
lixianyu 0:d8f4c441e032 303 extern u8g_dev_t u8g_dev_st7565_64128n_2x_sw_spi;
lixianyu 0:d8f4c441e032 304 extern u8g_dev_t u8g_dev_st7565_64128n_2x_hw_spi;
lixianyu 0:d8f4c441e032 305 extern u8g_dev_t u8g_dev_st7565_64128n_2x_parallel;
lixianyu 0:d8f4c441e032 306
lixianyu 0:d8f4c441e032 307 /* Display: LCD-AG-C128032R-DIW W/KK E6 PBF */
lixianyu 0:d8f4c441e032 308 extern u8g_dev_t u8g_dev_uc1601_c128032_sw_spi;
lixianyu 0:d8f4c441e032 309 extern u8g_dev_t u8g_dev_uc1601_c128032_hw_spi;
lixianyu 0:d8f4c441e032 310
lixianyu 0:d8f4c441e032 311 extern u8g_dev_t u8g_dev_uc1601_c128032_2x_sw_spi;
lixianyu 0:d8f4c441e032 312 extern u8g_dev_t u8g_dev_uc1601_c128032_2x_hw_spi;
lixianyu 0:d8f4c441e032 313
lixianyu 0:d8f4c441e032 314 /* East Rising/buy-display.com ERC24064-1 */
lixianyu 0:d8f4c441e032 315 extern u8g_dev_t u8g_dev_uc1608_240x64_sw_spi;
lixianyu 0:d8f4c441e032 316 extern u8g_dev_t u8g_dev_uc1608_240x64_hw_spi;
lixianyu 0:d8f4c441e032 317
lixianyu 0:d8f4c441e032 318 extern u8g_dev_t u8g_dev_uc1608_240x64_2x_sw_spi;
lixianyu 0:d8f4c441e032 319 extern u8g_dev_t u8g_dev_uc1608_240x64_2x_hw_spi;
lixianyu 0:d8f4c441e032 320
lixianyu 0:d8f4c441e032 321 /* UC1608 240x128 */
lixianyu 0:d8f4c441e032 322 extern u8g_dev_t u8g_dev_uc1608_240x128_sw_spi;
lixianyu 0:d8f4c441e032 323 extern u8g_dev_t u8g_dev_uc1608_240x128_hw_spi;
lixianyu 0:d8f4c441e032 324
lixianyu 0:d8f4c441e032 325 extern u8g_dev_t u8g_dev_uc1608_240x128_2x_sw_spi;
lixianyu 0:d8f4c441e032 326 extern u8g_dev_t u8g_dev_uc1608_240x128_2x_hw_spi;
lixianyu 0:d8f4c441e032 327
lixianyu 0:d8f4c441e032 328 /* dfrobot 128x64 Graphic LCD (SKU:FIT0021) */
lixianyu 0:d8f4c441e032 329 extern u8g_dev_t u8g_dev_st7920_128x64_sw_spi;
lixianyu 0:d8f4c441e032 330 extern u8g_dev_t u8g_dev_st7920_128x64_hw_spi;
lixianyu 0:d8f4c441e032 331 extern u8g_dev_t u8g_dev_st7920_128x64_8bit;
lixianyu 0:d8f4c441e032 332 extern u8g_dev_t u8g_dev_st7920_128x64_custom;
lixianyu 0:d8f4c441e032 333
lixianyu 0:d8f4c441e032 334 extern u8g_dev_t u8g_dev_st7920_128x64_4x_sw_spi;
lixianyu 0:d8f4c441e032 335 extern u8g_dev_t u8g_dev_st7920_128x64_4x_hw_spi;
lixianyu 0:d8f4c441e032 336 extern u8g_dev_t u8g_dev_st7920_128x64_4x_8bit;
lixianyu 0:d8f4c441e032 337 extern u8g_dev_t u8g_dev_st7920_128x64_4x_custom;
lixianyu 0:d8f4c441e032 338
lixianyu 0:d8f4c441e032 339 /* NHD-19232WG */
lixianyu 0:d8f4c441e032 340 extern u8g_dev_t u8g_dev_st7920_192x32_sw_spi;
lixianyu 0:d8f4c441e032 341 extern u8g_dev_t u8g_dev_st7920_192x32_hw_spi;
lixianyu 0:d8f4c441e032 342 extern u8g_dev_t u8g_dev_st7920_192x32_8bit;
lixianyu 0:d8f4c441e032 343
lixianyu 0:d8f4c441e032 344 extern u8g_dev_t u8g_dev_st7920_192x32_4x_sw_spi;
lixianyu 0:d8f4c441e032 345 extern u8g_dev_t u8g_dev_st7920_192x32_4x_hw_spi;
lixianyu 0:d8f4c441e032 346 extern u8g_dev_t u8g_dev_st7920_192x32_4x_8bit;
lixianyu 0:d8f4c441e032 347
lixianyu 0:d8f4c441e032 348 /* CrystalFontz CFAG20232 */
lixianyu 0:d8f4c441e032 349 extern u8g_dev_t u8g_dev_st7920_202x32_sw_spi;
lixianyu 0:d8f4c441e032 350 extern u8g_dev_t u8g_dev_st7920_202x32_hw_spi;
lixianyu 0:d8f4c441e032 351 extern u8g_dev_t u8g_dev_st7920_202x32_8bit;
lixianyu 0:d8f4c441e032 352
lixianyu 0:d8f4c441e032 353 extern u8g_dev_t u8g_dev_st7920_202x32_4x_sw_spi;
lixianyu 0:d8f4c441e032 354 extern u8g_dev_t u8g_dev_st7920_202x32_4x_hw_spi;
lixianyu 0:d8f4c441e032 355 extern u8g_dev_t u8g_dev_st7920_202x32_4x_8bit;
lixianyu 0:d8f4c441e032 356
lixianyu 0:d8f4c441e032 357 /* LC7981 160x80 display */
lixianyu 0:d8f4c441e032 358 extern u8g_dev_t u8g_dev_lc7981_160x80_8bit;
lixianyu 0:d8f4c441e032 359 /* LC7981 240x64 display */
lixianyu 0:d8f4c441e032 360 extern u8g_dev_t u8g_dev_lc7981_240x64_8bit;
lixianyu 0:d8f4c441e032 361 /* LC7981 240x128 display */
lixianyu 0:d8f4c441e032 362 extern u8g_dev_t u8g_dev_lc7981_240x128_8bit;
lixianyu 0:d8f4c441e032 363 /* LC7981 320x64 display */
lixianyu 0:d8f4c441e032 364 extern u8g_dev_t u8g_dev_lc7981_320x64_8bit;
lixianyu 0:d8f4c441e032 365
lixianyu 0:d8f4c441e032 366 /* T6963, all t6963 devices have double page (2x) */
lixianyu 0:d8f4c441e032 367 extern u8g_dev_t u8g_dev_t6963_240x128_8bit;
lixianyu 0:d8f4c441e032 368 extern u8g_dev_t u8g_dev_t6963_128x128_8bit;
lixianyu 0:d8f4c441e032 369 extern u8g_dev_t u8g_dev_t6963_240x64_8bit;
lixianyu 0:d8f4c441e032 370 extern u8g_dev_t u8g_dev_t6963_128x64_8bit;
lixianyu 0:d8f4c441e032 371
lixianyu 0:d8f4c441e032 372 /* Display: EA DOGXL160, Size: 160x104 monochrom & gray level */
lixianyu 0:d8f4c441e032 373 extern u8g_dev_t u8g_dev_uc1610_dogxl160_bw_sw_spi;
lixianyu 0:d8f4c441e032 374 extern u8g_dev_t u8g_dev_uc1610_dogxl160_bw_hw_spi;
lixianyu 0:d8f4c441e032 375 extern u8g_dev_t u8g_dev_uc1610_dogxl160_gr_sw_spi;
lixianyu 0:d8f4c441e032 376 extern u8g_dev_t u8g_dev_uc1610_dogxl160_gr_hw_spi;
lixianyu 0:d8f4c441e032 377
lixianyu 0:d8f4c441e032 378 extern u8g_dev_t u8g_dev_uc1610_dogxl160_2x_bw_sw_spi;
lixianyu 0:d8f4c441e032 379 extern u8g_dev_t u8g_dev_uc1610_dogxl160_2x_bw_hw_spi;
lixianyu 0:d8f4c441e032 380 extern u8g_dev_t u8g_dev_uc1610_dogxl160_2x_gr_sw_spi;
lixianyu 0:d8f4c441e032 381 extern u8g_dev_t u8g_dev_uc1610_dogxl160_2x_gr_hw_spi;
lixianyu 0:d8f4c441e032 382
lixianyu 0:d8f4c441e032 383 /* Display: Generic KS0108b, Size: 128x64 monochrom */
lixianyu 0:d8f4c441e032 384 extern u8g_dev_t u8g_dev_ks0108_128x64; /* official Arduino Library interface */
lixianyu 0:d8f4c441e032 385 extern u8g_dev_t u8g_dev_ks0108_128x64_fast; /* faster, but uses private tables from the Arduino Library */
lixianyu 0:d8f4c441e032 386
lixianyu 0:d8f4c441e032 387 /* Nokia 84x48 Display with PCD8544 */
lixianyu 0:d8f4c441e032 388 extern u8g_dev_t u8g_dev_pcd8544_84x48_sw_spi;
lixianyu 0:d8f4c441e032 389 extern u8g_dev_t u8g_dev_pcd8544_84x48_hw_spi;
lixianyu 0:d8f4c441e032 390 extern u8g_dev_t u8g_dev_tls8204_84x48_sw_spi;
lixianyu 0:d8f4c441e032 391
lixianyu 0:d8f4c441e032 392 /* Nokia 96x65 Display with PCF8812 */
lixianyu 0:d8f4c441e032 393 extern u8g_dev_t u8g_dev_pcf8812_96x65_sw_spi;
lixianyu 0:d8f4c441e032 394 extern u8g_dev_t u8g_dev_pcf8812_96x65_hw_spi;
lixianyu 0:d8f4c441e032 395
lixianyu 0:d8f4c441e032 396 /* NHD-2.7-12864UCY3 OLED Display with SSD1325 Controller */
lixianyu 0:d8f4c441e032 397 extern u8g_dev_t u8g_dev_ssd1325_nhd27oled_bw_sw_spi;
lixianyu 0:d8f4c441e032 398 extern u8g_dev_t u8g_dev_ssd1325_nhd27oled_bw_hw_spi;
lixianyu 0:d8f4c441e032 399 extern u8g_dev_t u8g_dev_ssd1325_nhd27oled_bw_parallel;
lixianyu 0:d8f4c441e032 400 extern u8g_dev_t u8g_dev_ssd1325_nhd27oled_gr_sw_spi;
lixianyu 0:d8f4c441e032 401 extern u8g_dev_t u8g_dev_ssd1325_nhd27oled_gr_hw_spi;
lixianyu 0:d8f4c441e032 402
lixianyu 0:d8f4c441e032 403 extern u8g_dev_t u8g_dev_ssd1325_nhd27oled_2x_bw_sw_spi;
lixianyu 0:d8f4c441e032 404 extern u8g_dev_t u8g_dev_ssd1325_nhd27oled_2x_bw_hw_spi;
lixianyu 0:d8f4c441e032 405 extern u8g_dev_t u8g_dev_ssd1325_nhd27oled_2x_bw_parallel;
lixianyu 0:d8f4c441e032 406 extern u8g_dev_t u8g_dev_ssd1325_nhd27oled_2x_gr_sw_spi;
lixianyu 0:d8f4c441e032 407 extern u8g_dev_t u8g_dev_ssd1325_nhd27oled_2x_gr_hw_spi;
lixianyu 0:d8f4c441e032 408
lixianyu 0:d8f4c441e032 409 /* LY120 OLED with SSD1327 Controller (tested with Seeedstudio module) */
lixianyu 0:d8f4c441e032 410 extern u8g_dev_t u8g_dev_ssd1327_96x96_gr_sw_spi;
lixianyu 0:d8f4c441e032 411 extern u8g_dev_t u8g_dev_ssd1327_96x96_gr_hw_spi;
lixianyu 0:d8f4c441e032 412 extern u8g_dev_t u8g_dev_ssd1327_96x96_gr_i2c;
lixianyu 0:d8f4c441e032 413
lixianyu 0:d8f4c441e032 414 extern u8g_dev_t u8g_dev_ssd1327_96x96_2x_gr_sw_spi;
lixianyu 0:d8f4c441e032 415 extern u8g_dev_t u8g_dev_ssd1327_96x96_2x_gr_hw_spi;
lixianyu 0:d8f4c441e032 416 extern u8g_dev_t u8g_dev_ssd1327_96x96_2x_gr_i2c;
lixianyu 0:d8f4c441e032 417
lixianyu 0:d8f4c441e032 418 /* NHD-3.12-25664 OLED Display with SSD1322 Controller */
lixianyu 0:d8f4c441e032 419 extern u8g_dev_t u8g_dev_ssd1322_nhd31oled_bw_sw_spi;
lixianyu 0:d8f4c441e032 420 extern u8g_dev_t u8g_dev_ssd1322_nhd31oled_bw_hw_spi;
lixianyu 0:d8f4c441e032 421 extern u8g_dev_t u8g_dev_ssd1322_nhd31oled_bw_parallel;
lixianyu 0:d8f4c441e032 422 extern u8g_dev_t u8g_dev_ssd1322_nhd31oled_2x_bw_sw_spi;
lixianyu 0:d8f4c441e032 423 extern u8g_dev_t u8g_dev_ssd1322_nhd31oled_2x_bw_hw_spi;
lixianyu 0:d8f4c441e032 424
lixianyu 0:d8f4c441e032 425 extern u8g_dev_t u8g_dev_ssd1322_nhd31oled_gr_sw_spi;
lixianyu 0:d8f4c441e032 426 extern u8g_dev_t u8g_dev_ssd1322_nhd31oled_gr_hw_spi;
lixianyu 0:d8f4c441e032 427 extern u8g_dev_t u8g_dev_ssd1322_nhd31oled_gr_parallel;
lixianyu 0:d8f4c441e032 428 extern u8g_dev_t u8g_dev_ssd1322_nhd31oled_2x_gr_sw_spi;
lixianyu 0:d8f4c441e032 429 extern u8g_dev_t u8g_dev_ssd1322_nhd31oled_2x_gr_hw_spi;
lixianyu 0:d8f4c441e032 430
lixianyu 0:d8f4c441e032 431 /* OLED 128x64 Display with SSD1306 Controller */
lixianyu 0:d8f4c441e032 432 extern u8g_dev_t u8g_dev_ssd1306_128x64_sw_spi;
lixianyu 0:d8f4c441e032 433 extern u8g_dev_t u8g_dev_ssd1306_128x64_hw_spi;
lixianyu 0:d8f4c441e032 434 extern u8g_dev_t u8g_dev_ssd1306_128x64_i2c;
lixianyu 0:d8f4c441e032 435
lixianyu 0:d8f4c441e032 436 extern u8g_dev_t u8g_dev_ssd1306_adafruit_128x64_sw_spi;
lixianyu 0:d8f4c441e032 437 extern u8g_dev_t u8g_dev_ssd1306_adafruit_128x64_hw_spi;
lixianyu 0:d8f4c441e032 438 extern u8g_dev_t u8g_dev_ssd1306_adafruit_128x64_i2c;
lixianyu 0:d8f4c441e032 439
lixianyu 0:d8f4c441e032 440 extern u8g_dev_t u8g_dev_ssd1306_microduino_128x64_sw_spi;
lixianyu 0:d8f4c441e032 441 extern u8g_dev_t u8g_dev_ssd1306_microduino_128x64_hw_spi;
lixianyu 0:d8f4c441e032 442 extern u8g_dev_t u8g_dev_ssd1306_microduino_128x64_i2c;
lixianyu 0:d8f4c441e032 443
lixianyu 0:d8f4c441e032 444 extern u8g_dev_t u8g_dev_ssd1306_128x64_2x_sw_spi;
lixianyu 0:d8f4c441e032 445 extern u8g_dev_t u8g_dev_ssd1306_128x64_2x_hw_spi;
lixianyu 0:d8f4c441e032 446 extern u8g_dev_t u8g_dev_ssd1306_128x64_2x_i2c;
lixianyu 0:d8f4c441e032 447
lixianyu 0:d8f4c441e032 448 /* OLED 128x64 Display with SH1106 Controller */
lixianyu 0:d8f4c441e032 449 extern u8g_dev_t u8g_dev_sh1106_128x64_sw_spi;
lixianyu 0:d8f4c441e032 450 extern u8g_dev_t u8g_dev_sh1106_128x64_hw_spi;
lixianyu 0:d8f4c441e032 451 extern u8g_dev_t u8g_dev_sh1106_128x64_i2c;
lixianyu 0:d8f4c441e032 452
lixianyu 0:d8f4c441e032 453 extern u8g_dev_t u8g_dev_sh1106_128x64_2x_sw_spi;
lixianyu 0:d8f4c441e032 454 extern u8g_dev_t u8g_dev_sh1106_128x64_2x_hw_spi;
lixianyu 0:d8f4c441e032 455 extern u8g_dev_t u8g_dev_sh1106_128x64_2x_i2c;
lixianyu 0:d8f4c441e032 456
lixianyu 0:d8f4c441e032 457 /* OLED 128x64 Display with SSD1309 Controller */
lixianyu 0:d8f4c441e032 458 extern u8g_dev_t u8g_dev_ssd1309_128x64_sw_spi;
lixianyu 0:d8f4c441e032 459 extern u8g_dev_t u8g_dev_ssd1309_128x64_hw_spi;
lixianyu 0:d8f4c441e032 460 extern u8g_dev_t u8g_dev_ssd1309_128x64_i2c;
lixianyu 0:d8f4c441e032 461
lixianyu 0:d8f4c441e032 462 /* OLED 128x32 Display with SSD1306 Controller */
lixianyu 0:d8f4c441e032 463 extern u8g_dev_t u8g_dev_ssd1306_128x32_sw_spi;
lixianyu 0:d8f4c441e032 464 extern u8g_dev_t u8g_dev_ssd1306_128x32_hw_spi;
lixianyu 0:d8f4c441e032 465 extern u8g_dev_t u8g_dev_ssd1306_128x32_i2c;
lixianyu 0:d8f4c441e032 466
lixianyu 0:d8f4c441e032 467 extern u8g_dev_t u8g_dev_ssd1306_128x32_2x_sw_spi;
lixianyu 0:d8f4c441e032 468 extern u8g_dev_t u8g_dev_ssd1306_128x32_2x_hw_spi;
lixianyu 0:d8f4c441e032 469 extern u8g_dev_t u8g_dev_ssd1306_128x32_2x_i2c;
lixianyu 0:d8f4c441e032 470
lixianyu 0:d8f4c441e032 471 /* OLED 64x48 Display with SSD1306 Controller */
lixianyu 0:d8f4c441e032 472 extern u8g_dev_t u8g_dev_ssd1306_64x48_sw_spi;
lixianyu 0:d8f4c441e032 473 extern u8g_dev_t u8g_dev_ssd1306_64x48_hw_spi;
lixianyu 0:d8f4c441e032 474 extern u8g_dev_t u8g_dev_ssd1306_64x48_i2c;
lixianyu 0:d8f4c441e032 475
lixianyu 0:d8f4c441e032 476 extern u8g_dev_t u8g_dev_ssd1306_64x48_2x_sw_spi;
lixianyu 0:d8f4c441e032 477 extern u8g_dev_t u8g_dev_ssd1306_64x48_2x_hw_spi;
lixianyu 0:d8f4c441e032 478 extern u8g_dev_t u8g_dev_ssd1306_64x48_2x_i2c;
lixianyu 0:d8f4c441e032 479
lixianyu 0:d8f4c441e032 480 /* OLED 60x32 Display with LD7032 Controller */
lixianyu 0:d8f4c441e032 481 extern u8g_dev_t u8g_dev_ld7032_60x32_sw_spi;
lixianyu 0:d8f4c441e032 482 extern u8g_dev_t u8g_dev_ld7032_60x32_hw_spi;
lixianyu 0:d8f4c441e032 483 extern u8g_dev_t u8g_dev_ld7032_60x32_parallel;
lixianyu 0:d8f4c441e032 484
lixianyu 0:d8f4c441e032 485 /* experimental 65K TFT with st7687 controller */
lixianyu 0:d8f4c441e032 486 extern u8g_dev_t u8g_dev_st7687_c144mvgd_sw_spi;
lixianyu 0:d8f4c441e032 487 extern u8g_dev_t u8g_dev_st7687_c144mvgd_8bit;
lixianyu 0:d8f4c441e032 488
lixianyu 0:d8f4c441e032 489 /* SBN1661/SED1520 display with 122x32 */
lixianyu 0:d8f4c441e032 490 extern u8g_dev_t u8g_dev_sbn1661_122x32;
lixianyu 0:d8f4c441e032 491
lixianyu 0:d8f4c441e032 492 /* flip disc matrix */
lixianyu 0:d8f4c441e032 493 extern u8g_dev_t u8g_dev_flipdisc_2x7;
lixianyu 0:d8f4c441e032 494 void u8g_SetFlipDiscCallback(u8g_t *u8g, void (*cb)(uint8_t id, uint8_t page, uint8_t width, uint8_t *row1, uint8_t *row2));
lixianyu 0:d8f4c441e032 495
lixianyu 0:d8f4c441e032 496 /* ILI9325D based TFT */
lixianyu 0:d8f4c441e032 497 extern u8g_dev_t u8g_dev_ili9325d_320x240_8bit;
lixianyu 0:d8f4c441e032 498
lixianyu 0:d8f4c441e032 499
lixianyu 0:d8f4c441e032 500 /* SSD1351 OLED (breakout board from http://www.kickstarter.com/projects/ilsoftltd/colour-oled-breakout-board) */
lixianyu 0:d8f4c441e032 501 extern u8g_dev_t u8g_dev_ssd1351_128x128_332_sw_spi;
lixianyu 0:d8f4c441e032 502 extern u8g_dev_t u8g_dev_ssd1351_128x128_332_hw_spi;
lixianyu 0:d8f4c441e032 503 extern u8g_dev_t u8g_dev_ssd1351_128x128_4x_332_sw_spi;
lixianyu 0:d8f4c441e032 504 extern u8g_dev_t u8g_dev_ssd1351_128x128_4x_332_hw_spi;
lixianyu 0:d8f4c441e032 505 extern u8g_dev_t u8g_dev_ssd1351_128x128_idx_sw_spi;
lixianyu 0:d8f4c441e032 506 extern u8g_dev_t u8g_dev_ssd1351_128x128_idx_hw_spi;
lixianyu 0:d8f4c441e032 507 extern u8g_dev_t u8g_dev_ssd1351_128x128_hicolor_sw_spi;
lixianyu 0:d8f4c441e032 508 extern u8g_dev_t u8g_dev_ssd1351_128x128_hicolor_hw_spi;
lixianyu 0:d8f4c441e032 509 extern u8g_dev_t u8g_dev_ssd1351_128x128_4x_hicolor_sw_spi;
lixianyu 0:d8f4c441e032 510 extern u8g_dev_t u8g_dev_ssd1351_128x128_4x_hicolor_hw_spi;
lixianyu 0:d8f4c441e032 511
lixianyu 0:d8f4c441e032 512 /* SSD1351 OLED (Freetronics, GPIOs set to high level) */
lixianyu 0:d8f4c441e032 513 extern u8g_dev_t u8g_dev_ssd1351_128x128gh_332_sw_spi;
lixianyu 0:d8f4c441e032 514 extern u8g_dev_t u8g_dev_ssd1351_128x128gh_332_hw_spi;
lixianyu 0:d8f4c441e032 515 extern u8g_dev_t u8g_dev_ssd1351_128x128gh_4x_332_sw_spi;
lixianyu 0:d8f4c441e032 516 extern u8g_dev_t u8g_dev_ssd1351_128x128gh_4x_332_hw_spi;
lixianyu 0:d8f4c441e032 517 extern u8g_dev_t u8g_dev_ssd1351_128x128gh_hicolor_sw_spi;
lixianyu 0:d8f4c441e032 518 extern u8g_dev_t u8g_dev_ssd1351_128x128gh_hicolor_hw_spi;
lixianyu 0:d8f4c441e032 519 extern u8g_dev_t u8g_dev_ssd1351_128x128gh_4x_hicolor_sw_spi;
lixianyu 0:d8f4c441e032 520 extern u8g_dev_t u8g_dev_ssd1351_128x128gh_4x_hicolor_hw_spi;
lixianyu 0:d8f4c441e032 521
lixianyu 0:d8f4c441e032 522
lixianyu 0:d8f4c441e032 523 /* SSD1353 OLED Palmtronics */
lixianyu 0:d8f4c441e032 524 extern u8g_dev_t u8g_dev_ssd1353_160x128_332_hw_spi;
lixianyu 0:d8f4c441e032 525 extern u8g_dev_t u8g_dev_ssd1353_160x128_hicolor_hw_spi;
lixianyu 0:d8f4c441e032 526
lixianyu 0:d8f4c441e032 527 /* HT1632 */
lixianyu 0:d8f4c441e032 528 extern u8g_dev_t u8g_dev_ht1632_24x16;
lixianyu 0:d8f4c441e032 529
lixianyu 0:d8f4c441e032 530 /* A2 Micro Printer */
lixianyu 0:d8f4c441e032 531 extern u8g_dev_t u8g_dev_a2_micro_printer_384x240;
lixianyu 0:d8f4c441e032 532 extern u8g_dev_t u8g_dev_a2_micro_printer_192x120_ds;
lixianyu 0:d8f4c441e032 533 extern u8g_dev_t u8g_dev_a2_micro_printer_192x360_ds;
lixianyu 0:d8f4c441e032 534 extern u8g_dev_t u8g_dev_a2_micro_printer_192x720_ds;
lixianyu 0:d8f4c441e032 535
lixianyu 0:d8f4c441e032 536 /* u8g_virtual_screen.c */
lixianyu 0:d8f4c441e032 537 extern u8g_dev_t u8g_dev_vs;
lixianyu 0:d8f4c441e032 538
lixianyu 0:d8f4c441e032 539
lixianyu 0:d8f4c441e032 540 /*===============================================================*/
lixianyu 0:d8f4c441e032 541 /* device messages */
lixianyu 0:d8f4c441e032 542
lixianyu 0:d8f4c441e032 543 struct _u8g_dev_arg_pixel_t {
lixianyu 0:d8f4c441e032 544 u8g_uint_t x, y; /* will be modified */
lixianyu 0:d8f4c441e032 545 uint8_t pixel; /* will be modified, pixel sequence or transparency value */
lixianyu 0:d8f4c441e032 546 uint8_t dir;
lixianyu 0:d8f4c441e032 547 uint8_t color; /* color or index value, red value for true color mode */
lixianyu 0:d8f4c441e032 548 uint8_t hi_color; /* high byte for 64K color mode, low byte is in "color", green value for true color mode */
lixianyu 0:d8f4c441e032 549 uint8_t blue; /* blue value in true color mode */
lixianyu 0:d8f4c441e032 550 };
lixianyu 0:d8f4c441e032 551 /* typedef struct _u8g_dev_arg_pixel_t u8g_dev_arg_pixel_t; */ /* forward decl */
lixianyu 0:d8f4c441e032 552
lixianyu 0:d8f4c441e032 553 /* range for r,g,b: 0..255 */
lixianyu 0:d8f4c441e032 554 #define U8G_GET_HICOLOR_BY_RGB(r,g,b) (((uint16_t)((r)&0x0f8))<<8)|(((uint16_t)((g)&0x0fc))<<3)|(((uint16_t)((b)>>3)))
lixianyu 0:d8f4c441e032 555
lixianyu 0:d8f4c441e032 556 struct _u8g_dev_arg_bbx_t {
lixianyu 0:d8f4c441e032 557 u8g_uint_t x, y, w, h;
lixianyu 0:d8f4c441e032 558 };
lixianyu 0:d8f4c441e032 559 /* typedef struct _u8g_dev_arg_bbx_t u8g_dev_arg_bbx_t; */ /* forward decl */
lixianyu 0:d8f4c441e032 560
lixianyu 0:d8f4c441e032 561 struct _u8g_box_t {
lixianyu 0:d8f4c441e032 562 u8g_uint_t x0, y0, x1, y1;
lixianyu 0:d8f4c441e032 563 };
lixianyu 0:d8f4c441e032 564 /* typedef struct _u8g_box_t u8g_box_t; */ /* forward decl */
lixianyu 0:d8f4c441e032 565
lixianyu 0:d8f4c441e032 566 struct _u8g_dev_arg_irgb_t {
lixianyu 0:d8f4c441e032 567 u8g_uint_t idx, r, g, b; /* index with rgb value */
lixianyu 0:d8f4c441e032 568 };
lixianyu 0:d8f4c441e032 569 /* typedef struct _u8g_dev_arg_irgb_t u8g_dev_arg_irgb_t; */ /* forward decl */
lixianyu 0:d8f4c441e032 570
lixianyu 0:d8f4c441e032 571
lixianyu 0:d8f4c441e032 572
lixianyu 0:d8f4c441e032 573 #define U8G_DEV_MSG_INIT 10
lixianyu 0:d8f4c441e032 574 #define U8G_DEV_MSG_STOP 11
lixianyu 0:d8f4c441e032 575
lixianyu 0:d8f4c441e032 576 /* arg: pointer to uint8_t, contranst value between 0 and 255 */
lixianyu 0:d8f4c441e032 577 #define U8G_DEV_MSG_CONTRAST 15
lixianyu 0:d8f4c441e032 578
lixianyu 0:d8f4c441e032 579 #define U8G_DEV_MSG_SLEEP_ON 16
lixianyu 0:d8f4c441e032 580 #define U8G_DEV_MSG_SLEEP_OFF 17
lixianyu 0:d8f4c441e032 581
lixianyu 0:d8f4c441e032 582 #define U8G_DEV_MSG_PAGE_FIRST 20
lixianyu 0:d8f4c441e032 583 #define U8G_DEV_MSG_PAGE_NEXT 21
lixianyu 0:d8f4c441e032 584
lixianyu 0:d8f4c441e032 585 /* arg: u8g_dev_arg_bbx_t * */
lixianyu 0:d8f4c441e032 586 /* new algorithm with U8G_DEV_MSG_GET_PAGE_BOX makes this msg obsolete */
lixianyu 0:d8f4c441e032 587 /* #define U8G_DEV_MSG_IS_BBX_INTERSECTION 22 */
lixianyu 0:d8f4c441e032 588
lixianyu 0:d8f4c441e032 589 /* arg: u8g_box_t *, fill structure with current page properties */
lixianyu 0:d8f4c441e032 590 #define U8G_DEV_MSG_GET_PAGE_BOX 23
lixianyu 0:d8f4c441e032 591
lixianyu 0:d8f4c441e032 592 /*
lixianyu 0:d8f4c441e032 593 #define U8G_DEV_MSG_PRIMITIVE_START 30
lixianyu 0:d8f4c441e032 594 #define U8G_DEV_MSG_PRIMITIVE_END 31
lixianyu 0:d8f4c441e032 595 */
lixianyu 0:d8f4c441e032 596
lixianyu 0:d8f4c441e032 597 /* arg: u8g_dev_arg_pixel_t * */
lixianyu 0:d8f4c441e032 598 #define U8G_DEV_MSG_SET_TPIXEL 44
lixianyu 0:d8f4c441e032 599 #define U8G_DEV_MSG_SET_4TPIXEL 45
lixianyu 0:d8f4c441e032 600
lixianyu 0:d8f4c441e032 601 #define U8G_DEV_MSG_SET_PIXEL 50
lixianyu 0:d8f4c441e032 602 #define U8G_DEV_MSG_SET_8PIXEL 59
lixianyu 0:d8f4c441e032 603
lixianyu 0:d8f4c441e032 604 #define U8G_DEV_MSG_SET_COLOR_ENTRY 60
lixianyu 0:d8f4c441e032 605
lixianyu 0:d8f4c441e032 606 #define U8G_DEV_MSG_SET_XY_CB 61
lixianyu 0:d8f4c441e032 607
lixianyu 0:d8f4c441e032 608 #define U8G_DEV_MSG_GET_WIDTH 70
lixianyu 0:d8f4c441e032 609 #define U8G_DEV_MSG_GET_HEIGHT 71
lixianyu 0:d8f4c441e032 610 #define U8G_DEV_MSG_GET_MODE 72
lixianyu 0:d8f4c441e032 611
lixianyu 0:d8f4c441e032 612 /*===============================================================*/
lixianyu 0:d8f4c441e032 613 /* device modes */
lixianyu 0:d8f4c441e032 614 #define U8G_MODE(is_index_mode, is_color, bits_per_pixel) (((is_index_mode)<<6) | ((is_color)<<5)|(bits_per_pixel))
lixianyu 0:d8f4c441e032 615
lixianyu 0:d8f4c441e032 616 #define U8G_MODE_UNKNOWN 0
lixianyu 0:d8f4c441e032 617 #define U8G_MODE_BW U8G_MODE(0, 0, 1)
lixianyu 0:d8f4c441e032 618 #define U8G_MODE_GRAY2BIT U8G_MODE(0, 0, 2)
lixianyu 0:d8f4c441e032 619 #define U8G_MODE_R3G3B2 U8G_MODE(0, 1, 8)
lixianyu 0:d8f4c441e032 620 #define U8G_MODE_INDEX U8G_MODE(1, 1, 8)
lixianyu 0:d8f4c441e032 621 /* hicolor is R5G6B5 */
lixianyu 0:d8f4c441e032 622 #define U8G_MODE_HICOLOR U8G_MODE(0, 1, 16)
lixianyu 0:d8f4c441e032 623 /* truecolor */
lixianyu 0:d8f4c441e032 624 #define U8G_MODE_TRUECOLOR U8G_MODE(0, 1, 24)
lixianyu 0:d8f4c441e032 625
lixianyu 0:d8f4c441e032 626
lixianyu 0:d8f4c441e032 627 #define U8G_MODE_GET_BITS_PER_PIXEL(mode) ((mode)&31)
lixianyu 0:d8f4c441e032 628 #define U8G_MODE_IS_COLOR(mode) (((mode)&32)==0?0:1)
lixianyu 0:d8f4c441e032 629 #define U8G_MODE_IS_INDEX_MODE(mode) (((mode)&64)==0?0:1)
lixianyu 0:d8f4c441e032 630
lixianyu 0:d8f4c441e032 631
lixianyu 0:d8f4c441e032 632 /*===============================================================*/
lixianyu 0:d8f4c441e032 633 /* com options */
lixianyu 0:d8f4c441e032 634
lixianyu 0:d8f4c441e032 635 /* uncomment the following line for Atmega HW SPI double speed, issue 89 */
lixianyu 0:d8f4c441e032 636 /* #define U8G_HW_SPI_2X 1 */
lixianyu 0:d8f4c441e032 637
lixianyu 0:d8f4c441e032 638 /* com messages */
lixianyu 0:d8f4c441e032 639
lixianyu 0:d8f4c441e032 640 #define U8G_COM_MSG_STOP 0
lixianyu 0:d8f4c441e032 641 #define U8G_COM_MSG_INIT 1
lixianyu 0:d8f4c441e032 642
lixianyu 0:d8f4c441e032 643 #define U8G_COM_MSG_ADDRESS 2
lixianyu 0:d8f4c441e032 644
lixianyu 0:d8f4c441e032 645 /* CHIP_SELECT argument: number of the chip which needs to be activated, so this is more like high active */
lixianyu 0:d8f4c441e032 646 #define U8G_COM_MSG_CHIP_SELECT 3
lixianyu 0:d8f4c441e032 647
lixianyu 0:d8f4c441e032 648 #define U8G_COM_MSG_RESET 4
lixianyu 0:d8f4c441e032 649
lixianyu 0:d8f4c441e032 650 #define U8G_COM_MSG_WRITE_BYTE 5
lixianyu 0:d8f4c441e032 651 #define U8G_COM_MSG_WRITE_SEQ 6
lixianyu 0:d8f4c441e032 652 #define U8G_COM_MSG_WRITE_SEQ_P 7
lixianyu 0:d8f4c441e032 653
lixianyu 0:d8f4c441e032 654
lixianyu 0:d8f4c441e032 655 /* com driver */
lixianyu 0:d8f4c441e032 656
lixianyu 0:d8f4c441e032 657 uint8_t u8g_com_null_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr); /* u8g_com_null.c */
lixianyu 0:d8f4c441e032 658
lixianyu 0:d8f4c441e032 659 uint8_t u8g_com_std_sw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr); /* requires U8G_WITH_PINLIST */
lixianyu 0:d8f4c441e032 660
lixianyu 0:d8f4c441e032 661
lixianyu 0:d8f4c441e032 662 uint8_t u8g_com_arduino_std_sw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr); /* u8g_com_arduino_std_sw_spi.c */
lixianyu 0:d8f4c441e032 663 uint8_t u8g_com_arduino_hw_usart_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr); /* u8g_com_atmega_hw_usart_spi.c */
lixianyu 0:d8f4c441e032 664 uint8_t u8g_com_arduino_sw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr); /* u8g_com_arduino_sw_spi.c */
lixianyu 0:d8f4c441e032 665 uint8_t u8g_com_arduino_hw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr); /* u8g_com_arduino_hw_spi.c */
lixianyu 0:d8f4c441e032 666 uint8_t u8g_com_arduino_ATtiny85_std_hw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr); /* u8g_arduino_ATTiny85_std_hw_spi.c */
lixianyu 0:d8f4c441e032 667 uint8_t u8g_com_arduino_st7920_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr); /* u8g_com_arduino_st7920_spi.c */
lixianyu 0:d8f4c441e032 668 uint8_t u8g_com_arduino_st7920_custom_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr); /* u8g_com_arduino_st7920_custom.c */
lixianyu 0:d8f4c441e032 669 uint8_t u8g_com_arduino_st7920_hw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr); /* u8g_com_arduino_st7920_hw_spi.c */
lixianyu 0:d8f4c441e032 670 uint8_t u8g_com_arduino_parallel_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr); /* u8g_com_arduino_parallel.c */
lixianyu 0:d8f4c441e032 671 uint8_t u8g_com_arduino_fast_parallel_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr); /* u8g_com_arduino_fast_parallel.c */
lixianyu 0:d8f4c441e032 672 uint8_t u8g_com_arduino_port_d_wr_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr); /* u8g_com_arduino_port_d_wr.c */
lixianyu 0:d8f4c441e032 673 uint8_t u8g_com_arduino_no_en_parallel_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr); /* u8g_com_arduino_no_en_parallel.c */
lixianyu 0:d8f4c441e032 674 uint8_t u8g_com_arduino_ssd_i2c_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr); /* u8g_com_arduino_ssd_i2c.c */
lixianyu 0:d8f4c441e032 675 uint8_t u8g_com_arduino_uc_i2c_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr);
lixianyu 0:d8f4c441e032 676 uint8_t u8g_com_arduino_t6963_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr); /* u8g_com_arduino_t6963.c */
lixianyu 1:0e75de2a5d21 677 uint8_t u8g_com_lpc824_ssd_i2c_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr); //LiXianyu added 2016-06-11
lixianyu 0:d8f4c441e032 678
lixianyu 0:d8f4c441e032 679 uint8_t u8g_com_atmega_hw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr); /* u8g_com_atmega_hw_spi.c */
lixianyu 0:d8f4c441e032 680 uint8_t u8g_com_atmega_sw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr); /* u8g_com_atmega_sw_spi.c */
lixianyu 0:d8f4c441e032 681 uint8_t u8g_com_atmega_st7920_sw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr); /* u8g_com_atmega_st7920_spi.c */
lixianyu 0:d8f4c441e032 682 uint8_t u8g_com_atmega_st7920_hw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr);
lixianyu 0:d8f4c441e032 683 uint8_t u8g_com_atmega_parallel_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr); /* u8g_com_atmega_parallel.c */
lixianyu 0:d8f4c441e032 684
lixianyu 0:d8f4c441e032 685 uint8_t u8g_com_msp430_hw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr); /* u8g_com_msp430_hw_spi.c */
lixianyu 0:d8f4c441e032 686
lixianyu 0:d8f4c441e032 687 uint8_t u8g_com_raspberrypi_hw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr); /* u8g_com_rasperrypi_hw_spi.c */
lixianyu 0:d8f4c441e032 688 uint8_t u8g_com_raspberrypi_ssd_i2c_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr); /* u8g_com_raspberrypi_ssd_i2c.c */
lixianyu 0:d8f4c441e032 689
lixianyu 0:d8f4c441e032 690
lixianyu 0:d8f4c441e032 691 /*
lixianyu 0:d8f4c441e032 692 Translation of system specific com drives to generic com names
lixianyu 0:d8f4c441e032 693 At the moment, the following generic com drives are available
lixianyu 0:d8f4c441e032 694 U8G_COM_HW_SPI
lixianyu 0:d8f4c441e032 695 U8G_COM_SW_SPI
lixianyu 0:d8f4c441e032 696 U8G_COM_PARALLEL
lixianyu 0:d8f4c441e032 697 U8G_COM_T6963
lixianyu 0:d8f4c441e032 698 U8G_COM_FAST_PARALLEL
lixianyu 0:d8f4c441e032 699 U8G_COM_SSD_I2C
lixianyu 0:d8f4c441e032 700 U8G_COM_UC_I2C
lixianyu 0:d8f4c441e032 701
lixianyu 0:d8f4c441e032 702 defined(__18CXX) || defined(__PIC32MX)
lixianyu 0:d8f4c441e032 703
lixianyu 0:d8f4c441e032 704 */
lixianyu 0:d8f4c441e032 705
lixianyu 0:d8f4c441e032 706 /* ==== HW SPI, msp430 ====*/
lixianyu 0:d8f4c441e032 707 #if defined(__MSP430__)
lixianyu 0:d8f4c441e032 708 #define U8G_COM_HW_SPI u8g_com_msp430_hw_spi_fn
lixianyu 0:d8f4c441e032 709 #define U8G_COM_ST7920_HW_SPI u8g_com_null_fn
lixianyu 0:d8f4c441e032 710 #endif
lixianyu 0:d8f4c441e032 711
lixianyu 0:d8f4c441e032 712 /* ==== HW SPI, Raspberry PI ====*/
lixianyu 0:d8f4c441e032 713 #if defined(U8G_RASPBERRY_PI)
lixianyu 0:d8f4c441e032 714 #define U8G_COM_HW_SPI u8g_com_raspberrypi_hw_spi_fn
lixianyu 0:d8f4c441e032 715 #define U8G_COM_SW_SPI u8g_com_null_fn
lixianyu 0:d8f4c441e032 716
lixianyu 0:d8f4c441e032 717 /* I'm sure there must be some mad reason for needing this */
lixianyu 0:d8f4c441e032 718 #define U8G_COM_ST7920_SW_SPI u8g_com_null_fn
lixianyu 0:d8f4c441e032 719 #define U8G_COM_ST7920_HW_SPI u8g_com_null_fn
lixianyu 0:d8f4c441e032 720 #endif
lixianyu 0:d8f4c441e032 721
lixianyu 0:d8f4c441e032 722 /* ==== HW SPI, Arduino ====*/
lixianyu 0:d8f4c441e032 723 #if defined(ARDUINO)
lixianyu 0:d8f4c441e032 724 #if defined(__AVR__)
lixianyu 0:d8f4c441e032 725
lixianyu 0:d8f4c441e032 726 #if defined(__AVR_ATtiny85__)
lixianyu 0:d8f4c441e032 727 #define U8G_COM_HW_SPI u8g_com_arduino_ATtiny85_std_hw_spi_fn
lixianyu 0:d8f4c441e032 728 #define U8G_COM_ST7920_HW_SPI u8g_com_null_fn
lixianyu 0:d8f4c441e032 729 #else
lixianyu 0:d8f4c441e032 730
lixianyu 0:d8f4c441e032 731 #define U8G_COM_HW_SPI u8g_com_arduino_hw_spi_fn
lixianyu 0:d8f4c441e032 732 #if defined(__AVR_ATmega32U4__)
lixianyu 0:d8f4c441e032 733 #define U8G_COM_HW_USART_SPI u8g_com_arduino_hw_usart_spi_fn
lixianyu 0:d8f4c441e032 734 #endif /* __AVR_ATmega32U4__ */
lixianyu 0:d8f4c441e032 735 #define U8G_COM_ST7920_HW_SPI u8g_com_arduino_st7920_hw_spi_fn
lixianyu 0:d8f4c441e032 736 #endif /* __AVR_ATtiny85__ */
lixianyu 0:d8f4c441e032 737
lixianyu 0:d8f4c441e032 738 #elif defined(__18CXX) || defined(__PIC32MX)
lixianyu 0:d8f4c441e032 739 #define U8G_COM_HW_SPI u8g_com_null_fn
lixianyu 0:d8f4c441e032 740 #define U8G_COM_ST7920_HW_SPI u8g_com_null_fn
lixianyu 0:d8f4c441e032 741 #elif defined(__SAM3X8E__) /* Arduino Due */
lixianyu 0:d8f4c441e032 742 #define U8G_COM_HW_SPI u8g_com_arduino_hw_spi_fn
lixianyu 0:d8f4c441e032 743 #define U8G_COM_ST7920_HW_SPI u8g_com_null_fn
lixianyu 0:d8f4c441e032 744 #endif
lixianyu 0:d8f4c441e032 745 #endif
lixianyu 0:d8f4c441e032 746 /* ==== HW SPI, not Arduino ====*/
lixianyu 0:d8f4c441e032 747 #ifndef U8G_COM_HW_SPI
lixianyu 0:d8f4c441e032 748 #if defined(__AVR__)
lixianyu 0:d8f4c441e032 749 #define U8G_COM_HW_SPI u8g_com_atmega_hw_spi_fn
lixianyu 0:d8f4c441e032 750 #define U8G_COM_ST7920_HW_SPI u8g_com_atmega_st7920_hw_spi_fn
lixianyu 0:d8f4c441e032 751 #endif
lixianyu 0:d8f4c441e032 752 #endif
lixianyu 0:d8f4c441e032 753 #ifndef U8G_COM_HW_SPI
lixianyu 0:d8f4c441e032 754 #define U8G_COM_HW_SPI u8g_com_null_fn
lixianyu 0:d8f4c441e032 755 #define U8G_COM_ST7920_HW_SPI u8g_com_null_fn
lixianyu 0:d8f4c441e032 756 #endif
lixianyu 0:d8f4c441e032 757 #ifndef U8G_COM_HW_USART_SPI
lixianyu 0:d8f4c441e032 758 #define U8G_COM_HW_USART_SPI u8g_com_null_fn
lixianyu 0:d8f4c441e032 759 #endif
lixianyu 0:d8f4c441e032 760
lixianyu 0:d8f4c441e032 761
lixianyu 0:d8f4c441e032 762 /* ==== SW SPI, Arduino ====*/
lixianyu 0:d8f4c441e032 763 #if defined(ARDUINO)
lixianyu 0:d8f4c441e032 764 #if defined(__AVR__)
lixianyu 0:d8f4c441e032 765 #define U8G_COM_SW_SPI u8g_com_arduino_sw_spi_fn
lixianyu 0:d8f4c441e032 766 #define U8G_COM_ST7920_SW_SPI u8g_com_arduino_st7920_spi_fn
lixianyu 0:d8f4c441e032 767 #elif defined(__18CXX) || defined(__PIC32MX)
lixianyu 0:d8f4c441e032 768 #define U8G_COM_SW_SPI u8g_com_arduino_sw_spi_fn
lixianyu 0:d8f4c441e032 769 #define U8G_COM_ST7920_SW_SPI u8g_com_arduino_st7920_spi_fn
lixianyu 0:d8f4c441e032 770 #elif defined(__SAM3X8E__) /* Arduino Due */
lixianyu 0:d8f4c441e032 771 //#define U8G_COM_SW_SPI u8g_com_arduino_std_sw_spi_fn
lixianyu 0:d8f4c441e032 772 #define U8G_COM_SW_SPI u8g_com_arduino_sw_spi_fn
lixianyu 0:d8f4c441e032 773 #define U8G_COM_ST7920_SW_SPI u8g_com_arduino_st7920_spi_fn
lixianyu 0:d8f4c441e032 774 #elif defined(__arm__) /* Teensy */
lixianyu 0:d8f4c441e032 775 #define U8G_COM_SW_SPI u8g_com_arduino_std_sw_spi_fn
lixianyu 0:d8f4c441e032 776 #define U8G_COM_ST7920_SW_SPI u8g_com_arduino_st7920_spi_fn
lixianyu 0:d8f4c441e032 777 #endif
lixianyu 0:d8f4c441e032 778 #endif
lixianyu 0:d8f4c441e032 779
lixianyu 0:d8f4c441e032 780 #ifndef U8G_COM_SW_SPI
lixianyu 0:d8f4c441e032 781 /* ==== SW SPI, not Arduino ====*/
lixianyu 0:d8f4c441e032 782
lixianyu 0:d8f4c441e032 783 /* ==== SW SPI, msp430 ====*/
lixianyu 0:d8f4c441e032 784 #if defined(__MSP430__)
lixianyu 0:d8f4c441e032 785 #define U8G_COM_SW_SPI u8g_com_std_sw_spi_fn
lixianyu 0:d8f4c441e032 786 #define U8G_COM_ST7920_SW_SPI u8g_com_null_fn
lixianyu 0:d8f4c441e032 787 #endif
lixianyu 0:d8f4c441e032 788
lixianyu 0:d8f4c441e032 789 #if defined(__AVR__)
lixianyu 0:d8f4c441e032 790 #define U8G_COM_SW_SPI u8g_com_atmega_sw_spi_fn
lixianyu 0:d8f4c441e032 791 #define U8G_COM_ST7920_SW_SPI u8g_com_atmega_st7920_sw_spi_fn
lixianyu 0:d8f4c441e032 792 #endif
lixianyu 0:d8f4c441e032 793 #endif
lixianyu 0:d8f4c441e032 794 #ifndef U8G_COM_SW_SPI
lixianyu 0:d8f4c441e032 795 #define U8G_COM_SW_SPI u8g_com_null_fn
lixianyu 0:d8f4c441e032 796 #define U8G_COM_ST7920_SW_SPI u8g_com_null_fn
lixianyu 0:d8f4c441e032 797 #endif
lixianyu 0:d8f4c441e032 798
lixianyu 0:d8f4c441e032 799 /* ==== Parallel interface, Arduino ====*/
lixianyu 0:d8f4c441e032 800 #if defined(ARDUINO)
lixianyu 0:d8f4c441e032 801 #if defined(__AVR__)
lixianyu 0:d8f4c441e032 802 #define U8G_COM_PARALLEL u8g_com_arduino_parallel_fn
lixianyu 0:d8f4c441e032 803 #define U8G_COM_FAST_PARALLEL u8g_com_arduino_fast_parallel_fn
lixianyu 0:d8f4c441e032 804 #define U8G_COM_T6963 u8g_com_arduino_t6963_fn
lixianyu 0:d8f4c441e032 805 #else /* Arduino Due, Chipkit PIC32 */
lixianyu 0:d8f4c441e032 806 #define U8G_COM_PARALLEL u8g_com_arduino_parallel_fn
lixianyu 0:d8f4c441e032 807 #define U8G_COM_FAST_PARALLEL u8g_com_arduino_parallel_fn
lixianyu 0:d8f4c441e032 808 #define U8G_COM_T6963 u8g_com_null_fn
lixianyu 0:d8f4c441e032 809 #endif
lixianyu 0:d8f4c441e032 810 #endif
lixianyu 0:d8f4c441e032 811 #ifndef U8G_COM_PARALLEL
lixianyu 0:d8f4c441e032 812 #if defined(__AVR__)
lixianyu 0:d8f4c441e032 813 #define U8G_COM_PARALLEL u8g_com_atmega_parallel_fn
lixianyu 0:d8f4c441e032 814 #define U8G_COM_FAST_PARALLEL u8g_com_atmega_parallel_fn
lixianyu 0:d8f4c441e032 815 #define U8G_COM_T6963 u8g_com_null_fn
lixianyu 0:d8f4c441e032 816 #endif
lixianyu 0:d8f4c441e032 817 #endif
lixianyu 0:d8f4c441e032 818 #ifndef U8G_COM_PARALLEL
lixianyu 0:d8f4c441e032 819 #define U8G_COM_PARALLEL u8g_com_null_fn
lixianyu 0:d8f4c441e032 820 #define U8G_COM_FAST_PARALLEL u8g_com_null_fn
lixianyu 0:d8f4c441e032 821 #define U8G_COM_T6963 u8g_com_null_fn
lixianyu 0:d8f4c441e032 822 #endif
lixianyu 0:d8f4c441e032 823
lixianyu 0:d8f4c441e032 824 #if defined(ARDUINO)
lixianyu 0:d8f4c441e032 825 #if defined(__AVR__)
lixianyu 0:d8f4c441e032 826 #define U8G_COM_SSD_I2C u8g_com_arduino_ssd_i2c_fn
lixianyu 0:d8f4c441e032 827 #define U8G_COM_UC_I2C u8g_com_arduino_uc_i2c_fn
lixianyu 0:d8f4c441e032 828 #endif
lixianyu 0:d8f4c441e032 829 #endif
lixianyu 0:d8f4c441e032 830
lixianyu 0:d8f4c441e032 831 #ifndef U8G_COM_SSD_I2C
lixianyu 0:d8f4c441e032 832 #if defined(__AVR__) || defined(__SAM3X8E__)
lixianyu 0:d8f4c441e032 833 /* AVR variant and also DUE can use the arduino version at the moment */
lixianyu 0:d8f4c441e032 834 #define U8G_COM_SSD_I2C u8g_com_arduino_ssd_i2c_fn
lixianyu 0:d8f4c441e032 835 #endif
lixianyu 0:d8f4c441e032 836 #endif
lixianyu 0:d8f4c441e032 837
lixianyu 0:d8f4c441e032 838 #ifndef U8G_COM_SSD_I2C
lixianyu 0:d8f4c441e032 839 #if defined(U8G_RASPBERRY_PI)
lixianyu 0:d8f4c441e032 840 #define U8G_COM_SSD_I2C u8g_com_raspberrypi_ssd_i2c_fn
lixianyu 0:d8f4c441e032 841 #endif
lixianyu 0:d8f4c441e032 842 #endif
lixianyu 0:d8f4c441e032 843
lixianyu 0:d8f4c441e032 844 #ifndef U8G_COM_SSD_I2C
lixianyu 0:d8f4c441e032 845 #define U8G_COM_SSD_I2C u8g_com_null_fn
lixianyu 0:d8f4c441e032 846 #endif
lixianyu 0:d8f4c441e032 847
lixianyu 0:d8f4c441e032 848 #ifndef U8G_COM_UC_I2C
lixianyu 0:d8f4c441e032 849 #if defined(__AVR__)
lixianyu 0:d8f4c441e032 850 /* AVR variant can use the arduino version at the moment */
lixianyu 0:d8f4c441e032 851 #define U8G_COM_UC_I2C u8g_com_arduino_uc_i2c_fn
lixianyu 0:d8f4c441e032 852 #endif
lixianyu 0:d8f4c441e032 853 #endif
lixianyu 0:d8f4c441e032 854 #ifndef U8G_COM_UC_I2C
lixianyu 0:d8f4c441e032 855 #define U8G_COM_UC_I2C u8g_com_null_fn
lixianyu 0:d8f4c441e032 856 #endif
lixianyu 0:d8f4c441e032 857
lixianyu 0:d8f4c441e032 858
lixianyu 0:d8f4c441e032 859 /*===============================================================*/
lixianyu 0:d8f4c441e032 860 /* com api */
lixianyu 0:d8f4c441e032 861
lixianyu 0:d8f4c441e032 862 #define U8G_SPI_CLK_CYCLE_50NS 1
lixianyu 0:d8f4c441e032 863 #define U8G_SPI_CLK_CYCLE_300NS 2
lixianyu 0:d8f4c441e032 864 #define U8G_SPI_CLK_CYCLE_400NS 3
lixianyu 0:d8f4c441e032 865 #define U8G_SPI_CLK_CYCLE_NONE 255
lixianyu 0:d8f4c441e032 866
lixianyu 0:d8f4c441e032 867 uint8_t u8g_InitCom(u8g_t *u8g, u8g_dev_t *dev, uint8_t clk_cycle_time);
lixianyu 0:d8f4c441e032 868 void u8g_StopCom(u8g_t *u8g, u8g_dev_t *dev);
lixianyu 0:d8f4c441e032 869 void u8g_EnableCom(u8g_t *u8g, u8g_dev_t *dev); /* obsolete */
lixianyu 0:d8f4c441e032 870 void u8g_DisableCom(u8g_t *u8g, u8g_dev_t *dev); /* obsolete */
lixianyu 0:d8f4c441e032 871 void u8g_SetChipSelect(u8g_t *u8g, u8g_dev_t *dev, uint8_t cs);
lixianyu 0:d8f4c441e032 872 void u8g_SetResetLow(u8g_t *u8g, u8g_dev_t *dev);
lixianyu 0:d8f4c441e032 873 void u8g_SetResetHigh(u8g_t *u8g, u8g_dev_t *dev);
lixianyu 0:d8f4c441e032 874 void u8g_SetAddress(u8g_t *u8g, u8g_dev_t *dev, uint8_t address);
lixianyu 0:d8f4c441e032 875 uint8_t u8g_WriteByte(u8g_t *u8g, u8g_dev_t *dev, uint8_t val);
lixianyu 0:d8f4c441e032 876 uint8_t u8g_WriteSequence(u8g_t *u8g, u8g_dev_t *dev, uint8_t cnt, uint8_t *seq);
lixianyu 0:d8f4c441e032 877 uint8_t u8g_WriteSequenceP(u8g_t *u8g, u8g_dev_t *dev, uint8_t cnt, const uint8_t *seq);
lixianyu 0:d8f4c441e032 878
lixianyu 0:d8f4c441e032 879
lixianyu 0:d8f4c441e032 880
lixianyu 0:d8f4c441e032 881 #define U8G_ESC_DLY(x) 255, ((x) & 0x7f)
lixianyu 0:d8f4c441e032 882 #define U8G_ESC_CS(x) 255, (0xd0 | ((x)&0x0f))
lixianyu 0:d8f4c441e032 883 #define U8G_ESC_ADR(x) 255, (0xe0 | ((x)&0x0f))
lixianyu 0:d8f4c441e032 884 #define U8G_ESC_RST(x) 255, (0xc0 | ((x)&0x0f))
lixianyu 0:d8f4c441e032 885 #define U8G_ESC_VCC(x) 255, (0xbe | ((x)&0x01))
lixianyu 0:d8f4c441e032 886 #define U8G_ESC_END 255, 254
lixianyu 0:d8f4c441e032 887 #define U8G_ESC_255 255, 255
lixianyu 0:d8f4c441e032 888 //uint8_t u8g_WriteEscSeqP(u8g_t *u8g, u8g_dev_t *dev, u8g_pgm_uint8_t *esc_seq);
lixianyu 0:d8f4c441e032 889 uint8_t u8g_WriteEscSeqP(u8g_t *u8g, u8g_dev_t *dev, const uint8_t *esc_seq);
lixianyu 0:d8f4c441e032 890
lixianyu 0:d8f4c441e032 891
lixianyu 0:d8f4c441e032 892 /* u8g_com_api_16gr.c */
lixianyu 0:d8f4c441e032 893 uint8_t u8g_WriteByteBWTo16GrDevice(u8g_t *u8g, u8g_dev_t *dev, uint8_t b);
lixianyu 0:d8f4c441e032 894 uint8_t u8g_WriteSequenceBWTo16GrDevice(u8g_t *u8g, u8g_dev_t *dev, uint8_t cnt, uint8_t *ptr);
lixianyu 0:d8f4c441e032 895 uint8_t u8g_WriteByte4LTo16GrDevice(u8g_t *u8g, u8g_dev_t *dev, uint8_t b);
lixianyu 0:d8f4c441e032 896 uint8_t u8g_WriteSequence4LTo16GrDevice(u8g_t *u8g, u8g_dev_t *dev, uint8_t cnt, uint8_t *ptr);
lixianyu 0:d8f4c441e032 897
lixianyu 0:d8f4c441e032 898
lixianyu 0:d8f4c441e032 899 /*===============================================================*/
lixianyu 0:d8f4c441e032 900 /* u8g_arduino_common.c */
lixianyu 0:d8f4c441e032 901 void u8g_com_arduino_digital_write(u8g_t *u8g, uint8_t pin_index, uint8_t value);
lixianyu 0:d8f4c441e032 902 void u8g_com_arduino_assign_pin_output_high(u8g_t *u8g);
lixianyu 0:d8f4c441e032 903
lixianyu 0:d8f4c441e032 904 /*===============================================================*/
lixianyu 0:d8f4c441e032 905 /* u8g_com_io.c */
lixianyu 0:d8f4c441e032 906
lixianyu 0:d8f4c441e032 907 /* create internal number from port and pin */
lixianyu 0:d8f4c441e032 908 uint8_t u8g_Pin(uint8_t port, uint8_t bitpos);
lixianyu 0:d8f4c441e032 909 #define PN(port,bitpos) u8g_Pin(port,bitpos)
lixianyu 0:d8f4c441e032 910
lixianyu 0:d8f4c441e032 911 /* low level procedures */
lixianyu 0:d8f4c441e032 912 void u8g_SetPinOutput(uint8_t internal_pin_number);
lixianyu 0:d8f4c441e032 913 void u8g_SetPinLevel(uint8_t internal_pin_number, uint8_t level);
lixianyu 0:d8f4c441e032 914 void u8g_SetPinInput(uint8_t internal_pin_number);
lixianyu 0:d8f4c441e032 915 uint8_t u8g_GetPinLevel(uint8_t internal_pin_number);
lixianyu 0:d8f4c441e032 916
lixianyu 0:d8f4c441e032 917 /* u8g level procedures, expect U8G_PI_xxx macro */
lixianyu 0:d8f4c441e032 918 void u8g_SetPIOutput(u8g_t *u8g, uint8_t pi);
lixianyu 0:d8f4c441e032 919 void u8g_SetPILevel(u8g_t *u8g, uint8_t pi, uint8_t level);
lixianyu 0:d8f4c441e032 920
lixianyu 0:d8f4c441e032 921
lixianyu 0:d8f4c441e032 922 /*===============================================================*/
lixianyu 0:d8f4c441e032 923 /* page */
lixianyu 0:d8f4c441e032 924 struct _u8g_page_t {
lixianyu 0:d8f4c441e032 925 u8g_uint_t page_height;
lixianyu 0:d8f4c441e032 926 u8g_uint_t total_height;
lixianyu 0:d8f4c441e032 927 u8g_uint_t page_y0;
lixianyu 0:d8f4c441e032 928 u8g_uint_t page_y1;
lixianyu 0:d8f4c441e032 929 uint8_t page;
lixianyu 0:d8f4c441e032 930 };
lixianyu 0:d8f4c441e032 931 typedef struct _u8g_page_t u8g_page_t;
lixianyu 0:d8f4c441e032 932
lixianyu 0:d8f4c441e032 933 void u8g_page_First(u8g_page_t *p) U8G_NOINLINE; /* u8g_page.c */
lixianyu 0:d8f4c441e032 934 void u8g_page_Init(u8g_page_t *p, u8g_uint_t page_height, u8g_uint_t total_height ) U8G_NOINLINE; /* u8g_page.c */
lixianyu 0:d8f4c441e032 935 uint8_t u8g_page_Next(u8g_page_t *p) U8G_NOINLINE; /* u8g_page.c */
lixianyu 0:d8f4c441e032 936
lixianyu 0:d8f4c441e032 937 /*===============================================================*/
lixianyu 0:d8f4c441e032 938 /* page buffer (pb) */
lixianyu 0:d8f4c441e032 939
lixianyu 0:d8f4c441e032 940 struct _u8g_pb_t {
lixianyu 0:d8f4c441e032 941 u8g_page_t p;
lixianyu 0:d8f4c441e032 942 u8g_uint_t width; /* pixel width */
lixianyu 0:d8f4c441e032 943 void *buf;
lixianyu 0:d8f4c441e032 944 };
lixianyu 0:d8f4c441e032 945 typedef struct _u8g_pb_t u8g_pb_t;
lixianyu 0:d8f4c441e032 946
lixianyu 0:d8f4c441e032 947
lixianyu 0:d8f4c441e032 948 /* u8g_pb.c */
lixianyu 0:d8f4c441e032 949 void u8g_pb_Clear(u8g_pb_t *b);
lixianyu 0:d8f4c441e032 950 uint8_t u8g_pb_IsYIntersection(u8g_pb_t *pb, u8g_uint_t v0, u8g_uint_t v1);
lixianyu 0:d8f4c441e032 951 uint8_t u8g_pb_IsXIntersection(u8g_pb_t *b, u8g_uint_t v0, u8g_uint_t v1);
lixianyu 0:d8f4c441e032 952 uint8_t u8g_pb_IsIntersection(u8g_pb_t *pb, u8g_dev_arg_bbx_t *bbx);
lixianyu 0:d8f4c441e032 953 void u8g_pb_GetPageBox(u8g_pb_t *pb, u8g_box_t *box);
lixianyu 0:d8f4c441e032 954 uint8_t u8g_pb_Is8PixelVisible(u8g_pb_t *b, u8g_dev_arg_pixel_t *arg_pixel);
lixianyu 0:d8f4c441e032 955 uint8_t u8g_pb_WriteBuffer(u8g_pb_t *b, u8g_t *u8g, u8g_dev_t *dev);
lixianyu 0:d8f4c441e032 956
lixianyu 0:d8f4c441e032 957 /*
lixianyu 0:d8f4c441e032 958 note on __attribute__ ((nocommon))
lixianyu 0:d8f4c441e032 959 AVR scripts often use --gc-sections on the linker to remove unused section.
lixianyu 0:d8f4c441e032 960 This works fine for initialed data and text sections. In principle .bss is also
lixianyu 0:d8f4c441e032 961 handled, but the name##_pb definition is not removed. Reason is, that
lixianyu 0:d8f4c441e032 962 array definitions are placed in the COMMON section, by default
lixianyu 0:d8f4c441e032 963 The attribute "nocommon" removes this automatic assignment to the
lixianyu 0:d8f4c441e032 964 COMMON section and directly puts it into .bss. As a result, if more
lixianyu 0:d8f4c441e032 965 than one buffer is defined in one file, then it will be removed with --gc-sections
lixianyu 0:d8f4c441e032 966
lixianyu 0:d8f4c441e032 967 .. not sure if Arduino IDE uses -fno-common... if yes, then the attribute is
lixianyu 0:d8f4c441e032 968 redundant.
lixianyu 0:d8f4c441e032 969 */
lixianyu 0:d8f4c441e032 970 #define U8G_PB_DEV(name, width, height, page_height, dev_fn, com_fn) \
lixianyu 0:d8f4c441e032 971 uint8_t name##_buf[width] U8G_NOCOMMON ; \
lixianyu 0:d8f4c441e032 972 u8g_pb_t name##_pb = { {page_height, height, 0, 0, 0}, width, name##_buf}; \
lixianyu 0:d8f4c441e032 973 u8g_dev_t name = { dev_fn, &name##_pb, com_fn }
lixianyu 0:d8f4c441e032 974
lixianyu 0:d8f4c441e032 975
lixianyu 0:d8f4c441e032 976 void u8g_pb8v1_Init(u8g_pb_t *b, void *buf, u8g_uint_t width) U8G_NOINLINE;
lixianyu 0:d8f4c441e032 977 void u8g_pb8v1_Clear(u8g_pb_t *b) U8G_NOINLINE;
lixianyu 0:d8f4c441e032 978
lixianyu 0:d8f4c441e032 979 uint8_t u8g_pb8v1_IsYIntersection(u8g_pb_t *b, u8g_uint_t v0, u8g_uint_t v1);
lixianyu 0:d8f4c441e032 980 uint8_t u8g_pb8v1_IsXIntersection(u8g_pb_t *b, u8g_uint_t v0, u8g_uint_t v1);
lixianyu 0:d8f4c441e032 981 uint8_t u8g_pb8v1_WriteBuffer(u8g_pb_t *b, u8g_t *u8g, u8g_dev_t *dev);
lixianyu 0:d8f4c441e032 982
lixianyu 0:d8f4c441e032 983 uint8_t u8g_dev_pb8v1_base_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg);
lixianyu 0:d8f4c441e032 984
lixianyu 0:d8f4c441e032 985 /* u8g_pb16v1.c */
lixianyu 0:d8f4c441e032 986 uint8_t u8g_dev_pb16v1_base_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg);
lixianyu 0:d8f4c441e032 987
lixianyu 0:d8f4c441e032 988 /* u8g_pb14v1.c */
lixianyu 0:d8f4c441e032 989 uint8_t u8g_dev_pb14v1_base_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg);
lixianyu 0:d8f4c441e032 990
lixianyu 0:d8f4c441e032 991 /* u8g_pb8v2.c */
lixianyu 0:d8f4c441e032 992 uint8_t u8g_dev_pb8v2_base_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg);
lixianyu 0:d8f4c441e032 993
lixianyu 0:d8f4c441e032 994 /* u8g_pb16v2.c (double memory of pb8v2) */
lixianyu 0:d8f4c441e032 995 uint8_t u8g_dev_pb16v2_base_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg);
lixianyu 0:d8f4c441e032 996
lixianyu 0:d8f4c441e032 997
lixianyu 0:d8f4c441e032 998 /* u8g_pb8h1.c */
lixianyu 0:d8f4c441e032 999 uint8_t u8g_dev_pb8h1_base_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg);
lixianyu 0:d8f4c441e032 1000
lixianyu 0:d8f4c441e032 1001 /* u8g_pb16h1.c */
lixianyu 0:d8f4c441e032 1002 uint8_t u8g_dev_pb16h1_base_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg);
lixianyu 0:d8f4c441e032 1003
lixianyu 0:d8f4c441e032 1004 /* u8g_pb32h1.c */
lixianyu 0:d8f4c441e032 1005 uint8_t u8g_dev_pb32h1_base_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg);
lixianyu 0:d8f4c441e032 1006
lixianyu 0:d8f4c441e032 1007
lixianyu 0:d8f4c441e032 1008 /* u8g_pb8h2.c 8 pixel rows, byte has horzontal orientation */
lixianyu 0:d8f4c441e032 1009 uint8_t u8g_dev_pb8h2_base_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg);
lixianyu 0:d8f4c441e032 1010
lixianyu 0:d8f4c441e032 1011 /* u8g_pb16h2.c */
lixianyu 0:d8f4c441e032 1012 uint8_t u8g_dev_pb16h2_base_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg);
lixianyu 0:d8f4c441e032 1013
lixianyu 0:d8f4c441e032 1014
lixianyu 0:d8f4c441e032 1015
lixianyu 0:d8f4c441e032 1016 /* u8g_pb8h1f.c */
lixianyu 0:d8f4c441e032 1017 uint8_t u8g_dev_pb8h1f_base_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg);
lixianyu 0:d8f4c441e032 1018
lixianyu 0:d8f4c441e032 1019 /* u8g_pb8h8.c */
lixianyu 0:d8f4c441e032 1020 uint8_t u8g_dev_pb8h8_base_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg);
lixianyu 0:d8f4c441e032 1021
lixianyu 0:d8f4c441e032 1022 /* u8g_pbxh16.c */
lixianyu 0:d8f4c441e032 1023 uint8_t u8g_dev_pbxh16_base_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg);
lixianyu 0:d8f4c441e032 1024
lixianyu 0:d8f4c441e032 1025 /* u8g_pbxh24.c */
lixianyu 0:d8f4c441e032 1026 uint8_t u8g_dev_pbxh24_base_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg);
lixianyu 0:d8f4c441e032 1027
lixianyu 0:d8f4c441e032 1028
lixianyu 0:d8f4c441e032 1029 /*===============================================================*/
lixianyu 0:d8f4c441e032 1030 /* u8g_ll_api.c */
lixianyu 0:d8f4c441e032 1031
lixianyu 0:d8f4c441e032 1032 /* cursor draw callback */
lixianyu 0:d8f4c441e032 1033 typedef void (*u8g_draw_cursor_fn)(u8g_t *u8g);
lixianyu 0:d8f4c441e032 1034
lixianyu 0:d8f4c441e032 1035 /* vertical reference point calculation callback */
lixianyu 0:d8f4c441e032 1036 typedef u8g_uint_t (*u8g_font_calc_vref_fnptr)(u8g_t *u8g);
lixianyu 0:d8f4c441e032 1037
lixianyu 0:d8f4c441e032 1038 /* state backup and restore procedure */
lixianyu 0:d8f4c441e032 1039 typedef void (*u8g_state_cb)(uint8_t msg);
lixianyu 0:d8f4c441e032 1040
lixianyu 0:d8f4c441e032 1041
lixianyu 0:d8f4c441e032 1042 /* PI = Pin Index */
lixianyu 0:d8f4c441e032 1043
lixianyu 0:d8f4c441e032 1044 /* reset pin, usually optional */
lixianyu 0:d8f4c441e032 1045 #define U8G_PI_RESET 0
lixianyu 0:d8f4c441e032 1046
lixianyu 0:d8f4c441e032 1047 /* address / data or instruction */
lixianyu 0:d8f4c441e032 1048 #define U8G_PI_A0 1
lixianyu 0:d8f4c441e032 1049 #define U8G_PI_DI 1
lixianyu 0:d8f4c441e032 1050
lixianyu 0:d8f4c441e032 1051 /* chip select line */
lixianyu 0:d8f4c441e032 1052 #define U8G_PI_CS 2
lixianyu 0:d8f4c441e032 1053 #define U8G_PI_CS1 2
lixianyu 0:d8f4c441e032 1054 #define U8G_PI_CS2 3
lixianyu 0:d8f4c441e032 1055 /* Feb 2013: A0 state moved from 7 to 3 for t6963 controller*/
lixianyu 0:d8f4c441e032 1056 #define U8G_PI_A0_STATE 3
lixianyu 0:d8f4c441e032 1057
lixianyu 0:d8f4c441e032 1058 /* enable / clock signal */
lixianyu 0:d8f4c441e032 1059 #define U8G_PI_EN 4
lixianyu 0:d8f4c441e032 1060 #define U8G_PI_CS_STATE 4
lixianyu 0:d8f4c441e032 1061 #define U8G_PI_SCK 4
lixianyu 0:d8f4c441e032 1062 #define U8G_PI_SCL 4
lixianyu 0:d8f4c441e032 1063 #define U8G_PI_RD 4
lixianyu 0:d8f4c441e032 1064
lixianyu 0:d8f4c441e032 1065
lixianyu 0:d8f4c441e032 1066 /* data pins, shared with SPI and I2C pins */
lixianyu 0:d8f4c441e032 1067 #define U8G_PI_D0 5
lixianyu 0:d8f4c441e032 1068 #define U8G_PI_MOSI 5
lixianyu 0:d8f4c441e032 1069 #define U8G_PI_SDA 5
lixianyu 0:d8f4c441e032 1070 #define U8G_PI_D1 6
lixianyu 0:d8f4c441e032 1071 #define U8G_PI_MISO 6
lixianyu 0:d8f4c441e032 1072 #define U8G_PI_D2 7
lixianyu 0:d8f4c441e032 1073 #define U8G_PI_D3 8
lixianyu 0:d8f4c441e032 1074 #define U8G_PI_SET_A0 8
lixianyu 0:d8f4c441e032 1075 #define U8G_PI_D4 9
lixianyu 0:d8f4c441e032 1076 #define U8G_PI_D5 10
lixianyu 0:d8f4c441e032 1077 #define U8G_PI_I2C_OPTION 11
lixianyu 0:d8f4c441e032 1078 #define U8G_PI_D6 11
lixianyu 0:d8f4c441e032 1079 #define U8G_PI_D7 12
lixianyu 0:d8f4c441e032 1080
lixianyu 0:d8f4c441e032 1081 /* read/write pin, must be the last pin in the list, this means U8G_PIN_LIST_LEN = U8G_PI_RW + 1*/
lixianyu 0:d8f4c441e032 1082 #define U8G_PI_WR 13
lixianyu 0:d8f4c441e032 1083 #define U8G_PI_RW 13
lixianyu 0:d8f4c441e032 1084
lixianyu 0:d8f4c441e032 1085 #define U8G_PIN_LIST_LEN 14
lixianyu 0:d8f4c441e032 1086
lixianyu 0:d8f4c441e032 1087
lixianyu 0:d8f4c441e032 1088 #define U8G_PIN_DUMMY 254
lixianyu 0:d8f4c441e032 1089 #define U8G_PIN_NONE 255
lixianyu 0:d8f4c441e032 1090
lixianyu 0:d8f4c441e032 1091 #define U8G_FONT_HEIGHT_MODE_TEXT 0
lixianyu 0:d8f4c441e032 1092 #define U8G_FONT_HEIGHT_MODE_XTEXT 1
lixianyu 0:d8f4c441e032 1093 #define U8G_FONT_HEIGHT_MODE_ALL 2
lixianyu 0:d8f4c441e032 1094
lixianyu 0:d8f4c441e032 1095 struct _u8g_t {
lixianyu 0:d8f4c441e032 1096 u8g_uint_t width;
lixianyu 0:d8f4c441e032 1097 u8g_uint_t height;
lixianyu 0:d8f4c441e032 1098
lixianyu 0:d8f4c441e032 1099
lixianyu 0:d8f4c441e032 1100 u8g_dev_t *dev; /* first device in the device chain */
lixianyu 0:d8f4c441e032 1101 const u8g_pgm_uint8_t *font; /* regular font for all text procedures */
lixianyu 0:d8f4c441e032 1102 const u8g_pgm_uint8_t *cursor_font; /* special font for cursor procedures */
lixianyu 0:d8f4c441e032 1103 uint8_t cursor_fg_color, cursor_bg_color;
lixianyu 0:d8f4c441e032 1104 uint8_t cursor_encoding;
lixianyu 0:d8f4c441e032 1105 uint8_t mode; /* display mode, one of U8G_MODE_xxx */
lixianyu 0:d8f4c441e032 1106 u8g_uint_t cursor_x;
lixianyu 0:d8f4c441e032 1107 u8g_uint_t cursor_y;
lixianyu 0:d8f4c441e032 1108 u8g_draw_cursor_fn cursor_fn;
lixianyu 0:d8f4c441e032 1109
lixianyu 0:d8f4c441e032 1110 int8_t glyph_dx;
lixianyu 0:d8f4c441e032 1111 int8_t glyph_x;
lixianyu 0:d8f4c441e032 1112 int8_t glyph_y;
lixianyu 0:d8f4c441e032 1113 uint8_t glyph_width;
lixianyu 0:d8f4c441e032 1114 uint8_t glyph_height;
lixianyu 0:d8f4c441e032 1115
lixianyu 0:d8f4c441e032 1116 u8g_font_calc_vref_fnptr font_calc_vref;
lixianyu 0:d8f4c441e032 1117 uint8_t font_height_mode;
lixianyu 0:d8f4c441e032 1118 int8_t font_ref_ascent;
lixianyu 0:d8f4c441e032 1119 int8_t font_ref_descent;
lixianyu 0:d8f4c441e032 1120 uint8_t font_line_spacing_factor; /* line_spacing = factor * (ascent - descent) / 64 */
lixianyu 0:d8f4c441e032 1121 uint8_t line_spacing;
lixianyu 0:d8f4c441e032 1122
lixianyu 0:d8f4c441e032 1123 u8g_dev_arg_pixel_t arg_pixel;
lixianyu 0:d8f4c441e032 1124 /* uint8_t color_index; */
lixianyu 0:d8f4c441e032 1125
lixianyu 0:d8f4c441e032 1126 #ifdef U8G_WITH_PINLIST
lixianyu 0:d8f4c441e032 1127 uint8_t pin_list[U8G_PIN_LIST_LEN];
lixianyu 0:d8f4c441e032 1128 #endif
lixianyu 0:d8f4c441e032 1129
lixianyu 0:d8f4c441e032 1130 u8g_state_cb state_cb;
lixianyu 0:d8f4c441e032 1131
lixianyu 0:d8f4c441e032 1132 u8g_box_t current_page; /* current box of the visible page */
lixianyu 0:d8f4c441e032 1133
lixianyu 0:d8f4c441e032 1134 };
lixianyu 0:d8f4c441e032 1135
lixianyu 0:d8f4c441e032 1136 #define u8g_GetFontAscent(u8g) ((u8g)->font_ref_ascent)
lixianyu 0:d8f4c441e032 1137 #define u8g_GetFontDescent(u8g) ((u8g)->font_ref_descent)
lixianyu 0:d8f4c441e032 1138 #define u8g_GetFontLineSpacing(u8g) ((u8g)->line_spacing)
lixianyu 0:d8f4c441e032 1139
lixianyu 0:d8f4c441e032 1140 uint8_t u8g_call_dev_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg);
lixianyu 0:d8f4c441e032 1141
lixianyu 0:d8f4c441e032 1142 uint8_t u8g_InitLL(u8g_t *u8g, u8g_dev_t *dev);
lixianyu 0:d8f4c441e032 1143 void u8g_FirstPageLL(u8g_t *u8g, u8g_dev_t *dev);
lixianyu 0:d8f4c441e032 1144 uint8_t u8g_NextPageLL(u8g_t *u8g, u8g_dev_t *dev);
lixianyu 0:d8f4c441e032 1145 uint8_t u8g_SetContrastLL(u8g_t *u8g, u8g_dev_t *dev, uint8_t contrast);
lixianyu 0:d8f4c441e032 1146 void u8g_DrawPixelLL(u8g_t *u8g, u8g_dev_t *dev, u8g_uint_t x, u8g_uint_t y);
lixianyu 0:d8f4c441e032 1147 void u8g_Draw8PixelLL(u8g_t *u8g, u8g_dev_t *dev, u8g_uint_t x, u8g_uint_t y, uint8_t dir, uint8_t pixel);
lixianyu 0:d8f4c441e032 1148 void u8g_Draw4TPixelLL(u8g_t *u8g, u8g_dev_t *dev, u8g_uint_t x, u8g_uint_t y, uint8_t dir, uint8_t pixel);
lixianyu 0:d8f4c441e032 1149 uint8_t u8g_IsBBXIntersectionLL(u8g_t *u8g, u8g_dev_t *dev, u8g_uint_t x, u8g_uint_t y, u8g_uint_t w, u8g_uint_t h); /* obsolete */
lixianyu 0:d8f4c441e032 1150 u8g_uint_t u8g_GetWidthLL(u8g_t *u8g, u8g_dev_t *dev);
lixianyu 0:d8f4c441e032 1151 u8g_uint_t u8g_GetHeightLL(u8g_t *u8g, u8g_dev_t *dev);
lixianyu 0:d8f4c441e032 1152
lixianyu 0:d8f4c441e032 1153 void u8g_UpdateDimension(u8g_t *u8g);
lixianyu 0:d8f4c441e032 1154 uint8_t u8g_Begin(u8g_t *u8g); /* reset device, put it into default state and call u8g_UpdateDimension() */
lixianyu 0:d8f4c441e032 1155 uint8_t u8g_Init(u8g_t *u8g, u8g_dev_t *dev); /* only usefull if the device only as hardcoded ports */
lixianyu 0:d8f4c441e032 1156 uint8_t u8g_InitComFn(u8g_t *u8g, u8g_dev_t *dev, u8g_com_fnptr com_fn); /* Init procedure for anything which is not Arduino or AVR (e.g. ARM, but not Due, which is Arduino) */
lixianyu 0:d8f4c441e032 1157
lixianyu 0:d8f4c441e032 1158 #if defined(U8G_WITH_PINLIST)
lixianyu 0:d8f4c441e032 1159 uint8_t u8g_InitSPI(u8g_t *u8g, u8g_dev_t *dev, uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset);
lixianyu 0:d8f4c441e032 1160 uint8_t u8g_InitHWSPI(u8g_t *u8g, u8g_dev_t *dev, uint8_t cs, uint8_t a0, uint8_t reset);
lixianyu 0:d8f4c441e032 1161 uint8_t u8g_InitI2C(u8g_t *u8g, u8g_dev_t *dev, uint8_t options); /* use U8G_I2C_OPT_NONE as options */
lixianyu 0:d8f4c441e032 1162 uint8_t u8g_Init8BitFixedPort(u8g_t *u8g, u8g_dev_t *dev, uint8_t en, uint8_t cs, uint8_t di, uint8_t rw, uint8_t reset);
lixianyu 0:d8f4c441e032 1163 uint8_t u8g_Init8Bit(u8g_t *u8g, u8g_dev_t *dev, uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7,
lixianyu 0:d8f4c441e032 1164 uint8_t en, uint8_t cs1, uint8_t cs2, uint8_t di, uint8_t rw, uint8_t reset);
lixianyu 0:d8f4c441e032 1165 uint8_t u8g_InitRW8Bit(u8g_t *u8g, u8g_dev_t *dev, uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7,
lixianyu 0:d8f4c441e032 1166 uint8_t cs, uint8_t a0, uint8_t wr, uint8_t rd, uint8_t reset);
lixianyu 0:d8f4c441e032 1167 #endif
lixianyu 0:d8f4c441e032 1168
lixianyu 0:d8f4c441e032 1169 void u8g_FirstPage(u8g_t *u8g);
lixianyu 0:d8f4c441e032 1170 uint8_t u8g_NextPage(u8g_t *u8g);
lixianyu 0:d8f4c441e032 1171 uint8_t u8g_SetContrast(u8g_t *u8g, uint8_t contrast);
lixianyu 0:d8f4c441e032 1172 void u8g_SleepOn(u8g_t *u8g);
lixianyu 0:d8f4c441e032 1173 void u8g_SleepOff(u8g_t *u8g);
lixianyu 0:d8f4c441e032 1174 void u8g_DrawPixel(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y);
lixianyu 0:d8f4c441e032 1175 void u8g_Draw8Pixel(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, uint8_t dir, uint8_t pixel);
lixianyu 0:d8f4c441e032 1176 void u8g_Draw4TPixel(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, uint8_t dir, uint8_t pixel);
lixianyu 0:d8f4c441e032 1177 void u8g_Draw8ColorPixel(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, uint8_t colpixel);
lixianyu 0:d8f4c441e032 1178
lixianyu 0:d8f4c441e032 1179 uint8_t u8g_Stop(u8g_t *u8g);
lixianyu 0:d8f4c441e032 1180 void u8g_SetColorEntry(u8g_t *u8g, uint8_t idx, uint8_t r, uint8_t g, uint8_t b);
lixianyu 0:d8f4c441e032 1181 void u8g_SetColorIndex(u8g_t *u8g, uint8_t idx);
lixianyu 0:d8f4c441e032 1182 void u8g_SetHiColor(u8g_t *u8g, uint16_t rgb);
lixianyu 0:d8f4c441e032 1183 void u8g_SetHiColorByRGB(u8g_t *u8g, uint8_t r, uint8_t g, uint8_t b);
lixianyu 0:d8f4c441e032 1184 void u8g_SetRGB(u8g_t *u8g, uint8_t r, uint8_t g, uint8_t b);
lixianyu 0:d8f4c441e032 1185 uint8_t u8g_GetColorIndex(u8g_t *u8g);
lixianyu 0:d8f4c441e032 1186
lixianyu 0:d8f4c441e032 1187 uint8_t u8g_GetDefaultForegroundColor(u8g_t *u8g);
lixianyu 0:d8f4c441e032 1188 void u8g_SetDefaultForegroundColor(u8g_t *u8g);
lixianyu 0:d8f4c441e032 1189
lixianyu 0:d8f4c441e032 1190 uint8_t u8g_GetDefaultBackgroundColor(u8g_t *u8g);
lixianyu 0:d8f4c441e032 1191 void u8g_SetDefaultBackgroundColor(u8g_t *u8g);
lixianyu 0:d8f4c441e032 1192
lixianyu 0:d8f4c441e032 1193 uint8_t u8g_GetDefaultMidColor(u8g_t *u8g);
lixianyu 0:d8f4c441e032 1194 void u8g_SetDefaultMidColor(u8g_t *u8g);
lixianyu 0:d8f4c441e032 1195
lixianyu 0:d8f4c441e032 1196 #define u8g_GetWidth(u8g) ((u8g)->width)
lixianyu 0:d8f4c441e032 1197 #define u8g_GetHeight(u8g) ((u8g)->height)
lixianyu 0:d8f4c441e032 1198 #define u8g_GetMode(u8g) ((u8g)->mode)
lixianyu 0:d8f4c441e032 1199 /*
lixianyu 0:d8f4c441e032 1200 U8G_MODE_GET_BITS_PER_PIXEL(u8g_GetMode(u8g))
lixianyu 0:d8f4c441e032 1201 U8G_MODE_IS_COLOR(u8g_GetMode(u8g))
lixianyu 0:d8f4c441e032 1202 */
lixianyu 0:d8f4c441e032 1203
lixianyu 0:d8f4c441e032 1204 /* u8g_state.c */
lixianyu 0:d8f4c441e032 1205 #define U8G_STATE_ENV_IDX 0
lixianyu 0:d8f4c441e032 1206 #define U8G_STATE_U8G_IDX 1
lixianyu 0:d8f4c441e032 1207 #define U8G_STATE_RESTORE 0
lixianyu 0:d8f4c441e032 1208 #define U8G_STATE_BACKUP 1
lixianyu 0:d8f4c441e032 1209 #define U8G_STATE_MSG_COMPOSE(cmd,idx) (((cmd)<<1) | (idx))
lixianyu 0:d8f4c441e032 1210
lixianyu 0:d8f4c441e032 1211 #define U8G_STATE_MSG_RESTORE_ENV U8G_STATE_MSG_COMPOSE(U8G_STATE_RESTORE,U8G_STATE_ENV_IDX)
lixianyu 0:d8f4c441e032 1212 #define U8G_STATE_MSG_BACKUP_ENV U8G_STATE_MSG_COMPOSE(U8G_STATE_BACKUP,U8G_STATE_ENV_IDX)
lixianyu 0:d8f4c441e032 1213 #define U8G_STATE_MSG_RESTORE_U8G U8G_STATE_MSG_COMPOSE(U8G_STATE_RESTORE,U8G_STATE_U8G_IDX)
lixianyu 0:d8f4c441e032 1214 #define U8G_STATE_MSG_BACKUP_U8G U8G_STATE_MSG_COMPOSE(U8G_STATE_BACKUP,U8G_STATE_U8G_IDX)
lixianyu 0:d8f4c441e032 1215
lixianyu 0:d8f4c441e032 1216 #define U8G_STATE_MSG_GET_IDX(msg) ((msg)&1)
lixianyu 0:d8f4c441e032 1217 #define U8G_STATE_MSG_IS_BACKUP(msg) ((msg)&2)
lixianyu 0:d8f4c441e032 1218
lixianyu 0:d8f4c441e032 1219
lixianyu 0:d8f4c441e032 1220
lixianyu 0:d8f4c441e032 1221 void u8g_state_dummy_cb(uint8_t msg);
lixianyu 0:d8f4c441e032 1222 void u8g_backup_spi(uint8_t msg); /* backup SPI state controller */
lixianyu 0:d8f4c441e032 1223 /* backward compatible definition */
lixianyu 0:d8f4c441e032 1224 #define u8g_backup_avr_spi u8g_backup_spi
lixianyu 0:d8f4c441e032 1225
lixianyu 0:d8f4c441e032 1226 void u8g_SetHardwareBackup(u8g_t *u8g, u8g_state_cb backup_cb);
lixianyu 0:d8f4c441e032 1227
lixianyu 0:d8f4c441e032 1228 /* u8g_clip.c */
lixianyu 0:d8f4c441e032 1229
lixianyu 0:d8f4c441e032 1230 uint8_t u8g_IsBBXIntersection(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t w, u8g_uint_t h);
lixianyu 0:d8f4c441e032 1231
lixianyu 0:d8f4c441e032 1232
lixianyu 0:d8f4c441e032 1233 /* u8g_rot.c */
lixianyu 0:d8f4c441e032 1234
lixianyu 0:d8f4c441e032 1235 void u8g_UndoRotation(u8g_t *u8g);
lixianyu 0:d8f4c441e032 1236 void u8g_SetRot90(u8g_t *u8g);
lixianyu 0:d8f4c441e032 1237 void u8g_SetRot180(u8g_t *u8g);
lixianyu 0:d8f4c441e032 1238 void u8g_SetRot270(u8g_t *u8g);
lixianyu 0:d8f4c441e032 1239
lixianyu 0:d8f4c441e032 1240 /* u8g_scale.c */
lixianyu 0:d8f4c441e032 1241
lixianyu 0:d8f4c441e032 1242 void u8g_UndoScale(u8g_t *u8g);
lixianyu 0:d8f4c441e032 1243 void u8g_SetScale2x2(u8g_t *u8g);
lixianyu 0:d8f4c441e032 1244
lixianyu 0:d8f4c441e032 1245
lixianyu 0:d8f4c441e032 1246 /* u8g_font.c */
lixianyu 0:d8f4c441e032 1247
lixianyu 0:d8f4c441e032 1248 size_t u8g_font_GetSize(const void *font);
lixianyu 0:d8f4c441e032 1249 uint8_t u8g_font_GetFontStartEncoding(const void *font) U8G_NOINLINE;
lixianyu 0:d8f4c441e032 1250 uint8_t u8g_font_GetFontEndEncoding(const void *font) U8G_NOINLINE;
lixianyu 0:d8f4c441e032 1251
lixianyu 0:d8f4c441e032 1252 void u8g_SetFont(u8g_t *u8g, const u8g_fntpgm_uint8_t *font);
lixianyu 0:d8f4c441e032 1253
lixianyu 0:d8f4c441e032 1254 uint8_t u8g_GetFontBBXWidth(u8g_t *u8g);
lixianyu 0:d8f4c441e032 1255 uint8_t u8g_GetFontBBXHeight(u8g_t *u8g);
lixianyu 0:d8f4c441e032 1256 int8_t u8g_GetFontBBXOffX(u8g_t *u8g);
lixianyu 0:d8f4c441e032 1257 int8_t u8g_GetFontBBXOffY(u8g_t *u8g);
lixianyu 0:d8f4c441e032 1258 uint8_t u8g_GetFontCapitalAHeight(u8g_t *u8g);
lixianyu 0:d8f4c441e032 1259
lixianyu 0:d8f4c441e032 1260 uint8_t u8g_IsGlyph(u8g_t *u8g, uint8_t requested_encoding);
lixianyu 0:d8f4c441e032 1261 int8_t u8g_GetGlyphDeltaX(u8g_t *u8g, uint8_t requested_encoding);
lixianyu 0:d8f4c441e032 1262
lixianyu 0:d8f4c441e032 1263 int8_t u8g_draw_glyph(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, uint8_t encoding); /* used by u8g_cursor.c */
lixianyu 0:d8f4c441e032 1264
lixianyu 0:d8f4c441e032 1265 int8_t u8g_DrawGlyphDir(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, uint8_t dir, uint8_t encoding);
lixianyu 0:d8f4c441e032 1266 int8_t u8g_DrawGlyph(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, uint8_t encoding);
lixianyu 0:d8f4c441e032 1267 int8_t u8g_DrawGlyph90(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, uint8_t encoding);
lixianyu 0:d8f4c441e032 1268 int8_t u8g_DrawGlyph180(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, uint8_t encoding);
lixianyu 0:d8f4c441e032 1269 int8_t u8g_DrawGlyph270(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, uint8_t encoding);
lixianyu 0:d8f4c441e032 1270 int8_t u8g_DrawGlyphFontBBX(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, uint8_t dir, uint8_t encoding);
lixianyu 0:d8f4c441e032 1271
lixianyu 0:d8f4c441e032 1272 u8g_uint_t u8g_DrawStr(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, const char *s);
lixianyu 0:d8f4c441e032 1273 u8g_uint_t u8g_DrawStr90(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, const char *s);
lixianyu 0:d8f4c441e032 1274 u8g_uint_t u8g_DrawStr180(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, const char *s);
lixianyu 0:d8f4c441e032 1275 u8g_uint_t u8g_DrawStr270(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, const char *s);
lixianyu 0:d8f4c441e032 1276
lixianyu 0:d8f4c441e032 1277 u8g_uint_t u8g_DrawStrDir(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, uint8_t dir, const char *s);
lixianyu 0:d8f4c441e032 1278
lixianyu 0:d8f4c441e032 1279
lixianyu 0:d8f4c441e032 1280 u8g_uint_t u8g_DrawStrP(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, const u8g_pgm_uint8_t *s);
lixianyu 0:d8f4c441e032 1281 u8g_uint_t u8g_DrawStr90P(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, const u8g_pgm_uint8_t *s);
lixianyu 0:d8f4c441e032 1282 u8g_uint_t u8g_DrawStr180P(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, const u8g_pgm_uint8_t *s);
lixianyu 0:d8f4c441e032 1283 u8g_uint_t u8g_DrawStr270P(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, const u8g_pgm_uint8_t *s);
lixianyu 0:d8f4c441e032 1284
lixianyu 0:d8f4c441e032 1285
lixianyu 0:d8f4c441e032 1286 void u8g_SetFontRefHeightText(u8g_t *u8g);
lixianyu 0:d8f4c441e032 1287 void u8g_SetFontRefHeightExtendedText(u8g_t *u8g);
lixianyu 0:d8f4c441e032 1288 void u8g_SetFontRefHeightAll(u8g_t *u8g);
lixianyu 0:d8f4c441e032 1289 void u8g_SetFontLineSpacingFactor(u8g_t *u8g, uint8_t factor);
lixianyu 0:d8f4c441e032 1290
lixianyu 0:d8f4c441e032 1291 u8g_uint_t u8g_font_calc_vref_font(u8g_t *u8g);
lixianyu 0:d8f4c441e032 1292 u8g_uint_t u8g_font_calc_vref_bottom(u8g_t *u8g);
lixianyu 0:d8f4c441e032 1293 u8g_uint_t u8g_font_calc_vref_top(u8g_t *u8g);
lixianyu 0:d8f4c441e032 1294 u8g_uint_t u8g_font_calc_vref_center(u8g_t *u8g);
lixianyu 0:d8f4c441e032 1295
lixianyu 0:d8f4c441e032 1296 void u8g_SetFontPosBaseline(u8g_t *u8g);
lixianyu 0:d8f4c441e032 1297 void u8g_SetFontPosBottom(u8g_t *u8g);
lixianyu 0:d8f4c441e032 1298 void u8g_SetFontPosCenter(u8g_t *u8g);
lixianyu 0:d8f4c441e032 1299 void u8g_SetFontPosTop(u8g_t *u8g);
lixianyu 0:d8f4c441e032 1300
lixianyu 0:d8f4c441e032 1301
lixianyu 0:d8f4c441e032 1302 u8g_uint_t u8g_GetStrPixelWidth(u8g_t *u8g, const char *s);
lixianyu 0:d8f4c441e032 1303 u8g_uint_t u8g_GetStrPixelWidthP(u8g_t *u8g, const u8g_pgm_uint8_t *s);
lixianyu 0:d8f4c441e032 1304 int8_t u8g_GetStrX(u8g_t *u8g, const char *s);
lixianyu 0:d8f4c441e032 1305 int8_t u8g_GetStrXP(u8g_t *u8g, const u8g_pgm_uint8_t *s);
lixianyu 0:d8f4c441e032 1306 u8g_uint_t u8g_GetStrWidth(u8g_t *u8g, const char *s) U8G_NOINLINE;
lixianyu 0:d8f4c441e032 1307 u8g_uint_t u8g_GetStrWidthP(u8g_t *u8g, const u8g_pgm_uint8_t *s);
lixianyu 0:d8f4c441e032 1308
lixianyu 0:d8f4c441e032 1309 u8g_uint_t u8g_DrawStrFontBBX(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, uint8_t dir, const char *s);
lixianyu 0:d8f4c441e032 1310
lixianyu 0:d8f4c441e032 1311 void u8g_GetStrMinBox(u8g_t *u8g, const char *s, u8g_uint_t *x, u8g_uint_t *y, u8g_uint_t *width, u8g_uint_t *height);
lixianyu 0:d8f4c441e032 1312 void u8g_GetStrAMinBox(u8g_t *u8g, const char *s, u8g_uint_t *x, u8g_uint_t *y, u8g_uint_t *width, u8g_uint_t *height);
lixianyu 0:d8f4c441e032 1313
lixianyu 0:d8f4c441e032 1314
lixianyu 0:d8f4c441e032 1315 u8g_uint_t u8g_DrawAAStr(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, const char *s);
lixianyu 0:d8f4c441e032 1316
lixianyu 0:d8f4c441e032 1317 /* u8g_rect.c */
lixianyu 0:d8f4c441e032 1318
lixianyu 0:d8f4c441e032 1319 void u8g_draw_box(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t w, u8g_uint_t h) U8G_NOINLINE;
lixianyu 0:d8f4c441e032 1320
lixianyu 0:d8f4c441e032 1321 void u8g_DrawHLine(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t w) U8G_NOINLINE;
lixianyu 0:d8f4c441e032 1322 void u8g_DrawVLine(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t w) U8G_NOINLINE;
lixianyu 0:d8f4c441e032 1323 void u8g_DrawFrame(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t w, u8g_uint_t h) U8G_NOINLINE;
lixianyu 0:d8f4c441e032 1324 void u8g_DrawBox(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t w, u8g_uint_t h) U8G_NOINLINE;
lixianyu 0:d8f4c441e032 1325
lixianyu 0:d8f4c441e032 1326 void u8g_DrawRFrame(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t w, u8g_uint_t h, u8g_uint_t r) U8G_NOINLINE;
lixianyu 0:d8f4c441e032 1327 void u8g_DrawRBox(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t w, u8g_uint_t h, u8g_uint_t r) U8G_NOINLINE;
lixianyu 0:d8f4c441e032 1328
lixianyu 0:d8f4c441e032 1329 /* u8g_bitmap.c */
lixianyu 0:d8f4c441e032 1330
lixianyu 0:d8f4c441e032 1331 void u8g_DrawHBitmap(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t cnt, const uint8_t *bitmap);
lixianyu 0:d8f4c441e032 1332 void u8g_DrawHBitmapP(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t cnt, const u8g_pgm_uint8_t *bitmap);
lixianyu 0:d8f4c441e032 1333 void u8g_DrawBitmap(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t cnt, u8g_uint_t h, const uint8_t *bitmap);
lixianyu 0:d8f4c441e032 1334 void u8g_DrawBitmapP(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t cnt, u8g_uint_t h, const u8g_pgm_uint8_t *bitmap);
lixianyu 0:d8f4c441e032 1335
lixianyu 0:d8f4c441e032 1336 void u8g_DrawXBM(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t w, u8g_uint_t h, const uint8_t *bitmap);
lixianyu 0:d8f4c441e032 1337 void u8g_DrawXBMP(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t w, u8g_uint_t h, const u8g_pgm_uint8_t *bitmap);
lixianyu 0:d8f4c441e032 1338
lixianyu 0:d8f4c441e032 1339
lixianyu 0:d8f4c441e032 1340 /* u8g_line.c */
lixianyu 0:d8f4c441e032 1341 void u8g_DrawLine(u8g_t *u8g, u8g_uint_t x1, u8g_uint_t y1, u8g_uint_t x2, u8g_uint_t y2);
lixianyu 0:d8f4c441e032 1342
lixianyu 0:d8f4c441e032 1343
lixianyu 0:d8f4c441e032 1344 /* u8g_circle.c */
lixianyu 0:d8f4c441e032 1345
lixianyu 0:d8f4c441e032 1346 /* the following, commented code has been rewritten or is not yet finished
lixianyu 0:d8f4c441e032 1347 #define U8G_CIRC_UPPER_RIGHT 0x01
lixianyu 0:d8f4c441e032 1348 #define U8G_CIRC_UPPER_LEFT 0x02
lixianyu 0:d8f4c441e032 1349 #define U8G_CIRC_LOWER_LEFT 0x04
lixianyu 0:d8f4c441e032 1350 #define U8G_CIRC_LOWER_RIGHT 0x08
lixianyu 0:d8f4c441e032 1351 #define U8G_CIRC_ALL (U8G_CIRC_UPPER_RIGHT|U8G_CIRC_UPPER_LEFT|U8G_CIRC_LOWER_RIGHT|U8G_CIRC_LOWER_LEFT)
lixianyu 0:d8f4c441e032 1352 void u8g_DrawEmpCirc(u8g_t *u8g, u8g_uint_t x0, u8g_uint_t y0, u8g_uint_t rad, uint8_t option);
lixianyu 0:d8f4c441e032 1353 void u8g_DrawFillCirc(u8g_t *u8g, u8g_uint_t x0, u8g_uint_t y0, u8g_uint_t rad, uint8_t option);
lixianyu 0:d8f4c441e032 1354 void u8g_DrawEllipseRect(u8g_t *u8g, u8g_uint_t x0, u8g_uint_t y0, u8g_uint_t x1, u8g_uint_t y1);
lixianyu 0:d8f4c441e032 1355 */
lixianyu 0:d8f4c441e032 1356
lixianyu 0:d8f4c441e032 1357 #define U8G_DRAW_UPPER_RIGHT 0x01
lixianyu 0:d8f4c441e032 1358 #define U8G_DRAW_UPPER_LEFT 0x02
lixianyu 0:d8f4c441e032 1359 #define U8G_DRAW_LOWER_LEFT 0x04
lixianyu 0:d8f4c441e032 1360 #define U8G_DRAW_LOWER_RIGHT 0x08
lixianyu 0:d8f4c441e032 1361 #define U8G_DRAW_ALL (U8G_DRAW_UPPER_RIGHT|U8G_DRAW_UPPER_LEFT|U8G_DRAW_LOWER_RIGHT|U8G_DRAW_LOWER_LEFT)
lixianyu 0:d8f4c441e032 1362
lixianyu 0:d8f4c441e032 1363 void u8g_draw_circle(u8g_t *u8g, u8g_uint_t x0, u8g_uint_t y0, u8g_uint_t rad, uint8_t option) U8G_NOINLINE;
lixianyu 0:d8f4c441e032 1364 void u8g_draw_disc(u8g_t *u8g, u8g_uint_t x0, u8g_uint_t y0, u8g_uint_t rad, uint8_t option) U8G_NOINLINE;
lixianyu 0:d8f4c441e032 1365
lixianyu 0:d8f4c441e032 1366 void u8g_DrawCircle(u8g_t *u8g, u8g_uint_t x0, u8g_uint_t y0, u8g_uint_t rad, uint8_t option);
lixianyu 0:d8f4c441e032 1367 void u8g_DrawDisc(u8g_t *u8g, u8g_uint_t x0, u8g_uint_t y0, u8g_uint_t rad, uint8_t option);
lixianyu 0:d8f4c441e032 1368
lixianyu 0:d8f4c441e032 1369 /* u8g_ellipse.c */
lixianyu 0:d8f4c441e032 1370 void u8g_DrawEllipse(u8g_t *u8g, u8g_uint_t x0, u8g_uint_t y0, u8g_uint_t rx, u8g_uint_t ry, uint8_t option);
lixianyu 0:d8f4c441e032 1371 void u8g_DrawFilledEllipse(u8g_t *u8g, u8g_uint_t x0, u8g_uint_t y0, u8g_uint_t rx, u8g_uint_t ry, uint8_t option);
lixianyu 0:d8f4c441e032 1372
lixianyu 0:d8f4c441e032 1373 /* u8g_clip.c */
lixianyu 0:d8f4c441e032 1374 uint8_t u8g_is_box_bbx_intersection(u8g_box_t *box, u8g_dev_arg_bbx_t *bbx);
lixianyu 0:d8f4c441e032 1375
lixianyu 0:d8f4c441e032 1376
lixianyu 0:d8f4c441e032 1377 /* u8g_cursor.c */
lixianyu 0:d8f4c441e032 1378 void u8g_SetCursorFont(u8g_t *u8g, const u8g_pgm_uint8_t *cursor_font);
lixianyu 0:d8f4c441e032 1379 void u8g_SetCursorStyle(u8g_t *u8g, uint8_t encoding);
lixianyu 0:d8f4c441e032 1380 void u8g_SetCursorPos(u8g_t *u8g, u8g_uint_t cursor_x, u8g_uint_t cursor_y);
lixianyu 0:d8f4c441e032 1381 void u8g_SetCursorColor(u8g_t *u8g, uint8_t fg, uint8_t bg);
lixianyu 0:d8f4c441e032 1382 void u8g_EnableCursor(u8g_t *u8g);
lixianyu 0:d8f4c441e032 1383 void u8g_DisableCursor(u8g_t *u8g);
lixianyu 0:d8f4c441e032 1384 void u8g_DrawCursor(u8g_t *u8g);
lixianyu 0:d8f4c441e032 1385
lixianyu 0:d8f4c441e032 1386 /* u8g_polygon.c */
lixianyu 0:d8f4c441e032 1387
lixianyu 0:d8f4c441e032 1388 typedef int16_t pg_word_t;
lixianyu 0:d8f4c441e032 1389
lixianyu 0:d8f4c441e032 1390 #define PG_NOINLINE U8G_NOINLINE
lixianyu 0:d8f4c441e032 1391
lixianyu 0:d8f4c441e032 1392 struct pg_point_struct {
lixianyu 0:d8f4c441e032 1393 pg_word_t x;
lixianyu 0:d8f4c441e032 1394 pg_word_t y;
lixianyu 0:d8f4c441e032 1395 };
lixianyu 0:d8f4c441e032 1396
lixianyu 0:d8f4c441e032 1397 typedef struct _pg_struct pg_struct; /* forward declaration */
lixianyu 0:d8f4c441e032 1398
lixianyu 0:d8f4c441e032 1399 struct pg_edge_struct {
lixianyu 0:d8f4c441e032 1400 pg_word_t x_direction; /* 1, if x2 is greater than x1, -1 otherwise */
lixianyu 0:d8f4c441e032 1401 pg_word_t height;
lixianyu 0:d8f4c441e032 1402 pg_word_t current_x_offset;
lixianyu 0:d8f4c441e032 1403 pg_word_t error_offset;
lixianyu 0:d8f4c441e032 1404
lixianyu 0:d8f4c441e032 1405 /* --- line loop --- */
lixianyu 0:d8f4c441e032 1406 pg_word_t current_y;
lixianyu 0:d8f4c441e032 1407 pg_word_t max_y;
lixianyu 0:d8f4c441e032 1408 pg_word_t current_x;
lixianyu 0:d8f4c441e032 1409 pg_word_t error;
lixianyu 0:d8f4c441e032 1410
lixianyu 0:d8f4c441e032 1411 /* --- outer loop --- */
lixianyu 0:d8f4c441e032 1412 uint8_t (*next_idx_fn)(pg_struct *pg, uint8_t i);
lixianyu 0:d8f4c441e032 1413 uint8_t curr_idx;
lixianyu 0:d8f4c441e032 1414 };
lixianyu 0:d8f4c441e032 1415
lixianyu 0:d8f4c441e032 1416 /* maximum number of points in the polygon */
lixianyu 0:d8f4c441e032 1417 /* can be redefined, but highest possible value is 254 */
lixianyu 0:d8f4c441e032 1418 #define PG_MAX_POINTS 6
lixianyu 0:d8f4c441e032 1419
lixianyu 0:d8f4c441e032 1420 /* index numbers for the pge structures below */
lixianyu 0:d8f4c441e032 1421 #define PG_LEFT 0
lixianyu 0:d8f4c441e032 1422 #define PG_RIGHT 1
lixianyu 0:d8f4c441e032 1423
lixianyu 0:d8f4c441e032 1424
lixianyu 0:d8f4c441e032 1425 struct _pg_struct {
lixianyu 0:d8f4c441e032 1426 struct pg_point_struct list[PG_MAX_POINTS];
lixianyu 0:d8f4c441e032 1427 uint8_t cnt;
lixianyu 0:d8f4c441e032 1428 uint8_t is_min_y_not_flat;
lixianyu 0:d8f4c441e032 1429 pg_word_t total_scan_line_cnt;
lixianyu 0:d8f4c441e032 1430 struct pg_edge_struct pge[2]; /* left and right line draw structures */
lixianyu 0:d8f4c441e032 1431 };
lixianyu 0:d8f4c441e032 1432
lixianyu 0:d8f4c441e032 1433 void pg_ClearPolygonXY(pg_struct *pg);
lixianyu 0:d8f4c441e032 1434 void pg_AddPolygonXY(pg_struct *pg, u8g_t *u8g, int16_t x, int16_t y);
lixianyu 0:d8f4c441e032 1435 void pg_DrawPolygon(pg_struct *pg, u8g_t *u8g);
lixianyu 0:d8f4c441e032 1436 void u8g_ClearPolygonXY(void);
lixianyu 0:d8f4c441e032 1437 void u8g_AddPolygonXY(u8g_t *u8g, int16_t x, int16_t y);
lixianyu 0:d8f4c441e032 1438 void u8g_DrawPolygon(u8g_t *u8g);
lixianyu 0:d8f4c441e032 1439 void u8g_DrawTriangle(u8g_t *u8g, int16_t x0, int16_t y0, int16_t x1, int16_t y1, int16_t x2, int16_t y2);
lixianyu 0:d8f4c441e032 1440
lixianyu 0:d8f4c441e032 1441
lixianyu 0:d8f4c441e032 1442 /*===============================================================*/
lixianyu 0:d8f4c441e032 1443 /* u8g_virtual_screen.c */
lixianyu 0:d8f4c441e032 1444 void u8g_SetVirtualScreenDimension(u8g_t *vs_u8g, u8g_uint_t width, u8g_uint_t height);
lixianyu 0:d8f4c441e032 1445 uint8_t u8g_AddToVirtualScreen(u8g_t *vs_u8g, u8g_uint_t x, u8g_uint_t y, u8g_t *child_u8g);
lixianyu 0:d8f4c441e032 1446
lixianyu 0:d8f4c441e032 1447 /*===============================================================*/
lixianyu 0:d8f4c441e032 1448 void st_Draw(uint8_t fps);
lixianyu 0:d8f4c441e032 1449 void st_Step(uint8_t player_pos, uint8_t is_auto_fire, uint8_t is_fire);
lixianyu 0:d8f4c441e032 1450
lixianyu 0:d8f4c441e032 1451 /*===============================================================*/
lixianyu 0:d8f4c441e032 1452 /* u8g_com_i2c.c */
lixianyu 0:d8f4c441e032 1453
lixianyu 0:d8f4c441e032 1454 /* options for u8g_i2c_init() */
lixianyu 0:d8f4c441e032 1455 #define U8G_I2C_OPT_NONE 0
lixianyu 0:d8f4c441e032 1456 #define U8G_I2C_OPT_NO_ACK 2
lixianyu 0:d8f4c441e032 1457 #define U8G_I2C_OPT_DEV_0 0
lixianyu 0:d8f4c441e032 1458 #define U8G_I2C_OPT_DEV_1 4
lixianyu 0:d8f4c441e032 1459 #define U8G_I2C_OPT_FAST 16
lixianyu 0:d8f4c441e032 1460
lixianyu 0:d8f4c441e032 1461 /* retrun values from u8g_twi_get_error() */
lixianyu 0:d8f4c441e032 1462 #define U8G_I2C_ERR_NONE 0x00
lixianyu 0:d8f4c441e032 1463 /* the following values are bit masks */
lixianyu 0:d8f4c441e032 1464 #define U8G_I2C_ERR_TIMEOUT 0x01
lixianyu 0:d8f4c441e032 1465 #define U8G_I2C_ERR_BUS 0x02
lixianyu 0:d8f4c441e032 1466
lixianyu 0:d8f4c441e032 1467 void u8g_i2c_clear_error(void) U8G_NOINLINE;
lixianyu 0:d8f4c441e032 1468 uint8_t u8g_i2c_get_error(void) U8G_NOINLINE;
lixianyu 0:d8f4c441e032 1469 uint8_t u8g_i2c_get_err_pos(void) U8G_NOINLINE;
lixianyu 0:d8f4c441e032 1470 void u8g_i2c_init(uint8_t options) U8G_NOINLINE; /* use U8G_I2C_OPT_NONE as options */
lixianyu 0:d8f4c441e032 1471 uint8_t u8g_i2c_wait(uint8_t mask, uint8_t pos) U8G_NOINLINE;
lixianyu 0:d8f4c441e032 1472 uint8_t u8g_i2c_start(uint8_t sla) U8G_NOINLINE;
lixianyu 0:d8f4c441e032 1473 uint8_t u8g_i2c_send_byte(uint8_t data) U8G_NOINLINE;
lixianyu 0:d8f4c441e032 1474 uint8_t u8g_i2c_send_mode(uint8_t mode) U8G_NOINLINE;
lixianyu 0:d8f4c441e032 1475 void u8g_i2c_stop(void) U8G_NOINLINE;
lixianyu 0:d8f4c441e032 1476
lixianyu 0:d8f4c441e032 1477
lixianyu 0:d8f4c441e032 1478 /*===============================================================*/
lixianyu 0:d8f4c441e032 1479 /* u8g_u8toa.c */
lixianyu 0:d8f4c441e032 1480 /* v = value, d = number of digits */
lixianyu 0:d8f4c441e032 1481 const char *u8g_u8toa(uint8_t v, uint8_t d);
lixianyu 0:d8f4c441e032 1482
lixianyu 0:d8f4c441e032 1483 /* u8g_u8toa.c */
lixianyu 0:d8f4c441e032 1484 /* v = value, d = number of digits */
lixianyu 0:d8f4c441e032 1485 const char *u8g_u16toa(uint16_t v, uint8_t d);
lixianyu 0:d8f4c441e032 1486
lixianyu 0:d8f4c441e032 1487 /*===============================================================*/
lixianyu 0:d8f4c441e032 1488 /* u8g_delay.c */
lixianyu 0:d8f4c441e032 1489
lixianyu 0:d8f4c441e032 1490 /* delay by the specified number of milliseconds */
lixianyu 0:d8f4c441e032 1491 void u8g_Delay(uint16_t val);
lixianyu 0:d8f4c441e032 1492
lixianyu 0:d8f4c441e032 1493 /* delay by one microsecond */
lixianyu 0:d8f4c441e032 1494 void u8g_MicroDelay(void);
lixianyu 0:d8f4c441e032 1495
lixianyu 0:d8f4c441e032 1496 /* delay by 10 microseconds */
lixianyu 0:d8f4c441e032 1497 void u8g_10MicroDelay(void);
lixianyu 0:d8f4c441e032 1498
lixianyu 0:d8f4c441e032 1499 /*===============================================================*/
lixianyu 0:d8f4c441e032 1500 /* chessengine.c */
lixianyu 0:d8f4c441e032 1501 #define CHESS_KEY_NONE 0
lixianyu 0:d8f4c441e032 1502 #define CHESS_KEY_NEXT 1
lixianyu 0:d8f4c441e032 1503 #define CHESS_KEY_PREV 2
lixianyu 0:d8f4c441e032 1504 #define CHESS_KEY_SELECT 3
lixianyu 0:d8f4c441e032 1505 #define CHESS_KEY_BACK 4
lixianyu 0:d8f4c441e032 1506
lixianyu 0:d8f4c441e032 1507 void chess_Init(u8g_t *u8g, uint8_t empty_body_color);
lixianyu 0:d8f4c441e032 1508 void chess_Draw(void);
lixianyu 0:d8f4c441e032 1509 void chess_Step(uint8_t keycode);
lixianyu 0:d8f4c441e032 1510
lixianyu 0:d8f4c441e032 1511 /*===============================================================*/
lixianyu 0:d8f4c441e032 1512 /* font definitions */
lixianyu 0:d8f4c441e032 1513 extern const u8g_fntpgm_uint8_t u8g_font_m2icon_5[] U8G_FONT_SECTION("u8g_font_m2icon_5");
lixianyu 0:d8f4c441e032 1514 extern const u8g_fntpgm_uint8_t u8g_font_m2icon_7[] U8G_FONT_SECTION("u8g_font_m2icon_7");
lixianyu 0:d8f4c441e032 1515 extern const u8g_fntpgm_uint8_t u8g_font_m2icon_9[] U8G_FONT_SECTION("u8g_font_m2icon_9");
lixianyu 0:d8f4c441e032 1516
lixianyu 0:d8f4c441e032 1517 extern const u8g_fntpgm_uint8_t u8g_font_u8glib_4[] U8G_FONT_SECTION("u8g_font_u8glib_4");
lixianyu 0:d8f4c441e032 1518 extern const u8g_fntpgm_uint8_t u8g_font_u8glib_4r[] U8G_FONT_SECTION("u8g_font_u8glib_4r");
lixianyu 0:d8f4c441e032 1519
lixianyu 0:d8f4c441e032 1520
lixianyu 0:d8f4c441e032 1521 extern const u8g_fntpgm_uint8_t u8g_font_6x12_75r[] U8G_FONT_SECTION("u8g_font_6x12_75r");
lixianyu 0:d8f4c441e032 1522 extern const u8g_fntpgm_uint8_t u8g_font_6x13_75r[] U8G_FONT_SECTION("u8g_font_6x13_75r");
lixianyu 0:d8f4c441e032 1523 extern const u8g_fntpgm_uint8_t u8g_font_7x13_75r[] U8G_FONT_SECTION("u8g_font_7x13_75r");
lixianyu 0:d8f4c441e032 1524 extern const u8g_fntpgm_uint8_t u8g_font_8x13_75r[] U8G_FONT_SECTION("u8g_font_8x13_75r");
lixianyu 0:d8f4c441e032 1525 extern const u8g_fntpgm_uint8_t u8g_font_9x15_75r[] U8G_FONT_SECTION("u8g_font_9x15_75r");
lixianyu 0:d8f4c441e032 1526 extern const u8g_fntpgm_uint8_t u8g_font_9x18_75r[] U8G_FONT_SECTION("u8g_font_9x18_75r");
lixianyu 0:d8f4c441e032 1527 extern const u8g_fntpgm_uint8_t u8g_font_cu12_75r[] U8G_FONT_SECTION("u8g_font_cu12_75r");
lixianyu 0:d8f4c441e032 1528 extern const u8g_fntpgm_uint8_t u8g_font_unifont_75r[] U8G_FONT_SECTION("u8g_font_unifont_75r");
lixianyu 0:d8f4c441e032 1529 extern const u8g_fntpgm_uint8_t u8g_font_10x20_75r[] U8G_FONT_SECTION("u8g_font_10x20_75r");
lixianyu 0:d8f4c441e032 1530
lixianyu 0:d8f4c441e032 1531 extern const u8g_fntpgm_uint8_t u8g_font_10x20_67_75[] U8G_FONT_SECTION("u8g_font_10x20_67_75");
lixianyu 0:d8f4c441e032 1532 extern const u8g_fntpgm_uint8_t u8g_font_10x20_78_79[] U8G_FONT_SECTION("u8g_font_10x20_78_79");
lixianyu 0:d8f4c441e032 1533 extern const u8g_fntpgm_uint8_t u8g_font_10x20[] U8G_FONT_SECTION("u8g_font_10x20");
lixianyu 0:d8f4c441e032 1534 extern const u8g_fntpgm_uint8_t u8g_font_10x20r[] U8G_FONT_SECTION("u8g_font_10x20r");
lixianyu 0:d8f4c441e032 1535 extern const u8g_fntpgm_uint8_t u8g_font_4x6[] U8G_FONT_SECTION("u8g_font_4x6");
lixianyu 0:d8f4c441e032 1536 extern const u8g_fntpgm_uint8_t u8g_font_4x6r[] U8G_FONT_SECTION("u8g_font_4x6r");
lixianyu 0:d8f4c441e032 1537 //extern const u8g_fntpgm_uint8_t u8g_font_4x6n[] U8G_FONT_SECTION("u8g_font_4x6n");
lixianyu 0:d8f4c441e032 1538 extern const u8g_fntpgm_uint8_t u8g_font_5x7[] U8G_FONT_SECTION("u8g_font_5x7");
lixianyu 0:d8f4c441e032 1539 extern const u8g_fntpgm_uint8_t u8g_font_5x7r[] U8G_FONT_SECTION("u8g_font_5x7r");
lixianyu 0:d8f4c441e032 1540 extern const u8g_fntpgm_uint8_t u8g_font_5x8[] U8G_FONT_SECTION("u8g_font_5x8");
lixianyu 0:d8f4c441e032 1541 extern const u8g_fntpgm_uint8_t u8g_font_5x8r[] U8G_FONT_SECTION("u8g_font_5x8r");
lixianyu 0:d8f4c441e032 1542 extern const u8g_fntpgm_uint8_t u8g_font_6x10[] U8G_FONT_SECTION("u8g_font_6x10");
lixianyu 0:d8f4c441e032 1543 extern const u8g_fntpgm_uint8_t u8g_font_6x10r[] U8G_FONT_SECTION("u8g_font_6x10r");
lixianyu 0:d8f4c441e032 1544 extern const u8g_fntpgm_uint8_t u8g_font_6x12_67_75[] U8G_FONT_SECTION("u8g_font_6x12_67_75");
lixianyu 0:d8f4c441e032 1545 extern const u8g_fntpgm_uint8_t u8g_font_6x12_78_79[] U8G_FONT_SECTION("u8g_font_6x12_78_79");
lixianyu 0:d8f4c441e032 1546 extern const u8g_fntpgm_uint8_t u8g_font_6x12[] U8G_FONT_SECTION("u8g_font_6x12");
lixianyu 0:d8f4c441e032 1547 extern const u8g_fntpgm_uint8_t u8g_font_6x12r[] U8G_FONT_SECTION("u8g_font_6x12r");
lixianyu 0:d8f4c441e032 1548 extern const u8g_fntpgm_uint8_t u8g_font_6x13_67_75[] U8G_FONT_SECTION("u8g_font_6x13_67_75");
lixianyu 0:d8f4c441e032 1549 extern const u8g_fntpgm_uint8_t u8g_font_6x13_78_79[] U8G_FONT_SECTION("u8g_font_6x13_78_79");
lixianyu 0:d8f4c441e032 1550 extern const u8g_fntpgm_uint8_t u8g_font_6x13B[] U8G_FONT_SECTION("u8g_font_6x13B");
lixianyu 0:d8f4c441e032 1551 extern const u8g_fntpgm_uint8_t u8g_font_6x13Br[] U8G_FONT_SECTION("u8g_font_6x13Br");
lixianyu 0:d8f4c441e032 1552 extern const u8g_fntpgm_uint8_t u8g_font_6x13[] U8G_FONT_SECTION("u8g_font_6x13");
lixianyu 0:d8f4c441e032 1553 extern const u8g_fntpgm_uint8_t u8g_font_6x13r[] U8G_FONT_SECTION("u8g_font_6x13r");
lixianyu 0:d8f4c441e032 1554 extern const u8g_fntpgm_uint8_t u8g_font_6x13O[] U8G_FONT_SECTION("u8g_font_6x13O");
lixianyu 0:d8f4c441e032 1555 extern const u8g_fntpgm_uint8_t u8g_font_6x13Or[] U8G_FONT_SECTION("u8g_font_6x13Or");
lixianyu 0:d8f4c441e032 1556 extern const u8g_fntpgm_uint8_t u8g_font_7x13_67_75[] U8G_FONT_SECTION("u8g_font_7x13_67_75");
lixianyu 0:d8f4c441e032 1557 extern const u8g_fntpgm_uint8_t u8g_font_7x13_78_79[] U8G_FONT_SECTION("u8g_font_7x13_78_79");
lixianyu 0:d8f4c441e032 1558 extern const u8g_fntpgm_uint8_t u8g_font_7x13B[] U8G_FONT_SECTION("u8g_font_7x13B");
lixianyu 0:d8f4c441e032 1559 extern const u8g_fntpgm_uint8_t u8g_font_7x13Br[] U8G_FONT_SECTION("u8g_font_7x13Br");
lixianyu 0:d8f4c441e032 1560 extern const u8g_fntpgm_uint8_t u8g_font_7x13[] U8G_FONT_SECTION("u8g_font_7x13");
lixianyu 0:d8f4c441e032 1561 extern const u8g_fntpgm_uint8_t u8g_font_7x13r[] U8G_FONT_SECTION("u8g_font_7x13r");
lixianyu 0:d8f4c441e032 1562 extern const u8g_fntpgm_uint8_t u8g_font_7x13O[] U8G_FONT_SECTION("u8g_font_7x13O");
lixianyu 0:d8f4c441e032 1563 extern const u8g_fntpgm_uint8_t u8g_font_7x13Or[] U8G_FONT_SECTION("u8g_font_7x13Or");
lixianyu 0:d8f4c441e032 1564 extern const u8g_fntpgm_uint8_t u8g_font_7x14B[] U8G_FONT_SECTION("u8g_font_7x14B");
lixianyu 0:d8f4c441e032 1565 extern const u8g_fntpgm_uint8_t u8g_font_7x14Br[] U8G_FONT_SECTION("u8g_font_7x14Br");
lixianyu 0:d8f4c441e032 1566 extern const u8g_fntpgm_uint8_t u8g_font_7x14[] U8G_FONT_SECTION("u8g_font_7x14");
lixianyu 0:d8f4c441e032 1567 extern const u8g_fntpgm_uint8_t u8g_font_7x14r[] U8G_FONT_SECTION("u8g_font_7x14r");
lixianyu 0:d8f4c441e032 1568 extern const u8g_fntpgm_uint8_t u8g_font_8x13_67_75[] U8G_FONT_SECTION("u8g_font_8x13_67_75");
lixianyu 0:d8f4c441e032 1569 extern const u8g_fntpgm_uint8_t u8g_font_8x13B[] U8G_FONT_SECTION("u8g_font_8x13B");
lixianyu 0:d8f4c441e032 1570 extern const u8g_fntpgm_uint8_t u8g_font_8x13Br[] U8G_FONT_SECTION("u8g_font_8x13Br");
lixianyu 0:d8f4c441e032 1571 extern const u8g_fntpgm_uint8_t u8g_font_8x13[] U8G_FONT_SECTION("u8g_font_8x13");
lixianyu 0:d8f4c441e032 1572 extern const u8g_fntpgm_uint8_t u8g_font_8x13r[] U8G_FONT_SECTION("u8g_font_8x13r");
lixianyu 0:d8f4c441e032 1573 extern const u8g_fntpgm_uint8_t u8g_font_8x13O[] U8G_FONT_SECTION("u8g_font_8x13O");
lixianyu 0:d8f4c441e032 1574 extern const u8g_fntpgm_uint8_t u8g_font_8x13Or[] U8G_FONT_SECTION("u8g_font_8x13Or");
lixianyu 0:d8f4c441e032 1575
lixianyu 0:d8f4c441e032 1576 extern const u8g_fntpgm_uint8_t u8g_font_9x15_67_75[] U8G_FONT_SECTION("u8g_font_9x15_67_75");
lixianyu 0:d8f4c441e032 1577 extern const u8g_fntpgm_uint8_t u8g_font_9x15_78_79[] U8G_FONT_SECTION("u8g_font_9x15_78_79");
lixianyu 0:d8f4c441e032 1578 extern const u8g_fntpgm_uint8_t u8g_font_9x15B[] U8G_FONT_SECTION("u8g_font_9x15B");
lixianyu 0:d8f4c441e032 1579 extern const u8g_fntpgm_uint8_t u8g_font_9x15Br[] U8G_FONT_SECTION("u8g_font_9x15Br");
lixianyu 0:d8f4c441e032 1580 extern const u8g_fntpgm_uint8_t u8g_font_9x15[] U8G_FONT_SECTION("u8g_font_9x15");
lixianyu 0:d8f4c441e032 1581 extern const u8g_fntpgm_uint8_t u8g_font_9x15r[] U8G_FONT_SECTION("u8g_font_9x15r");
lixianyu 0:d8f4c441e032 1582
lixianyu 0:d8f4c441e032 1583 extern const u8g_fntpgm_uint8_t u8g_font_9x18_67_75[] U8G_FONT_SECTION("u8g_font_9x18_67_75");
lixianyu 0:d8f4c441e032 1584 extern const u8g_fntpgm_uint8_t u8g_font_9x18_78_79[] U8G_FONT_SECTION("u8g_font_9x18_78_79");
lixianyu 0:d8f4c441e032 1585 extern const u8g_fntpgm_uint8_t u8g_font_9x18B[] U8G_FONT_SECTION("u8g_font_9x18B");
lixianyu 0:d8f4c441e032 1586 extern const u8g_fntpgm_uint8_t u8g_font_9x18[] U8G_FONT_SECTION("u8g_font_9x18");
lixianyu 0:d8f4c441e032 1587 extern const u8g_fntpgm_uint8_t u8g_font_9x18Br[] U8G_FONT_SECTION("u8g_font_9x18Br");
lixianyu 0:d8f4c441e032 1588 extern const u8g_fntpgm_uint8_t u8g_font_9x18r[] U8G_FONT_SECTION("u8g_font_9x18r");
lixianyu 0:d8f4c441e032 1589
lixianyu 0:d8f4c441e032 1590 extern const u8g_fntpgm_uint8_t u8g_font_cursor[] U8G_FONT_SECTION("u8g_font_cursor");
lixianyu 0:d8f4c441e032 1591 extern const u8g_fntpgm_uint8_t u8g_font_cursorr[] U8G_FONT_SECTION("u8g_font_cursorr");
lixianyu 0:d8f4c441e032 1592 extern const u8g_fntpgm_uint8_t u8g_font_micro[] U8G_FONT_SECTION("u8g_font_micro");
lixianyu 0:d8f4c441e032 1593
lixianyu 0:d8f4c441e032 1594 extern const u8g_fntpgm_uint8_t u8g_font_cu12_67_75[] U8G_FONT_SECTION("u8g_font_cu12_67_75");
lixianyu 0:d8f4c441e032 1595 extern const u8g_fntpgm_uint8_t u8g_font_cu12_78_79[] U8G_FONT_SECTION("u8g_font_cu12_78_79");
lixianyu 0:d8f4c441e032 1596 extern const u8g_fntpgm_uint8_t u8g_font_cu12[] U8G_FONT_SECTION("u8g_font_cu12");
lixianyu 0:d8f4c441e032 1597
lixianyu 0:d8f4c441e032 1598 /*
lixianyu 0:d8f4c441e032 1599 Free-Universal Bold
lixianyu 0:d8f4c441e032 1600 r: Reduced char set (codes 32 - 128)
lixianyu 0:d8f4c441e032 1601 n: Numbers (codes 42 - 57)
lixianyu 0:d8f4c441e032 1602 no char: Full set (codes 32 - 255)
lixianyu 0:d8f4c441e032 1603 */
lixianyu 0:d8f4c441e032 1604
lixianyu 0:d8f4c441e032 1605 extern const u8g_fntpgm_uint8_t u8g_font_fub11[] U8G_FONT_SECTION("u8g_font_fub11");
lixianyu 0:d8f4c441e032 1606 extern const u8g_fntpgm_uint8_t u8g_font_fub11r[] U8G_FONT_SECTION("u8g_font_fub11r");
lixianyu 0:d8f4c441e032 1607 extern const u8g_fntpgm_uint8_t u8g_font_fub11n[] U8G_FONT_SECTION("u8g_font_fub11n");
lixianyu 0:d8f4c441e032 1608 extern const u8g_fntpgm_uint8_t u8g_font_fub14[] U8G_FONT_SECTION("u8g_font_fub14");
lixianyu 0:d8f4c441e032 1609 extern const u8g_fntpgm_uint8_t u8g_font_fub14r[] U8G_FONT_SECTION("u8g_font_fub14r");
lixianyu 0:d8f4c441e032 1610 extern const u8g_fntpgm_uint8_t u8g_font_fub14n[] U8G_FONT_SECTION("u8g_font_fub14n");
lixianyu 0:d8f4c441e032 1611 extern const u8g_fntpgm_uint8_t u8g_font_fub17[] U8G_FONT_SECTION("u8g_font_fub17");
lixianyu 0:d8f4c441e032 1612 extern const u8g_fntpgm_uint8_t u8g_font_fub17r[] U8G_FONT_SECTION("u8g_font_fub17r");
lixianyu 0:d8f4c441e032 1613 extern const u8g_fntpgm_uint8_t u8g_font_fub17n[] U8G_FONT_SECTION("u8g_font_fub17n");
lixianyu 0:d8f4c441e032 1614 extern const u8g_fntpgm_uint8_t u8g_font_fub20[] U8G_FONT_SECTION("u8g_font_fub20");
lixianyu 0:d8f4c441e032 1615 extern const u8g_fntpgm_uint8_t u8g_font_fub20r[] U8G_FONT_SECTION("u8g_font_fub20r");
lixianyu 0:d8f4c441e032 1616 extern const u8g_fntpgm_uint8_t u8g_font_fub20n[] U8G_FONT_SECTION("u8g_font_fub20n");
lixianyu 0:d8f4c441e032 1617 extern const u8g_fntpgm_uint8_t u8g_font_fub25[] U8G_FONT_SECTION("u8g_font_fub25");
lixianyu 0:d8f4c441e032 1618 extern const u8g_fntpgm_uint8_t u8g_font_fub25r[] U8G_FONT_SECTION("u8g_font_fub25r");
lixianyu 0:d8f4c441e032 1619 extern const u8g_fntpgm_uint8_t u8g_font_fub25n[] U8G_FONT_SECTION("u8g_font_fub25n");
lixianyu 0:d8f4c441e032 1620 extern const u8g_fntpgm_uint8_t u8g_font_fub30[] U8G_FONT_SECTION("u8g_font_fub30");
lixianyu 0:d8f4c441e032 1621 extern const u8g_fntpgm_uint8_t u8g_font_fub30r[] U8G_FONT_SECTION("u8g_font_fub30r");
lixianyu 0:d8f4c441e032 1622 extern const u8g_fntpgm_uint8_t u8g_font_fub30n[] U8G_FONT_SECTION("u8g_font_fub30n");
lixianyu 0:d8f4c441e032 1623 extern const u8g_fntpgm_uint8_t u8g_font_fub35n[] U8G_FONT_SECTION("u8g_font_fub35n");
lixianyu 0:d8f4c441e032 1624 extern const u8g_fntpgm_uint8_t u8g_font_fub42n[] U8G_FONT_SECTION("u8g_font_fub42n");
lixianyu 0:d8f4c441e032 1625 extern const u8g_fntpgm_uint8_t u8g_font_fub49n[] U8G_FONT_SECTION("u8g_font_fub49n");
lixianyu 0:d8f4c441e032 1626
lixianyu 0:d8f4c441e032 1627 /*
lixianyu 0:d8f4c441e032 1628 Free-Universal Regular
lixianyu 0:d8f4c441e032 1629 r: Reduced char set (codes 32 - 128)
lixianyu 0:d8f4c441e032 1630 n: Numbers (codes 42 - 57)
lixianyu 0:d8f4c441e032 1631 no char: Full set (codes 32 - 255)
lixianyu 0:d8f4c441e032 1632 */
lixianyu 0:d8f4c441e032 1633
lixianyu 0:d8f4c441e032 1634 extern const u8g_fntpgm_uint8_t u8g_font_fur11[] U8G_FONT_SECTION("u8g_font_fur11");
lixianyu 0:d8f4c441e032 1635 extern const u8g_fntpgm_uint8_t u8g_font_fur11r[] U8G_FONT_SECTION("u8g_font_fur11r");
lixianyu 0:d8f4c441e032 1636 extern const u8g_fntpgm_uint8_t u8g_font_fur11n[] U8G_FONT_SECTION("u8g_font_fur11n");
lixianyu 0:d8f4c441e032 1637 extern const u8g_fntpgm_uint8_t u8g_font_fur14[] U8G_FONT_SECTION("u8g_font_fur14");
lixianyu 0:d8f4c441e032 1638 extern const u8g_fntpgm_uint8_t u8g_font_fur14r[] U8G_FONT_SECTION("u8g_font_fur14r");
lixianyu 0:d8f4c441e032 1639 extern const u8g_fntpgm_uint8_t u8g_font_fur14n[] U8G_FONT_SECTION("u8g_font_fur14n");
lixianyu 0:d8f4c441e032 1640 extern const u8g_fntpgm_uint8_t u8g_font_fur17[] U8G_FONT_SECTION("u8g_font_fur17");
lixianyu 0:d8f4c441e032 1641 extern const u8g_fntpgm_uint8_t u8g_font_fur17r[] U8G_FONT_SECTION("u8g_font_fur17r");
lixianyu 0:d8f4c441e032 1642 extern const u8g_fntpgm_uint8_t u8g_font_fur17n[] U8G_FONT_SECTION("u8g_font_fur17n");
lixianyu 0:d8f4c441e032 1643 extern const u8g_fntpgm_uint8_t u8g_font_fur20[] U8G_FONT_SECTION("u8g_font_fur20");
lixianyu 0:d8f4c441e032 1644 extern const u8g_fntpgm_uint8_t u8g_font_fur20r[] U8G_FONT_SECTION("u8g_font_fur20r");
lixianyu 0:d8f4c441e032 1645 extern const u8g_fntpgm_uint8_t u8g_font_fur20n[] U8G_FONT_SECTION("u8g_font_fur20n");
lixianyu 0:d8f4c441e032 1646 extern const u8g_fntpgm_uint8_t u8g_font_fur25[] U8G_FONT_SECTION("u8g_font_fur25");
lixianyu 0:d8f4c441e032 1647 extern const u8g_fntpgm_uint8_t u8g_font_fur25r[] U8G_FONT_SECTION("u8g_font_fur25r");
lixianyu 0:d8f4c441e032 1648 extern const u8g_fntpgm_uint8_t u8g_font_fur25n[] U8G_FONT_SECTION("u8g_font_fur25n");
lixianyu 0:d8f4c441e032 1649 extern const u8g_fntpgm_uint8_t u8g_font_fur30[] U8G_FONT_SECTION("u8g_font_fur30");
lixianyu 0:d8f4c441e032 1650 extern const u8g_fntpgm_uint8_t u8g_font_fur30r[] U8G_FONT_SECTION("u8g_font_fur30r");
lixianyu 0:d8f4c441e032 1651 extern const u8g_fntpgm_uint8_t u8g_font_fur30n[] U8G_FONT_SECTION("u8g_font_fur30n");
lixianyu 0:d8f4c441e032 1652 extern const u8g_fntpgm_uint8_t u8g_font_fur35n[] U8G_FONT_SECTION("u8g_font_fur35n");
lixianyu 0:d8f4c441e032 1653 extern const u8g_fntpgm_uint8_t u8g_font_fur42n[] U8G_FONT_SECTION("u8g_font_fur42n");
lixianyu 0:d8f4c441e032 1654 extern const u8g_fntpgm_uint8_t u8g_font_fur49n[] U8G_FONT_SECTION("u8g_font_fur49n");
lixianyu 0:d8f4c441e032 1655
lixianyu 0:d8f4c441e032 1656 /*
lixianyu 0:d8f4c441e032 1657 Gentium Bold
lixianyu 0:d8f4c441e032 1658 r: Reduced char set (codes 32 - 128)
lixianyu 0:d8f4c441e032 1659 n: Numbers (codes 42 - 57)
lixianyu 0:d8f4c441e032 1660 no char: Full set (codes 32 - 255)
lixianyu 0:d8f4c441e032 1661 */
lixianyu 0:d8f4c441e032 1662
lixianyu 0:d8f4c441e032 1663 extern const u8g_fntpgm_uint8_t u8g_font_gdb11[] U8G_FONT_SECTION("u8g_font_gdb11");
lixianyu 0:d8f4c441e032 1664 extern const u8g_fntpgm_uint8_t u8g_font_gdb12[] U8G_FONT_SECTION("u8g_font_gdb12");
lixianyu 0:d8f4c441e032 1665 extern const u8g_fntpgm_uint8_t u8g_font_gdb14[] U8G_FONT_SECTION("u8g_font_gdb14");
lixianyu 0:d8f4c441e032 1666 extern const u8g_fntpgm_uint8_t u8g_font_gdb17[] U8G_FONT_SECTION("u8g_font_gdb17");
lixianyu 0:d8f4c441e032 1667 extern const u8g_fntpgm_uint8_t u8g_font_gdb20[] U8G_FONT_SECTION("u8g_font_gdb20");
lixianyu 0:d8f4c441e032 1668 extern const u8g_fntpgm_uint8_t u8g_font_gdb25[] U8G_FONT_SECTION("u8g_font_gdb25");
lixianyu 0:d8f4c441e032 1669 extern const u8g_fntpgm_uint8_t u8g_font_gdb30[] U8G_FONT_SECTION("u8g_font_gdb30");
lixianyu 0:d8f4c441e032 1670
lixianyu 0:d8f4c441e032 1671 extern const u8g_fntpgm_uint8_t u8g_font_gdb11r[] U8G_FONT_SECTION("u8g_font_gdb11r");
lixianyu 0:d8f4c441e032 1672 extern const u8g_fntpgm_uint8_t u8g_font_gdb12r[] U8G_FONT_SECTION("u8g_font_gdb12r");
lixianyu 0:d8f4c441e032 1673 extern const u8g_fntpgm_uint8_t u8g_font_gdb14r[] U8G_FONT_SECTION("u8g_font_gdb14r");
lixianyu 0:d8f4c441e032 1674 extern const u8g_fntpgm_uint8_t u8g_font_gdb17r[] U8G_FONT_SECTION("u8g_font_gdb17r");
lixianyu 0:d8f4c441e032 1675 extern const u8g_fntpgm_uint8_t u8g_font_gdb20r[] U8G_FONT_SECTION("u8g_font_gdb20r");
lixianyu 0:d8f4c441e032 1676 extern const u8g_fntpgm_uint8_t u8g_font_gdb25r[] U8G_FONT_SECTION("u8g_font_gdb25r");
lixianyu 0:d8f4c441e032 1677 extern const u8g_fntpgm_uint8_t u8g_font_gdb30r[] U8G_FONT_SECTION("u8g_font_gdb30r");
lixianyu 0:d8f4c441e032 1678
lixianyu 0:d8f4c441e032 1679 extern const u8g_fntpgm_uint8_t u8g_font_gdb11n[] U8G_FONT_SECTION("u8g_font_gdb11n");
lixianyu 0:d8f4c441e032 1680 extern const u8g_fntpgm_uint8_t u8g_font_gdb12n[] U8G_FONT_SECTION("u8g_font_gdb12n");
lixianyu 0:d8f4c441e032 1681 extern const u8g_fntpgm_uint8_t u8g_font_gdb14n[] U8G_FONT_SECTION("u8g_font_gdb14n");
lixianyu 0:d8f4c441e032 1682 extern const u8g_fntpgm_uint8_t u8g_font_gdb17n[] U8G_FONT_SECTION("u8g_font_gdb17n");
lixianyu 0:d8f4c441e032 1683 extern const u8g_fntpgm_uint8_t u8g_font_gdb20n[] U8G_FONT_SECTION("u8g_font_gdb20n");
lixianyu 0:d8f4c441e032 1684 extern const u8g_fntpgm_uint8_t u8g_font_gdb25n[] U8G_FONT_SECTION("u8g_font_gdb25n");
lixianyu 0:d8f4c441e032 1685 extern const u8g_fntpgm_uint8_t u8g_font_gdb30n[] U8G_FONT_SECTION("u8g_font_gdb30n");
lixianyu 0:d8f4c441e032 1686
lixianyu 0:d8f4c441e032 1687 /*
lixianyu 0:d8f4c441e032 1688 Gentium Regular
lixianyu 0:d8f4c441e032 1689 r: Reduced char set (codes 32 - 128)
lixianyu 0:d8f4c441e032 1690 n: Numbers (codes 42 - 57)
lixianyu 0:d8f4c441e032 1691 no char: Full set (codes 32 - 255)
lixianyu 0:d8f4c441e032 1692 */
lixianyu 0:d8f4c441e032 1693
lixianyu 0:d8f4c441e032 1694 extern const u8g_fntpgm_uint8_t u8g_font_gdr9[] U8G_FONT_SECTION("u8g_font_gdr9");
lixianyu 0:d8f4c441e032 1695 extern const u8g_fntpgm_uint8_t u8g_font_gdr10[] U8G_FONT_SECTION("u8g_font_gdr10");
lixianyu 0:d8f4c441e032 1696 extern const u8g_fntpgm_uint8_t u8g_font_gdr11[] U8G_FONT_SECTION("u8g_font_gdr11");
lixianyu 0:d8f4c441e032 1697 extern const u8g_fntpgm_uint8_t u8g_font_gdr12[] U8G_FONT_SECTION("u8g_font_gdr12");
lixianyu 0:d8f4c441e032 1698 extern const u8g_fntpgm_uint8_t u8g_font_gdr14[] U8G_FONT_SECTION("u8g_font_gdr14");
lixianyu 0:d8f4c441e032 1699 extern const u8g_fntpgm_uint8_t u8g_font_gdr17[] U8G_FONT_SECTION("u8g_font_gdr17");
lixianyu 0:d8f4c441e032 1700 extern const u8g_fntpgm_uint8_t u8g_font_gdr20[] U8G_FONT_SECTION("u8g_font_gdr20");
lixianyu 0:d8f4c441e032 1701 extern const u8g_fntpgm_uint8_t u8g_font_gdr25[] U8G_FONT_SECTION("u8g_font_gdr25");
lixianyu 0:d8f4c441e032 1702 extern const u8g_fntpgm_uint8_t u8g_font_gdr30[] U8G_FONT_SECTION("u8g_font_gdr30");
lixianyu 0:d8f4c441e032 1703
lixianyu 0:d8f4c441e032 1704 extern const u8g_fntpgm_uint8_t u8g_font_gdr9r[] U8G_FONT_SECTION("u8g_font_gdr9r");
lixianyu 0:d8f4c441e032 1705 extern const u8g_fntpgm_uint8_t u8g_font_gdr10r[] U8G_FONT_SECTION("u8g_font_gdr10r");
lixianyu 0:d8f4c441e032 1706 extern const u8g_fntpgm_uint8_t u8g_font_gdr11r[] U8G_FONT_SECTION("u8g_font_gdr11r");
lixianyu 0:d8f4c441e032 1707 extern const u8g_fntpgm_uint8_t u8g_font_gdr12r[] U8G_FONT_SECTION("u8g_font_gdr12r");
lixianyu 0:d8f4c441e032 1708 extern const u8g_fntpgm_uint8_t u8g_font_gdr14r[] U8G_FONT_SECTION("u8g_font_gdr14r");
lixianyu 0:d8f4c441e032 1709 extern const u8g_fntpgm_uint8_t u8g_font_gdr17r[] U8G_FONT_SECTION("u8g_font_gdr17r");
lixianyu 0:d8f4c441e032 1710 extern const u8g_fntpgm_uint8_t u8g_font_gdr20r[] U8G_FONT_SECTION("u8g_font_gdr20r");
lixianyu 0:d8f4c441e032 1711 extern const u8g_fntpgm_uint8_t u8g_font_gdr25r[] U8G_FONT_SECTION("u8g_font_gdr25r");
lixianyu 0:d8f4c441e032 1712 extern const u8g_fntpgm_uint8_t u8g_font_gdr30r[] U8G_FONT_SECTION("u8g_font_gdr30r");
lixianyu 0:d8f4c441e032 1713
lixianyu 0:d8f4c441e032 1714 extern const u8g_fntpgm_uint8_t u8g_font_gdr9n[] U8G_FONT_SECTION("u8g_font_gdr9n");
lixianyu 0:d8f4c441e032 1715 extern const u8g_fntpgm_uint8_t u8g_font_gdr10n[] U8G_FONT_SECTION("u8g_font_gdr10n");
lixianyu 0:d8f4c441e032 1716 extern const u8g_fntpgm_uint8_t u8g_font_gdr11n[] U8G_FONT_SECTION("u8g_font_gdr11n");
lixianyu 0:d8f4c441e032 1717 extern const u8g_fntpgm_uint8_t u8g_font_gdr12n[] U8G_FONT_SECTION("u8g_font_gdr12n");
lixianyu 0:d8f4c441e032 1718 extern const u8g_fntpgm_uint8_t u8g_font_gdr14n[] U8G_FONT_SECTION("u8g_font_gdr14n");
lixianyu 0:d8f4c441e032 1719 extern const u8g_fntpgm_uint8_t u8g_font_gdr17n[] U8G_FONT_SECTION("u8g_font_gdr17n");
lixianyu 0:d8f4c441e032 1720 extern const u8g_fntpgm_uint8_t u8g_font_gdr20n[] U8G_FONT_SECTION("u8g_font_gdr20n");
lixianyu 0:d8f4c441e032 1721 extern const u8g_fntpgm_uint8_t u8g_font_gdr25n[] U8G_FONT_SECTION("u8g_font_gdr25n");
lixianyu 0:d8f4c441e032 1722 extern const u8g_fntpgm_uint8_t u8g_font_gdr30n[] U8G_FONT_SECTION("u8g_font_gdr30n");
lixianyu 0:d8f4c441e032 1723
lixianyu 0:d8f4c441e032 1724 /*
lixianyu 0:d8f4c441e032 1725 Old-Standard Bold
lixianyu 0:d8f4c441e032 1726 r: Reduced char set (codes 32 - 128)
lixianyu 0:d8f4c441e032 1727 n: Numbers (codes 42 - 57)
lixianyu 0:d8f4c441e032 1728 no char: Full set (codes 32 - 255)
lixianyu 0:d8f4c441e032 1729 */
lixianyu 0:d8f4c441e032 1730
lixianyu 0:d8f4c441e032 1731 extern const u8g_fntpgm_uint8_t u8g_font_osb18[] U8G_FONT_SECTION("u8g_font_osb18");
lixianyu 0:d8f4c441e032 1732 extern const u8g_fntpgm_uint8_t u8g_font_osb21[] U8G_FONT_SECTION("u8g_font_osb21");
lixianyu 0:d8f4c441e032 1733 extern const u8g_fntpgm_uint8_t u8g_font_osb26[] U8G_FONT_SECTION("u8g_font_osb26");
lixianyu 0:d8f4c441e032 1734 extern const u8g_fntpgm_uint8_t u8g_font_osb29[] U8G_FONT_SECTION("u8g_font_osb29");
lixianyu 0:d8f4c441e032 1735 extern const u8g_fntpgm_uint8_t u8g_font_osb35[] U8G_FONT_SECTION("u8g_font_osb35");
lixianyu 0:d8f4c441e032 1736
lixianyu 0:d8f4c441e032 1737 extern const u8g_fntpgm_uint8_t u8g_font_osb18r[] U8G_FONT_SECTION("u8g_font_osb18r");
lixianyu 0:d8f4c441e032 1738 extern const u8g_fntpgm_uint8_t u8g_font_osb21r[] U8G_FONT_SECTION("u8g_font_osb21r");
lixianyu 0:d8f4c441e032 1739 extern const u8g_fntpgm_uint8_t u8g_font_osb26r[] U8G_FONT_SECTION("u8g_font_osb26r");
lixianyu 0:d8f4c441e032 1740 extern const u8g_fntpgm_uint8_t u8g_font_osb29r[] U8G_FONT_SECTION("u8g_font_osb29r");
lixianyu 0:d8f4c441e032 1741 extern const u8g_fntpgm_uint8_t u8g_font_osb35r[] U8G_FONT_SECTION("u8g_font_osb35r");
lixianyu 0:d8f4c441e032 1742
lixianyu 0:d8f4c441e032 1743 extern const u8g_fntpgm_uint8_t u8g_font_osb18n[] U8G_FONT_SECTION("u8g_font_osb18n");
lixianyu 0:d8f4c441e032 1744 extern const u8g_fntpgm_uint8_t u8g_font_osb21n[] U8G_FONT_SECTION("u8g_font_osb21n");
lixianyu 0:d8f4c441e032 1745 extern const u8g_fntpgm_uint8_t u8g_font_osb26n[] U8G_FONT_SECTION("u8g_font_osb26n");
lixianyu 0:d8f4c441e032 1746 extern const u8g_fntpgm_uint8_t u8g_font_osb29n[] U8G_FONT_SECTION("u8g_font_osb29n");
lixianyu 0:d8f4c441e032 1747 extern const u8g_fntpgm_uint8_t u8g_font_osb35n[] U8G_FONT_SECTION("u8g_font_osb35n");
lixianyu 0:d8f4c441e032 1748
lixianyu 0:d8f4c441e032 1749 /*
lixianyu 0:d8f4c441e032 1750 Old-Standard Regular
lixianyu 0:d8f4c441e032 1751 r: Reduced char set (codes 32 - 128)
lixianyu 0:d8f4c441e032 1752 n: Numbers (codes 42 - 57)
lixianyu 0:d8f4c441e032 1753 no char: Full set (codes 32 - 255)
lixianyu 0:d8f4c441e032 1754 */
lixianyu 0:d8f4c441e032 1755
lixianyu 0:d8f4c441e032 1756 extern const u8g_fntpgm_uint8_t u8g_font_osr18[] U8G_FONT_SECTION("u8g_font_osr18");
lixianyu 0:d8f4c441e032 1757 extern const u8g_fntpgm_uint8_t u8g_font_osr21[] U8G_FONT_SECTION("u8g_font_osr21");
lixianyu 0:d8f4c441e032 1758 extern const u8g_fntpgm_uint8_t u8g_font_osr26[] U8G_FONT_SECTION("u8g_font_osr26");
lixianyu 0:d8f4c441e032 1759 extern const u8g_fntpgm_uint8_t u8g_font_osr29[] U8G_FONT_SECTION("u8g_font_osr29");
lixianyu 0:d8f4c441e032 1760 extern const u8g_fntpgm_uint8_t u8g_font_osr35[] U8G_FONT_SECTION("u8g_font_osr35");
lixianyu 0:d8f4c441e032 1761
lixianyu 0:d8f4c441e032 1762 extern const u8g_fntpgm_uint8_t u8g_font_osr18r[] U8G_FONT_SECTION("u8g_font_osr18r");
lixianyu 0:d8f4c441e032 1763 extern const u8g_fntpgm_uint8_t u8g_font_osr21r[] U8G_FONT_SECTION("u8g_font_osr21r");
lixianyu 0:d8f4c441e032 1764 extern const u8g_fntpgm_uint8_t u8g_font_osr26r[] U8G_FONT_SECTION("u8g_font_osr26r");
lixianyu 0:d8f4c441e032 1765 extern const u8g_fntpgm_uint8_t u8g_font_osr29r[] U8G_FONT_SECTION("u8g_font_osr29r");
lixianyu 0:d8f4c441e032 1766 extern const u8g_fntpgm_uint8_t u8g_font_osr35r[] U8G_FONT_SECTION("u8g_font_osr35r");
lixianyu 0:d8f4c441e032 1767
lixianyu 0:d8f4c441e032 1768 extern const u8g_fntpgm_uint8_t u8g_font_osr18n[] U8G_FONT_SECTION("u8g_font_osr18n");
lixianyu 0:d8f4c441e032 1769 extern const u8g_fntpgm_uint8_t u8g_font_osr21n[] U8G_FONT_SECTION("u8g_font_osr21n");
lixianyu 0:d8f4c441e032 1770 extern const u8g_fntpgm_uint8_t u8g_font_osr26n[] U8G_FONT_SECTION("u8g_font_osr26n");
lixianyu 0:d8f4c441e032 1771 extern const u8g_fntpgm_uint8_t u8g_font_osr29n[] U8G_FONT_SECTION("u8g_font_osr29n");
lixianyu 0:d8f4c441e032 1772 extern const u8g_fntpgm_uint8_t u8g_font_osr35n[] U8G_FONT_SECTION("u8g_font_osr35n");
lixianyu 0:d8f4c441e032 1773
lixianyu 0:d8f4c441e032 1774 //extern const u8g_fntpgm_uint8_t u8g_font_osr41[] U8G_FONT_SECTION("u8g_font_osr41");
lixianyu 0:d8f4c441e032 1775
lixianyu 0:d8f4c441e032 1776 /* GNU unifont */
lixianyu 0:d8f4c441e032 1777
lixianyu 0:d8f4c441e032 1778 extern const u8g_fntpgm_uint8_t u8g_font_unifont_18_19[] U8G_FONT_SECTION("u8g_font_unifont_18_19");
lixianyu 0:d8f4c441e032 1779 extern const u8g_fntpgm_uint8_t u8g_font_unifont_72_73[] U8G_FONT_SECTION("u8g_font_unifont_72_73");
lixianyu 0:d8f4c441e032 1780 extern const u8g_fntpgm_uint8_t u8g_font_unifont_67_75[] U8G_FONT_SECTION("u8g_font_unifont_67_75");
lixianyu 0:d8f4c441e032 1781 extern const u8g_fntpgm_uint8_t u8g_font_unifont_76[] U8G_FONT_SECTION("u8g_font_unifont_76");
lixianyu 0:d8f4c441e032 1782 extern const u8g_fntpgm_uint8_t u8g_font_unifont_77[] U8G_FONT_SECTION("u8g_font_unifont_77");
lixianyu 0:d8f4c441e032 1783 extern const u8g_fntpgm_uint8_t u8g_font_unifont_78_79[] U8G_FONT_SECTION("u8g_font_unifont_78_79");
lixianyu 0:d8f4c441e032 1784 extern const u8g_fntpgm_uint8_t u8g_font_unifont_86[] U8G_FONT_SECTION("u8g_font_unifont_86");
lixianyu 0:d8f4c441e032 1785 extern const u8g_fntpgm_uint8_t u8g_font_unifont[] U8G_FONT_SECTION("u8g_font_unifont");
lixianyu 0:d8f4c441e032 1786 extern const u8g_fntpgm_uint8_t u8g_font_unifontr[] U8G_FONT_SECTION("u8g_font_unifontr");
lixianyu 0:d8f4c441e032 1787 extern const u8g_fntpgm_uint8_t u8g_font_unifont_0_8[] U8G_FONT_SECTION("u8g_font_unifont_0_8");
lixianyu 0:d8f4c441e032 1788 extern const u8g_fntpgm_uint8_t u8g_font_unifont_2_3[] U8G_FONT_SECTION("u8g_font_unifont_2_3");
lixianyu 0:d8f4c441e032 1789 extern const u8g_fntpgm_uint8_t u8g_font_unifont_4_5[] U8G_FONT_SECTION("u8g_font_unifont_4_5");
lixianyu 0:d8f4c441e032 1790 extern const u8g_fntpgm_uint8_t u8g_font_unifont_8_9[] U8G_FONT_SECTION("u8g_font_unifont_8_9");
lixianyu 0:d8f4c441e032 1791 extern const u8g_fntpgm_uint8_t u8g_font_unifont_12_13[] U8G_FONT_SECTION("u8g_font_unifont_12_13");
lixianyu 0:d8f4c441e032 1792
lixianyu 0:d8f4c441e032 1793
lixianyu 0:d8f4c441e032 1794 /* 04b fonts */
lixianyu 0:d8f4c441e032 1795
lixianyu 0:d8f4c441e032 1796 extern const u8g_fntpgm_uint8_t u8g_font_04b_03b[] U8G_FONT_SECTION("u8g_font_04b_03b");
lixianyu 0:d8f4c441e032 1797 extern const u8g_fntpgm_uint8_t u8g_font_04b_03bn[] U8G_FONT_SECTION("u8g_font_04b_03bn");
lixianyu 0:d8f4c441e032 1798 extern const u8g_fntpgm_uint8_t u8g_font_04b_03br[] U8G_FONT_SECTION("u8g_font_04b_03br");
lixianyu 0:d8f4c441e032 1799 extern const u8g_fntpgm_uint8_t u8g_font_04b_03[] U8G_FONT_SECTION("u8g_font_04b_03");
lixianyu 0:d8f4c441e032 1800 extern const u8g_fntpgm_uint8_t u8g_font_04b_03n[] U8G_FONT_SECTION("u8g_font_04b_03n");
lixianyu 0:d8f4c441e032 1801 extern const u8g_fntpgm_uint8_t u8g_font_04b_03r[] U8G_FONT_SECTION("u8g_font_04b_03r");
lixianyu 0:d8f4c441e032 1802 extern const u8g_fntpgm_uint8_t u8g_font_04b_24[] U8G_FONT_SECTION("u8g_font_04b_24");
lixianyu 0:d8f4c441e032 1803 extern const u8g_fntpgm_uint8_t u8g_font_04b_24n[] U8G_FONT_SECTION("u8g_font_04b_24n");
lixianyu 0:d8f4c441e032 1804 extern const u8g_fntpgm_uint8_t u8g_font_04b_24r[] U8G_FONT_SECTION("u8g_font_04b_24r");
lixianyu 0:d8f4c441e032 1805
lixianyu 0:d8f4c441e032 1806 /* orgdot fonts */
lixianyu 0:d8f4c441e032 1807
lixianyu 0:d8f4c441e032 1808 extern const u8g_fntpgm_uint8_t u8g_font_orgv01[] U8G_FONT_SECTION("u8g_font_orgv01");
lixianyu 0:d8f4c441e032 1809 extern const u8g_fntpgm_uint8_t u8g_font_orgv01r[] U8G_FONT_SECTION("u8g_font_orgv01r");
lixianyu 0:d8f4c441e032 1810 extern const u8g_fntpgm_uint8_t u8g_font_orgv01n[] U8G_FONT_SECTION("u8g_font_orgv01n");
lixianyu 0:d8f4c441e032 1811
lixianyu 0:d8f4c441e032 1812 extern const u8g_fntpgm_uint8_t u8g_font_fixed_v0[] U8G_FONT_SECTION("u8g_font_fixed_v0");
lixianyu 0:d8f4c441e032 1813 extern const u8g_fntpgm_uint8_t u8g_font_fixed_v0r[] U8G_FONT_SECTION("u8g_font_fixed_v0r");
lixianyu 0:d8f4c441e032 1814 extern const u8g_fntpgm_uint8_t u8g_font_fixed_v0n[] U8G_FONT_SECTION("u8g_font_fixed_v0n");
lixianyu 0:d8f4c441e032 1815
lixianyu 0:d8f4c441e032 1816 extern const u8g_fntpgm_uint8_t u8g_font_tpssb[] U8G_FONT_SECTION("u8g_font_tpssb");
lixianyu 0:d8f4c441e032 1817 extern const u8g_fntpgm_uint8_t u8g_font_tpssbr[] U8G_FONT_SECTION("u8g_font_tpssbr");
lixianyu 0:d8f4c441e032 1818 extern const u8g_fntpgm_uint8_t u8g_font_tpssbn[] U8G_FONT_SECTION("u8g_font_tpssbn");
lixianyu 0:d8f4c441e032 1819
lixianyu 0:d8f4c441e032 1820 extern const u8g_fntpgm_uint8_t u8g_font_tpss[] U8G_FONT_SECTION("u8g_font_tpss");
lixianyu 0:d8f4c441e032 1821 extern const u8g_fntpgm_uint8_t u8g_font_tpssr[] U8G_FONT_SECTION("u8g_font_tpssr");
lixianyu 0:d8f4c441e032 1822 extern const u8g_fntpgm_uint8_t u8g_font_tpssn[] U8G_FONT_SECTION("u8g_font_tpssn");
lixianyu 0:d8f4c441e032 1823
lixianyu 0:d8f4c441e032 1824 /* contributed */
lixianyu 0:d8f4c441e032 1825
lixianyu 0:d8f4c441e032 1826 extern const u8g_fntpgm_uint8_t u8g_font_freedoomr25n[] U8G_FONT_SECTION("u8g_font_freedoomr25n");
lixianyu 0:d8f4c441e032 1827 extern const u8g_fntpgm_uint8_t u8g_font_freedoomr10r[] U8G_FONT_SECTION("u8g_font_freedoomr10r");
lixianyu 0:d8f4c441e032 1828
lixianyu 0:d8f4c441e032 1829 /* adobe X11 */
lixianyu 0:d8f4c441e032 1830 extern const u8g_fntpgm_uint8_t u8g_font_courB08[] U8G_FONT_SECTION("u8g_font_courB08");
lixianyu 0:d8f4c441e032 1831 extern const u8g_fntpgm_uint8_t u8g_font_courB08r[] U8G_FONT_SECTION("u8g_font_courB08r");
lixianyu 0:d8f4c441e032 1832 extern const u8g_fntpgm_uint8_t u8g_font_courB10[] U8G_FONT_SECTION("u8g_font_courB10");
lixianyu 0:d8f4c441e032 1833 extern const u8g_fntpgm_uint8_t u8g_font_courB10r[] U8G_FONT_SECTION("u8g_font_courB10r");
lixianyu 0:d8f4c441e032 1834 extern const u8g_fntpgm_uint8_t u8g_font_courB12[] U8G_FONT_SECTION("u8g_font_courB12");
lixianyu 0:d8f4c441e032 1835 extern const u8g_fntpgm_uint8_t u8g_font_courB12r[] U8G_FONT_SECTION("u8g_font_courB12r");
lixianyu 0:d8f4c441e032 1836 extern const u8g_fntpgm_uint8_t u8g_font_courB14[] U8G_FONT_SECTION("u8g_font_courB14");
lixianyu 0:d8f4c441e032 1837 extern const u8g_fntpgm_uint8_t u8g_font_courB14r[] U8G_FONT_SECTION("u8g_font_courB14r");
lixianyu 0:d8f4c441e032 1838 extern const u8g_fntpgm_uint8_t u8g_font_courB18[] U8G_FONT_SECTION("u8g_font_courB18");
lixianyu 0:d8f4c441e032 1839 extern const u8g_fntpgm_uint8_t u8g_font_courB18r[] U8G_FONT_SECTION("u8g_font_courB18r");
lixianyu 0:d8f4c441e032 1840 extern const u8g_fntpgm_uint8_t u8g_font_courB24[] U8G_FONT_SECTION("u8g_font_courB24");
lixianyu 0:d8f4c441e032 1841 extern const u8g_fntpgm_uint8_t u8g_font_courB24r[] U8G_FONT_SECTION("u8g_font_courB24r");
lixianyu 0:d8f4c441e032 1842 extern const u8g_fntpgm_uint8_t u8g_font_courB24n[] U8G_FONT_SECTION("u8g_font_courB24n");
lixianyu 0:d8f4c441e032 1843
lixianyu 0:d8f4c441e032 1844 extern const u8g_fntpgm_uint8_t u8g_font_courR08[] U8G_FONT_SECTION("u8g_font_courR08");
lixianyu 0:d8f4c441e032 1845 extern const u8g_fntpgm_uint8_t u8g_font_courR08r[] U8G_FONT_SECTION("u8g_font_courR08r");
lixianyu 0:d8f4c441e032 1846 extern const u8g_fntpgm_uint8_t u8g_font_courR10[] U8G_FONT_SECTION("u8g_font_courR10");
lixianyu 0:d8f4c441e032 1847 extern const u8g_fntpgm_uint8_t u8g_font_courR10r[] U8G_FONT_SECTION("u8g_font_courR10r");
lixianyu 0:d8f4c441e032 1848 extern const u8g_fntpgm_uint8_t u8g_font_courR12[] U8G_FONT_SECTION("u8g_font_courR12");
lixianyu 0:d8f4c441e032 1849 extern const u8g_fntpgm_uint8_t u8g_font_courR12r[] U8G_FONT_SECTION("u8g_font_courR12r");
lixianyu 0:d8f4c441e032 1850 extern const u8g_fntpgm_uint8_t u8g_font_courR14[] U8G_FONT_SECTION("u8g_font_courR14");
lixianyu 0:d8f4c441e032 1851 extern const u8g_fntpgm_uint8_t u8g_font_courR14r[] U8G_FONT_SECTION("u8g_font_courR14r");
lixianyu 0:d8f4c441e032 1852 extern const u8g_fntpgm_uint8_t u8g_font_courR18[] U8G_FONT_SECTION("u8g_font_courR18");
lixianyu 0:d8f4c441e032 1853 extern const u8g_fntpgm_uint8_t u8g_font_courR18r[] U8G_FONT_SECTION("u8g_font_courR18r");
lixianyu 0:d8f4c441e032 1854 extern const u8g_fntpgm_uint8_t u8g_font_courR24[] U8G_FONT_SECTION("u8g_font_courR24");
lixianyu 0:d8f4c441e032 1855 extern const u8g_fntpgm_uint8_t u8g_font_courR24r[] U8G_FONT_SECTION("u8g_font_courR24r");
lixianyu 0:d8f4c441e032 1856 extern const u8g_fntpgm_uint8_t u8g_font_courR24n[] U8G_FONT_SECTION("u8g_font_courR24n");
lixianyu 0:d8f4c441e032 1857
lixianyu 0:d8f4c441e032 1858 extern const u8g_fntpgm_uint8_t u8g_font_helvB08[] U8G_FONT_SECTION("u8g_font_helvB08");
lixianyu 0:d8f4c441e032 1859 extern const u8g_fntpgm_uint8_t u8g_font_helvB08r[] U8G_FONT_SECTION("u8g_font_helvB08r");
lixianyu 0:d8f4c441e032 1860 extern const u8g_fntpgm_uint8_t u8g_font_helvB08n[] U8G_FONT_SECTION("u8g_font_helvB08n");
lixianyu 0:d8f4c441e032 1861 extern const u8g_fntpgm_uint8_t u8g_font_helvB10[] U8G_FONT_SECTION("u8g_font_helvB10");
lixianyu 0:d8f4c441e032 1862 extern const u8g_fntpgm_uint8_t u8g_font_helvB10r[] U8G_FONT_SECTION("u8g_font_helvB10r");
lixianyu 0:d8f4c441e032 1863 extern const u8g_fntpgm_uint8_t u8g_font_helvB10n[] U8G_FONT_SECTION("u8g_font_helvB10n");
lixianyu 0:d8f4c441e032 1864 extern const u8g_fntpgm_uint8_t u8g_font_helvB12[] U8G_FONT_SECTION("u8g_font_helvB12");
lixianyu 0:d8f4c441e032 1865 extern const u8g_fntpgm_uint8_t u8g_font_helvB12r[] U8G_FONT_SECTION("u8g_font_helvB12r");
lixianyu 0:d8f4c441e032 1866 extern const u8g_fntpgm_uint8_t u8g_font_helvB12n[] U8G_FONT_SECTION("u8g_font_helvB12n");
lixianyu 0:d8f4c441e032 1867 extern const u8g_fntpgm_uint8_t u8g_font_helvB14[] U8G_FONT_SECTION("u8g_font_helvB14");
lixianyu 0:d8f4c441e032 1868 extern const u8g_fntpgm_uint8_t u8g_font_helvB14r[] U8G_FONT_SECTION("u8g_font_helvB14r");
lixianyu 0:d8f4c441e032 1869 extern const u8g_fntpgm_uint8_t u8g_font_helvB14n[] U8G_FONT_SECTION("u8g_font_helvB14n");
lixianyu 0:d8f4c441e032 1870 extern const u8g_fntpgm_uint8_t u8g_font_helvB18[] U8G_FONT_SECTION("u8g_font_helvB18");
lixianyu 0:d8f4c441e032 1871 extern const u8g_fntpgm_uint8_t u8g_font_helvB18r[] U8G_FONT_SECTION("u8g_font_helvB18r");
lixianyu 0:d8f4c441e032 1872 extern const u8g_fntpgm_uint8_t u8g_font_helvB18n[] U8G_FONT_SECTION("u8g_font_helvB18n");
lixianyu 0:d8f4c441e032 1873 extern const u8g_fntpgm_uint8_t u8g_font_helvB24[] U8G_FONT_SECTION("u8g_font_helvB24");
lixianyu 0:d8f4c441e032 1874 extern const u8g_fntpgm_uint8_t u8g_font_helvB24r[] U8G_FONT_SECTION("u8g_font_helvB24r");
lixianyu 0:d8f4c441e032 1875 extern const u8g_fntpgm_uint8_t u8g_font_helvB24n[] U8G_FONT_SECTION("u8g_font_helvB24n");
lixianyu 0:d8f4c441e032 1876
lixianyu 0:d8f4c441e032 1877 extern const u8g_fntpgm_uint8_t u8g_font_helvR08[] U8G_FONT_SECTION("u8g_font_helvR08");
lixianyu 0:d8f4c441e032 1878 extern const u8g_fntpgm_uint8_t u8g_font_helvR08r[] U8G_FONT_SECTION("u8g_font_helvR08r");
lixianyu 0:d8f4c441e032 1879 extern const u8g_fntpgm_uint8_t u8g_font_helvR08n[] U8G_FONT_SECTION("u8g_font_helvR08n");
lixianyu 0:d8f4c441e032 1880 extern const u8g_fntpgm_uint8_t u8g_font_helvR10[] U8G_FONT_SECTION("u8g_font_helvR10");
lixianyu 0:d8f4c441e032 1881 extern const u8g_fntpgm_uint8_t u8g_font_helvR10r[] U8G_FONT_SECTION("u8g_font_helvR10r");
lixianyu 0:d8f4c441e032 1882 extern const u8g_fntpgm_uint8_t u8g_font_helvR10n[] U8G_FONT_SECTION("u8g_font_helvR10n");
lixianyu 0:d8f4c441e032 1883 extern const u8g_fntpgm_uint8_t u8g_font_helvR12[] U8G_FONT_SECTION("u8g_font_helvR12");
lixianyu 0:d8f4c441e032 1884 extern const u8g_fntpgm_uint8_t u8g_font_helvR12r[] U8G_FONT_SECTION("u8g_font_helvR12r");
lixianyu 0:d8f4c441e032 1885 extern const u8g_fntpgm_uint8_t u8g_font_helvR12n[] U8G_FONT_SECTION("u8g_font_helvR12n");
lixianyu 0:d8f4c441e032 1886 extern const u8g_fntpgm_uint8_t u8g_font_helvR14[] U8G_FONT_SECTION("u8g_font_helvR14");
lixianyu 0:d8f4c441e032 1887 extern const u8g_fntpgm_uint8_t u8g_font_helvR14r[] U8G_FONT_SECTION("u8g_font_helvR14r");
lixianyu 0:d8f4c441e032 1888 extern const u8g_fntpgm_uint8_t u8g_font_helvR14n[] U8G_FONT_SECTION("u8g_font_helvR14n");
lixianyu 0:d8f4c441e032 1889 extern const u8g_fntpgm_uint8_t u8g_font_helvR18[] U8G_FONT_SECTION("u8g_font_helvR18");
lixianyu 0:d8f4c441e032 1890 extern const u8g_fntpgm_uint8_t u8g_font_helvR18r[] U8G_FONT_SECTION("u8g_font_helvR18r");
lixianyu 0:d8f4c441e032 1891 extern const u8g_fntpgm_uint8_t u8g_font_helvR18n[] U8G_FONT_SECTION("u8g_font_helvR18n");
lixianyu 0:d8f4c441e032 1892 extern const u8g_fntpgm_uint8_t u8g_font_helvR24[] U8G_FONT_SECTION("u8g_font_helvR24");
lixianyu 0:d8f4c441e032 1893 extern const u8g_fntpgm_uint8_t u8g_font_helvR24r[] U8G_FONT_SECTION("u8g_font_helvR24r");
lixianyu 0:d8f4c441e032 1894 extern const u8g_fntpgm_uint8_t u8g_font_helvR24n[] U8G_FONT_SECTION("u8g_font_helvR24n");
lixianyu 0:d8f4c441e032 1895
lixianyu 0:d8f4c441e032 1896 extern const u8g_fntpgm_uint8_t u8g_font_ncenB08[] U8G_FONT_SECTION("u8g_font_ncenB08");
lixianyu 0:d8f4c441e032 1897 extern const u8g_fntpgm_uint8_t u8g_font_ncenB08r[] U8G_FONT_SECTION("u8g_font_ncenB08r");
lixianyu 0:d8f4c441e032 1898 extern const u8g_fntpgm_uint8_t u8g_font_ncenB10[] U8G_FONT_SECTION("u8g_font_ncenB10");
lixianyu 0:d8f4c441e032 1899 extern const u8g_fntpgm_uint8_t u8g_font_ncenB10r[] U8G_FONT_SECTION("u8g_font_ncenB10r");
lixianyu 0:d8f4c441e032 1900 extern const u8g_fntpgm_uint8_t u8g_font_ncenB12[] U8G_FONT_SECTION("u8g_font_ncenB12");
lixianyu 0:d8f4c441e032 1901 extern const u8g_fntpgm_uint8_t u8g_font_ncenB12r[] U8G_FONT_SECTION("u8g_font_ncenB12r");
lixianyu 0:d8f4c441e032 1902 extern const u8g_fntpgm_uint8_t u8g_font_ncenB14[] U8G_FONT_SECTION("u8g_font_ncenB14");
lixianyu 0:d8f4c441e032 1903 extern const u8g_fntpgm_uint8_t u8g_font_ncenB14r[] U8G_FONT_SECTION("u8g_font_ncenB14r");
lixianyu 0:d8f4c441e032 1904 extern const u8g_fntpgm_uint8_t u8g_font_ncenB18[] U8G_FONT_SECTION("u8g_font_ncenB18");
lixianyu 0:d8f4c441e032 1905 extern const u8g_fntpgm_uint8_t u8g_font_ncenB18r[] U8G_FONT_SECTION("u8g_font_ncenB18r");
lixianyu 0:d8f4c441e032 1906 extern const u8g_fntpgm_uint8_t u8g_font_ncenB24[] U8G_FONT_SECTION("u8g_font_ncenB24");
lixianyu 0:d8f4c441e032 1907 extern const u8g_fntpgm_uint8_t u8g_font_ncenB24r[] U8G_FONT_SECTION("u8g_font_ncenB24r");
lixianyu 0:d8f4c441e032 1908 extern const u8g_fntpgm_uint8_t u8g_font_ncenB24n[] U8G_FONT_SECTION("u8g_font_ncenB24n");
lixianyu 0:d8f4c441e032 1909
lixianyu 0:d8f4c441e032 1910 extern const u8g_fntpgm_uint8_t u8g_font_ncenR08[] U8G_FONT_SECTION("u8g_font_ncenR08");
lixianyu 0:d8f4c441e032 1911 extern const u8g_fntpgm_uint8_t u8g_font_ncenR08r[] U8G_FONT_SECTION("u8g_font_ncenR08r");
lixianyu 0:d8f4c441e032 1912 extern const u8g_fntpgm_uint8_t u8g_font_ncenR10[] U8G_FONT_SECTION("u8g_font_ncenR10");
lixianyu 0:d8f4c441e032 1913 extern const u8g_fntpgm_uint8_t u8g_font_ncenR10r[] U8G_FONT_SECTION("u8g_font_ncenR10r");
lixianyu 0:d8f4c441e032 1914 extern const u8g_fntpgm_uint8_t u8g_font_ncenR12[] U8G_FONT_SECTION("u8g_font_ncenR12");
lixianyu 0:d8f4c441e032 1915 extern const u8g_fntpgm_uint8_t u8g_font_ncenR12r[] U8G_FONT_SECTION("u8g_font_ncenR12r");
lixianyu 0:d8f4c441e032 1916 extern const u8g_fntpgm_uint8_t u8g_font_ncenR14[] U8G_FONT_SECTION("u8g_font_ncenR14");
lixianyu 0:d8f4c441e032 1917 extern const u8g_fntpgm_uint8_t u8g_font_ncenR14r[] U8G_FONT_SECTION("u8g_font_ncenR14r");
lixianyu 0:d8f4c441e032 1918 extern const u8g_fntpgm_uint8_t u8g_font_ncenR18[] U8G_FONT_SECTION("u8g_font_ncenR18");
lixianyu 0:d8f4c441e032 1919 extern const u8g_fntpgm_uint8_t u8g_font_ncenR18r[] U8G_FONT_SECTION("u8g_font_ncenR18r");
lixianyu 0:d8f4c441e032 1920 extern const u8g_fntpgm_uint8_t u8g_font_ncenR24[] U8G_FONT_SECTION("u8g_font_ncenR24");
lixianyu 0:d8f4c441e032 1921 extern const u8g_fntpgm_uint8_t u8g_font_ncenR24r[] U8G_FONT_SECTION("u8g_font_ncenR24r");
lixianyu 0:d8f4c441e032 1922 extern const u8g_fntpgm_uint8_t u8g_font_ncenR24n[] U8G_FONT_SECTION("u8g_font_ncenR24n");
lixianyu 0:d8f4c441e032 1923
lixianyu 0:d8f4c441e032 1924 extern const u8g_fntpgm_uint8_t u8g_font_symb08[] U8G_FONT_SECTION("u8g_font_symb08");
lixianyu 0:d8f4c441e032 1925 extern const u8g_fntpgm_uint8_t u8g_font_symb08r[] U8G_FONT_SECTION("u8g_font_symb08r");
lixianyu 0:d8f4c441e032 1926 extern const u8g_fntpgm_uint8_t u8g_font_symb10[] U8G_FONT_SECTION("u8g_font_symb10");
lixianyu 0:d8f4c441e032 1927 extern const u8g_fntpgm_uint8_t u8g_font_symb10r[] U8G_FONT_SECTION("u8g_font_symb10r");
lixianyu 0:d8f4c441e032 1928 extern const u8g_fntpgm_uint8_t u8g_font_symb12[] U8G_FONT_SECTION("u8g_font_symb12");
lixianyu 0:d8f4c441e032 1929 extern const u8g_fntpgm_uint8_t u8g_font_symb12r[] U8G_FONT_SECTION("u8g_font_symb12r");
lixianyu 0:d8f4c441e032 1930 extern const u8g_fntpgm_uint8_t u8g_font_symb14[] U8G_FONT_SECTION("u8g_font_symb14");
lixianyu 0:d8f4c441e032 1931 extern const u8g_fntpgm_uint8_t u8g_font_symb14r[] U8G_FONT_SECTION("u8g_font_symb14r");
lixianyu 0:d8f4c441e032 1932 extern const u8g_fntpgm_uint8_t u8g_font_symb18[] U8G_FONT_SECTION("u8g_font_symb18");
lixianyu 0:d8f4c441e032 1933 extern const u8g_fntpgm_uint8_t u8g_font_symb18r[] U8G_FONT_SECTION("u8g_font_symb18r");
lixianyu 0:d8f4c441e032 1934 extern const u8g_fntpgm_uint8_t u8g_font_symb24[] U8G_FONT_SECTION("u8g_font_symb24");
lixianyu 0:d8f4c441e032 1935 extern const u8g_fntpgm_uint8_t u8g_font_symb24r[] U8G_FONT_SECTION("u8g_font_symb24r");
lixianyu 0:d8f4c441e032 1936
lixianyu 0:d8f4c441e032 1937 extern const u8g_fntpgm_uint8_t u8g_font_timB08[] U8G_FONT_SECTION("u8g_font_timB08");
lixianyu 0:d8f4c441e032 1938 extern const u8g_fntpgm_uint8_t u8g_font_timB08r[] U8G_FONT_SECTION("u8g_font_timB08r");
lixianyu 0:d8f4c441e032 1939 extern const u8g_fntpgm_uint8_t u8g_font_timB10[] U8G_FONT_SECTION("u8g_font_timB10");
lixianyu 0:d8f4c441e032 1940 extern const u8g_fntpgm_uint8_t u8g_font_timB10r[] U8G_FONT_SECTION("u8g_font_timB10r");
lixianyu 0:d8f4c441e032 1941 extern const u8g_fntpgm_uint8_t u8g_font_timB12[] U8G_FONT_SECTION("u8g_font_timB12");
lixianyu 0:d8f4c441e032 1942 extern const u8g_fntpgm_uint8_t u8g_font_timB12r[] U8G_FONT_SECTION("u8g_font_timB12r");
lixianyu 0:d8f4c441e032 1943 extern const u8g_fntpgm_uint8_t u8g_font_timB14[] U8G_FONT_SECTION("u8g_font_timB14");
lixianyu 0:d8f4c441e032 1944 extern const u8g_fntpgm_uint8_t u8g_font_timB14r[] U8G_FONT_SECTION("u8g_font_timB14r");
lixianyu 0:d8f4c441e032 1945 extern const u8g_fntpgm_uint8_t u8g_font_timB18[] U8G_FONT_SECTION("u8g_font_timB18");
lixianyu 0:d8f4c441e032 1946 extern const u8g_fntpgm_uint8_t u8g_font_timB18r[] U8G_FONT_SECTION("u8g_font_timB18r");
lixianyu 0:d8f4c441e032 1947 extern const u8g_fntpgm_uint8_t u8g_font_timB24[] U8G_FONT_SECTION("u8g_font_timB24");
lixianyu 0:d8f4c441e032 1948 extern const u8g_fntpgm_uint8_t u8g_font_timB24r[] U8G_FONT_SECTION("u8g_font_timB24r");
lixianyu 0:d8f4c441e032 1949 extern const u8g_fntpgm_uint8_t u8g_font_timB24n[] U8G_FONT_SECTION("u8g_font_timB24n");
lixianyu 0:d8f4c441e032 1950
lixianyu 0:d8f4c441e032 1951 extern const u8g_fntpgm_uint8_t u8g_font_timR08[] U8G_FONT_SECTION("u8g_font_timR08");
lixianyu 0:d8f4c441e032 1952 extern const u8g_fntpgm_uint8_t u8g_font_timR08r[] U8G_FONT_SECTION("u8g_font_timR08r");
lixianyu 0:d8f4c441e032 1953 extern const u8g_fntpgm_uint8_t u8g_font_timR10[] U8G_FONT_SECTION("u8g_font_timR10");
lixianyu 0:d8f4c441e032 1954 extern const u8g_fntpgm_uint8_t u8g_font_timR10r[] U8G_FONT_SECTION("u8g_font_timR10r");
lixianyu 0:d8f4c441e032 1955 extern const u8g_fntpgm_uint8_t u8g_font_timR12[] U8G_FONT_SECTION("u8g_font_timR12");
lixianyu 0:d8f4c441e032 1956 extern const u8g_fntpgm_uint8_t u8g_font_timR12r[] U8G_FONT_SECTION("u8g_font_timR12r");
lixianyu 0:d8f4c441e032 1957 extern const u8g_fntpgm_uint8_t u8g_font_timR14[] U8G_FONT_SECTION("u8g_font_timR14");
lixianyu 0:d8f4c441e032 1958 extern const u8g_fntpgm_uint8_t u8g_font_timR14r[] U8G_FONT_SECTION("u8g_font_timR14r");
lixianyu 0:d8f4c441e032 1959 extern const u8g_fntpgm_uint8_t u8g_font_timR18[] U8G_FONT_SECTION("u8g_font_timR18");
lixianyu 0:d8f4c441e032 1960 extern const u8g_fntpgm_uint8_t u8g_font_timR18r[] U8G_FONT_SECTION("u8g_font_timR18r");
lixianyu 0:d8f4c441e032 1961 extern const u8g_fntpgm_uint8_t u8g_font_timR24[] U8G_FONT_SECTION("u8g_font_timR24");
lixianyu 0:d8f4c441e032 1962 extern const u8g_fntpgm_uint8_t u8g_font_timR24r[] U8G_FONT_SECTION("u8g_font_timR24r");
lixianyu 0:d8f4c441e032 1963 extern const u8g_fntpgm_uint8_t u8g_font_timR24n[] U8G_FONT_SECTION("u8g_font_timR24n");
lixianyu 0:d8f4c441e032 1964
lixianyu 0:d8f4c441e032 1965 /* fontstruct */
lixianyu 0:d8f4c441e032 1966
lixianyu 0:d8f4c441e032 1967 extern const u8g_fntpgm_uint8_t u8g_font_p01type[] U8G_FONT_SECTION("u8g_font_p01type");
lixianyu 0:d8f4c441e032 1968 extern const u8g_fntpgm_uint8_t u8g_font_p01typer[] U8G_FONT_SECTION("u8g_font_p01typer");
lixianyu 0:d8f4c441e032 1969 extern const u8g_fntpgm_uint8_t u8g_font_p01typen[] U8G_FONT_SECTION("u8g_font_p01typen");
lixianyu 0:d8f4c441e032 1970
lixianyu 0:d8f4c441e032 1971 extern const u8g_fntpgm_uint8_t u8g_font_lucasfont_alternate[] U8G_FONT_SECTION("u8g_font_lucasfont_alternate");
lixianyu 0:d8f4c441e032 1972 extern const u8g_fntpgm_uint8_t u8g_font_lucasfont_alternater[] U8G_FONT_SECTION("u8g_font_lucasfont_alternater");
lixianyu 0:d8f4c441e032 1973 extern const u8g_fntpgm_uint8_t u8g_font_lucasfont_alternaten[] U8G_FONT_SECTION("u8g_font_lucasfont_alternaten");
lixianyu 0:d8f4c441e032 1974
lixianyu 0:d8f4c441e032 1975 extern const u8g_fntpgm_uint8_t u8g_font_chikita[] U8G_FONT_SECTION("u8g_font_chikita");
lixianyu 0:d8f4c441e032 1976 extern const u8g_fntpgm_uint8_t u8g_font_chikitar[] U8G_FONT_SECTION("u8g_font_chikitar");
lixianyu 0:d8f4c441e032 1977 extern const u8g_fntpgm_uint8_t u8g_font_chikitan[] U8G_FONT_SECTION("u8g_font_chikitan");
lixianyu 0:d8f4c441e032 1978
lixianyu 0:d8f4c441e032 1979 extern const u8g_fntpgm_uint8_t u8g_font_pixelle_micro[] U8G_FONT_SECTION("u8g_font_pixelle_micro");
lixianyu 0:d8f4c441e032 1980 extern const u8g_fntpgm_uint8_t u8g_font_pixelle_micror[] U8G_FONT_SECTION("u8g_font_pixelle_micror");
lixianyu 0:d8f4c441e032 1981 extern const u8g_fntpgm_uint8_t u8g_font_pixelle_micron[] U8G_FONT_SECTION("u8g_font_pixelle_micron");
lixianyu 0:d8f4c441e032 1982
lixianyu 0:d8f4c441e032 1983 extern const u8g_fntpgm_uint8_t u8g_font_trixel_square[] U8G_FONT_SECTION("u8g_font_trixel_square");
lixianyu 0:d8f4c441e032 1984 extern const u8g_fntpgm_uint8_t u8g_font_trixel_squarer[] U8G_FONT_SECTION("u8g_font_trixel_squarer");
lixianyu 0:d8f4c441e032 1985 extern const u8g_fntpgm_uint8_t u8g_font_trixel_squaren[] U8G_FONT_SECTION("u8g_font_trixel_squaren");
lixianyu 0:d8f4c441e032 1986
lixianyu 0:d8f4c441e032 1987 extern const u8g_fntpgm_uint8_t u8g_font_robot_de_niro[] U8G_FONT_SECTION("u8g_font_robot_de_niro");
lixianyu 0:d8f4c441e032 1988 extern const u8g_fntpgm_uint8_t u8g_font_robot_de_niror[] U8G_FONT_SECTION("u8g_font_robot_de_niror");
lixianyu 0:d8f4c441e032 1989 extern const u8g_fntpgm_uint8_t u8g_font_robot_de_niron[] U8G_FONT_SECTION("u8g_font_robot_de_niron");
lixianyu 0:d8f4c441e032 1990
lixianyu 0:d8f4c441e032 1991 extern const u8g_fntpgm_uint8_t u8g_font_baby[] U8G_FONT_SECTION("u8g_font_baby");
lixianyu 0:d8f4c441e032 1992 extern const u8g_fntpgm_uint8_t u8g_font_babyr[] U8G_FONT_SECTION("u8g_font_babyr");
lixianyu 0:d8f4c441e032 1993 extern const u8g_fntpgm_uint8_t u8g_font_babyn[] U8G_FONT_SECTION("u8g_font_babyn");
lixianyu 0:d8f4c441e032 1994
lixianyu 0:d8f4c441e032 1995 extern const u8g_fntpgm_uint8_t u8g_font_blipfest_07[] U8G_FONT_SECTION("u8g_font_blipfest_07");
lixianyu 0:d8f4c441e032 1996 extern const u8g_fntpgm_uint8_t u8g_font_blipfest_07r[] U8G_FONT_SECTION("u8g_font_blipfest_07r");
lixianyu 0:d8f4c441e032 1997 extern const u8g_fntpgm_uint8_t u8g_font_blipfest_07n[] U8G_FONT_SECTION("u8g_font_blipfest_07n");
lixianyu 0:d8f4c441e032 1998
lixianyu 0:d8f4c441e032 1999 /* profont */
lixianyu 0:d8f4c441e032 2000
lixianyu 0:d8f4c441e032 2001 extern const u8g_fntpgm_uint8_t u8g_font_profont10[] U8G_FONT_SECTION("u8g_font_profont10");
lixianyu 0:d8f4c441e032 2002 extern const u8g_fntpgm_uint8_t u8g_font_profont10r[] U8G_FONT_SECTION("u8g_font_profont10r");
lixianyu 0:d8f4c441e032 2003 extern const u8g_fntpgm_uint8_t u8g_font_profont11[] U8G_FONT_SECTION("u8g_font_profont11");
lixianyu 0:d8f4c441e032 2004 extern const u8g_fntpgm_uint8_t u8g_font_profont11r[] U8G_FONT_SECTION("u8g_font_profont11r");
lixianyu 0:d8f4c441e032 2005 extern const u8g_fntpgm_uint8_t u8g_font_profont12[] U8G_FONT_SECTION("u8g_font_profont12");
lixianyu 0:d8f4c441e032 2006 extern const u8g_fntpgm_uint8_t u8g_font_profont12r[] U8G_FONT_SECTION("u8g_font_profont12r");
lixianyu 0:d8f4c441e032 2007 extern const u8g_fntpgm_uint8_t u8g_font_profont15[] U8G_FONT_SECTION("u8g_font_profont15");
lixianyu 0:d8f4c441e032 2008 extern const u8g_fntpgm_uint8_t u8g_font_profont15r[] U8G_FONT_SECTION("u8g_font_profont15r");
lixianyu 0:d8f4c441e032 2009 extern const u8g_fntpgm_uint8_t u8g_font_profont17[] U8G_FONT_SECTION("u8g_font_profont17");
lixianyu 0:d8f4c441e032 2010 extern const u8g_fntpgm_uint8_t u8g_font_profont17r[] U8G_FONT_SECTION("u8g_font_profont17r");
lixianyu 0:d8f4c441e032 2011 extern const u8g_fntpgm_uint8_t u8g_font_profont22[] U8G_FONT_SECTION("u8g_font_profont22");
lixianyu 0:d8f4c441e032 2012 extern const u8g_fntpgm_uint8_t u8g_font_profont22r[] U8G_FONT_SECTION("u8g_font_profont22r");
lixianyu 0:d8f4c441e032 2013 extern const u8g_fntpgm_uint8_t u8g_font_profont29[] U8G_FONT_SECTION("u8g_font_profont29");
lixianyu 0:d8f4c441e032 2014 extern const u8g_fntpgm_uint8_t u8g_font_profont29r[] U8G_FONT_SECTION("u8g_font_profont29r");
lixianyu 0:d8f4c441e032 2015
lixianyu 0:d8f4c441e032 2016
lixianyu 0:d8f4c441e032 2017 #ifdef __cplusplus
lixianyu 0:d8f4c441e032 2018 }
lixianyu 0:d8f4c441e032 2019 #endif
lixianyu 0:d8f4c441e032 2020
lixianyu 0:d8f4c441e032 2021 #endif /* _U8G_H */
lixianyu 0:d8f4c441e032 2022
lixianyu 0:d8f4c441e032 2023