2017年伊豆大島共同打ち上げ実験用電装モジュール搭載GPS測位プログラム

Dependents:   Hybrid_interruptGPS Hybrid_main_FirstEdtion rocket_logger_sinkan2018_v1 HYBRYD2018_IZU_ROCKET ... more

GPS_interrupt.h

Committer:
Gaku0606
Date:
2017-01-02
Revision:
0:74d8e952a3bd
Child:
1:57eeee14dd31

File content as of revision 0:74d8e952a3bd:

/*=============================================================================
*   GPS_interrupt.lib ver 1.0.3
*   
*=============================================================================*/
#ifndef GPS_INTERRUPT_H_
#define GPS_INTERRUPT_H_

#include "mbed.h"


class GPS_interrupt{
  
    public:
        GPS_interrupt(RawSerial *_gps, int baudrate = 9600);
        static GPS_interrupt* gps_irq;
        void initialize();//初期化関数
        void gps_auto_receive();
        bool processGPS(char *line);
      
        
    public:
        static double latitude;
        static double longitude;
        static int year;
        static int month;
        static int day;
        static int hour;
        static int minutes;
        static double seconds;
        static double knot;
        static double degree;
        static double height;
        static double geoid;
        static int number;
        
        static char gps_buffer_A[128];
        static char gps_buffer_B[128];
        static char *gps_read_buffer;
        static bool gps_readable;
    private:
        RawSerial *gps;
    public:
        inline double Longitude(){
            return longitude;
        }
        inline double Latitude(){
            return latitude;
        }
        inline int Year(){
            return year;
        }
        inline int Month(){
            return month;
        }
        inline int Day(){
            return day;
        }
        inline int Hour(){
            return hour;   
        }
        inline int Minutes(){
            return minutes;
        }
        inline double Seconds(){
            return seconds;   
        }
        inline void getPosition(double *lon, double *lat){
            *lon = longitude;
            *lat = latitude;   
        }
        inline void getPosition(double *lonlat){
            lonlat[0] = longitude;
            lonlat[1] = latitude;   
        }
        inline void getUTC(int *_year, int *_month, int *_day, int *_hour, int *_minutes, double *_seconds){
            *_year = year;
            *_month = month;
            *_day = day;
            *_hour = hour;
            *_minutes = minutes;
            *_seconds = seconds;    
        }
        inline void getUTC(float *_utc){
            _utc[0] = (float)year;
            _utc[1] = (float)month;
            _utc[2] = (float)day;
            _utc[3] = (float)hour;
            _utc[4] = (float)minutes;
            _utc[5] = seconds;
        }
        inline void getUTC(int *_utc){
            _utc[0] = year;
            _utc[1] = month;
            _utc[2] = day;
            _utc[3] = hour;
            _utc[4] = minutes;
            _utc[5] = (int)seconds;
        }
};

#endif