Initial commit

This commit is contained in:
Davide Depau 2020-08-18 04:59:37 +02:00
commit 4e3384d9f9
29 changed files with 49123 additions and 0 deletions

View File

@ -0,0 +1,3 @@
pyserial
PySensors
psutil

View File

@ -0,0 +1,170 @@
import os
import struct
import sys
import threading
import time
import psutil
import sensors
import serial
structure = [
{'pack': 'I', 'mode': 'magic', 'value': 0xAAAAAAAA},
# Temps
{'pack': 'B', 'mode': 'hwmon', 'driver': 'k10temp', 'feature': 'temp1'},
{'pack': 'B', 'mode': 'hwmon', 'driver': 'nct6797', 'feature': 'temp3'},
{'pack': 'B', 'mode': 'hwmon', 'driver': 'amdgpu', 'feature': 'temp1'},
{'pack': 'B', 'mode': 'hwmon', 'driver': 'nct6797', 'feature': 'temp5'},
{'pack': 'B', 'mode': 'hwmon', 'driver': 'nct6797', 'feature': 'temp1'},
{'pack': 'B', 'mode': 'hwmon', 'driver': 'nvme', 'feature': 'temp1'},
# Fans
{'pack': 'H', 'mode': 'hwmon', 'driver': 'nct6797', 'feature': 'fan1'},
{'pack': 'H', 'mode': 'hwmon', 'driver': 'amdgpu', 'feature': 'fan1'},
{'pack': 'H', 'mode': 'hwmon', 'driver': 'nct6797', 'feature': 'fan7'},
{'pack': 'H', 'mode': 'hwmon', 'driver': 'nct6797', 'feature': 'fan5'},
{'pack': 'H', 'mode': 'hwmon', 'driver': 'nct6797', 'feature': 'fan4'},
{'pack': 'H', 'mode': 'hwmon', 'driver': 'nct6797', 'feature': 'fan3'},
# CPU/RAM
{'pack': 'H', 'mode': 'cpu_freq'},
{'pack': 'I', 'mode': 'cpu_load_avg'},
{'pack': 'I', 'mode': 'ram_used'},
{'pack': 'H', 'mode': 'cpu_perc'},
{'pack': 'H', 'mode': 'cpu_perc_max'},
{'pack': 'H', 'mode': 'cpu_perc_kernel'},
{'pack': 'B', 'mode': 'ram_perc'},
{'pack': 'B', 'mode': 'ram_perc_buffers'},
# Padding
{'pack': 'B', 'mode': 'magic', 'value': 0},
{'pack': 'H', 'mode': 'magic', 'value': 0},
]
def cpu_n_freq(cpu):
with open(f"/sys/devices/system/cpu/cpu{cpu}/cpufreq/cpuinfo_cur_freq") as f:
return int(f.read().strip()) / 1000
def filter_int(x):
try:
int(x)
return True
except ValueError:
return False
def cpu_freq():
return \
int(
max(
map(
lambda x: cpu_n_freq(int(x)),
filter(
filter_int,
map(
lambda x: x.replace("cpu", ""),
filter(
lambda x: x.startswith("cpu"),
os.listdir("/sys/devices/system/cpu")
)
)
)
)
)
)
def cpu_perc():
return int(sum(psutil.cpu_percent(percpu=True)))
def cpu_perc_max():
return 100 * psutil.cpu_count()
def cpu_perc_kernel():
return int(cpu_perc() * psutil.cpu_times_percent().system / 100)
def cpu_load_avg():
return int(psutil.getloadavg()[0] * 100)
def ram_perc():
m = psutil.virtual_memory()
return int((m.total - m.available) / m.total * 100)
def ram_perc_buffers():
m = psutil.virtual_memory()
return int(m.slab / m.total * 100)
def ram_used():
m = psutil.virtual_memory()
return int((m.total - m.available) / (1024 ** 2))
def loop(serial: serial.Serial, hwmon: dict):
while True:
struct_data = []
struct_fmt = "<"
for item in structure:
struct_fmt += item['pack']
if item['mode'] == 'magic':
struct_data.append(item['value'])
elif item['mode'] == 'hwmon':
struct_data.append(int(hwmon[item['driver']][item['feature']].get_value()))
else:
struct_data.append(globals()[item['mode']]())
dto = struct.pack(struct_fmt, *struct_data)
checkxor = 0
for byte in dto:
checkxor ^= byte
dto += struct.pack('<BI', checkxor, 0xCCCCCCCC)
serial.write(dto + b'\n')
print(f'send[{len(dto) + 1:>3}]: ', dto.hex(' '), "\\n")
time.sleep(1)
def read_serial(s: serial.Serial):
while True:
line = s.readline(1024)
if line.endswith(b'\n'):
line = line[:-1]
if len(line) > 0:
print(f"recv[{len(line):>3}]: ", line.decode(errors='replace'),)
def main():
if len(sys.argv) < 2:
print(f"Usage: {sys.argv[0]} [tty]")
exit(1)
sensors.init()
hwmon = {}
for chip in sensors.iter_detected_chips():
features = {}
for f in chip:
features[f.name] = f
hwmon[chip.prefix.decode()] = features
s = serial.Serial(port=sys.argv[1], baudrate=115200, timeout=0.5)
t = threading.Thread(target=read_serial, args=(s,))
t.start()
loop(s, hwmon)
if __name__ == '__main__':
main()

30
stats-viewer/glyphs.h Normal file
View File

@ -0,0 +1,30 @@
#define GLYPH_FAN "\xC0"
#define GLYPH_DEGC "\xB0""C"
#define GLYPH_HZ "\xC2"
#define GLYPH_AIO "\xC3"
#define GLYPH_AMD "\xC4"
#define GLYPH_RPM "\xC5"
#define GLYPH_BUTT_LEFT_EMPTY "\xC6"
#define GLYPH_MID_EMPTY "\xC7"
#define GLYPH_BUTT_RIGHT_EMPTY "\xC8"
#define GLYPH_BUTT_LEFT_FULL "\xC9"
#define GLYPH_MID_FULL "\xCA"
#define GLYPH_MID_FULL_END "\xCB"
#define GLYPH_BUTT_RIGHT_FULL "\xCC"
#define GLYPH_BUTT_LEFT_FULL_END "\xCD"
#define GLYPH_FAN_BOTTOM "\xCE"
#define GLYPH_FAN_TOP "\xCF"
#define GLYPH_FAN_BACK "\xD0"
#define GLYPH_VR_MOS "\xD1"
#define GLYPH_CHIPSET "\xD2"
#define GLYPH_MOBO "\xD3"
#define GLYPH_GPU "\xD4"
#define GLYPH_TEMP "\xD5"
#define GLYPH_SSD "\xD6"
#define GLYPH_LOAD "\xD9"
#define GLYPH_RAM "\xDA"
#define GLYPH_BUTT_LEFT_GRAY "\xDB"
#define GLYPH_MID_GRAY "\xDC"
#define GLYPH_MID_GRAY_END "\xDD"
#define GLYPH_BUTT_RIGHT_GRAY "\xDE"
#define GLYPH_BUTT_LEFT_GRAY_END "\xDF"

View File

@ -0,0 +1,449 @@
#include <Arduino.h>
#include <U8g2lib.h>
#include "stats_font1x1.h"
#include "stats_font2x2.h"
#include "glyphs.h"
#include "stats_dto.h"
#ifdef U8X8_HAVE_HW_I2C
#include <Wire.h>
#endif
#define DEBUG
#ifdef DEBUG
#define D
#else
#define D for(;0;)
#endif
#define SCROLL_SPEED 2
#define NO_DATA_TIMEOUT 5 * 1000
// I²C pins SCL, SDA
#define DISP1_PINS 22, 21
#define DISP2_PINS 33, 32
#define USE_ESP32_I2C_HAL
#ifdef USE_ESP32_I2C_HAL
#include "u8g2_esp32_hal.h"
#include "u8g2_esp32_hal.c"
class U8G2_CUSTOM_SSD1306_128X32_UNIVISION_F_ESP32_HAL_I2C : public U8G2 {
public: U8G2_CUSTOM_SSD1306_128X32_UNIVISION_F_ESP32_HAL_I2C(const u8g2_cb_t *rotation, uint8_t clock, uint8_t data, uint8_t reset = U8X8_PIN_NONE, uint8_t i2c_port = U8X8_PIN_NONE) : U8G2() {
u8g2_esp32_hal_t esp_hal = U8G2_ESP32_HAL_DEFAULT;
esp_hal.sda = (gpio_num_t) data;
esp_hal.scl = (gpio_num_t) clock;
if (reset != U8X8_PIN_NONE)
esp_hal.reset = (gpio_num_t) reset;
if (i2c_port != U8X8_PIN_NONE)
esp_hal.master_num = (i2c_port_t) i2c_port;
u8g2_esp32_hal_init((u8x8_t *)(&u8g2), esp_hal);
u8g2_Setup_ssd1306_i2c_128x32_univision_f(&u8g2, rotation, u8g2_esp32_i2c_byte_cb, u8g2_esp32_gpio_and_delay_cb);
}
public: ~U8G2_CUSTOM_SSD1306_128X32_UNIVISION_F_ESP32_HAL_I2C() {
u8g2_esp32_hal_free((u8x8_t *)(&u8g2));
}
};
U8G2_CUSTOM_SSD1306_128X32_UNIVISION_F_ESP32_HAL_I2C u8g2_d1(U8G2_R0, DISP1_PINS, U8X8_PIN_NONE, 0);
U8G2_CUSTOM_SSD1306_128X32_UNIVISION_F_ESP32_HAL_I2C u8g2_d2(U8G2_R0, DISP2_PINS, U8X8_PIN_NONE, 1);
#else
U8G2_SSD1306_128X32_UNIVISION_F_SW_I2C u8g2_d1(U8G2_R0, DISP1_PINS, U8X8_PIN_NONE);
U8G2_SSD1306_128X32_UNIVISION_F_SW_I2C u8g2_d2(U8G2_R0, DISP2_PINS, U8X8_PIN_NONE);
#endif
u8g2_uint_t f1x1h = 8;
u8g2_uint_t f2x2h = 16;
char tempLine0Format[] = GLYPH_AMD "%2d" GLYPH_DEGC " "
GLYPH_VR_MOS "%2d" GLYPH_DEGC " "
GLYPH_GPU "%2d" GLYPH_DEGC " "
GLYPH_CHIPSET "%2d" GLYPH_DEGC " "
GLYPH_MOBO "%2d" GLYPH_DEGC " "
GLYPH_SSD "%2d" GLYPH_DEGC " ";
char tempLine1Format[] = GLYPH_AMD " %s" GLYPH_HZ " "
GLYPH_LOAD " %2d.%02d %4d%%";
char fansLine0Format[] = GLYPH_AIO "%4d" GLYPH_RPM " "
GLYPH_GPU "%4d" GLYPH_RPM " "
GLYPH_CHIPSET "%4d" GLYPH_RPM " "
GLYPH_FAN_TOP "%4d" GLYPH_RPM " "
GLYPH_FAN_BOTTOM "%4d" " "
GLYPH_FAN_BACK "%4d" GLYPH_RPM " ";
char fansLine1Format[] = GLYPH_RAM " %2d%% %s %4dM" GLYPH_HZ;
char waiting_string[] = "Waiting for data from the computer... ";
u8g2_uint_t waiting_width;
u8g2_uint_t waiting_offset = 0;
u8g2_uint_t waiting_offset1;
u8g2_uint_t temp_page_offset = 0;
u8g2_uint_t fans_page_offset = 0;
struct line_buffers {
char line0[300];
char line1[30];
char line2[30];
};
// Two buffers to swap around and avoid blocking rendering
struct line_buffers tempLines_1 = {0};
struct line_buffers tempLines_2 = {0};
struct line_buffers fansLines_1 = {0};
struct line_buffers fansLines_2 = {0};
struct line_buffers *tempLines = &tempLines_1;
struct line_buffers *tempLines_next = &tempLines_2;
struct line_buffers *fansLines = &fansLines_1;
struct line_buffers *fansLines_next = &fansLines_2;
SemaphoreHandle_t stringsMutex;
stats_t stats;
byte bytes_read = 0;
bool stats_ever_received = false;
unsigned long last_received = 0;
bool receiveStats() {
size_t to_read = sizeof(stats_t) - bytes_read;
if (Serial.available() < 4) return false;
if (bytes_read == 0 && !Serial.find(MAGIC_START_ASSTR, 4)) {
return false;
} else if (bytes_read == 0) {
// Put back magic since Serial.find() strips it out
stats.magic_start = MAGIC_START;
bytes_read = 4;
// It also says it read them even though it doesn't place them in the buffer
to_read += 4;
}
D Serial.println(F("Magic found, accepting data"));
byte *buffer = (byte *) &stats;
bytes_read += Serial.readBytes(buffer + bytes_read, to_read);
D Serial.print(F("Read "));
D Serial.print(bytes_read);
D Serial.println(F(" bytes from serial"));
if (bytes_read >= sizeof(stats_t)) {
#ifdef DEBUG
char printbuf[100];
sprintf(printbuf, "Received %d bytes, wanted %d == sizeof(stats_t)", bytes_read, sizeof(stats_t));
Serial.println(printbuf);
Serial.print(F("buffer: "));
for (byte *ptr = buffer; ptr < buffer + sizeof(stats_t); ptr++) {
sprintf(printbuf, "%02x ", *ptr);
Serial.print(printbuf);
}
Serial.println();
Serial.println(F("Check magic start"));
#endif
if (stats.magic_start != MAGIC_START) goto invalidate;
D Serial.println(F("Check magic end"));
D Serial.println(stats.magic_end, HEX);
if (stats.magic_end != MAGIC_END) goto invalidate;
uint8_t checkxor = 0;
for (byte *b = (byte *) &stats; b < &(stats.checkxor); b++) {
checkxor ^= *b;
}
D Serial.println(F("Checking check xor"));
D Serial.print(F("Computed: "));
D Serial.print(checkxor, HEX);
D Serial.print(F(" at offset "));
D Serial.println((uint32_t) ((uint32_t) &(stats.checkxor) - ((uint32_t) &stats)));
D Serial.print(F("Got: "));
D Serial.println(stats.checkxor, HEX);
if (stats.checkxor != checkxor) goto invalidate;
D Serial.println(F("Checks passed, data accepted"));
bytes_read = 0;
return true;
} else {
return false;
}
invalidate:
D Serial.println(F("Invalid data, ignoring"));
bytes_read = 0;
return false;
}
void drawWaitingForData(U8G2 *u8g2, u8g2_uint_t *offset) {
u8g2->clearBuffer();
u8g2_uint_t x = *offset;
u8g2->setFont(u8g2_font_helvR18_tf);
do {
u8g2->drawStr(x, 26, waiting_string);
x += waiting_width;
} while( x < u8g2->getDisplayWidth() );
yield();
u8g2->sendBuffer();
(*offset) -= SCROLL_SPEED;
if ( (u8g2_uint_t)(*offset) < (u8g2_uint_t)-waiting_width )
(*offset) = 0;
}
void drawWaitingForDataAllDisplays() {
drawWaitingForData(&u8g2_d1, &waiting_offset);
drawWaitingForData(&u8g2_d2, &waiting_offset1);
}
void format_freq(char *dest, uint16_t value) {
if (value >= 1000) {
sprintf(dest, "%4dM", value);
} else {
sprintf(dest, "%1d.%03dG", value / 1000, value % 1000);
}
}
void format_bar(
char *buffer, uint8_t total_tiles, uint16_t full_perc, uint16_t gray_perc, uint16_t perc_max) {
memset(buffer, 0, total_tiles + 1);
int32_t gray_tiles = (((int32_t) gray_perc) * 1024) / ((int32_t) perc_max) * total_tiles / 1024;
int32_t full_tiles = (((int32_t) full_perc) * 1024) / ((int32_t) perc_max) * total_tiles / 1024;
// Pick left butt tile
if (full_tiles == 1 && gray_tiles == 0)
strcat(buffer, GLYPH_BUTT_LEFT_FULL_END);
else if (full_tiles == 0 && gray_tiles == 1)
strcat(buffer, GLYPH_BUTT_LEFT_GRAY_END);
else if (full_tiles > 0)
strcat(buffer, GLYPH_BUTT_LEFT_FULL);
else if (gray_tiles > 0)
strcat(buffer, GLYPH_BUTT_LEFT_GRAY);
else
strcat(buffer, GLYPH_BUTT_LEFT_EMPTY);
// Draw full tiles
for (char i = 0; i < full_tiles - 2; i++)
strcat(buffer, GLYPH_MID_FULL);
if (full_tiles < total_tiles && gray_tiles == 0)
strcat(buffer, GLYPH_MID_FULL_END);
else if (gray_tiles > 0)
strcat(buffer, GLYPH_MID_FULL);
// Draw gray tiles
for (char i = 0; i < full_tiles - 1 - (full_tiles > 0 ? 0 : 1); i++)
strcat(buffer, GLYPH_MID_GRAY);
if (gray_tiles < total_tiles)
strcat(buffer, GLYPH_MID_GRAY_END);
// Draw empty tiles
for (char i = 0; i < total_tiles - 1 - gray_tiles - full_tiles; i++)
strcat(buffer, GLYPH_MID_EMPTY);
// Pick right butt tile
if (full_tiles == total_tiles)
strcat(buffer, GLYPH_BUTT_RIGHT_FULL);
else if (gray_tiles == total_tiles)
strcat(buffer, GLYPH_BUTT_RIGHT_GRAY);
else
strcat(buffer, GLYPH_BUTT_RIGHT_EMPTY);
}
void format_size(char *buffer, uint32_t megabytes) {
if (megabytes < 2000) {
sprintf(buffer, "%4dMB", megabytes);
} else {
sprintf(buffer, "%4.2fGB", (float) megabytes / 1024);
}
}
void drawStatsPage(
U8G2 *u8g2, struct line_buffers *lines, char *minibanner,
u8g2_uint_t mb_w, u8g2_uint_t mb_h, u8g2_uint_t *offset) {
u8g2->setFont(stats_font2x2);
u8g2_uint_t line0_width = u8g2->getStrWidth(lines->line0);
u8g2->clearBuffer();
// Line 0
u8g2_uint_t x = *offset;
u8g2->setFont(stats_font2x2);
do {
u8g2->drawStr(x, f2x2h, lines->line0);
x += line0_width;
} while( x < u8g2->getDisplayWidth() );
// Minibanner
u8g2->setDrawColor(0);
u8g2->drawBox(0, 0, mb_w, mb_h);
u8g2->setDrawColor(1);
u8g2->drawStr(0, f2x2h, minibanner);
// Line 1
u8g2->setFont(stats_font1x1);
u8g2->drawStr(0, f2x2h + f1x1h + 1, lines->line1);
// Line 2
u8g2->drawStr(0, f2x2h + 2*f1x1h, lines->line2);
yield();
u8g2->sendBuffer();
(*offset) -= SCROLL_SPEED;
if ( (u8g2_uint_t) (*offset) < (u8g2_uint_t) -line0_width )
(*offset) = 0;
}
void sprintfStrings() {
uint8_t total_8x8_tiles = u8g2_d1.getDisplayWidth() / 8 - 3;
char tmp_buf[20] = {0};
// Temps page
sprintf(tempLines_next->line0, tempLine0Format,
stats.cpu_temp,
stats.vr_mos_temp,
stats.gpu_temp,
stats.chipset_temp,
stats.system_temp,
stats.ssd_temp);
format_freq(tmp_buf, stats.cpu_freq);
sprintf(tempLines_next->line1, tempLine1Format,
tmp_buf, stats.cpu_load_avg / 100, stats.cpu_load_avg % 100, stats.cpu_perc
);
format_bar(
tempLines_next->line2, total_8x8_tiles,
stats.cpu_perc - stats.cpu_perc_kernel, stats.cpu_perc_kernel, stats.cpu_perc_max);
// Fans page
sprintf(fansLines_next->line0, fansLine0Format,
stats.pump,
stats.gpu_fan,
stats.chipset_fan,
stats.top_fan,
stats.bottom_fan,
stats.back_fan);
format_size(tmp_buf, stats.ram_used);
sprintf(fansLines_next->line1, fansLine1Format, stats.ram_perc, tmp_buf, 3200);
format_bar(
fansLines_next->line2, total_8x8_tiles, stats.ram_perc, stats.ram_perc_buffers, 100);
struct line_buffers *temp_ptr = tempLines;
struct line_buffers *fans_ptr = fansLines;
xSemaphoreTake(stringsMutex, portMAX_DELAY);
tempLines = tempLines_next;
fansLines = fansLines_next;
xSemaphoreGive(stringsMutex);
tempLines_next = temp_ptr;
fansLines_next = fans_ptr;
}
void displaysTask(void *pvParameters) {
Serial.print("Handling displays on core ");
Serial.println(xPortGetCoreID());
while (true) {
if (!stats_ever_received) {
drawWaitingForDataAllDisplays();
yield();
continue;
}
xSemaphoreTake(stringsMutex, portMAX_DELAY);
struct line_buffers *templines_ptr = tempLines;
struct line_buffers *fanslines_ptr = fansLines;
xSemaphoreGive(stringsMutex);
drawStatsPage(&u8g2_d1, templines_ptr, GLYPH_TEMP, 10, 32, &temp_page_offset);
drawStatsPage(&u8g2_d2, fanslines_ptr, GLYPH_FAN, 16, 32, &fans_page_offset);
yield();
}
}
void receiverTask(void *pvParameters) {
Serial.print("Handling incoming data on core ");
Serial.println(xPortGetCoreID());
while (true) {
yield();
if (receiveStats()) {
sprintfStrings();
last_received = millis();
stats_ever_received = true;
}
delay(10);
}
}
void setup() {
// Fuck this shit and fuck your "wifi" and "important stuff"
disableCore0WDT();
Serial.begin(115200);
Serial.setTimeout(0);
stringsMutex = xSemaphoreCreateMutex();
#ifdef USE_ESP32_I2C_HAL
u8g2_d1.setI2CAddress(0x78);
u8g2_d2.setI2CAddress(0x78);
#endif
u8g2_d1.begin();
u8g2_d1.setPowerSave(0);
u8g2_d1.setFontMode(0);
u8g2_d1.setAutoPageClear(0);
u8g2_d1.setFont(u8g2_font_helvR18_tf);
waiting_width = u8g2_d1.getStrWidth(waiting_string);
waiting_offset = 0;
u8g2_d2.begin();
u8g2_d2.setPowerSave(0);
u8g2_d2.setFontMode(0);
u8g2_d2.setAutoPageClear(0);
u8g2_d2.setFont(u8g2_font_helvR18_tf);
waiting_offset1 = (u8g2_uint_t) -u8g2_d2.getDisplayWidth();
delay(500);
xTaskCreatePinnedToCore(displaysTask, "DisplaysTask", 10000, NULL, 4, NULL, 0);
xTaskCreatePinnedToCore(receiverTask, "ReceiverTask", 10000, NULL, 4, NULL, 1);
}
void loop() {
// Avoid task watchdog firing
vTaskDelete(NULL);
}

