Mercurial > public > ostc4
diff Small_CPU/Src/scheduler.c @ 969:81049905d829 Evo_2_23
Zusammenf?hren
author | heinrichsweikamp |
---|---|
date | Sun, 19 Jan 2025 12:02:59 +0100 (2 months ago) |
parents | 9b29995d6619 |
children |
line wrap: on
line diff
--- a/Small_CPU/Src/scheduler.c Sun Jan 19 12:00:50 2025 +0100 +++ b/Small_CPU/Src/scheduler.c Sun Jan 19 12:02:59 2025 +0100 @@ -342,6 +342,9 @@ { externalInterface_ExecuteCmd(global.dataSendToSlave.data.externalInterface_Cmd); } +#ifdef ENABLE_GPIO_V2 + GPIO_HandleBuzzer(); +#endif #if 0 @@ -1791,6 +1794,8 @@ void copyGNSSdata(void) { + RTC_TimeTypeDef sTimeNow; + global.dataSendToMaster.data[0].gnssInfo.coord.fLat = GNSS_Handle.fLat; global.dataSendToMaster.data[0].gnssInfo.coord.fLon = GNSS_Handle.fLon; global.dataSendToMaster.data[0].gnssInfo.fixType = GNSS_Handle.fixType; @@ -1804,6 +1809,23 @@ global.dataSendToMaster.data[0].gnssInfo.alive = GNSS_Handle.alive; + if(( GNSS_Handle.fixType < 2) && (GNSS_Handle.alive & GNSS_ALIVE_BACKUP_POS)) /* fallback to last known position ? */ + { + RTC_GetTime(&sTimeNow); + if(GNSS_Handle.last_hour > sTimeNow.Hours) + { + sTimeNow.Hours += 24; /* compensate date change */ + } + if(sTimeNow.Hours - GNSS_Handle.last_hour > 2) + { + GNSS_Handle.alive &= ~GNSS_ALIVE_BACKUP_POS; /* position outdated */ + } + else + { + global.dataSendToMaster.data[0].gnssInfo.coord.fLat = GNSS_Handle.last_fLat; + global.dataSendToMaster.data[0].gnssInfo.coord.fLon = GNSS_Handle.last_fLon; + } + } memcpy(&global.dataSendToMaster.data[0].gnssInfo.signalQual,&GNSS_Handle.statSat, sizeof(GNSS_Handle.statSat)); }