mirror of
https://github.com/opentx/opentx.git
synced 2025-07-26 09:45:21 +03:00
[X9D] New font. BMP 1bit support. 12 chars model name. Main screen
This commit is contained in:
parent
031bf5e3a1
commit
ad8eb930da
30 changed files with 654 additions and 199 deletions
53
src/Makefile
53
src/Makefile
|
@ -254,7 +254,6 @@ ifeq ($(PCB), SKY9X)
|
|||
endif
|
||||
|
||||
ifeq ($(PCB), X9D)
|
||||
CPPDEFS += -DREVB
|
||||
LDSCRIPT = sky9x/sam3s4c_flash.ld
|
||||
TRGT = arm-none-eabi-
|
||||
MCU = cortex-m4
|
||||
|
@ -447,7 +446,7 @@ RUN_FROM_FLASH = 1
|
|||
ifeq ($(PCB), X9D)
|
||||
# X9D, so ...
|
||||
OPT = 2
|
||||
CPPDEFS += -DPCBX9D -DPCBSKY9X -DEEPROM_VARIANT=0 -DAUDIO -DHAPTIC -DPXX -DDSM2 -DDSM2_PPM -DROTARY_ENCODERS=1 -DLCD212
|
||||
CPPDEFS += -DPCBX9D -DPCBSKY9X -DREVB -DCPUARM -DEEPROM_VARIANT=0 -DAUDIO -DHAPTIC -DPXX -DDSM2 -DDSM2_PPM -DROTARY_ENCODERS=1 -DLCD212
|
||||
EXTRAINCDIRS += sky9x CoOS/kernel CoOS/portable
|
||||
BOARDSRC = board_sky9x.cpp
|
||||
SRC += sky9x/core_cm3.c sky9x/board_lowlevel.c sky9x/crt.c sky9x/vectors_sam3s.c
|
||||
|
@ -460,6 +459,7 @@ ifeq ($(PCB), X9D)
|
|||
PULSESSRC = pulses_arm.cpp
|
||||
CPPSRC += sky9x/audio.cpp haptic.cpp
|
||||
CPPSRC += sky9x/sound_driver.cpp sky9x/haptic_driver.cpp sky9x/sdcard_driver.cpp
|
||||
CPPSRC += bmp.cpp
|
||||
|
||||
ifeq ($(SDCARD), YES)
|
||||
EXTRABOARDSRC += FatFs/ff.c FatFs/fattime.c FatFs/option/ccsbcs.c sky9x/diskio.cpp
|
||||
|
@ -481,7 +481,7 @@ endif
|
|||
ifeq ($(PCB), SKY9X)
|
||||
# SKY9X, so ...
|
||||
OPT = 2
|
||||
CPPDEFS += -DPCBSKY9X -DEEPROM_VARIANT=0 -DAUDIO -DHAPTIC -DRTCLOCK -DPXX -DDSM2 -DDSM2_PPM -DROTARY_ENCODERS=1
|
||||
CPPDEFS += -DPCBSKY9X -DCPUARM -DEEPROM_VARIANT=0 -DAUDIO -DHAPTIC -DRTCLOCK -DPXX -DDSM2 -DDSM2_PPM -DROTARY_ENCODERS=1
|
||||
EXTRAINCDIRS += sky9x CoOS/kernel CoOS/portable
|
||||
BOARDSRC = board_sky9x.cpp
|
||||
SRC += sky9x/core_cm3.c sky9x/board_lowlevel.c sky9x/crt.c sky9x/vectors_sam3s.c
|
||||
|
@ -542,7 +542,7 @@ endif
|
|||
ifeq ($(PCB), STD128)
|
||||
# STD PCB with Atmega 128, so ...
|
||||
OPT = 2
|
||||
CPPDEFS += -DPCBSTD -DM128 -DEEPROM_VARIANT=0x8000
|
||||
CPPDEFS += -DPCBSTD -DCPUM128 -DEEPROM_VARIANT=0x8000
|
||||
EXTRAINCDIRS += stock
|
||||
BOARDSRC = board_stock.cpp
|
||||
EEPROMSRC = eeprom_avr.cpp
|
||||
|
@ -578,7 +578,7 @@ ifeq ($(PCB), STD)
|
|||
# STD PCB, so ...
|
||||
OPT = s
|
||||
EXTRAINCDIRS += stock
|
||||
CPPDEFS += -DPCBSTD -DM64 -DEEPROM_VARIANT=$(shell echo ${EEPROM_VARIANT} | bc)
|
||||
CPPDEFS += -DPCBSTD -DCPUM64 -DEEPROM_VARIANT=$(shell echo ${EEPROM_VARIANT} | bc)
|
||||
BOARDSRC = board_stock.cpp
|
||||
EEPROMSRC = eeprom_avr.cpp
|
||||
PULSESSRC = pulses_avr.cpp
|
||||
|
@ -745,7 +745,7 @@ eep: $(TARGET).eep
|
|||
lss: $(TARGET).lss
|
||||
sym: $(TARGET).sym
|
||||
|
||||
lbm: font.lbm font_dblsize.lbm sticks.lbm splash_9x.lbm splash_X9D.lbm asterisk.lbm
|
||||
lbm: font.lbm font_midsize.lbm font_dblsize.lbm sticks.lbm splash_9x.lbm splash_X9D.lbm asterisk.lbm
|
||||
|
||||
# Build stamp-file
|
||||
stamp_header:
|
||||
|
@ -781,28 +781,33 @@ arm-stamp:
|
|||
@echo "#define SVN_VERS \"open9x-r$(SVNREV)\"" >> stamp-open9x-arm.txt
|
||||
@cat stamp-open9x-arm.txt
|
||||
|
||||
font.lbm: font_6x1.xbm font_extra_6x1.xbm translations/font_se.xbm translations/font_de.xbm translations/font_it.xbm translations/font_cz.xbm translations/font_fr.xbm translations/font_es.xbm
|
||||
font.lbm: font.xbm font_extra.xbm translations/font_se.xbm translations/font_de.xbm translations/font_it.xbm translations/font_cz.xbm translations/font_fr.xbm translations/font_es.xbm
|
||||
@echo
|
||||
@echo "Convert font from xbm to lbm:"
|
||||
$(IMG2LBM) $< $@ char
|
||||
$(IMG2LBM) font_extra_6x1.xbm font_extra.lbm char
|
||||
$(IMG2LBM) translations/font_se.xbm translations/font_se.lbm char
|
||||
$(IMG2LBM) translations/font_de.xbm translations/font_de.lbm char
|
||||
$(IMG2LBM) translations/font_it.xbm translations/font_it.lbm char
|
||||
$(IMG2LBM) translations/font_cz.xbm translations/font_cz.lbm char
|
||||
$(IMG2LBM) translations/font_fr.xbm translations/font_fr.lbm char
|
||||
$(IMG2LBM) translations/font_es.xbm translations/font_es.lbm char
|
||||
$(IMG2LBM) font.xbm font.lbm 5x7
|
||||
$(IMG2LBM) font_extra.xbm font_extra.lbm 5x7
|
||||
$(IMG2LBM) translations/font_se.xbm translations/font_se.lbm 5x7
|
||||
$(IMG2LBM) translations/font_de.xbm translations/font_de.lbm 5x7
|
||||
$(IMG2LBM) translations/font_it.xbm translations/font_it.lbm 5x7
|
||||
$(IMG2LBM) translations/font_cz.xbm translations/font_cz.lbm 5x7
|
||||
$(IMG2LBM) translations/font_fr.xbm translations/font_fr.lbm 5x7
|
||||
$(IMG2LBM) translations/font_es.xbm translations/font_es.lbm 5x7
|
||||
|
||||
font_dblsize.lbm: font_dblsize.xbm font_extra_dblsize.xbm translations/font_dblsize_se.xbm translations/font_dblsize_de.xbm translations/font_dblsize_it.xbm translations/font_dblsize_fr.xbm translations/font_dblsize_es.xbm
|
||||
font_midsize.lbm: font_midsize.xbm
|
||||
@echo
|
||||
@echo "Convert font from xbm to lbm:"
|
||||
$(IMG2LBM) $< $@ dblsize
|
||||
$(IMG2LBM) font_extra_dblsize.xbm font_extra_dblsize.lbm dblsize
|
||||
$(IMG2LBM) translations/font_dblsize_se.xbm translations/font_dblsize_se.lbm dblsize
|
||||
$(IMG2LBM) translations/font_dblsize_de.xbm translations/font_dblsize_de.lbm dblsize
|
||||
$(IMG2LBM) translations/font_dblsize_it.xbm translations/font_dblsize_it.lbm dblsize
|
||||
$(IMG2LBM) translations/font_dblsize_fr.xbm translations/font_dblsize_fr.lbm dblsize
|
||||
$(IMG2LBM) translations/font_dblsize_es.xbm translations/font_dblsize_es.lbm dblsize
|
||||
$(IMG2LBM) $< $@ 8x10
|
||||
|
||||
font_dblsize.lbm: font_dblsize.xbm font_dblsize_extra.xbm translations/font_dblsize_se.xbm translations/font_dblsize_de.xbm translations/font_dblsize_it.xbm translations/font_dblsize_fr.xbm translations/font_dblsize_es.xbm
|
||||
@echo
|
||||
@echo "Convert font from xbm to lbm:"
|
||||
$(IMG2LBM) font_dblsize.xbm font_dblsize.lbm 10x14
|
||||
$(IMG2LBM) font_dblsize_extra.xbm font_dblsize_extra.lbm 10x14
|
||||
$(IMG2LBM) translations/font_dblsize_se.xbm translations/font_dblsize_se.lbm 10x14
|
||||
$(IMG2LBM) translations/font_dblsize_de.xbm translations/font_dblsize_de.lbm 10x14
|
||||
$(IMG2LBM) translations/font_dblsize_it.xbm translations/font_dblsize_it.lbm 10x14
|
||||
$(IMG2LBM) translations/font_dblsize_fr.xbm translations/font_dblsize_fr.lbm 10x14
|
||||
$(IMG2LBM) translations/font_dblsize_es.xbm translations/font_dblsize_es.lbm 10x14
|
||||
|
||||
sticks.lbm: sticks_4x1.xbm
|
||||
@echo
|
||||
|
@ -866,7 +871,7 @@ FOXLIB=-L/usr/local/lib \
|
|||
-Wl,-rpath,$(FOXPATH)/src/.libs
|
||||
|
||||
simu: stamp_header $(BOARDSRC) $(CPPSRC) Makefile simu.cpp simpgmspace.cpp *.h *.lbm eeprom.bin
|
||||
g++ $(CPPFLAGS) simu.cpp $(BOARDSRC) $(CPPSRC) simpgmspace.cpp -MD -DSIMU -O1 -o simu $(FOXINC) $(FOXLIB) -pthread
|
||||
g++ $(CPPFLAGS) simu.cpp $(BOARDSRC) $(CPPSRC) simpgmspace.cpp -MD -DSIMU -O0 -o simu $(FOXINC) $(FOXLIB) -pthread
|
||||
|
||||
eeprom.bin:
|
||||
dd if=/dev/zero of=$@ bs=1 count=2048
|
||||
|
|
|
@ -87,7 +87,7 @@ extern void beep(uint8_t val);
|
|||
#define AUDIO_RESET()
|
||||
|
||||
#if !defined(PCBSKY9X)
|
||||
FORCEINLINE void AUDIO_HEARTBEAT()
|
||||
inline void AUDIO_HEARTBEAT()
|
||||
{
|
||||
if(g_beepCnt) {
|
||||
if(!beepAgainOrig) {
|
||||
|
|
179
src/bmp.cpp
Normal file
179
src/bmp.cpp
Normal file
|
@ -0,0 +1,179 @@
|
|||
/*
|
||||
* Authors (alphabetical order)
|
||||
* - Bertrand Songis <bsongis@gmail.com>
|
||||
* - Bryan J. Rentoul (Gruvin) <gruvin@gmail.com>
|
||||
* - Cameron Weeks <th9xer@gmail.com>
|
||||
* - Erez Raviv
|
||||
* - Jean-Pierre Parisy
|
||||
* - Karl Szmutny <shadow@privy.de>
|
||||
* - Michael Blandford
|
||||
* - Michal Hlavinka
|
||||
* - Pat Mackenzie
|
||||
* - Philip Moss
|
||||
* - Rob Thomson
|
||||
* - Romolo Manfredini <romolo.manfredini@gmail.com>
|
||||
* - Thomas Husterer
|
||||
*
|
||||
* open9x is based on code named
|
||||
* gruvin9x by Bryan J. Rentoul: http://code.google.com/p/gruvin9x/,
|
||||
* er9x by Erez Raviv: http://code.google.com/p/er9x/,
|
||||
* and the original (and ongoing) project by
|
||||
* Thomas Husterer, th9x: http://code.google.com/p/th9x/
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License version 2 as
|
||||
* published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
*/
|
||||
|
||||
#include "open9x.h"
|
||||
|
||||
const pm_char * bmpLoad(uint8_t *dest, const char *filename)
|
||||
{
|
||||
FIL bmpFile;
|
||||
UINT read;
|
||||
uint8_t bmpBuf[64]; /* maximum with 64px for 1-bit bitmaps */
|
||||
uint8_t *buf = &bmpBuf[0];
|
||||
|
||||
FRESULT result = f_open(&bmpFile, filename, FA_OPEN_EXISTING | FA_READ);
|
||||
if (result != FR_OK) {
|
||||
return SDCARD_ERROR(result);
|
||||
}
|
||||
|
||||
if (f_size(&bmpFile) < 14) {
|
||||
f_close(&bmpFile);
|
||||
return STR_INCOMPATIBLE;
|
||||
}
|
||||
|
||||
result = f_read(&bmpFile, buf, 14, &read);
|
||||
if (result != FR_OK || read != 14) {
|
||||
f_close(&bmpFile);
|
||||
return SDCARD_ERROR(result);
|
||||
}
|
||||
|
||||
if (buf[0] != 'B' || buf[1] != 'M') {
|
||||
f_close(&bmpFile);
|
||||
return STR_INCOMPATIBLE;
|
||||
}
|
||||
|
||||
uint32_t fsize = *((uint32_t *)&buf[2]);
|
||||
uint32_t hsize = *((uint32_t *)&buf[10]); /* header size */
|
||||
|
||||
uint32_t len = limit((uint32_t)0, (uint32_t)(hsize-14), (uint32_t)32);
|
||||
result = f_read(&bmpFile, buf, len, &read);
|
||||
if (result != FR_OK || read != len) {
|
||||
f_close(&bmpFile);
|
||||
return SDCARD_ERROR(result);
|
||||
}
|
||||
|
||||
uint32_t ihsize = *((uint32_t *)&buf[0]); /* more header size */
|
||||
|
||||
/* invalid header size */
|
||||
if (ihsize + 14 > hsize) {
|
||||
f_close(&bmpFile);
|
||||
return STR_INCOMPATIBLE;
|
||||
}
|
||||
|
||||
/* sometimes file size is set to some headers size, set a real size in that case */
|
||||
if (fsize == 14 || fsize == ihsize + 14)
|
||||
fsize = f_size(&bmpFile) - 2;
|
||||
|
||||
/* declared file size less than header size */
|
||||
if (fsize <= hsize) {
|
||||
f_close(&bmpFile);
|
||||
return STR_INCOMPATIBLE;
|
||||
}
|
||||
|
||||
uint32_t width, height;
|
||||
|
||||
switch (ihsize){
|
||||
case 40: // windib
|
||||
case 56: // windib v3
|
||||
case 64: // OS/2 v2
|
||||
case 108: // windib v4
|
||||
case 124: // windib v5
|
||||
width = *((uint32_t *)&buf[4]);
|
||||
height = *((uint32_t *)&buf[8]);
|
||||
buf += 12;
|
||||
break;
|
||||
case 12: // OS/2 v1
|
||||
width = *((uint16_t *)&buf[4]);
|
||||
height = *((uint16_t *)&buf[6]);
|
||||
buf += 8;
|
||||
break;
|
||||
default:
|
||||
f_close(&bmpFile);
|
||||
return STR_INCOMPATIBLE;
|
||||
}
|
||||
|
||||
if (*((uint16_t *)&buf[0]) != 1) { /* planes */
|
||||
f_close(&bmpFile);
|
||||
return STR_INCOMPATIBLE;
|
||||
}
|
||||
|
||||
if (width > 64 || height > 32) {
|
||||
f_close(&bmpFile);
|
||||
return STR_INCOMPATIBLE;
|
||||
}
|
||||
|
||||
uint16_t depth = *((uint16_t *)&buf[2]);
|
||||
|
||||
if (f_lseek(&bmpFile, hsize) != FR_OK) {
|
||||
f_close(&bmpFile);
|
||||
return SDCARD_ERROR(result);
|
||||
}
|
||||
|
||||
*dest++ = width;
|
||||
*dest++ = height;
|
||||
|
||||
uint32_t n;
|
||||
buf = &bmpBuf[0];
|
||||
|
||||
switch (depth) {
|
||||
case 1:
|
||||
n = width/8;
|
||||
for (uint32_t i=0; i<height; i+=8) {
|
||||
result = f_read(&bmpFile, buf, n*8, &read);
|
||||
if (result != FR_OK || read != n*8) {
|
||||
f_close(&bmpFile);
|
||||
return SDCARD_ERROR(result);
|
||||
}
|
||||
for (uint32_t j=0; j<n; j++) {
|
||||
*dest++ = (buf[j+0*n] >> 7) + ((buf[j+1*n] >> 7) << 1) + ((buf[j+2*n] >> 7) << 2) + ((buf[j+3*n] >> 7) << 3) + ((buf[j+4*n] >> 7) << 4) + ((buf[j+5*n] >> 7) << 5) + ((buf[j+6*n] >> 7) << 6) + ((buf[j+7*n] >> 7) << 7);
|
||||
*dest++ = ((buf[j+0*n] >> 6) & 1) + (((buf[j+1*n] >> 6) & 1) << 1) + (((buf[j+2*n] >> 6) & 1) << 2) + (((buf[j+3*n] >> 6) & 1) << 3) + (((buf[j+4*n] >> 6) & 1) << 4) + (((buf[j+5*n] >> 6) & 1) << 5) + (((buf[j+6*n] >> 6) & 1) << 6) + (((buf[j+7*n] >> 6) & 1) << 7);
|
||||
*dest++ = ((buf[j+0*n] >> 5) & 1) + (((buf[j+1*n] >> 5) & 1) << 1) + (((buf[j+2*n] >> 5) & 1) << 2) + (((buf[j+3*n] >> 5) & 1) << 3) + (((buf[j+4*n] >> 5) & 1) << 4) + (((buf[j+5*n] >> 5) & 1) << 5) + (((buf[j+6*n] >> 5) & 1) << 6) + (((buf[j+7*n] >> 5) & 1) << 7);
|
||||
*dest++ = ((buf[j+0*n] >> 4) & 1) + (((buf[j+1*n] >> 4) & 1) << 1) + (((buf[j+2*n] >> 4) & 1) << 2) + (((buf[j+3*n] >> 4) & 1) << 3) + (((buf[j+4*n] >> 4) & 1) << 4) + (((buf[j+5*n] >> 4) & 1) << 5) + (((buf[j+6*n] >> 4) & 1) << 6) + (((buf[j+7*n] >> 4) & 1) << 7);
|
||||
*dest++ = ((buf[j+0*n] >> 3) & 1) + (((buf[j+1*n] >> 3) & 1) << 1) + (((buf[j+2*n] >> 3) & 1) << 2) + (((buf[j+3*n] >> 3) & 1) << 3) + (((buf[j+4*n] >> 3) & 1) << 4) + (((buf[j+5*n] >> 3) & 1) << 5) + (((buf[j+6*n] >> 3) & 1) << 6) + (((buf[j+7*n] >> 3) & 1) << 7);
|
||||
*dest++ = ((buf[j+0*n] >> 2) & 1) + (((buf[j+1*n] >> 2) & 1) << 1) + (((buf[j+2*n] >> 2) & 1) << 2) + (((buf[j+3*n] >> 2) & 1) << 3) + (((buf[j+4*n] >> 2) & 1) << 4) + (((buf[j+5*n] >> 2) & 1) << 5) + (((buf[j+6*n] >> 2) & 1) << 6) + (((buf[j+7*n] >> 2) & 1) << 7);
|
||||
*dest++ = ((buf[j+0*n] >> 1) & 1) + (((buf[j+1*n] >> 1) & 1) << 1) + (((buf[j+2*n] >> 1) & 1) << 2) + (((buf[j+3*n] >> 1) & 1) << 3) + (((buf[j+4*n] >> 1) & 1) << 4) + (((buf[j+5*n] >> 1) & 1) << 5) + (((buf[j+6*n] >> 1) & 1) << 6) + (((buf[j+7*n] >> 1) & 1) << 7);
|
||||
*dest++ = ((buf[j+0*n] >> 0) & 1) + (((buf[j+1*n] >> 0) & 1) << 1) + (((buf[j+2*n] >> 0) & 1) << 2) + (((buf[j+3*n] >> 0) & 1) << 3) + (((buf[j+4*n] >> 0) & 1) << 4) + (((buf[j+5*n] >> 0) & 1) << 5) + (((buf[j+6*n] >> 0) & 1) << 6) + (((buf[j+7*n] >> 0) & 1) << 7);
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
/* case 4:
|
||||
for (uint32_t i=0; i<height; i++) {
|
||||
int j;
|
||||
for (j = 0; j < n; j++){
|
||||
ptr[j*2+0] = (buf[j] >> 4) & 0xF;
|
||||
ptr[j*2+1] = buf[j] & 0xF;
|
||||
}
|
||||
buf += n;
|
||||
ptr += linesize;
|
||||
}
|
||||
break;
|
||||
*/
|
||||
|
||||
default:
|
||||
f_close(&bmpFile);
|
||||
return STR_INCOMPATIBLE;
|
||||
}
|
||||
|
||||
f_close(&bmpFile);
|
||||
return 0;
|
||||
}
|
|
@ -14,7 +14,6 @@
|
|||
*
|
||||
*/
|
||||
|
||||
|
||||
#include <stdint.h>
|
||||
#include "open9x.h"
|
||||
#include "inttypes.h"
|
||||
|
@ -486,7 +485,7 @@ void eeLoadModel(uint8_t id)
|
|||
eeCheck(true);
|
||||
}
|
||||
else {
|
||||
read32_eeprom_data( ( File_system[id+1].block_no << 12) + sizeof( struct t_eeprom_header), ( uint8_t *)&g_model, size) ;
|
||||
read32_eeprom_data((File_system[id+1].block_no << 12) + sizeof(struct t_eeprom_header), (uint8_t *)&g_model, size) ;
|
||||
}
|
||||
|
||||
resetAll();
|
||||
|
@ -511,6 +510,11 @@ void eeLoadModel(uint8_t id)
|
|||
|
||||
resumeMixerCalculations();
|
||||
// TODO pulses should be started after mixer calculations ...
|
||||
|
||||
#if defined(PCBX9D)
|
||||
// TODO BMP_DIR
|
||||
bmpLoad(modelBitmap, "./f16.bmp");
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -821,7 +821,7 @@ bool eeLoadGeneral()
|
|||
if (theFile.readRlc((uint8_t*)&g_eeGeneral, 1) == 1 && g_eeGeneral.version == EEPROM_VER) {
|
||||
theFile.openRlc(FILE_GENERAL);
|
||||
if (theFile.readRlc((uint8_t*)&g_eeGeneral, sizeof(g_eeGeneral)) <= sizeof(EEGeneral)) {
|
||||
#if defined(M64)
|
||||
#if defined(CPUM64)
|
||||
if (g_eeGeneral.variant == EEPROM_VARIANT && g_eeGeneral.chkSum == evalChkSum()) {
|
||||
return true;
|
||||
}
|
||||
|
|
|
@ -47,7 +47,7 @@ extern uint16_t s_eeDirtyTime10ms;
|
|||
// bs=16 128 blocks verlust link:128 16files:16*8 128 sum 256
|
||||
// bs=32 64 blocks verlust link: 64 16files:16*16 256 sum 320
|
||||
//
|
||||
#if defined(PCBGRUVIN9X) || defined(M128)
|
||||
#if defined(PCBGRUVIN9X) || defined(CPUM128)
|
||||
#define EESIZE 4096
|
||||
#define EEFS_VERS 5
|
||||
#define MAXFILES 36
|
||||
|
@ -84,7 +84,7 @@ PACK(struct EeFs{
|
|||
|
||||
#define RESV sizeof(EeFs) //reserv for eeprom header with directory (eeFs)
|
||||
|
||||
#if defined(PCBGRUVIN9X) || defined(M128)
|
||||
#if defined(PCBGRUVIN9X) || defined(CPUM128)
|
||||
#define FIRSTBLK 1
|
||||
#define BLOCKS (1+(EESIZE-RESV)/BS)
|
||||
#define BLOCKS_OFFSET (RESV-BS)
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0x71,0xfe,0x71,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3e,0x00,0x7e,0x00,0x00,0x00,0x00,0x00,0x7e,0x00,0x3e,0x00,0x00,0x00,0x00,0x00,0x60,0x06,0x60,0x06,0xfe,0x7f,0xfe,0x7f,0x60,0x06,0x60,0x06,0xfe,0x7f,0xfe,0x7f,0x60,0x06,0x60,0x06,0x60,0x18,0xf0,0x18,0x98,0x19,0x98,0x19,0xfe,0x7f,0xfe,0x7f,0x98,0x19,0x98,0x19,0x18,0x0f,0x18,0x06,0x0c,0x18,0x1e,0x1c,0x1e,0x0e,0x0c,0x07,0x80,0x03,0xc0,0x01,0xe0,0x30,0x70,0x78,0x38,0x78,0x18,0x30,0x78,0x1e,0xfc,0x3f,0x8e,0x71,0xc6,0x63,0xe6,0x67,0x76,0x66,0x3c,0x3c,0x18,0x3c,0x00,0x66,0x00,0x66,0x00,0x00,0x00,0x00,0x66,0x00,0x76,0x00,0x3e,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x07,0xf0,0x0f,0x38,0x1c,0x1c,0x38,0x0e,0x70,0x06,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x60,0x0e,0x70,0x1c,0x38,0x38,0x1c,0xf0,0x0f,0xe0,0x07,0x00,0x00,0x00,0x00,0x60,0x06,0x60,0x06,0xc0,0x03,0x80,0x01,0xf8,0x1f,0xf8,0x1f,0x80,0x01,0xc0,0x03,0x60,0x06,0x60,0x06,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0xf8,0x1f,0xf8,0x1f,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x00,0x00,0x00,0x00,0x00,0x66,0x00,0x76,0x00,0x3e,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x78,0x00,0x78,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x1c,0x00,0x0e,0x00,0x07,0x80,0x03,0xc0,0x01,0xe0,0x00,0x70,0x00,0x38,0x00,0x18,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0x71,0xfe,0x71,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3e,0x00,0x7e,0x00,0x00,0x00,0x00,0x00,0x7e,0x00,0x3e,0x00,0x00,0x00,0x00,0x00,0x60,0x06,0x60,0x06,0xfe,0x7f,0xfe,0x7f,0x60,0x06,0x60,0x06,0xfe,0x7f,0xfe,0x7f,0x60,0x06,0x60,0x06,0x60,0x18,0xf0,0x18,0x98,0x19,0x98,0x19,0xfe,0x7f,0xfe,0x7f,0x98,0x19,0x98,0x19,0x18,0x0f,0x18,0x06,0x0c,0x18,0x1e,0x1c,0x1e,0x0e,0x0c,0x07,0x80,0x03,0xc0,0x01,0xe0,0x30,0x70,0x78,0x38,0x78,0x18,0x30,0x78,0x1e,0xfc,0x3f,0x8e,0x71,0xc6,0x63,0xe6,0x67,0x76,0x66,0x3c,0x3c,0x18,0x3c,0x00,0x66,0x00,0x66,0x00,0x00,0x00,0x00,0x66,0x00,0x76,0x00,0x3e,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x07,0xf0,0x0f,0x38,0x1c,0x1c,0x38,0x0e,0x70,0x06,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x60,0x0e,0x70,0x1c,0x38,0x38,0x1c,0xf0,0x0f,0xe0,0x07,0x00,0x00,0x00,0x00,0x60,0x06,0x60,0x06,0xc0,0x03,0x80,0x01,0xf8,0x1f,0xf8,0x1f,0x80,0x01,0xc0,0x03,0x60,0x06,0x60,0x06,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0xf8,0x1f,0xf8,0x1f,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x00,0x00,0x00,0x00,0x00,0x66,0x00,0x76,0x00,0x3e,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x78,0x00,0x78,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x1c,0x00,0x0e,0x00,0x07,0x80,0x03,0xc0,0x01,0xe0,0x00,0x70,0x00,0x38,0x00,0x18,0x00,
|
||||
0x00,0x00,0x00,0x00,0xf8,0x1f,0xfc,0x3f,0x0e,0x70,0x06,0x60,0x06,0x60,0x0e,0x70,0xfc,0x3f,0xf8,0x1f,0x00,0x00,0x00,0x00,0x18,0x60,0x1c,0x60,0xfe,0x7f,0xfe,0x7f,0x00,0x60,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x78,0x1c,0x7c,0x0e,0x6e,0x06,0x67,0x86,0x63,0xce,0x61,0xfc,0x60,0x78,0x60,0x00,0x00,0x00,0x00,0x06,0x60,0x06,0x60,0x86,0x61,0x86,0x61,0x86,0x61,0xce,0x73,0xfc,0x3f,0x78,0x1e,0x00,0x00,0x00,0x00,0x80,0x07,0xc0,0x07,0xe0,0x06,0x70,0x06,0x38,0x06,0x1c,0x06,0xfe,0x7f,0xfe,0x7f,0x00,0x00,0x00,0x00,0x7e,0x18,0x7e,0x38,0x66,0x70,0x66,0x60,0x66,0x60,0xe6,0x70,0xc6,0x3f,0x86,0x1f,0x00,0x00,0x00,0x00,0xf8,0x1f,0xfc,0x3f,0x8e,0x71,0x86,0x61,0x86,0x61,0x8e,0x73,0x1c,0x3f,0x18,0x1e,0x00,0x00,0x00,0x00,0x06,0x00,0x06,0x00,0x86,0x7f,0xc6,0x7f,0xe6,0x00,0x76,0x00,0x3e,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,0x78,0x1e,0xfc,0x3f,0xce,0x73,0x86,0x61,0x86,0x61,0xce,0x73,0xfc,0x3f,0x78,0x1e,0x00,0x00,0x00,0x00,0x78,0x00,0xfc,0x00,0xce,0x61,0x86,0x71,0x86,0x39,0xce,0x1d,0xfc,0x0f,0xf8,0x07,0x00,0x00,0x00,0x00,0x30,0x0c,0x78,0x1e,0x78,0x1e,0x30,0x0c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x66,0x78,0x76,0x78,0x3e,0x30,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x01,0xc0,0x03,0xe0,0x07,0x70,0x0e,0x38,0x1c,0x1c,0x38,0x0e,0x70,0x06,0x60,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x06,0x60,0x0e,0x70,0x1c,0x38,0x38,0x1c,0x70,0x0e,0xe0,0x07,0xc0,0x03,0x80,0x01,0x00,0x00,0x00,0x00,0x18,0x00,0x1c,0x00,0x0e,0x00,0x06,0x00,0x06,0x66,0x06,0x67,0x86,0x03,0xce,0x01,0xfc,0x00,0x78,0x00,
|
||||
0x78,0x00,0xfc,0x00,0xce,0x01,0x86,0x01,0x86,0x01,0xce,0x01,0xfc,0x00,0x78,0x00,0x00,0x00,0x00,0x00,0xe0,0x7f,0xf0,0x7f,0xb8,0x01,0x9c,0x01,0x8e,0x01,0x8e,0x01,0x9c,0x01,0xb8,0x01,0xf0,0x7f,0xe0,0x7f,0xfe,0x7f,0xfe,0x7f,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0xce,0x73,0xfc,0x3f,0x78,0x1e,0xf8,0x1f,0xfc,0x3f,0x0e,0x70,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x0e,0x70,0x1c,0x38,0x18,0x18,0xfe,0x7f,0xfe,0x7f,0x06,0x60,0x06,0x60,0x06,0x60,0x0e,0x70,0x1c,0x38,0x38,0x1c,0xf0,0x0f,0xe0,0x07,0xfe,0x7f,0xfe,0x7f,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x06,0x60,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0x86,0x01,0x86,0x01,0x86,0x01,0x86,0x01,0x86,0x01,0x86,0x01,0x06,0x00,0x06,0x00,0xf8,0x1f,0xfc,0x3f,0x0e,0x70,0x06,0x60,0x86,0x61,0x86,0x61,0x86,0x61,0x8e,0x71,0x9c,0x7f,0x98,0x3f,0xfe,0x7f,0xfe,0x7f,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0xfe,0x7f,0xfe,0x7f,0x00,0x00,0x00,0x00,0x06,0x60,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0x06,0x60,0x06,0x60,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x38,0x00,0x70,0x00,0x60,0x06,0x60,0x06,0x70,0xfe,0x3f,0xfe,0x1f,0x06,0x00,0x06,0x00,0xfe,0x7f,0xfe,0x7f,0x80,0x01,0xc0,0x03,0xe0,0x07,0x70,0x0e,0x38,0x1c,0x1c,0x38,0x0e,0x70,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0xfe,0x7f,0xfe,0x7f,0x1c,0x00,0x38,0x00,0xf0,0x01,0xf0,0x01,0x38,0x00,0x1c,0x00,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x70,0x00,0xe0,0x00,0xc0,0x01,0x80,0x03,0x00,0x07,0x00,0x0e,0xfe,0x7f,0xfe,0x7f,0xf8,0x1f,0xfc,0x3f,0x0e,0x70,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x0e,0x70,0xfc,0x3f,0xf8,0x1f,
|
||||
0xfe,0x7f,0xfe,0x7f,0x86,0x01,0x86,0x01,0x86,0x01,0x86,0x01,0x86,0x01,0xce,0x01,0xfc,0x00,0x78,0x00,0xf8,0x1f,0xfc,0x3f,0x0e,0x70,0x06,0x60,0x06,0x66,0x06,0x6e,0x06,0x3c,0x0e,0x38,0xfc,0x7f,0xf8,0x67,0xfe,0x7f,0xfe,0x7f,0x86,0x01,0x86,0x01,0x86,0x07,0x86,0x0f,0x86,0x1d,0xce,0x39,0xfc,0x70,0x78,0x60,0x78,0x18,0xfc,0x38,0xce,0x71,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x8e,0x73,0x1c,0x3f,0x18,0x1e,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0xfe,0x7f,0xfe,0x7f,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0xfe,0x1f,0xfe,0x3f,0x00,0x70,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x70,0xfe,0x3f,0xfe,0x1f,0xfe,0x07,0xfe,0x0f,0x00,0x1c,0x00,0x38,0x00,0x70,0x00,0x70,0x00,0x38,0x00,0x1c,0xfe,0x0f,0xfe,0x07,0xfe,0x1f,0xfe,0x3f,0x00,0x70,0x00,0x70,0x00,0x3e,0x00,0x3e,0x00,0x70,0x00,0x70,0xfe,0x3f,0xfe,0x1f,0x1e,0x78,0x3e,0x7c,0x70,0x0e,0xe0,0x07,0xc0,0x03,0xc0,0x03,0xe0,0x07,0x70,0x0e,0x3e,0x7c,0x1e,0x78,0x7e,0x00,0xfe,0x00,0xc0,0x01,0x80,0x03,0x00,0x7f,0x00,0x7f,0x80,0x03,0xc0,0x01,0xfe,0x00,0x7e,0x00,0x06,0x78,0x06,0x7c,0x06,0x6e,0x06,0x67,0x86,0x63,0xc6,0x61,0xe6,0x60,0x76,0x60,0x3e,0x60,0x1e,0x60,0x00,0x00,0x00,0x00,0xfe,0x7f,0xfe,0x7f,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x00,0x00,0x00,0x00,0x18,0x00,0x38,0x00,0x70,0x00,0xe0,0x00,0xc0,0x01,0x80,0x03,0x00,0x07,0x00,0x0e,0x00,0x1c,0x00,0x18,0x00,0x00,0x00,0x00,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0x00,0x00,0x00,0x00,0x60,0x00,0x70,0x00,0x38,0x00,0x1c,0x00,0x0e,0x00,0x0e,0x00,0x1c,0x00,0x38,0x00,0x70,0x00,0x60,0x00,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,
|
||||
|
|
|
@ -14,8 +14,8 @@ static unsigned char font_dblsize_bits[] = {
|
|||
0x00, 0xc0, 0x80, 0xc4, 0xff, 0x33, 0x80, 0xb3, 0x03, 0x03, 0x0c, 0x00,
|
||||
0x73, 0x3b, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0xc0, 0x00, 0x00,
|
||||
0x33, 0xfe, 0xc0, 0xe1, 0x01, 0x00, 0x0c, 0x00, 0xc3, 0xcf, 0xff, 0x00,
|
||||
0xe0, 0x0f, 0x00, 0x1c, 0x00, 0xc0, 0x00, 0x00, 0x33, 0xfc, 0xe1, 0xe0,
|
||||
0x01, 0x00, 0x0c, 0x00, 0xc3, 0xcf, 0xff, 0x00, 0xe0, 0x0f, 0x00, 0x0e,
|
||||
0xf0, 0x0f, 0x00, 0x1c, 0x00, 0xc0, 0x00, 0x00, 0x33, 0xfc, 0xe1, 0xe0,
|
||||
0x01, 0x00, 0x0c, 0x00, 0xc3, 0xcf, 0xff, 0x00, 0xf0, 0x0f, 0x00, 0x0e,
|
||||
0x00, 0x00, 0x00, 0xc0, 0xff, 0x30, 0x73, 0xb0, 0x33, 0x00, 0x0c, 0x00,
|
||||
0x73, 0x3b, 0x0c, 0x3c, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0xc0,
|
||||
0xff, 0x30, 0x3b, 0x30, 0x3f, 0x00, 0x1c, 0x80, 0x33, 0x33, 0x0c, 0x3c,
|
||||
|
|
1
src/font_dblsize_extra.lbm
Normal file
1
src/font_dblsize_extra.lbm
Normal file
|
@ -0,0 +1 @@
|
|||
0x60,0x00,0x70,0x00,0x38,0x00,0x1c,0x00,0xce,0x7f,0xce,0x7f,0x1c,0x00,0x38,0x00,0x70,0x00,0x60,0x00,0x00,0x06,0x00,0x0e,0x00,0x1c,0x00,0x38,0xfe,0x73,0xfe,0x73,0x00,0x38,0x00,0x1c,0x00,0x0e,0x00,0x06,0x00,0x18,0x00,0x1c,0x00,0x0e,0x18,0x07,0x98,0x03,0xd8,0x01,0xd8,0x00,0x18,0x00,0xf8,0x03,0xf8,0x03,0x18,0x00,0x38,0x00,0x70,0x00,0xe0,0x18,0xc0,0x19,0x80,0x1b,0x00,0x1b,0x00,0x18,0xc0,0x1f,0xc0,0x1f,0xc0,0x1f,0xc0,0x1f,0x00,0x18,0x00,0x1b,0x80,0x1b,0xc0,0x19,0xe0,0x18,0x70,0x00,0x38,0x00,0x18,0x00,0xf8,0x03,0xf8,0x03,0x18,0x00,0xd8,0x00,0xd8,0x01,0x98,0x03,0x18,0x07,0x00,0x0e,0x00,0x1c,0x00,0x18,
|
1
src/font_extra.lbm
Normal file
1
src/font_extra.lbm
Normal file
|
@ -0,0 +1 @@
|
|||
0x04,0x02,0x7b,0x02,0x04,0x10,0x20,0x6f,0x20,0x10,0x20,0x12,0x0a,0x02,0x1e,0x02,0x24,0x28,0x20,0x3c,0x3c,0x20,0x28,0x24,0x02,0x1e,0x02,0x0a,0x12,0x20,
|
6
src/font_midsize.lbm
Normal file
6
src/font_midsize.lbm
Normal file
|
@ -0,0 +1,6 @@
|
|||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0x05,0xfe,0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0e,0x00,0x0e,0x00,0x00,0x00,0x0e,0x00,0x0e,0x00,0x00,0x00,0x00,0x00,0x90,0x00,0xfc,0x03,0xfc,0x03,0x90,0x00,0xfc,0x03,0xfc,0x03,0x90,0x00,0x00,0x00,0x38,0x02,0x7c,0x06,0x64,0x04,0xfe,0x0f,0xc4,0x04,0xcc,0x07,0x88,0x03,0x0c,0x04,0x1e,0x07,0x8c,0x03,0xe0,0x00,0x70,0x00,0x1c,0x03,0x8e,0x07,0x02,0x03,0x80,0x03,0xdc,0x07,0x7e,0x04,0x72,0x04,0xde,0x06,0x8c,0x03,0x80,0x07,0xc0,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x1e,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x00,0xfc,0x03,0x0e,0x07,0x03,0x0c,0x01,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x08,0x03,0x0c,0x0e,0x07,0xfc,0x03,0xf0,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x50,0x01,0xf0,0x01,0xe0,0x00,0xf0,0x01,0x50,0x01,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0xf8,0x03,0xf8,0x03,0x40,0x00,0x40,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x09,0x80,0x0f,0x80,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x0e,0x00,0x0e,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x07,0x80,0x03,0xe0,0x00,0x70,0x00,0x1c,0x00,0x0e,0x00,0x02,0x00,
|
||||
0xf0,0x00,0xf8,0x01,0x0c,0x03,0x06,0x06,0x06,0x06,0x0c,0x03,0xf8,0x01,0xf0,0x00,0x00,0x00,0x08,0x04,0x0c,0x04,0xfe,0x07,0xfe,0x07,0x00,0x04,0x00,0x04,0x00,0x00,0x08,0x04,0x0c,0x06,0x06,0x07,0x82,0x05,0xc2,0x04,0x66,0x04,0x3c,0x04,0x18,0x04,0x04,0x02,0x06,0x06,0x02,0x04,0x22,0x04,0x22,0x04,0x76,0x06,0xdc,0x03,0x88,0x01,0xc0,0x00,0xe0,0x00,0xb0,0x00,0x98,0x00,0x8c,0x00,0xfe,0x07,0xfe,0x07,0x80,0x00,0x3e,0x01,0x3e,0x03,0x22,0x06,0x12,0x04,0x12,0x04,0x32,0x06,0xe2,0x03,0xc0,0x01,0xf8,0x01,0xfc,0x03,0x46,0x06,0x22,0x04,0x22,0x04,0x66,0x06,0xcc,0x03,0x80,0x01,0x02,0x00,0x02,0x00,0x02,0x00,0x82,0x07,0xe2,0x07,0x72,0x00,0x1e,0x00,0x0e,0x00,0x88,0x01,0xdc,0x03,0x76,0x06,0x22,0x04,0x22,0x04,0x76,0x06,0xdc,0x03,0x88,0x01,0x18,0x00,0x3c,0x03,0x66,0x06,0x42,0x04,0x42,0x04,0x26,0x06,0xfc,0x03,0xf8,0x01,0x00,0x00,0x00,0x00,0x08,0x01,0x9c,0x03,0x9c,0x03,0x08,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x9c,0x09,0x9c,0x0f,0x88,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0xf0,0x00,0x98,0x01,0x0c,0x03,0x06,0x06,0x02,0x04,0x00,0x00,0x20,0x01,0x20,0x01,0x20,0x01,0x20,0x01,0x20,0x01,0x20,0x01,0x20,0x01,0x20,0x01,0x00,0x00,0x02,0x04,0x06,0x06,0x0c,0x03,0x98,0x01,0xf0,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x0c,0x00,0x0e,0x00,0x82,0x06,0xc2,0x06,0x62,0x00,0x3e,0x00,0x1c,0x00,
|
||||
0x00,0x00,0x00,0x00,0x0c,0x00,0x1e,0x00,0x12,0x00,0x12,0x00,0x1e,0x00,0x0c,0x00,0xf0,0x07,0xf8,0x07,0x8c,0x00,0x86,0x00,0x86,0x00,0x8c,0x00,0xf8,0x07,0xf0,0x07,0xfe,0x07,0xfe,0x07,0x22,0x04,0x22,0x04,0x22,0x04,0x76,0x06,0xdc,0x03,0x88,0x01,0xf8,0x01,0xfc,0x03,0x06,0x06,0x02,0x04,0x02,0x04,0x02,0x04,0x06,0x06,0x0c,0x03,0xfe,0x07,0xfe,0x07,0x02,0x04,0x02,0x04,0x02,0x04,0x06,0x06,0xfc,0x03,0xf8,0x01,0x00,0x00,0xfe,0x07,0xfe,0x07,0x22,0x04,0x22,0x04,0x22,0x04,0x22,0x04,0x02,0x04,0xfe,0x07,0xfe,0x07,0x22,0x00,0x22,0x00,0x22,0x00,0x22,0x00,0x02,0x00,0x02,0x00,0xf8,0x01,0xfc,0x03,0x06,0x06,0x02,0x04,0x02,0x04,0x42,0x04,0xc6,0x07,0xc4,0x03,0xfe,0x07,0xfe,0x07,0x20,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0xfe,0x07,0xfe,0x07,0x00,0x00,0x02,0x04,0x02,0x04,0xfe,0x07,0xfe,0x07,0x02,0x04,0x02,0x04,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x06,0x02,0x04,0x02,0x06,0xfe,0x03,0xfe,0x01,0x00,0x00,0xfe,0x07,0xfe,0x07,0x60,0x00,0xf0,0x00,0x98,0x01,0x0c,0x03,0x06,0x06,0x02,0x04,0x00,0x00,0xfe,0x07,0xfe,0x07,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0xfe,0x07,0xfe,0x07,0x0c,0x00,0x78,0x00,0x78,0x00,0x0c,0x00,0xfe,0x07,0xfe,0x07,0xfe,0x07,0xfe,0x07,0x1c,0x00,0x78,0x00,0xe0,0x00,0x80,0x03,0xfe,0x07,0xfe,0x07,0xf8,0x01,0xfc,0x03,0x06,0x06,0x02,0x04,0x02,0x04,0x06,0x06,0xfc,0x03,0xf8,0x01,
|
||||
0xfe,0x07,0xfe,0x07,0x22,0x00,0x22,0x00,0x22,0x00,0x22,0x00,0x3e,0x00,0x1c,0x00,0xf8,0x01,0xfc,0x03,0x06,0x06,0x82,0x04,0x82,0x05,0x06,0x07,0xfc,0x03,0xf8,0x05,0xfe,0x07,0xfe,0x07,0x62,0x00,0x62,0x00,0xe2,0x00,0xa2,0x01,0x3e,0x07,0x1c,0x06,0x1c,0x02,0x3e,0x06,0x22,0x04,0x22,0x04,0x22,0x04,0x22,0x04,0xe6,0x07,0xc4,0x03,0x02,0x00,0x02,0x00,0x02,0x00,0xfe,0x07,0xfe,0x07,0x02,0x00,0x02,0x00,0x02,0x00,0xfe,0x01,0xfe,0x03,0x00,0x06,0x00,0x04,0x00,0x04,0x00,0x06,0xfe,0x03,0xfe,0x01,0x0e,0x00,0x7e,0x00,0xf0,0x01,0x80,0x07,0x80,0x07,0xf0,0x01,0x7e,0x00,0x0e,0x00,0xfe,0x07,0xfe,0x07,0x00,0x03,0xe0,0x01,0xe0,0x01,0x00,0x03,0xfe,0x07,0xfe,0x07,0x06,0x06,0x0e,0x07,0x98,0x01,0xf0,0x00,0xf0,0x00,0x98,0x01,0x0e,0x07,0x06,0x06,0x06,0x00,0x0e,0x00,0x18,0x00,0xf0,0x07,0xf0,0x07,0x18,0x00,0x0e,0x00,0x06,0x00,0x00,0x00,0x02,0x07,0x82,0x07,0xc2,0x04,0x62,0x04,0x32,0x04,0x1e,0x04,0x0e,0x04,0x00,0x00,0x00,0x00,0xff,0x0f,0xff,0x0f,0x01,0x08,0x01,0x08,0x01,0x08,0x00,0x00,0x02,0x00,0x0e,0x00,0x1c,0x00,0x70,0x00,0xe0,0x00,0x80,0x03,0x00,0x07,0x00,0x04,0x00,0x00,0x00,0x00,0x01,0x08,0x01,0x08,0x01,0x08,0xff,0x0f,0xff,0x0f,0x00,0x00,0x00,0x00,0x18,0x00,0x0c,0x00,0x06,0x00,0x06,0x00,0x0c,0x00,0x18,0x00,0x00,0x00,0x00,0x08,0x00,0x08,0x00,0x08,0x00,0x08,0x00,0x08,0x00,0x08,0x00,0x08,0x00,0x08,
|
||||
0x00,0x00,0x00,0x00,0x01,0x00,0x03,0x00,0x06,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xa0,0x07,0xb0,0x04,0x90,0x04,0x90,0x04,0x90,0x02,0xf0,0x07,0xe0,0x07,0xfe,0x07,0xfe,0x07,0x20,0x02,0x10,0x04,0x10,0x04,0x30,0x06,0xe0,0x03,0xc0,0x01,0xc0,0x01,0xe0,0x03,0x30,0x06,0x10,0x04,0x10,0x04,0x10,0x04,0x30,0x06,0x20,0x02,0xc0,0x01,0xe0,0x03,0x30,0x06,0x10,0x04,0x10,0x04,0x20,0x02,0xfe,0x07,0xfe,0x07,0xc0,0x01,0xe0,0x03,0xb0,0x06,0x90,0x04,0x90,0x04,0xb0,0x04,0xe0,0x06,0xc0,0x02,0x40,0x00,0x40,0x00,0xfc,0x07,0xfe,0x07,0x42,0x00,0x42,0x00,0x0e,0x00,0x0c,0x00,0x60,0x05,0xf0,0x0f,0x90,0x0a,0x90,0x0a,0x90,0x0a,0xf0,0x0a,0x60,0x0e,0x30,0x04,0xfe,0x07,0xfe,0x07,0x20,0x00,0x10,0x00,0x10,0x00,0x30,0x00,0xe0,0x07,0xc0,0x07,0x00,0x00,0x00,0x04,0x10,0x04,0xf6,0x07,0xf6,0x07,0x00,0x04,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x07,0x00,0x0f,0x00,0x08,0x10,0x08,0x10,0x08,0xf6,0x0f,0xf6,0x07,0x00,0x00,0xfe,0x07,0xfe,0x07,0xc0,0x00,0xe0,0x01,0x30,0x03,0x10,0x06,0x00,0x04,0x00,0x00,0x00,0x04,0x02,0x04,0xfe,0x07,0xfe,0x07,0x00,0x04,0x00,0x04,0x00,0x00,0xf0,0x07,0xe0,0x07,0x10,0x00,0xf0,0x07,0xe0,0x07,0x10,0x00,0xf0,0x07,0xe0,0x07,0xf0,0x07,0xf0,0x07,0x20,0x00,0x10,0x00,0x10,0x00,0x30,0x00,0xe0,0x07,0xc0,0x07,0xc0,0x01,0xe0,0x03,0x30,0x06,0x10,0x04,0x10,0x04,0x30,0x06,0xe0,0x03,0xc0,0x01,
|
||||
0xf0,0x0f,0xf0,0x0f,0xa0,0x00,0x10,0x01,0x10,0x01,0xb0,0x01,0xe0,0x00,0xc0,0x00,0xc0,0x00,0xe0,0x00,0xb0,0x01,0x10,0x01,0x10,0x01,0xa0,0x00,0xf0,0x0f,0xf0,0x0f,0x10,0x00,0xf0,0x07,0xe0,0x07,0x30,0x00,0x10,0x00,0x10,0x00,0x30,0x00,0x20,0x00,0x60,0x02,0xf0,0x06,0x90,0x04,0x90,0x04,0x90,0x04,0x90,0x04,0xb0,0x07,0x20,0x03,0x10,0x00,0x10,0x00,0xfc,0x03,0xfc,0x07,0x10,0x04,0x10,0x04,0x00,0x06,0x00,0x02,0xf0,0x01,0xf0,0x03,0x00,0x06,0x00,0x04,0x00,0x04,0x00,0x02,0xf0,0x07,0xf0,0x07,0x30,0x00,0xf0,0x00,0xc0,0x03,0x00,0x07,0x00,0x07,0xc0,0x03,0xf0,0x00,0x30,0x00,0xf0,0x03,0xf0,0x07,0x00,0x06,0xc0,0x03,0xc0,0x03,0x00,0x06,0xf0,0x07,0xf0,0x03,0x10,0x04,0x30,0x06,0x60,0x03,0xc0,0x01,0xc0,0x01,0x60,0x03,0x30,0x06,0x10,0x04,0xf0,0x04,0xf0,0x0c,0x80,0x09,0x00,0x09,0x00,0x09,0x80,0x0c,0xf0,0x07,0xf0,0x03,0x00,0x00,0x10,0x06,0x10,0x07,0x90,0x05,0xd0,0x04,0x70,0x04,0x30,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0xfe,0x07,0x9f,0x0f,0x01,0x08,0x01,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0x07,0xfe,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x08,0x01,0x08,0x9f,0x0f,0xfe,0x07,0x60,0x00,0x00,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x64,0x02,0x68,0x01,0xf0,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0xf0,0x00,0x68,0x01,0x64,0x02,0x60,0x00,0x60,0x00,0x60,0x00,
|
99
src/font_midsize.xbm
Normal file
99
src/font_midsize.xbm
Normal file
|
@ -0,0 +1,99 @@
|
|||
#define font_8x10_width 128
|
||||
#define font_8x10_height 72
|
||||
static unsigned char font_8x10_bits[] = {
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x0c, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x6c, 0x00, 0x10, 0xc2, 0x1c, 0x18,
|
||||
0x30, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x18, 0x6c, 0x6c,
|
||||
0x7c, 0x67, 0x36, 0x18, 0x18, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60,
|
||||
0x00, 0x18, 0x6c, 0x6c, 0xd6, 0x67, 0x36, 0x18, 0x18, 0x30, 0x00, 0x18,
|
||||
0x00, 0x00, 0x00, 0x60, 0x00, 0x18, 0x00, 0xfe, 0x16, 0x32, 0x1e, 0x18,
|
||||
0x0c, 0x60, 0x6c, 0x18, 0x00, 0x00, 0x00, 0x30, 0x00, 0x18, 0x00, 0x6c,
|
||||
0x1e, 0x18, 0x0c, 0x00, 0x0c, 0x60, 0x38, 0x18, 0x00, 0x00, 0x00, 0x18,
|
||||
0x00, 0x18, 0x00, 0x6c, 0x7c, 0x18, 0x9e, 0x00, 0x0c, 0x60, 0xfe, 0xff,
|
||||
0x00, 0x1e, 0x00, 0x18, 0x00, 0x18, 0x00, 0xfe, 0xf0, 0x4c, 0xf3, 0x00,
|
||||
0x0c, 0x60, 0x38, 0x18, 0x38, 0x00, 0x00, 0x0c, 0x00, 0x18, 0x00, 0x6c,
|
||||
0xd0, 0xe6, 0x63, 0x00, 0x18, 0x30, 0x6c, 0x18, 0x38, 0x00, 0x00, 0x06,
|
||||
0x00, 0x00, 0x00, 0x6c, 0xd6, 0xe6, 0x73, 0x00, 0x18, 0x30, 0x00, 0x18,
|
||||
0x30, 0x00, 0x18, 0x06, 0x00, 0x18, 0x00, 0x00, 0x7c, 0x43, 0xde, 0x00,
|
||||
0x30, 0x18, 0x00, 0x00, 0x30, 0x00, 0x3c, 0x03, 0x00, 0x00, 0x00, 0x00,
|
||||
0x10, 0x00, 0x00, 0x00, 0x60, 0x0c, 0x00, 0x00, 0x18, 0x00, 0x18, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x3c, 0x3e, 0x60, 0x7f, 0x3c, 0xff,
|
||||
0x3c, 0x3c, 0x00, 0x00, 0x60, 0x00, 0x06, 0x7c, 0x3c, 0x1c, 0x66, 0x63,
|
||||
0x70, 0x03, 0x66, 0xc0, 0x66, 0x66, 0x18, 0x18, 0x30, 0x00, 0x0c, 0xc6,
|
||||
0x66, 0x1e, 0xc3, 0xc0, 0x78, 0x03, 0x43, 0xc0, 0xc3, 0xc3, 0x3c, 0x3c,
|
||||
0x18, 0x00, 0x18, 0xc6, 0xc3, 0x18, 0xc0, 0x60, 0x6c, 0x3b, 0x03, 0x60,
|
||||
0x66, 0xc3, 0x18, 0x18, 0x0c, 0x00, 0x30, 0xc0, 0xc3, 0x18, 0x60, 0x38,
|
||||
0x66, 0x67, 0x3b, 0x30, 0x3c, 0xe6, 0x00, 0x00, 0x06, 0xff, 0x60, 0x60,
|
||||
0xc3, 0x18, 0x30, 0x60, 0x63, 0xc0, 0x67, 0x30, 0x66, 0xdc, 0x00, 0x00,
|
||||
0x06, 0x00, 0x60, 0x30, 0xc3, 0x18, 0x18, 0xc0, 0xff, 0xc0, 0xc3, 0x18,
|
||||
0xc3, 0xc0, 0x18, 0x38, 0x0c, 0x00, 0x30, 0x18, 0x66, 0x18, 0x0c, 0xc0,
|
||||
0x60, 0xc3, 0xc3, 0x18, 0xc3, 0xc2, 0x3c, 0x38, 0x18, 0xff, 0x18, 0x00,
|
||||
0x3c, 0x18, 0x06, 0x63, 0x60, 0x66, 0x66, 0x18, 0x66, 0x66, 0x18, 0x30,
|
||||
0x30, 0x00, 0x0c, 0x18, 0x18, 0x7e, 0xff, 0x3e, 0x60, 0x3c, 0x3c, 0x18,
|
||||
0x3c, 0x3c, 0x00, 0x30, 0x60, 0x00, 0x06, 0x18, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x78, 0x18, 0x3f, 0x7c, 0x3f, 0xfe, 0xff, 0x7c,
|
||||
0xc3, 0x7e, 0x78, 0xc3, 0x06, 0xc3, 0xc3, 0x3c, 0xcc, 0x3c, 0x63, 0xc6,
|
||||
0x63, 0x06, 0x03, 0xc6, 0xc3, 0x18, 0x60, 0x63, 0x06, 0xe7, 0xc7, 0x66,
|
||||
0xcc, 0x66, 0xc3, 0x83, 0xc3, 0x06, 0x03, 0x03, 0xc3, 0x18, 0x60, 0x33,
|
||||
0x06, 0xff, 0xcf, 0xc3, 0x78, 0xc3, 0x63, 0x03, 0xc3, 0x06, 0x03, 0x03,
|
||||
0xc3, 0x18, 0x60, 0x1b, 0x06, 0xdb, 0xcf, 0xc3, 0x00, 0xc3, 0x3f, 0x03,
|
||||
0xc3, 0x7e, 0x3f, 0x03, 0xff, 0x18, 0x60, 0x0f, 0x06, 0xdb, 0xdb, 0xc3,
|
||||
0x00, 0xc3, 0x63, 0x03, 0xc3, 0x06, 0x03, 0xe3, 0xc3, 0x18, 0x60, 0x0f,
|
||||
0x06, 0xdb, 0xdb, 0xc3, 0x00, 0xff, 0xc3, 0x03, 0xc3, 0x06, 0x03, 0xc3,
|
||||
0xc3, 0x18, 0x60, 0x1b, 0x06, 0xc3, 0xf3, 0xc3, 0x00, 0xc3, 0xc3, 0x83,
|
||||
0xc3, 0x06, 0x03, 0xc3, 0xc3, 0x18, 0x62, 0x33, 0x06, 0xc3, 0xe3, 0xc3,
|
||||
0x00, 0xc3, 0x63, 0xc6, 0x63, 0x06, 0x03, 0xc6, 0xc3, 0x18, 0x36, 0x63,
|
||||
0x06, 0xc3, 0xe3, 0x66, 0x00, 0xc3, 0x3f, 0x7c, 0x3f, 0xfe, 0x03, 0x7c,
|
||||
0xc3, 0x7e, 0x1c, 0xc3, 0xfe, 0xc3, 0xc3, 0x3c, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c,
|
||||
0x00, 0x7c, 0x00, 0x00, 0x7f, 0x3c, 0x7f, 0x7e, 0xff, 0xc3, 0xc3, 0xc3,
|
||||
0xc3, 0xc3, 0xfe, 0x0c, 0x03, 0x60, 0x18, 0x00, 0xc3, 0x66, 0xc3, 0xc3,
|
||||
0x18, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc0, 0x0c, 0x06, 0x60, 0x3c, 0x00,
|
||||
0xc3, 0xc3, 0xc3, 0x03, 0x18, 0xc3, 0xc3, 0xc3, 0x66, 0x66, 0xc0, 0x0c,
|
||||
0x06, 0x60, 0x66, 0x00, 0xc3, 0xc3, 0xc3, 0x03, 0x18, 0xc3, 0x66, 0xc3,
|
||||
0x3c, 0x3c, 0x60, 0x0c, 0x0c, 0x60, 0x42, 0x00, 0x7f, 0xc3, 0x7f, 0x7e,
|
||||
0x18, 0xc3, 0x66, 0xdb, 0x18, 0x18, 0x30, 0x0c, 0x18, 0x60, 0x00, 0x00,
|
||||
0x03, 0xc3, 0x1f, 0xc0, 0x18, 0xc3, 0x66, 0xdb, 0x18, 0x18, 0x18, 0x0c,
|
||||
0x18, 0x60, 0x00, 0x00, 0x03, 0xdb, 0x33, 0xc0, 0x18, 0xc3, 0x3c, 0xdb,
|
||||
0x3c, 0x18, 0x0c, 0x0c, 0x30, 0x60, 0x00, 0x00, 0x03, 0xf3, 0x63, 0xc0,
|
||||
0x18, 0xc3, 0x3c, 0xff, 0x66, 0x18, 0x06, 0x0c, 0x60, 0x60, 0x00, 0x00,
|
||||
0x03, 0x66, 0xc3, 0xc3, 0x18, 0x66, 0x18, 0xe7, 0xc3, 0x18, 0x06, 0x0c,
|
||||
0x60, 0x60, 0x00, 0x00, 0x03, 0xbc, 0xc3, 0x7e, 0x18, 0x3c, 0x18, 0xc3,
|
||||
0xc3, 0x18, 0xfe, 0x0c, 0xc0, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x7c, 0x00, 0xff,
|
||||
0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x03, 0x00, 0xc0, 0x00, 0x78, 0x00,
|
||||
0x03, 0x18, 0xc0, 0x06, 0x1c, 0x00, 0x00, 0x00, 0x30, 0x00, 0x03, 0x00,
|
||||
0xc0, 0x00, 0xcc, 0x00, 0x03, 0x18, 0xc0, 0x06, 0x18, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x03, 0x00, 0xc0, 0x00, 0xcc, 0x00, 0x03, 0x00, 0x00, 0x06,
|
||||
0x18, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x3b, 0x7c, 0xdc, 0x3c, 0x0c, 0xbe,
|
||||
0x3b, 0x1c, 0xf0, 0x66, 0x18, 0x6d, 0x3b, 0x3c, 0x00, 0xc6, 0x67, 0xc6,
|
||||
0xe6, 0x66, 0x0c, 0xe3, 0x67, 0x18, 0xc0, 0x36, 0x18, 0xdb, 0x67, 0x66,
|
||||
0x00, 0xc0, 0xc3, 0x03, 0xc3, 0xc3, 0x3f, 0x63, 0xc3, 0x18, 0xc0, 0x1e,
|
||||
0x18, 0xdb, 0xc3, 0xc3, 0x00, 0xfe, 0xc3, 0x03, 0xc3, 0xff, 0x0c, 0x3e,
|
||||
0xc3, 0x18, 0xc0, 0x1e, 0x18, 0xdb, 0xc3, 0xc3, 0x00, 0xc3, 0xc3, 0x03,
|
||||
0xc3, 0x03, 0x0c, 0x03, 0xc3, 0x18, 0xc6, 0x36, 0x18, 0xdb, 0xc3, 0xc3,
|
||||
0x00, 0xe3, 0x67, 0xc6, 0xe6, 0xc6, 0x0c, 0x7e, 0xc3, 0x18, 0xc6, 0x66,
|
||||
0x18, 0xdb, 0xc3, 0x66, 0x00, 0xde, 0x3b, 0x7c, 0xdc, 0x7c, 0x0c, 0xc3,
|
||||
0xc3, 0x7e, 0xc6, 0xc6, 0x7e, 0xdb, 0xc3, 0x3c, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
|
||||
0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x18, 0x18, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x30, 0x08, 0x10,
|
||||
0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18,
|
||||
0x18, 0x30, 0x10, 0x08, 0x3b, 0xdc, 0x7b, 0x7e, 0x3f, 0xc3, 0xc3, 0xc3,
|
||||
0xc3, 0xc3, 0x7e, 0x18, 0x18, 0x30, 0x20, 0x04, 0x67, 0xe6, 0xce, 0xc3,
|
||||
0x0c, 0xc3, 0xc3, 0xc3, 0x66, 0xc3, 0x60, 0x0c, 0x18, 0x60, 0x7f, 0xfe,
|
||||
0xc3, 0xc3, 0x06, 0x03, 0x0c, 0xc3, 0x66, 0xdb, 0x3c, 0xc3, 0x30, 0x0c,
|
||||
0x18, 0x60, 0x7f, 0xfe, 0xe7, 0xe7, 0x06, 0x7e, 0x0c, 0xc3, 0x66, 0xdb,
|
||||
0x18, 0xe7, 0x18, 0x18, 0x18, 0x30, 0x20, 0x04, 0x3b, 0xdc, 0x06, 0xc0,
|
||||
0x0c, 0xc3, 0x3c, 0xdb, 0x3c, 0xdc, 0x0c, 0x18, 0x18, 0x30, 0x10, 0x08,
|
||||
0x03, 0xc0, 0x06, 0xc3, 0xcc, 0xe6, 0x3c, 0xff, 0x66, 0xc0, 0x06, 0x18,
|
||||
0x18, 0x30, 0x08, 0x10, 0x03, 0xc0, 0x06, 0x7e, 0x78, 0xdc, 0x18, 0x66,
|
||||
0xc3, 0x63, 0x7e, 0x18, 0x18, 0x30, 0x00, 0x00, 0x03, 0xc0, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x70, 0x00, 0x1c, 0x00, 0x00 };
|
|
@ -1019,5 +1019,5 @@ void menuGeneralCalib(uint8_t event)
|
|||
break;
|
||||
}
|
||||
|
||||
doMainScreenGrphics();
|
||||
doMainScreenGraphics();
|
||||
}
|
||||
|
|
148
src/lcd.cpp
148
src/lcd.cpp
|
@ -71,14 +71,14 @@ uint8_t lcdLock;
|
|||
uint32_t lcdInputs;
|
||||
#endif
|
||||
|
||||
void lcd_putcAtt(xcoord_t x, uint8_t y, const unsigned char c, uint8_t mode)
|
||||
void lcd_putcAtt(xcoord_t x, uint8_t y, const unsigned char c, LcdFlags mode)
|
||||
{
|
||||
uint8_t *p = &displayBuf[ y / 8 * DISPLAY_W + x ];
|
||||
|
||||
#if defined(PCBX9D)
|
||||
const pm_uchar *q = (c < 0xC0) ? &font[(c-0x20)*5+4] : &font_extra[(c-0xC0)*5+4];
|
||||
const pm_uchar *q = (c < 0xC0) ? &font_5x7[(c-0x20)*5+4] : &font_5x7_extra[(c-0xC0)*5+4];
|
||||
#else
|
||||
const pm_uchar *q = &font[(c-0x20)*5+4];
|
||||
const pm_uchar *q = &font_5x7[(c-0x20)*5+4];
|
||||
#endif
|
||||
|
||||
bool inv = false;
|
||||
|
@ -97,7 +97,7 @@ void lcd_putcAtt(xcoord_t x, uint8_t y, const unsigned char c, uint8_t mode)
|
|||
if (mode & DBLSIZE) {
|
||||
/* each letter consists of ten top bytes followed by
|
||||
* by ten bottom bytes (20 bytes per * char) */
|
||||
q = &font_dblsize[((uint16_t)c-0x20)*20];
|
||||
q = &font_10x14[((uint16_t)c-0x20)*20];
|
||||
for (int8_t i=11; i>=0; i--) {
|
||||
if (mode & CONDENSED && i<=1) break;
|
||||
uint8_t b1=0, b2=0;
|
||||
|
@ -118,6 +118,43 @@ void lcd_putcAtt(xcoord_t x, uint8_t y, const unsigned char c, uint8_t mode)
|
|||
}
|
||||
}
|
||||
}
|
||||
#if defined(PCBX9D)
|
||||
if (mode & MIDSIZE) {
|
||||
/* each letter consists of ten top bytes followed by
|
||||
* by ten bottom bytes (20 bytes per * char) */
|
||||
q = &font_8x10[((uint16_t)c-0x20)*16];
|
||||
for (int8_t i=9; i>=0; i--) {
|
||||
// TODO? if (mode & CONDENSED && i<=1) break;
|
||||
uint8_t b1=0, b2=0;
|
||||
if (i!=0 && i!= 9) {
|
||||
b1 = pgm_read_byte(q++); /*top byte*/
|
||||
b2 = pgm_read_byte(q++); /*top byte*/
|
||||
}
|
||||
if (inv) {
|
||||
b1=~b1;
|
||||
b2=~b2;
|
||||
}
|
||||
uint8_t ym8 = (y % 8);
|
||||
if (&p[DISPLAY_W+1] < DISPLAY_END) {
|
||||
ASSERT_IN_DISPLAY(p);
|
||||
ASSERT_IN_DISPLAY(p+DISPLAY_W);
|
||||
*p = (*p & (~(0xff << ym8))) + (b1 << ym8);
|
||||
uint8_t *r = p + DISPLAY_W;
|
||||
if (r<DISPLAY_END) {
|
||||
if (ym8)
|
||||
*r = (*r & (~(0xff >> (8-ym8)))) + (b1 >> (8-ym8));
|
||||
*r = (*r & (~(0x0f << ym8))) + ((b2&0x0f) << ym8);
|
||||
if (ym8) {
|
||||
r = r + DISPLAY_W;
|
||||
if (r<DISPLAY_END)
|
||||
*r = (*r & (~(0x0f >> (8-ym8)))) + ((b2&0x0f) >> (8-ym8));
|
||||
}
|
||||
}
|
||||
p++;
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
else {
|
||||
uint8_t condense=0;
|
||||
|
||||
|
@ -152,7 +189,6 @@ void lcd_putcAtt(xcoord_t x, uint8_t y, const unsigned char c, uint8_t mode)
|
|||
*(p+1) &= (b << ym8);
|
||||
else
|
||||
*(p+1) |= (b << ym8);
|
||||
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
@ -166,14 +202,14 @@ void lcd_putc(xcoord_t x, uint8_t y, const unsigned char c)
|
|||
lcd_putcAtt(x,y,c,0);
|
||||
}
|
||||
|
||||
void lcd_putsiAtt(xcoord_t x,uint8_t y,const pm_char * s,uint8_t idx, uint8_t flags)
|
||||
void lcd_putsiAtt(xcoord_t x, uint8_t y,const pm_char * s,uint8_t idx, LcdFlags flags)
|
||||
{
|
||||
uint8_t length;
|
||||
length = pgm_read_byte(s++) ;
|
||||
lcd_putsnAtt(x,y,s+length*idx,length,flags & ~(BSS|ZCHAR));
|
||||
}
|
||||
|
||||
void lcd_putsnAtt(xcoord_t x,uint8_t y,const pm_char * s,uint8_t len,uint8_t mode)
|
||||
void lcd_putsnAtt(xcoord_t x, uint8_t y, const pm_char * s, uint8_t len, LcdFlags mode)
|
||||
{
|
||||
while(len!=0) {
|
||||
unsigned char c;
|
||||
|
@ -191,8 +227,9 @@ void lcd_putsnAtt(xcoord_t x,uint8_t y,const pm_char * s,uint8_t len,uint8_t mod
|
|||
if (!c || x>DISPLAY_W-6) break;
|
||||
if (c >= 0x20) {
|
||||
lcd_putcAtt(x,y,c,mode);
|
||||
x += FW;
|
||||
x += FW - (mode&CONDENSED ? 1 : 0);
|
||||
if (mode&DBLSIZE) x += FW-1;
|
||||
else if (mode&MIDSIZE) x += FW-3;
|
||||
}
|
||||
else {
|
||||
x += (c*FW/2);
|
||||
|
@ -203,17 +240,17 @@ void lcd_putsnAtt(xcoord_t x,uint8_t y,const pm_char * s,uint8_t len,uint8_t mod
|
|||
lcdLastPos = x;
|
||||
}
|
||||
|
||||
void lcd_putsn(xcoord_t x,uint8_t y,const pm_char * s,uint8_t len)
|
||||
void lcd_putsn(xcoord_t x, uint8_t y, const pm_char * s, uint8_t len)
|
||||
{
|
||||
lcd_putsnAtt(x, y, s, len, 0);
|
||||
}
|
||||
|
||||
void lcd_putsAtt(xcoord_t x,uint8_t y,const pm_char * s,uint8_t mode)
|
||||
void lcd_putsAtt(xcoord_t x, uint8_t y, const pm_char * s, LcdFlags flags)
|
||||
{
|
||||
lcd_putsnAtt(x, y, s, 255, mode);
|
||||
lcd_putsnAtt(x, y, s, 255, flags);
|
||||
}
|
||||
|
||||
void lcd_puts(xcoord_t x,uint8_t y,const pm_char * s)
|
||||
void lcd_puts(xcoord_t x, uint8_t y, const pm_char * s)
|
||||
{
|
||||
lcd_putsAtt(x, y, s, 0);
|
||||
}
|
||||
|
@ -223,7 +260,7 @@ void lcd_putsLeft(uint8_t y, const pm_char * s)
|
|||
lcd_puts(0, y, s);
|
||||
}
|
||||
|
||||
void lcd_outhex4(xcoord_t x,uint8_t y,uint16_t val)
|
||||
void lcd_outhex4(xcoord_t x, uint8_t y, uint16_t val)
|
||||
{
|
||||
x+=FWNUM*4;
|
||||
for(int i=0; i<4; i++)
|
||||
|
@ -235,6 +272,7 @@ void lcd_outhex4(xcoord_t x,uint8_t y,uint16_t val)
|
|||
val>>=4;
|
||||
}
|
||||
}
|
||||
|
||||
void lcd_outdez8(xcoord_t x, uint8_t y, int8_t val)
|
||||
{
|
||||
lcd_outdezAtt(x, y, val);
|
||||
|
@ -250,6 +288,11 @@ void lcd_outdezNAtt(xcoord_t x, uint8_t y, int16_t val, LcdFlags flags, uint8_t
|
|||
uint8_t fw = FWNUM;
|
||||
int8_t mode = MODE(flags);
|
||||
bool dblsize = flags & DBLSIZE;
|
||||
#if defined(PCBX9D)
|
||||
bool midsize = flags & MIDSIZE;
|
||||
#else
|
||||
#define midsize 0
|
||||
#endif
|
||||
|
||||
bool neg = false;
|
||||
if (flags & UNSIGN) { flags -= UNSIGN; }
|
||||
|
@ -272,6 +315,9 @@ void lcd_outdezNAtt(xcoord_t x, uint8_t y, int16_t val, LcdFlags flags, uint8_t
|
|||
if (dblsize) {
|
||||
fw += FWNUM;
|
||||
}
|
||||
else if (midsize) {
|
||||
fw += FWNUM-1;
|
||||
}
|
||||
else {
|
||||
if (flags & LEFT) {
|
||||
if (mode > 0)
|
||||
|
@ -282,7 +328,7 @@ void lcd_outdezNAtt(xcoord_t x, uint8_t y, int16_t val, LcdFlags flags, uint8_t
|
|||
if (flags & LEFT) {
|
||||
x += len * fw;
|
||||
if (neg)
|
||||
x += (dblsize ? 7 : FWNUM);
|
||||
x += ((dblsize|midsize) ? 7 : FWNUM);
|
||||
}
|
||||
|
||||
lcdLastPos = x;
|
||||
|
@ -291,7 +337,7 @@ void lcd_outdezNAtt(xcoord_t x, uint8_t y, int16_t val, LcdFlags flags, uint8_t
|
|||
for (uint8_t i=1; i<=len; i++) {
|
||||
div_t qr = div((uint16_t)val, 10);
|
||||
char c = qr.rem + '0';
|
||||
uint8_t f = flags;
|
||||
LcdFlags f = flags;
|
||||
if (dblsize) {
|
||||
if (c=='1' && i==len && xn>x+10) { x+=2; f|=CONDENSED; }
|
||||
if ((uint16_t)val >= 1000) { x+=FWNUM; f&=~DBLSIZE; }
|
||||
|
@ -308,6 +354,10 @@ void lcd_outdezNAtt(xcoord_t x, uint8_t y, int16_t val, LcdFlags flags, uint8_t
|
|||
else { xn--; ln++; }
|
||||
}
|
||||
}
|
||||
else if (midsize) {
|
||||
x -= 2;
|
||||
xn = x;
|
||||
}
|
||||
else {
|
||||
x--;
|
||||
lcd_plot(x, y+6);
|
||||
|
@ -322,9 +372,17 @@ void lcd_outdezNAtt(xcoord_t x, uint8_t y, int16_t val, LcdFlags flags, uint8_t
|
|||
}
|
||||
|
||||
if (xn) {
|
||||
y &= ~0x07;
|
||||
lcd_hline(xn, (y & ~0x07)+2*FH-3, ln);
|
||||
lcd_hline(xn, y+2*FH-2, ln);
|
||||
if (midsize) {
|
||||
if ((flags&INVERS) && ((~flags & BLINK) || BLINK_ON_PHASE))
|
||||
lcd_vline(xn+1, y, 12);
|
||||
lcd_hline(xn, y+9, 2);
|
||||
lcd_hline(xn, y+10, 2);
|
||||
}
|
||||
else {
|
||||
y &= ~0x07;
|
||||
lcd_hline(xn, (y & ~0x07)+2*FH-3, ln);
|
||||
lcd_hline(xn, y+2*FH-2, ln);
|
||||
}
|
||||
}
|
||||
|
||||
if (neg) lcd_putcAtt(x, y, '-', flags);
|
||||
|
@ -342,7 +400,7 @@ void lcd_mask(uint8_t *p, uint8_t mask, uint8_t att)
|
|||
*p ^= mask;
|
||||
}
|
||||
|
||||
void lcd_plot(xcoord_t x,uint8_t y, uint8_t att)
|
||||
void lcd_plot(xcoord_t x, uint8_t y, uint8_t att)
|
||||
{
|
||||
uint8_t *p = &displayBuf[ y / 8 * DISPLAY_W + x ];
|
||||
if (p<DISPLAY_END)
|
||||
|
@ -473,14 +531,12 @@ void lcd_invert_line(int8_t y)
|
|||
}
|
||||
}
|
||||
|
||||
void putsTime(xcoord_t x, uint8_t y, putstime_t tme, uint8_t att, uint8_t att2)
|
||||
void putsTime(xcoord_t x, uint8_t y, putstime_t tme, LcdFlags att, LcdFlags att2)
|
||||
{
|
||||
div_t qr;
|
||||
|
||||
if (att & LEFT) x+=3*FW;
|
||||
|
||||
if (tme<0) {
|
||||
lcd_putcAtt(x - ((att & DBLSIZE) ? FW+1 : FWNUM), y, '-', att);
|
||||
lcd_putcAtt(x - ((att & DBLSIZE) ? FW+3 : ((att & MIDSIZE) ? FW+1 : FWNUM)), y, '-', att);
|
||||
tme = -tme;
|
||||
}
|
||||
|
||||
|
@ -496,31 +552,45 @@ void putsTime(xcoord_t x, uint8_t y, putstime_t tme, uint8_t att, uint8_t att2)
|
|||
}
|
||||
#endif
|
||||
|
||||
uint8_t x2, x3;
|
||||
if (att&DBLSIZE) {
|
||||
x2 = x+2*(FW+FWNUM)-3;
|
||||
x3 = x+2*(FW+FWNUM)+FW-2;
|
||||
}
|
||||
else if (att&MIDSIZE) {
|
||||
x2 = x+2*8-1;
|
||||
x3 = x+2*8+7;
|
||||
}
|
||||
else {
|
||||
x2 = x+2*FWNUM-1;
|
||||
x3 = x+2*FWNUM-1+FW;
|
||||
}
|
||||
|
||||
lcd_putcAtt(x2, y, ':', att&att2);
|
||||
lcd_outdezNAtt(x, y, qr.quot, att|LEADING0|LEFT, 2);
|
||||
lcd_putcAtt(lcdLastPos-((att & DBLSIZE) ? 1 : 0), y, ':', att&att2);
|
||||
lcd_outdezNAtt(lcdLastPos+FW, y, qr.rem, att2|LEADING0|LEFT, 2);
|
||||
lcd_outdezNAtt(x3, y, qr.rem, att2|LEADING0|LEFT, 2);
|
||||
}
|
||||
|
||||
// TODO to be optimized with putsTelemetryValue
|
||||
void putsVolts(xcoord_t x, uint8_t y, uint16_t volts, uint8_t att)
|
||||
void putsVolts(xcoord_t x, uint8_t y, uint16_t volts, LcdFlags att)
|
||||
{
|
||||
lcd_outdezAtt(x, y, (int16_t)volts, (~NO_UNIT) & (att | ((att&PREC2)==PREC2 ? 0 : PREC1)));
|
||||
if (~att & NO_UNIT) lcd_putcAtt(lcdLastPos, y, 'v', att&(~INVERS));
|
||||
}
|
||||
|
||||
void putsVBat(xcoord_t x, uint8_t y, uint8_t att)
|
||||
void putsVBat(xcoord_t x, uint8_t y, LcdFlags att)
|
||||
{
|
||||
putsVolts(x, y, g_vbat100mV, att);
|
||||
}
|
||||
|
||||
void putsStrIdx(xcoord_t x, uint8_t y, const pm_char *str, uint8_t idx, uint8_t att)
|
||||
void putsStrIdx(xcoord_t x, uint8_t y, const pm_char *str, uint8_t idx, LcdFlags att)
|
||||
{
|
||||
lcd_putsAtt(x, y, str, att);
|
||||
lcd_outdezNAtt(lcdLastPos, y, idx, att|LEFT, 2);
|
||||
lcd_putsAtt(x, y, str, att);
|
||||
}
|
||||
|
||||
void putsChnRaw(xcoord_t x, uint8_t y, uint8_t idx, uint8_t att)
|
||||
void putsChnRaw(xcoord_t x, uint8_t y, uint8_t idx, LcdFlags att)
|
||||
{
|
||||
if (idx==0)
|
||||
lcd_putsiAtt(x, y, STR_MMMINV, 0, att);
|
||||
|
@ -534,7 +604,7 @@ void putsChnRaw(xcoord_t x, uint8_t y, uint8_t idx, uint8_t att)
|
|||
lcd_putsiAtt(x, y, STR_VTELEMCHNS, idx-(NUM_STICKS+NUM_POTS+NUM_ROTARY_ENCODERS+NUM_STICKS+1+NUM_SW_SRCRAW+NUM_CYC+NUM_PPM+NUM_CHNOUT), att);
|
||||
}
|
||||
|
||||
void putsMixerSource(xcoord_t x, uint8_t y, uint8_t idx, uint8_t att)
|
||||
void putsMixerSource(xcoord_t x, uint8_t y, uint8_t idx, LcdFlags att)
|
||||
{
|
||||
#if defined(PCBX9D)
|
||||
if (idx<=NUM_STICKS+NUM_POTS+NUM_ROTARY_ENCODERS+NUM_STICKS+1+NUM_SW_SRCRAW)
|
||||
|
@ -553,12 +623,12 @@ void putsMixerSource(xcoord_t x, uint8_t y, uint8_t idx, uint8_t att)
|
|||
#endif
|
||||
}
|
||||
|
||||
void putsChnLetter(xcoord_t x, uint8_t y, uint8_t idx, uint8_t attr)
|
||||
void putsChnLetter(xcoord_t x, uint8_t y, uint8_t idx, LcdFlags attr)
|
||||
{
|
||||
lcd_putsiAtt(x, y, STR_RETA123, idx-1, attr);
|
||||
}
|
||||
|
||||
void putsModelName(xcoord_t x, uint8_t y, char *name, uint8_t id, uint8_t att)
|
||||
void putsModelName(xcoord_t x, uint8_t y, char *name, uint8_t id, LcdFlags att)
|
||||
{
|
||||
uint8_t len = sizeof(g_model.name);
|
||||
while (len>0 && !name[len-1]) --len;
|
||||
|
@ -570,7 +640,7 @@ void putsModelName(xcoord_t x, uint8_t y, char *name, uint8_t id, uint8_t att)
|
|||
}
|
||||
}
|
||||
|
||||
void putsSwitches(xcoord_t x, uint8_t y, int8_t idx, uint8_t att)
|
||||
void putsSwitches(xcoord_t x, uint8_t y, int8_t idx, LcdFlags att)
|
||||
{
|
||||
if (idx == 0)
|
||||
return lcd_putsiAtt(x, y, STR_MMMINV, 0, att);
|
||||
|
@ -597,13 +667,13 @@ void putsSwitches(xcoord_t x, uint8_t y, int8_t idx, uint8_t att)
|
|||
}
|
||||
}
|
||||
#endif
|
||||
if (~att & SWCONDENSED) lcd_putcAtt(x+3*FW, y, suffix, att);
|
||||
if (~att & CONDENSED) lcd_putcAtt(x+3*FW, y, suffix, att);
|
||||
}
|
||||
lcd_putsiAtt(x, y, STR_VSWITCHES, idx-1, att);
|
||||
}
|
||||
|
||||
#ifdef FLIGHT_PHASES
|
||||
void putsFlightPhase(xcoord_t x, uint8_t y, int8_t idx, uint8_t att)
|
||||
void putsFlightPhase(xcoord_t x, uint8_t y, int8_t idx, LcdFlags att)
|
||||
{
|
||||
if (idx==0) { lcd_putsiAtt(x, y, STR_MMMINV, 0, att); return; }
|
||||
if (idx < 0) { lcd_vlineStip(x-2, y, 8, 0x5E/*'!'*/); idx = -idx; }
|
||||
|
@ -614,7 +684,7 @@ void putsFlightPhase(xcoord_t x, uint8_t y, int8_t idx, uint8_t att)
|
|||
}
|
||||
#endif
|
||||
|
||||
void putsCurve(xcoord_t x, uint8_t y, int8_t idx, uint8_t att)
|
||||
void putsCurve(xcoord_t x, uint8_t y, int8_t idx, LcdFlags att)
|
||||
{
|
||||
if (idx < 0) {
|
||||
lcd_putcAtt(x-1*FW, y, '!', att);
|
||||
|
@ -626,7 +696,7 @@ void putsCurve(xcoord_t x, uint8_t y, int8_t idx, uint8_t att)
|
|||
putsStrIdx(x, y, PSTR("c"), idx-CURVE_BASE+1, att);
|
||||
}
|
||||
|
||||
void putsTmrMode(xcoord_t x, uint8_t y, int8_t mode, uint8_t att)
|
||||
void putsTmrMode(xcoord_t x, uint8_t y, int8_t mode, LcdFlags att)
|
||||
{
|
||||
if (mode < 0) {
|
||||
mode = TMR_VAROFS - mode - 1;
|
||||
|
@ -640,7 +710,7 @@ void putsTmrMode(xcoord_t x, uint8_t y, int8_t mode, uint8_t att)
|
|||
putsSwitches(x, y, mode-(TMR_VAROFS-1), att);
|
||||
}
|
||||
|
||||
void putsTrimMode(xcoord_t x, uint8_t y, uint8_t phase, uint8_t idx, uint8_t att)
|
||||
void putsTrimMode(xcoord_t x, uint8_t y, uint8_t phase, uint8_t idx, LcdFlags att)
|
||||
{
|
||||
int16_t v = getRawTrimValue(phase, idx);
|
||||
|
||||
|
@ -655,7 +725,7 @@ void putsTrimMode(xcoord_t x, uint8_t y, uint8_t phase, uint8_t idx, uint8_t att
|
|||
}
|
||||
|
||||
#if defined(ROTARY_ENCODERS)
|
||||
void putsRotaryEncoderMode(xcoord_t x, uint8_t y, uint8_t phase, uint8_t idx, uint8_t att)
|
||||
void putsRotaryEncoderMode(xcoord_t x, uint8_t y, uint8_t phase, uint8_t idx, LcdFlags att)
|
||||
{
|
||||
#if defined(EXTRA_ROTARY_ENCODERS)
|
||||
int16_t v;
|
||||
|
|
64
src/lcd.h
64
src/lcd.h
|
@ -88,15 +88,18 @@
|
|||
|
||||
/* switches flags */
|
||||
#define SWONOFF 0x10 /* means inlude ON OFF in switches */
|
||||
#define SWCONDENSED 0x20 /* means that THRm will be displayed as THR */
|
||||
|
||||
/* telemetry flags */
|
||||
#define NO_UNIT 0x40
|
||||
|
||||
#if defined(PCBSKY9X)
|
||||
#if defined(PCBX9D)
|
||||
#define MIDSIZE 0x0100
|
||||
#else
|
||||
#define MIDSIZE DBLSIZE
|
||||
#endif
|
||||
|
||||
#if defined(CPUARM)
|
||||
#define LcdFlags uint32_t
|
||||
#elif defined(PCBGRUVIN9X)
|
||||
#define LcdFlags uint16_t
|
||||
#else
|
||||
#define LcdFlags uint8_t
|
||||
#endif
|
||||
|
@ -113,49 +116,46 @@ extern uint8_t lcdLock ;
|
|||
extern uint32_t lcdInputs ;
|
||||
#endif
|
||||
|
||||
extern void lcd_putc(xcoord_t x,uint8_t y,const unsigned char c);
|
||||
extern void lcd_putcAtt(xcoord_t x,uint8_t y,const unsigned char c,uint8_t mode);
|
||||
|
||||
extern void lcd_putsAtt(xcoord_t x,uint8_t y,const pm_char * s,uint8_t mode);
|
||||
extern void lcd_putsiAtt(xcoord_t x,uint8_t y,const pm_char * s,uint8_t idx, uint8_t mode);
|
||||
extern void lcd_putsnAtt(xcoord_t x,uint8_t y,const pm_char * s,unsigned char len,uint8_t mode);
|
||||
extern void lcd_puts(xcoord_t x,uint8_t y,const pm_char * s);
|
||||
extern void lcd_putc(xcoord_t x, uint8_t y, const unsigned char c);
|
||||
extern void lcd_putcAtt(xcoord_t x, uint8_t y, const unsigned char c, LcdFlags mode);
|
||||
extern void lcd_putsAtt(xcoord_t x, uint8_t y, const pm_char * s, LcdFlags mode);
|
||||
extern void lcd_putsiAtt(xcoord_t x, uint8_t y, const pm_char * s,uint8_t idx, LcdFlags mode);
|
||||
extern void lcd_putsnAtt(xcoord_t x, uint8_t y, const pm_char * s,unsigned char len, LcdFlags mode);
|
||||
extern void lcd_puts(xcoord_t x, uint8_t y, const pm_char * s);
|
||||
extern void lcd_putsLeft(uint8_t y, const pm_char * s);
|
||||
extern void lcd_putsn(xcoord_t x,uint8_t y,const pm_char * s,unsigned char len);
|
||||
|
||||
extern void lcd_outhex4(xcoord_t x,uint8_t y,uint16_t val);
|
||||
extern void lcd_putsn(xcoord_t x, uint8_t y, const pm_char * s, unsigned char len);
|
||||
|
||||
extern void lcd_outhex4(xcoord_t x, uint8_t y, uint16_t val);
|
||||
extern void lcd_outdezAtt(xcoord_t x, uint8_t y, int16_t val, LcdFlags mode=0);
|
||||
extern void lcd_outdezNAtt(xcoord_t x, uint8_t y, int16_t val, LcdFlags mode=0, uint8_t len=0);
|
||||
extern void lcd_outdez8(xcoord_t x, uint8_t y, int8_t val);
|
||||
|
||||
extern void putsStrIdx(xcoord_t x, uint8_t y, const pm_char *str, uint8_t idx, uint8_t att=0);
|
||||
|
||||
extern void putsModelName(xcoord_t x, uint8_t y, char *name, uint8_t id, uint8_t att);
|
||||
extern void putsSwitches(xcoord_t x, uint8_t y, int8_t swtch, uint8_t att=0);
|
||||
extern void putsMixerSource(xcoord_t x, uint8_t y, uint8_t idx, uint8_t att=0);
|
||||
extern void putsFlightPhase(xcoord_t x, uint8_t y, int8_t idx, uint8_t att=0);
|
||||
extern void putsCurve(xcoord_t x, uint8_t y, int8_t idx, uint8_t att=0);
|
||||
extern void putsTmrMode(xcoord_t x, uint8_t y, int8_t mode, uint8_t att);
|
||||
extern void putsTrimMode(xcoord_t x, uint8_t y, uint8_t phase, uint8_t idx, uint8_t att);
|
||||
extern void putsStrIdx(xcoord_t x, uint8_t y, const pm_char *str, uint8_t idx, LcdFlags att=0);
|
||||
extern void putsModelName(xcoord_t x, uint8_t y, char *name, uint8_t id, LcdFlags att);
|
||||
extern void putsSwitches(xcoord_t x, uint8_t y, int8_t swtch, LcdFlags att=0);
|
||||
extern void putsMixerSource(xcoord_t x, uint8_t y, uint8_t idx, LcdFlags att=0);
|
||||
extern void putsFlightPhase(xcoord_t x, uint8_t y, int8_t idx, LcdFlags att=0);
|
||||
extern void putsCurve(xcoord_t x, uint8_t y, int8_t idx, LcdFlags att=0);
|
||||
extern void putsTmrMode(xcoord_t x, uint8_t y, int8_t mode, LcdFlags att);
|
||||
extern void putsTrimMode(xcoord_t x, uint8_t y, uint8_t phase, uint8_t idx, LcdFlags att);
|
||||
#if defined(ROTARY_ENCODERS)
|
||||
void putsRotaryEncoderMode(xcoord_t x, uint8_t y, uint8_t phase, uint8_t idx, uint8_t att);
|
||||
void putsRotaryEncoderMode(xcoord_t x, uint8_t y, uint8_t phase, uint8_t idx, LcdFlags att);
|
||||
#endif
|
||||
|
||||
extern void putsChnRaw(xcoord_t x,uint8_t y,uint8_t idx1,uint8_t att);
|
||||
extern void putsChnRaw(xcoord_t x, uint8_t y, uint8_t idx1, LcdFlags att);
|
||||
#define putsChn(x, y, idx, att) putsChnRaw(x, y, (idx)+(NUM_STICKS+NUM_POTS+NUM_ROTARY_ENCODERS+NUM_STICKS+1+NUM_SW_SRCRAW+NUM_CYC+NUM_PPM), att)
|
||||
extern void putsChnLetter(xcoord_t x, uint8_t y, uint8_t idx, uint8_t attr);
|
||||
extern void putsChnLetter(xcoord_t x, uint8_t y, uint8_t idx, LcdFlags attr);
|
||||
|
||||
extern void putsVolts(xcoord_t x, uint8_t y, uint16_t volts, uint8_t att);
|
||||
extern void putsVBat(xcoord_t x, uint8_t y, uint8_t att);
|
||||
extern void putsVolts(xcoord_t x, uint8_t y, uint16_t volts, LcdFlags att);
|
||||
extern void putsVBat(xcoord_t x, uint8_t y, LcdFlags att);
|
||||
|
||||
#if defined(PCBSKY9X)
|
||||
#if defined(CPUARM)
|
||||
#define putstime_t int32_t
|
||||
#else
|
||||
#define putstime_t int16_t
|
||||
#endif
|
||||
|
||||
extern void putsTime(xcoord_t x, uint8_t y, putstime_t tme, uint8_t att, uint8_t att2);
|
||||
extern void putsTime(xcoord_t x, uint8_t y, putstime_t tme, LcdFlags att, LcdFlags att2);
|
||||
|
||||
#define SOLID 0xff
|
||||
#define DOTTED 0x55
|
||||
|
@ -194,6 +194,10 @@ extern void lcdSetContrast();
|
|||
|
||||
extern void refreshDisplay();
|
||||
|
||||
#if defined(PCBX9D)
|
||||
const pm_char * bmpLoad(uint8_t *dest, const char *filename);
|
||||
#endif
|
||||
|
||||
#define BLINK_ON_PHASE (g_blinkTmr10ms & (1<<6))
|
||||
|
||||
#ifdef SIMU
|
||||
|
|
|
@ -33,22 +33,50 @@
|
|||
|
||||
#include "open9x.h"
|
||||
|
||||
#if defined(LCD212)
|
||||
#define BOX_WIDTH 31
|
||||
#define LBOX_CENTERX (BOX_WIDTH/2 + 17)
|
||||
#define LBOX_CENTERY (DISPLAY_H-BOX_WIDTH/2-10)
|
||||
#define RBOX_CENTERX (DISPLAY_W-LBOX_CENTERX)
|
||||
#define RBOX_CENTERY LBOX_CENTERY
|
||||
#define MODELNAME_X (13)
|
||||
#define VBATT_X (MODELNAME_X+30)
|
||||
#define VBATT_Y (FH+3)
|
||||
#define VBATTUNIT_X (VBATT_X-2)
|
||||
#define VBATTUNIT_Y VBATT_Y
|
||||
#define BITMAP_X ((DISPLAY_W-64)/2)
|
||||
#define BITMAP_Y (DISPLAY_H/2)
|
||||
#define PHASE_X BITMAP_X
|
||||
#define PHASE_Y (3*FH)
|
||||
#define TIMERS_X (24*FW+9)
|
||||
#define REBOOT_X (DISPLAY_W-FW)
|
||||
#else
|
||||
#define BOX_WIDTH 23
|
||||
#define BAR_HEIGHT (BOX_WIDTH-1l)
|
||||
#define MARKER_WIDTH 5
|
||||
#define BOX_LIMIT (BOX_WIDTH-MARKER_WIDTH)
|
||||
#define LBOX_CENTERX (DISPLAY_W/4 + 10)
|
||||
#define LBOX_CENTERY (DISPLAY_H-9-BOX_WIDTH/2)
|
||||
#define RBOX_CENTERX (3*DISPLAY_W/4 - 10)
|
||||
#define RBOX_CENTERY (DISPLAY_H-9-BOX_WIDTH/2)
|
||||
#define RBOX_CENTERY LBOX_CENTERY
|
||||
#define MODELNAME_X (2*FW-2)
|
||||
#define PHASE_X (6*FW)
|
||||
#define PHASE_Y (2*FH)
|
||||
#define VBATT_X (6*FW)
|
||||
#define VBATT_Y (2*FH)
|
||||
#define VBATTUNIT_X (VBATT_X-1)
|
||||
#define VBATTUNIT_Y (3*FH)
|
||||
#define REBOOT_X (20*FW-3)
|
||||
#endif
|
||||
|
||||
void doMainScreenGrphics()
|
||||
#define BAR_HEIGHT (BOX_WIDTH-1l)
|
||||
#define MARKER_WIDTH 5
|
||||
#define BOX_LIMIT (BOX_WIDTH-MARKER_WIDTH)
|
||||
|
||||
void doMainScreenGraphics()
|
||||
{
|
||||
lcd_square(LBOX_CENTERX-BOX_WIDTH/2, LBOX_CENTERY-BOX_WIDTH/2, BOX_WIDTH);
|
||||
lcd_square(RBOX_CENTERX-BOX_WIDTH/2, RBOX_CENTERY-BOX_WIDTH/2, BOX_WIDTH);
|
||||
|
||||
DO_CROSS(LBOX_CENTERX,LBOX_CENTERY,3)
|
||||
DO_CROSS(RBOX_CENTERX,RBOX_CENTERY,3)
|
||||
DO_CROSS(LBOX_CENTERX, LBOX_CENTERY, 3)
|
||||
DO_CROSS(RBOX_CENTERX, RBOX_CENTERY, 3)
|
||||
|
||||
int16_t calibStickVert = calibratedStick[CONVERT_MODE(1+1)-1];
|
||||
if (g_eeGeneral.throttleReversed && CONVERT_MODE(1+1)-1 == THR_STICK)
|
||||
|
@ -59,15 +87,26 @@ void doMainScreenGrphics()
|
|||
calibStickVert = -calibStickVert;
|
||||
lcd_square(RBOX_CENTERX+(calibratedStick[CONVERT_MODE(3+1)-1]*BOX_LIMIT/(2*RESX))-MARKER_WIDTH/2, RBOX_CENTERY-(calibStickVert*BOX_LIMIT/(2*RESX))-MARKER_WIDTH/2, MARKER_WIDTH, ROUND);
|
||||
|
||||
#if defined(PCBX9D)
|
||||
for (uint8_t i=NUM_STICKS; i<NUM_STICKS+NUM_POTS; i++) {
|
||||
xcoord_t x = (i>NUM_STICKS+1 ? DISPLAY_W-5 : 3);
|
||||
int8_t y = (i%2 ? DISPLAY_H/2+1 : 1);
|
||||
lcd_vline(x, y, DISPLAY_H/2-2);
|
||||
lcd_vline(x+1, y, DISPLAY_H/2-2);
|
||||
y += ((calibratedStick[i]+RESX)*(DISPLAY_H/2-4)/(RESX*2)); // calculate once per loop
|
||||
lcd_vline(x-1, y, 2);
|
||||
lcd_vline(x+2, y, 2);
|
||||
}
|
||||
#else
|
||||
// Optimization by Mike Blandford
|
||||
{
|
||||
uint8_t x, y, len ; // declare temporary variables
|
||||
for( x = -5, y = 4 ; y < 7 ; x += 5, y += 1 )
|
||||
{
|
||||
for (x = -5, y = 4 ; y < 7 ; x += 5, y += 1) {
|
||||
len = ((calibratedStick[y]+RESX)*BAR_HEIGHT/(RESX*2))+1l; // calculate once per loop
|
||||
V_BAR(DISPLAY_W/2+x,DISPLAY_H-8, len)
|
||||
V_BAR(DISPLAY_W/2+x, DISPLAY_H-8, len)
|
||||
}
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
#if defined(PCBX9D)
|
||||
|
@ -204,19 +243,10 @@ void menuMainView(uint8_t event)
|
|||
{
|
||||
// Flight Phase Name
|
||||
uint8_t phase = s_perout_flight_phase;
|
||||
#if defined(LCD212)
|
||||
uint8_t len = ZLEN(g_model.phaseData[phase].name);
|
||||
if (len > 0) {
|
||||
uint8_t tmp = (DISPLAY_W - 6*FW - 2 - len*FW/2);
|
||||
lcd_putsnAtt(tmp, 5, g_model.phaseData[phase].name, sizeof(g_model.phaseData[phase].name), ZCHAR);
|
||||
lcd_rect(tmp-2, 5-2, 3+FW*len, FH+3);
|
||||
}
|
||||
#else
|
||||
lcd_putsnAtt(6*FW, 2*FH, g_model.phaseData[phase].name, sizeof(g_model.phaseData[phase].name), ZCHAR);
|
||||
#endif
|
||||
lcd_putsnAtt(PHASE_X, PHASE_Y, g_model.phaseData[phase].name, sizeof(g_model.phaseData[phase].name), ZCHAR);
|
||||
|
||||
// Model Name
|
||||
putsModelName(2*FW-2, 0*FH, g_model.name, g_eeGeneral.currModel, DBLSIZE);
|
||||
putsModelName(MODELNAME_X, 0*FH, g_model.name, g_eeGeneral.currModel, MIDSIZE);
|
||||
|
||||
// Voltage (or alarm if any)
|
||||
#if defined(PCBSKY9X)
|
||||
|
@ -229,45 +259,49 @@ void menuMainView(uint8_t event)
|
|||
else
|
||||
#endif
|
||||
{
|
||||
uint8_t att = (g_vbat100mV <= g_eeGeneral.vBatWarn ? BLINK|INVERS : 0) | DBLSIZE;
|
||||
putsVBat(6*FW-1, 2*FH, att|NO_UNIT);
|
||||
lcd_putc(6*FW, 3*FH, 'V');
|
||||
}
|
||||
|
||||
// And ! in case of unexpected shutdown
|
||||
if (unexpectedShutdown) {
|
||||
lcd_putcAtt(20*FW-3, 0*FH, '!', INVERS);
|
||||
LcdFlags att = (g_vbat100mV <= g_eeGeneral.vBatWarn ? BLINK|INVERS : 0) | MIDSIZE;
|
||||
putsVBat(VBATT_X-1, VBATT_Y, att|NO_UNIT);
|
||||
#if defined(PCBX9D)
|
||||
lcd_putcAtt(VBATTUNIT_X, VBATTUNIT_Y, 'v', MIDSIZE);
|
||||
#else
|
||||
lcd_putc(VBATT_X, VBATTUNIT_Y, 'V');
|
||||
#endif
|
||||
}
|
||||
|
||||
#if defined(LCD212)
|
||||
// Main timer
|
||||
if (g_model.timers[0].mode) {
|
||||
uint8_t att = DBLSIZE | (s_timerState[0]==TMR_BEEPING ? BLINK|INVERS : 0);
|
||||
putsTime(12*FW-2, FH*2, s_timerVal[0], att, att);
|
||||
putsTmrMode(s_timerVal[0] >= 0 ? 9*FW-FW/2 : 9*FW-FW/2-7, FH*3, g_model.timers[0].mode, SWCONDENSED);
|
||||
LcdFlags att = MIDSIZE | (s_timerState[0]==TMR_BEEPING ? BLINK|INVERS : 0);
|
||||
putsTime(TIMERS_X, 0, s_timerVal[0], att, att);
|
||||
putsTmrMode(TIMERS_X-23, 4, g_model.timers[0].mode, CONDENSED);
|
||||
if (g_model.timers[0].remanent) lcd_putc(TIMERS_X+42, 1, 'R');
|
||||
}
|
||||
|
||||
// Second timer
|
||||
if (g_model.timers[1].mode) {
|
||||
uint8_t att = DBLSIZE | (s_timerState[1]==TMR_BEEPING ? BLINK|INVERS : 0);
|
||||
putsTime(23*FW+1, FH*2, s_timerVal[1], att, att);
|
||||
putsTmrMode(s_timerVal[1] >= 0 ? 20*FW-FW/2+4 : 20*FW-FW/2-3, FH*3, g_model.timers[1].mode, SWCONDENSED);
|
||||
LcdFlags att = MIDSIZE | (s_timerState[1]==TMR_BEEPING ? BLINK|INVERS : 0);
|
||||
putsTime(TIMERS_X, (FH+3), s_timerVal[1], att, att);
|
||||
putsTmrMode(TIMERS_X-23, FH+7, g_model.timers[1].mode, CONDENSED);
|
||||
if (g_model.timers[1].remanent) lcd_putc(TIMERS_X+42, FH+4, 'R');
|
||||
}
|
||||
#else
|
||||
// Main timer
|
||||
if (g_model.timers[0].mode) {
|
||||
uint8_t att = DBLSIZE | (s_timerState[0]==TMR_BEEPING ? BLINK|INVERS : 0);
|
||||
putsTime(12*FW+3, FH*2, s_timerVal[0], att, att);
|
||||
putsTmrMode(s_timerVal[0] >= 0 ? 9*FW-FW/2+5 : 9*FW-FW/2-2, FH*3, g_model.timers[0].mode, SWCONDENSED);
|
||||
putsTime(12*FW+2, FH*2, s_timerVal[0], att, att);
|
||||
putsTmrMode(s_timerVal[0] >= 0 ? 9*FW-FW/2+5 : 9*FW-FW/2-2, FH*3, g_model.timers[0].mode, CONDENSED);
|
||||
}
|
||||
#endif
|
||||
|
||||
// Trim sliders
|
||||
for(uint8_t i=0; i<4; i++)
|
||||
{
|
||||
for (uint8_t i=0; i<4; i++) {
|
||||
#define TL 27
|
||||
// LH LV RV RH
|
||||
static uint8_t x[4] = {DISPLAY_W*1/4+2, 3, DISPLAY_W-4, DISPLAY_W*3/4-2};
|
||||
#if defined(LCD212)
|
||||
static xcoord_t x[4] = {32+9, 10, DISPLAY_W-11, DISPLAY_W-32-9};
|
||||
#else
|
||||
static uint8_t x[4] = {DISPLAY_W*1/4+2, 3, DISPLAY_W-4, DISPLAY_W*3/4-2};
|
||||
#endif
|
||||
static uint8_t vert[4] = {0,1,1,0};
|
||||
uint8_t xm, ym;
|
||||
xm = x[CONVERT_MODE(i+1)-1];
|
||||
|
@ -305,6 +339,10 @@ void menuMainView(uint8_t event)
|
|||
}
|
||||
}
|
||||
|
||||
#if defined(PCBX9D)
|
||||
lcd_img(BITMAP_X, BITMAP_Y, modelBitmap, 0, 0);
|
||||
#endif
|
||||
|
||||
if (view_base < e_inputs) {
|
||||
// scroll bar
|
||||
lcd_hlineStip(38, 34, 54, DOTTED);
|
||||
|
@ -347,11 +385,10 @@ void menuMainView(uint8_t event)
|
|||
if(len>WBAR2) len = WBAR2; // prevent bars from going over the end - comment for debugging
|
||||
lcd_hlineStip(x0-WBAR2, y0, WBAR2*2+1, DOTTED);
|
||||
lcd_vline(x0,y0-2,5);
|
||||
if (val>0){
|
||||
if (val>0)
|
||||
x0+=1;
|
||||
}else{
|
||||
else
|
||||
x0-=len;
|
||||
}
|
||||
lcd_hline(x0,y0+1,len);
|
||||
lcd_hline(x0,y0-1,len);
|
||||
break;
|
||||
|
@ -361,12 +398,33 @@ void menuMainView(uint8_t event)
|
|||
else if (view_base == e_inputs) {
|
||||
if (view == e_inputs) {
|
||||
// hardware inputs
|
||||
doMainScreenGrphics();
|
||||
doMainScreenGraphics();
|
||||
#if defined(PCBX9D)
|
||||
for (uint8_t i=0; i<8; i++) {
|
||||
uint8_t sw;
|
||||
switch(i) {
|
||||
case 0:
|
||||
sw = getValue(MIXSRC_SA) > 0 ? 2 : 1;
|
||||
break;
|
||||
case 7:
|
||||
sw = getValue(MIXSRC_SH) > 0 ? 2+2+3*6 : 1+3*6;
|
||||
break;
|
||||
default:
|
||||
{
|
||||
int8_t val = getValue(MIXSRC_SA+i);
|
||||
sw = ((val > 0) ? 3*i+2 : ((val < 0) ? 3*i+1 : 3*i));
|
||||
break;
|
||||
}
|
||||
}
|
||||
putsSwitches(i<4 ? 8*FW+3: 24*FW+1, (i%4)*FH+3*FH, sw, 0);
|
||||
}
|
||||
#else
|
||||
for (uint8_t i=0; i<6; i++) {
|
||||
int8_t sw1 = (i<3 ? 1+i : 4+i);
|
||||
int8_t sw2 = (sw1 == 9 ? (getSwitch(4, 0) ? 4 : (getSwitch(5, 0) ? 5 : 6)) : sw1);
|
||||
putsSwitches(i<3 ? 2*FW-2: 17*FW-1, (i%3)*FH+4*FH+1, sw2, getSwitch(sw1, 0) ? INVERS : 0);
|
||||
putsSwitches(i<3 ? 2*FW-3: 17*FW+2, (i%3)*FH+4*FH+1, sw2, getSwitch(sw1, 0) ? INVERS : 0);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
else {
|
||||
#if defined(ROTARY_ENCODERS)
|
||||
|
@ -402,10 +460,15 @@ void menuMainView(uint8_t event)
|
|||
}
|
||||
else { // timer2
|
||||
putsTime(33+FW+2, FH*5, s_timerVal[1], DBLSIZE, DBLSIZE);
|
||||
putsTmrMode(s_timerVal[1] >= 0 ? 20-FW/2+5 : 20-FW/2-2, FH*6, g_model.timers[1].mode, SWCONDENSED);
|
||||
putsTmrMode(s_timerVal[1] >= 0 ? 20-FW/2+5 : 20-FW/2-2, FH*6, g_model.timers[1].mode, CONDENSED);
|
||||
// lcd_outdezNAtt(33+11*FW, FH*6, s_timerVal_10ms[1], LEADING0, 2); // 1/100s
|
||||
}
|
||||
|
||||
// And ! in case of unexpected shutdown
|
||||
if (unexpectedShutdown) {
|
||||
lcd_putcAtt(REBOOT_X, 0*FH, '!', INVERS);
|
||||
}
|
||||
|
||||
if (s_global_warning) {
|
||||
s_warning = s_global_warning;
|
||||
displayWarning(_event);
|
||||
|
@ -418,7 +481,7 @@ void menuMainView(uint8_t event)
|
|||
s_gvar_timer--;
|
||||
s_warning = PSTR("Global Variable");
|
||||
displayBox();
|
||||
#if defined(M64)
|
||||
#if defined(CPUM64)
|
||||
lcd_putsAtt(16+4*FW, 5*FH, PSTR("[\010]"), BOLD);
|
||||
lcd_outdezAtt(16+4*FW+4*FW+FW/2, 5*FH, GVAR_VALUE(s_gvar_last, s_perout_flight_phase), BOLD);
|
||||
#else
|
||||
|
@ -430,8 +493,9 @@ void menuMainView(uint8_t event)
|
|||
}
|
||||
#endif
|
||||
|
||||
#ifdef DSM2
|
||||
#if defined(DSM2)
|
||||
if (s_bind_mode) // Issue 98
|
||||
lcd_putsAtt(15*FW, 0, PSTR("BIND"), 0);
|
||||
#endif
|
||||
|
||||
}
|
||||
|
|
|
@ -80,7 +80,7 @@ inline MenuFuncP lastPopMenu()
|
|||
return g_menuStack[g_menuStackPtr+1];
|
||||
}
|
||||
|
||||
void doMainScreenGrphics();
|
||||
void doMainScreenGraphics();
|
||||
void menuMainView(uint8_t event);
|
||||
void menuGeneralDiagAna(uint8_t event);
|
||||
#ifdef FRSKY
|
||||
|
|
|
@ -932,7 +932,7 @@ enum menuModelPhaseItems {
|
|||
IF_ROTARY_ENCODERS(ITEM_MODEL_PHASE_ROTARY_ENCODERS)
|
||||
ITEM_MODEL_PHASE_FADE_IN,
|
||||
ITEM_MODEL_PHASE_FADE_OUT,
|
||||
#if defined(GVARS) && !defined(M64)
|
||||
#if defined(GVARS) && !defined(CPUM64)
|
||||
ITEM_MODEL_PHASE_GVARS_LABEL,
|
||||
ITEM_MODEL_PHASE_GV1,
|
||||
ITEM_MODEL_PHASE_GV2,
|
||||
|
@ -948,7 +948,7 @@ void menuModelPhaseOne(uint8_t event)
|
|||
PhaseData *phase = phaseaddress(s_currIdx);
|
||||
putsFlightPhase(13*FW, 0, s_currIdx+1, (getFlightPhase()==s_currIdx ? BOLD : 0));
|
||||
|
||||
#if defined(GVARS) && !defined(M64)
|
||||
#if defined(GVARS) && !defined(CPUM64)
|
||||
static bool editingName = false;
|
||||
if (editingName && s_editMode <= 0) editingName = false;
|
||||
if (!editingName && s_editMode > 0 && m_posHorz == 0) editingName = true;
|
||||
|
@ -969,7 +969,7 @@ void menuModelPhaseOne(uint8_t event)
|
|||
int8_t sub = m_posVert;
|
||||
int8_t editMode = s_editMode;
|
||||
|
||||
#if defined(GVARS) && !defined(M64)
|
||||
#if defined(GVARS) && !defined(CPUM64)
|
||||
if (s_currIdx == 0 && sub>=ITEM_MODEL_PHASE_SWITCH) sub += ITEM_MODEL_PHASE_FADE_IN-ITEM_MODEL_PHASE_SWITCH;
|
||||
|
||||
for (uint8_t k=0; k<7; k++) {
|
||||
|
@ -1045,7 +1045,7 @@ void menuModelPhaseOne(uint8_t event)
|
|||
phase->fadeOut = editDelay(y, event, attr, STR_FADEOUT, phase->fadeOut);
|
||||
break;
|
||||
|
||||
#if defined(GVARS) && !defined(M64)
|
||||
#if defined(GVARS) && !defined(CPUM64)
|
||||
|
||||
case ITEM_MODEL_PHASE_GVARS_LABEL:
|
||||
lcd_putsLeft(y, STR_GLOBAL_VARS);
|
||||
|
@ -2388,7 +2388,7 @@ void menuModelLimits(uint8_t event)
|
|||
|
||||
void menuModelCurvesAll(uint8_t event)
|
||||
{
|
||||
#if defined(GVARS) && defined(M64)
|
||||
#if defined(GVARS) && defined(CPUM64)
|
||||
SIMPLE_MENU(STR_MENUCURVES, menuTabModel, e_CurvesAll, 1+MAX_CURVES+MAX_GVARS);
|
||||
#else
|
||||
SIMPLE_MENU(STR_MENUCURVES, menuTabModel, e_CurvesAll, 1+MAX_CURVES);
|
||||
|
@ -2419,7 +2419,7 @@ void menuModelCurvesAll(uint8_t event)
|
|||
uint8_t y = FH + i*FH;
|
||||
uint8_t k = i + s_pgOfs;
|
||||
uint8_t attr = (sub == k ? INVERS : 0);
|
||||
#if defined(GVARS) && defined(M64)
|
||||
#if defined(GVARS) && defined(CPUM64)
|
||||
if (k < MAX_CURVES) {
|
||||
putsStrIdx(0, y, STR_CV, k+1, attr);
|
||||
}
|
||||
|
|
|
@ -174,17 +174,16 @@ PACK(typedef struct t_EEGeneral {
|
|||
|
||||
}) EEGeneral;
|
||||
|
||||
// eeprom modelspec
|
||||
|
||||
#define LEN_MODEL_NAME 10
|
||||
|
||||
#if defined(PCBX9D)
|
||||
#define LEN_MODEL_NAME 12
|
||||
#define LEN_EXPOMIX_NAME 10
|
||||
#define LEN_FP_NAME 10
|
||||
#elif defined(PCBSKY9X)
|
||||
#define LEN_MODEL_NAME 10
|
||||
#define LEN_EXPOMIX_NAME 6
|
||||
#define LEN_FP_NAME 6
|
||||
#else
|
||||
#define LEN_MODEL_NAME 10
|
||||
#define LEN_FP_NAME 6
|
||||
#endif
|
||||
|
||||
|
@ -633,7 +632,7 @@ PACK(typedef struct t_SwashRingData { // Swash Ring data
|
|||
#define ROTARY_ENCODER_ARRAY_EXTRA
|
||||
#endif
|
||||
|
||||
#if defined(M64)
|
||||
#if defined(CPUM64)
|
||||
#define TRIM_ARRAY int8_t trim[4]; int8_t trim_ext:8
|
||||
#else
|
||||
#define TRIM_ARRAY int16_t trim[4]
|
||||
|
@ -641,17 +640,17 @@ PACK(typedef struct t_SwashRingData { // Swash Ring data
|
|||
|
||||
typedef int16_t gvar_t;
|
||||
|
||||
#if !defined(M64)
|
||||
#if !defined(CPUM64)
|
||||
typedef char gvar_name_t[6];
|
||||
#define GVAR_MAX 1024
|
||||
#endif
|
||||
|
||||
#if defined(M64) && defined(GVARS)
|
||||
#if defined(CPUM64) && defined(GVARS)
|
||||
#define MAX_GVARS 5
|
||||
#define MODEL_GVARS_DATA gvar_t gvars[MAX_GVARS]
|
||||
#define PHASE_GVARS_DATA
|
||||
#define GVAR_VALUE(x, p) g_model.gvars[x]
|
||||
#elif defined(M64)
|
||||
#elif defined(CPUM64)
|
||||
#define MAX_GVARS 0
|
||||
#define MODEL_GVARS_DATA
|
||||
#define PHASE_GVARS_DATA
|
||||
|
@ -684,7 +683,7 @@ PACK(typedef struct t_PhaseData {
|
|||
#define MAX_EXPOS 32
|
||||
#define NUM_CSW 32 // number of custom switches
|
||||
#define NUM_FSW 32 // number of functions assigned to switches
|
||||
#elif defined(PCBGRUVIN9X) || defined(M128)
|
||||
#elif defined(PCBGRUVIN9X) || defined(CPUM128)
|
||||
#define MAX_MODELS 30
|
||||
#define NUM_CHNOUT 16 // number of real output channels CH1-CH16
|
||||
#define MAX_PHASES 5
|
||||
|
@ -765,7 +764,7 @@ enum Dsm2Variants {
|
|||
|
||||
#if defined(MAVLINK)
|
||||
#define TELEMETRY_DATA MavlinkData mavlink
|
||||
#elif defined(FRSKY) || !defined(M64)
|
||||
#elif defined(FRSKY) || !defined(CPUM64)
|
||||
#define TELEMETRY_DATA FrSkyData frsky
|
||||
#else
|
||||
#define TELEMETRY_DATA
|
||||
|
|
|
@ -77,7 +77,7 @@ const pm_uchar splashdata[] PROGMEM = { 'S','P','S',0,
|
|||
const pm_uchar * splash_lbm = splashdata+4;
|
||||
#endif
|
||||
|
||||
#if !defined(M64) || defined(EXTSTD)
|
||||
#if !defined(CPUM64) || defined(EXTSTD)
|
||||
const pm_uchar asterisk_lbm[] PROGMEM = {
|
||||
#include "asterisk.lbm"
|
||||
};
|
||||
|
@ -88,6 +88,10 @@ const pm_uchar asterisk_lbm[] PROGMEM = {
|
|||
EEGeneral g_eeGeneral;
|
||||
ModelData g_model;
|
||||
|
||||
#if defined(PCBX9D)
|
||||
uint8_t modelBitmap[64*32/8];
|
||||
#endif
|
||||
|
||||
#if !defined(PCBSKY9X)
|
||||
uint8_t g_tmr1Latency_max;
|
||||
uint8_t g_tmr1Latency_min;
|
||||
|
@ -273,7 +277,7 @@ CustomSwData *cswaddress(uint8_t idx)
|
|||
return &g_model.customSw[idx];
|
||||
}
|
||||
|
||||
#if defined(M64)
|
||||
#if defined(CPUM64)
|
||||
void memclear(void *ptr, uint8_t size)
|
||||
{
|
||||
memset(ptr, 0, size);
|
||||
|
@ -917,7 +921,7 @@ uint8_t getFlightPhase()
|
|||
int16_t getRawTrimValue(uint8_t phase, uint8_t idx)
|
||||
{
|
||||
PhaseData *p = phaseaddress(phase);
|
||||
#if defined(M64)
|
||||
#if defined(CPUM64)
|
||||
return (((int16_t)p->trim[idx]) << 2) + ((p->trim_ext >> (2*idx)) & 0x03);
|
||||
#else
|
||||
return p->trim[idx];
|
||||
|
@ -932,7 +936,7 @@ int16_t getTrimValue(uint8_t phase, uint8_t idx)
|
|||
void setTrimValue(uint8_t phase, uint8_t idx, int16_t trim)
|
||||
{
|
||||
PhaseData *p = phaseaddress(phase);
|
||||
#if defined(M64)
|
||||
#if defined(CPUM64)
|
||||
p->trim[idx] = (int8_t)(trim >> 2);
|
||||
p->trim_ext = (p->trim_ext & ~(0x03 << (2*idx))) + (((trim & 0x03) << (2*idx)));
|
||||
#else
|
||||
|
@ -1007,7 +1011,7 @@ void incRotaryEncoder(uint8_t idx, int8_t inc)
|
|||
uint8_t s_gvar_timer = 0;
|
||||
uint8_t s_gvar_last = 0;
|
||||
|
||||
#if defined(M64)
|
||||
#if defined(CPUM64)
|
||||
int16_t getGVarValue(int8_t x, int16_t min, int16_t max)
|
||||
{
|
||||
return (x >= 126 || x <= -126) ? limit(min, GVAR_VALUE((uint8_t)x - 126, -1), max) : x;
|
||||
|
@ -1324,7 +1328,7 @@ void message(const pm_char *title, const pm_char *t, const char *last MESSAGE_SO
|
|||
#if defined(LCD212)
|
||||
lcd_img(DISPLAY_W-29, 0, asterisk_lbm, 0, 0);
|
||||
#endif
|
||||
#if !defined(M64) || defined(EXTSTD)
|
||||
#if !defined(CPUM64) || defined(EXTSTD)
|
||||
lcd_img(2, 0, asterisk_lbm, 0, 0);
|
||||
#else
|
||||
lcd_putsAtt(0, 0, PSTR("(!)"), DBLSIZE);
|
||||
|
@ -1374,7 +1378,7 @@ uint8_t checkTrim(uint8_t event)
|
|||
#if defined(GVARS)
|
||||
#define TRIM_REUSED() trimGvar[idx] >= 0
|
||||
if (TRIM_REUSED()) {
|
||||
#if defined(M64)
|
||||
#if defined(CPUM64)
|
||||
phase = 0;
|
||||
#else
|
||||
phase = getGVarFlightPhase(s_perout_flight_phase, trimGvar[idx]);
|
||||
|
@ -2938,8 +2942,11 @@ void perMain()
|
|||
}
|
||||
if (counter-- == 0) {
|
||||
counter = 10;
|
||||
|
||||
#if defined(PCBSKY9X)
|
||||
#if defined(PCBX9D)
|
||||
int32_t instant_vbat = anaIn(8);
|
||||
instant_vbat = ( instant_vbat + instant_vbat*(g_eeGeneral.vBatCalib)/128 ) * 4191 ;
|
||||
instant_vbat /= 55296 ;
|
||||
#elif defined(PCBSKY9X)
|
||||
int32_t instant_vbat = anaIn(7);
|
||||
instant_vbat = ( instant_vbat + instant_vbat*(g_eeGeneral.vBatCalib)/128 ) * 4191 ;
|
||||
instant_vbat /= 55296 ;
|
||||
|
|
16
src/open9x.h
16
src/open9x.h
|
@ -206,6 +206,10 @@ extern void board_init();
|
|||
#include "pulses_avr.h"
|
||||
#endif
|
||||
|
||||
#if defined(PCBX9D)
|
||||
extern uint8_t modelBitmap[64*32/8];
|
||||
#endif
|
||||
|
||||
#if defined(DSM2)
|
||||
extern bool s_bind_mode;
|
||||
extern bool s_rangecheck_mode;
|
||||
|
@ -451,7 +455,8 @@ enum EnumKeys {
|
|||
//SW_NC,
|
||||
//SW_ON,
|
||||
#if defined(PCBX9D)
|
||||
SW_SA=SW_BASE,
|
||||
SW_SA0=SW_BASE,
|
||||
SW_SA2,
|
||||
SW_SB0,
|
||||
SW_SB1,
|
||||
SW_SB2,
|
||||
|
@ -470,7 +475,8 @@ enum EnumKeys {
|
|||
SW_SG0,
|
||||
SW_SG1,
|
||||
SW_SG2,
|
||||
SW_SH,
|
||||
SW_SH0,
|
||||
SW_SH2,
|
||||
#else
|
||||
SW_ThrCt=SW_BASE,
|
||||
SW_RuddDR,
|
||||
|
@ -566,7 +572,7 @@ enum CswFunctions {
|
|||
#define NUM_STICKS 4
|
||||
|
||||
#if defined(PCBX9D)
|
||||
#define MAX_PSWITCH (SW_SH-SW_SA+1)
|
||||
#define MAX_PSWITCH (SW_SH2-SW_SA0+1)
|
||||
#define NUM_POTS 4
|
||||
#define NUM_SW_SRCRAW 8
|
||||
#else
|
||||
|
@ -786,7 +792,7 @@ inline bool navigationRotaryEncoder(uint8_t event)
|
|||
#endif
|
||||
|
||||
#if defined(GVARS)
|
||||
#if defined(M64)
|
||||
#if defined(CPUM64)
|
||||
int16_t getGVarValue(int8_t x, int16_t min, int16_t max);
|
||||
void setGVarValue(uint8_t x, int8_t value);
|
||||
#define GET_GVAR(x, min, max, p) getGVarValue(x, min, max)
|
||||
|
@ -847,7 +853,7 @@ uint16_t stack_free(uint8_t tid);
|
|||
uint16_t stack_free();
|
||||
#endif
|
||||
|
||||
#if defined(M64)
|
||||
#if defined(CPUM64)
|
||||
void memclear(void *ptr, uint8_t size);
|
||||
#else
|
||||
#define memclear(p, s) memset(p, 0, s)
|
||||
|
|
|
@ -338,8 +338,9 @@ FRESULT f_write (FIL* fil, const void* data, UINT size, UINT* written)
|
|||
return FR_OK;
|
||||
}
|
||||
|
||||
FRESULT f_lseek (FIL*, DWORD)
|
||||
FRESULT f_lseek (FIL* fil, DWORD offset)
|
||||
{
|
||||
fseek((FILE*)fil->fs, offset, SEEK_SET);
|
||||
return FR_OK;
|
||||
}
|
||||
|
||||
|
|
14
src/simu.cpp
14
src/simu.cpp
|
@ -136,8 +136,8 @@ Open9xSim::Open9xSim(FXApp* a)
|
|||
arrow[2]= new FXArrowButton(hf10,this,1000,ARROW_RIGHT);
|
||||
for(int i=4; i<8; i++){
|
||||
knobs[i]= new FXKnob(hf11,NULL,0,KNOB_TICKS|LAYOUT_LEFT);
|
||||
knobs[i]->setRange(0,1023);
|
||||
knobs[i]->setValue(512);
|
||||
knobs[i]->setRange(-1024, 1024);
|
||||
knobs[i]->setValue(0);
|
||||
}
|
||||
|
||||
arrow2[0]= new FXArrowButton(hf00,this,1000,ARROW_LEFT);
|
||||
|
@ -239,7 +239,7 @@ long Open9xSim::onTimeout(FXObject*,FXSelector,void*)
|
|||
|
||||
|
||||
if(hasFocus()) {
|
||||
#ifdef REVB
|
||||
#if defined(PCBX9D) || defined(REVB)
|
||||
#define ERSKY9X_RETURN_MASK (0x20)
|
||||
#define ERSKY9X_EXIT_MASK (0x01000000)
|
||||
#define ERSKY9X_EXIT_PIO PIOC
|
||||
|
@ -530,13 +530,17 @@ int main(int argc,char **argv)
|
|||
|
||||
uint16_t anaIn(uint8_t chan)
|
||||
{
|
||||
#if defined(PCBX9D)
|
||||
if (chan == 8)
|
||||
return 1500;
|
||||
#elif defined(PCBGRUVIN9X)
|
||||
if (chan == 7)
|
||||
#ifdef PCBGRUVIN9X
|
||||
return 150;
|
||||
#else
|
||||
if (chan == 7)
|
||||
return 1500;
|
||||
#endif
|
||||
else if (chan<4)
|
||||
else if (chan<NUM_STICKS)
|
||||
return th9xSim->sliders[chan]->getValue();
|
||||
else
|
||||
return th9xSim->knobs[chan]->getValue();
|
||||
|
|
|
@ -40,7 +40,7 @@
|
|||
const pm_char stamp1[] PROGMEM = " SVN: " SVN_STR;
|
||||
const pm_char stamp2[] PROGMEM = "DATE: " DATE_STR;
|
||||
const pm_char stamp3[] PROGMEM = "TIME: " TIME_STR;
|
||||
#if defined(M64)
|
||||
#if defined(CPUM64)
|
||||
const pm_char eeprom_stamp[] PROGMEM = "EEPR: " DEFNUMSTR(EEPROM_VER) "-" DEFNUMSTR(EEPROM_VARIANT);
|
||||
#else
|
||||
const pm_char eeprom_stamp[] PROGMEM = "EEPR: " DEFNUMSTR(EEPROM_VER);
|
||||
|
|
|
@ -374,7 +374,7 @@ const pm_char STR_OWN[] PROGMEM = TR_OWN;
|
|||
const pm_char STR_ROTARY_ENCODER[] PROGMEM = TR_ROTARY_ENCODER;
|
||||
const pm_char STR_DATE[] PROGMEM = TR_DATE;
|
||||
|
||||
const pm_uchar font[] PROGMEM = {
|
||||
const pm_uchar font_5x7[] PROGMEM = {
|
||||
#include "font.lbm"
|
||||
#if defined(TRANSLATIONS_SE)
|
||||
#include "font_se.lbm"
|
||||
|
@ -391,7 +391,7 @@ const pm_uchar font[] PROGMEM = {
|
|||
#endif
|
||||
};
|
||||
|
||||
const pm_uchar font_dblsize[] PROGMEM = {
|
||||
const pm_uchar font_10x14[] PROGMEM = {
|
||||
#include "font_dblsize.lbm"
|
||||
#if defined(TRANSLATIONS_SE)
|
||||
#include "font_dblsize_se.lbm"
|
||||
|
@ -407,12 +407,16 @@ const pm_uchar font_dblsize[] PROGMEM = {
|
|||
};
|
||||
|
||||
#if defined(PCBX9D)
|
||||
const pm_uchar font_extra[] PROGMEM = {
|
||||
const pm_uchar font_8x10[] PROGMEM = {
|
||||
#include "font_midsize.lbm"
|
||||
};
|
||||
|
||||
const pm_uchar font_5x7_extra[] PROGMEM = {
|
||||
#include "font_extra.lbm"
|
||||
};
|
||||
|
||||
const pm_uchar font_extra_dblsize[] PROGMEM = {
|
||||
#include "font_extra_dblsize.lbm"
|
||||
const pm_uchar font_10x14_extra[] PROGMEM = {
|
||||
#include "font_dblsize_extra.lbm"
|
||||
};
|
||||
#endif
|
||||
|
||||
|
|
|
@ -418,12 +418,13 @@ extern const pm_char STR_MODELS_EXT[];
|
|||
#define STR_UPDATE_LIST STR_DELAYDOWN
|
||||
#endif
|
||||
|
||||
extern const pm_uchar font[];
|
||||
extern const pm_uchar font_dblsize[];
|
||||
extern const pm_uchar font_5x7[];
|
||||
extern const pm_uchar font_10x14[];
|
||||
|
||||
#if defined(PCBX9D)
|
||||
extern const pm_uchar font_extra[];
|
||||
extern const pm_uchar font_extra_dblsize[];
|
||||
extern const pm_uchar font_8x10[];
|
||||
extern const pm_uchar font_5x7_extra[];
|
||||
extern const pm_uchar font_10x14_extra[];
|
||||
#endif
|
||||
|
||||
extern const pm_char STR_WARNING[];
|
||||
|
|
|
@ -200,7 +200,7 @@
|
|||
|
||||
#define LEN_VSWITCHES "\003"
|
||||
#if defined(PCBX9D)
|
||||
#define TR_VSWITCHES "SA\301""SB\300""SB-""SB\301""SC\300""SC-""SC\301""SD\300""SD-""SD\301""SE\300""SE-""SE\301""SF\300""SF-""SF\301""SG\300""SG-""SG\301""SH\301""CS1""CS2""CS3""CS4""CS5""CS6""CS7""CS8""CS9""CSA""CSB""CSC""CSD""CSE""CSF""CSG""CSH""CSI""CSJ""CSK""CSL""CSM""CSN""CSO""CSP""CSQ""CSR""CSS""CST""CSU""CSV""CSW"" ON"
|
||||
#define TR_VSWITCHES "SA\300""SA\301""SB\300""SB-""SB\301""SC\300""SC-""SC\301""SD\300""SD-""SD\301""SE\300""SE-""SE\301""SF\300""SF-""SF\301""SG\300""SG-""SG\301""SH\300""SH\301""CS1""CS2""CS3""CS4""CS5""CS6""CS7""CS8""CS9""CSA""CSB""CSC""CSD""CSE""CSF""CSG""CSH""CSI""CSJ""CSK""CSL""CSM""CSN""CSO""CSP""CSQ""CSR""CSS""CST""CSU""CSV""CSW"" ON"
|
||||
#elif defined(PCBSKY9X)
|
||||
#define TR_VSWITCHES "THR""RUD""ELE""ID0""ID1""ID2""AIL""GEA""TRN""CS1""CS2""CS3""CS4""CS5""CS6""CS7""CS8""CS9""CSA""CSB""CSC""CSD""CSE""CSF""CSG""CSH""CSI""CSJ""CSK""CSL""CSM""CSN""CSO""CSP""CSQ""CSR""CSS""CST""CSU""CSV""CSW"" ON"
|
||||
#else
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue