summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author <philippe colliot>2015-01-30 12:54:23 +0100
committer <philippe colliot>2015-01-30 12:54:23 +0100
commit2264cb9e3067a155404bcb660423f045baa419e9 (patch)
tree99f3c0130141353aa91b8a426a5aa80e63238a12
parentf0ddb754ad4e16d8f650485a610818c06e0ceac3 (diff)
downloadpoi-service-2264cb9e3067a155404bcb660423f045baa419e9.tar.gz
some updates for preparing connection to speech output
-rw-r--r--.gitignore2
-rw-r--r--src/navigation/navigation-core/enhancedposition-plugin/genivi_positioning_enhancedposition.cxx21
-rw-r--r--src/navigation/navigation-core/guidance-plugin/genivi_navigationcore_guidance.cxx70
3 files changed, 61 insertions, 32 deletions
diff --git a/.gitignore b/.gitignore
index e983dc8..4bdaf60 100644
--- a/.gitignore
+++ b/.gitignore
@@ -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};