disable sensor detection - temporary solution
This commit is contained in:
@@ -49,7 +49,7 @@ void gps_task(void *arg)
|
||||
line[line_pos] = '\0';
|
||||
|
||||
if (line[0] == '$') {
|
||||
ESP_LOGV(TAG, "Received NMEA: %s", line);
|
||||
ESP_LOGI(TAG, "Received NMEA: %s", line);
|
||||
|
||||
if (strstr(line, "$GPGGA") == line) {
|
||||
parse_gpgga(line);
|
||||
@@ -72,8 +72,7 @@ void gps_task(void *arg)
|
||||
}
|
||||
}
|
||||
|
||||
void parse_gpgga(const char *nmea)
|
||||
{
|
||||
void parse_gpgga(const char *nmea) {
|
||||
char *fields[15];
|
||||
char temp[GPS_LINE_MAX_LEN];
|
||||
strncpy(temp, nmea, GPS_LINE_MAX_LEN);
|
||||
@@ -108,12 +107,11 @@ void parse_gpgga(const char *nmea)
|
||||
// Altitude
|
||||
const char *altitude = fields[9];
|
||||
|
||||
ESP_LOGI(TAG, "[GPGGA] Time: %s, Lat: %s %s, Lon: %s %s, Fix: %s, Sats: %s, Alt: %sm",
|
||||
utc_time, lat, lat_dir, lon, lon_dir, fix_quality, num_satellites, altitude);
|
||||
printf("[GPGGA] Time: %s, Lat: %s %s, Lon: %s %s, Fix: %s, Sats: %s, Alt: %sm\n",
|
||||
utc_time, lat, lat_dir, lon, lon_dir, fix_quality, num_satellites, altitude);
|
||||
}
|
||||
|
||||
void parse_gprmc(const char *nmea)
|
||||
{
|
||||
void parse_gprmc(const char *nmea) {
|
||||
char *fields[13];
|
||||
char temp[GPS_LINE_MAX_LEN];
|
||||
strncpy(temp, nmea, GPS_LINE_MAX_LEN);
|
||||
@@ -137,8 +135,8 @@ void parse_gprmc(const char *nmea)
|
||||
const char *speed_knots = fields[7];
|
||||
const char *date = fields[9];
|
||||
|
||||
ESP_LOGI(TAG, "[GPRMC] Date: %s, Time: %s, Lat: %s %s, Lon: %s %s, Speed: %s knots, Status: %s",
|
||||
date, utc_time, lat, lat_dir, lon, lon_dir, speed_knots, status);
|
||||
printf("[GPRMC] Date: %s, Time: %s, Lat: %s %s, Lon: %s %s, Speed: %s knots, Status: %s\n",
|
||||
date, utc_time, lat, lat_dir, lon, lon_dir, speed_knots, status);
|
||||
}
|
||||
|
||||
|
||||
@@ -154,29 +152,34 @@ static uint32_t time_to_seconds_struct(const char *time_str) {
|
||||
// Function to convert DMS (degrees minutes.decimalminutes) to centi-degrees
|
||||
static int32_t dms_to_centi_degrees_struct(const char *dms_str, const char *direction) {
|
||||
if (dms_str == NULL || direction == NULL || strlen(dms_str) < 7) return 0;
|
||||
char degrees_str[4] = {0};
|
||||
char minutes_decimal_str[10] = {0};
|
||||
strncpy(degrees_str, dms_str, 2);
|
||||
strncpy(minutes_decimal_str, dms_str + 2, strlen(dms_str) - 2);
|
||||
double degrees = atof(degrees_str);
|
||||
double minutes = atof(minutes_decimal_str);
|
||||
double decimal_degrees = degrees + (minutes / 60.0);
|
||||
if (direction[0] == 'S' || direction[0] == 'W') {
|
||||
decimal_degrees *= -1.0;
|
||||
char data_str[20] = {0};
|
||||
char *dataStr = data_str;
|
||||
for (int i = 0; i < 20; i++) {
|
||||
if (dms_str[i] == 0) {
|
||||
break;
|
||||
}
|
||||
if (dms_str[i] == '.') {
|
||||
continue;
|
||||
}
|
||||
*(dataStr++) = dms_str[i];
|
||||
}
|
||||
return (int32_t)(decimal_degrees * 10000);
|
||||
int32_t degrees = atoi(data_str);
|
||||
if (direction[0] == 'S' || direction[0] == 'W') {
|
||||
degrees *= -1;
|
||||
}
|
||||
return degrees;
|
||||
}
|
||||
|
||||
// Function to convert altitude string to centi-meters
|
||||
static int16_t altitude_to_centi_meters_struct(const char *alt_str) {
|
||||
if (alt_str == NULL) return 0;
|
||||
return (int16_t)(atof(alt_str) * 100);
|
||||
return (int16_t) (atof(alt_str) * 100);
|
||||
}
|
||||
|
||||
// Function to convert speed from knots to centi-knots
|
||||
static uint16_t speed_to_centi_knots_struct(const char *speed_str) {
|
||||
if (speed_str == NULL) return 0;
|
||||
return (uint16_t)(atof(speed_str) * 100);
|
||||
return (uint16_t) (atof(speed_str) * 100);
|
||||
}
|
||||
|
||||
// Function to convert date string (ddmmyy) to yymmdd integer
|
||||
@@ -190,8 +193,7 @@ static uint16_t date_to_yyddmm_struct(const char *date_str) {
|
||||
}
|
||||
|
||||
// Function to parse GPGGA NMEA string and return the struct
|
||||
void parse_gpgga_to_struct(const char *nmea, gps_binary_struct_t *data)
|
||||
{
|
||||
void parse_gpgga_to_struct(const char *nmea, gps_binary_struct_t *data) {
|
||||
char *fields[15];
|
||||
char temp[GPS_LINE_MAX_LEN];
|
||||
strncpy(temp, nmea, GPS_LINE_MAX_LEN);
|
||||
@@ -212,13 +214,12 @@ void parse_gpgga_to_struct(const char *nmea, gps_binary_struct_t *data)
|
||||
data->num_satellites = atoi(fields[7]);
|
||||
data->altitude_centi_meters = altitude_to_centi_meters_struct(fields[9]);
|
||||
} else {
|
||||
ESP_LOGW(TAG, "GPGGA: Not enough fields to parse struct");
|
||||
printf("GPGGA: Not enough fields to parse struct");
|
||||
}
|
||||
}
|
||||
|
||||
// Function to parse GPRMC NMEA string and return the struct
|
||||
void parse_gprmc_to_struct(const char *nmea, gps_binary_struct_t *data)
|
||||
{
|
||||
void parse_gprmc_to_struct(const char *nmea, gps_binary_struct_t *data) {
|
||||
char *fields[13];
|
||||
char temp[GPS_LINE_MAX_LEN];
|
||||
strncpy(temp, nmea, GPS_LINE_MAX_LEN);
|
||||
@@ -239,6 +240,6 @@ void parse_gprmc_to_struct(const char *nmea, gps_binary_struct_t *data)
|
||||
data->speed_centi_knots = speed_to_centi_knots_struct(fields[7]);
|
||||
// Fix quality and num_satellites are typically in GPGGA, so they might be 0 here.
|
||||
} else {
|
||||
ESP_LOGW(TAG, "GPRMC: Not enough fields to parse struct");
|
||||
printf("GPRMC: Not enough fields to parse struct");
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user