summaryrefslogtreecommitdiff
path: root/src/navigation/navigation-core/guidance-server-plugin/genivi_navigationcore_guidance.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'src/navigation/navigation-core/guidance-server-plugin/genivi_navigationcore_guidance.cxx')
-rw-r--r--src/navigation/navigation-core/guidance-server-plugin/genivi_navigationcore_guidance.cxx29
1 files changed, 16 insertions, 13 deletions
diff --git a/src/navigation/navigation-core/guidance-server-plugin/genivi_navigationcore_guidance.cxx b/src/navigation/navigation-core/guidance-server-plugin/genivi_navigationcore_guidance.cxx
index 430ece7..b29c718 100644
--- a/src/navigation/navigation-core/guidance-server-plugin/genivi_navigationcore_guidance.cxx
+++ b/src/navigation/navigation-core/guidance-server-plugin/genivi_navigationcore_guidance.cxx
@@ -225,6 +225,7 @@ class GuidanceServerStub : public GuidanceStubDefault
throw DBus::ErrorFailed("guidance already active");
}
mp_guidance=new GuidanceObj(this, _sessionHandle, _routeHandle);
+ fireGuidanceStatusChangedEvent(Guidance::GuidanceStatus::ACTIVE, _routeHandle);
_reply();
}
@@ -237,8 +238,12 @@ class GuidanceServerStub : public GuidanceStubDefault
dbg(lvl_debug,"no guidance active\n");
throw DBus::ErrorFailed("no guidance active");
}
+ Guidance::GuidanceStatus _guidanceStatus;
+ NavigationTypes::Handle _routeHandle;
+ mp_guidance->GetGuidanceStatus(_guidanceStatus,_routeHandle);
delete(mp_guidance);
- mp_guidance=NULL;
+ mp_guidance = NULL;
+ fireGuidanceStatusChangedEvent(Guidance::GuidanceStatus::INACTIVE, _routeHandle);
_reply();
}
@@ -752,24 +757,23 @@ GuidanceObj::GuidanceObj(GuidanceServerStub *guidance, uint32_t SessionHandle, u
if (navit_get_attr(navit, attr_callback_list, &callback_list, NULL)) {
callback_list_call_attr_4(callback_list.u.callback_list, attr_command, "navit_genivi_get_route", in, &ret, NULL);
if (ret && ret[0] && ret[1] && ret[0]->type == attr_route && ret[1]->type == attr_vehicleprofile) {
- struct tracking *tracking=get_tracking();
+ struct tracking *tracking=get_tracking();
m_route=*ret[0];
m_vehicleprofile=*ret[1];
m_tracking_callback.u.callback=callback_new_attr_1(reinterpret_cast<void (*)(void)>(GuidanceObj_TrackingCallback), attr_position_coord_geo, this);
- tracking_add_attr(tracking, &m_tracking_callback);
- struct vehicle *demo=get_vehicle("demo:");
- if (demo) {
- vehicle_set_attr(demo, &m_route);
- vehicle_set_attr(demo, &vehicle_speed);
+ tracking_add_attr(tracking, &m_tracking_callback);
+ struct vehicle *demo=get_vehicle("demo:");
+ if (demo) {
+ vehicle_set_attr(demo, &m_route);
+ vehicle_set_attr(demo, &vehicle_speed);
}
navigation_set_route(get_navigation(), m_route.u.route);
- tracking_set_route(get_tracking(), m_route.u.route);
- navigation_register_callback(get_navigation(), attr_navigation_speech, m_guidance_callback);
- GuidanceObj_Callback(this);
- }
+ tracking_set_route(get_tracking(), m_route.u.route);
+ navigation_register_callback(get_navigation(), attr_navigation_speech, m_guidance_callback);
+ GuidanceObj_Callback(this);
+ }
g_free(ret);
}
- m_guidance->fireGuidanceStatusChangedEvent(Guidance::GuidanceStatus::ACTIVE, RouteHandle);
}
GuidanceObj::~GuidanceObj()
@@ -784,7 +788,6 @@ GuidanceObj::~GuidanceObj()
navigation_unregister_callback(get_navigation(), attr_navigation_speech, m_guidance_callback);
callback_destroy(m_guidance_callback);
}
- m_guidance->fireGuidanceStatusChangedEvent(Guidance::GuidanceStatus::INACTIVE, 0);
#if (SPEECH_ENABLED)
delete(m_speechoutput);
#endif