diff --git a/firmware/config/boards/48way/prepend.txt b/firmware/config/boards/48way/prepend.txt index 9840a137a0..a6ddf2cf3b 100755 --- a/firmware/config/boards/48way/prepend.txt +++ b/firmware/config/boards/48way/prepend.txt @@ -1,7 +1,6 @@ #define ts_show_hip9011 false #define ts_show_cj125 false -#define ts_show_gps false #define ts_show_software_knock true #define show_test_presets true diff --git a/firmware/config/boards/BB_V2/prepend.txt b/firmware/config/boards/BB_V2/prepend.txt index 9840a137a0..a6ddf2cf3b 100644 --- a/firmware/config/boards/BB_V2/prepend.txt +++ b/firmware/config/boards/BB_V2/prepend.txt @@ -1,7 +1,6 @@ #define ts_show_hip9011 false #define ts_show_cj125 false -#define ts_show_gps false #define ts_show_software_knock true #define show_test_presets true diff --git a/firmware/config/boards/BB_V3/prepend.txt b/firmware/config/boards/BB_V3/prepend.txt index 9840a137a0..a6ddf2cf3b 100644 --- a/firmware/config/boards/BB_V3/prepend.txt +++ b/firmware/config/boards/BB_V3/prepend.txt @@ -1,7 +1,6 @@ #define ts_show_hip9011 false #define ts_show_cj125 false -#define ts_show_gps false #define ts_show_software_knock true #define show_test_presets true diff --git a/firmware/config/boards/core8/prepend.txt b/firmware/config/boards/core8/prepend.txt index 9840a137a0..a6ddf2cf3b 100644 --- a/firmware/config/boards/core8/prepend.txt +++ b/firmware/config/boards/core8/prepend.txt @@ -1,7 +1,6 @@ #define ts_show_hip9011 false #define ts_show_cj125 false -#define ts_show_gps false #define ts_show_software_knock true #define show_test_presets true diff --git a/firmware/config/boards/coreECU/prepend.txt b/firmware/config/boards/coreECU/prepend.txt index 9840a137a0..a6ddf2cf3b 100644 --- a/firmware/config/boards/coreECU/prepend.txt +++ b/firmware/config/boards/coreECU/prepend.txt @@ -1,7 +1,6 @@ #define ts_show_hip9011 false #define ts_show_cj125 false -#define ts_show_gps false #define ts_show_software_knock true #define show_test_presets true diff --git a/firmware/config/boards/f407-discovery/board_extra.cpp b/firmware/config/boards/f407-discovery/board_extra.cpp index 4b9366d054..dd340b0d98 100644 --- a/firmware/config/boards/f407-discovery/board_extra.cpp +++ b/firmware/config/boards/f407-discovery/board_extra.cpp @@ -87,9 +87,6 @@ void setBoardDefaultConfiguration() { engineConfiguration->hip9011SpiDevice = SPI_DEVICE_2; engineConfiguration->cj125SpiDevice = SPI_DEVICE_2; -// engineConfiguration->gps_rx_pin = Gpio::B7; -// engineConfiguration->gps_tx_pin = Gpio::B6; - engineConfiguration->triggerSimulatorPins[0] = Gpio::D1; engineConfiguration->triggerSimulatorPins[1] = Gpio::D2; diff --git a/firmware/config/boards/hellen/alphax-2chan/prepend.txt b/firmware/config/boards/hellen/alphax-2chan/prepend.txt index 8d6f89ee68..7e9f51d767 100644 --- a/firmware/config/boards/hellen/alphax-2chan/prepend.txt +++ b/firmware/config/boards/hellen/alphax-2chan/prepend.txt @@ -7,7 +7,6 @@ #define ts_show_egt false -#define ts_show_gps false #define ts_show_etb_pins false #define ts_show_analog_divider false #define ts_show_spi true diff --git a/firmware/config/boards/hellen/alphax-4chan/prepend.txt b/firmware/config/boards/hellen/alphax-4chan/prepend.txt index 62fa46e07e..6bfa9dabbb 100644 --- a/firmware/config/boards/hellen/alphax-4chan/prepend.txt +++ b/firmware/config/boards/hellen/alphax-4chan/prepend.txt @@ -7,7 +7,6 @@ #define ts_show_egt false -#define ts_show_gps false #define ts_show_etb_pins false #define ts_show_analog_divider false #define ts_show_spi true diff --git a/firmware/config/boards/hellen/alphax-8chan/prepend.txt b/firmware/config/boards/hellen/alphax-8chan/prepend.txt index 7dc7630217..39929fe32f 100644 --- a/firmware/config/boards/hellen/alphax-8chan/prepend.txt +++ b/firmware/config/boards/hellen/alphax-8chan/prepend.txt @@ -7,7 +7,6 @@ #define ts_show_egt false -#define ts_show_gps false #define ts_show_etb_pins false #define ts_show_analog_divider false #define ts_show_spi true diff --git a/firmware/config/boards/hellen/harley81/prepend.txt b/firmware/config/boards/hellen/harley81/prepend.txt index 9b05455cf3..f7aef37426 100644 --- a/firmware/config/boards/hellen/harley81/prepend.txt +++ b/firmware/config/boards/hellen/harley81/prepend.txt @@ -7,7 +7,6 @@ #define ts_show_egt false -#define ts_show_gps false #define ts_show_etb_pins false #define ts_show_analog_divider false #define ts_show_spi true diff --git a/firmware/config/boards/hellen/hellen-gm-e38/prepend.txt b/firmware/config/boards/hellen/hellen-gm-e38/prepend.txt index c989e767ae..de621d6693 100644 --- a/firmware/config/boards/hellen/hellen-gm-e38/prepend.txt +++ b/firmware/config/boards/hellen/hellen-gm-e38/prepend.txt @@ -7,7 +7,6 @@ #define ts_show_egt false -#define ts_show_gps false #define ts_show_etb_pins false #define ts_show_analog_divider false #define ts_show_spi true diff --git a/firmware/config/boards/hellen/hellen-gm-e67/prepend.txt b/firmware/config/boards/hellen/hellen-gm-e67/prepend.txt index 03b300bc14..cab30b34e9 100644 --- a/firmware/config/boards/hellen/hellen-gm-e67/prepend.txt +++ b/firmware/config/boards/hellen/hellen-gm-e67/prepend.txt @@ -7,7 +7,6 @@ #define ts_show_egt false -#define ts_show_gps false #define ts_show_etb_pins false #define ts_show_analog_divider false #define ts_show_spi true diff --git a/firmware/config/boards/hellen/hellen-honda-k/prepend.txt b/firmware/config/boards/hellen/hellen-honda-k/prepend.txt index aa96c1cdb3..5af91e0e68 100644 --- a/firmware/config/boards/hellen/hellen-honda-k/prepend.txt +++ b/firmware/config/boards/hellen/hellen-honda-k/prepend.txt @@ -7,7 +7,6 @@ #define ts_show_egt false -#define ts_show_gps false #define ts_show_etb_pins false #define ts_show_analog_divider false #define ts_show_spi true diff --git a/firmware/config/boards/hellen/hellen-nb1/prepend.txt b/firmware/config/boards/hellen/hellen-nb1/prepend.txt index c09e844406..b833195951 100644 --- a/firmware/config/boards/hellen/hellen-nb1/prepend.txt +++ b/firmware/config/boards/hellen/hellen-nb1/prepend.txt @@ -7,7 +7,6 @@ #define ts_show_egt false -#define ts_show_gps false #define ts_show_etb_pins false #define ts_show_analog_divider false #define ts_show_spi true diff --git a/firmware/config/boards/hellen/hellen121nissan/prepend.txt b/firmware/config/boards/hellen/hellen121nissan/prepend.txt index 84ad243e57..9cf13a41e1 100644 --- a/firmware/config/boards/hellen/hellen121nissan/prepend.txt +++ b/firmware/config/boards/hellen/hellen121nissan/prepend.txt @@ -7,7 +7,6 @@ #define ts_show_egt false -#define ts_show_gps false #define ts_show_etb_pins false #define ts_show_analog_divider false #define ts_show_spi true diff --git a/firmware/config/boards/hellen/hellen121vag/prepend.txt b/firmware/config/boards/hellen/hellen121vag/prepend.txt index 3bb77400c5..b23c07be59 100644 --- a/firmware/config/boards/hellen/hellen121vag/prepend.txt +++ b/firmware/config/boards/hellen/hellen121vag/prepend.txt @@ -7,7 +7,6 @@ #define ts_show_egt false -#define ts_show_gps false #define ts_show_etb_pins false #define ts_show_analog_divider false #define ts_show_spi true diff --git a/firmware/config/boards/hellen/hellen128/prepend.txt b/firmware/config/boards/hellen/hellen128/prepend.txt index 14cc28189f..3de72b953e 100644 --- a/firmware/config/boards/hellen/hellen128/prepend.txt +++ b/firmware/config/boards/hellen/hellen128/prepend.txt @@ -7,7 +7,6 @@ #define ts_show_egt false -#define ts_show_gps false #define ts_show_etb_pins false #define ts_show_analog_divider false #define ts_show_spi true diff --git a/firmware/config/boards/hellen/hellen154hyundai/prepend.txt b/firmware/config/boards/hellen/hellen154hyundai/prepend.txt index ff02e69137..43a4e2059a 100644 --- a/firmware/config/boards/hellen/hellen154hyundai/prepend.txt +++ b/firmware/config/boards/hellen/hellen154hyundai/prepend.txt @@ -7,7 +7,6 @@ #define ts_show_egt false -#define ts_show_gps false #define ts_show_etb_pins false #define ts_show_analog_divider false #define ts_show_spi true diff --git a/firmware/config/boards/hellen/hellen64_miataNA6_94/prepend.txt b/firmware/config/boards/hellen/hellen64_miataNA6_94/prepend.txt index f54719d4f5..eabb8901b9 100644 --- a/firmware/config/boards/hellen/hellen64_miataNA6_94/prepend.txt +++ b/firmware/config/boards/hellen/hellen64_miataNA6_94/prepend.txt @@ -7,7 +7,6 @@ #define ts_show_egt false -#define ts_show_gps false #define ts_show_etb_pins false #define ts_show_analog_divider false #define ts_show_spi true diff --git a/firmware/config/boards/hellen/hellen72/prepend.txt b/firmware/config/boards/hellen/hellen72/prepend.txt index 54d033913d..31ae48806d 100644 --- a/firmware/config/boards/hellen/hellen72/prepend.txt +++ b/firmware/config/boards/hellen/hellen72/prepend.txt @@ -7,7 +7,6 @@ #define ts_show_egt false -#define ts_show_gps false #define ts_show_etb_pins false #define ts_show_analog_divider false #define ts_show_spi true diff --git a/firmware/config/boards/hellen/hellen81/prepend.txt b/firmware/config/boards/hellen/hellen81/prepend.txt index b57cc86c44..3fc297d8de 100644 --- a/firmware/config/boards/hellen/hellen81/prepend.txt +++ b/firmware/config/boards/hellen/hellen81/prepend.txt @@ -7,7 +7,6 @@ #define ts_show_egt false -#define ts_show_gps false #define ts_show_etb_pins false #define ts_show_analog_divider false #define ts_show_spi true diff --git a/firmware/config/boards/hellen/hellen88bmw/prepend.txt b/firmware/config/boards/hellen/hellen88bmw/prepend.txt index e501d85488..a50ac008e6 100644 --- a/firmware/config/boards/hellen/hellen88bmw/prepend.txt +++ b/firmware/config/boards/hellen/hellen88bmw/prepend.txt @@ -7,7 +7,6 @@ #define ts_show_egt false -#define ts_show_gps false #define ts_show_etb_pins false #define ts_show_analog_divider false #define ts_show_spi true diff --git a/firmware/config/boards/hellen/hellenNA8_96/prepend.txt b/firmware/config/boards/hellen/hellenNA8_96/prepend.txt index c8df06f5d9..d9e15beb6e 100644 --- a/firmware/config/boards/hellen/hellenNA8_96/prepend.txt +++ b/firmware/config/boards/hellen/hellenNA8_96/prepend.txt @@ -7,7 +7,6 @@ #define ts_show_egt false -#define ts_show_gps false #define ts_show_etb_pins false #define ts_show_analog_divider false #define ts_show_spi true diff --git a/firmware/config/boards/microrusefi/prepend.txt b/firmware/config/boards/microrusefi/prepend.txt index 33a92e100d..95df774270 100644 --- a/firmware/config/boards/microrusefi/prepend.txt +++ b/firmware/config/boards/microrusefi/prepend.txt @@ -7,7 +7,6 @@ ! https://rusefi.com/forum/viewtopic.php?p=43270#p43270 #define ts_show_egt true -#define ts_show_gps false #define ts_show_etb_pins false #define ts_show_analog_divider false #define ts_show_spi true diff --git a/firmware/config/boards/prometheus/efifeatures.h b/firmware/config/boards/prometheus/efifeatures.h index dccd433ee3..dec93f587e 100644 --- a/firmware/config/boards/prometheus/efifeatures.h +++ b/firmware/config/boards/prometheus/efifeatures.h @@ -27,9 +27,6 @@ #define TS_PRIMARY_UxART_PORT UARTD4 -#undef EFI_UART_GPS -#define EFI_UART_GPS FALSE - #undef EFI_BLUETOOTH_SETUP #define EFI_BLUETOOTH_SETUP TRUE diff --git a/firmware/config/boards/proteus/prepend.txt b/firmware/config/boards/proteus/prepend.txt index 5c29264776..ab026ab2bc 100644 --- a/firmware/config/boards/proteus/prepend.txt +++ b/firmware/config/boards/proteus/prepend.txt @@ -4,7 +4,6 @@ #define ts_show_cj125 false #define ts_show_full_pinout false #define ts_show_egt false -#define ts_show_gps false #define ts_show_analog_divider false #define ts_show_spi false #define ts_show_sd_card true diff --git a/firmware/config/boards/subaru_eg33/efifeatures.h b/firmware/config/boards/subaru_eg33/efifeatures.h index 3769a6c01d..3d732368a9 100644 --- a/firmware/config/boards/subaru_eg33/efifeatures.h +++ b/firmware/config/boards/subaru_eg33/efifeatures.h @@ -73,9 +73,6 @@ #define ADC_CHANNEL_VREF ADC_CHANNEL_IN14 -#undef EFI_UART_GPS -#define EFI_UART_GPS FALSE - #undef EFI_BLUETOOTH_SETUP #define EFI_BLUETOOTH_SETUP FALSE diff --git a/firmware/config/boards/subaru_eg33/prepend.txt b/firmware/config/boards/subaru_eg33/prepend.txt index 0ff47a1eb1..cb0447ad95 100644 --- a/firmware/config/boards/subaru_eg33/prepend.txt +++ b/firmware/config/boards/subaru_eg33/prepend.txt @@ -3,7 +3,6 @@ #define ts_show_hip9011 true #define ts_show_cj125 false #define ts_show_egt false -#define ts_show_gps false #define ts_show_etb_pins true #define ts_show_analog_divider false #define ts_show_spi true diff --git a/firmware/config/stm32f4ems/efifeatures.h b/firmware/config/stm32f4ems/efifeatures.h index c1f73473cb..4d5c6fac2f 100644 --- a/firmware/config/stm32f4ems/efifeatures.h +++ b/firmware/config/stm32f4ems/efifeatures.h @@ -314,11 +314,6 @@ #define DL_OUTPUT_BUFFER 8000 #endif -/** - * Do we need GPS logic? - */ -#define EFI_UART_GPS FALSE - #define EFI_ELECTRONIC_THROTTLE_BODY TRUE //#define EFI_ELECTRONIC_THROTTLE_BODY FALSE @@ -408,11 +403,6 @@ #define LED_ERROR_BRAIN_PIN_MODE DEFAULT_OUTPUT #endif -// USART1 -> check defined STM32_SERIAL_USE_USART1 -// For GPS we have USART1. We can start with PB7 USART1_RX and PB6 USART1_TX -#define GPS_SERIAL_DEVICE &SD1 -#define GPS_SERIAL_SPEED 38400 - #ifndef CONFIG_RESET_SWITCH_PORT // looks like this feature is not extremely popular, we can try living without it now :) //#define CONFIG_RESET_SWITCH_PORT GPIOD diff --git a/firmware/config/stm32f7ems/efifeatures.h b/firmware/config/stm32f7ems/efifeatures.h index 73101d4504..f180e93c08 100644 --- a/firmware/config/stm32f7ems/efifeatures.h +++ b/firmware/config/stm32f7ems/efifeatures.h @@ -20,9 +20,6 @@ #pragma once -#undef EFI_POTENTIOMETER -#define EFI_POTENTIOMETER FALSE - #undef EFI_MAX_31855 #define EFI_MAX_31855 FALSE diff --git a/firmware/controllers/algo/algo.mk b/firmware/controllers/algo/algo.mk index 596fbc69ad..b31b69c138 100644 --- a/firmware/controllers/algo/algo.mk +++ b/firmware/controllers/algo/algo.mk @@ -24,7 +24,6 @@ CONTROLLERS_ALGO_SRC_CPP = $(PROJECT_DIR)/controllers/algo/advance_map.cpp \ $(PROJECT_DIR)/controllers/algo/fuel/fuel_computer.cpp \ $(PROJECT_DIR)/controllers/algo/fuel/injector_model.cpp \ $(PROJECT_DIR)/controllers/algo/fuel/dfco.cpp \ - $(PROJECT_DIR)/controllers/algo/nmea.cpp \ $(PROJECT_DIR)/controllers/algo/odometer.cpp \ $(PROJECT_DIR)/controllers/algo/defaults/default_base_engine.cpp \ $(PROJECT_DIR)/controllers/algo/defaults/default_cranking.cpp \ diff --git a/firmware/controllers/algo/engine_configuration.cpp b/firmware/controllers/algo/engine_configuration.cpp index 3eb20dab14..87b9d91f90 100644 --- a/firmware/controllers/algo/engine_configuration.cpp +++ b/firmware/controllers/algo/engine_configuration.cpp @@ -579,9 +579,6 @@ static void setDefaultEngineConfiguration() { // todo: start using this for custom MAP engineConfiguration->mapHighValueVoltage = 5; - engineConfiguration->HD44780width = 20; - engineConfiguration->HD44780height = 4; - engineConfiguration->cylinderBore = 87.5; setBoschHDEV_5_injectors(); diff --git a/firmware/controllers/algo/nmea.cpp b/firmware/controllers/algo/nmea.cpp deleted file mode 100644 index a077db2330..0000000000 --- a/firmware/controllers/algo/nmea.cpp +++ /dev/null @@ -1,311 +0,0 @@ -/** - * @date Dec 20, 2013 - * - * @author Andrey Belomutskiy, (c) 2012-2020 - * @author Kot_dnz - * - * This file is part of rusEfi - see http://rusefi.com - * - * rusEfi is free software; you can redistribute it and/or modify it under the terms of - * the GNU General Public License as published by the Free Software Foundation; either - * version 3 of the License, or (at your option) any later version. - * - * rusEfi is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without - * even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along with this program. - * If not, see . - * - * see #testGpsParser - */ -#include "pch.h" -#include "nmea.h" -#include "rtc_helper.h" - -static long hex2int(const char * a, const int len) { - int i; - long val = 0; - - for (i = 0; i < len; i++) - if (a[i] <= 57) - val += (a[i] - 48) * (1 << (4 * (len - 1 - i))); // it's decimal number - else - val += (a[i] - 87) * (1 << (4 * (len - 1 - i))); // it's a-f -> work only with low case hex - return val; -} - -static float gps_deg_dec(float deg_point) { - float ddeg; - float sec = modff(deg_point, &ddeg) * 60; - int deg = (int) (ddeg / 100); - int min = (int) (deg_point - (deg * 100)); - - float absdlat = round(deg * 1000000.); - float absmlat = round(min * 1000000.); - float absslat = round(sec * 1000000.); - - return round(absdlat + (absmlat / 60) + (absslat / 3600)) / 1000000; -} - -// Convert lat e lon to decimals (from deg) -static void gps_convert_deg_to_dec(float *latitude, char ns, float *longitude, char we) { - float lat = (ns == 'N') ? *latitude : -1 * (*latitude); - float lon = (we == 'E') ? *longitude : -1 * (*longitude); - - *latitude = gps_deg_dec(lat); - *longitude = gps_deg_dec(lon); -} - -// in string collect all char till comma and convert to float -static int str_till_comma(const char * const a, char * const dStr) { - - int i = 0, sLen = strlen(a); - if (sLen > GPS_MAX_STRING) - sLen = GPS_MAX_STRING; - - while (a[i] != 44 && i < sLen) { // while not comma or end - dStr[i] = a[i]; - i++; - } - dStr[i] = '\0'; - return i; -} - -/* -GxGGA - name code -Parameter Value Unit Description -UTC hhmmss.sss Universal time coordinated -Lat ddmm.mmmm Latitude -Northing Indicator N=North, S=South -Lon dddmm.mmmm Longitude -Easting Indicator E=East, W=West -Status 0 0=Invalid, 1=2D/3D, 2=DGPS, 6=Dead Reckoning -SVs Used 00 Number of SVs used for Navigation -HDOP 99.99 Horizontal Dilution of Precision -Alt (MSL) m Altitude (above means sea level) -Unit M=Meters -Geoid Sep. m Geoid Separation = Alt(HAE) - Alt(MSL) -Unit M=Meters -Age of DGPS Corr s Age of Differential Corrections -DGPS Ref Station ID of DGPS Reference Station -*/ -void nmea_parse_gpgga(char const * const nmea, loc_t *loc) { - char const * p = (char *)nmea; - char dStr[GPS_MAX_STRING]; - - p = strchr(p, ',') + 1; //skip time - we read date&time if Valid in GxRMC - - p = strchr(p, ',') + 1; // in p string started with searching address - str_till_comma(p, dStr); // str to float till comma saved modified string - if (strlen(p) == 0) { - return; // if no data in field - empty data - we return - } - - loc->latitude = atoff(dStr); // fulfil data - - p = strchr(p, ',') + 1; // see above - switch (p[0]) { - case 'N': - loc->lat = 'N'; - break; - case 'S': - loc->lat = 'S'; - break; - case ',': - loc->lat = '\0'; - break; - } - - p = strchr(p, ',') + 1; - str_till_comma(p, dStr); // str to float till comma saved modified string - loc->longitude = atoff(dStr); - - p = strchr(p, ',') + 1; - switch (p[0]) { - case 'W': - loc->lon = 'W'; - break; - case 'E': - loc->lon = 'E'; - break; - case ',': - loc->lon = '\0'; - break; - } - - p = strchr(p, ',') + 1; - str_till_comma(p, dStr); // str to float till comma saved modified string - loc->quality = atoi(dStr); - - p = strchr(p, ',') + 1; - str_till_comma(p, dStr); // str to float till comma saved modified string - loc->satellites = atoi(dStr); - - p = strchr(p, ',') + 1; - - p = strchr(p, ',') + 1; - str_till_comma(p, dStr); // str to float till comma saved modified string - loc->altitude = atoff(dStr); -} - -/* -GxRMC - nmea code -Parameter Value Unit Description -UTC hhmmss.sss Universal time coordinated -Status V A=Valid, V=Invalid -Lat ddmm.mmmm Latitude -Northing Indicator N=North, S=South -Lon dddmm.mmmm Longitude -Easting Indicator E=East, W=West -SOG nots Speed Over Ground -COG (true) ° Course Over Ground (true) -Date ddmmyy Universal time coordinated -Magnetic Variation ° Magnetic Variation -Magnetic Variation E=East,W=West -Mode Indicator N A=Autonomous, D=Differential, E=Dead Reckoning, N=None -Navigational Status S=Safe C=Caution U=Unsafe V=Not valid -*/ - -void nmea_parse_gprmc(char const * const nmea, loc_t *loc) { - char const * p = (char *)nmea; - char dStr[GPS_MAX_STRING]; - efidatetime_t dt; - - p = strchr(p, ',') + 1; // read time - str_till_comma(p, dStr); - if (strlen(dStr) > 5) { - dt.hour = str2int(dStr, 2); - dt.minute = str2int(dStr + 2, 2); - dt.second = str2int(dStr + 4, 2); - } - - p = strchr(p, ',') + 1; // read field Valid status - str_till_comma(p, dStr); - - if (dStr[0] == 'V') { // if field is invalid - loc->quality = 0; - return; - } - - loc->quality = 4; // this is declaration that last receive field VALID - - p = strchr(p, ',') + 1; // latitude - str_till_comma(p, dStr); // str to float till comma saved modified string - loc->latitude = atoff(dStr); - - p = strchr(p, ',') + 1; - switch (p[0]) { - case 'N': - loc->lat = 'N'; - break; - case 'S': - loc->lat = 'S'; - break; - case ',': - loc->lat = '\0'; - break; - } - - p = strchr(p, ',') + 1; // longitude - str_till_comma(p, dStr); // str to float till comma saved modified string - loc->longitude = atoff(dStr); - - p = strchr(p, ',') + 1; - switch (p[0]) { - case 'W': - loc->lon = 'W'; - break; - case 'E': - loc->lon = 'E'; - break; - case ',': - loc->lon = '\0'; - break; - } - - p = strchr(p, ',') + 1; - str_till_comma(p, dStr); // str to float till comma saved modified string - loc->speed = atoff(dStr); - - p = strchr(p, ',') + 1; - str_till_comma(p, dStr); // str to float till comma saved modified string - loc->course = atoff(dStr); - - p = strchr(p, ',') + 1; // read date - str_till_comma(p, dStr); - if (strlen(dStr) > 5) { - dt.day = str2int(dStr, 2); - dt.month = str2int(dStr + 2, 2); - dt.year = 100 + // we receive -200, but standard wait -1900 = add correction - str2int(dStr + 4, 2); - } - - if (dt.year > 0 ) { // check if date field is valid - memcpy(&loc->time, &dt, sizeof(dt)); - } -} - -/** - * Get the message type (GPGGA, GPRMC, etc..) - * - * This function filters out also wrong packages (invalid checksum) - * - * @param message The NMEA message - * @return The type of message if it is valid - */ -nmea_message_type nmea_get_message_type(const char *message) { - int checksum = nmea_valid_checksum(message); - if (checksum != _EMPTY) { - return static_cast(checksum); - } - - if (strstr(message, NMEA_GPGGA_STR) != NULL) { - return NMEA_GPGGA; - } - - if (strstr(message, NMEA_GPRMC_STR) != NULL) { - return NMEA_GPRMC; - } - - return NMEA_UNKNOWN; -} - -int nmea_valid_checksum(char const * message) { - char p; - int sum = 0; - const char* starPtr = strrchr(message, '*'); - if (!starPtr) { - return NMEA_CHECKSUM_ERR; - } - const char* int_message = starPtr + 1; - long checksum = hex2int(int_message, 2); - - ++message; - while ((p = *message++) != '*') { - sum ^= p; - } - - if (sum != checksum) { - return NMEA_CHECKSUM_ERR; - } - return _EMPTY; -} - -// Compute the GPS location using decimal scale -void gps_location(loc_t *coord, char const * const buffer) { - coord->type = nmea_get_message_type(buffer); - - switch (coord->type) { - case NMEA_GPGGA: - nmea_parse_gpgga(buffer, coord); - gps_convert_deg_to_dec(&(coord->latitude), coord->lat, &(coord->longitude), coord->lon); - break; - case NMEA_GPRMC: - nmea_parse_gprmc(buffer, coord); - break; - case NMEA_UNKNOWN: - // unknown message type - break; - } -} diff --git a/firmware/controllers/algo/nmea.h b/firmware/controllers/algo/nmea.h deleted file mode 100644 index 3f48b88a66..0000000000 --- a/firmware/controllers/algo/nmea.h +++ /dev/null @@ -1,56 +0,0 @@ -/** - * - * https://github.com/wdalmut/libgps/tree/develop/src - * - */ - -#pragma once - -#include "rusefi_types.h" - -#define GPS_MAX_STRING 256 - -typedef enum { - NMEA_UNKNOWN = 0x00, - NMEA_GPRMC = 0x01, - NMEA_GPGGA = 0x02 -} nmea_message_type; - -#define _EMPTY 0x00 -#define NMEA_GPRMC_STR "$GPRMC" -#define NMEA_GPGGA_STR "$GPGGA" -#define _COMPLETED 0x03 - -#define NMEA_CHECKSUM_ERR 0x80 -#define NMEA_MESSAGE_ERR 0xC0 - -struct GPSlocation { - float latitude; - float longitude; - float speed; - float altitude; - float course; - efidatetime_t time; - nmea_message_type type; - int quality; - int satellites; - char lat; // Northing Indicator N=North, S=South - char lon; // Easting Indicator E=East, W=West -}; -typedef struct GPSlocation loc_t; - -nmea_message_type nmea_get_message_type(const char *); -int nmea_valid_checksum(const char *); -void nmea_parse_gpgga(char const * const, loc_t *); -void nmea_parse_gprmc(char const * const, loc_t *); -void gps_location(loc_t *, char const * const); - -static int str2int(const char * a, const int len) { - int i = 0, k = 0; - while (i < len) { - k = (k << 3) + (k << 1) + (*a) - '0'; - a++; - i++; - } - return k; -} diff --git a/firmware/hw_layer/hardware.cpp b/firmware/hw_layer/hardware.cpp index bdbfd2a820..68098708db 100644 --- a/firmware/hw_layer/hardware.cpp +++ b/firmware/hw_layer/hardware.cpp @@ -39,7 +39,6 @@ #include "mcp3208.h" #include "hip9011.h" #include "histogram.h" -#include "gps_uart.h" #include "sent.h" #include "cdm_ion_sense.h" #include "trigger_central.h" @@ -554,10 +553,6 @@ void initHardware() { initBoschYawRateSensor(); #endif /* EFI_BOSCH_YAW */ -#if EFI_UART_GPS - initGps(); -#endif - #if EFI_AUX_SERIAL initAuxSerial(); #endif /* EFI_AUX_SERIAL */ diff --git a/firmware/hw_layer/sensors/gps_uart.cpp b/firmware/hw_layer/sensors/gps_uart.cpp deleted file mode 100644 index 93afd6e4c5..0000000000 --- a/firmware/hw_layer/sensors/gps_uart.cpp +++ /dev/null @@ -1,118 +0,0 @@ -/** - * @file gps_uart.cpp - * @brief GPS receiver hardware UART driver - * - * Tested and developed for NEO-6M - * http://www.u-blox.com/en/gps-modules/pvt-modules/previous-generations/neo-6-family.html - * Technically any UART GPS should work with this driver since NMEA protocol is pretty common anyway - * - * @date Dec 28, 2013 - * @author Andrey Belomutskiy, (c) 2012-2020 - * Kot_dnz 2014 - */ - -#if EFI_UART_GPS -#include "pch.h" - -#include - -#include "rusefi_types.h" -#include "console_io.h" -#include "eficonsole.h" -#include "nmea.h" -#include "gps_uart.h" -#include "rtc_helper.h" - -static SerialConfig GPSserialConfig = { GPS_SERIAL_SPEED, 0, USART_CR2_STOP1_BITS | USART_CR2_LINEN, 0 }; -static THD_WORKING_AREA(gpsThreadStack, UTILITY_THREAD_STACK_SIZE); - -// this field holds our current state -static loc_t GPSdata; -static efidatetime_t lastDateTime; - -static int gpsMessageCount = 0; -static int uartErrors = 0; - -// TODO: some data structure for coordinates location - -float getCurrentSpeed(void) { - // TODO: ??? - return GPSdata.speed; -} - -static void printGpsInfo() { - efiPrintf("GPS RX %s", hwPortname(engineConfiguration->gps_rx_pin)); - efiPrintf("GPS TX %s", hwPortname(engineConfiguration->gps_tx_pin)); - - efiPrintf("m=%d,e=%d: vehicle speed = %.2f", gpsMessageCount, uartErrors, getCurrentSpeed()); - - float sec = getTimeNowMs() / 1000.0; - efiPrintf("communication speed: %.2f", gpsMessageCount / sec); - - efiPrintf("GPS latitude = %.2f\r\n", GPSdata.latitude); - efiPrintf("GPS longitude = %.2f\r\n", GPSdata.longitude); -} - -static void onGpsMessage(const char * const buffer) { - gps_location(&GPSdata, buffer); - - if (GPSdata.quality == 4 && GPSdata.time.year > 0) { - getRtcDateTime(&lastDateTime); - if (GPSdata.time.second != dateTime.second) { - // quality =4 (valid GxRMC), year > 0, and difference more than second - setRtcDateTime(GPSdata.time); - } - } - - gpsMessageCount++; -} - -// we do not want this on stack, right? -static char gps_str[GPS_MAX_STRING]; - -static THD_FUNCTION(GpsThreadEntryPoint, arg) { - (void) arg; - chRegSetThreadName("GPS thread"); - - int count = 0; - - while (true) { - msg_t charbuf = streamGet(GPS_SERIAL_DEVICE); - if (charbuf == 10 || count == GPS_MAX_STRING) { // if 0xD,0xA or limit - if (count >= 1) - gps_str[--count] = '\0'; // delete 0xD - - // scheduleMsg(&logger, "got GPS [%s]", gps_str); - - // 'gps_str' string completed - onGpsMessage(gps_str); - memset(&gps_str, '\0', GPS_MAX_STRING); // clear buffer - count = 0; - } else { - gps_str[count++] = charbuf; - } - } -} - -static bool isGpsEnabled() { - return (isBrainPinValid(engineConfiguration->gps_rx_pin) && - isBrainPinValid(engineConfiguration->gps_tx_pin)); -} - -void initGps(void) { - if (!isGpsEnabled()) - return; - - - sdStart(GPS_SERIAL_DEVICE, &GPSserialConfig); -// GPS we have USART1: PB7 -> USART1_RX and PB6 -> USART1_TX - efiSetPadMode("GPS tx", engineConfiguration->gps_tx_pin, PAL_MODE_ALTERNATE(7)); - efiSetPadMode("GPS rx", engineConfiguration->gps_rx_pin, PAL_MODE_ALTERNATE(7)); - -// todo: add a thread which would save location. If the GPS 5Hz - we should save the location each 200 ms - chThdCreateStatic(gpsThreadStack, sizeof(gpsThreadStack), LOWPRIO, (tfunc_t)(void*) GpsThreadEntryPoint, NULL); - - addConsoleAction("gpsinfo", &printGpsInfo); -} - -#endif // EFI_UART_GPS diff --git a/firmware/hw_layer/sensors/gps_uart.h b/firmware/hw_layer/sensors/gps_uart.h deleted file mode 100644 index d5b8702986..0000000000 --- a/firmware/hw_layer/sensors/gps_uart.h +++ /dev/null @@ -1,22 +0,0 @@ -/* - * @file gps_uart.h - * - * - * @date Dec 30, 2013 - * @author Kot_dnz - * @author Andrey Belomutskiy, (c) 2012-2020 - */ - -#pragma once - -#ifdef __cplusplus -extern "C" -{ -#endif /* __cplusplus */ - -void initGps(void); -float getCurrentSpeed(void); - -#ifdef __cplusplus -} -#endif /* __cplusplus */ diff --git a/firmware/hw_layer/sensors/sensors.mk b/firmware/hw_layer/sensors/sensors.mk index 3503065902..8ed2af609c 100644 --- a/firmware/hw_layer/sensors/sensors.mk +++ b/firmware/hw_layer/sensors/sensors.mk @@ -9,4 +9,3 @@ HW_SENSORS_CPP = \ $(HW_SENSORS_DIR)/accelerometer.cpp \ $(HW_SENSORS_DIR)/lps25.cpp \ $(HW_SENSORS_DIR)/max31855.cpp \ - $(HW_SENSORS_DIR)/gps_uart.cpp diff --git a/firmware/integration/rusefi_config.txt b/firmware/integration/rusefi_config.txt index 5705be0ff9..7364bee9c8 100644 --- a/firmware/integration/rusefi_config.txt +++ b/firmware/integration/rusefi_config.txt @@ -2144,7 +2144,6 @@ end_struct #define ts_show_critical_led false #define ts_show_joystick true #define ts_show_egt true -#define ts_show_gps true #define ts_show_analog_divider true #define ts_show_spi true #define ts_show_sd_card true diff --git a/firmware/tunerstudio/rusefi.input b/firmware/tunerstudio/rusefi.input index 634a513a83..5db570a57f 100644 --- a/firmware/tunerstudio/rusefi.input +++ b/firmware/tunerstudio/rusefi.input @@ -2774,8 +2774,6 @@ cmd_set_engine_type_default = "@@TS_IO_TEST_COMMAND_char@@@@ts_command_e_TS_ field = "Aux ADC #6", auxAnalogInputs6 field = "Aux ADC #7", auxAnalogInputs7 field = "Aux ADC #8", auxAnalogInputs8 - field = "GPS RX", gps_rx_pin @@if_ts_show_gps - field = "GPS TX", gps_tx_pin @@if_ts_show_gps field = "CAN RX pin", canRxPin @@if_ts_show_can_pins field = "CAN TX pin", canTxPin @@if_ts_show_can_pins field = "SPI1 MOSI", spi1mosiPin, { spi1mosiPin != 0 || is_enabled_spi_1 == 1} @@if_ts_show_spi @@ -3588,10 +3586,6 @@ cmd_set_engine_type_default = "@@TS_IO_TEST_COMMAND_char@@@@ts_command_e_TS_ field = "SD logger rate", sdCardLogFrequency field = "SD logger mode", sdTriggerLog - dialog = gpsReceiver, "GPS Receiver" - field = "gps RX", gps_rx_pin - field = "gps TX", gps_tx_pin - dialog = tle8888, "TLE8888", yAxis field = "TLE8888 Chip Select", tle8888_cs @@if_ts_show_spi field = "TLE8888 SPI", tle8888spiDevice @@if_ts_show_spi @@ -3605,8 +3599,6 @@ cmd_set_engine_type_default = "@@TS_IO_TEST_COMMAND_char@@@@ts_command_e_TS_ panel = tsPort @@if_ts_show_tunerstudio_port field = "uartConsoleSerialSpeed", uartConsoleSerialSpeed panel = auxSerial - panel = gpsReceiver @@if_ts_show_gps - dialog = monitoringSettings, "rusEFI Console Settings" field = "Sensor Sniffer", sensorChartMode diff --git a/simulator/simulator/efifeatures.h b/simulator/simulator/efifeatures.h index fb28aa0b3c..ac296019fa 100644 --- a/simulator/simulator/efifeatures.h +++ b/simulator/simulator/efifeatures.h @@ -112,7 +112,6 @@ #define HAL_TRIGGER_USE_ADC FALSE #endif /* HAL_TRIGGER_USE_ADC */ -#define EFI_UART_GPS FALSE #define EFI_HAS_RESET FALSE #define EXTREME_TERM_LOGGING FALSE #define DEBUG_FUEL FALSE diff --git a/unit_tests/tests/test_util.cpp b/unit_tests/tests/test_util.cpp index 6a8e9147da..bcb6546278 100644 --- a/unit_tests/tests/test_util.cpp +++ b/unit_tests/tests/test_util.cpp @@ -15,7 +15,6 @@ #include "malfunction_central.h" #include "cli_registry.h" -#include "nmea.h" #include "mmc_card.h" #include "fl_stack.h" @@ -248,59 +247,6 @@ static void testEchoFFF(float first, float second, float third) { #define UNKNOWN_COMMAND "dfadasdasd" -static loc_t GPSdata; - -static char nmeaMessage[1000]; - -TEST(misc, testGpsParser) { - strcpy(nmeaMessage, ""); - gps_location(&GPSdata, nmeaMessage); - - // we need to pass a mutable string, not a constant because the parser would be modifying the string - strcpy(nmeaMessage, "$GPRMC,173843,A,3349.896,N,11808.521,W,000.0,360.0,230108,013.4,E*69"); - gps_location(&GPSdata, nmeaMessage); - ASSERT_EQ( 4, GPSdata.quality) << "1 valid"; - assertEqualsM("1 latitude", 3349.896, GPSdata.latitude); - assertEqualsM("1 longitude", 11808.521, GPSdata.longitude); - ASSERT_EQ( 0, GPSdata.speed) << "1 speed"; -// ASSERT_EQ( 0, GPSdata.altitude) << "1 altitude"; // GPRMC not overwrite altitude - ASSERT_EQ( 360, GPSdata.course) << "1 course"; - - strcpy(nmeaMessage, "$GPGGA,111609.14,5001.27,N,3613.06,E,3,08,0.0,10.2,M,0.0,M,0.0,0000*70"); - gps_location(&GPSdata, nmeaMessage); - ASSERT_EQ( 3, GPSdata.quality) << "2 valid"; // see field details - assertEqualsM("2 latitude", 50.0212, GPSdata.latitude); - assertEqualsM("2 longitude", 36.2177, GPSdata.longitude); - ASSERT_EQ( 0, GPSdata.speed) << "2 speed"; - assertEqualsM("2 altitude", 10.2, GPSdata.altitude); -// ASSERT_EQ( 0, GPSdata.course) << "2 course"; // GPGGA not overwrite course - - strcpy(nmeaMessage, "$GPRMC,111609.14,A,5001.27,N,3613.06,E,11.2,0.0,261206,0.0,E*50"); - gps_location(&GPSdata, nmeaMessage); - ASSERT_EQ( 4, GPSdata.quality) << "3 valid"; - assertEqualsM("3 latitude", 5001.27, GPSdata.latitude); - assertEqualsM("3 longitude", 3613.06, GPSdata.longitude); - assertEqualsM("3 speed", 11.2, GPSdata.speed); -// ASSERT_EQ( 0, GPSdata.altitude) << "3 altitude"; // GPRMC not overwrite altitude - ASSERT_EQ( 0, GPSdata.course) << "3 course"; - ASSERT_EQ( 2006, GPSdata.time.year + 1900) << "3 GPS yy"; - ASSERT_EQ( 12, GPSdata.time.month) << "3 GPS mm"; - ASSERT_EQ( 26, GPSdata.time.day) << "3 GPS dd"; - ASSERT_EQ( 11, GPSdata.time.hour) << "3 GPS hh"; - ASSERT_EQ( 16, GPSdata.time.minute) << "3 GPS mm"; - ASSERT_EQ( 9, GPSdata.time.second) << "3 GPS ss"; - - // check again first one - // we need to pass a mutable string, not a constant because the parser would be modifying the string - strcpy(nmeaMessage, "$GPRMC,173843,A,3349.896,N,11808.521,W,000.0,360.0,230108,013.4,E*69"); - gps_location(&GPSdata, nmeaMessage); - ASSERT_EQ( 4, GPSdata.quality) << "4 valid"; - assertEqualsM("4 latitude", 3349.896, GPSdata.latitude); - assertEqualsM("4 longitude", 11808.521, GPSdata.longitude); - ASSERT_EQ( 0, GPSdata.speed) << "4 speed"; - ASSERT_EQ( 360, GPSdata.course) << "4 course"; -} - // this buffer is needed because on Unix you would not be able to change static char constants static char buffer[300]; @@ -376,8 +322,6 @@ TEST(misc, testConsoleLogic) { ASSERT_EQ(1.0, fFirst); ASSERT_EQ(2.0, fSecond); ASSERT_EQ(3.0, fThird); - - //addConsoleActionSSS("GPS", testGpsParser); } TEST(misc, testFLStack) {