41
stats-viewer/stats_dto.h Normal file
View File

@ -0,0 +1,41 @@
#include <stdint.h>
#define MAGIC_START 0xAAAAAAAA
#define MAGIC_START_ASSTR "\xAA\xAA\xAA\xAA"
#define MAGIC_END 0xCCCCCCCC
typedef struct __attribute__((packed)) stats {
uint32_t magic_start; // int
// Temps
uint8_t cpu_temp;
uint8_t vr_mos_temp;
uint8_t gpu_temp;
uint8_t chipset_temp; // int
uint8_t system_temp;
uint8_t ssd_temp;
// Fans
uint16_t pump; // int
uint16_t gpu_fan;
uint16_t chipset_fan; // int
uint16_t bottom_fan;
uint16_t top_fan; // int
uint16_t back_fan;
// CPU + RAM
uint16_t cpu_freq; // int
uint32_t cpu_load_avg; // int
uint32_t ram_used; // int
uint16_t cpu_perc;
uint16_t cpu_perc_max; // int
uint16_t cpu_perc_kernel;
uint8_t ram_perc;
uint8_t ram_perc_buffers; // int
uint8_t padding1;
uint16_t padding2;
uint8_t checkxor; // int
uint32_t magic_end;
} stats_t;

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,77 @@
/*
Fontname: UNTITLED
Copyright: Designer of this font retains full rights under the law
Glyphs: 191/192
BBX Build Mode: 0
*/
const uint8_t stats_font1x1[2237] U8G2_FONT_SECTION("stats_font1x1") =
"\277\0\3\2\4\4\3\5\5\12\13\0\376\10\376\10\376\1_\2\324\10\240 \5\0\204\23!\7\201\205"
"\23\227\0\42\7#\265\24\211\22#\20v\204VI\226D\203\224$\203\224dI\4$\20\245|V\331"
"RQ\262-\211\22\245\262E\0%\21\210\204\71RK\246\344@\234\3\211\226D%\5&\16\206\205\70"
"Z\324\246E\211\226D\246\0'\6!\264\22\2(\13\243tTI\224DmQ\26)\14\243u\24Y"
"\224E-Q\22\1*\7\63\254\24I\7+\12U\214Va\64Ha\4,\7\62t\63\211\2-\6"
"\23\234\24\3.\6\21\205\23\1/\12\203\204S\225\250%\212\0\60\12\205\204\66K\346[\262\0\61\7"
"\202\205\66K\37\62\14\205\204\66K\26\226\244,\34\4\63\15\205\204\66K\26Fj\250%\13\0\64\16"
"\205\204v\231\224DI)\31\264\60\1\65\15\205\204\66C\22\206k\250%\13\0\66\15\205\204\66K&"
"\16IfK\26\0\67\13\205\204\26\203\230\25\263\260\6\70\15\205\204\66K\246%KfK\26\0\71\15"
"\205\204\66KfK\206PK\26\0:\7a\205\23a\0;\11\202t\63\71\224(\0<\10S\215V"
"I\255\0=\10\64\224\25C\70\4>\10S\215\26Y\245\4\77\14\204\205\66J\224E\265\34\210\0@"
"\27\232|{\203\230F\221\222H%%\213\224\250\22)Z\216\15\32\0A\16\207\204wq\232\204IV"
"\32\224T\15B\15\205\205\27C\222i\203\222\331\6\5C\14\206\205\70C\22\252\35\223!\1D\15\206"
"\205\30C\224%\241\267d\210\0E\13\205\205\27\307p\30\213\203\0F\13\205\205\26\307pH\302F\0"
"G\15\206\205\70C\22\252\265QL\6\1H\13\206\205\30\241q\30D\307\0I\7\201\205\23\7\1J"
"\11\204\204u\275I\211\2K\16\205\205\27\231\224\224\246J\224dZ\0L\11\204\205\26Y\337\206\0M"
"\20\207\205\31\351\66dKE\251H\221\24I\5N\17\206\205\30\332\246DJ$%R\242m\2O\14"
"\206\205\70C\22\372\230\14\11\0P\14\205\205\27C\222i\203\22\66\2Q\23\227}\70C\24&a\22"
"&a\22%\65i\320\201\0R\14\205\205\27C\222i\203\222\271\5S\14\205\205\67K\246\256\232\226,"
"\0T\11\205\204\25\203\24\366\11U\12\206\205\30\241\37\223!\1V\20\207\204\27\251\232dQ\26e\225"
"\60I\63\0W\20\211\204\31Y\246U\242\276\264\25\263\60\213\0X\15\205\205\27\231\226\324*QR\323"
"\2Y\16\207\204\27i\222EY%L\322\270\6Z\13\205\205\27\203\230\25\263\342 [\10\242u\23K"
"\277\10\134\12\203\204\23Q\26\265E\1]\10\242t\23J\277\14^\12U\234Va\226DI-_\6"
"\26t\26\7`\7\42\274\23Q\0a\14e\204\25k\264DI\24)\1b\14\205\204\26a\305\244i"
"\223\242\0c\12d\204\65J\244\225\22\5d\13\205\204\226\25\323fR\224\0e\13d\204\65J\64l"
"Q\242\0f\12\204\204TJ\64e\235\0g\14\205t\66\246\315\244(a\262\0h\12\205\204\26a\305"
"\244\271\5i\7\201\204\22\311\60j\6\21t\22\1k\14\204\204\25YII\244\244$\5l\7\201\204"
"\22\7\1m\16g\204\30\213\22ER$ER$\25n\11e\204\26\211Is\13o\12e\204\66K"
"\346\226,\0p\15\205t\26\211I\323&E\11C\0q\13\205t\66\246\315\244(a\1r\11c\204"
"\24\311\22\65\1s\13d\204\65J\224\210R\242\0t\12\203\204\64Q\262DM\2u\10d\204\25\221"
"\247dv\14e\204\26\231\226\224\222,\214\0w\17g\204\30Q$U\232\222Z\22&\21\0x\13e"
"\204\26YR\253\324\264\0y\13\204t\65Y\245I\312\22\11z\12d\204\25C\26\265\15\1{\13\243"
"tSIT\311\242\266\0|\7\241u\23\17\1}\13\243t\23YTK\242\226\10~\7&\234\67\222"
"\5\240\5\0\204\23\241\7\201u\23\311\60\242\16\205}v\321RQ\242$J*S\6\243\14\205\204V"
"R%\333\302\222\242\0\244\14d\214\25Q\242DR\242D\1\245\16\205\204\26\231-\251\14R\64H\21"
"\0\246\10\241u\23C\64\4\247\17\245t\66K\66.\321\20%\343\226,\0\250\7\23\274\23I\0\251"
"\16w\205Y[%R\224LRj\331\4\252\10S\234\24\223\222\15\253\12U\204VIoI\226\4\254"
"\7\65\225\27\203X\255\6\23\234\24\3\256\15w\205Y[%YLJ\267l\2\257\6\23\274\23\3\260"
"\12D\244\64J$%\12\0\261\14u\204Va\64Ha\16\14\2\262\7C\244\63Ke\263\10C\244"
"\23K\266\0\264\7\42\274\63\12\0\265\12\204t\25\221\247a\313\0\266\25\246t\66\303\240$K\262D"
"J\226dI\226dI\226$\0\267\6\22\234\23\2\270\6\42t\63\3\271\7B\244\63K\1\272\11S"
"\234\24C\62d\3\273\13U\204\26I\226dIO\0\274\23\211\204\71Y\246\205Q\32\345@\26FZ"
"\64Da\2\275\20\210\204\71Y\244\225\302(\216\264\244\224\225\6\276\23\211\204\31;\220\245Q&\345H"
"\24Fb\62Da\2\277\14\204uV\71\220E\265(Q\0\300\22\210\204X\261\62)C\62\304C\62"
"$\322\42G\0\301\14\207\204\70i\222,\345\356\300\0\302\24\210\204\30Q\30\205Q\62D\331 %Q"
"%J\242\312\0\303\22\210\214\30\77\244\311\240$\303\64H\311\60\15!\0\304\22\210\204\30\7e\30b"
"%\34\302!\34\206d\330\2\305\20\207\205\30\222\322\62)\355\230\42%\245,\1\306\12g\205\70\303\20"
"\267\3\7\307\12h\204\30\7\235\343\60\10\310\13g\204\30w .\17C\2\311\15g\205\70\303\20'"
"\303\62\354\300\1\312\15h\204\30\7\35\31>\344\310\60\10\313\15h\204\30\7\35\31\246a\307\206A\314"
"\15g\204\30w\340\62,\361\60$\0\315\16g\205\70\303\20'C\222\14I\16\34\316\14\206\205\30\241"
"\27exP\224\0\317\14\206\205\30\211\62<(F\307\0\320\21x\214\30\322\220\230\222\266$*Fa"
"\24)\0\321\17w\214\30/\311\220$\203\62\34\222N\5\322\23\210\204X\265a\21\225d\210\222!\21"
"\225a\213\42\0\323\17\210\204\30\217\211%\261$\362\260\314\303\1\324\23\210\204\30\207\34\31\222H\213\224"
"\322\220\14\71pP\0\325\14u\216XY\22]\206C\262\0\326\14e\215\70K\66\14\231\226,\0\327"
"\12U\214\26YR\253\324\2\330\23\246}\270\311\220dS\42%J\244D[\62$)\0\331\22\226\205"
"\70C\64d\322pH\6eP\6e\30\2\332\17h\214\70\303\220\244\303!]Z\206!\1\333\14g"
"\205\70\303\20GI\27\35\70\334\15h\204\30\7\35\351\224\264#\303 \335\15h\204\30\7\35iLr"
"t\30\4\336\14g\204\30w@\351)\36\206\4\337\14g\205\70\303\20GI\247\34\70\340\16\225\204\65"
"i\16\254\321\22%Q\244\4\341\16\225\204UY\216\254\321\22%Q\244\4\342\16\225\204UY\22\257\321"
"\22%Q\244\4\343\16\225\204\65\335\201\65Z\242$\212\224\0\344\15\205\204\65\345\65Z\242$\212\224\0"
"\345\17\225\204UY\222Ek\264DI\24)\1\346\16g\204\30\213\30%\303\20eQ\305\2\347\14\204"
"t\65J\244\225\22-R\0\350\15\224\204\65a\254D\303\26%\12\0\351\15\224\204Uu@\211\206-"
"J\24\0\352\15\224\204\65Q\22+\321\260E\211\2\353\15\204\204\25I\254D\303\26%\12\0\354\6\21"
"\304\22\1\355\11\222\204\62Z\322\13\0\356\10\222\204\62b\322\3\357\10\202\204\22a\322\3\360\15\225\204"
"\66\341 E\203\346\226,\0\361\13\224\204\65\211\222.\221\247\0\362\14\225\204\66i\216,\231[\262\0"
"\363\13\225\204vud\311\334\222\5\364\15\225\204VY\222\3K\346\226,\0\365\14\225\204VI;\260"
"dn\311\2\366\13\205\204\66u`\311\334\222\5\367\12U\214V\71\60\350@\4\370\15f\204VS\244"
"\264HI\246,\0\371\12\224\204\65a\32yJ\6\372\12\224\204uQ\32yJ\6\373\13\224\204\65Q"
"\222F\236\222\1\374\12\204\204\25I\32yJ\6\375\14\244tuiVi\222\262D\2\376\16\245t\26"
"a\305\244i\223\242\204!\0\377\14\244t\65\325\254\322$e\211\4\0\0\0\4\377\377\0";

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,130 @@
/*
Fontname: -Adobe-Helvetica-Medium-R-Normal--20-140-100-100-P-100-ISO10646-1
Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved.
Glyphs: 191/192
BBX Build Mode: 0
*/
const uint8_t stats_font2x2[3913] U8G2_FONT_SECTION("stats_font2x2") =
"\277\0\4\3\5\5\4\5\6\22\26\377\374\16\374\16\374\2=\4\310\17, \6\0 ,\1!\12\302"
")\64\341\301D\24\1\42\11\245`.A\202\27\2#!\252!T)$,$,$\346@\342@&"
"$,$,$\346@\342@&$,$,$\10\0$\35\11\246S)\254\346B$BI\320D\24"
"Y\31U\10IHE\304\304MY`\20\0%#\256%\204\203HFD\221\210\42\21\11)\21\11\61"
"\12aY\21\62\11\21!\21E\42j\224\310\10Q\0&\36\254%l\205\316LDLD\216\256lb"
"BDFBD\210Dhf\244\306b\206f\0'\7\241d\36\241\0(\21D\42\63'DBDB"
"D\377FDF&\0)\21D&\63!F\211\214\210\376\205\210\204H\14\0*\16\345\344=%E\204"
"I\210E\222\20\0+\16H%TGL\233\203\3\31\61m\0,\12\242d+\201\42B\2\0-\7"
"%`\65\241\0.\7B$,\201\0/\16\305!,G'\62Jd\224\310h\3\60\21\250%T\205"
"\306D\205\20\77\222\20\21\261!\1\61\12\245)T\347\240F\377\1\62\21\250%T\205\344BHLj"
"h\257\304\16\16\4\63\25\250%T\245\344@\210HJh\212l\214\210f\302\206\4\0\64\30\251!T"
"Ml\212HBFDFD\215\204\220\304\301\1\231\234\12\0\65\25\250%T\341\342BL\314\344Bf"
"L\214\210\346`\244\4\0\66\24\250%T\205\346B\206L\305\310\205\20\243\32\11\33\22\0\67\22\250%"
"T\341\201\230\224\62)\61)\61)\61U\0\70\27\250%T\205\306b\244\210HBD\304b\244\210\250"
"d\302\206\4\0\71\25\250%T\205\306B\246\210\221\304\311\204\230\30\215\304I\11\0:\10B%,\201"
"\230\0;\13\242e+\201\230\42B\2\0<\16(%TM\210\204fHn\214\231\0=\11\247\250\134"
"\341\335\301\1>\17(%TA\214\331\234\320\14\11\221\30\0\77\23\307%T\243\342@\206Fhf\221"
"\224z )\31\0@.\60f\223\315\360`jlFRD\206\42DBdb\204F\11\211\214\14\211"
"\214\210\204\210\214\210\204\210N\16\204D&\246\306\307\17$\255\0A\33\314!lKT\222\220NDL"
"DJH\243\203\230\203\21\61\21\61\11AB\1B\36\313%l\341 \346@DjBLBLBJ"
"\344@\344`B\254\216\331\201\305\201\10\0C\30\314%t\251\352@djB\256RT\323Q\71\211\251"
"\221\3\251\32\0D\30\314%t\341@\346`DlBNB\220\337I\210M\34\214\34\310\0E\22\312"
")l\341\203@\15\17$\16$\4\65<\70\60F\20\311)d\341\201\235v\7\21\7\21rz\7G"
"\32\315%|\311\352`dlB\260\220V\331\203@\11A\211\261\221\3\42\13\1H\16\313%tA\216"
"\357\16\36\324\361\235\0I\7\302)\64\341\7J\16\310!TM\177FDT\62aC\2K \314)"
"lAlBjDhFfHdJb\254\316LdJfHhFjDlBn\0L\14\311%"
"\134AN\377\273\203\3\2M\36\316%\204A\224\264\320\360\354 \314BH\202BH\202D\11\211\22\232"
"\220\30\216\204\210\24N\32\313%tA\256\314\312\212B\210D\206D\206F\204F\204H\202\312Y\235\0"
"O\32\315%|\251\354@fjDNb\256\222\313\272\11\71\221\251\231\3\261\42\0P\24\312)l\341"
" \344@B\252\214\325A\305A\210\240\36\2Q\36\355\345{\251\354@fjDNb\256\222\313\42\211"
"\11!\11\221!\232\3\261\12Y\11\0R\30\313%t\341@\344`B\254\216\331\201\305\201\210\230\204\230"
"\204\34w\2S\26\312%l\207\350 b\250\254\260\256p!Y\321\304A\214\11\0T\14\312%d\341"
"\201\221\240\376G\0U\20\313%tA\216\377\235\204\224\310\201P\15\0V\33\314!lA\220PBL"
"DLDLFH\257D\304D\304D\344\10)\245\0W(\320%\224AJ\212J\212J\212\210HB"
"\206FD&$FD\177#!\42!$!\42!$\21\24!\65\64\246\33\0X\34\313%lA\216"
"NBJdfF\225\204\334\340\234\204\224\214\314\22)\11\71:\1Y\27\314!lA\220PBLD"
"LFHhdJD\216RT\257\0Z\17\312%d\341\201\241\234\356\346txp`[\14D\42+"
"\341`D\377O\16\2\134\16\305!,AF\221\214\42\31\215d\64]\14D\42+\341 D\377O\16"
"\6^\16\307\344M'jFBDB\15\215\0_\10K [\341\203\0`\10d\340&AF\1a"
"\26I%\134\303d\205\220\330\310\305\214\204\220\204\220\304\10\5\211\0b\26\311%\134AN\27$\7\21"
"\63\22R\134\325H\34DH\220\0c\20H%T\245\344B\206L;\31\211\223\12\0d\25\311%\134"
"O'\24\22\7\21\62U\134I\310L\34\204P\10e\22H%T\205\306B\210\350\240LlF\342\204"
"\4\0f\17\306!\64g\204DH\344\240DH\77\1g\32\311%[\205B\342 B\210\212+\11\231"
"\211\203\20\12\71\11\31\221\243\31\0h\17\310%TAL\27\24\7\64D\374H\0i\12\302%$\201"
"\350\340\300\0j\15D\36#E\251\210\376\223\3\11\0k\27\310%LAL\67\22\42*d\210j$"
"dD\224L\310H\310\14l\7\302%$\341\7m\33N%\204A\202\204\342\340`f\206H\210H\210"
"H\210H\210H\210H\210H\1n\15H%TA\202\342\200\206\210\37\11o\22I%\134\245\346DF"
"B\212+\11\31\221\233\22\0p\27\311%[A\202\344 bFB\212\253\32\211\203\10\11\22\71\355\0"
"q\25\311%[\205B\342 B\246\212+\11\231\211\203\20\12\71\35r\14E%\64A\202\242DF\337"
"\0s\21G%L\205\344 \206\312\246\212\346 \204\4\0t\16\246!\64EH\311A\211\220\36\321\14"
"u\14H%TA\210\277\71\240\240\20v\21H%TA\210\221\204\210\336\204\4Q\211\311\0w\34L"
"%tAF\206F\206F\205\210\276\10\211\220\211\10\211\10\32\231\22\21\23\221\1x\24H%TA\250"
"dBD\206JL\212FDb\244H\0y\23\310%SA\210\221\204\210\336\204\4Q\211i\64\65\4"
"z\13G%L\341\225\220^\35\34{\16F\36\63IF\221nT)\322+\5|\10B&+\341\17"
"\2}\17F\42\63AJ\221\256\324(\322\33E\0~\13h$Uc\344\240d\2\0\240\6\0 ,"
"\1\241\13\302)\63\201*\342\340`\0\242\34\310\245S+.\250\344B\42\202$F$F$F$H"
"\42B\342\244(.\10\0\243\26\251!T\207\310DHBHBP\314JNL\325AE\5\0\244\16"
"\350\344TA\350`BD/\16\206\4\245\24\250%TA\210HBDoH\16bd\16b\304\264\1"
"\246\11B&+\341\341\301\1\247\34H&S\205\306B\210\310\252FbB\246\250FbD\244j\254\210"
"H\302\206\4\0\250\11E \67A\202B\0\251$\315%|\251LJ&\62$f&\42&\215HP"
"\214H\240H\240H\240L\26\61\63!\221\61RbE\0\252\17\5\245=c\42Dd\42dBET"
"\1\253\16\307\244LEBO$d$d$\4\254\11\251\344\134\341\1\235\6\255\7%`\65\241\0\256"
"(\315!t\251LJ&\62$\244$\42&(D&(D&(D\246F&$H&\213\220\240\210"
"\220\310\30)\261\42\0\257\7% /\241\0\260\15\245$>cBbfBb\2\0\261\20h%T"
"GL\315\301\201\214\230\332\203\3\1\262\15\5a\65c\302DFD\311\301\0\263\16\5a\65c\302D"
"\215D\310\305\4\0\264\11d\340&EB\11\0\265\17\310%SA\210\37\225\34XH\220i\6\266*"
"H&S\305b$\202$\202$\202$\202$\202$d$F$($($($($($($"
"($($($\2\0\267\7B$%\201\0\270\13\245 +Cf\210\302\2\0\271\11\4a\65\345"
"`D\17\272\16\5\245=cBbFfBb\254\0\273\17\307\244LABFBFBDBO\0"
"\274\42\256!|EL\204L\204J\221\230\220\230\214L\214L\214\22\221\61\21\62\11U\42\66bBb"
"\22\0\275 \256!|EL\204L\204J\221\230\220\230\214\304\214LD\211\212\20)\215\244\204\244\204j"
"\204\12\276%\256!|cL\244J$DHJHLH(DMDI\214\310\210\310\230\10\231\204*"
"\21\33\61!\61\11\0\277\23\307%SGJ\36HJ\321\314\42\31\232\3\211\12\0\300\37\316%\204I"
"\226\262d\210\244\206\342f\342\210FD\206\350b\346\202\246\204h\244\222V\10\0\301\24\213e\204C\250"
"$QHD\230Hdh\266\241\261\261\4\302\42\215%\204A(L(L(L(\342(j(\352 "
"\210(FB(DQ\204\214P\204\214PD\1\303\36\320!\204\341\377 \66$\70$\70$\70$\310"
"$\321AH\224Q\224\211\330A\240\35\0\304 \316!\204\341\305\201\311A\315\1M\30\211\30\305\330A"
"\330A\330A\330\301\3\223\3\242\3\261\0\305&\253%\204\201\204B$Bd$B\244\204B$BF"
"$BF$B\36bDHB\42H(H(H(\4\0\306\22\314q\204\351 D\62\66\64\66\217"
"c\203\205\17\2\307\15\320a\204\341\201<\376\217\17\16\4\310\26\317a\204\341\200\36@\36 <\36 "
"<\257\303\203E\16\210\0\311%\317e\204\351\200D\70\346`\42\342\300\344\300\342\340\342\340\342\340\342\340"
"\344\240\42\342\240\42\346`D\36\340\200\0\312\22\320a\204\341\201<\304\301\377\377\37\330C\34\34\10\313"
"$\320a\204\341\201<\304\301\330A\210\320\201H\320\301\204\314\201\315\201\315\201\315A\321A\321\301<\334"
"\301\201\0\314)\317a\204\341\200\36@\344`&\342 D\42\342@$\344\200B\342\340\342\340\342\340\342"
"\300\344\300\42\342`&X\344\200\10\0\315)\317e\204\351\200D\70\206.\202D(\244$(\342B&"
"\342`&\342`&\342`&\344 *\342 *\206P\36\340\200\0\316\24\311%\134\341`N\237\214H"
"T\350\242BdD\356`\0\317\24\311%\134\341`NdD\242B\27\25\42#rzw\60\320\61\357"
"!\204Y\64\42$R&hd$DF(bD\42(\42d$&$($B&($,($"
",\42$YPHXPD\334\210\354$\0\321\33\311%\134\245\346\342`\42\311D\26\22I($\42"
"\16\16J\42\322\204\344\177\1\322!\255%\204'\42\253\3\231\3\212\42\212\251\11\222\213\21\13\222\213\251"
"\211\42\212\3\232\3\251\210l\0\323(\316%\204\341A\260\310HD\210\310HD\210\310HD\210\134D"
"\210\360AP\204\360AH\214h\304AH\214\360\301A\0\324*\257!\204\341\300\36 \36 Db\42"
"$\42M\210HD\212\212\220\210$\62!\21!\22A\42\341\321\21\7\66\21\71;\220\2\325\25\245)"
"L%&\42$\42$\42$\42d\27\7\7\21\23\0\326\32\253%l\345&.\42f\335\304\305\334\304"
"\305\334\304\305\334\304E\272\230\23\0\327\25*!TALBHFD\212N\216JDFHBL\0"
"\330)\316!|\253D\346`fJH\212dHbBHFBFHB&JBDJB\325\310\230"
"\314\324\210\304A\210L\21\0\331$\314%t\211.(JH&$\213\320\301\203\203\11\211%\22)("
"D$($R\314Ddq\60s\20\2\332\23K&tMP=\204\34\377;\11)\221\3\241\32\0"
"\333\24K&tK\220LDZ\216\377\235\204\224\310\201P\15\0\334\24+&tEFHFZ\216\377"
"\235\204\224\310\201P\15\0\335\32L\42lOR=\210 \241\204\230\210\230\214\220\320\310\224\210\34\245\250"
"^\1\336\26\312%dAP\341A\310\201\204T\31\253\203\212\203\20A\205\0\337\22\307%Le\246B"
"\206\27\23\22\23\62\274\260\230\0\340\30\311%\134EP\265\311\12!\261\221\213\31\11!\11!\211\21\12"
"\22\1\341\31\311%\134IL=\200\311\12!\261\221\213\31\11!\11!\211\21\12\22\1\342\32\311%\134"
"G\214HD\330d\205\220\330\310\305\214\204\220\204\220\304\10\5\211\0\343\35\311%\134E$&B\42&"
"D\332d\205\220\330\310\305\214\204\220\204\220\304\10\5\211\0\344\33\311%\134CDFD\36\314d\205\220"
"\330\310\305\214\204\220\204\220\304\10\5\211\0\345\34\311%\134G,$*$L\312d\205\220\330\310\305\214"
"\204\220\204\220\304\10\5\211\0\346\36N)\214\303\202d\344 BH\325\220\304\301\201\214\230\220\230\320L"
"\311\201\4E\4\11\0\347\25\310%S\245\344B\206L;\31\211\223\42\71\31\11\31\32\0\350\24\310%"
"TEN\61\215\205\20\321A\231\330\214\304\11\11\0\351\24\310%TIJ\71\215\205\20\321A\231\330\214"
"\304\11\11\0\352\26\310%TG\212FD\226\306B\210\350\240LlF\342\204\4\0\353\25\310%TC"
"D{ \32\13!\242\203\62\261\31\211\23\22\0\354\14\304!$AF\225\210\376\5\0\355\14\304!$"
"EB\235\210\376\5\0\356\16\306\35$E\206BDPH\377\4\0\357\15\305!$A\202BVF\377"
"\4\0\360\30\311%\134CPBh*D\252\346DFB\212+\11\31\221\233\22\0\361\23\310%TE"
"$\205DH\210\250\4\305\1\15\21\77\22\362\24\311%\134EPy\315\211\214\204\24W\22\62\42\67%"
"\0\363\25\311%\134KL=@\315\211\214\204\24W\22\62\42\67%\0\364\26\311%\134G\214HD\272"
"\346DFB\212+\11\31\221\233\22\0\365\31\311%\134E$&B\42&D\274\346DFB\212+\11"
"\31\221\233\22\0\366\26\311%\134E\215\210<X\315\211\214\204\24W\22\62\42\67%\0\367\16\10eT"
"GL\366\340@VL\6\0\370\30K!\134iD\344 F\33\22\25\42\22\42\42\64\332\34\204\210\14"
"\1\371\16\310%TEN\251\20\177s@A!\372\16\310%TK[!\376\346\200\202B\0\373\20\310"
"%TG\212FDR\210\277\71\240\240\20\374\20\310%TCD{\20!\376\346\200\202B\0\375\25H"
"&SK[!F\22\42z\23\22D%\246\321\324\20\0\376\30I&[AN\27$\7\21\63\22R"
"\134\325H\34DH\220\310i\7\377\27H&SCD{\20!F\22\42z\23\22D%\246\321\324\20"
"\0\0\0\0\4\377\377\0";

