00001 #ifndef _WINC_UPAWXPFILE
00002 #define _WINC_UPAWXPFILE
00003
00004 #include <WXP/Date.h>
00005 #include <WXP/File.h>
00006 #include <WXP/String.h>
00007 #include <WXP/UpaRawinData.h>
00008
00009 namespace WXP {
00010 class UpaWxpFile {
00011 int type;
00012 int ver;
00013 int access;
00014 long pos;
00015 int cnt;
00016 File file;
00017
00018 char date_str[40];
00019 Date date;
00020 bool opened;
00021
00022 public:
00023
00024 UpaWxpFile( );
00025 UpaWxpFile( const char *filename );
00026 UpaWxpFile( const char *filename, int access );
00027 ~UpaWxpFile( );
00028
00029 int init();
00030 int open( const char *filename, int access );
00031 int getDate( Date &rdate );
00032 int setDate( Date &rdate );
00033 inline bool isOpen(){ return opened; };
00034 int rewind( );
00035 int close( );
00036 int read( UpaRawinData &data );
00037 int readId( String &rid );
00038 Date getDate();
00039 const char *getDatestr();
00040 int write( UpaRawinData &data );
00041
00042 static int checkType( const char *filename );
00043 static int decodePH( const char *str, float &pres, float &hght );
00044 static int decodeTD( const char *str, float &temp, float &dewpt );
00045 static int decodeWD( const char *str, float &dir, float &spd );
00046 static int encodePH( float pres, float hght, char *str );
00047 static int encodeTD( float temp, float dewpt, char *str );
00048 static int encodeWD( float dir, float spd, char *str );
00049 };
00050 }
00051 #endif
00052