From 380b22e57fe0f8f6aeec4303cd495e61c9e3ca6b Mon Sep 17 00:00:00 2001 From: roy rocket Date: Fri, 23 Dec 2011 11:45:51 +0100 Subject: [PATCH] Fahrplan l0dable added --- firmware/l0dable/fahrplan.c | 186 ++++++++++++++++++++++++++++ firmware/l0dable/files/fahrplan.scd | Bin 0 -> 65283 bytes 2 files changed, 186 insertions(+) create mode 100644 firmware/l0dable/fahrplan.c create mode 100644 firmware/l0dable/files/fahrplan.scd diff --git a/firmware/l0dable/fahrplan.c b/firmware/l0dable/fahrplan.c new file mode 100644 index 0000000..79079a7 --- /dev/null +++ b/firmware/l0dable/fahrplan.c @@ -0,0 +1,186 @@ +#include + +#include "basic/basic.h" + +#include "lcd/print.h" +#include "lcd/render.h" +#include "lcd/display.h" +#include "filesystem/ff.h" +#include "filesystem/diskio.h" + +#include "basic/config.h" + +#include "usetable.h" + +#define one ((uint32_t)1) + +typedef uint8_t uchar; + +static unsigned long iter=0; + +void ram(void) { + getInputWaitRelease(); + + static char delay=15; + + char buf[20]; + + int line; + char startline=0; + char *message=NULL; + char filvers; + char favers[5]; + unsigned char ob; + int eventid; + int evnext; + int evprv; + int evcur=5; + + + lcdClear(); + setExtFont(GLOBAL(nickfont)); + + /* nickheight=getFontHeight(); */ + + lcdClear(); + + FIL file; + FRESULT res; + UINT readbytes; + + res=f_open(&file, "FAHRPLAN.SCD", FA_OPEN_EXISTING|FA_READ|FA_WRITE); + if(res) message="FOPEN ERROR"; + res=f_read(&file, &filvers, 1, &readbytes); + res+=f_read(&file, (char *)favers, 4, &readbytes); + favers[4]=0; + + res+=f_read(&file, (char *)&ob, 1, &readbytes); + evcur=ob; + res+=f_read(&file, (char *)&ob, 1, &readbytes); + evcur+=ob*256; + + lcdClear(); + DoString(0,0,"Fahrplan "); + DoString(60,0,favers); + DoString(0,16,"SW Rel. V0.001"); + if(filvers!=1) { + DoString(0,24,"Incompatible "); + DoString(0,32,"Binary. Get "); + DoString(0,40,"update from "); + DoString(0,48,"r0ket.de "); + DoString(0,56,"Filefmt.: "); + DoInt(60,56,filvers); + lcdDisplay(); + getInputWait(); + getInputWaitRelease(); + return; + } + DoString(0,24,"On C3 get new "); + DoString(0,32,"version from "); + DoString(0,40,"r0ket.de for "); + DoString(0,48,"better UI "); + /* DoInt(0,24,filvers); */ + lcdDisplay(); + delayms(1000); + DoString(0,56," PRESS BUTTON "); + lcdDisplay(); + getInputWait(); + getInputWaitRelease(); + + while (1) { + ++iter; + lcdDisplay(); + lcdClear(); + char title[15]; + char info[15]; + int evtext; + +#ifdef SIMULATOR +#endif +#ifndef SIMULATOR + f_lseek(&file,evcur); + + res+=f_read(&file, (char *)&ob, 1, &readbytes); + eventid=ob; + res+=f_read(&file, (char *)&ob, 1, &readbytes); + eventid+=ob*256; + + res+=f_read(&file, (char *)&ob, 1, &readbytes); + evprv=ob; + res+=f_read(&file, (char *)&ob, 1, &readbytes); + evprv+=ob*256; + + res+=f_read(&file, (char *)&ob, 1, &readbytes); + evnext=ob; + res+=f_read(&file, (char *)&ob, 1, &readbytes); + evnext+=ob*256; + + res+=f_read(&file, (char *)title, 15, &readbytes); + res+=f_read(&file, (char *)info, 15, &readbytes); + evtext=f_tell(&file); + +#endif + /* for(line=0; line<4; line++) { + DoString(0, 8*line+8,tdes[0][line+startline]); + } */ +#ifndef SIMULATOR + title[14]=0; + DoString(0,0,title); + info[14]=0; + DoString(0,8,info); + + int notend=1; + for(line=0; line<6 && notend; line++) { + f_lseek(&file,evtext+(startline+line)*14); + res+=f_read(&file, (char *)buf, 15, &readbytes); + if(res) message="READ ERROR"; else message="READ: 0"; + buf[14]=0; + DoString(0,8*line+20,buf); + if(!buf[0])notend=0; + } + +/* Debug: + DoInt(0,32,eventid); + DoInt(0,40,evprv); + DoInt(50,40,evnext); + if(message) DoString(0, 8*5+8,message); +*/ +#endif + lcdDisplay(); + + // char key=stepmode?getInputWait():getInputRaw(); + // + char key=getInputWait(); + switch(key) { + // Buttons: Right change speed, Up hold scrolling + case BTN_ENTER: + getInputWaitRelease(); + f_lseek(&file,5); + ob=evcur%256; + res+=f_write(&file, (char *)&ob, 1, &readbytes); + ob=evcur>>8; + res+=f_write(&file, (char *)&ob, 1, &readbytes); + return; + case BTN_RIGHT: + getInputWaitRelease(); + if(evnext)evcur=evnext; + startline=0; + break; + case BTN_UP: + getInputWaitRelease(); + if(startline)startline--; + break; + case BTN_LEFT: + getInputWaitRelease(); + if(evprv)evcur=evprv; + startline=0; + break; + case BTN_DOWN: + getInputWaitRelease(); + if(notend)startline++; + break; + } + delayms_queue_plus(delay,0); + } + return; +} diff --git a/firmware/l0dable/files/fahrplan.scd b/firmware/l0dable/files/fahrplan.scd new file mode 100644 index 0000000000000000000000000000000000000000..90577e4ef7daa6921f92ea712af4b35b74d7294d GIT binary patch literal 65283 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 literal 0 HcmV?d00001