Receive GPS by interrupt processing
Dependents: Sample_GPS_INT_lib GPS-SD
GPS_INT.h@9:9d9e62cebda8, 2018-07-11 (annotated)
- 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?
User | Revision | Line number | New 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 |