#ifndef _RINEXBASE_H_
#define _RINEXBASE_H_

#include "navi/navicommon.h"

class RnxBase {
public:
    RnxBase();
    virtual ~RnxBase();

public: // main function
    /*********************************************
     * decode rinex files
     * @param   infile [in]    rinex files
    **********************************************/
    virtual int decode(char* infiles) { }

public: // set function
    /******************************************
     * init observations
     * @param   sitenum [in]    number of site
    ******************************************/
    void setsites(int sitenum);

public: // get functions
    virtual obs* GetObs();
    virtual nav* GetEph();

public: // tools
    /*********************************************
     * read rinex version
     * @param   infile  [in]    input file
     * @return  rinex version in string
    *********************************************/
    string readver(char* infile);

protected:
    int             _nistes;        //  site number
    rnxopt          _rnxopt;        //  rinex options
    obs*            _obss;          //  observations
    nav*            _eph;           //  ephemeris

protected:
    // code, carrier phase, doppler, signal strength
    const char* _obstype = OBSTYPE;
    const char* _mode = TRACKMODE;
    const char* _sys = SYSTEMS;
};

#endif  // _RINEXBASE_H_