From aa821fca3f570f17dacce3f20ddd5a10cea3b038 Mon Sep 17 00:00:00 2001 From: Stefan `Sec` Zehl Date: Sun, 31 Jul 2011 22:13:06 +0200 Subject: [PATCH] Fix a few things. --- firmware/applications/default.c | 20 ++++++++++++++------ firmware/applications/mesh/util.c | 14 +++++++++++++- firmware/applications/tester/util.c | 14 +++++++++++++- firmware/basic/basic.c | 3 +++ firmware/basic/basic.h | 14 ++++++++------ firmware/basic/config.c | 10 ++++++---- firmware/basic/night.c | 16 ++++++++-------- firmware/funk/mesh.c | 2 +- firmware/lcd/display.h | 1 + 9 files changed, 67 insertions(+), 27 deletions(-) diff --git a/firmware/applications/default.c b/firmware/applications/default.c index d4f0b00..ed9aa8b 100644 --- a/firmware/applications/default.c +++ b/firmware/applications/default.c @@ -5,6 +5,7 @@ #include "lcd/fonts/smallfonts.h" #include "lcd/print.h" #include "filesystem/ff.h" +#include "usb/usbmsc.h" #include "basic/random.h" /**************************************************************************/ @@ -12,12 +13,18 @@ void main_default(void) { systickInit(SYSTICKSPEED); - if(getInputRaw()==BTN_ENTER){ - ISPandReset(); + switch(getInputRaw()){ + case BTN_ENTER: + ISPandReset(); + break; + case BTN_DOWN: + usbMSCInit(); + while(1) + delayms_power(100); + break; }; readConfig(); - applyConfig(); randomInit(); return; @@ -41,12 +48,13 @@ void tick_default(void) { if(ctr>100/SYSTICKSPEED){ if(isNight()){ backlightSetBrightness(GLOBAL(lcdbacklight)); - if(GLOBAL(nightinvert)) - lcdSetInvert(0); + lcdSetInvert(0); } else { backlightSetBrightness(0); - if(GLOBAL(nightinvert)) + if(GLOBAL(dayinvert)) lcdSetInvert(1); + else + lcdSetInvert(0); } } diff --git a/firmware/applications/mesh/util.c b/firmware/applications/mesh/util.c index 721cacd..8359628 100644 --- a/firmware/applications/mesh/util.c +++ b/firmware/applications/mesh/util.c @@ -29,6 +29,18 @@ void show_ticks(void) { }; +void chrg_stat(void) { + int stat; + while ((getInputRaw())==BTN_NONE){ + lcdClear(); + lcdPrintln("Chrg_stat:"); + stat=gpioGetValue(RB_PWR_CHRG); + lcdPrint(IntToStr(stat,3,0)); + lcdNl(); + lcdRefresh(); + }; + lcdPrintln("Done."); +}; void adc_light(void) { int dx=0; int dy=8; @@ -37,7 +49,7 @@ void adc_light(void) { while ((getInputRaw())==BTN_NONE){ DoInt(dx,dy,GetLight()); DoInt(dx,dy+16,isNight()); - DoInt(dx,dy+8,GLOBAL(nighttrigger)); + DoInt(dx,dy+8,GLOBAL(daytrig)); lcdDisplay(); }; dy+=8; diff --git a/firmware/applications/tester/util.c b/firmware/applications/tester/util.c index 721cacd..8359628 100644 --- a/firmware/applications/tester/util.c +++ b/firmware/applications/tester/util.c @@ -29,6 +29,18 @@ void show_ticks(void) { }; +void chrg_stat(void) { + int stat; + while ((getInputRaw())==BTN_NONE){ + lcdClear(); + lcdPrintln("Chrg_stat:"); + stat=gpioGetValue(RB_PWR_CHRG); + lcdPrint(IntToStr(stat,3,0)); + lcdNl(); + lcdRefresh(); + }; + lcdPrintln("Done."); +}; void adc_light(void) { int dx=0; int dy=8; @@ -37,7 +49,7 @@ void adc_light(void) { while ((getInputRaw())==BTN_NONE){ DoInt(dx,dy,GetLight()); DoInt(dx,dy+16,isNight()); - DoInt(dx,dy+8,GLOBAL(nighttrigger)); + DoInt(dx,dy+8,GLOBAL(daytrig)); lcdDisplay(); }; dy+=8; diff --git a/firmware/basic/basic.c b/firmware/basic/basic.c index 819de91..749547b 100644 --- a/firmware/basic/basic.c +++ b/firmware/basic/basic.c @@ -34,6 +34,9 @@ void rbInit() { gpioSetDir(RB_BTN4, gpioDirection_Input); gpioSetPullup (&RB_BTN4_IO, gpioPullupMode_PullUp); + // prepate chrg_stat + gpioSetDir(RB_PWR_CHRG, gpioDirection_Input); + gpioSetPullup (&RB_PWR_CHRG_IO, gpioPullupMode_PullUp); // prepare LEDs IOCON_JTAG_TDI_PIO0_11 &= ~IOCON_JTAG_TDI_PIO0_11_FUNC_MASK; diff --git a/firmware/basic/basic.h b/firmware/basic/basic.h index 41ed5c7..6da1410 100644 --- a/firmware/basic/basic.h +++ b/firmware/basic/basic.h @@ -81,6 +81,7 @@ #define RB_PWR_GOOD 1,8 #define RB_PWR_CHRG 2,3 +#define RB_PWR_CHRG_IO IOCON_PIO2_3 #define RB_PWR_LCDBL 0,0 #define RB_PWR_LCDBL_IO IOCON_nRESET_PIO0_0 @@ -203,12 +204,13 @@ extern struct CDESC the_config[]; #define GLOBALversion (the_config[0].value) #define GLOBALprivacy (the_config[1].value) -#define GLOBALnighttrigger (the_config[2].value) -#define GLOBALnightinvert (the_config[3].value) -#define GLOBALlcdbacklight (the_config[4].value) -#define GLOBALlcdmirror (the_config[5].value) -#define GLOBALlcdinvert (the_config[6].value) -#define GLOBALlcdcontrast (the_config[7].value) +#define GLOBALdaytrig (the_config[2].value) +#define GLOBALdaytrighyst (the_config[3].value) +#define GLOBALdayinvert (the_config[4].value) +#define GLOBALlcdbacklight (the_config[5].value) +#define GLOBALlcdmirror (the_config[6].value) +#define GLOBALlcdinvert (the_config[7].value) +#define GLOBALlcdcontrast (the_config[8].value) #define GLOBAL(x) GLOBAL ## x diff --git a/firmware/basic/config.c b/firmware/basic/config.c index d4a0b5a..a307853 100644 --- a/firmware/basic/config.c +++ b/firmware/basic/config.c @@ -10,12 +10,13 @@ struct CDESC the_config[]= { {"version", CFGVER, CFGVER, CFGVER}, {"privacy", 3, 0, 2 }, - {"nighttrigger", 310/2, 0, 255}, - {"nightinvert", 1, 0, 1 }, + {"daytrig", 310/2, 0, 255}, + {"daytrighyst", 10, 0, 50 }, + {"dayinvert", 1, 0, 1 }, {"lcdbacklight", 50, 0, 100}, {"lcdmirror", 0, 0, 1 }, {"lcdinvert", 0, 0, 1 }, - {"lcdcontrast", 3, 1, 6 }, + {"lcdcontrast", 0, 1, 6 }, { NULL, 0, 0, 0 }, }; @@ -25,7 +26,8 @@ struct CDESC the_config[]= { /**************************************************************************/ void applyConfig(){ - lcdSetContrast(GLOBAL(lcdcontrast)); + if(GLOBAL(lcdcontrast)>0) + lcdSetContrast(GLOBAL(lcdcontrast)); return 0; }; diff --git a/firmware/basic/night.c b/firmware/basic/night.c index ae62db1..8adc84c 100644 --- a/firmware/basic/night.c +++ b/firmware/basic/night.c @@ -2,12 +2,12 @@ #include "basic/basic.h" -#define RANGE (10) -#define HYST (4) -uint32_t light=300*HYST; +#define SAMPCT (4) +uint32_t light=300*SAMPCT; char _isnight=1; -#define threshold GLOBAL(nighttrigger) +#define threshold GLOBAL(daytrig) +#define RANGE GLOBAL(daytrighyst) void LightCheck(void){ int iocon; @@ -21,7 +21,7 @@ void LightCheck(void){ gpioSetDir(RB_LED3, gpioDirection_Input); IOCON_PIO1_11 = IOCON_PIO1_11_FUNC_AD7|IOCON_PIO1_11_ADMODE_ANALOG; - light-=light/HYST; + light-=light/SAMPCT; light += (adcRead(7)/2); gpioSetDir(RB_LED3, iodir); @@ -31,15 +31,15 @@ void LightCheck(void){ threshold=320; }; - if(_isnight && light/HYST>(threshold+RANGE)) + if(_isnight && light/SAMPCT>(threshold+RANGE)) _isnight=0; - if(!_isnight && light/HYST_timet) // Do not live in the past. _timet = toff; continue; diff --git a/firmware/lcd/display.h b/firmware/lcd/display.h index 79f671e..d39ccd3 100644 --- a/firmware/lcd/display.h +++ b/firmware/lcd/display.h @@ -30,4 +30,5 @@ void lcdSafeSetPixel(char x, char y, bool f); bool lcdGetPixel(char x, char y); void lcdShift(int x, int y, bool wrap); void lcdSetContrast(int c); +void lcdSetInvert(); #endif