View File

@ -0,0 +1,681 @@
STARTFONT 2.1
COMMENT
COMMENT This font is copyrighted by its author, who reserves all rights under
COMMENT national and international copyright laws.
COMMENT
COMMENT Produced with bdfedit, a tcl/tk font editing program
COMMENT written by Thomas A. Fine
COMMENT Email to my last name at head.cfa.harvard.edu
COMMENT http://hea-www.harvard.edu/~fine/
FONT UNTITLED
SIZE 8 72 72
FONTBOUNDINGBOX 8 9 0 0
STARTPROPERTIES 11
FOUNDRY "Fine"
FAMILY_NAME ""
WEIGHT_NAME "Medium"
SLANT "R"
SETWIDTH_NAME "Normal"
SPACING "c"
CHARSET_REGISTRY "ISO-8859"
CHARSET_ENCODING "1"
COPYRIGHT "Designer of this font retains full rights under the law"
FONT_ASCENT 9
FONT_DESCENT 0
ENDPROPERTIES
CHARS 44
STARTCHAR Deg C
ENCODING 1
SWIDTH 1000 0
DWIDTH 8 0
BBX 7 8 0 1
BITMAP
40
a0
4e
10
10
10
10
0e
ENDCHAR
STARTCHAR Hz
ENCODING 2
SWIDTH 1000 0
DWIDTH 8 0
BBX 8 6 0 2
BITMAP
90
97
91
f2
94
97
ENDCHAR
STARTCHAR AIO
ENCODING 3
SWIDTH 1000 0
DWIDTH 8 0
BBX 8 8 0 1
BITMAP
ff
ff
05
f5
f9
f2
fc
f0
ENDCHAR
STARTCHAR AMD
ENCODING 4
SWIDTH 1000 0
DWIDTH 8 0
BBX 8 8 0 1
BITMAP
ff
7f
03
43
c3
c3
fb
f1
ENDCHAR
STARTCHAR RPM
ENCODING 5
SWIDTH 1000 0
DWIDTH 8 0
BBX 7 8 1 1
BITMAP
cc
aa
cc
a8
00
6c
54
44
ENDCHAR
STARTCHAR Butt empty left
ENCODING 6
SWIDTH 1000 0
DWIDTH 8 0
BBX 8 8 0 1
BITMAP
3f
40
40
80
80
40
40
3f
ENDCHAR
STARTCHAR Mid empty
ENCODING 7
SWIDTH 1000 0
DWIDTH 8 0
BBX 8 8 0 1
BITMAP
ff
00
00
00
00
00
00
ff
ENDCHAR
STARTCHAR Butt empty right
ENCODING 8
SWIDTH 1000 0
DWIDTH 8 0
BBX 8 8 0 1
BITMAP
fc
02
02
01
01
02
02
fc
ENDCHAR
STARTCHAR Butt full left
ENCODING 9
SWIDTH 1000 0
DWIDTH 8 0
BBX 8 8 0 1
BITMAP
3f
40
5f
bf
bf
5f
40
3f
ENDCHAR
STARTCHAR Mid full
ENCODING 10
SWIDTH 1000 0
DWIDTH 8 0
BBX 8 8 0 1
BITMAP
fc
02
fa
fd
fd
fa
02
fc
ENDCHAR
STARTCHAR Butt full right
ENCODING 11
SWIDTH 1000 0
DWIDTH 8 0
BBX 8 8 0 1
BITMAP
fc
02
fa
fd
fd
fa
02
fc
ENDCHAR
STARTCHAR Temperature
ENCODING 12
SWIDTH 1000 0
DWIDTH 8 0
BBX 5 8 2 1
BITMAP
20
50
50
70
70
f8
f8
70
ENDCHAR
STARTCHAR Fan bottom
ENCODING 13
SWIDTH 1000 0
DWIDTH 8 0
BBX 6 8 1 1
BITMAP
84
84
84
84
b4
fc
fc
b4
ENDCHAR
STARTCHAR Fan top
ENCODING 14
SWIDTH 1000 0
DWIDTH 8 0
BBX 6 8 1 1
BITMAP
b4
fc
fc
b4
84
84
84
84
ENDCHAR
STARTCHAR Fan back
ENCODING 15
SWIDTH 1000 0
DWIDTH 8 0
BBX 8 8 0 1
BITMAP
a0
4f
ec
aa
a9
a1
a1
ee
ENDCHAR
STARTCHAR MOS
ENCODING 16
SWIDTH 1000 0
DWIDTH 8 0
BBX 7 8 0 1
BITMAP
fe
d6
d6
ee
fe
54
92
92
ENDCHAR
STARTCHAR Chipset
ENCODING 17
SWIDTH 1000 0
DWIDTH 8 0
BBX 8 8 0 1
BITMAP
24
7e
c3
5e
5e
c3
7e
24
ENDCHAR
STARTCHAR Motherboard
ENCODING 18
SWIDTH 1000 0
DWIDTH 8 0
BBX 8 8 0 1
BITMAP
ff
85
b5
b5
81
fb
81
ff
ENDCHAR
STARTCHAR Cube
ENCODING 19
SWIDTH 1000 0
DWIDTH 8 0
BBX 6 8 1 1
BITMAP
30
48
84
cc
b4
a4
68
30
ENDCHAR
STARTCHAR GFX
ENCODING 20
SWIDTH 1000 0
DWIDTH 8 0
BBX 8 8 0 1
BITMAP
fe
01
e1
95
c9
95
01
fe
ENDCHAR
STARTCHAR NVidia
ENCODING 21
SWIDTH 1000 0
DWIDTH 8 0
BBX 8 7 0 1
BITMAP
90
90
d5
b5
95
95
92
ENDCHAR
STARTCHAR Fan
ENCODING 22
SWIDTH 1000 0
DWIDTH 8 0
BBX 8 8 0 1
BITMAP
20
6e
6f
78
1e
f6
76
04
ENDCHAR
STARTCHAR C040
ENCODING 32
SWIDTH 1000 0
DWIDTH 8 0
BBX 7 8 0 1
BITMAP
40
a0
4e
10
10
10
10
0e
ENDCHAR
STARTCHAR C041
ENCODING 33
SWIDTH 1000 0
DWIDTH 8 0
BBX 8 6 0 2
BITMAP
90
97
91
f2
94
97
ENDCHAR
STARTCHAR C042
ENCODING 34
SWIDTH 1000 0
DWIDTH 8 0
BBX 8 8 0 1
BITMAP
ff
ff
05
f5
f9
f2
fc
f0
ENDCHAR
STARTCHAR C043
ENCODING 35
SWIDTH 1000 0
DWIDTH 8 0
BBX 8 8 0 1
BITMAP
ff
7f
03
43
c3
c3
fb
f1
ENDCHAR
STARTCHAR C044
ENCODING 36
SWIDTH 1000 0
DWIDTH 8 0
BBX 7 8 1 1
BITMAP
cc
aa
cc
a8
00
6c
54
44
ENDCHAR
STARTCHAR C045
ENCODING 37
SWIDTH 1000 0
DWIDTH 8 0
BBX 8 8 0 1
BITMAP
3f
40
40
80
80
40
40
3f
ENDCHAR
STARTCHAR C046
ENCODING 38
SWIDTH 1000 0
DWIDTH 8 0
BBX 8 8 0 1
BITMAP
ff
00
00
00
00
00
00
ff
ENDCHAR
STARTCHAR C047
ENCODING 39
SWIDTH 1000 0
DWIDTH 8 0
BBX 8 8 0 1
BITMAP
fc
02
02
01
01
02
02
fc
ENDCHAR
STARTCHAR C050
ENCODING 40
SWIDTH 1000 0
DWIDTH 8 0
BBX 8 8 0 1
BITMAP
3f
40
5f
bf
bf
5f
40
3f
ENDCHAR
STARTCHAR C051
ENCODING 41
SWIDTH 1000 0
DWIDTH 8 0
BBX 8 8 0 1
BITMAP
ff
00
ff
ff
ff
ff
00
ff
ENDCHAR
STARTCHAR C052
ENCODING 42
SWIDTH 1000 0
DWIDTH 8 0
BBX 8 8 0 1
BITMAP
fc
02
fa
fd
fd
fa
02
fc
ENDCHAR
STARTCHAR C053
ENCODING 43
SWIDTH 1000 0
DWIDTH 8 0
BBX 5 8 2 1
BITMAP
20
50
50
70
70
f8
f8
70
ENDCHAR
STARTCHAR C054
ENCODING 44
SWIDTH 1000 0
DWIDTH 8 0
BBX 6 8 1 1
BITMAP
84
84
84
84
b4
fc
fc
b4
ENDCHAR
STARTCHAR C055
ENCODING 45
SWIDTH 1000 0
DWIDTH 8 0
BBX 6 8 1 1
BITMAP
b4
fc
fc
b4
84
84
84
84
ENDCHAR
STARTCHAR C056
ENCODING 46
SWIDTH 1000 0
DWIDTH 8 0
BBX 8 8 0 1
BITMAP
a0
4f
ec
aa
a9
a1
a1
ee
ENDCHAR
STARTCHAR C057
ENCODING 47
SWIDTH 1000 0
DWIDTH 8 0
BBX 7 8 0 1
BITMAP
fe
d6
d6
ee
fe
54
92
92
ENDCHAR
STARTCHAR C060
ENCODING 48
SWIDTH 1000 0
DWIDTH 8 0
BBX 8 8 0 1
BITMAP
24
7e
c3
5e
5e
c3
7e
24
ENDCHAR
STARTCHAR C061
ENCODING 49
SWIDTH 1000 0
DWIDTH 8 0
BBX 8 8 0 1
BITMAP
ff
85
b5
b5
81
fb
81
ff
ENDCHAR
STARTCHAR C062
ENCODING 50
SWIDTH 1000 0
DWIDTH 8 0
BBX 6 8 1 1
BITMAP
30
48
84
cc
b4
a4
68
30
ENDCHAR
STARTCHAR C063
ENCODING 51
SWIDTH 1000 0
DWIDTH 8 0
BBX 8 8 0 1
BITMAP
fe
01
e1
95
c9
95
01
fe
ENDCHAR
STARTCHAR C064
ENCODING 52
SWIDTH 1000 0
DWIDTH 8 0
BBX 8 7 0 1
BITMAP
90
90
d5
b5
95
95
92
ENDCHAR
STARTCHAR C065
ENCODING 53
SWIDTH 1000 0
DWIDTH 8 0
BBX 8 8 0 1
BITMAP
20
6e
6f
78
1e
f6
76
04
ENDCHAR
ENDFONT

