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

Dependencies:   EthernetNetIf SDHCFileSystem I2CLEDDisp Agentbed NTPClient_NetServices mbed BMP085 HTTPClient ConfigFile I2CLCD

Committer:
okini3939
Date:
Fri Jun 03 15:38:22 2011 +0000
Revision:
19:69b77f9e0446
Parent:
18:9286e5010c14

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
okini3939 18:9286e5010c14 1 /** @file
okini3939 18:9286e5010c14 2 * @brief mbed Weather Platform
okini3939 18:9286e5010c14 3 */
okini3939 18:9286e5010c14 4 #include "mbed.h"
okini3939 18:9286e5010c14 5 #include "EthernetNetIf.h"
okini3939 18:9286e5010c14 6 #include "I2CLEDDisp.h"
okini3939 18:9286e5010c14 7 #include "I2CLCD.h"
okini3939 18:9286e5010c14 8 #include "Agentbed.h"
okini3939 18:9286e5010c14 9 #include "NTPClient.h"
okini3939 18:9286e5010c14 10 #include "HTTPClient.h"
okini3939 18:9286e5010c14 11
okini3939 18:9286e5010c14 12 #define DEBUG
okini3939 18:9286e5010c14 13
okini3939 18:9286e5010c14 14 #define CONFIG_FILE "weather.cfg"
okini3939 18:9286e5010c14 15 #define ACTION_FILE "weather.asm"
okini3939 18:9286e5010c14 16
okini3939 18:9286e5010c14 17 #define CF_MAXLEN_VALUE 128
okini3939 18:9286e5010c14 18 #define CF_ACTION_NUM 100
okini3939 18:9286e5010c14 19 #define CF_TWITTER_NUM 5
okini3939 18:9286e5010c14 20
okini3939 18:9286e5010c14 21 #define INPUT_NUM 2
okini3939 19:69b77f9e0446 22 #define OUTPUT_NUM 10
okini3939 19:69b77f9e0446 23 #define TIMER_NUM 10
okini3939 19:69b77f9e0446 24 #define COUNTER_NUM 10
okini3939 18:9286e5010c14 25
okini3939 18:9286e5010c14 26 #define LED_FREQ 4 // x 0.1s
okini3939 18:9286e5010c14 27
okini3939 18:9286e5010c14 28 enum eMNEMONIC {
okini3939 18:9286e5010c14 29 MNE_NULL,
okini3939 19:69b77f9e0446 30 MNE_DEF,
okini3939 18:9286e5010c14 31 MNE_LD, MNE_LDI, MNE_LDP, MNE_LDF,
okini3939 18:9286e5010c14 32 MNE_ALD, MNE_ALDI, MNE_ALDP, MNE_ALDF,
okini3939 18:9286e5010c14 33 MNE_OR, MNE_ORI, MNE_ORP, MNE_ORF,
okini3939 18:9286e5010c14 34 MNE_AND, MNE_ANI, MNE_ANDP, MNE_ANDF,
okini3939 18:9286e5010c14 35 MNE_ORB, MNE_ANB,
okini3939 18:9286e5010c14 36 MNE_INV,
okini3939 18:9286e5010c14 37 MNE_MPS, MNE_MRD, MNE_MPP,
okini3939 18:9286e5010c14 38 MNE_OUT, MNE_SET, MNE_RST,
okini3939 18:9286e5010c14 39 MNE_END,
okini3939 18:9286e5010c14 40 };
okini3939 18:9286e5010c14 41
okini3939 18:9286e5010c14 42 enum eEXPRESSION {
okini3939 18:9286e5010c14 43 EXP_NULL,
okini3939 18:9286e5010c14 44 EXP_EQ, EXP_NE,
okini3939 18:9286e5010c14 45 EXP_LE, EXP_LT,
okini3939 18:9286e5010c14 46 EXP_GE, EXP_GT,
okini3939 18:9286e5010c14 47 EXP_MOD, EXP_NMOD,
okini3939 18:9286e5010c14 48 };
okini3939 18:9286e5010c14 49
okini3939 18:9286e5010c14 50 enum eINPUTTYPE {
okini3939 18:9286e5010c14 51 INPUT_MOIST = 0,
okini3939 18:9286e5010c14 52 INPUT_FALL = 1,
okini3939 18:9286e5010c14 53 INPUT_RISE = 2,
okini3939 18:9286e5010c14 54 INPUT_CPM = 4,
okini3939 18:9286e5010c14 55 };
okini3939 18:9286e5010c14 56
okini3939 18:9286e5010c14 57 struct tAction {
okini3939 18:9286e5010c14 58 enum eMNEMONIC mnemonic;
okini3939 18:9286e5010c14 59 char key;
okini3939 18:9286e5010c14 60 int keynum;
okini3939 18:9286e5010c14 61 enum eEXPRESSION expression;
okini3939 18:9286e5010c14 62 float value;
okini3939 18:9286e5010c14 63 };
okini3939 18:9286e5010c14 64
okini3939 18:9286e5010c14 65 struct Sensor {
okini3939 18:9286e5010c14 66 float pres, temp, humi, light, anemo, vane, rain, uv, moist, temp2;
okini3939 18:9286e5010c14 67 time_t sec;
okini3939 19:69b77f9e0446 68 int input[INPUT_NUM], output[OUTPUT_NUM];
okini3939 19:69b77f9e0446 69 int timer_flg[TIMER_NUM];
okini3939 19:69b77f9e0446 70 unsigned int timer_set[TIMER_NUM], timer_cnt[TIMER_NUM];
okini3939 19:69b77f9e0446 71 unsigned int count_set[COUNTER_NUM], count_cnt[COUNTER_NUM], count_rev[COUNTER_NUM];
okini3939 18:9286e5010c14 72 };
okini3939 18:9286e5010c14 73
okini3939 18:9286e5010c14 74 struct Config {
okini3939 18:9286e5010c14 75 int interval;
okini3939 18:9286e5010c14 76 IpAddr ipaddr, netmask, gateway, nameserver;
okini3939 18:9286e5010c14 77 char ntpserver[32];
okini3939 18:9286e5010c14 78 int filetype, actionscount;
okini3939 18:9286e5010c14 79 struct tAction actions[CF_ACTION_NUM];
okini3939 18:9286e5010c14 80 char pachube_apikey[70], pachube_feedid[8];
okini3939 18:9286e5010c14 81 char twitter_user[30], twitter_pwd[30], twitter_mesg[CF_TWITTER_NUM][CF_MAXLEN_VALUE];
okini3939 18:9286e5010c14 82 char stations_id[8], stations_pin[34];
okini3939 18:9286e5010c14 83 char snmp_commname[30];
okini3939 18:9286e5010c14 84 char lcd_mesg[CF_MAXLEN_VALUE];
okini3939 18:9286e5010c14 85 enum I2CLCDType lcdtype;
okini3939 18:9286e5010c14 86 enum I2CLCDConfig lcdconf;
okini3939 18:9286e5010c14 87 char leddisp_mesg[CF_MAXLEN_VALUE];
okini3939 18:9286e5010c14 88 enum eINPUTTYPE inputtype;
okini3939 18:9286e5010c14 89 };
okini3939 18:9286e5010c14 90
okini3939 18:9286e5010c14 91
okini3939 18:9286e5010c14 92 extern char filename[];
okini3939 18:9286e5010c14 93 extern char csv[];
okini3939 18:9286e5010c14 94 extern AgentbedClass Agentbed;
okini3939 18:9286e5010c14 95 extern volatile uint32_t locUpTime;
okini3939 18:9286e5010c14 96 extern Serial xbee;
okini3939 18:9286e5010c14 97 extern Config conf;
okini3939 18:9286e5010c14 98 extern Sensor sensor, offset, sensor_old;
okini3939 18:9286e5010c14 99 extern Serial pc;
okini3939 18:9286e5010c14 100 extern volatile int seq;
okini3939 18:9286e5010c14 101 extern DigitalOut led1, led2, led3, led4;
okini3939 18:9286e5010c14 102 extern AnalogIn *aimoist;
okini3939 18:9286e5010c14 103 extern DigitalIn swin2;
okini3939 18:9286e5010c14 104 extern DigitalOut swout1, swout2;
okini3939 18:9286e5010c14 105 extern EthernetNetIf *eth;
okini3939 18:9286e5010c14 106 extern NTPClient *ntp;
okini3939 18:9286e5010c14 107 extern HTTPClient *clientP, *clientT;
okini3939 18:9286e5010c14 108 extern DigitalOut led_g2, led_g, led_y;
okini3939 18:9286e5010c14 109
okini3939 18:9286e5010c14 110
okini3939 18:9286e5010c14 111 int config (char *);
okini3939 18:9286e5010c14 112 void writefile (char *);
okini3939 18:9286e5010c14 113 void pachube (char *);
okini3939 18:9286e5010c14 114 char *fmtstr (char *, char *, int);
okini3939 18:9286e5010c14 115 void twitter (int);
okini3939 18:9286e5010c14 116 void weatherstations ();
okini3939 18:9286e5010c14 117 void ntpdate ();
okini3939 18:9286e5010c14 118 int check_action (char);
okini3939 18:9286e5010c14 119 void pduReceived ();
okini3939 18:9286e5010c14 120 void int_counter();
okini3939 18:9286e5010c14 121 int action(char);
okini3939 18:9286e5010c14 122 void load_action (char *);
okini3939 18:9286e5010c14 123