From c3ddf660580b04ce7e35fb6f850ae623deea23f7 Mon Sep 17 00:00:00 2001 From: bsongis Date: Wed, 18 Apr 2012 06:00:03 +0000 Subject: [PATCH] Small flash saving in General Menus (60bytes) Backlight brightness now supported on ARM SD card archive function continued Simu backlight support for v4 --- src/eeprom_avr.cpp | 22 +++++++++++++++----- src/general_menus.cpp | 47 ++++++++++++++++++------------------------ src/gruvin9x/logs.cpp | 6 +++--- src/model_menus.cpp | 12 ++++++++--- src/o9xstrings.cpp | 1 + src/o9xstrings.h | 1 + src/open9x.h | 6 +++--- src/simu.cpp | 5 +++++ src/snapshot_01.png | Bin 0 -> 1485 bytes src/snapshot_02.png | Bin 0 -> 1460 bytes src/translations/en.h | 15 +++++++------- src/translations/fr.h | 19 +++++++++-------- src/translations/se.h | 9 ++++---- 13 files changed, 82 insertions(+), 61 deletions(-) create mode 100644 src/snapshot_01.png create mode 100644 src/snapshot_02.png diff --git a/src/eeprom_avr.cpp b/src/eeprom_avr.cpp index 5dbbe1787..e98b6dc75 100644 --- a/src/eeprom_avr.cpp +++ b/src/eeprom_avr.cpp @@ -529,18 +529,30 @@ bool RlcFile::copy(uint8_t i_fileDst, uint8_t i_fileSrc) #ifdef SDCARD const pm_char * eeArchiveModel(uint8_t i_fileSrc) { - char buf[15]; + char *buf = reusableBuffer.model_name; FIL archiveFile; - eeLoadModelName(i_fileSrc, buf); + FRESULT result = f_mount(0, &g_FATFS_Obj); + if (result != FR_OK) { + return PSTR("SDCARD F/S ERROR"); // TODO ... + } - FRESULT result = f_open(&archiveFile, buf, FA_OPEN_ALWAYS | FA_WRITE); + strcpy_P(buf, PSTR(LOG_PATH "/Twister.bin")); // TODO Not PSTR everywhere ... +/* eeLoadModelName(i_fileSrc, &buf[sizeof(LOG_PATH)+1]); + uint8_t i = sizeof(LOG_PATH)+1; + while (i7*FH) return; }subN++; @@ -168,9 +169,7 @@ void menuProcSetup(uint8_t event) #endif if(s_pgOfs7*FH) return; }subN++; @@ -187,9 +186,7 @@ void menuProcSetup(uint8_t event) #ifdef HAPTIC if(s_pgOfs7*FH) return; }subN++; @@ -204,7 +201,7 @@ void menuProcSetup(uint8_t event) if(s_pgOfs7*FH) return; }subN++; @@ -257,9 +254,7 @@ void menuProcSetup(uint8_t event) }subN++; if(s_pgOfs7*FH) return; }subN++; @@ -318,10 +313,8 @@ void menuProcSetup(uint8_t event) }subN++; if(s_pgOfs7*FH) return; + g_eeGeneral.switchWarning = selectMenuItem(y, STR_SWITCHWARNING, STR_WARNSW, g_eeGeneral.switchWarning, -1, 1, sub==subN, event); + if((y+=FH)>7*FH) return; }subN++; if(s_pgOfsAETR for (uint8_t i=1; i<=4; i++) - putsChnLetter((16+i)*FW, y, channel_order(i), attr); + putsChnLetter(GENERAL_PARAM_OFS - FW + i*FW, y, channel_order(i), attr); if(attr) CHECK_INCDEC_GENVAR(event, g_eeGeneral.templateSetup, 0, 23); if((y+=FH)>7*FH) return; }subN++; diff --git a/src/gruvin9x/logs.cpp b/src/gruvin9x/logs.cpp index 0ec1960c9..f7804d1a2 100644 --- a/src/gruvin9x/logs.cpp +++ b/src/gruvin9x/logs.cpp @@ -49,11 +49,11 @@ void initLogs() if (g_oLogFile.fs) f_close(&g_oLogFile); g_logState = 0; - strcpy_P(g_logFilename, PSTR(LOG_PATH "M00_000.CSV")); + strcpy_P(g_logFilename, PSTR(LOG_PATH "/M00_000.CSV")); // Set log file model number uint8_t num = g_eeGeneral.currModel + 1; - char *n = &g_logFilename[11]; // TODO constant + char *n = &g_logFilename[sizeof(LOG_PATH) + 3]; *n = (char)((num % 10) + '0'); *(--n) = (char)((num / 10) + '0'); @@ -74,7 +74,7 @@ void initLogs() f_close(&g_oLogFile); // bump log file counter (file extension) - n = &g_logFilename[15]; + n = &g_logFilename[sizeof(LOG_PATH) + 7]; if (++*n > '9') { *n='0'; diff --git a/src/model_menus.cpp b/src/model_menus.cpp index 90b9ccf10..94caf3653 100644 --- a/src/model_menus.cpp +++ b/src/model_menus.cpp @@ -242,12 +242,13 @@ void menuProcModelSelect(uint8_t event) killEvents(event); if (g_eeGeneral.currModel != sub) { #if defined(SDCARD) - s_menu[s_menu_count++] = STR_LOAD_MODEL; if (eeModelExists(sub)) { + s_menu[s_menu_count++] = STR_LOAD_MODEL; s_menu[s_menu_count++] = STR_ARCHIVE_MODEL; s_menu[s_menu_count++] = STR_DELETE_MODEL;; } else { + s_menu[s_menu_count++] = STR_CREATE_MODEL; s_menu[s_menu_count++] = STR_RESTORE_MODEL;; } #else @@ -364,13 +365,16 @@ void menuProcModelSelect(uint8_t event) if (s_sdcard_error) { s_warning = s_sdcard_error; displayWarning(event); - s_warning = NULL; + if (s_warning) + s_warning = NULL; + else + s_sdcard_error = NULL; } if (s_menu_count) { const pm_char * result = displayMenu(event); if (result) { - if (result == STR_LOAD_MODEL) { + if (result == STR_LOAD_MODEL || result == STR_CREATE_MODEL) { displayPopup(STR_LOADINGMODEL); eeCheck(true); // force writing of current model data before this is changed if (g_eeGeneral.currModel != sub) { @@ -381,6 +385,8 @@ void menuProcModelSelect(uint8_t event) } else if (result == STR_ARCHIVE_MODEL) { s_sdcard_error = eeArchiveModel(sub); + if (!s_sdcard_error) + eeDeleteModel(sub); // delete the model, it's archived! } else if (result == STR_RESTORE_MODEL) { // TODO diff --git a/src/o9xstrings.cpp b/src/o9xstrings.cpp index a03366e97..a82920cfb 100644 --- a/src/o9xstrings.cpp +++ b/src/o9xstrings.cpp @@ -309,6 +309,7 @@ const pm_char STR_CURRENT[] PROGMEM = TR_CURRENT; #if defined(SDCARD) const pm_char STR_LOAD_MODEL[] PROGMEM = TR_LOAD_MODEL; +const pm_char STR_CREATE_MODEL[] PROGMEM = TR_CREATE_MODEL; const pm_char STR_ARCHIVE_MODEL[] PROGMEM = TR_ARCHIVE_MODEL; const pm_char STR_DELETE_MODEL[] PROGMEM = TR_DELETE_MODEL; const pm_char STR_RESTORE_MODEL[] PROGMEM = TR_RESTORE_MODEL; diff --git a/src/o9xstrings.h b/src/o9xstrings.h index cb4679805..04e18ab3e 100644 --- a/src/o9xstrings.h +++ b/src/o9xstrings.h @@ -368,6 +368,7 @@ extern const pm_char STR_CURRENT[]; #if defined(SDCARD) extern const pm_char STR_LOAD_MODEL[]; +extern const pm_char STR_CREATE_MODEL[]; extern const pm_char STR_ARCHIVE_MODEL[]; extern const pm_char STR_DELETE_MODEL[]; extern const pm_char STR_RESTORE_MODEL[]; diff --git a/src/open9x.h b/src/open9x.h index c0318fa05..f3f4c8b09 100644 --- a/src/open9x.h +++ b/src/open9x.h @@ -583,7 +583,7 @@ extern uint8_t s_eeDirtyMsk; #if defined (PCBARM) #ifndef SIMU -#define BACKLIGHT_ON (PWM->PWM_CH_NUM[0].PWM_CDTY = 0/*TODO g_eeGeneral.bright*/) +#define BACKLIGHT_ON (PWM->PWM_CH_NUM[0].PWM_CDTY = g_eeGeneral.backlightBright) #define BACKLIGHT_OFF (PWM->PWM_CH_NUM[0].PWM_CDTY = 100) #else #define BACKLIGHT_ON @@ -835,10 +835,10 @@ union ReusableBuffer { #if !defined(PCBARM) uint8_t eefs_buffer[BLOCKS]; // used by EeFsck - - char model_name[sizeof(g_model.name)]; // used by menuProcModelSelect #endif + char model_name[42]; // used by menuProcModelSelect and for SD card archive / restore + struct { int16_t midVals[7]; diff --git a/src/simu.cpp b/src/simu.cpp index fc2780549..e0a5d0ede 100644 --- a/src/simu.cpp +++ b/src/simu.cpp @@ -247,8 +247,13 @@ void Open9xSim::refreshDiplay() { if (lcd_refresh) { lcd_refresh = false; +#if defined(PCBV4) + if(portc & 1<setOffColor(FXRGB(150,200,152)); + else bmf->setOffColor(FXRGB(200,200,200)); +#else if(portb & 1<setOffColor(FXRGB(150,200,152)); else bmf->setOffColor(FXRGB(200,200,200)); +#endif for(int x=0;xnt35@kwhNT%DYo*TBvy`n_`g3Jja#Iv|=%r z38kkrLD7+z63DR@nwYtzsm#l~Btsw@7cWTcNByxszVCeB_rAa9dEWPZ-mfJ57}nB! zi#Y(m5_bf10ssVj1Y|Q)c%N=*g#nYFahQV<`S;|b2{{A%*PFiSvHj^gobB49&D-;S zenhIo}I)$@M(HVxFDn-(61~qhNt3$ z&IP*T+PK%8zXZRmtv89+z$(-|H3r4Hqku=8 zyW3}9d%KH}_&IygZE(M7eip=`FR7g5Qq(im8;oDPaKd8^Fcd<`bdqDQO>O+QRk@jx=RnidxS+r_L zL4E5pj%>^dEzKa2-hE^d*Gscg?bzaA7UB5A-XrJ7h~AjOTCkga=t$U1XVou zCHLcJSew*Y9d(4wWm|Mh3Zh+2vyMc80>@ zA%m#Mz@u-qL(#kq=Uaw-O>;h;b#W1i-x)_7tS#U337x+Vm{E2hRD5exeO}U>HU($O zW%-17Vh3S$UK@Xy2o@p0X=*PbW%Hru{xNr$uCOt^JAQ27%QZPG-s>0K z=Z#V+4DAjzvUlRP5MQxdEJ%I&C+QY1ICUGqP-(Ze5{>wW}igbB~ue? zXB;6`e3W%pmE9zBnG0>^HF-TH+Sy6@1A?kdGm^cj{6yIGT#IM zFbweb2>}2DLxAXG;W^3ff(2b#fY0I3oSSn}O1i||7#l<`CuRo_&5V-*#9{J*-?T#w zAN=A(v|qVNBJOdxrYvH9r01^XY-n=4Ec*)9>GY|&3C+Af$z$S5EF%u|E`17FO&MYk zn!H-%Z5mnQVvDJUYggl@-stP{3Qm!?#qkI~1nRzis9eMiR5xe&-4UF=EjmiAdzG6< zSqcxHBDI7MOI-{`QrcxcVzmdc@D{lbUoVQGZOqG!fc1we5UnZ-9y;`h*M8K)mo3b? zJyE7=t|?slXvZli^L;+7rkZ7Q(avZ>QVE~Ttmc!Oqo&@4rQB!~Y$r1>)|Y049knM@ zo=M02!`V`QP(DgBNT?(?il^>T@cpMOjEy6Y zRZU&K-Q8Hp?PJL!it3F3E#z_cHt$e}yt(7ju_h^vo`vrhFUdCT%d@C)!v8YC=hAs8Vxqcd*E#dHGyrc%smq zQ~JQp02pn?>AgI#ph%^B6j=3)y!7#e`6$S+lkWOPV72H=ZX+%)iiRWyIBm=8)GCw8 zCr--k=*|l|r_EZZ3Vu``S-vcaAI}euHRa^X;8h!p&Lv9=(yO(>QH~|ZoZD~a19`l% zMWT2~!Ia60(umCQ;q=c_B6GCdIiJ?UtX6#^x>_nSvue(>7KIeKJigVu>l?T{K4U}m z#g<7c7!D_EYt46HK;o}%2#HY8^dixjUs#EnA;#{dREokmCFKfsUObiJkzDDlSm!(V z&AUK`Yu^EO+?h7>D$$xJ$wErZF{3)Jq~>9ey-!>b+1&-!wWmi`N}rUCZGJx+so^gy zDKr}~Y*Bqu7efaWYXsP!b_pvotus{F)XeTI8=L1gbN&@h^J8wwqEa|<_`)k-*WI_V zh%{xreyr5qk1KLsQ@5$6mZlmB<`r={`hK>>Lf4;F_LAkH6Fb1x zk~cOAz!7UI2Jla&7S3s z*FY)Kt^!|*Ot#2~?~5K$^zd8NUcQp;MZ2Ll5^JP^r5qIv(TorFpiX2@36m z@v6Aut#a1P#GV%xsKsepIPAnFMg#SNY-Ty0+b~5%Z5|HSIV->D&id494g6E1Es%oP zQ6_|p>$G_@)`_KGYIOm>V35mw^ zTJ~SA#J;-;BXy3D zhS`f!c8vM5mK_1Eqj(ISZq9x^&}#et&}y6z64>Vk{09wzQKmNX_%-D7J|3AEA`CFK h*UDj030vWEAMoY5CKJISHdORe4j>-)X+4tg(|