View File

@ -0,0 +1,13 @@
/*
Fontname: UNTITLED
Copyright: Designer of this font retains full rights under the law
Glyphs: 22/22
BBX Build Mode: 3
*/
const uint8_t stats_font[181] U8X8_FONT_SECTION("stats_font") =
" \65\1\1\2\5\2x\204\204\204\0~\20\20~\0dTL\373\373\373\373SO#\37\361\373\303\303"
"C\3\177\377\0\17\345*@/\345\2\30f\201\201\201\201\201\201\201\201\201\201\201\201\201\201\201\201\201\201"
"\201\201f\30\30f\231\275\275\275\275\275\275\275\275\275\275\275\275\275\275\275\275\275\275\231f\30\0\0`\376"
"\371\376`\0\0\377`\360\360`\377\0\0\377\6\17\17\6\377\0\375\206\375\0\236\206\212r\337\77\31\367"
"\31\77\337\0$~\303ZZ\333~$\377\241\255\255\241\217\241\377\0<J\361\221J<\0\275\225\205\251"
"\221\251\201~\376\10\20\376\0x\200x nox\36\366v\4";

View File

@ -0,0 +1,652 @@
STARTFONT 2.1
COMMENT
COMMENT This font is copyrighted by its author, who reserves all rights under
COMMENT national and international copyright laws.
COMMENT
COMMENT Produced with bdfedit, a tcl/tk font editing program
COMMENT written by Thomas A. Fine
COMMENT Email to my last name at head.cfa.harvard.edu
COMMENT http://hea-www.harvard.edu/~fine/
FONT UNTITLED
SIZE 8 72 72
FONTBOUNDINGBOX 8 9 0 0
STARTPROPERTIES 12
FOUNDRY "Fine"
FAMILY_NAME ""
WEIGHT_NAME "Medium"
SLANT "R"
SETWIDTH_NAME "Normal"
SPACING "c"
CHARSET_REGISTRY "ISO-8859"
CHARSET_ENCODING "1"
COPYRIGHT "Designer of this font retains full rights under the law"
FONT_ASCENT 9
FONT_DESCENT 0
_GBDFED_INFO "Edited with gbdfed 1.6."
ENDPROPERTIES
CHARS 39
STARTCHAR char37
ENCODING 37
SWIDTH 1000 0
DWIDTH 8 0
BBX 8 9 0 0
BITMAP
00
41
A2
44
08
10
22
45
82
ENDCHAR
STARTCHAR char44
ENCODING 44
SWIDTH 1000 0
DWIDTH 8 0
BBX 8 9 0 0
BITMAP
00
00
00
00
00
00
30
10
20
ENDCHAR
STARTCHAR char45
ENCODING 45
SWIDTH 1000 0
DWIDTH 8 0
BBX 8 9 0 0
BITMAP
00
00
00
00
3E
00
00
00
00
ENDCHAR
STARTCHAR char46
ENCODING 46
SWIDTH 1000 0
DWIDTH 8 0
BBX 8 9 0 0
BITMAP
00
00
00
00
00
00
20
70
20
ENDCHAR
STARTCHAR zero
ENCODING 48
SWIDTH 1000 0
DWIDTH 8 0
BBX 8 9 0 0
BITMAP
18
24
42
42
42
42
24
18
00
ENDCHAR
STARTCHAR one
ENCODING 49
SWIDTH 1000 0
DWIDTH 8 0
BBX 8 9 0 0
BITMAP
08
18
28
08
08
08
08
3E
00
ENDCHAR
STARTCHAR two
ENCODING 50
SWIDTH 1000 0
DWIDTH 8 0
BBX 8 9 0 0
BITMAP
3C
42
02
04
08
10
20
7E
00
ENDCHAR
STARTCHAR three
ENCODING 51
SWIDTH 1000 0
DWIDTH 8 0
BBX 8 9 0 0
BITMAP
3C
42
02
1C
02
02
42
3C
00
ENDCHAR
STARTCHAR four
ENCODING 52
SWIDTH 1000 0
DWIDTH 8 0
BBX 8 9 0 0
BITMAP
04
0C
14
24
44
7E
04
04
00
ENDCHAR
STARTCHAR five
ENCODING 53
SWIDTH 1000 0
DWIDTH 8 0
BBX 8 9 0 0
BITMAP
7E
40
40
7C
02
02
42
3C
00
ENDCHAR
STARTCHAR six
ENCODING 54
SWIDTH 1000 0
DWIDTH 8 0
BBX 8 9 0 0
BITMAP
3C
42
40
7C
42
42
42
3C
00
ENDCHAR
STARTCHAR char55
ENCODING 55
SWIDTH 1000 0
DWIDTH 8 0
BBX 8 9 0 0
BITMAP
3F
01
02
02
04
04
08
08
00
ENDCHAR
STARTCHAR char56
ENCODING 56
SWIDTH 1000 0
DWIDTH 8 0
BBX 8 9 0 0
BITMAP
3C
42
42
3C
42
42
42
3C
00
ENDCHAR
STARTCHAR char57
ENCODING 57
SWIDTH 1000 0
DWIDTH 8 0
BBX 8 9 0 0
BITMAP
3C
42
42
3E
02
02
42
3C
00
ENDCHAR
STARTCHAR C065
ENCODING 64
SWIDTH 1000 0
DWIDTH 8 0
BBX 8 9 0 0
BITMAP
20
6E
6F
78
1E
F6
76
04
00
ENDCHAR
STARTCHAR C040
ENCODING 65
SWIDTH 1000 0
DWIDTH 8 0
BBX 8 9 0 0
BITMAP
40
A0
4E
10
10
10
10
0E
00
ENDCHAR
STARTCHAR C041
ENCODING 66
SWIDTH 1000 0
DWIDTH 8 0
BBX 8 9 0 0
BITMAP
00
90
97
91
F2
94
97
00
00
ENDCHAR
STARTCHAR C042
ENCODING 67
SWIDTH 1000 0
DWIDTH 8 0
BBX 8 9 0 0
BITMAP
FF
FF
05
F5
F9
F2
FC
F0
00
ENDCHAR
STARTCHAR C043
ENCODING 68
SWIDTH 1000 0
DWIDTH 8 0
BBX 8 9 0 0
BITMAP
FF
7F
03
43
C3
C3
FB
F1
00
ENDCHAR
STARTCHAR C044
ENCODING 69
SWIDTH 1000 0
DWIDTH 8 0
BBX 8 9 0 0
BITMAP
66
55
66
54
00
36
2A
22
00
ENDCHAR
STARTCHAR C045
ENCODING 70
SWIDTH 1000 0
DWIDTH 8 0
BBX 8 9 0 0
BITMAP
3F
40
40
80
80
40
40
3F
00
ENDCHAR
STARTCHAR C046
ENCODING 71
SWIDTH 1000 0
DWIDTH 8 0
BBX 8 9 0 0
BITMAP
FF
00
00
00
00
00
00
FF
00
ENDCHAR
STARTCHAR C047
ENCODING 72
SWIDTH 1000 0
DWIDTH 8 0
BBX 8 9 0 0
BITMAP
FC
02
02
01
01
02
02
FC
00
ENDCHAR
STARTCHAR C050
ENCODING 73
SWIDTH 1000 0
DWIDTH 8 0
BBX 8 9 0 0
BITMAP
3F
40
5F
BF
BF
5F
40
3F
00
ENDCHAR
STARTCHAR C051
ENCODING 74
SWIDTH 1000 0
DWIDTH 8 0
BBX 8 9 0 0
BITMAP
FF
00
FF
FF
FF
FF
00
FF
00
ENDCHAR
STARTCHAR Butt mid end
ENCODING 75
SWIDTH 1000 0
DWIDTH 8 0
BBX 8 9 0 0
BITMAP
FF
00
E8
F4
FC
F8
00
FF
00
ENDCHAR
STARTCHAR C052
ENCODING 76
SWIDTH 1000 0
DWIDTH 8 0
BBX 8 9 0 0
BITMAP
FC
02
EA
F5
FD
FA
02
FC
00
ENDCHAR
STARTCHAR Butt left full end
ENCODING 77
SWIDTH 1000 0
DWIDTH 8 0
BBX 8 9 0 0
BITMAP
3F
40
54
BA
BE
5C
40
3F
00
ENDCHAR
STARTCHAR C054
ENCODING 78
SWIDTH 1000 0
DWIDTH 8 0
BBX 8 9 0 0
BITMAP
42
42
42
42
5A
7E
7E
5A
00
ENDCHAR
STARTCHAR C055
ENCODING 79
SWIDTH 1000 0
DWIDTH 8 0
BBX 8 9 0 0
BITMAP
5A
7E
7E
5A
42
42
42
42
00
ENDCHAR
STARTCHAR C056
ENCODING 80
SWIDTH 1000 0
DWIDTH 8 0
BBX 8 9 0 0
BITMAP
C0
2F
6C
AA
29
21
21
26
20
ENDCHAR
STARTCHAR C057
ENCODING 81
SWIDTH 1000 0
DWIDTH 8 0
BBX 8 9 0 0
BITMAP
FE
D6
D6
EE
FE
54
92
92
00
ENDCHAR
STARTCHAR C060
ENCODING 82
SWIDTH 1000 0
DWIDTH 8 0
BBX 8 9 0 0
BITMAP
24
7E
C3
5E
5E
C3
7E
24
00
ENDCHAR
STARTCHAR C061
ENCODING 83
SWIDTH 1000 0
DWIDTH 8 0
BBX 8 9 0 0
BITMAP
FF
85
B5
B5
81
FB
81
FF
00
ENDCHAR
STARTCHAR C063
ENCODING 84
SWIDTH 1000 0
DWIDTH 8 0
BBX 8 9 0 0
BITMAP
FE
01
E9
89
A9
EF
01
FE
00
ENDCHAR
STARTCHAR C053
ENCODING 85
SWIDTH 1000 0
DWIDTH 8 0
BBX 8 9 0 0
BITMAP
08
14
14
1C
1C
3E
3E
1C
00
ENDCHAR
STARTCHAR C062
ENCODING 99
SWIDTH 1000 0
DWIDTH 8 0
BBX 8 9 0 0
BITMAP
18
24
42
66
5A
52
34
18
00
ENDCHAR
STARTCHAR C056
ENCODING 100
SWIDTH 1000 0
DWIDTH 8 0
BBX 8 9 0 0
BITMAP
A0
4F
EC
AA
A9
A1
A1
EE
00
ENDCHAR
STARTCHAR C056
ENCODING 101
SWIDTH 1000 0
DWIDTH 8 0
BBX 8 9 0 0
BITMAP
A0
4F
EC
AA
A9
A1
A1
EE
00
ENDCHAR
ENDFONT

View File

