summaryrefslogtreecommitdiff
path: root/navit/vehicle
diff options
context:
space:
mode:
authormvglasow <mvglasow@ffa7fe5e-494d-0410-b361-a75ebd5db220>2014-11-20 20:09:14 +0000
committermvglasow <mvglasow@ffa7fe5e-494d-0410-b361-a75ebd5db220>2014-11-20 20:09:14 +0000
commitc503007fd9c58d90138ab69b889bc8d6e6057572 (patch)
treea48d87cf6cf81fb7cc3472d88a27d43181f6df5c /navit/vehicle
parentb6515ce026f0280f0c2b713d3b3a241824b81ebc (diff)
downloadnavit-c503007fd9c58d90138ab69b889bc8d6e6057572.tar.gz
Add:core:Support position_valid attribute for demo vehicle
Signed-off-by: mvglasow <michael -at- vonglasow.com> git-svn-id: http://svn.code.sf.net/p/navit/code/trunk/navit@5951 ffa7fe5e-494d-0410-b361-a75ebd5db220
Diffstat (limited to 'navit/vehicle')
-rw-r--r--navit/vehicle/demo/vehicle_demo.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/navit/vehicle/demo/vehicle_demo.c b/navit/vehicle/demo/vehicle_demo.c
index 75c845afc..ecaa08001 100644
--- a/navit/vehicle/demo/vehicle_demo.c
+++ b/navit/vehicle/demo/vehicle_demo.c
@@ -49,6 +49,7 @@ struct vehicle_priv {
struct event_timeout *timer;
char *timep;
char *nmea;
+ enum attr_position_valid valid; /**< Whether the vehicle has valid position data **/
};
@@ -126,6 +127,9 @@ vehicle_demo_position_attr_get(struct vehicle_priv *priv,
g_free(rmc);
attr->u.str=priv->nmea;
break;
+ case attr_position_valid:
+ attr->u.num=priv->valid;
+ break;
default:
return 0;
}
@@ -154,6 +158,10 @@ vehicle_demo_set_attr_do(struct vehicle_priv *priv, struct attr *attr)
break;
case attr_position_coord_geo:
priv->geo=*(attr->u.coord_geo);
+ if (priv->valid != attr_position_valid_valid) {
+ priv->valid = attr_position_valid_valid;
+ callback_list_call_attr_0(priv->cbl, attr_position_valid);
+ }
priv->position_set=1;
dbg(1,"position_set %f %f\n", priv->geo.lat, priv->geo.lng);
break;
@@ -246,6 +254,10 @@ vehicle_demo_timer(struct vehicle_priv *priv)
dbg(1, "ci=0x%x,0x%x\n", ci.x, ci.y);
transform_to_geo(projection_mg, &ci,
&priv->geo);
+ if (priv->valid != attr_position_valid_valid) {
+ priv->valid = attr_position_valid_valid;
+ callback_list_call_attr_0(priv->cbl, attr_position_valid);
+ }
callback_list_call_attr_0(priv->cbl, attr_position_coord_geo);
break;
}
@@ -273,6 +285,7 @@ vehicle_demo_new(struct vehicle_methods
ret->interval=1000;
ret->config_speed=40;
ret->timer_callback=callback_new_1(callback_cast(vehicle_demo_timer), ret);
+ ret->valid = attr_position_valid_invalid;
*meth = vehicle_demo_methods;
while (attrs && *attrs)
vehicle_demo_set_attr_do(ret, *attrs++);