diff Small_CPU/Src/GNSS.c @ 969:81049905d829 Evo_2_23

Zusammenf?hren
author heinrichsweikamp
date Sun, 19 Jan 2025 12:02:59 +0100 (2 months ago)
parents 3420e3ba698d
children
line wrap: on
line diff
--- a/Small_CPU/Src/GNSS.c	Sun Jan 19 12:00:50 2025 +0100
+++ b/Small_CPU/Src/GNSS.c	Sun Jan 19 12:02:59 2025 +0100
@@ -29,6 +29,7 @@
 #include <string.h>
 #include "GNSS.h"
 #include "data_exchange.h"
+#include "rtc.h"
 
 union u_Short uShort;
 union i_Short iShort;
@@ -57,7 +58,6 @@
 	GNSS->vAcc = 0;
 	GNSS->gSpeed = 0;
 	GNSS->headMot = 0;
-	GNSS->alive = 0;
 }
 
 /*!
@@ -66,7 +66,7 @@
  * @param GNSS Pointer to main GNSS structure.
  */
 void GNSS_ParseUniqID(GNSS_StateHandle *GNSS) {
-	for (int var = 0; var < 5; var++) {
+	for (int var = 0; var < 4; var++) {
 		GNSS->uniqueID[var] = GNSS_Handle.uartWorkingBuffer[10 + var];
 	}
 }
@@ -80,6 +80,8 @@
 
 	static float searchCnt = 1.0;
 
+	RTC_TimeTypeDef sTimeNow;
+
 	uShort.bytes[0] = GNSS_Handle.uartWorkingBuffer[10];
 	GNSS->yearBytes[0]=GNSS_Handle.uartWorkingBuffer[10];
 	uShort.bytes[1] = GNSS_Handle.uartWorkingBuffer[11];
@@ -143,7 +145,7 @@
 
 	if(GNSS->alive & GNSS_ALIVE_STATE_ALIVE)							/* alive */
 	{
-		GNSS->alive &= !GNSS_ALIVE_STATE_ALIVE;
+		GNSS->alive &= ~GNSS_ALIVE_STATE_ALIVE;
 	}
 	else
 	{
@@ -155,7 +157,16 @@
 	}
 	else
 	{
-		GNSS->alive &= !GNSS_ALIVE_STATE_TIME;
+		GNSS->alive &= ~GNSS_ALIVE_STATE_TIME;
+	}
+
+	if(GNSS->fixType >= 2)
+	{
+		RTC_GetTime(&sTimeNow);
+		GNSS->alive |= GNSS_ALIVE_BACKUP_POS;
+		GNSS->last_fLat = GNSS->fLat;
+		GNSS->last_fLon = GNSS->fLon;
+		GNSS->last_hour = sTimeNow.Hours;
 	}
 }