@ -0,0 +1,460 @@
STARTFONT 2.1
COMMENT
COMMENT This font is copyrighted by its author, who reserves all rights under
COMMENT national and international copyright laws.
COMMENT
COMMENT Produced with bdfedit, a tcl/tk font editing program
COMMENT written by Thomas A. Fine
COMMENT Email to my last name at head.cfa.harvard.edu
COMMENT http://hea-www.harvard.edu/~fine/
FONT UNTITLED
SIZE 8 72 72
FONTBOUNDINGBOX 8 9 0 0
STARTPROPERTIES 12
FOUNDRY "Fine"
FAMILY_NAME ""
WEIGHT_NAME "Medium"
SLANT "R"
SETWIDTH_NAME "Normal"
SPACING "c"
CHARSET_REGISTRY "ISO-8859"
CHARSET_ENCODING "1"
COPYRIGHT "Designer of this font retains full rights under the law"
FONT_ASCENT 9
FONT_DESCENT 0
_GBDFED_INFO "Edited with gbdfed 1.6."
ENDPROPERTIES
CHARS 27
STARTCHAR zero
ENCODING 48
SWIDTH 1000 0
DWIDTH 8 0
BBX 8 9 0 0
BITMAP
18
24
42
42
42
42
24
18
00
ENDCHAR
STARTCHAR one
ENCODING 49
SWIDTH 1000 0
DWIDTH 8 0
BBX 8 9 0 0
BITMAP
08
18
28
08
08
08
08
3E
00
ENDCHAR
STARTCHAR C065
ENCODING 64
SWIDTH 1000 0
DWIDTH 8 0
BBX 8 9 0 0
BITMAP
20
6E
6F
78
1E
F6
76
04
00
ENDCHAR
STARTCHAR C040
ENCODING 65
SWIDTH 1000 0
DWIDTH 8 0
BBX 8 9 0 0
BITMAP
40
A0
4E
10
10
10
10
0E
00
ENDCHAR
STARTCHAR C041
ENCODING 66
SWIDTH 1000 0
DWIDTH 8 0
BBX 8 9 0 0
BITMAP
00
90
97
91
F2
94
97
00
00
ENDCHAR
STARTCHAR C042
ENCODING 67
SWIDTH 1000 0
DWIDTH 8 0
BBX 8 9 0 0
BITMAP
FF
FF
05
F5
F9
F2
FC
F0
00
ENDCHAR
STARTCHAR C043
ENCODING 68
SWIDTH 1000 0
DWIDTH 8 0
BBX 8 9 0 0
BITMAP
FF
7F
03
43
C3
C3
FB
F1
00
ENDCHAR
STARTCHAR C044
ENCODING 69
SWIDTH 1000 0
DWIDTH 8 0
BBX 8 9 0 0
BITMAP
66
55
66
54
00
36
2A
22
00
ENDCHAR
STARTCHAR C045
ENCODING 70
SWIDTH 1000 0
DWIDTH 8 0
BBX 8 9 0 0
BITMAP
3F
40
40
80
80
40
40
3F
00
ENDCHAR
STARTCHAR C046
ENCODING 71
SWIDTH 1000 0
DWIDTH 8 0
BBX 8 9 0 0
BITMAP
FF
00
00
00
00
00
00
FF
00
ENDCHAR
STARTCHAR C047
ENCODING 72
SWIDTH 1000 0
DWIDTH 8 0
BBX 8 9 0 0
BITMAP
FC
02
02
01
01
02
02
FC
00
ENDCHAR
STARTCHAR C050
ENCODING 73
SWIDTH 1000 0
DWIDTH 8 0
BBX 8 9 0 0
BITMAP
3F
40
5F
BF
BF
5F
40
3F
00
ENDCHAR
STARTCHAR C051
ENCODING 74
SWIDTH 1000 0
DWIDTH 8 0
BBX 8 9 0 0
BITMAP
FF
00
FF
FF
FF
FF
00
FF
00
ENDCHAR
STARTCHAR Butt mid end
ENCODING 75
SWIDTH 1000 0
DWIDTH 8 0
BBX 8 9 0 0
BITMAP
FF
00
E8
F4
FC
F8
00
FF
00
ENDCHAR
STARTCHAR C052
ENCODING 76
SWIDTH 1000 0
DWIDTH 8 0
BBX 8 9 0 0
BITMAP
FC
02
EA
F5
FD
FA
02
FC
00
ENDCHAR
STARTCHAR Butt left full end
ENCODING 77
SWIDTH 1000 0
DWIDTH 8 0
BBX 8 9 0 0
BITMAP
3F
40
54
BA
BE
5C
40
3F
00
ENDCHAR
STARTCHAR C054
ENCODING 78
SWIDTH 1000 0
DWIDTH 8 0
BBX 8 9 0 0
BITMAP
42
42
42
42
5A
7E
7E
5A
00
ENDCHAR
STARTCHAR C055
ENCODING 79
SWIDTH 1000 0
DWIDTH 8 0
BBX 8 9 0 0
BITMAP
5A
7E
7E
5A
42
42
42
42
00
ENDCHAR
STARTCHAR C056
ENCODING 80
SWIDTH 1000 0
DWIDTH 8 0
BBX 8 9 0 0
BITMAP
C0
2F
6C
AA
29
21
21
26
20
ENDCHAR
STARTCHAR C057
ENCODING 81
SWIDTH 1000 0
DWIDTH 8 0
BBX 8 9 0 0
BITMAP
FE
D6
D6
EE
FE
54
92
92
00
ENDCHAR
STARTCHAR C060
ENCODING 82
SWIDTH 1000 0
DWIDTH 8 0
BBX 8 9 0 0
BITMAP
24
7E
C3
5E
5E
C3
7E
24
00
ENDCHAR
STARTCHAR C061
ENCODING 83
SWIDTH 1000 0
DWIDTH 8 0
BBX 8 9 0 0
BITMAP
FF
85
B5
B5
81
FB
81
FF
00
ENDCHAR
STARTCHAR C063
ENCODING 84
SWIDTH 1000 0
DWIDTH 8 0
BBX 8 9 0 0
BITMAP
FE
01
E9
89
A9
EF
01
FE
00
ENDCHAR
STARTCHAR C053
ENCODING 85
SWIDTH 1000 0
DWIDTH 8 0
BBX 8 9 0 0
BITMAP
08
14
14
1C
1C
3E
3E
1C
00
ENDCHAR
STARTCHAR C062
ENCODING 99
SWIDTH 1000 0
DWIDTH 8 0
BBX 8 9 0 0
BITMAP
18
24
42
66
5A
52
34
18
00
ENDCHAR
STARTCHAR C056
ENCODING 100
SWIDTH 1000 0
DWIDTH 8 0
BBX 8 9 0 0
BITMAP
A0
4F
EC
AA
A9
A1
A1
EE
00
ENDCHAR
STARTCHAR C056
ENCODING 101
SWIDTH 1000 0
DWIDTH 8 0
BBX 8 9 0 0
BITMAP
A0
4F
EC
AA
A9
A1
A1
EE
00
ENDCHAR
ENDFONT

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,550 @@
STARTFONT 2.1
COMMENT
COMMENT This font is copyrighted by its author, who reserves all rights under
COMMENT national and international copyright laws.
COMMENT
COMMENT Produced with bdfedit, a tcl/tk font editing program
COMMENT written by Thomas A. Fine
COMMENT Email to my last name at head.cfa.harvard.edu
COMMENT http://hea-www.harvard.edu/~fine/
FONT UNTITLED
SIZE 8 72 72
FONTBOUNDINGBOX 8 9 0 0
STARTPROPERTIES 12
FOUNDRY "Fine"
FAMILY_NAME ""
WEIGHT_NAME "Medium"
SLANT "R"
SETWIDTH_NAME "Normal"
SPACING "M"
CHARSET_REGISTRY "ISO-8859"
CHARSET_ENCODING "1"
COPYRIGHT "Designer of this font retains full rights under the law"
FONT_ASCENT 6
FONT_DESCENT 2
_GBDFED_INFO "Edited with gbdfed 1.6."
ENDPROPERTIES
CHARS 36
STARTCHAR char37
ENCODING 37
SWIDTH 1000 0
DWIDTH 8 0
BBX 8 8 0 0
BITMAP
41
A2
44
08
10
22
45
82
ENDCHAR
STARTCHAR char44
ENCODING 44
SWIDTH 1000 0
DWIDTH 8 0
BBX 2 3 2 0
BITMAP
C0
40
80
ENDCHAR
STARTCHAR char45
ENCODING 45
SWIDTH 1000 0
DWIDTH 8 0
BBX 5 1 2 4
BITMAP
F8
ENDCHAR
STARTCHAR char46
ENCODING 46
SWIDTH 1000 0
DWIDTH 8 0
BBX 3 3 1 0
BITMAP
40
E0
40
ENDCHAR
STARTCHAR zero
ENCODING 48
SWIDTH 1000 0
DWIDTH 8 0
BBX 6 8 1 1
BITMAP
30
48
84
84
84
84
48
30
ENDCHAR
STARTCHAR one
ENCODING 49
SWIDTH 1000 0
DWIDTH 8 0
BBX 5 8 2 1
BITMAP
20
60
A0
20
20
20
20
F8
ENDCHAR
STARTCHAR two
ENCODING 50
SWIDTH 1000 0
DWIDTH 8 0
BBX 6 8 1 1
BITMAP
78
84
04
08
10
20
40
FC
ENDCHAR
STARTCHAR three
ENCODING 51
SWIDTH 1000 0
DWIDTH 8 0
BBX 6 8 1 1
BITMAP
78
84
04
38
04
04
84
78
ENDCHAR
STARTCHAR four
ENCODING 52
SWIDTH 1000 0
DWIDTH 8 0
BBX 6 8 1 1
BITMAP
08
18
28
48
88
FC
08
08
ENDCHAR
STARTCHAR five
ENCODING 53
SWIDTH 1000 0
DWIDTH 8 0
BBX 6 8 1 1
BITMAP
FC
80
80
F8
04
04
84
78
ENDCHAR
STARTCHAR six
ENCODING 54
SWIDTH 1000 0
DWIDTH 8 0
BBX 6 8 1 1
BITMAP
78
84
80
F8
84
84
84
78
ENDCHAR
STARTCHAR char55
ENCODING 55
SWIDTH 1000 0
DWIDTH 8 0
BBX 6 8 1 1
BITMAP
FC
04
08
08
10
10
20
20
ENDCHAR
STARTCHAR char56
ENCODING 56
SWIDTH 1000 0
DWIDTH 8 0
BBX 6 8 1 1
BITMAP
78
84
84
78
84
84
84
78
ENDCHAR
STARTCHAR char57
ENCODING 57
SWIDTH 1000 0
DWIDTH 8 0
BBX 6 8 1 1
BITMAP
78
84
84
7C
04
04
84
78
ENDCHAR
STARTCHAR C065
ENCODING 64
SWIDTH 1000 0
DWIDTH 8 0
BBX 8 8 0 1
BITMAP
20
6E
6F
78
1E
F6
76
04
ENDCHAR
STARTCHAR C040
ENCODING 65
SWIDTH 1000 0
DWIDTH 8 0
BBX 7 8 0 1
BITMAP
40
A0
4E
10
10
10
10
0E
ENDCHAR
STARTCHAR C041
ENCODING 66
SWIDTH 1000 0
DWIDTH 8 0
BBX 8 6 0 2
BITMAP
90
97
91
F2
94
97
ENDCHAR
STARTCHAR C042
ENCODING 67
SWIDTH 1000 0
DWIDTH 8 0
BBX 8 8 0 1
BITMAP
FF
FF
05
F5
F9
F2
FC
F0
ENDCHAR
STARTCHAR C043
ENCODING 68
SWIDTH 1000 0
DWIDTH 8 0
BBX 8 8 0 1
BITMAP
FF
7F
03
43
C3
C3
FB
F1
ENDCHAR
STARTCHAR C044
ENCODING 69
SWIDTH 1000 0
DWIDTH 8 0
BBX 7 8 1 1
BITMAP
CC
AA
CC
A8
00
6C
54
44
ENDCHAR
STARTCHAR C045
ENCODING 70
SWIDTH 1000 0
DWIDTH 8 0
BBX 7 8 1 1
BITMAP
3E
40
40
80
80
40
40
3E
ENDCHAR
STARTCHAR C046
ENCODING 71
SWIDTH 1000 0
DWIDTH 8 0
BBX 8 8 0 1
BITMAP
FF
00
00
00
00
00
00
FF
ENDCHAR
STARTCHAR C047
ENCODING 72
SWIDTH 1000 0
DWIDTH 8 0
BBX 7 8 0 1
BITMAP
F8
04
04
02
02
04
04
F8
ENDCHAR
STARTCHAR C050
ENCODING 73
SWIDTH 1000 0
DWIDTH 8 0
BBX 7 8 1 1
BITMAP
3E
40
5E
BE
BE
5E
40
3E
ENDCHAR
STARTCHAR C051
ENCODING 74
SWIDTH 1000 0
DWIDTH 8 0
BBX 8 8 0 1
BITMAP
FF
00
FF
FF
FF
FF
00
FF
ENDCHAR
STARTCHAR Butt mid end
ENCODING 75
SWIDTH 1000 0
DWIDTH 8 0
BBX 8 8 0 1
BITMAP
FF
00
E8
F4
FC
F8
00
FF
ENDCHAR
STARTCHAR C052
ENCODING 76
SWIDTH 1000 0
DWIDTH 8 0
BBX 7 8 0 1
BITMAP
F8
04
D4
EA
FA
F4
04
F8
ENDCHAR
STARTCHAR Butt left full end
ENCODING 77
SWIDTH 1000 0
DWIDTH 8 0
BBX 7 8 1 1
BITMAP
3E
40
54
BA
BE
5C
40
3E
ENDCHAR
STARTCHAR C054
ENCODING 78
SWIDTH 1000 0
DWIDTH 8 0
BBX 6 8 1 1
BITMAP
84
84
84
84
B4
FC
FC
B4
ENDCHAR
STARTCHAR C055
ENCODING 79
SWIDTH 1000 0
DWIDTH 8 0
BBX 6 8 1 1
BITMAP
B4
FC
FC
B4
84
84
84
84
ENDCHAR
STARTCHAR C056
ENCODING 80
SWIDTH 1000 0
DWIDTH 8 0
BBX 8 9 0 0
BITMAP
C0
2F
6C
AA
29
21
21
26
20
ENDCHAR
STARTCHAR C057
ENCODING 81
SWIDTH 1000 0
DWIDTH 8 0
BBX 7 8 0 1
BITMAP
FE
D6
D6
EE
FE
54
92
92
ENDCHAR
STARTCHAR C060
ENCODING 82
SWIDTH 1000 0
DWIDTH 8 0
BBX 8 8 0 1
BITMAP
24
7E
C3
5E
5E
C3
7E
24
ENDCHAR
STARTCHAR C061
ENCODING 83
SWIDTH 1000 0
DWIDTH 8 0
BBX 8 8 0 1
BITMAP
FF
85
B5
B5
81
FB
81
FF
ENDCHAR
STARTCHAR C063
ENCODING 84
SWIDTH 1000 0
DWIDTH 8 0
BBX 8 8 0 1
BITMAP
FE
01
E9
89
A9
EF
01
FE
ENDCHAR
STARTCHAR C053
ENCODING 85
SWIDTH 1000 0
DWIDTH 8 0
BBX 5 8 2 1
BITMAP
20
50
50
70
70
F8
F8
70
ENDCHAR
ENDFONT

View File

@ -0,0 +1,29 @@
/*
Fontname: -gbdfed-Unknown-Medium-R-Normal--14-140-72-72-M-77-FontSpecific-0
Copyright: Designer of this font retains full rights under the law
Glyphs: 15/15
BBX Build Mode: 3
*/
const uint8_t stats_font1x2[676] U8X8_FONT_SECTION("stats_font1x2") =
",U\1\2\0\0\0\0\0\0\0\0\0\0\220p\0\0\0\0\0\0\0\0\0\0\0\0\0\2\2\2"
"\2\2\0\0\0\0\0\0\0\0\0\0\0\0 p \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\300 \20\20 \300\0\0\17\20 \20\17\0\0@ \360\0\0\0\0\0 \77 "
" \0\0\0`\20\20\20\20\340\0\0 \60($# \0\0\20\20\20\220P\60\0\0\30 !!"
"!\36\0\0\0\0\300 \360\0\0\0\14\13\10\10\77\10\0\0\360\220\220\220\220\20\0\0\31 "
" \37\0\0\300 \20\20\20\0\0\0\37\42!!!\36\0\0\20\20\20\20\320\60\0\0\0\60\14\3"
"\0\0\0\0`\220\20\20\220`\0\0\34\42!!\42\34\0\0\340\20\20\20\20\340\0\0\31\42\42\42"
"\21\17\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0@\240@\200@ \0\0\0\0\17"
"\20 \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\370\204\370\0\0\0\0p\377\377"
"\377p\0";

View File

@ -0,0 +1,501 @@
STARTFONT 2.1
COMMENT
COMMENT This font is copyrighted by its author, who reserves all rights under
COMMENT national and international copyright laws.
COMMENT
COMMENT Produced with bdfedit, a tcl/tk font editing program
COMMENT written by Thomas A. Fine
COMMENT Email to my last name at head.cfa.harvard.edu
COMMENT http://hea-www.harvard.edu/~fine/
FONT -gbdfed-Unknown-Medium-R-Normal--14-140-72-72-M-77-FontSpecific-0
SIZE 14 72 72
FONTBOUNDINGBOX 16 16 0 -2
STARTPROPERTIES 11
FOUNDRY "Fine"
FAMILY_NAME ""
WEIGHT_NAME "Medium"
SLANT "R"
SETWIDTH_NAME "Normal"
SPACING "c"
CHARSET_REGISTRY "ISO-8859"
CHARSET_ENCODING "1"
COPYRIGHT "Designer of this font retains full rights under the law"
FONT_ASCENT 14
FONT_DESCENT 2
ENDPROPERTIES
CHARS 23
STARTCHAR Fan
ENCODING 192
SWIDTH 1142 0
DWIDTH 16 0
BBX 14 14 1 0
BITMAP
0c00
1e00
3e70
3cf8
3dfc
1dfc
0f18
63c0
fee0
fef0
7cf0
39f0
01e0
00c0
ENDCHAR
STARTCHAR Deg C
ENCODING 193
SWIDTH 1142 0
DWIDTH 16 0
BBX 11 12 2 2
BITMAP
61e0
9200
9400
6400
0800
0800
0800
0800
0400
0400
0200
01e0
ENDCHAR
STARTCHAR Hz
ENCODING 194
SWIDTH 1142 0
DWIDTH 16 0
BBX 14 12 1 2
BITMAP
c200
c200
c200
c2fc
c20c
c20c
fe18
c230
c260
c2c0
c2c0
c2fc
ENDCHAR
STARTCHAR AIO
ENCODING 195
SWIDTH 1142 0
DWIDTH 16 0
BBX 16 14 0 0
BITMAP
ffff
ffff
ffff
ffff
0012
0012
0012
0012
1f92
1fe4
1f84
1f98
1fe0
1f80
ENDCHAR
STARTCHAR AMD
ENCODING 196
SWIDTH 1142 0
DWIDTH 16 0
BBX 14 14 1 0
BITMAP
fffc
7ffc
3ffc
1ffc
103c
303c
703c
f03c
f03c
f03c
fffc
ff9c
ff0c
fe04
ENDCHAR
STARTCHAR RPM
ENCODING 197
SWIDTH 1142 0
DWIDTH 16 0
BBX 11 13 3 1
BITMAP
f3c0
cb20
cb20
f3c0
cb00
cb00
cb00
0000
3980
3680
3080
3080
3080
ENDCHAR
STARTCHAR Butt left empty
ENCODING 198
SWIDTH 1142 0
DWIDTH 16 0
BBX 14 14 2 -1
BITMAP
0ffc
3000
4000
4000
8000
8000
8000
8000
8000
8000
4000
4000
3000
0ffc
ENDCHAR
STARTCHAR Mid empty
ENCODING 199
SWIDTH 1142 0
DWIDTH 16 0
BBX 16 14 0 -1
BITMAP
ffff
0000
0000
0000
0000
0000
0000
0000
0000
0000
0000
0000
0000
ffff
ENDCHAR
STARTCHAR Butt right empty
ENCODING 200
SWIDTH 1142 0
DWIDTH 16 0
BBX 15 14 0 -1
BITMAP
ffe0
0018
0004
0004
0002
0002
0002
0002
0002
0002
0006
0004
0018
ffe0
ENDCHAR
STARTCHAR Butt left full
ENCODING 201
SWIDTH 1142 0
DWIDTH 16 0
BBX 14 14 2 -1
BITMAP
0ffc
3000
47fc
5ffc
9ffc
bffc
bffc
bffc
bffc
9ffc
5ffc
47fc
3000
0ffc
ENDCHAR
STARTCHAR Mid full
ENCODING 202
SWIDTH 1142 0
DWIDTH 16 0
BBX 16 14 0 -1
BITMAP
ffff
0000
ffff
ffff
ffff
ffff
ffff
ffff
ffff
ffff
ffff
ffff
0000
ffff
ENDCHAR
STARTCHAR Mid full end
ENCODING 203
SWIDTH 1142 0
DWIDTH 16 0
BBX 16 14 0 -1
BITMAP
ffff
0000
ffc0
ff30
ff90
ffd8
fff8
fff8
fff8
fff0
fff0
ffc0
0000
ffff
ENDCHAR
STARTCHAR Butt full left
ENCODING 204
SWIDTH 1142 0
DWIDTH 16 0
BBX 15 14 0 -1
BITMAP
ffe0
0018
ffc4
ff34
ff92
ffda
fffa
fffa
fffa
fff2
fff4
ffc4
0018
ffe0
ENDCHAR
STARTCHAR Temperature
ENCODING 205
SWIDTH 1142 0
DWIDTH 16 0
BBX 14 14 2 -1
BITMAP
0ffc
3000
4780
5e60
9f20
bfb0
bff0
bff0
bff0
9fe0
5fe0
4780
3000
0ffc
ENDCHAR
STARTCHAR Fan bottom
ENCODING 206
SWIDTH 1142 0
DWIDTH 16 0
BBX 9 14 4 0
BITMAP
ff80
8080
8080
8080
8080
8080
8080
9c80
be80
b680
be80
9c80
8080
ff80
ENDCHAR
STARTCHAR Fan top
ENCODING 207
SWIDTH 1142 0
DWIDTH 16 0
BBX 9 14 4 0
BITMAP
ff80
8080
9c80
be80
b680
be80
9c80
8080
8080
8080
8080
8080
8080
ff80
ENDCHAR
STARTCHAR Fan back
ENCODING 208
SWIDTH 1142 0
DWIDTH 16 0
BBX 14 14 2 0
BITMAP
0058
0064
0e74
3184
e688
9c88
84b0
8480
8480
a480
8480
8500
e600
1c00
ENDCHAR
STARTCHAR VR
ENCODING 209
SWIDTH 928 0
DWIDTH 13 0
BBX 9 14 2 0
BITMAP
3e00
7f00
ff80
a980
aa80
a980
da80
ff80
ff80
2a00
4900
4900
4900
4900
ENDCHAR
STARTCHAR Chipset
ENCODING 210
SWIDTH 1071 0
DWIDTH 15 0
BBX 13 13 1 1
BITMAP
1540
3fe0
7ff0
f878
7070
f3f8
73f0
f3f8
7070
f878
7ff0
3fe0
1540
ENDCHAR
STARTCHAR Motherboard
ENCODING 211
SWIDTH 1142 0
DWIDTH 16 0
BBX 14 14 1 0
BITMAP
fffc
8004
9ca4
9ca4
9ca4
80a4
8004
fe14
8004
fe44
8014
fe44
8004
fffc
ENDCHAR
STARTCHAR GPU
ENCODING 212
SWIDTH 1142 0
DWIDTH 16 0
BBX 15 13 1 1
BITMAP
fff8
0004
0002
374a
44ca
5f4a
4c4a
3432
0002
0004
fff8
5540
7fc0
ENDCHAR
STARTCHAR char213
ENCODING 213
SWIDTH 642 0
DWIDTH 9 0
BBX 5 13 2 1
BITMAP
20
50
50
50
50
70
70
70
70
f8
f8
f8
70
ENDCHAR
STARTCHAR char214
ENCODING 214
SWIDTH 1071 0
DWIDTH 15 0
BBX 11 13 2 1
BITMAP
3f80
4040
8e20
c060
bfa0
c060
bfa0
c060
bfa0
c060
bfa0
4040
3f80
ENDCHAR
ENDFONT

