-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathPSCS_GPS.cpp
More file actions
132 lines (121 loc) · 3.02 KB
/
PSCS_GPS.cpp
File metadata and controls
132 lines (121 loc) · 3.02 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
/**
* @file PSCS_GPS.cpp
* @author SeungMin Shin, Haneulbit Kim, Chan Lee
* @license This project is released under the MIT License (MIT)
* @copyright Copyright (c) 2018 Asgardia
* @date June 2018
* @brief ...
*/
#include "PSCS_GPS.h"
#include "CansatGPS.h"
TskGps::TskGPS()
{
}
void TskGps::begin()
{
_manager_gps.gpsBegin();
_gps_data_flag=false;
}
void TskGps::update()
{
if(_manager_gps.isGpsDataReady()){
_manager_gps.readGpsData();
_last_gps_time_ms=_manager_gps.time;
_gps_data_flag=true;
}
}
int32_t TskGps::getTime()
{
return((int32_t)_manager_gps.time);
}
int32_t TskGps::getDate()
{
return(_manager_gps.date);
}
uint8_t TskGps::getNumOfSatellites()
{
return (_manager_gps.num_satellites);
}
LocationInfo TskGps::getLocation()
{
LocationInfo location;
location.alt=_manager_gps.alt;
location.lat=_manager_gps.lat;
location.lng=_manager_gps.lng;
location.speed=_manager_gps.ground_speed;
location.course=_manager_gps.ground_course;
return(location);
}
bool TskGps::isGpsDataNew()
{
if(_gps_data_flag){
_gps_data_flag=false;
return(true);
}else{
return(false);
}
}
void TskGps::rx_empty(){
_manager_gps.rx_empty();
}
void TskGps::printGpsInfo()
{
Serial.println(F("** GPS Info **"));
Serial.print(F("date="));
Serial.println(_manager_gps.date);
Serial.print(F("time="));
Serial.println(_manager_gps.time);
Serial.print(F("lat="));
Serial.println(_manager_gps.lat,7);
Serial.print(F("lng="));
Serial.println(_manager_gps.lng,7);
Serial.print(F("alt="));
Serial.println(_manager_gps.alt);
Serial.print(F("nsat="));
Serial.println(_manager_gps.num_satellites);
Serial.print(F("spd="));
Serial.println(_manager_gps.ground_speed);
Serial.print(F("crs="));
Serial.println(_manager_gps.ground_course);
}
void TskGps::printGpsInfoSimple()
{
Serial.println(F("** GPS Info **"));
Serial.print(F("time="));
Serial.println(_manager_gps.time);
Serial.print(F("lat="));
Serial.println(_manager_gps.lat,7);
Serial.print(F("lng="));
Serial.println(_manager_gps.lng,7);
Serial.print(F("alt="));
Serial.println(_manager_gps.alt);
}
void MngGps::readGpsData()
{
time=cansatGPS.time()/100.;
date=cansatGPS.date();
ground_speed=cansatGPS.ground_speed_ms(); ///< ground speed in m/sec
ground_course=cansatGPS.ground_course(); //< ground course in degrees
num_satellites=cansatGPS.num_sats(); //< Number of visible satellites
alt=cansatGPS.location().alt/100.; //Altitude in meters
lat=(cansatGPS.location().lat* 1.0e-7f); //Latitude in hddd.ddddddd
lng=(cansatGPS.location().lng* 1.0e-7f); //Longitude in hddd.ddddddd
}
bool MngGps::isGpsDataReady()
{
bool ready;
if(cansatGPS.read()){
ready=true;
}else {
ready=false;
}
return ready;
}
void MngGps::gpsBegin()
{
cansatGPS.begin(9600);
}
void MngGps::rx_empty()
{
cansatGPS.rx_empty();
}