diff options
author | Viktor Verebelyi <vviktor2@gmail.com> | 2020-11-05 00:43:55 +0000 |
---|---|---|
committer | Viktor Verebelyi <vviktor2@gmail.com> | 2020-11-05 00:43:55 +0000 |
commit | 518ba0acafa2393d764f44cd4d7b8a1086907ed0 (patch) | |
tree | 791da319871a9c805e4a858bfc52221f3590a1c6 | |
parent | 6eeb51250dea9d42dfa32d51a445d8f7548ac387 (diff) | |
download | navit-518ba0acafa2393d764f44cd4d7b8a1086907ed0.tar.gz |
fix:vehicle Add speed setting to 0 once navigation stopped and fix len calculation
-rw-r--r-- | navit/vehicle/demo/vehicle_demo.c | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/navit/vehicle/demo/vehicle_demo.c b/navit/vehicle/demo/vehicle_demo.c index 06ab2117a..3f430b69b 100644 --- a/navit/vehicle/demo/vehicle_demo.c +++ b/navit/vehicle/demo/vehicle_demo.c @@ -199,7 +199,8 @@ static void vehicle_demo_timer(struct vehicle_priv *priv) { struct map_rect *mr=NULL; struct item *item=NULL; - len = (priv->config_speed * priv->interval / 1000)/ 3.6; +// len = (priv->config_speed * priv->interval / 1000)/ 3.6; + len = (int)(((double)priv->config_speed * 3.6) * ((double)priv->interval / 1000.00)); dbg(lvl_debug, "###### Entering simulation loop"); if (!priv->config_speed) return; @@ -217,12 +218,24 @@ static void vehicle_demo_timer(struct vehicle_priv *priv) { item=map_rect_get_item(mr); while(item && item->type!=type_street_route) item=map_rect_get_item(mr); + + if(!item && priv->speed!=0){ + dbg(lvl_warning, "Routing finished setting speed to 0"); + priv->speed=0; + callback_list_call_attr_0(priv->cbl, attr_position_coord_geo); + } + if (item && item_coord_get(item, &pos, 1)) { priv->position_set=0; dbg(lvl_debug, "current pos=0x%x,0x%x", pos.x, pos.y); dbg(lvl_debug, "last pos=0x%x,0x%x", priv->last.x, priv->last.y); if (priv->last.x == pos.x && priv->last.y == pos.y) { dbg(lvl_warning, "endless loop"); + if(priv->speed!=0){ + dbg(lvl_warning, "Routing finished, but we're still stuck(?), setting speed to 0"); + priv->speed=0; + callback_list_call_attr_0(priv->cbl, attr_position_coord_geo); + } } priv->last = pos; while (item && priv->config_speed) { |