View File

@ -0,0 +1,511 @@
STARTFONT 2.1
COMMENT
COMMENT This font is copyrighted by its author, who reserves all rights under
COMMENT national and international copyright laws.
COMMENT
COMMENT Produced with bdfedit, a tcl/tk font editing program
COMMENT written by Thomas A. Fine
COMMENT Email to my last name at head.cfa.harvard.edu
COMMENT http://hea-www.harvard.edu/~fine/
FONT -gbdfed-Unknown-Medium-R-Normal--14-140-72-72-M-77-FontSpecific-0
SIZE 14 72 72
FONTBOUNDINGBOX 16 16 -5 -4
STARTPROPERTIES 12
FOUNDRY "Fine"
FAMILY_NAME ""
WEIGHT_NAME "Medium"
SLANT "R"
SETWIDTH_NAME "Normal"
SPACING "c"
CHARSET_REGISTRY "ISO-8859"
CHARSET_ENCODING "1"
COPYRIGHT "Designer of this font retains full rights under the law"
FONT_ASCENT 12
FONT_DESCENT 4
_GBDFED_INFO "Edited with gbdfed 1.6."
ENDPROPERTIES
CHARS 21
STARTCHAR Fan
ENCODING 192
SWIDTH 1142 0
DWIDTH 16 0
BBX 16 16 -5 -4
BITMAP
0600
0F00
1F38
1E7C
1EFE
0EFE
078C
31E0
7F70
7F78
3E78
1CF8
00F0
0060
0000
0000
ENDCHAR
STARTCHAR Deg C
ENCODING 193
SWIDTH 1142 0
DWIDTH 16 0
BBX 16 16 -5 -4
BITMAP
1878
2480
2500
1900
0200
0200
0200
0200
0100
0100
0080
0078
0000
0000
0000
0000
ENDCHAR
STARTCHAR Hz
ENCODING 194
SWIDTH 1142 0
DWIDTH 16 0
BBX 16 16 -5 -4
BITMAP
3080
3080
3080
30BF
3083
3083
3F86
308C
3098
30B0
30B0
30BF
0000
0000
0000
0000
ENDCHAR
STARTCHAR AIO
ENCODING 195
SWIDTH 1142 0
DWIDTH 16 0
BBX 16 16 -5 -4
BITMAP
FFFF
FFFF
FFFF
FFFF
0024
0024
0024
0024
3F24
3FC8
3F08
3F30
3FC0
3F00
0000
0000
ENDCHAR
STARTCHAR AMD
ENCODING 196
SWIDTH 1142 0
DWIDTH 16 0
BBX 16 16 -5 -4
BITMAP
7FFE
3FFE
1FFE
0FFE
081E
181E
381E
781E
781E
781E
7FFE
7FCE
7F86
7F02
0000
0000
ENDCHAR
STARTCHAR RPM
ENCODING 197
SWIDTH 1142 0
DWIDTH 16 0
BBX 16 16 -5 -4
BITMAP
0000
1E78
1964
1964
1E78
1960
1960
1960
0000
0730
06D0
0610
0610
0610
0000
0000
ENDCHAR
STARTCHAR Butt left empty
ENCODING 198
SWIDTH 1142 0
DWIDTH 16 0
BBX 16 16 -5 -4
BITMAP
0000
07FF
1800
2000
2000
4000
4000
4000
4000
4000
4000
2000
2000
1800
07FF
0000
ENDCHAR
STARTCHAR Mid empty
ENCODING 199
SWIDTH 1142 0
DWIDTH 16 0
BBX 16 16 -5 -4
BITMAP
0000
FFFF
0000
0000
0000
0000
0000
0000
0000
0000
0000
0000
0000
0000
FFFF
0000
ENDCHAR
STARTCHAR Butt right empty
ENCODING 200
SWIDTH 1142 0
DWIDTH 16 0
BBX 16 16 -5 -4
BITMAP
0000
FFE0
0018
0004
0004
0002
0002
0002
0002
0002
0002
0006
0004
0018
FFE0
0000
ENDCHAR
STARTCHAR Butt left full
ENCODING 201
SWIDTH 1142 0
DWIDTH 16 0
BBX 16 16 -5 -4
BITMAP
0000
07FF
1800
23FF
2FFF
4FFF
5FFF
5FFF
5FFF
5FFF
4FFF
2FFF
23FF
1800
07FF
0000
ENDCHAR
STARTCHAR Mid full
ENCODING 202
SWIDTH 1142 0
DWIDTH 16 0
BBX 16 16 -5 -4
BITMAP
0000
FFFF
0000
FFFF
FFFF
FFFF
FFFF
FFFF
FFFF
FFFF
FFFF
FFFF
FFFF
0000
FFFF
0000
ENDCHAR
STARTCHAR Mid full end
ENCODING 203
SWIDTH 1142 0
DWIDTH 16 0
BBX 16 16 -5 -4
BITMAP
0000
FFFF
0000
FFC0
FF30
FF90
FFD8
FFF8
FFF8
FFF8
FFF0
FFF0
FFC0
0000
FFFF
0000
ENDCHAR
STARTCHAR Butt full left
ENCODING 204
SWIDTH 1142 0
DWIDTH 16 0
BBX 16 16 -5 -4
BITMAP
0000
FFE0
0018
FFC4
FF34
FF92
FFDA
FFFA
FFFA
FFFA
FFF2
FFF4
FFC4
0018
FFE0
0000
ENDCHAR
STARTCHAR Temperature
ENCODING 205
SWIDTH 1142 0
DWIDTH 16 0
BBX 16 16 -5 -4
BITMAP
0000
07FF
1800
23C0
2F30
4F90
5FD8
5FF8
5FF8
5FF8
4FF0
2FF0
23C0
1800
07FF
0000
ENDCHAR
STARTCHAR Fan bottom
ENCODING 206
SWIDTH 1142 0
DWIDTH 16 0
BBX 16 16 -5 -4
BITMAP
0FF8
0808
0808
0808
0808
0808
0808
09C8
0BE8
0B68
0BE8
09C8
0808
0FF8
0000
0000
ENDCHAR
STARTCHAR Fan top
ENCODING 207
SWIDTH 1142 0
DWIDTH 16 0
BBX 16 16 -5 -4
BITMAP
0FF8
0808
09C8
0BE8
0B68
0BE8
09C8
0808
0808
0808
0808
0808
0808
0FF8
0000
0000
ENDCHAR
STARTCHAR Fan back
ENCODING 208
SWIDTH 1142 0
DWIDTH 16 0
BBX 16 16 -5 -4
BITMAP
0058
0064
0E74
3184
E688
9C88
84B0
8480
8480
A480
8480
8500
E600
1C00
0000
0000
ENDCHAR
STARTCHAR VR
ENCODING 209
SWIDTH 1142 0
DWIDTH 16 0
BBX 16 16 -5 -4
BITMAP
07C0
0FE0
1FF0
1530
1550
1530
1B50
1FF0
1FF0
0540
0920
0920
0920
0920
0000
0000
ENDCHAR
STARTCHAR Chipset
ENCODING 210
SWIDTH 1142 0
DWIDTH 16 0
BBX 16 16 -5 -4
BITMAP
0000
0AA0
1FF0
3FF8
7C3C
3838
79FC
39F8
79FC
3838
7C3C
3FF8
1FF0
0AA0
0000
0000
ENDCHAR
STARTCHAR Motherboard
ENCODING 211
SWIDTH 1142 0
DWIDTH 16 0
BBX 16 16 -5 -4
BITMAP
FFFC
8004
9CA4
9CA4
9CA4
80A4
8004
FE14
8004
FE44
8014
FE44
8004
FFFC
0000
0000
ENDCHAR
STARTCHAR GPU
ENCODING 212
SWIDTH 1142 0
DWIDTH 16 0
BBX 16 16 -5 -4
BITMAP
0000
FFF8
0004
0002
374A
44CA
5F4A
4C4A
3432
0002
0004
FFF8
5540
7FC0
0000
0000
ENDCHAR
ENDFONT

View File

