* GPS sensor date/time now kept in UTC (previous conversion to local time was wrong)

* internal GPS sensor can now set RTC clock [Horus]
This commit is contained in:
Damjan Adamic
2016-09-02 22:35:54 +02:00
parent f9a5c99f29
commit 37df6f1968
4 changed files with 47 additions and 28 deletions
+24 -3
View File
@@ -134,6 +134,8 @@ typedef struct gpsDataNmea_s
uint16_t altitude;
uint16_t speed;
uint16_t groundCourse;
uint32_t date;
uint32_t time;
} gpsDataNmea_t;
bool gpsNewFrameNMEA(char c)
@@ -166,8 +168,6 @@ bool gpsNewFrameNMEA(char c)
switch (gps_frame) {
case FRAME_GGA: //************* GPGGA FRAME parsing
switch (param) {
// case 1: // Time information
// break;
case 2:
gps_Msg.latitude = GPS_coord_to_degrees(string);
break;
@@ -200,12 +200,18 @@ bool gpsNewFrameNMEA(char c)
break;
case FRAME_RMC: //************* GPRMC FRAME parsing
switch (param) {
case 1:
gps_Msg.time = grab_fields(string, 0);
break;
case 7:
gps_Msg.speed = ((grab_fields(string, 1) * 5144L) / 1000L); // speed in cm/s added by Mis
break;
case 8:
gps_Msg.groundCourse = (grab_fields(string, 1)); // ground course deg * 10
break;
case 9:
gps_Msg.date = grab_fields(string, 0);
break;
}
break;
@@ -241,7 +247,22 @@ bool gpsNewFrameNMEA(char c)
case FRAME_RMC:
gpsData.speed = gps_Msg.speed;
gpsData.groundCourse = gps_Msg.groundCourse;
break;
#if defined(RTCLOCK)
// set RTC clock if needed
if (g_eeGeneral.adjustRTC && gps_Msg.fix) {
div_t qr = div(gps_Msg.date, 100);
uint8_t year = qr.rem;
qr = div(qr.quot, 100);
uint8_t mon = qr.rem;
uint8_t day = qr.quot;
qr = div(gps_Msg.time, 100);
uint8_t sec = qr.rem;
qr = div(qr.quot, 100);
uint8_t min = qr.rem;
uint8_t hour = qr.quot;
rtcAdjust(year+2000, mon, day, hour, min, sec);
}
#endif
} // end switch
}
else {