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

weather.h

Committer:
okini3939
Date:
2011-05-31
Revision:
18:9286e5010c14
Child:
19:69b77f9e0446

File content as of revision 18:9286e5010c14:

/** @file
 * @brief mbed Weather Platform
 */
#include "mbed.h"
#include "EthernetNetIf.h"
#include "I2CLEDDisp.h"
#include "I2CLCD.h"
#include "Agentbed.h"
#include "NTPClient.h"
#include "HTTPClient.h"

#define DEBUG

#define CONFIG_FILE "weather.cfg"
#define ACTION_FILE "weather.asm"

#define CF_MAXLEN_VALUE 128
#define CF_ACTION_NUM 100
#define CF_TWITTER_NUM 5

#define INPUT_NUM 2
#define OUTPUT_NUM 4
#define TIMER_NUM 4
#define COUNTER_NUM 4

#define LED_FREQ 4 // x 0.1s

enum eMNEMONIC {
    MNE_NULL,
    MNE_LD, MNE_LDI, MNE_LDP, MNE_LDF,
    MNE_ALD, MNE_ALDI, MNE_ALDP, MNE_ALDF,
    MNE_OR, MNE_ORI, MNE_ORP, MNE_ORF,
    MNE_AND, MNE_ANI, MNE_ANDP, MNE_ANDF,
    MNE_ORB, MNE_ANB,
    MNE_INV,
    MNE_MPS, MNE_MRD, MNE_MPP,
    MNE_OUT, MNE_SET, MNE_RST,
    MNE_END,
};

enum eEXPRESSION {
    EXP_NULL,
    EXP_EQ, EXP_NE,
    EXP_LE, EXP_LT,
    EXP_GE, EXP_GT,
    EXP_MOD, EXP_NMOD,
};

enum eINPUTTYPE {
    INPUT_MOIST = 0,
    INPUT_FALL = 1,
    INPUT_RISE = 2,
    INPUT_CPM = 4,
};

struct tAction {
    enum eMNEMONIC mnemonic;
    char key;
    int keynum;
    enum eEXPRESSION expression;
    float value;
};

struct Sensor {
    float pres, temp, humi, light, anemo, vane, rain, uv, moist, temp2;
    time_t sec;
    int input[INPUT_NUM], output[OUTPUT_NUM], timer_flg[TIMER_NUM];
    unsigned long timer_cnt[TIMER_NUM];
    unsigned long count[COUNTER_NUM];
};

struct Config {
    int interval;
    IpAddr ipaddr, netmask, gateway, nameserver;
    char ntpserver[32];
    int filetype, actionscount;
    struct tAction actions[CF_ACTION_NUM];
    char pachube_apikey[70], pachube_feedid[8];
    char twitter_user[30], twitter_pwd[30], twitter_mesg[CF_TWITTER_NUM][CF_MAXLEN_VALUE];
    char stations_id[8], stations_pin[34];
    char snmp_commname[30];
    char lcd_mesg[CF_MAXLEN_VALUE];
    enum I2CLCDType lcdtype;
    enum I2CLCDConfig lcdconf;
    char leddisp_mesg[CF_MAXLEN_VALUE];
    enum eINPUTTYPE inputtype;
};


extern char filename[];
extern char csv[];
extern AgentbedClass Agentbed;
extern volatile uint32_t locUpTime;
extern Serial xbee;
extern Config conf;
extern Sensor sensor, offset, sensor_old;
extern Serial pc;
extern volatile int seq;
extern DigitalOut led1, led2, led3, led4;
extern AnalogIn *aimoist;
extern DigitalIn swin2;
extern DigitalOut swout1, swout2;
extern EthernetNetIf *eth; 
extern NTPClient *ntp;
extern HTTPClient *clientP, *clientT;
extern DigitalOut led_g2, led_g, led_y;


int config (char *);
void writefile (char *);
void pachube (char *);
char *fmtstr (char *, char *, int);
void twitter (int);
void weatherstations ();
void ntpdate ();
int check_action (char);
void pduReceived ();
void int_counter();
int action(char);
void load_action (char *);