@ -0,0 +1,488 @@
STARTFONT 2.1
COMMENT
COMMENT This font is copyrighted by its author, who reserves all rights under
COMMENT national and international copyright laws.
COMMENT
COMMENT Produced with bdfedit, a tcl/tk font editing program
COMMENT written by Thomas A. Fine
COMMENT Email to my last name at head.cfa.harvard.edu
COMMENT http://hea-www.harvard.edu/~fine/
FONT -gbdfed-Unknown-Medium-R-Normal--14-140-72-72-M-77-FontSpecific
SIZE 14 72 72
FONTBOUNDINGBOX 16 16 -5 -4
STARTPROPERTIES 12
FOUNDRY "Fine"
FAMILY_NAME ""
WEIGHT_NAME "Medium"
SLANT "R"
SETWIDTH_NAME "Normal"
SPACING "c"
CHARSET_REGISTRY "ISO-8859"
CHARSET_ENCODING "1"
COPYRIGHT "Designer of this font retains full rights under the law"
FONT_ASCENT 12
FONT_DESCENT 4
_GBDFED_INFO "Edited with gbdfed 1.6."
ENDPROPERTIES
CHARS 20
STARTCHAR Fan
ENCODING 64
SWIDTH 1142 0
DWIDTH 16 0
BBX 16 16 -5 -4
BITMAP
0600
0F00
1F38
1E7C
1EFE
0EFE
078C
31E0
7F70
7F78
3E78
1CF8
00F0
0060
0000
0000
ENDCHAR
STARTCHAR Hz
ENCODING 66
SWIDTH 1142 0
DWIDTH 16 0
BBX 16 16 -5 -4
BITMAP
3080
3080
3080
30BF
3083
3083
3F86
308C
3098
30B0
30B0
30BF
0000
0000
0000
0000
ENDCHAR
STARTCHAR AIO
ENCODING 67
SWIDTH 1142 0
DWIDTH 16 0
BBX 16 16 -5 -4
BITMAP
FFFF
FFFF
FFFF
FFFF
0024
0024
0024
0024
3F24
3FC8
3F08
3F30
3FC0
3F00
0000
0000
ENDCHAR
STARTCHAR AMD
ENCODING 68
SWIDTH 1142 0
DWIDTH 16 0
BBX 16 16 -5 -4
BITMAP
7FFE
3FFE
1FFE
0FFE
081E
181E
381E
781E
781E
781E
7FFE
7FCE
7F86
7F02
0000
0000
ENDCHAR
STARTCHAR RPM
ENCODING 69
SWIDTH 1142 0
DWIDTH 16 0
BBX 16 16 -5 -4
BITMAP
0000
1E78
1964
1964
1E78
1960
1960
1960
0000
0730
06D0
0610
0610
0610
0000
0000
ENDCHAR
STARTCHAR Butt left empty
ENCODING 70
SWIDTH 1142 0
DWIDTH 16 0
BBX 16 16 -5 -4
BITMAP
0000
07FF
1800
2000
2000
4000
4000
4000
4000
4000
4000
2000
2000
1800
07FF
0000
ENDCHAR
STARTCHAR Mid empty
ENCODING 71
SWIDTH 1142 0
DWIDTH 16 0
BBX 16 16 -5 -4
BITMAP
0000
FFFF
0000
0000
0000
0000
0000
0000
0000
0000
0000
0000
0000
0000
FFFF
0000
ENDCHAR
STARTCHAR Butt right empty
ENCODING 72
SWIDTH 1142 0
DWIDTH 16 0
BBX 16 16 -5 -4
BITMAP
0000
FFE0
0018
0004
0004
0002
0002
0002
0002
0002
0002
0006
0004
0018
FFE0
0000
ENDCHAR
STARTCHAR Butt left full
ENCODING 73
SWIDTH 1142 0
DWIDTH 16 0
BBX 16 16 -5 -4
BITMAP
0000
07FF
1800
23FF
2FFF
4FFF
5FFF
5FFF
5FFF
5FFF
4FFF
2FFF
23FF
1800
07FF
0000
ENDCHAR
STARTCHAR Mid full
ENCODING 74
SWIDTH 1142 0
DWIDTH 16 0
BBX 16 16 -5 -4
BITMAP
0000
FFFF
0000
FFFF
FFFF
FFFF
FFFF
FFFF
FFFF
FFFF
FFFF
FFFF
FFFF
0000
FFFF
0000
ENDCHAR
STARTCHAR Mid full end
ENCODING 75
SWIDTH 1142 0
DWIDTH 16 0
BBX 16 16 -5 -4
BITMAP
0000
FFFF
0000
FFC0
FF30
FF90
FFD8
FFF8
FFF8
FFF8
FFF0
FFF0
FFC0
0000
FFFF
0000
ENDCHAR
STARTCHAR Butt full left
ENCODING 76
SWIDTH 1142 0
DWIDTH 16 0
BBX 16 16 -5 -4
BITMAP
0000
FFE0
0018
FFC4
FF34
FF92
FFDA
FFFA
FFFA
FFFA
FFF2
FFF4
FFC4
0018
FFE0
0000
ENDCHAR
STARTCHAR Temperature
ENCODING 77
SWIDTH 1142 0
DWIDTH 16 0
BBX 16 16 -5 -4
BITMAP
0000
07FF
1800
23C0
2F30
4F90
5FD8
5FF8
5FF8
5FF8
4FF0
2FF0
23C0
1800
07FF
0000
ENDCHAR
STARTCHAR Fan bottom
ENCODING 78
SWIDTH 1142 0
DWIDTH 16 0
BBX 16 16 -5 -4
BITMAP
0FF8
0808
0808
0808
0808
0808
0808
09C8
0BE8
0B68
0BE8
09C8
0808
0FF8
0000
0000
ENDCHAR
STARTCHAR Fan top
ENCODING 79
SWIDTH 1142 0
DWIDTH 16 0
BBX 16 16 -5 -4
BITMAP
0FF8
0808
09C8
0BE8
0B68
0BE8
09C8
0808
0808
0808
0808
0808
0808
0FF8
0000
0000
ENDCHAR
STARTCHAR Fan back
ENCODING 80
SWIDTH 1142 0
DWIDTH 16 0
BBX 16 16 -5 -4
BITMAP
0058
0064
0E74
3184
E688
9C88
84B0
8480
8480
A480
8480
8500
E600
1C00
0000
0000
ENDCHAR
STARTCHAR VR
ENCODING 81
SWIDTH 1142 0
DWIDTH 16 0
BBX 16 16 -5 -4
BITMAP
07C0
0FE0
1FF0
1530
1550
1530
1B50
1FF0
1FF0
0540
0920
0920
0920
0920
0000
0000
ENDCHAR
STARTCHAR Chipset
ENCODING 82
SWIDTH 1142 0
DWIDTH 16 0
BBX 16 16 -5 -4
BITMAP
0000
0AA0
1FF0
3FF8
7C3C
3838
79FC
39F8
79FC
3838
7C3C
3FF8
1FF0
0AA0
0000
0000
ENDCHAR
STARTCHAR Motherboard
ENCODING 83
SWIDTH 1142 0
DWIDTH 16 0
BBX 16 16 -5 -4
BITMAP
FFFC
8004
9CA4
9CA4
9CA4
80A4
8004
FE14
8004
FE44
8014
FE44
8004
FFFC
0000
0000
ENDCHAR
STARTCHAR GPU
ENCODING 84
SWIDTH 1142 0
DWIDTH 16 0
BBX 16 16 -5 -4
BITMAP
0000
FFF8
0004
0002
374A
44CA
5F4A
4C4A
3432
0002
0004
FFF8
5540
7FC0
0000
0000
ENDCHAR
ENDFONT

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,524 @@
STARTFONT 2.1
COMMENT
COMMENT This font is copyrighted by its author, who reserves all rights under
COMMENT national and international copyright laws.
COMMENT
COMMENT Produced with bdfedit, a tcl/tk font editing program
COMMENT written by Thomas A. Fine
COMMENT Email to my last name at head.cfa.harvard.edu
COMMENT http://hea-www.harvard.edu/~fine/
FONT -gbdfed-Unknown-Medium-R-Normal--14-140-72-72-M-77-FontSpecific-0
SIZE 14 72 72
FONTBOUNDINGBOX 16 16 -5 -4
STARTPROPERTIES 11
FOUNDRY "Fine"
FAMILY_NAME ""
WEIGHT_NAME "Medium"
SLANT "R"
SETWIDTH_NAME "Normal"
SPACING "c"
CHARSET_REGISTRY "ISO-8859"
CHARSET_ENCODING "1"
COPYRIGHT "Designer of this font retains full rights under the law"
FONT_ASCENT 12
FONT_DESCENT 4
ENDPROPERTIES
CHARS 24
STARTCHAR Fan
ENCODING 32
SWIDTH 714 0
DWIDTH 10 0
BBX 14 14 -4 -2
BITMAP
0c00
1e00
3e70
3cf8
3dfc
1dfc
0f18
63c0
fee0
fef0
7cf0
39f0
01e0
00c0
ENDCHAR
STARTCHAR Deg C
ENCODING 33
SWIDTH 714 0
DWIDTH 10 0
BBX 11 12 -3 0
BITMAP
61e0
9200
9400
6400
0800
0800
0800
0800
0400
0400
0200
01e0
ENDCHAR
STARTCHAR Hz
ENCODING 34
SWIDTH 714 0
DWIDTH 10 0
BBX 14 12 -3 0
BITMAP
c200
c200
c200
c2fc
c20c
c20c
fe18
c230
c260
c2c0
c2c0
c2fc
ENDCHAR
STARTCHAR AIO
ENCODING 35
SWIDTH 785 0
DWIDTH 11 0
BBX 16 14 -5 -2
BITMAP
ffff
ffff
ffff
ffff
0024
0024
0024
0024
3f24
3fc8
3f08
3f30
3fc0
3f00
ENDCHAR
STARTCHAR AMD
ENCODING 36
SWIDTH 714 0
DWIDTH 10 0
BBX 14 14 -4 -2
BITMAP
fffc
7ffc
3ffc
1ffc
103c
303c
703c
f03c
f03c
f03c
fffc
ff9c
ff0c
fe04
ENDCHAR
STARTCHAR RPM
ENCODING 37
SWIDTH 714 0
DWIDTH 10 0
BBX 11 13 -2 -2
BITMAP
f3c0
cb20
cb20
f3c0
cb00
cb00
cb00
0000
3980
3680
3080
3080
3080
ENDCHAR
STARTCHAR Butt left empty
ENCODING 38
SWIDTH 785 0
DWIDTH 11 0
BBX 15 14 -4 -3
BITMAP
0ffe
3000
4000
4000
8000
8000
8000
8000
8000
8000
4000
4000
3000
0ffe
ENDCHAR
STARTCHAR Mid empty
ENCODING 39
SWIDTH 785 0
DWIDTH 11 0
BBX 16 14 -5 -3
BITMAP
ffff
0000
0000
0000
0000
0000
0000
0000
0000
0000
0000
0000
0000
ffff
ENDCHAR
STARTCHAR Butt right empty
ENCODING 40
SWIDTH 714 0
DWIDTH 10 0
BBX 15 14 -5 -3
BITMAP
ffe0
0018
0004
0004
0002
0002
0002
0002
0002
0002
0006
0004
0018
ffe0
ENDCHAR
STARTCHAR Butt left full
ENCODING 41
SWIDTH 785 0
DWIDTH 11 0
BBX 15 14 -4 -3
BITMAP
0ffe
3000
47fe
5ffe
9ffe
bffe
bffe
bffe
bffe
9ffe
5ffe
47fe
3000
0ffe
ENDCHAR
STARTCHAR Mid full
ENCODING 42
SWIDTH 785 0
DWIDTH 11 0
BBX 16 14 -5 -3
BITMAP
ffff
0000
ffff
ffff
ffff
ffff
ffff
ffff
ffff
ffff
ffff
ffff
0000
ffff
ENDCHAR
STARTCHAR Mid full end
ENCODING 43
SWIDTH 785 0
DWIDTH 11 0
BBX 16 14 -5 -3
BITMAP
ffff
0000
ffc0
ff30
ff90
ffd8
fff8
fff8
fff8
fff0
fff0
ffc0
0000
ffff
ENDCHAR
STARTCHAR Butt full left
ENCODING 44
SWIDTH 714 0
DWIDTH 10 0
BBX 15 14 -5 -3
BITMAP
ffe0
0018
ffc4
ff34
ff92
ffda
fffa
fffa
fffa
fff2
fff4
ffc4
0018
ffe0
ENDCHAR
STARTCHAR Temperature
ENCODING 45
SWIDTH 785 0
DWIDTH 11 0
BBX 15 14 -4 -3
BITMAP
0ffe
3000
4780
5e60
9f20
bfb0
bff0
bff0
bff0
9fe0
5fe0
4780
3000
0ffe
ENDCHAR
STARTCHAR Fan bottom
ENCODING 46
SWIDTH 714 0
DWIDTH 10 0
BBX 9 14 -1 -2
BITMAP
ff80
8080
8080
8080
8080
8080
8080
9c80
be80
b680
be80
9c80
8080
ff80
ENDCHAR
STARTCHAR Fan top
ENCODING 47
SWIDTH 714 0
DWIDTH 10 0
BBX 9 14 -1 -2
BITMAP
ff80
8080
9c80
be80
b680
be80
9c80
8080
8080
8080
8080
8080
8080
ff80
ENDCHAR
STARTCHAR Fan back
ENCODING 48
SWIDTH 714 0
DWIDTH 10 0
BBX 14 14 -5 -2
BITMAP
0058
0064
0e74
3184
e688
9c88
84b0
8480
8480
a480
8480
8500
e600
1c00
ENDCHAR
STARTCHAR VR
ENCODING 49
SWIDTH 714 0
DWIDTH 10 0
BBX 9 14 -2 -2
BITMAP
3e00
7f00
ff80
a980
aa80
a980
da80
ff80
ff80
2a00
4900
4900
4900
4900
ENDCHAR
STARTCHAR Chipset
ENCODING 50
SWIDTH 714 0
DWIDTH 10 0
BBX 13 13 -4 -2
BITMAP
1540
3fe0
7ff0
f878
7070
f3f8
73f0
f3f8
7070
f878
7ff0
3fe0
1540
ENDCHAR
STARTCHAR Motherboard
ENCODING 51
SWIDTH 714 0
DWIDTH 10 0
BBX 14 14 -5 -2
BITMAP
fffc
8004
9ca4
9ca4
9ca4
80a4
8004
fe14
8004
fe44
8014
fe44
8004
fffc
ENDCHAR
STARTCHAR GPU
ENCODING 52
SWIDTH 714 0
DWIDTH 10 0
BBX 15 13 -5 -2
BITMAP
fff8
0004
0002
374a
44ca
5f4a
4c4a
3432
0002
0004
fff8
5540
7fc0
ENDCHAR
STARTCHAR Nvidia
ENCODING 53
SWIDTH 714 0
DWIDTH 10 0
BBX 14 14 -5 -2
BITMAP
fe00
fe00
fe00
f180
ee60
d990
b1e4
d98c
ee1c
f1f0
fd80
fe00
fe00
fe00
ENDCHAR
STARTCHAR char54
ENCODING 54
SWIDTH 714 0
DWIDTH 10 0
BBX 14 14 -5 -2
BITMAP
fe00
fe00
f1c0
ee20
d990
b6c8
6ed0
b620
d9cc
ee1c
f270
fd80
fe00
fe00
ENDCHAR
STARTCHAR C067
ENCODING 55
SWIDTH 714 0
DWIDTH 10 0
BBX 5 14 1 -2
BITMAP
20
50
50
50
50
70
70
70
70
70
f8
f8
f8
70
ENDCHAR
ENDFONT

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,29 @@
/*
Fontname: -gbdfed-Unknown-Medium-R-Normal--14-140-72-72-M-77-FontSpecific-0
Copyright: Designer of this font retains full rights under the law
Glyphs: 21/21
BBX Build Mode: 3
*/
const uint8_t stats_font4x4[676] U8X8_FONT_SECTION("stats_font4x4") =
"@T\2\2\0\0\70|\376\376\214\340pxx\370\360`\0\0\6\17\37\36\36\16\7\61\177\177>\34"
"\0\0\0\0\14\22\22\14\340\30\4\2\2\2\2\0\0\0\0\0\0\0\0\0\1\6\10\20\20\20\20\0"
"\0\0\0\0\376\376\200\200\200\200\376\0\20\20\20\220\360p\0\0\37\37\0\0\0\0\37\0\34\36\23\21"
"\20\20\0\0\36\36\36\36\36\36\36\36\36\36\376\36\36\376\36\36\0\0~~~~~~$$\23\20"
"\14\3\0\0\2\206\316\376\36\36\36\36\36\36\376\376\376\376\0\0\177\177\177\177xxx\70\30\10\17\37"
"\77\177\0\0\374\374$$\330\0\374\374$$\30\0\0\0\0\0\1\1||\5\10\11\5|\0\0\0"
"\0\0\0\0\300\60\10\10\4\4\4\4\4\4\4\4\4\4\4\0\17\60@@\200\200\200\200\200\200\200\200"
"\200\200\200\0\4\4\4\4\4\4\4\4\4\4\4\4\4\4\4\4\200\200\200\200\200\200\200\200\200\200\200\200"
"\200\200\200\200\4\4\4\4\4\4\4\4\4\4\4\10\10\60\300\0\200\200\200\200\200\200\200\200\200\200\200@"
"@\60\37\0\300\60\210\350\344\364\364\364\364\364\364\364\364\364\364\0\17\60G_\237\277\277\277\277\277\277\277"
"\277\277\277\0\364\364\364\364\364\364\364\364\364\364\364\364\364\364\364\364\277\277\277\277\277\277\277\277\277\277\277\277"
"\277\277\277\277\364\364\364\364\364\364\364\364\324\224$\344\204\4\4\4\277\277\277\277\277\277\277\277\277\277\237\237"
"\207\200\200\200\364\364\364\364\364\364\364\364\324\224$\350\210\60\300\0\277\277\277\277\277\277\277\277\277\277\237_"
"G\60\17\0\300\60\210\350\344\364\364\324\224$\344\204\4\4\4\0\17\60G_\237\277\277\277\277\237\237\207"
"\200\200\200\0\376\2\2\2\2\2\2\2\376\0\0\0\0\0\0\0\177@N_[_N@\177\0\0\0"
"\0\0\0\0\376\2r\372\332\372r\2\376\0\0\0\0\0\0\0\177@@@@@@@\177\0\0\0"
"\0\0\0\0\340 \60PH\350(\20\360\16\214\212b\34\0\0\77 $@@\177 \20\17\0\0\0"
"\0\0\0\0\370\214~\216\376\16\256\134\370\0\0\0\0\0\0\0\3{\7\3\177\3\7{\3\0\0\0"
"\0\0\0\0\240\360\370\374\70\34\230\234\230\374\370\360\240\0\0\0\12\37\77\177\70p\63s\63\177\77\37"
"\12\0\0\0\376\2\2:::\2\2z\2z\2\2\376\0\0\177UUUUUU@@T@I"
"@\177\0\0\4\304$\244\204\344\244\244D\344\4\4\344\10\360\0\20qRrQsPpPq\22\22"
"\21\10\7";

View File

@ -0,0 +1,40 @@
STARTFONT 2.1
FONT -gbdfed-Unknown-Medium-R-Normal--16-120-96-96-P-100-FontSpecific-0
SIZE 12 96 96
FONTBOUNDINGBOX 10 16 0 -4
STARTPROPERTIES 9
POINT_SIZE 120
PIXEL_SIZE 16
RESOLUTION_X 96
RESOLUTION_Y 96
FONT_ASCENT 12
FONT_DESCENT 4
AVERAGE_WIDTH 100
SPACING "C"
_GBDFED_INFO "Edited with gbdfed 1.6."
ENDPROPERTIES
CHARS 1
STARTCHAR char0
ENCODING 0
SWIDTH 625 0
DWIDTH 10 0
BBX 10 16 0 -4
BITMAP
2000
F000
F3C0
E7C0
E7C0
E7C0
EC00
FE00
1FC0
0DC0
F9C0
F9C0
F9C0
F3C0
03C0
0100
ENDCHAR
ENDFONT

View File

@ -0,0 +1,373 @@
STARTFONT 2.1
COMMENT
COMMENT This font is copyrighted by its author, who reserves all rights under
COMMENT national and international copyright laws.
COMMENT
COMMENT Produced with bdfedit, a tcl/tk font editing program
COMMENT written by Thomas A. Fine
COMMENT Email to my last name at head.cfa.harvard.edu
COMMENT http://hea-www.harvard.edu/~fine/
FONT -gbdfed-Unknown-Medium-R-Normal--14-140-72-72-M-77-FontSpecific-0
SIZE 14 72 72
FONTBOUNDINGBOX 16 16 -5 -4
STARTPROPERTIES 12
FOUNDRY "Fine"
FAMILY_NAME ""
WEIGHT_NAME "Medium"
SLANT "R"
SETWIDTH_NAME "Normal"
SPACING "c"
CHARSET_REGISTRY "ISO-8859"
CHARSET_ENCODING "1"
COPYRIGHT "Designer of this font retains full rights under the law"
FONT_ASCENT 12
FONT_DESCENT 4
_GBDFED_INFO "Edited with gbdfed 1.6."
ENDPROPERTIES
CHARS 15
STARTCHAR comma
ENCODING 44
SWIDTH 1142 0
DWIDTH 16 0
BBX 16 16 -5 -4
BITMAP
0000
0000
0000
0000
0000
0000
0000
0000
0000
0000
0180
0080
0080
0100
0000
0000
ENDCHAR
STARTCHAR hyphen
ENCODING 45
SWIDTH 1142 0
DWIDTH 16 0
BBX 16 16 -5 -4
BITMAP
0000
0000
0000
0000
0000
0000
0000
03E0
0000
0000
0000
0000
0000
0000
0000
0000
ENDCHAR
STARTCHAR period
ENCODING 46
SWIDTH 1142 0
DWIDTH 16 0
BBX 16 16 -5 -4
BITMAP
0000
0000
0000
0000
0000
0000
0000
0000
0000
0000
0080
01C0
0080
0000
0000
0000
ENDCHAR
STARTCHAR zero
ENCODING 48
SWIDTH 1142 0
DWIDTH 16 0
BBX 16 16 -5 -4
BITMAP
0000
0000
0180
0240
0420
0420
0420
0420
0420
0420
0240
0180
0000
0000
0000
0000
ENDCHAR
STARTCHAR one
ENCODING 49
SWIDTH 1142 0
DWIDTH 16 0
BBX 16 16 -5 -4
BITMAP
0000
0000
0100
0300
0500
0100
0100
0100
0100
0100
0100
07C0
0000
0000
0000
0000
ENDCHAR
STARTCHAR two
ENCODING 50
SWIDTH 1142 0
DWIDTH 16 0
BBX 16 16 -5 -4
BITMAP
0000
0000
03C0
0420
0420
0020
0040
0040
0080
0100
0200
07E0
0000
0000
0000
0000
ENDCHAR
STARTCHAR three
ENCODING 51
SWIDTH 1142 0
DWIDTH 16 0
BBX 16 16 -5 -4
BITMAP
0000
0000
07E0
0020
0040
0080
01C0
0020
0020
0420
0420
03C0
0000
0000
0000
0000
ENDCHAR
STARTCHAR four
ENCODING 52
SWIDTH 1142 0
DWIDTH 16 0
BBX 16 16 -5 -4
BITMAP
0000
0000
0040
00C0
0140
0140
0240
0240
0440
07E0
0040
0040
0000
0000
0000
0000
ENDCHAR
STARTCHAR five
ENCODING 53
SWIDTH 1142 0
DWIDTH 16 0
BBX 16 16 -5 -4
BITMAP
0000
0000
07E0
0400
0400
07C0
0420
0020
0020
0420
0420
03C0
0000
0000
0000
0000
ENDCHAR
STARTCHAR six
ENCODING 54
SWIDTH 1142 0
DWIDTH 16 0
BBX 16 16 -5 -4
BITMAP
0000
0000
01C0
0200
0400
0400
05C0
0620
0420
0420
0420
03C0
0000
0000
0000
0000
ENDCHAR
STARTCHAR seven
ENCODING 55
SWIDTH 1142 0
DWIDTH 16 0
BBX 16 16 -5 -4
BITMAP
0000
0000
07E0
0020
0040
0040
0080
0080
0100
0100
0200
0200
0000
0000
0000
0000
ENDCHAR
STARTCHAR eight
ENCODING 56
SWIDTH 1142 0
DWIDTH 16 0
BBX 16 16 -5 -4
BITMAP
0000
0000
03C0
0420
0420
0240
0180
0240
0420
0420
0420
03C0
0000
0000
0000
0000
ENDCHAR
STARTCHAR nine
ENCODING 57
SWIDTH 1142 0
DWIDTH 16 0
BBX 16 16 -5 -4
BITMAP
0000
0000
03C0
0420
0420
0420
0460
03A0
0020
0420
0440
0380
0000
0000
0000
0000
ENDCHAR
STARTCHAR Degrees C
ENCODING 65
SWIDTH 1142 0
DWIDTH 16 0
BBX 16 16 -5 -4
BITMAP
0000
0000
0000
0230
0540
0280
0080
0080
0080
0080
0040
0030
0000
0000
0000
0000
ENDCHAR
STARTCHAR Nvidia
ENCODING 85
SWIDTH 1142 0
DWIDTH 16 0
BBX 16 16 -5 -4
BITMAP
0080
0140
0140
0140
0140
01C0
01C0
01C0
01C0
01C0
03E0
03E0
03E0
01C0
0000
0000
ENDCHAR
ENDFONT

View File

