Mercurial > public > ostc4
diff Small_CPU/Src/uartProtocol_GNSS.c @ 1004:efb7d18cc564 GasConsumption
DevelopmentOption: added the possibility to provide a fixed position info to the gnss module. Code is deactivated at the moment.
| author | Ideenmodellierer |
|---|---|
| date | Sat, 03 May 2025 17:45:32 +0200 |
| parents | c386ae6635e4 |
| children |
line wrap: on
line diff
--- a/Small_CPU/Src/uartProtocol_GNSS.c Mon Apr 28 22:53:36 2025 +0200 +++ b/Small_CPU/Src/uartProtocol_GNSS.c Sat May 03 17:45:32 2025 +0200 @@ -93,6 +93,7 @@ RTC_DateTypeDef date; UBX_MGA_INI_TIME_UTC_t msg_DateTime; + UBX_MGA_INI_POS_LLH_t msg_Position; switch (GnssCmd) { @@ -158,8 +159,19 @@ pData = (uint8_t*)&msg_DateTime; txLength = sizeof(msg_DateTime) / sizeof(uint8_t); - break; + case GNSSCMD_SET_POSITION: msg_Position.header1 = 0xB5; + msg_Position.header2 = 0x62; + msg_Position.class_id = 0x13; + msg_Position.msg_id = 0x40; + msg_Position.length = sizeof(UBX_MGA_INI_POS_LLH_t) - 6; + msg_Position.latitude = (int32_t) (8.98647 * 1e7); + msg_Position.longitude = (int32_t) (47.77147 * 1e7); + msg_Position.altitude = (int32_t) 40000; + msg_Position.accuracy = 100000; + pData = (uint8_t*)&msg_Position; + txLength = sizeof(msg_Position) / sizeof(uint8_t); + break; default: break; } @@ -209,7 +221,11 @@ break; case UART_GNSS_SETDATE_TIME: UART_Gnss_SendCmd(GNSSCMD_SETDATETIME); // rxState = GNSSRX_DETECT_ACK_0; /* aiding function will not acknoledge receiption (until config to do so) */ - gnssState = UART_GNSS_PWRUP; + gnssState = UART_GNSS_SET_POSITION; + break; + case UART_GNSS_SET_POSITION: UART_Gnss_SendCmd(GNSSCMD_SET_POSITION); + // rxState = GNSSRX_DETECT_ACK_0; /* aiding function will not acknoledge receiption (until config to do so) */ + gnssState = UART_GNSS_IDLE; break; case UART_GNSS_PWRDOWN: UART_Gnss_SendCmd(GNSSCMD_MODE_PWS); rxState = GNSSRX_DETECT_ACK_0; @@ -330,7 +346,12 @@ case UART_GNSS_LOADCONF_0: case UART_GNSS_LOADCONF_1: gnssState++; break; - case UART_GNSS_LOADCONF_2: gnssState = UART_GNSS_SETMODE_MOBILE; + case UART_GNSS_LOADCONF_2: +#ifdef ENABLE_GNSS_TIME_INIT + gnssState = UART_GNSS_SETMODE_MOBILE; +#else + gnssState = UART_GNSS_SET_POSITION; +#endif break; case UART_GNSS_SETMODE_MOBILE: #ifdef ENABLE_GNSS_TIME_INIT @@ -341,6 +362,10 @@ gnssState = UART_GNSS_PWRUP; #endif break; + case UART_GNSS_SET_POSITION: rxState = GNSSRX_DETECT_ACK_0; + UART_Gnss_SendCmd(GNSSCMD_MODE_NORMAL); + gnssState = UART_GNSS_PWRUP; + break; case UART_GNSS_SETDATE_TIME: rxState = GNSSRX_DETECT_ACK_0; UART_Gnss_SendCmd(GNSSCMD_MODE_NORMAL); gnssState = UART_GNSS_PWRUP;
