diff options
author | takeshi_hoshina <takeshi_hoshina@mail.toyota.co.jp> | 2020-10-22 14:58:56 +0900 |
---|---|---|
committer | takeshi_hoshina <takeshi_hoshina@mail.toyota.co.jp> | 2020-10-22 14:58:56 +0900 |
commit | 4204309872da5cb401cbb2729d9e2d4869a87f42 (patch) | |
tree | c7415e8600205e40ff7e91e8e5f4c411f30329f2 /meta-agl-devel/meta-speech-framework/meta-aac | |
parent | 5b80bfd7bffd4c20d80b7c70a7130529e9a755dd (diff) |
agl-basesystem 0.1sandbox/ToshikazuOhiwa/master
Diffstat (limited to 'meta-agl-devel/meta-speech-framework/meta-aac')
11 files changed, 528 insertions, 6 deletions
diff --git a/meta-agl-devel/meta-speech-framework/meta-aac/recipes-apis/alexa-voiceagent-service/alexa-voice-high-config/voice-high.json b/meta-agl-devel/meta-speech-framework/meta-aac/recipes-apis/alexa-voiceagent-service/alexa-voice-high-config/voice-high.json new file mode 100644 index 00000000..f460ccfc --- /dev/null +++ b/meta-agl-devel/meta-speech-framework/meta-aac/recipes-apis/alexa-voiceagent-service/alexa-voice-high-config/voice-high.json @@ -0,0 +1 @@ +{ "default": "VA-001" } diff --git a/meta-agl-devel/meta-speech-framework/meta-aac/recipes-apis/alexa-voiceagent-service/alexa-voice-high-config_1.0.bb b/meta-agl-devel/meta-speech-framework/meta-aac/recipes-apis/alexa-voiceagent-service/alexa-voice-high-config_1.0.bb new file mode 100644 index 00000000..736a7ce5 --- /dev/null +++ b/meta-agl-devel/meta-speech-framework/meta-aac/recipes-apis/alexa-voiceagent-service/alexa-voice-high-config_1.0.bb @@ -0,0 +1,20 @@ +SUMMARY = "High level voice service binding default voiceagent configuration for Alexa" +DESCRIPTION = "Alexa default voiceagent JSON configuration file for agl-service-voice-high binding" +HOMEPAGE = "https://gerrit.automotivelinux.org/gerrit/apps/agl-service-voice-high" +SECTION = "apps" + +LICENSE = "Apache-2.0" +LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/Apache-2.0;md5=89aea4e17d99a7cacdbeed46a0096b10" + +SRC_URI = "file://voice-high.json" + +inherit allarch + +do_compile[noexec] = "1" + +do_install () { + install -D -m 644 ${WORKDIR}/voice-high.json ${D}${sysconfdir}/xdg/AGL/voice-high.json +} + +RPROVIDES_${PN} += "virtual/voice-high-config" + diff --git a/meta-agl-devel/meta-speech-framework/meta-aac/recipes-apis/alexa-voiceagent-service/alexa-voiceagent-config/AlexaAutoCoreEngineConfig.json.in b/meta-agl-devel/meta-speech-framework/meta-aac/recipes-apis/alexa-voiceagent-service/alexa-voiceagent-config/AlexaAutoCoreEngineConfig.json.in new file mode 100644 index 00000000..9ead4893 --- /dev/null +++ b/meta-agl-devel/meta-speech-framework/meta-aac/recipes-apis/alexa-voiceagent-service/alexa-voiceagent-config/AlexaAutoCoreEngineConfig.json.in @@ -0,0 +1,184 @@ +{ + "deviceInfo": + { + "clientId":"@@ALEXA_CLIENTID@@", + "deviceSerialNumber":"@@ALEXA_SERIALNUMBER@@", + "productId":"@@ALEXA_PRODUCTID@@" + }, + "libcurlUtils": + { + "CURLOPT_CAPATH":"/etc/ssl/certs" + }, + "miscDatabase": + { + "databaseFilePath":"./miscDatabase.db" + }, + "certifiedSender": + { + "databaseFilePath":"./certifiedSender.db" + }, + "alertsCapabilityAgent": + { + "databaseFilePath":"./alertsCapabilityAgent.db" + }, + "notifications": + { + "databaseFilePath":"./notifications.db" + }, + "settings": + { + "databaseFilePath":"./settings.db", + "defaultAVSClientSettings": + { + "locale":"en-US" + } + }, + "aace.storage": { + "localStoragePath": "./sample-aace.db", + "storageType": "sqlite" + }, + "aace.vehicle": { + "info": { + "make": "Amazon", + "model": "AACE", + "year": "2018", + "trim": "aac", + "geography": "US", + "version": "1.2.3", + "os": "sample-aace", + "arch": "sample-aace", + "language": "en_US", + "microphone": "SingleArray", + "countries": "US,GB,IE,CA,DE,AT,IN,JP,AU,NZ,FR" + }, + "operatingCountry": "US", + "currentLocation": "36.1363,-115.1513" + }, + "aace.audio.input": { + "voice": "Default" + }, + "aace.audio.output": { + "tts": "Speech-High", + "music": "Speech-Low" + }, + "aace.wakeword": { + "enabled":@@WAKEWORD@@ + }, + "aace.cbl": { + "enabled": true + }, + "aace.localmediasource": { + "enabled":false, + "sources": { + "bluetooth":false, + "usb":false, + "fmRadio":false, + "amRadio":false, + "satelliteRadio":false, + "lineIn":false, + "compactDisc":false + } + }, + "aace.localvoicecontrol": { + "enabled":false, + "socketRootDirectory":"/var/" + }, + "aace.localskills": { + "aace.carcontrol": { + "enabled": false, + "cannedzones": [ + { + "name" : "zone.all", + "enabled": true, + "climate": { + "syncController": false, + "recirculationController": false + }, + "airconditioner" : { + "modes": { + "AUTO": true, + "ECONOMY": false, + "MANUAL": false, + "MAXIMIUM": false + } + }, + "heater" : { + "minimum": 60.0, + "maximum": 80.0, + "precision": 1.0, + "unit": "FAHRENHEIT" + }, + "fan" : { + "minimum": 0.0, + "maximium": 10.0, + "precision": 1.0 + }, + "vent": { + "positions" : { + "BODY": true, + "MIX": false, + "FLOOR": false, + "WINDSHIELD": false + } + }, + "window" : { + "defrost": true + }, + "light" : { + "type": "LIGHT", + "colors" : { + "WHITE": true, + "RED": true, + "ORANGE": true, + "YELLOW": true, + "GREEN": true, + "BLUE": true, + "INDIGO": true, + "VIOLET": true + } + } + }, + { + "name" : "zone.back.driver", + "enabled": false + }, + { + "name" : "zone.back.passenger", + "enabled": false + }, + { + "name" : "zone.driver", + "enabled": false + }, + { + "name" : "zone.first.row", + "enabled": false + }, + { + "name" : "zone.fourth.row", + "enabled": false + }, + { + "name" : "zone.front", + "enabled": false + }, + { + "name" : "zone.passenger", + "enabled": false + }, + { + "name" : "zone.rear", + "enabled": false + }, + { + "name" : "zone.second.row", + "enabled": false + }, + { + "name" : "zone.third.row", + "enabled": false + } + ] + } + } +} diff --git a/meta-agl-devel/meta-speech-framework/meta-aac/recipes-apis/alexa-voiceagent-service/alexa-voiceagent-config_1.0.bb b/meta-agl-devel/meta-speech-framework/meta-aac/recipes-apis/alexa-voiceagent-service/alexa-voiceagent-config_1.0.bb new file mode 100644 index 00000000..7e5992bb --- /dev/null +++ b/meta-agl-devel/meta-speech-framework/meta-aac/recipes-apis/alexa-voiceagent-service/alexa-voiceagent-config_1.0.bb @@ -0,0 +1,40 @@ +SUMMARY = "Alexa service binding default configuration to connect to Alexa" +DESCRIPTION = "Alexa alexa-voiceagent-service binding configuration files" +HOMEPAGE = "https://github.com/alexa/alexa-auto-sdk/tree/master/platforms/agl/alexa-voiceagent-service" +SECTION = "apps" + +LICENSE = "Apache-2.0" +LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/Apache-2.0;md5=89aea4e17d99a7cacdbeed46a0096b10" + +SRC_URI = "file://AlexaAutoCoreEngineConfig.json.in" + +inherit allarch + +ALEXA_WAKEWORD ??= "false" + +do_compile () { + + if test x"${ALEXA_CLIENTID}" == x"" ; then + bbfatal "ALEXA CLIENTID not defined in your environment e.g. conf/local.conf" + fi + + if test x"${ALEXA_SERIALNUMBER}" == x"" ; then + bbfatal "ALEXA SERIALNUMBER not defined in your environment e.g. conf/local.conf" + fi + + if test x"${ALEXA_PRODUCTID}" == x"" ; then + bbfatal "ALEXA PRODUCTID not defined in your environment e.g. conf/local.conf" + fi + +} + +do_install () { + #replace + sed -e "s/@@ALEXA_CLIENTID@@/${ALEXA_CLIENTID}/" -e "s/@@ALEXA_SERIALNUMBER@@/${ALEXA_SERIALNUMBER}/" -e "s/@@ALEXA_PRODUCTID@@/${ALEXA_PRODUCTID}/" -e "s/@@WAKEWORD@@/${ALEXA_WAKEWORD}/" ${WORKDIR}/AlexaAutoCoreEngineConfig.json.in > ${WORKDIR}/AlexaAutoCoreEngineConfig.json + + # install + install -D -m 644 ${WORKDIR}/AlexaAutoCoreEngineConfig.json ${D}${sysconfdir}/xdg/AGL/AlexaAutoCoreEngineConfig.json +} + +RPROVIDES_${PN} += "virtual/alexa-voiceagent-config" + diff --git a/meta-agl-devel/meta-speech-framework/meta-aac/recipes-apis/alexa-voiceagent-service/alexa-voiceagent-service/0001-remove-library-dependency-copying.patch b/meta-agl-devel/meta-speech-framework/meta-aac/recipes-apis/alexa-voiceagent-service/alexa-voiceagent-service/0001-remove-library-dependency-copying.patch index 7b0141c4..3e45c527 100644 --- a/meta-agl-devel/meta-speech-framework/meta-aac/recipes-apis/alexa-voiceagent-service/alexa-voiceagent-service/0001-remove-library-dependency-copying.patch +++ b/meta-agl-devel/meta-speech-framework/meta-aac/recipes-apis/alexa-voiceagent-service/alexa-voiceagent-service/0001-remove-library-dependency-copying.patch @@ -9,11 +9,11 @@ Upstream-Status: Inappropriate [embedded specific] Signed-off-by: Scott Murray <scott.murray@konsulko.com> -diff --git a/platforms/agl/alexa-voiceagent-service/libs/CMakeLists.txt b/platforms/agl/alexa-voiceagent-service/libs/CMakeLists.txt -index 4732e7b..ffc149d 100644 +diff --git a/libs/CMakeLists.txt b/libs/CMakeLists.txt +index 4732e7b..938e5f3 100644 --- a/libs/CMakeLists.txt +++ b/libs/CMakeLists.txt -@@ -70,14 +70,6 @@ add_avs_library(SpeechEncoder ${AAC_HOME}/lib/libSpeechEncoder.so) +@@ -70,22 +70,13 @@ add_avs_library(SpeechEncoder ${AAC_HOME}/lib/libSpeechEncoder.so) add_avs_library(OpusEncoderContext ${AAC_HOME}/lib/libOpusEncoderContext.so) add_avs_library(SpeechSynthesizer ${AAC_HOME}/lib/libSpeechSynthesizer.so) add_avs_library(TemplateRuntime ${AAC_HOME}/lib/libTemplateRuntime.so) @@ -28,3 +28,12 @@ index 4732e7b..ffc149d 100644 add_avs_library(equalizer ${AAC_HOME}/lib/libEqualizer.so) add_avs_library(EqualizerImplementations ${AAC_HOME}/lib/libEqualizerImplementations.so) +-if(EXISTS ${AAC_HOME}/lib/libpryon_lite.so.1.13) ++if(EXISTS ${AAC_HOME}/lib/libAACEAmazonLiteEngine.so) + add_aace_library(AACEAmazonLiteEngine) + add_avs_library(AMAZONLITE ${AAC_HOME}/lib/libAMAZONLITE.so) + add_avs_library(KeywordDetectorProvider ${AAC_HOME}/lib/libKeywordDetectorProvider.so) +- add_avs_library(pryon_lite ${AAC_HOME}/lib/libpryon_lite.so.1.13) + endif() + + if(EXISTS ${AAC_HOME}/lib/libAACEGStreamerEngine.so) diff --git a/meta-agl-devel/meta-speech-framework/meta-aac/recipes-apis/alexa-voiceagent-service/alexa-voiceagent-service/0005-fix-segmentation-fault-for-release-build-mode.patch b/meta-agl-devel/meta-speech-framework/meta-aac/recipes-apis/alexa-voiceagent-service/alexa-voiceagent-service/0005-fix-segmentation-fault-for-release-build-mode.patch new file mode 100644 index 00000000..5012dfe8 --- /dev/null +++ b/meta-agl-devel/meta-speech-framework/meta-aac/recipes-apis/alexa-voiceagent-service/alexa-voiceagent-service/0005-fix-segmentation-fault-for-release-build-mode.patch @@ -0,0 +1,33 @@ +Fix segmentation fault for release build mode + +'int IAFBApi::callSync(...)' is missing a return +statement. When the sdk is compiled in release mode +executing this code results in a segmentation fault. + +According to the C++ standard, a return statement is +required on a function that returns a non-void value. +Specifically: <<Flowing off the end of a function is +equivalent to a return with no value; this results in +undefined behaviour in a value-returning function.>> + +The proposed fix provides the missing return statement +for IAFBApi's callSync method. + +Upstream-Status: Pending + +Signed-off-by: Raquel Medina <raquel.medina@konsulko.com> + +diff --git a/platforms/agl/alexa-voiceagent-service/src/plugins/afb/AFBApiImpl.cpp b/platforms/agl/alexa-voiceagent-service/src/plugins/afb/AFBApiImpl.cpp +index 5ed9bce..e68ef7f 100644 +--- a/src/plugins/afb/AFBApiImpl.cpp ++++ b/src/plugins/afb/AFBApiImpl.cpp +@@ -77,6 +77,8 @@ int AFBApiImpl::callSync( + info = infoStr; + free(infoStr); + } ++ ++ return rc; + } + + /// Shim to transfer C++ function to C callback using void* + diff --git a/meta-agl-devel/meta-speech-framework/meta-aac/recipes-apis/alexa-voiceagent-service/alexa-voiceagent-service/0006-fix-event-argument-json.patch b/meta-agl-devel/meta-speech-framework/meta-aac/recipes-apis/alexa-voiceagent-service/alexa-voiceagent-service/0006-fix-event-argument-json.patch new file mode 100644 index 00000000..8c6f1e4b --- /dev/null +++ b/meta-agl-devel/meta-speech-framework/meta-aac/recipes-apis/alexa-voiceagent-service/alexa-voiceagent-service/0006-fix-event-argument-json.patch @@ -0,0 +1,183 @@ +Fix event argument JSON + +It was discovered while trying to use some of the capabilities events +that the argument JSON was incorrectly formatted, with instances of +all or part of it being double-quoted as strings with escaping. A +couple instances of this had previously been worked around by hacks +involving reparsing all or some parts of the arguments a second time +with a JSON parser, but it seems better to fix it at the source so +that the events match documentation and are usable as is. + +Note that it is ATM not clear if all affected event argument payloads +are correct, e.g. LocalMediaSource may need some more work. + +Upstream-Status: Pending + +Signed-off-by: Scott Murray <scott.murray@konsulko.com> + +diff --git a/src/plugins/aasb-client/AlexaCapabilityDirectiveRouterImpl.cpp b/src/plugins/aasb-client/AlexaCapabilityDirectiveRouterImpl.cpp +index 6aea920..23ed90c 100644 +--- a/src/plugins/aasb-client/AlexaCapabilityDirectiveRouterImpl.cpp ++++ b/src/plugins/aasb-client/AlexaCapabilityDirectiveRouterImpl.cpp +@@ -17,6 +17,8 @@ + + #include <sstream> + ++#include <json-c/json.h> ++ + #include <aasb/Consts.h> + + #include "AlexaConsts.h" +@@ -322,7 +324,16 @@ void AlexaCapabilityDirectiveRouterImpl::processTemplateRuntimeAction( + + json_object* argsJ = json_object_new_object(); + json_object* actionJ = json_object_new_string(vshlCapabilityAction.c_str()); +- json_object* payloadJ = json_object_new_string(payload.c_str()); ++ json_object* payloadJ = NULL; ++ if(payload.length()) { ++ payloadJ = json_tokener_parse(payload.c_str()); ++ } else { ++ payloadJ = json_object_new_string(""); ++ } ++ if(!payloadJ) { ++ m_logger->log(Level::ERROR, TAG, "Unable to parse payload JSON: " + payload); ++ return; ++ } + json_object_object_add(argsJ, agl::alexa::JSON_ATTR_ACTION.c_str(), actionJ); + json_object_object_add(argsJ, agl::alexa::JSON_ATTR_PAYLOAD.c_str(), payloadJ); + +@@ -343,24 +354,40 @@ void AlexaCapabilityDirectiveRouterImpl::processCBLAction( + const std::string& payload) { + m_logger->log(Level::DEBUG, TAG, "Processing CBL action: " + action); + +- json_object* eventDataJ = json_object_new_object(); ++ json_object* payloadJ = NULL; ++ if(payload.length()) { ++ payloadJ = json_tokener_parse(payload.c_str()); ++ } else { ++ payloadJ = json_object_new_string(""); ++ } ++ if(!payloadJ) { ++ m_logger->log(Level::ERROR, TAG, "Unable to parse payload JSON: " + payload); ++ return; ++ } ++ // The payload string may already be of the form of a document like ++ // "{ "payload" : { ... } }", the simplest way to handle that is to use ++ // it as the event json_object if that's the case, that way we avoid ++ // having to worry about copying. ++ json_object* eventDataJ = NULL; ++ if(json_object_object_get_ex(payloadJ, "payload", NULL)) { ++ eventDataJ = payloadJ; ++ } else { ++ eventDataJ = json_object_new_object(); ++ json_object_object_add(eventDataJ, JSON_ATTR_PAYLOAD.c_str(), payloadJ); ++ } + json_object* vaIdJ = json_object_new_string(m_alexaVoiceAgentId.c_str()); +- + json_object_object_add(eventDataJ, JSON_ATTR_VOICEAGENT_ID.c_str(), vaIdJ); + + int observers = 0; + if (action == aasb::bridge::ACTION_CBL_CODEPAIR_RECEIVED) { + m_logger->log(Level::INFO, TAG, "CBL codepair received: " + payload); +- json_object* payloadJ = json_object_new_string(payload.c_str()); +- json_object_object_add(eventDataJ, JSON_ATTR_PAYLOAD.c_str(), payloadJ); + observers = m_cblCodePairReceivedEvent->publishEvent(eventDataJ); + } else if (action == aasb::bridge::ACTION_CBL_CODEPAIR_EXPIRED) { + m_logger->log(Level::INFO, TAG, "CBL codepair expired: " + payload); +- json_object* payloadJ = json_object_new_string(payload.c_str()); +- json_object_object_add(eventDataJ, JSON_ATTR_PAYLOAD.c_str(), payloadJ); + observers = m_cblCodePairExpiredEvent->publishEvent(eventDataJ); + } else { + m_logger->log(Level::INFO, TAG, "Unhandled action: " + action); ++ json_object_put(eventDataJ); + } + + std::stringstream logMsg; +diff --git a/src/plugins/dispatchers/local-voice-control/car-control/CarControlDispatcher.cpp b/src/plugins/dispatchers/local-voice-control/car-control/CarControlDispatcher.cpp +index 096f72f..75108d4 100644 +--- a/src/plugins/dispatchers/local-voice-control/car-control/CarControlDispatcher.cpp ++++ b/src/plugins/dispatchers/local-voice-control/car-control/CarControlDispatcher.cpp +@@ -72,7 +72,16 @@ void CarControlDispatcher::onReceivedDirective( + + json_object* argsJ = json_object_new_object(); + json_object* actionJ = json_object_new_string(vshlCapabilityAction.c_str()); +- json_object* payloadJ = json_object_new_string(payload.c_str()); ++ json_object* payloadJ = NULL; ++ if(payload.length()) { ++ payloadJ = json_tokener_parse(payload.c_str()); ++ } else { ++ payloadJ = json_object_new_string(""); ++ } ++ if(!payloadJ) { ++ m_logger->log(Level::ERROR, TAG, "Unable to parse payload JSON: " + payload); ++ return; ++ } + json_object_object_add(argsJ, agl::alexa::JSON_ATTR_ACTION.c_str(), actionJ); + json_object_object_add(argsJ, agl::alexa::JSON_ATTR_PAYLOAD.c_str(), payloadJ); + +diff --git a/src/plugins/dispatchers/localmediasource/LocalMediaSourceDispatcher.cpp b/src/plugins/dispatchers/localmediasource/LocalMediaSourceDispatcher.cpp +index c261a56..04ac10c 100644 +--- a/src/plugins/dispatchers/localmediasource/LocalMediaSourceDispatcher.cpp ++++ b/src/plugins/dispatchers/localmediasource/LocalMediaSourceDispatcher.cpp +@@ -71,7 +71,16 @@ void LocalMediaSourceDispatcher::onReceivedDirective( + + json_object* argsJ = json_object_new_object(); + json_object* actionJ = json_object_new_string(vshlCapabilityAction.c_str()); +- json_object* payloadJ = json_object_new_string(payload.c_str()); ++ json_object* payloadJ = NULL; ++ if(payload.length()) { ++ payloadJ = json_tokener_parse(payload.c_str()); ++ } else { ++ payloadJ = json_object_new_string(""); ++ } ++ if(!payloadJ) { ++ m_logger->log(Level::ERROR, TAG, "Unable to parse payload JSON: " + payload); ++ return; ++ } + json_object_object_add(argsJ, agl::alexa::JSON_ATTR_ACTION.c_str(), actionJ); + json_object_object_add(argsJ, agl::alexa::JSON_ATTR_PAYLOAD.c_str(), payloadJ); + +diff --git a/src/plugins/dispatchers/navigation/NavigationDispatcher.cpp b/src/plugins/dispatchers/navigation/NavigationDispatcher.cpp +index 55a6017..283b42b 100644 +--- a/src/plugins/dispatchers/navigation/NavigationDispatcher.cpp ++++ b/src/plugins/dispatchers/navigation/NavigationDispatcher.cpp +@@ -68,7 +68,16 @@ void NavigationDispatcher::onReceivedDirective( + + json_object* argsJ = json_object_new_object(); + json_object* actionJ = json_object_new_string(vshlCapabilityAction.c_str()); +- json_object* payloadJ = json_object_new_string(payload.c_str()); ++ json_object* payloadJ = NULL; ++ if(payload.length()) { ++ payloadJ = json_tokener_parse(payload.c_str()); ++ } else { ++ payloadJ = json_object_new_string(""); ++ } ++ if(!payloadJ) { ++ m_logger->log(Level::ERROR, TAG, "Unable to parse payload JSON: " + payload); ++ return; ++ } + json_object_object_add(argsJ, agl::alexa::JSON_ATTR_ACTION.c_str(), actionJ); + json_object_object_add(argsJ, agl::alexa::JSON_ATTR_PAYLOAD.c_str(), payloadJ); + +diff --git a/src/plugins/dispatchers/phonecall/PhoneCallDispatcher.cpp b/src/plugins/dispatchers/phonecall/PhoneCallDispatcher.cpp +index 29ad96a..3432892 100644 +--- a/src/plugins/dispatchers/phonecall/PhoneCallDispatcher.cpp ++++ b/src/plugins/dispatchers/phonecall/PhoneCallDispatcher.cpp +@@ -86,7 +86,16 @@ void PhoneCallDispatcher::onReceivedDirective( + + json_object* argsJ = json_object_new_object(); + json_object* actionJ = json_object_new_string(vshlCapabilityAction.c_str()); +- json_object* payloadJ = json_object_new_string(payload.c_str()); ++ json_object* payloadJ = NULL; ++ if(payload.length()) { ++ payloadJ = json_tokener_parse(payload.c_str()); ++ } else { ++ payloadJ = json_object_new_string(""); ++ } ++ if(!payloadJ) { ++ m_logger->log(Level::ERROR, TAG, "Unable to parse payload JSON: " + payload); ++ return; ++ } + json_object_object_add(argsJ, agl::alexa::JSON_ATTR_ACTION.c_str(), actionJ); + json_object_object_add(argsJ, agl::alexa::JSON_ATTR_PAYLOAD.c_str(), payloadJ); + diff --git a/meta-agl-devel/meta-speech-framework/meta-aac/recipes-apis/alexa-voiceagent-service/alexa-voiceagent-service/alexa.json b/meta-agl-devel/meta-speech-framework/meta-aac/recipes-apis/alexa-voiceagent-service/alexa-voiceagent-service/alexa.json new file mode 100644 index 00000000..48918015 --- /dev/null +++ b/meta-agl-devel/meta-speech-framework/meta-aac/recipes-apis/alexa-voiceagent-service/alexa-voiceagent-service/alexa.json @@ -0,0 +1,14 @@ +{ + "id": "VA-001", + "active": true, + "name": "Alexa", + "api": "alexa-voiceagent", + "wakewords": [ + "alexa", + "computer", + "echo" + ], + "activewakeword": "alexa", + "description": "Alexa voice assistant by Amazon.", + "vendor": "Amazon.com Services Inc" +} diff --git a/meta-agl-devel/meta-speech-framework/meta-aac/recipes-apis/alexa-voiceagent-service/alexa-voiceagent-service_git.bb b/meta-agl-devel/meta-speech-framework/meta-aac/recipes-apis/alexa-voiceagent-service/alexa-voiceagent-service_git.bb index 296cf2d2..f0211552 100644 --- a/meta-agl-devel/meta-speech-framework/meta-aac/recipes-apis/alexa-voiceagent-service/alexa-voiceagent-service_git.bb +++ b/meta-agl-devel/meta-speech-framework/meta-aac/recipes-apis/alexa-voiceagent-service/alexa-voiceagent-service_git.bb @@ -17,13 +17,17 @@ DEPENDS = " \ aac-module-navigation \ aac-module-phone-control \ aac-module-gstreamer \ + ${@bb.utils.contains("ALEXA_WAKEWORD", "true", "aac-module-amazonlite pryon-lite", "", d)} \ " SRC_URI = "git://github.com/alexa/alexa-auto-sdk.git;protocol=https;branch=2.0 \ + file://alexa.json \ file://0001-remove-library-dependency-copying.patch \ file://0002-update-config.xml.in.patch \ file://0003-update-audio-device-configuration.patch \ file://0004-update-config-and-database-paths.patch \ + file://0005-fix-segmentation-fault-for-release-build-mode.patch \ + file://0006-fix-event-argument-json.patch \ " SRCREV = "86916d2d8c1702a8be3c88a9012ca56583bcc0c8" @@ -34,8 +38,23 @@ inherit cmake aglwgt EXTRA_OECMAKE += "-DAAC_HOME=${RECIPE_SYSROOT}/${AAC_PREFIX}" +ALEXA_WAKEWORD ??= "false" + +do_install_append() { + install -D -m 0644 ${WORKDIR}/alexa.json ${D}${sysconfdir}/xdg/AGL/voiceagents/alexa.json +} + +PACKAGES =+ "${PN}-conf" + +FILES_${PN}-conf = "${sysconfdir}/xdg/AGL/voiceagents/*" + # NOTE: curl and opus are from the base SDK libraries, sqlite3 from the # core module -RDEPENDS_${PN} += "libcurl libopus libsqlite3" - -RPROVIDES_${PN} += "virtual/voiceagent" +RDEPENDS_${PN} += " \ + libcurl \ + libopus \ + libsqlite3 \ + ${PN}-conf \ + ${@bb.utils.contains("ALEXA_WAKEWORD", "true", "pryon-lite", "", d)} \ + gstreamer1.0-plugins-bad-hls \ +" diff --git a/meta-agl-devel/meta-speech-framework/meta-aac/recipes-platform/packagegroups/packagegroup-agl-ivi-services.bbappend b/meta-agl-devel/meta-speech-framework/meta-aac/recipes-platform/packagegroups/packagegroup-agl-ivi-services.bbappend new file mode 100644 index 00000000..43836942 --- /dev/null +++ b/meta-agl-devel/meta-speech-framework/meta-aac/recipes-platform/packagegroups/packagegroup-agl-ivi-services.bbappend @@ -0,0 +1,4 @@ +RDEPENDS_${PN} += " \ + alexa-voiceagent-service \ + ${@bb.utils.contains("DISTRO_FEATURES", "agl-demo-preload", "virtual/alexa-voiceagent-config", "",d)} \ +" diff --git a/meta-agl-devel/meta-speech-framework/meta-aac/recipes-platform/packagegroups/packagegroup-agl-voiceagent-alexa.bb b/meta-agl-devel/meta-speech-framework/meta-aac/recipes-platform/packagegroups/packagegroup-agl-voiceagent-alexa.bb new file mode 100644 index 00000000..5f38e7ef --- /dev/null +++ b/meta-agl-devel/meta-speech-framework/meta-aac/recipes-platform/packagegroups/packagegroup-agl-voiceagent-alexa.bb @@ -0,0 +1,15 @@ +SUMMARY = "The software for the AGL Alexa voiceagent feature" +DESCRIPTION = "The software for the AGL Alexa voiceagent feature" + +LICENSE = "MIT" + +inherit packagegroup + +PACKAGES = "\ + packagegroup-agl-voiceagent-alexa \ +" + +RDEPENDS_${PN} += " \ + alexa-voiceagent-service \ + ${@bb.utils.contains("DISTRO_FEATURES", "agl-demo-preload", "virtual/alexa-voiceagent-config", "",d)} \ +" |