diff options
author | OLFDB <olf@eisenzelt.de> | 2022-06-13 08:41:44 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-06-13 08:41:44 +0200 |
commit | e47d84af32bf756b93f8e039cd6613dd85de9cbe (patch) | |
tree | ae8dce6b38bf9197b7c3c29ea05ab007b74a9da5 | |
parent | 5e1257c4711e5af3888fce21d2315d183f0fb1c6 (diff) | |
download | navit-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.c | 21 |
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; |