Mercurial > public > ostc4
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; } }