diff options
author | mvglasow <mvglasow@ffa7fe5e-494d-0410-b361-a75ebd5db220> | 2014-11-20 20:09:14 +0000 |
---|---|---|
committer | mvglasow <mvglasow@ffa7fe5e-494d-0410-b361-a75ebd5db220> | 2014-11-20 20:09:14 +0000 |
commit | c503007fd9c58d90138ab69b889bc8d6e6057572 (patch) | |
tree | a48d87cf6cf81fb7cc3472d88a27d43181f6df5c /navit/vehicle | |
parent | b6515ce026f0280f0c2b713d3b3a241824b81ebc (diff) | |
download | navit-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.c | 13 |
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++); |