mbed Weather Platform firmware http://mbed.org/users/okini3939/notebook/mbed-weather-platform-firmware/

Dependencies:   ChaNFSSD EthernetNetIf I2CLEDDisp Agentbed ChaNFSUSB ILinterpreter mbed BMP085 WeatherMeters ConfigFile ChaNFS I2CLCD

Committer:
okini3939
Date:
Mon Jul 04 15:16:45 2011 +0000
Revision:
0:bdb53686c194
Child:
1:6c7141895545

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
okini3939 0:bdb53686c194 1 #include "mbed.h"
okini3939 0:bdb53686c194 2 #include "weather.h"
okini3939 0:bdb53686c194 3 #ifdef USE_DISPLAY
okini3939 0:bdb53686c194 4 #include "I2CLEDDisp.h"
okini3939 0:bdb53686c194 5 #include "I2CLCD.h"
okini3939 0:bdb53686c194 6
okini3939 0:bdb53686c194 7 static I2CLEDDisp *leddisp;
okini3939 0:bdb53686c194 8 static I2CLCD *lcd;
okini3939 0:bdb53686c194 9 static volatile int lcd_flg = 0, leddisp_flg = 0;
okini3939 0:bdb53686c194 10 static volatile int leddisp_freq = 0, leddisp_pos = -4;
okini3939 0:bdb53686c194 11 static char leddisp_buf[150];
okini3939 0:bdb53686c194 12 #endif
okini3939 0:bdb53686c194 13
okini3939 0:bdb53686c194 14 void update_display () {
okini3939 0:bdb53686c194 15 #ifdef USE_DISPLAY
okini3939 0:bdb53686c194 16 char buf[128], tmp[128];
okini3939 0:bdb53686c194 17
okini3939 0:bdb53686c194 18 if (leddisp_flg && cfg.getValue("LEDDISP_MESG", tmp, sizeof(tmp))) {
okini3939 0:bdb53686c194 19 format_str(tmp, leddisp_buf, sizeof(leddisp_buf));
okini3939 0:bdb53686c194 20 }
okini3939 0:bdb53686c194 21
okini3939 0:bdb53686c194 22 if (lcd_flg && cfg.getValue("LCD_MESG", tmp, sizeof(tmp))) {
okini3939 0:bdb53686c194 23 format_str(tmp, buf, sizeof(buf));
okini3939 0:bdb53686c194 24 lcd->cls();
okini3939 0:bdb53686c194 25 lcd->puts(buf);
okini3939 0:bdb53686c194 26 }
okini3939 0:bdb53686c194 27 #endif
okini3939 0:bdb53686c194 28 }
okini3939 0:bdb53686c194 29
okini3939 0:bdb53686c194 30 void pool_display () {
okini3939 0:bdb53686c194 31 #ifdef USE_DISPLAY
okini3939 0:bdb53686c194 32 int i, addr, len;
okini3939 0:bdb53686c194 33
okini3939 0:bdb53686c194 34 // LED Display scroll
okini3939 0:bdb53686c194 35 if (leddisp_flg) {
okini3939 0:bdb53686c194 36 leddisp_freq ++;
okini3939 0:bdb53686c194 37 if (leddisp_freq > LED_FREQ) {
okini3939 0:bdb53686c194 38
okini3939 0:bdb53686c194 39 len = strlen(leddisp_buf);
okini3939 0:bdb53686c194 40 leddisp->locate(0, 0);
okini3939 0:bdb53686c194 41 for (i = 0; i < 4; i ++) {
okini3939 0:bdb53686c194 42 addr = leddisp_pos + i;
okini3939 0:bdb53686c194 43 if (addr >= 0 && addr < len) {
okini3939 0:bdb53686c194 44 leddisp->putc(leddisp_buf[addr]);
okini3939 0:bdb53686c194 45 } else {
okini3939 0:bdb53686c194 46 leddisp->putc(' ');
okini3939 0:bdb53686c194 47 }
okini3939 0:bdb53686c194 48 }
okini3939 0:bdb53686c194 49
okini3939 0:bdb53686c194 50 leddisp_pos ++;
okini3939 0:bdb53686c194 51 if (leddisp_pos >= len + 4) {
okini3939 0:bdb53686c194 52 leddisp_pos = -4;
okini3939 0:bdb53686c194 53 }
okini3939 0:bdb53686c194 54
okini3939 0:bdb53686c194 55 leddisp_freq = 0;
okini3939 0:bdb53686c194 56 }
okini3939 0:bdb53686c194 57 }
okini3939 0:bdb53686c194 58 #endif
okini3939 0:bdb53686c194 59 }
okini3939 0:bdb53686c194 60
okini3939 0:bdb53686c194 61 int init_display () {
okini3939 0:bdb53686c194 62 #ifdef USE_DISPLAY
okini3939 0:bdb53686c194 63 char buf[128];
okini3939 0:bdb53686c194 64 enum I2CLCDType lcdtype = LCD16x2;
okini3939 0:bdb53686c194 65 enum I2CLCDConfig lcdconf = LCDCFG_3V;
okini3939 0:bdb53686c194 66
okini3939 0:bdb53686c194 67 if (cfg.getValue("LCD_MESG", buf, sizeof(buf))) {
okini3939 0:bdb53686c194 68 if (cfg.getValue("LCD_TYPE", buf, sizeof(buf))) {
okini3939 0:bdb53686c194 69 lcdtype = (enum I2CLCDType)atoi(buf);
okini3939 0:bdb53686c194 70 }
okini3939 0:bdb53686c194 71 if (cfg.getValue("LCD_CONF", buf, sizeof(buf))) {
okini3939 0:bdb53686c194 72 lcdconf = (enum I2CLCDConfig)atoi(buf);
okini3939 0:bdb53686c194 73 }
okini3939 0:bdb53686c194 74 lcd = new I2CLCD(i2c, I2CLCD_ADDR, lcdtype, lcdconf);
okini3939 0:bdb53686c194 75 if (lcd == NULL) return -1;
okini3939 0:bdb53686c194 76 lcd_flg = 1;
okini3939 0:bdb53686c194 77
okini3939 0:bdb53686c194 78 strncpy(leddisp_buf, VERSION, sizeof(leddisp_buf));
okini3939 0:bdb53686c194 79 }
okini3939 0:bdb53686c194 80
okini3939 0:bdb53686c194 81 if (cfg.getValue("LEDDISP_MESG", buf, sizeof(buf))) {
okini3939 0:bdb53686c194 82 leddisp = new I2CLEDDisp(i2c);
okini3939 0:bdb53686c194 83 if (leddisp == NULL) return -1;
okini3939 0:bdb53686c194 84 leddisp_flg = 1;
okini3939 0:bdb53686c194 85 }
okini3939 0:bdb53686c194 86
okini3939 0:bdb53686c194 87 #endif
okini3939 0:bdb53686c194 88 return 0;
okini3939 0:bdb53686c194 89 }