00001 #ifndef _WINC_LEV2FILE
00002 #define _WINC_LEV2FILE
00003
00004 #include <WXP/BZlib.h>
00005 #include <WXP/Date.h>
00006 #include <WXP/File.h>
00007 #include <WXP/Lev2Data.h>
00008 #include <WXP/Lev2Info.h>
00009
00010 namespace WXP {
00011 class Lev2File {
00012 File file;
00013 bool opened;
00014 Date date;
00015 int compress;
00016
00017
00018 static const int in_len = 200000;
00019 unsigned char in[in_len];
00020 int isize;
00021 int iptr;
00022 int iavail;
00023 static const int out_len = 200000;
00024 unsigned char out[out_len];
00025 int osize;
00026 int optr;
00027 int oavail;
00028 BZlib bz;
00029
00030 int blk_off;
00031 int blk_size;
00032
00033
00034 char id[10];
00035 float lat,lon;
00036 int msg_type;
00037 int scan_type;
00038 int refl_ptr;
00039 int vel_ptr;
00040 int spect_ptr;
00041 int vol_ptr;
00042 int elev_ptr;
00043 int rad_ptr;
00044 int num_refl;
00045 int num_vel;
00046
00047 float refl_size;
00048 int refl_bits;
00049 float refl_scl;
00050 float refl_off;
00051
00052 float vel_size;
00053 int vel_bits;
00054 float vel_scl;
00055 float vel_off;
00056
00057 float spect_size;
00058 int spect_bits;
00059 float spect_scl;
00060 float spect_off;
00061
00062 public:
00063 Lev2File();
00064 Lev2File( const char *filename, int rtype );
00065 ~Lev2File();
00066 int init();
00067 int open( const char *filename, int rtype );
00068 int close();
00069 bool isOpen();
00070 int readData();
00071 int readBytes( unsigned char *data, int dsize );
00072 int bseek( int byte );
00073 int boffset( int byte );
00074 int getByte();
00075 int getUByte();
00076 int getShort();
00077 int getLong();
00078 float getFloat();
00079 int setId( const char *rid );
00080 const char *getId(){ return id; };
00081 int setDataType( int type );
00082 int getNumData();
00083 int setCompress( int val );
00084 inline int getCompress(){ return compress; };
00085 int getHeader( Lev2Info &info );
00086 int getBlock( Lev2Data &data );
00087 int nextBlock();
00088 float getData();
00089
00090 bool hasRef();
00091 bool hasVel();
00092 bool hasSpect();
00093
00094 enum Type {
00095 RAW,
00096 COMP
00097 };
00098
00099 enum DataType {
00100 REF,
00101 VEL,
00102 SPECT
00103 };
00104
00105 };
00106 }
00107 #endif