From c9990fded185b8fc8ab7f7aae6eb809819e7b95d Mon Sep 17 00:00:00 2001 From: Sebastian Eckl <Sebastian_Alois.Eckl@Student.Reutlingen-University.DE> Date: Mon, 14 Jun 2021 22:24:07 +0200 Subject: [PATCH] initial commit for navigation service --- binding/navigation-api.c | 26 +++++++++++++++++++++++++- binding/navigation-api.h | 2 ++ conf.d/cmake/config.cmake | 2 +- 3 files changed, 28 insertions(+), 2 deletions(-) diff --git a/binding/navigation-api.c b/binding/navigation-api.c index 07e5216..b51b549 100644 --- a/binding/navigation-api.c +++ b/binding/navigation-api.c @@ -58,6 +58,9 @@ static afb_event_t get_event_from_value(struct navigation_state *ns, if (!g_strcmp0(value, "waypoints")) return ns->waypoints_event; + if (!g_strcmp0(value, "destination")) + return ns->destination_event; + return NULL; } @@ -73,6 +76,9 @@ static json_object **get_storage_from_value(struct navigation_state *ns, if (!g_strcmp0(value, "waypoints")) return &ns->waypoints_storage; + if (!g_strcmp0(value, "destination")) + return &ns->destination_storage; + return NULL; } @@ -216,6 +222,18 @@ static void broadcast_waypoints(afb_req_t request) // here. } +static void broadcast_destination(afb_req_t request) +{ + json_object* jresp = afb_req_json(request); + broadcast(jresp, "destination", TRUE); + + afb_req_success(request, NULL, "Broadcast destination send"); + + // NOTE: If the Alexa SDK API for pushing local navigation + // updates gets exposed, send update to vshl-capabilities + // here. +} + static void handle_setDestination_event(struct json_object *object) { json_object *jdest = NULL; @@ -319,10 +337,12 @@ static int init(afb_api_t api) ns->status_event = afb_daemon_make_event("status"); ns->position_event = afb_daemon_make_event("position"); ns->waypoints_event = afb_daemon_make_event("waypoints"); + ns->destination_event = afb_daemon_make_event("destination"); if (!afb_event_is_valid(ns->status_event) || !afb_event_is_valid(ns->position_event) || - !afb_event_is_valid(ns->waypoints_event)) { + !afb_event_is_valid(ns->waypoints_event) || + !afb_event_is_valid(ns->destination_event)) { AFB_ERROR("Cannot create events"); return -EINVAL; } @@ -356,6 +376,10 @@ static const afb_verb_t binding_verbs[] = { .verb = "broadcast_waypoints", .callback = broadcast_waypoints, .info = "Broadcast out waypoint event" + },{ + .verb = "broadcast_destination", + .callback = broadcast_destination, + .info = "Broadcast out destination event" }, {} }; diff --git a/binding/navigation-api.h b/binding/navigation-api.h index 457a87d..e38425d 100644 --- a/binding/navigation-api.h +++ b/binding/navigation-api.h @@ -40,11 +40,13 @@ struct navigation_state { afb_event_t status_event; afb_event_t position_event; afb_event_t waypoints_event; + afb_event_t destination_event; // storage json_object *status_storage; json_object *position_storage; json_object *waypoints_storage; + json_object *destination_storage; // locking GRWLock rw_lock; diff --git a/conf.d/cmake/config.cmake b/conf.d/cmake/config.cmake index e096705..9fbc5cb 100644 --- a/conf.d/cmake/config.cmake +++ b/conf.d/cmake/config.cmake @@ -24,7 +24,7 @@ set(PROJECT_PRETTY_NAME "Navigation service for AGL") set(PROJECT_DESCRIPTION "Navigation reporting proxy for consumers") set(PROJECT_URL "https://gerrit.automotivelinux.org/gerrit/apps/agl-service-navigation") set(PROJECT_ICON "icon.png") -set(PROJECT_AUTHOR "Matt Ranostay") +set(PROJECT_AUTHOR "Matt Ranostay - Edited by Sebastian Eckl") set(PROJECT_AUTHOR_MAIL "matt.ranostay@konsulko.com") set(PROJECT_LICENSE "APL2.0") set(PROJECT_LANGUAGES,"C") -- GitLab