Receive GPS by interrupt processing

Dependents:   Sample_GPS_INT_lib GPS-SD

Committer:
j_rocket_boy
Date:
Wed Jul 11 16:26:59 2018 +0000
Revision:
9:9d9e62cebda8
Parent:
8:89ce49e16fd7
modify license year

Who changed what in which revision?

UserRevisionLine numberNew contents of line
j_rocket_boy 1:fbe835e114bb 1 // -*- coding: utf-8 -*-
j_rocket_boy 1:fbe835e114bb 2 /**
j_rocket_boy 1:fbe835e114bb 3 @file GPS_INT.h
j_rocket_boy 1:fbe835e114bb 4 @brief Recieve GPS using Interrupt
j_rocket_boy 7:e711cc30a2ec 5
j_rocket_boy 1:fbe835e114bb 6
j_rocket_boy 1:fbe835e114bb 7 @author D.Nakayama
j_rocket_boy 1:fbe835e114bb 8 @version 1.0
j_rocket_boy 1:fbe835e114bb 9 @date 2018-07-08 D.Nakayama Written for C++/mbed.
j_rocket_boy 1:fbe835e114bb 10
j_rocket_boy 1:fbe835e114bb 11
j_rocket_boy 1:fbe835e114bb 12 @see
j_rocket_boy 9:9d9e62cebda8 13 Copyright (C) 2018 D.Nakayama.
j_rocket_boy 1:fbe835e114bb 14 Released under the MIT license.
j_rocket_boy 1:fbe835e114bb 15 http://opensource.org/licenses/mit-license.php
j_rocket_boy 1:fbe835e114bb 16
j_rocket_boy 0:4b6c377342d9 17 */
j_rocket_boy 0:4b6c377342d9 18
j_rocket_boy 0:4b6c377342d9 19 #ifndef INCLUDED_GPS_INT_h_
j_rocket_boy 0:4b6c377342d9 20 #define INCLUDED_GPS_INT_h_
j_rocket_boy 0:4b6c377342d9 21 #include "mbed.h"
j_rocket_boy 0:4b6c377342d9 22
j_rocket_boy 1:fbe835e114bb 23 /**
j_rocket_boy 1:fbe835e114bb 24 @class GPS_INT
j_rocket_boy 5:fa6444c4dc0e 25 @brief "Recieve GPS class" using Interrupt
j_rocket_boy 7:e711cc30a2ec 26 @attention Since it is received by interrupt processing, another work can be done in the main loop.
j_rocket_boy 7:e711cc30a2ec 27 @attention Examples of character strings sent from the GPS sent by UART
j_rocket_boy 7:e711cc30a2ec 28 @attention $GPGGA,085120.307,3541.1493,N,13945.3994,E,1,08,1.0,6.9,M,35.9,M,,0000*5E
j_rocket_boy 7:e711cc30a2ec 29 @attention $GPGSA,A,3,29,26,05,10,02,27,08,15,,,,,1.8,1.0,1.5*3E
j_rocket_boy 7:e711cc30a2ec 30 @attention $GPRMC,085120.307,A,3541.1493,N,13945.3994,E,000.0,240.3,181211,,,A*6A
j_rocket_boy 7:e711cc30a2ec 31 @attention check board : NUCLEO-F103RB, LPC1768
j_rocket_boy 7:e711cc30a2ec 32 @attention check device : GMS7-CR6(SIRF-IV)
j_rocket_boy 7:e711cc30a2ec 33 */
j_rocket_boy 0:4b6c377342d9 34 class GPS_INT{
j_rocket_boy 0:4b6c377342d9 35 public:
j_rocket_boy 0:4b6c377342d9 36
j_rocket_boy 0:4b6c377342d9 37 //コンストラクタ
j_rocket_boy 1:fbe835e114bb 38 /**
j_rocket_boy 1:fbe835e114bb 39 @brief Create a new gps(UART).
j_rocket_boy 8:89ce49e16fd7 40 @param tx Tx pin name (Defined in PinName.h)
j_rocket_boy 8:89ce49e16fd7 41 @param rx Rx pin name (Defined in PinName.h)
j_rocket_boy 1:fbe835e114bb 42 @param baudrate Baudrate (ex: 4800). Default value is 9600.
j_rocket_boy 1:fbe835e114bb 43 */
j_rocket_boy 0:4b6c377342d9 44 GPS_INT(PinName tx, PinName rx, int baud = 9600);
j_rocket_boy 0:4b6c377342d9 45 //デストラクタ
j_rocket_boy 1:fbe835e114bb 46 /**
j_rocket_boy 1:fbe835e114bb 47 @brief Disable the gps Port.
j_rocket_boy 1:fbe835e114bb 48 @param No parameters.
j_rocket_boy 1:fbe835e114bb 49 */
j_rocket_boy 0:4b6c377342d9 50 virtual ~GPS_INT();
j_rocket_boy 2:0af5025cd632 51 /**
j_rocket_boy 2:0af5025cd632 52 @brief Whether location information has been updated.
j_rocket_boy 2:0af5025cd632 53 @param No parameters.
j_rocket_boy 2:0af5025cd632 54 */
j_rocket_boy 0:4b6c377342d9 55 bool location_is_update(void); //位置情報が更新されたか(緯度,経度,DOP)
j_rocket_boy 2:0af5025cd632 56 /**
j_rocket_boy 2:0af5025cd632 57 @brief Whether all infomation has been updated.
j_rocket_boy 2:0af5025cd632 58 @param No parameters.
j_rocket_boy 2:0af5025cd632 59 */
j_rocket_boy 5:fa6444c4dc0e 60 bool info_is_update(void); //すべての情報が更新されたか
j_rocket_boy 2:0af5025cd632 61 /**
j_rocket_boy 2:0af5025cd632 62 @brief Whether GPS is lock.
j_rocket_boy 2:0af5025cd632 63 @param No parameters.
j_rocket_boy 2:0af5025cd632 64 */
j_rocket_boy 0:4b6c377342d9 65 bool is_lock(void); //GPSがロックしたか
j_rocket_boy 0:4b6c377342d9 66
j_rocket_boy 0:4b6c377342d9 67 //受信する情報
j_rocket_boy 4:f143c5f105cd 68 /**
j_rocket_boy 4:f143c5f105cd 69 @brief UTC
j_rocket_boy 4:f143c5f105cd 70 */
j_rocket_boy 0:4b6c377342d9 71 struct tm t; //時刻UTC
j_rocket_boy 4:f143c5f105cd 72 /**
j_rocket_boy 4:f143c5f105cd 73 @brief UTC Elapsed seconds since January 1, 1900
j_rocket_boy 4:f143c5f105cd 74 */
j_rocket_boy 0:4b6c377342d9 75 time_t seconds; //時刻(UTC1900年1月1日からの経過時間)
j_rocket_boy 4:f143c5f105cd 76 /**
j_rocket_boy 4:f143c5f105cd 77 @brief Longitude
j_rocket_boy 4:f143c5f105cd 78 */
j_rocket_boy 0:4b6c377342d9 79 double lon; //緯度, 度(北緯が正)
j_rocket_boy 4:f143c5f105cd 80 /**
j_rocket_boy 4:f143c5f105cd 81 @brief Latitude
j_rocket_boy 4:f143c5f105cd 82 */
j_rocket_boy 0:4b6c377342d9 83 double lat; //経度, 度(東経が正)
j_rocket_boy 4:f143c5f105cd 84 /**
j_rocket_boy 4:f143c5f105cd 85 @brief Location specific quality (0: Can not locate, 1: SPS (standard positioning service), 2: differencial GPS)
j_rocket_boy 4:f143c5f105cd 86 */
j_rocket_boy 0:4b6c377342d9 87 volatile int lock; //位置特定品質(0:位置特定できない, 1:SPS(標準測位サービス), 2:differencial GPS)
j_rocket_boy 4:f143c5f105cd 88 /**
j_rocket_boy 4:f143c5f105cd 89 @brief Number of satellites used
j_rocket_boy 4:f143c5f105cd 90 */
j_rocket_boy 0:4b6c377342d9 91 int n_sat; //使用衛星数
j_rocket_boy 4:f143c5f105cd 92 /**
j_rocket_boy 4:f143c5f105cd 93 @brief Horizontal Dilution Of Precision
j_rocket_boy 4:f143c5f105cd 94 */
j_rocket_boy 0:4b6c377342d9 95 float HDOP; //水平精度低下率
j_rocket_boy 4:f143c5f105cd 96 /**
j_rocket_boy 4:f143c5f105cd 97 @brief Vertical Dilution Of Precision
j_rocket_boy 4:f143c5f105cd 98 */
j_rocket_boy 0:4b6c377342d9 99 float VDOP; //垂直精度低下率
j_rocket_boy 4:f143c5f105cd 100 /**
j_rocket_boy 4:f143c5f105cd 101 @brief Position Dilution Of Precision
j_rocket_boy 4:f143c5f105cd 102 */
j_rocket_boy 0:4b6c377342d9 103 float PDOP; //位置精度低下率
j_rocket_boy 4:f143c5f105cd 104 /**
j_rocket_boy 4:f143c5f105cd 105 @brief Antenna sea level height, m
j_rocket_boy 4:f143c5f105cd 106 */
j_rocket_boy 0:4b6c377342d9 107 float h_see; //アンテナ海抜高さ, m
j_rocket_boy 4:f143c5f105cd 108 /**
j_rocket_boy 4:f143c5f105cd 109 @brief Geoid height, m
j_rocket_boy 4:f143c5f105cd 110 */
j_rocket_boy 0:4b6c377342d9 111 float h_geo; //ジオイド高さ, m
j_rocket_boy 0:4b6c377342d9 112
j_rocket_boy 0:4b6c377342d9 113 private:
j_rocket_boy 0:4b6c377342d9 114 Serial gps;
j_rocket_boy 0:4b6c377342d9 115 bool location_update;
j_rocket_boy 0:4b6c377342d9 116 bool info_update;
j_rocket_boy 0:4b6c377342d9 117 int date_raw; //UTC 日付生データ
j_rocket_boy 0:4b6c377342d9 118 float time_raw; //UTC 時刻生データ
j_rocket_boy 0:4b6c377342d9 119
j_rocket_boy 0:4b6c377342d9 120 double lon_raw; //緯度生データ
j_rocket_boy 0:4b6c377342d9 121 int lon_int; //緯度整数部
j_rocket_boy 0:4b6c377342d9 122 double lon_minute; //緯度分
j_rocket_boy 0:4b6c377342d9 123 char ns; //北緯or南緯
j_rocket_boy 0:4b6c377342d9 124
j_rocket_boy 0:4b6c377342d9 125 double lat_raw; //経度生データ
j_rocket_boy 0:4b6c377342d9 126 int lat_int; //経度整数部
j_rocket_boy 0:4b6c377342d9 127 double lat_minute; //経度分
j_rocket_boy 0:4b6c377342d9 128 char ew; //東経or西経
j_rocket_boy 0:4b6c377342d9 129
j_rocket_boy 0:4b6c377342d9 130 void get_char(void);
j_rocket_boy 0:4b6c377342d9 131 void gps_update(char* buffer);
j_rocket_boy 0:4b6c377342d9 132 };
j_rocket_boy 0:4b6c377342d9 133
j_rocket_boy 0:4b6c377342d9 134 #endif