Receive GPS by interrupt processing

Dependents:   Sample_GPS_INT_lib GPS-SD

Committer:
j_rocket_boy
Date:
Sun Jul 08 10:23:32 2018 +0000
Revision:
5:fa6444c4dc0e
Parent:
4:f143c5f105cd
Child:
6:d043a24f7581
add detailed brief

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