Files
FireBee_Setup/sources/z-tools/trunk/zweather/get_data.c

207 lines
4.0 KiB
C
Raw Blame History

#include "general.h"
#include "get_data.h"
int8 dummy[2] = "0";
int8 *get_data_uv(struct xml_uv *data, enum datas_uv type)
{
int8 *str = dummy;
if ( !data)
return str;
switch(type)
{
case _UV_INDEX: str = data->i; break;
case _UV_TRANS: str = data->t; break;
default: break;
}
return str;
}
int8 *get_data_bar(struct xml_bar *data, enum datas_bar type)
{
int8 *str = dummy;
if ( !data)
return str;
switch(type)
{
case _BAR_R: str = data->r; break;
case _BAR_D: str = data->d; break;
default: break;
}
return str;
}
int8 *get_data_wind(struct xml_wind *data, enum datas_wind type)
{
int8 *str = dummy;
if ( !data)
return str;
switch(type)
{
case _WIND_SPEED: str = data->s; break;
case _WIND_GUST: str = data->gust; break;
case _WIND_DIRECTION: str = data->t; break;
case _WIND_TRANS: str = data->d; break;
default: break;
}
return str;
}
int8 *get_data_cc( struct xml_cc *data, enum datas type)
{
int8 *str = dummy;
if ( !data)
return str;
switch(type)
{
case LSUP: str = data->lsup; break;
case OBST: str = data->obst; break;
case FLIK: str = data->flik; break;
case TRANS: str = data->t; break;
case TEMP: str = data->tmp; break;
case HMID: str = data->hmid; break;
case VIS: str = data->vis; break;
case UV_INDEX: return get_data_uv(data->uv, _UV_INDEX);
case UV_TRANS: return get_data_uv(data->uv, _UV_TRANS);
case WIND_SPEED: return get_data_wind(data->wind, _WIND_SPEED);
case WIND_GUST: return get_data_wind(data->wind, _WIND_GUST);
case WIND_DIRECTION: return get_data_wind(data->wind, _WIND_DIRECTION);
case WIND_TRANS: return get_data_wind(data->wind, _WIND_TRANS);
case BAR_R: return get_data_bar(data->bar, _BAR_R);
case BAR_D: return get_data_bar(data->bar, _BAR_D);
case DEWP: str = data->dewp; break;
case WICON: str = data->icon; break;
default: break;
}
return str;
}
int8 *get_data_loc(struct xml_loc *data, enum datas_loc type)
{
int8 *str = dummy;
if ( !data)
return str;
switch(type)
{
case DNAM: str = data->dnam; break;
case SUNR: str = data->sunr; break;
case SUNS: str = data->suns; break;
default: break;
}
return str;
}
const int8 *get_data(struct xml_weather *data, enum datas type)
{
int8 *str = dummy;
if( data)
{
switch (type & 0xFF00)
{
case DATAS_CC: str = get_data_cc(data->cc, type); break;
case DATAS_LOC: str = get_data_loc(data->loc, type); break;
default: break;
}
}
return str;
}
int8 *get_data_part(struct xml_part *data, enum forecast type)
{
int8 *str = dummy;
if ( !data)
return str;
switch (type & 0x000F)
{
case F_ICON: str = data->icon; break;
case F_TRANS: str = data->t; break;
case F_PPCP: str = data->ppcp; break;
case F_W_SPEED: str = get_data_wind(data->wind, _WIND_SPEED); break;
case F_W_DIRECTION: str = get_data_wind(data->wind, _WIND_DIRECTION); break;
default: break;
}
return str;
}
const int8 *get_data_f(struct xml_dayf *data, enum forecast type)
{
int8 *str = dummy;
if (data)
{
switch (type & 0x0F00)
{
case ITEMS:
switch(type)
{
case WDAY: str = data->day; break;
case TEMP_MIN: str = data->low; break;
case TEMP_MAX: str = data->hi; break;
default: break;
}
break;
case NPART: str = get_data_part(data->part[1], type); break;
case DPART: str = get_data_part(data->part[0], type); break;
}
}
return str;
}
const int8 *get_unit( int myunit, enum datas type)
{
int8 *str = dummy;
switch (type & 0x00F0)
{
case 0x0020: str = (myunit == WEATHER_METRIC ? "<EFBFBD> C" : "<EFBFBD> F"); break;
case 0x0030: str = "%"; break;
case 0x0040: str = (myunit == WEATHER_METRIC ? "km/h" : "mph"); break;
case 0x0050: str = (myunit == WEATHER_METRIC ? "mb" : "in"); break;
default: break;
}
return str;
}
const int8 *get_lnks(struct xml_lnks *lnks, enum link type, int num)
{
int8* str = "";
if( !lnks || num >= XML_WEATHER_LINK_N)
return str;
switch (type)
{
case LINK:
str = lnks->l[num];
case TEXT:
str = lnks->t[num];
default:
break;
}
return str;
}