ATTR(shmsize)
ATTR(shmoffset)
ATTR(speed_category)
+ATTR(static_speed)
+ATTR(static_distance)
ATTR2(0x00027500,type_rel_abs_begin)
/* These attributes are int that can either hold relative *
* or absolute values. A relative value is indicated by *
<!-- For the cumulative displacement filter to be enabled, set cdf_histsize="x" here, with x being an integer somewhere around 4 -->
<tracking cdf_histsize="0"/>
- <vehicleprofile name="car" flags="0x4000000" flags_forward_mask="0x4000002" flags_reverse_mask="0x4000001" maxspeed_handling="0" route_mode="0">
+ <vehicleprofile name="car" flags="0x4000000" flags_forward_mask="0x4000002" flags_reverse_mask="0x4000001" maxspeed_handling="0" route_mode="0" static_speed="5" static_distance="25">
<roadprofile item_types="street_0,street_1_city,living_street,street_service,track_gravelled,track_unpaved" speed="10" route_weight="10">
<announcement level="0" distance_metric="25"/>
<announcement level="1" distance_metric="100"/>
<roadprofile item_types="ferry" speed="40" route_weight="40"/>
</vehicleprofile>
- <vehicleprofile name="bike" flags="0x40000000" flags_forward_mask="0x40000000" flags_reverse_mask="0x40000000" maxspeed_handling="1" route_mode="0">
+ <vehicleprofile name="bike" flags="0x40000000" flags_forward_mask="0x40000000" flags_reverse_mask="0x40000000" maxspeed_handling="1" route_mode="0" static_speed="5" static_distance="25">
<roadprofile item_types="steps" speed="2" route_weight="5">
<announcement level="0" distance_metric="25"/>
<announcement level="1" distance_metric="100"/>
<roadprofile item_types="ferry" speed="40" route_weight="40"/>
</vehicleprofile>
- <vehicleprofile name="pedestrian" flags="0x80000000" flags_forward_mask="0x80000000" flags_reverse_mask="0x80000000" maxspeed_handling="1" route_mode="0">
+ <vehicleprofile name="pedestrian" flags="0x80000000" flags_forward_mask="0x80000000" flags_reverse_mask="0x80000000" maxspeed_handling="1" route_mode="0" static_speed="3" static_distance="10">
<roadprofile item_types="footway,bridleway,path" speed="5" route_weight="5">
<announcement level="0" distance_metric="25"/>
<announcement level="1" distance_metric="100"/>
<roadprofile item_types="roundabout" speed="5" route_weight="5"/>
<roadprofile item_types="ferry" speed="40" route_weight="40"/>
</vehicleprofile>
- <vehicleprofile name="horse" flags="0x20000000" flags_forward_mask="0x20000000" flags_reverse_mask="0x20000000" maxspeed_handling="1" route_mode="0">
+ <vehicleprofile name="horse" flags="0x20000000" flags_forward_mask="0x20000000" flags_reverse_mask="0x20000000" maxspeed_handling="1" route_mode="0" static_speed="3" static_distance="10">
<roadprofile item_types="bridleway" speed="10" route_weight="10">
<announcement level="0" distance_metric="25"/>
<announcement level="1" distance_metric="100"/>
int i,value,min,time;
struct coord lpnt;
struct coord cin;
- struct attr valid,speed_attr,direction_attr,coord_geo,lag,time_attr;
+ struct attr valid,speed_attr,direction_attr,coord_geo,lag,time_attr,static_speed,static_distance;
double speed, direction;
if (v)
tr->vehicle=v;
dbg(0,"failed to get position data\n");
return;
}
+ if (!vehicleprofile_get_attr(vehicleprofile,attr_static_speed,&static_speed,NULL) || !vehicleprofile_get_attr(vehicleprofile,attr_static_distance,&static_distance,NULL)) {
+ static_speed.u.num=3;
+ static_distance.u.num=10;
+ dbg(1,"Using defaults for static position detection\n");
+ }
+ dbg(0,"Static speed: %u, static distance: %u\n",static_speed.u.num, static_distance.u.num);
time=iso8601_to_secs(time_attr.u.str);
speed=*speed_attr.u.numd;
direction=*direction_attr.u.numd;
tr->valid=attr_position_valid_valid;
transform_from_geo(pro, coord_geo.u.coord_geo, &tr->curr_in);
- if ((speed < 3 && transform_distance(pro, &tr->last_in, &tr->curr_in) < 10 )) {
+ if ((speed < static_speed.u.num && transform_distance(pro, &tr->last_in, &tr->curr_in) < static_distance.u.num )) {
dbg(1,"static speed %f coord 0x%x,0x%x vs 0x%x,0x%x\n",speed,tr->last_in.x,tr->last_in.y, tr->curr_in.x, tr->curr_in.y);
tr->valid=attr_position_valid_static;
tr->speed=0;
case attr_vehicle_width:
this_->width=attr->u.num;
break;
+ case attr_static_speed:
+ this_->static_speed=attr->u.num;
+ break;
+ case attr_static_distance:
+ this_->static_distance=attr->u.num;
+ break;
default:
break;
}