@ -0,0 +1,247 @@
STARTFONT 2.1
COMMENT
COMMENT This font is copyrighted by its author, who reserves all rights under
COMMENT national and international copyright laws.
COMMENT
COMMENT Produced with bdfedit, a tcl/tk font editing program
COMMENT written by Thomas A. Fine
COMMENT Email to my last name at head.cfa.harvard.edu
COMMENT http://hea-www.harvard.edu/~fine/
FONT -gbdfed-Unknown-Medium-R-Normal--14-140-72-72-M-77-FontSpecific-0
SIZE 14 72 72
FONTBOUNDINGBOX 16 16 -5 -4
STARTPROPERTIES 11
FOUNDRY "Fine"
FAMILY_NAME ""
WEIGHT_NAME "Medium"
SLANT "R"
SETWIDTH_NAME "Normal"
SPACING "c"
CHARSET_REGISTRY "ISO-8859"
CHARSET_ENCODING "1"
COPYRIGHT "Designer of this font retains full rights under the law"
FONT_ASCENT 12
FONT_DESCENT 4
ENDPROPERTIES
CHARS 14
STARTCHAR comma
ENCODING 44
SWIDTH 1142 0
DWIDTH 16 0
BBX 2 4 2 -2
BITMAP
c0
40
40
80
ENDCHAR
STARTCHAR hyphen
ENCODING 45
SWIDTH 1142 0
DWIDTH 16 0
BBX 5 1 1 4
BITMAP
f8
ENDCHAR
STARTCHAR period
ENCODING 46
SWIDTH 1142 0
DWIDTH 16 0
BBX 3 3 2 -1
BITMAP
40
e0
40
ENDCHAR
STARTCHAR zero
ENCODING 48
SWIDTH 500 0
DWIDTH 7 0
BBX 6 10 0 0
BITMAP
30
48
84
84
84
84
84
84
48
30
ENDCHAR
STARTCHAR one
ENCODING 49
SWIDTH 428 0
DWIDTH 6 0
BBX 5 10 0 0
BITMAP
20
60
a0
20
20
20
20
20
20
f8
ENDCHAR
STARTCHAR two
ENCODING 50
SWIDTH 500 0
DWIDTH 7 0
BBX 6 10 0 0
BITMAP
78
84
84
04
08
08
10
20
40
fc
ENDCHAR
STARTCHAR three
ENCODING 51
SWIDTH 500 0
DWIDTH 7 0
BBX 6 10 0 0
BITMAP
fc
04
08
10
38
04
04
84
84
78
ENDCHAR
STARTCHAR four
ENCODING 52
SWIDTH 500 0
DWIDTH 7 0
BBX 6 10 0 0
BITMAP
08
18
28
28
48
48
88
fc
08
08
ENDCHAR
STARTCHAR five
ENCODING 53
SWIDTH 500 0
DWIDTH 7 0
BBX 6 10 0 0
BITMAP
fc
80
80
f8
84
04
04
84
84
78
ENDCHAR
STARTCHAR six
ENCODING 54
SWIDTH 500 0
DWIDTH 7 0
BBX 6 10 0 0
BITMAP
38
40
80
80
b8
c4
84
84
84
78
ENDCHAR
STARTCHAR seven
ENCODING 55
SWIDTH 500 0
DWIDTH 7 0
BBX 6 10 0 0
BITMAP
fc
04
08
08
10
10
20
20
40
40
ENDCHAR
STARTCHAR eight
ENCODING 56
SWIDTH 428 0
DWIDTH 6 0
BBX 6 10 0 0
BITMAP
78
84
84
48
30
48
84
84
84
78
ENDCHAR
STARTCHAR nine
ENCODING 57
SWIDTH 500 0
DWIDTH 7 0
BBX 6 10 0 0
BITMAP
78
84
84
84
8c
74
04
84
88
70
ENDCHAR
STARTCHAR Nvidia
ENCODING 85
SWIDTH 500 0
DWIDTH 7 0
BBX 5 14 1 -2
BITMAP
20
50
50
50
50
70
70
70
70
70
f8
f8
f8
70
ENDCHAR
ENDFONT

View File

@ -0,0 +1,250 @@
#include <stdio.h>
#include <string.h>
#include "sdkconfig.h"
#include "esp_log.h"
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "u8g2_esp32_hal.h"
static const char *TAG = "u8g2_hal";
static const unsigned int I2C_TIMEOUT_MS = 1000;
#undef ESP_ERROR_CHECK
#define ESP_ERROR_CHECK(x) do { esp_err_t rc = (x); if (rc != ESP_OK) { ESP_LOGE("err", "esp_err_t = %d", rc); assert(0 && #x);} } while(0);
/*
* Initialze the ESP32 HAL.
*/
void u8g2_esp32_hal_init(u8x8_t *u8x8, u8g2_esp32_hal_t u8g2_esp32_hal_param) {
u8g2_esp_hal_handle_t *userptr = (u8g2_esp_hal_handle_t *) malloc(sizeof(u8g2_esp_hal_handle_t));
userptr->u8g2_esp32_hal = u8g2_esp32_hal_param;
u8x8_SetUserPtr(u8x8, (void *) userptr);
} // u8g2_esp32_hal_init
void u8g2_esp32_hal_free(u8x8_t *u8x8) {
if (u8x8_GetUserPtr(u8x8) != NULL) {
free(u8x8_GetUserPtr(u8x8));
}
u8x8_SetUserPtr(u8x8, NULL);
} // u8g2_esp32_hal_init
/*
* HAL callback function as prescribed by the U8G2 library. This callback is invoked
* to handle SPI communications.
*/
uint8_t u8g2_esp32_spi_byte_cb(u8x8_t *u8x8, uint8_t msg, uint8_t arg_int, void *arg_ptr) {
ESP_LOGD(TAG, "spi_byte_cb: Received a msg: %d, arg_int: %d, arg_ptr: %p", msg, arg_int, arg_ptr);
u8g2_esp_hal_handle_t *userptr = (u8g2_esp_hal_handle_t *) u8x8_GetUserPtr(u8x8);
u8g2_esp32_hal_t *u8g2_esp32_hal = &userptr->u8g2_esp32_hal;
spi_device_handle_t *handle_spi = &userptr->handle_spi;
switch(msg) {
case U8X8_MSG_BYTE_SET_DC:
if (u8g2_esp32_hal->dc != U8G2_ESP32_HAL_UNDEFINED) {
gpio_set_level(u8g2_esp32_hal->dc, arg_int);
}
break;
case U8X8_MSG_BYTE_INIT: {
if (u8g2_esp32_hal->clk == U8G2_ESP32_HAL_UNDEFINED ||
u8g2_esp32_hal->mosi == U8G2_ESP32_HAL_UNDEFINED ||
u8g2_esp32_hal->cs == U8G2_ESP32_HAL_UNDEFINED) {
break;
}
spi_bus_config_t bus_config;
memset(&bus_config, 0, sizeof(spi_bus_config_t));
bus_config.sclk_io_num = u8g2_esp32_hal->clk; // CLK
bus_config.mosi_io_num = u8g2_esp32_hal->mosi; // MOSI
bus_config.miso_io_num = -1; // MISO
bus_config.quadwp_io_num = -1; // Not used
bus_config.quadhd_io_num = -1; // Not used
//ESP_LOGI(TAG, "... Initializing bus.");
ESP_ERROR_CHECK(spi_bus_initialize(HSPI_HOST, &bus_config, 1));
spi_device_interface_config_t dev_config;
dev_config.address_bits = 0;
dev_config.command_bits = 0;
dev_config.dummy_bits = 0;
dev_config.mode = 0;
dev_config.duty_cycle_pos = 0;
dev_config.cs_ena_posttrans = 0;
dev_config.cs_ena_pretrans = 0;
dev_config.clock_speed_hz = 10000;
dev_config.spics_io_num = u8g2_esp32_hal->cs;
dev_config.flags = 0;
dev_config.queue_size = 200;
dev_config.pre_cb = NULL;
dev_config.post_cb = NULL;
//ESP_LOGI(TAG, "... Adding device bus.");
ESP_ERROR_CHECK(spi_bus_add_device(HSPI_HOST, &dev_config, handle_spi));
break;
}
case U8X8_MSG_BYTE_SEND: {
spi_transaction_t trans_desc;
trans_desc.addr = 0;
trans_desc.cmd = 0;
trans_desc.flags = 0;
trans_desc.length = 8 * arg_int; // Number of bits NOT number of bytes.
trans_desc.rxlength = 0;
trans_desc.tx_buffer = arg_ptr;
trans_desc.rx_buffer = NULL;
//ESP_LOGI(TAG, "... Transmitting %d bytes.", arg_int);
ESP_ERROR_CHECK(spi_device_transmit(*handle_spi, &trans_desc));
break;
}
}
return 0;
} // u8g2_esp32_spi_byte_cb
/*
* HAL callback function as prescribed by the U8G2 library. This callback is invoked
* to handle I2C communications.
*/
uint8_t u8g2_esp32_i2c_byte_cb(u8x8_t *u8x8, uint8_t msg, uint8_t arg_int, void *arg_ptr) {
ESP_LOGD(TAG, "i2c_cb: Received a msg: %d, arg_int: %d, arg_ptr: %p", msg, arg_int, arg_ptr);
u8g2_esp_hal_handle_t *userptr = (u8g2_esp_hal_handle_t *) u8x8_GetUserPtr(u8x8);
u8g2_esp32_hal_t *u8g2_esp32_hal = &userptr->u8g2_esp32_hal;
i2c_cmd_handle_t *handle_i2c = &userptr->handle_i2c;
switch(msg) {
case U8X8_MSG_BYTE_SET_DC: {
if (u8g2_esp32_hal->dc != U8G2_ESP32_HAL_UNDEFINED) {
gpio_set_level(u8g2_esp32_hal->dc, arg_int);
}
break;
}
case U8X8_MSG_BYTE_INIT: {
if (u8g2_esp32_hal->sda == U8G2_ESP32_HAL_UNDEFINED ||
u8g2_esp32_hal->scl == U8G2_ESP32_HAL_UNDEFINED) {
break;
}
i2c_config_t conf;
conf.mode = I2C_MODE_MASTER;
ESP_LOGI(TAG, "sda_io_num %d", u8g2_esp32_hal->sda);
conf.sda_io_num = u8g2_esp32_hal->sda;
conf.sda_pullup_en = GPIO_PULLUP_ENABLE;
ESP_LOGI(TAG, "scl_io_num %d", u8g2_esp32_hal->scl);
conf.scl_io_num = u8g2_esp32_hal->scl;
conf.scl_pullup_en = GPIO_PULLUP_ENABLE;
ESP_LOGI(TAG, "clk_speed %d", I2C_MASTER_FREQ_HZ);
conf.master.clk_speed = I2C_MASTER_FREQ_HZ;
ESP_LOGI(TAG, "i2c_param_config %d", conf.mode);
ESP_ERROR_CHECK(i2c_param_config(u8g2_esp32_hal->master_num, &conf));
ESP_LOGI(TAG, "i2c_driver_install %d", u8g2_esp32_hal->master_num);
ESP_ERROR_CHECK(i2c_driver_install(u8g2_esp32_hal->master_num, conf.mode, I2C_MASTER_RX_BUF_DISABLE, I2C_MASTER_TX_BUF_DISABLE, 0));
break;
}
case U8X8_MSG_BYTE_SEND: {
uint8_t* data_ptr = (uint8_t*)arg_ptr;
ESP_LOG_BUFFER_HEXDUMP(TAG, data_ptr, arg_int, ESP_LOG_VERBOSE);
while( arg_int > 0 ) {
ESP_ERROR_CHECK(i2c_master_write_byte(*handle_i2c, *data_ptr, ACK_CHECK_EN));
data_ptr++;
arg_int--;
}
break;
}
case U8X8_MSG_BYTE_START_TRANSFER: {
uint8_t i2c_address = u8x8_GetI2CAddress(u8x8);
*handle_i2c = i2c_cmd_link_create();
ESP_LOGD(TAG, "Start I2C transfer to %02X.", i2c_address>>1);
ESP_ERROR_CHECK(i2c_master_start(*handle_i2c));
ESP_ERROR_CHECK(i2c_master_write_byte(*handle_i2c, i2c_address | I2C_MASTER_WRITE, ACK_CHECK_EN));
break;
}
case U8X8_MSG_BYTE_END_TRANSFER: {
ESP_LOGD(TAG, "End I2C transfer.");
ESP_ERROR_CHECK(i2c_master_stop(*handle_i2c));
ESP_ERROR_CHECK(i2c_master_cmd_begin(u8g2_esp32_hal->master_num, *handle_i2c, I2C_TIMEOUT_MS / portTICK_RATE_MS));
i2c_cmd_link_delete(*handle_i2c);
break;
}
}
return 0;
} // u8g2_esp32_i2c_byte_cb
/*
* HAL callback function as prescribed by the U8G2 library. This callback is invoked
* to handle callbacks for GPIO and delay functions.
*/
uint8_t u8g2_esp32_gpio_and_delay_cb(u8x8_t *u8x8, uint8_t msg, uint8_t arg_int, void *arg_ptr) {
ESP_LOGD(TAG, "gpio_and_delay_cb: Received a msg: %d, arg_int: %d, arg_ptr: %p", msg, arg_int, arg_ptr);
u8g2_esp_hal_handle_t *userptr = (u8g2_esp_hal_handle_t *) u8x8_GetUserPtr(u8x8);
u8g2_esp32_hal_t *u8g2_esp32_hal = &userptr->u8g2_esp32_hal;
switch(msg) {
// Initialize the GPIO and DELAY HAL functions. If the pins for DC and RESET have been
// specified then we define those pins as GPIO outputs.
case U8X8_MSG_GPIO_AND_DELAY_INIT: {
uint64_t bitmask = 0;
if (u8g2_esp32_hal->dc != U8G2_ESP32_HAL_UNDEFINED) {
bitmask = bitmask | (1ull<<u8g2_esp32_hal->dc);
}
if (u8g2_esp32_hal->reset != U8G2_ESP32_HAL_UNDEFINED) {
bitmask = bitmask | (1ull<<u8g2_esp32_hal->reset);
}
if (u8g2_esp32_hal->cs != U8G2_ESP32_HAL_UNDEFINED) {
bitmask = bitmask | (1ull<<u8g2_esp32_hal->cs);
}
if (bitmask==0) {
break;
}
gpio_config_t gpioConfig;
gpioConfig.pin_bit_mask = bitmask;
gpioConfig.mode = GPIO_MODE_OUTPUT;
gpioConfig.pull_up_en = GPIO_PULLUP_DISABLE;
gpioConfig.pull_down_en = GPIO_PULLDOWN_ENABLE;
gpioConfig.intr_type = GPIO_INTR_DISABLE;
gpio_config(&gpioConfig);
break;
}
// Set the GPIO reset pin to the value passed in through arg_int.
case U8X8_MSG_GPIO_RESET:
if (u8g2_esp32_hal->reset != U8G2_ESP32_HAL_UNDEFINED) {
gpio_set_level(u8g2_esp32_hal->reset, arg_int);
}
break;
// Set the GPIO client select pin to the value passed in through arg_int.
case U8X8_MSG_GPIO_CS:
if (u8g2_esp32_hal->cs != U8G2_ESP32_HAL_UNDEFINED) {
gpio_set_level(u8g2_esp32_hal->cs, arg_int);
}
break;
// Set the Software I²C pin to the value passed in through arg_int.
case U8X8_MSG_GPIO_I2C_CLOCK:
if (u8g2_esp32_hal->scl != U8G2_ESP32_HAL_UNDEFINED) {
gpio_set_level(u8g2_esp32_hal->scl, arg_int);
// printf("%c",(arg_int==1?'C':'c'));
}
break;
// Set the Software I²C pin to the value passed in through arg_int.
case U8X8_MSG_GPIO_I2C_DATA:
if (u8g2_esp32_hal->sda != U8G2_ESP32_HAL_UNDEFINED) {
gpio_set_level(u8g2_esp32_hal->sda, arg_int);
// printf("%c",(arg_int==1?'D':'d'));
}
break;
// Delay for the number of milliseconds passed in through arg_int.
case U8X8_MSG_DELAY_MILLI:
vTaskDelay(arg_int/portTICK_PERIOD_MS);
break;
}
return 0;
} // u8g2_esp32_gpio_and_delay_cb

View File

@ -0,0 +1,48 @@
/*
* u8g2_esp32_hal.h
*
* Created on: Feb 12, 2017
* Author: kolban
*/
#ifndef U8G2_ESP32_HAL_H_
#define U8G2_ESP32_HAL_H_
#include <clib/u8g2.h>
#include "driver/gpio.h"
#include "driver/spi_master.h"
#include "driver/i2c.h"
#define U8G2_ESP32_HAL_UNDEFINED (gpio_num_t) (-1)
#define I2C_MASTER_TX_BUF_DISABLE 0 // I2C master do not need buffer
#define I2C_MASTER_RX_BUF_DISABLE 0 // I2C master do not need buffer
#define I2C_MASTER_FREQ_HZ 1000000 // I2C master clock frequency
#define ACK_CHECK_EN 0x1 // I2C master will check ack from slave
#define ACK_CHECK_DIS 0x0 // I2C master will not check ack from slave
typedef struct {
gpio_num_t clk;
gpio_num_t mosi;
gpio_num_t sda; // data for I²C
gpio_num_t scl; // clock for I²C
gpio_num_t cs;
gpio_num_t reset;
gpio_num_t dc;
i2c_port_t master_num;
} u8g2_esp32_hal_t ;
typedef struct {
spi_device_handle_t handle_spi;
i2c_cmd_handle_t handle_i2c;
u8g2_esp32_hal_t u8g2_esp32_hal;
} u8g2_esp_hal_handle_t;
#define U8G2_ESP32_HAL_DEFAULT {U8G2_ESP32_HAL_UNDEFINED, U8G2_ESP32_HAL_UNDEFINED, U8G2_ESP32_HAL_UNDEFINED, U8G2_ESP32_HAL_UNDEFINED, U8G2_ESP32_HAL_UNDEFINED, U8G2_ESP32_HAL_UNDEFINED, U8G2_ESP32_HAL_UNDEFINED, I2C_NUM_0}
void u8g2_esp32_hal_init(u8x8_t *u8x8, u8g2_esp32_hal_t u8g2_esp32_hal_param);
void u8g2_esp32_hal_init(u8x8_t *u8x8, u8g2_esp32_hal_t u8g2_esp32_hal_param);
uint8_t u8g2_esp32_spi_byte_cb(u8x8_t *u8x8, uint8_t msg, uint8_t arg_int, void *arg_ptr);
uint8_t u8g2_esp32_i2c_byte_cb(u8x8_t *u8x8, uint8_t msg, uint8_t arg_int, void *arg_ptr);
uint8_t u8g2_esp32_gpio_and_delay_cb(u8x8_t *u8x8, uint8_t msg, uint8_t arg_int, void *arg_ptr);
#endif /* U8G2_ESP32_HAL_H_ */