struct current_weather {
    time_t last_update;
    int month;          /* 0,    1 - 12 */
    int date;           /* -1,   1 - 31 (GMT) */
    short time;         /* -1,   0000 - 2359 */
    short temp;         /* 999,  -210 - 390 (degrees C) */
    signed char rh;     /* -1,   0 - 100 (%) */
    short winddir;      /* -1,   0 - 16 (direction) */
    short windspeed;    /* -1,   0 - MAX (knots) */
    float pressure;     /* -1,   0 - MAX (inHg) */
    short heatindex;    /* 999,  -99 - 199 (degrees F) */
    short windchill;    /* 999,  -99 - 199 (degrees F) */
    signed char sky;    /* -1,   0-4 (condition) */
    signed char vis;    /* 7,    1-7 (status code) */
    signed char obs;    /* 0,    0-3 (type) */
    signed char frz;    /* 0,    0, 33, 66, 99 (intensity) */
    signed char snow;   /* 0,    0, 33, 66, 99 (intensity) */
    signed char rain;   /* 0,    0, 33, 66, 99 (intensity) */
    signed char tstorm; /* 0,    0, 33, 66, 99 (intensity) */
    double moon;        /* NAN,  -1 - 1 (percent and wax/wane) */
};

extern struct current_weather current;

void init_metar(void);
void update_metar(int force);
void metar_cleanup(void);