summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOLFDB <olf@eisenzelt.de>2022-06-13 08:41:44 +0200
committerGitHub <noreply@github.com>2022-06-13 08:41:44 +0200
commite47d84af32bf756b93f8e039cd6613dd85de9cbe (patch)
treeae8dce6b38bf9197b7c3c29ea05ab007b74a9da5
parent5e1257c4711e5af3888fce21d2315d183f0fb1c6 (diff)
downloadnavit-e47d84af32bf756b93f8e039cd6613dd85de9cbe.tar.gz
fixed:vehicle:demo:Improvements for vehicle_demo (#1188)
* Random values for height, speed, num_sats_used and no signal when AF_UNDERGROUND is true * astyle changes * unused variables removed
-rw-r--r--navit/vehicle/demo/vehicle_demo.c21
1 files changed, 18 insertions, 3 deletions
diff --git a/navit/vehicle/demo/vehicle_demo.c b/navit/vehicle/demo/vehicle_demo.c
index 06ab2117a..fbca975d3 100644
--- a/navit/vehicle/demo/vehicle_demo.c
+++ b/navit/vehicle/demo/vehicle_demo.c
@@ -33,6 +33,7 @@
#include "vehicle.h"
#include "event.h"
#include "util.h"
+#include "track.h"
/**
* @defgroup vehicle-demo Vehicle Demo
@@ -57,6 +58,7 @@ struct vehicle_priv {
char *timep;
char *nmea;
enum attr_position_valid valid; /**< Whether the vehicle has valid position data **/
+ double height;
};
@@ -83,6 +85,7 @@ static int vehicle_demo_position_attr_get(struct vehicle_priv *priv,
char ns='N',ew='E',*timep,*rmc,*gga;
int hr,min,sec,year,mon,day;
double lat,lng;
+ int *flags;
switch (type) {
case attr_position_speed:
attr->u.numd = &priv->speed;
@@ -99,10 +102,17 @@ static int vehicle_demo_position_attr_get(struct vehicle_priv *priv,
attr->u.str=priv->timep;
break;
case attr_position_fix_type:
- attr->u.num = 2;
+ if(flags = tracking_get_current_flags(navit_get_tracking(priv->navit))) {
+ if(*flags & AF_UNDERGROUND)
+ attr->u.num = 0;
+ } else
+ attr->u.num = 2;
break;
case attr_position_sats_used:
- attr->u.num = 9;
+ attr->u.num = 3 + ((rand() % 2 + 1) * (rand() %2 == 0?-1:1));
+ break;
+ case attr_position_height:
+ attr->u.numd = &priv->height;
break;
case attr_position_nmea:
lat=priv->geo.lat;
@@ -152,6 +162,9 @@ static int vehicle_demo_set_attr_do(struct vehicle_priv *priv, struct attr *attr
case attr_speed:
priv->config_speed=attr->u.num;
break;
+ case attr_position_height:
+ priv->height = *attr->u.numd;
+ break;
case attr_interval:
priv->interval=attr->u.num;
if (priv->timer)
@@ -244,7 +257,8 @@ static void vehicle_demo_timer(struct vehicle_priv *priv) {
ci.y = pos.y + dy * len / slen;
priv->direction =
transform_get_angle_delta(&pos, &c, 0);
- priv->speed=priv->config_speed;
+ priv->speed=priv->config_speed + ((rand() % 5 + 1) * (rand() %2 == 0?-1:1)); // a little random + or - 1 to 5 km/h
+ priv->height=priv->height + ((rand() % 50 + 1) * (rand() %2 == 0?-1:1)); // a little random + or - 1 to 50 m
} else {
ci.x = pos.x;
ci.y = pos.y;
@@ -282,6 +296,7 @@ static struct vehicle_priv *vehicle_demo_new(struct vehicle_methods
ret->cbl = cbl;
ret->interval=1000;
ret->config_speed=40;
+ ret->height=-10;
ret->timer_callback=callback_new_1(callback_cast(vehicle_demo_timer), ret);
ret->valid = attr_position_valid_invalid;
*meth = vehicle_demo_methods;