diff options
author | <philippe colliot> | 2015-01-30 12:54:23 +0100 |
---|---|---|
committer | <philippe colliot> | 2015-01-30 12:54:23 +0100 |
commit | 2264cb9e3067a155404bcb660423f045baa419e9 (patch) | |
tree | 99f3c0130141353aa91b8a426a5aa80e63238a12 | |
parent | f0ddb754ad4e16d8f650485a610818c06e0ceac3 (diff) | |
download | poi-service-2264cb9e3067a155404bcb660423f045baa419e9.tar.gz |
some updates for preparing connection to speech output
3 files changed, 61 insertions, 32 deletions
@@ -15,4 +15,4 @@ positioning/ CMakeFiles/ CMakeCache.txt *.cmake - +src-gen diff --git a/src/navigation/navigation-core/enhancedposition-plugin/genivi_positioning_enhancedposition.cxx b/src/navigation/navigation-core/enhancedposition-plugin/genivi_positioning_enhancedposition.cxx index 29caa62..d3ce8a9 100644 --- a/src/navigation/navigation-core/enhancedposition-plugin/genivi_positioning_enhancedposition.cxx +++ b/src/navigation/navigation-core/enhancedposition-plugin/genivi_positioning_enhancedposition.cxx @@ -25,27 +25,6 @@ * * @licence end@ */ -/** - * @file vehicle_enhancedposition.c - * Navit, a modular navigation system. - * - * Copyright (C) 2005-2008 Navit Team - * Copyright (C) BMW Car IT GmbH 2011 - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * version 2 as published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the - * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - * Boston, MA 02110-1301, USA. - */ #include <dbus-c++/glib-integration.h> #include <glib.h> diff --git a/src/navigation/navigation-core/guidance-plugin/genivi_navigationcore_guidance.cxx b/src/navigation/navigation-core/guidance-plugin/genivi_navigationcore_guidance.cxx index b922096..58b72d1 100644 --- a/src/navigation/navigation-core/guidance-plugin/genivi_navigationcore_guidance.cxx +++ b/src/navigation/navigation-core/guidance-plugin/genivi_navigationcore_guidance.cxx @@ -62,6 +62,9 @@ class GuidanceObj uint32_t m_session,m_route_handle; Guidance *m_guidance; bool m_paused; + bool m_voice_guidance; + uint16_t m_prompt_mode; + std::string m_kind_of_voice; struct item *get_item(struct map_rect *mr); struct map_rect *get_map_rect(void); void SetSimulationMode(uint32_t SessionHandle, bool Activate); @@ -69,6 +72,10 @@ class GuidanceObj void SetSimulationSpeed(uint32_t sessionHandle); void PauseGuidance(uint32_t sessionHandle); void ResumeGuidance(uint32_t sessionHandle); + void SetVoiceGuidance(const bool& activate, const std::string& voice); + void SetVoiceGuidanceSettings(const uint16_t& promptMode); + uint16_t GetVoiceGuidanceSettings(); + void PlayVoiceManeuver(); void GetGuidanceStatus(uint16_t& guidanceStatus, uint32_t& routeHandle); void GetDestinationInformation(uint32_t& offset, uint32_t& TravelTime, int32_t& Direction, int16_t& TimeZone); void GetManeuver(struct item *item, uint32_t& DistanceToManeuver, uint16_t& Maneuver, std::string& RoadAfterManeuver, ::DBus::Struct< uint16_t, ::DBus::Variant >& ManeuverData); @@ -185,7 +192,6 @@ class Guidance void StartGuidance(const uint32_t& SessionHandle, const uint32_t& RouteHandle) { - uint32_t Result; dbg(0,"enter\n"); if (guidance) { dbg(0,"guidance already active\n"); @@ -265,7 +271,7 @@ class Guidance void SetVoiceGuidance(const bool& activate, const std::string& voice) { - throw DBus::ErrorNotSupported("Not yet supported"); + guidance->SetVoiceGuidance(activate,voice); } void @@ -281,7 +287,11 @@ class Guidance void PlayVoiceManeuver() { - throw DBus::ErrorNotSupported("Not yet supported"); + if (!guidance) { + dbg(0,"no guidance active\n"); + throw DBus::ErrorFailed("no guidance active"); + } + guidance->PlayVoiceManeuver(); } @@ -327,13 +337,13 @@ class Guidance void SetVoiceGuidanceSettings(const uint16_t& promptMode) { - throw DBus::ErrorNotSupported("Not yet supported"); + guidance->SetVoiceGuidanceSettings(promptMode); } uint16_t GetVoiceGuidanceSettings() { - throw DBus::ErrorNotSupported("Not yet supported"); + return guidance->GetVoiceGuidanceSettings(); } void @@ -509,6 +519,19 @@ GuidanceObj::GetManeuver(struct item *item, uint32_t& DistanceToManeuver, uint16 void GuidanceObj::GetGuidanceDetails(bool& voiceGuidance, bool& vehicleOnTheRoad, bool& isDestinationReached, uint16_t& maneuver) { + struct map_rect *mr=get_map_rect(); + struct item *item; + item=get_item(mr); + std::string road_name_after_maneuver; + uint32_t offset_maneuver; + ::DBus::Struct< uint16_t, ::DBus::Variant > maneuver_data; + + voiceGuidance = m_voice_guidance; + vehicleOnTheRoad = true; //by default, no off-road managed + isDestinationReached = false; //to be done + + GetManeuver(item, offset_maneuver, maneuver, road_name_after_maneuver, maneuver_data); + } void @@ -564,20 +587,44 @@ void GuidanceObj::ResumeGuidance(uint32_t sessionHandle) { struct vehicle *vehicle=get_vehicle("demo:"); - m_paused=false; GuidanceObj_Callback(this); if (vehicle) + { vehicle_set_attr(vehicle, &vehicle_speed); + } + m_paused=false; +} + +void GuidanceObj::SetVoiceGuidance(const bool& activate, const std::string& voice) +{ + m_voice_guidance = activate; + m_kind_of_voice.clear(); + m_kind_of_voice.append(voice); +} + +void GuidanceObj::PlayVoiceManeuver() +{ + message *messages; + messages = navit_get_messages(get_navit()); +} + +void GuidanceObj::SetVoiceGuidanceSettings(const uint16_t& promptMode) +{ + m_prompt_mode = promptMode; +} + +uint16_t GuidanceObj::GetVoiceGuidanceSettings() +{ + return m_prompt_mode; } void GuidanceObj::GetGuidanceStatus(uint16_t& guidanceStatus, uint32_t& routeHandle) { -#if 0 if (m_paused) - return GENIVI_NAVIGATIONCORE_PAUSED; -#endif - guidanceStatus=GENIVI_NAVIGATIONCORE_ACTIVE; + guidanceStatus = GENIVI_NAVIGATIONCORE_INACTIVE; + else + guidanceStatus = GENIVI_NAVIGATIONCORE_ACTIVE; routeHandle=m_route_handle; } @@ -675,6 +722,9 @@ GuidanceObj::GuidanceObj(Guidance *guidance, uint32_t SessionHandle, uint32_t Ro m_route_handle=RouteHandle; m_guidance_callback=callback_new_1(reinterpret_cast<void (*)(void)>(GuidanceObj_Callback), this); m_paused=false; + m_voice_guidance=false; + m_kind_of_voice="DEFAULT"; + m_prompt_mode=GENIVI_NAVIGATIONCORE_MANUAL_PROMPT; m_tracking_callback.type=attr_callback; m_tracking_callback.u.callback=NULL; struct attr id={attr_id}; |