AlexaClientSDK  3.0.0
A cross-platform, modular SDK for interacting with the Alexa Voice Service
LocaleAssetsManager.h
Go to the documentation of this file.
1 /*
2  * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License").
5  * You may not use this file except in compliance with the License.
6  * A copy of the License is located at
7  *
8  * http://aws.amazon.com/apache2.0/
9  *
10  * or in the "license" file accompanying this file. This file is distributed
11  * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
12  * express or implied. See the License for the specific language governing
13  * permissions and limitations under the License.
14  */
15 
16 #ifndef ALEXA_CLIENT_SDK_LIBIPCSERVERSAMPLEAPP_INCLUDE_IPCSERVERSAMPLEAPP_LOCALEASSETSMANAGER_H_
17 #define ALEXA_CLIENT_SDK_LIBIPCSERVERSAMPLEAPP_INCLUDE_IPCSERVERSAMPLEAPP_LOCALEASSETSMANAGER_H_
18 
19 #include <map>
20 #include <memory>
21 #include <mutex>
22 #include <set>
23 #include <unordered_set>
24 
28 
29 #ifdef KWD
30 #ifdef ASSET_MANAGER
32 #endif
37 #endif
38 
39 namespace alexaClientSDK {
40 namespace sampleApplications {
41 namespace ipcServerSampleApp {
42 
43 #if defined(KWD) && defined(ASSET_MANAGER)
44 using namespace acsdkAssets::manager;
45 #endif
46 
55 public:
63  static std::shared_ptr<avsCommon::sdkInterfaces::LocaleAssetsManagerInterface> createLocaleAssetsManagerInterface(
64  const std::shared_ptr<avsCommon::utils::configuration::ConfigurationNode>& configurationNode,
65  const std::shared_ptr<acsdkShutdownManagerInterfaces::ShutdownNotifierInterface>& shutdownNotifier);
66 
73  static std::shared_ptr<LocaleAssetsManager> createLocaleAssetsManager(
74  const std::shared_ptr<avsCommon::utils::configuration::ConfigurationNode>& configurationNode);
75 
82  static std::shared_ptr<LocaleAssetsManager> create(bool enableWakeWord);
83 
86  bool changeAssets(const Locales& locales, const WakeWords& wakeWords) override;
87  void cancelOngoingChange() override;
88  WakeWordsSets getDefaultSupportedWakeWords() const override;
89  std::map<LanguageTag, WakeWordsSets> getLanguageSpecificWakeWords() const override;
90  std::map<Locale, WakeWordsSets> getLocaleSpecificWakeWords() const override;
91  WakeWordsSets getSupportedWakeWords(const Locale& locale) const override;
92  std::set<Locale> getSupportedLocales() const override;
93  LocaleCombinations getSupportedLocaleCombinations() const override;
94  Locale getDefaultLocale() const override;
95  Locales getDefaultLocales() const override;
96  void addLocaleAssetsObserver(
97  const std::shared_ptr<avsCommon::sdkInterfaces::LocaleAssetsObserverInterface>& observer) override;
98  void removeLocaleAssetsObserver(
99  const std::shared_ptr<avsCommon::sdkInterfaces::LocaleAssetsObserverInterface>& observer) override;
100  void onConfigurationChanged(const avsCommon::avs::CapabilityConfiguration& configuration) override;
101  void setEndpointRegistrationManager(
102  const std::shared_ptr<avsCommon::sdkInterfaces::endpoints::EndpointRegistrationManagerInterface>& manager)
103  override;
105 
108  void doShutdown() override;
110 
111 #ifdef KWD
112 #ifdef ASSET_MANAGER
113 
124  static std::shared_ptr<avsCommon::sdkInterfaces::LocaleAssetsManagerInterface>
125  createLocaleAssetsManagerInterfaceWithKwdAndDavs(
126  const std::shared_ptr<avsCommon::utils::configuration::ConfigurationNode>& configurationNode,
127  const std::shared_ptr<acsdkShutdownManagerInterfaces::ShutdownNotifierInterface>& shutdownNotifier,
128  const std::shared_ptr<avsCommon::avs::AudioInputStream>& audioInputStream,
129  const std::shared_ptr<avsCommon::utils::AudioFormat>& audioFormat,
130  const std::shared_ptr<acsdkKWDImplementations::AbstractKeywordDetector>& keywordDetector,
131  const std::shared_ptr<AssetManager>& assetManager);
132 
143  static std::shared_ptr<LocaleAssetsManager> createLocaleAssetsManagerWithKwdAndDavs(
144  const std::shared_ptr<avsCommon::utils::configuration::ConfigurationNode>& configurationNode,
145  const std::shared_ptr<avsCommon::avs::AudioInputStream>& audioInputStream,
146  const std::shared_ptr<avsCommon::utils::AudioFormat>& audioFormat,
147  const std::shared_ptr<acsdkKWDImplementations::AbstractKeywordDetector>& keywordDetector,
148  const std::shared_ptr<AssetManager>& assetManager);
149 #else
150 
160  static std::shared_ptr<avsCommon::sdkInterfaces::LocaleAssetsManagerInterface>
161  createLocaleAssetsManagerInterfaceWithKwd(
162  const std::shared_ptr<avsCommon::utils::configuration::ConfigurationNode>& configurationNode,
163  const std::shared_ptr<acsdkShutdownManagerInterfaces::ShutdownNotifierInterface>& shutdownNotifier,
164  const std::shared_ptr<avsCommon::avs::AudioInputStream>& audioInputStream,
165  const std::shared_ptr<avsCommon::utils::AudioFormat>& audioFormat,
166  const std::shared_ptr<acsdkKWDImplementations::AbstractKeywordDetector>& keywordDetector);
167 
177  static std::shared_ptr<LocaleAssetsManager> createLocaleAssetsManagerWithKwd(
178  const std::shared_ptr<avsCommon::utils::configuration::ConfigurationNode>& configurationNode,
179  const std::shared_ptr<avsCommon::avs::AudioInputStream>& audioInputStream,
180  const std::shared_ptr<avsCommon::utils::AudioFormat>& audioFormat,
181  const std::shared_ptr<acsdkKWDImplementations::AbstractKeywordDetector>& keywordDetector);
182 #endif
183  void setDefaultClient(const std::shared_ptr<defaultClient::DefaultClient>& defaultClient);
184 #endif
185 private:
190 
191 #ifdef KWD
192 #ifdef ASSET_MANAGER
193 
202  const std::shared_ptr<avsCommon::avs::AudioInputStream>& audioInputStream,
203  const std::shared_ptr<avsCommon::utils::AudioFormat>& audioFormat,
204  const std::shared_ptr<acsdkKWDImplementations::AbstractKeywordDetector>& keywordDetector,
205  const std::shared_ptr<AssetManager>& assetManager);
206 #else
207 
215  const std::shared_ptr<avsCommon::avs::AudioInputStream>& audioInputStream,
216  const std::shared_ptr<avsCommon::utils::AudioFormat>& audioFormat,
217  const std::shared_ptr<acsdkKWDImplementations::AbstractKeywordDetector>& keywordDetector);
218 #endif
219 #endif
220 
226  bool initialize(const std::shared_ptr<avsCommon::utils::configuration::ConfigurationNode>& configurationNode);
227 
235  bool initialize(bool enableWakeWord, const avsCommon::utils::configuration::ConfigurationNode& configurationNode);
236 
238  WakeWordsSets m_supportedWakeWords;
239 
241  std::set<Locale> m_supportedLocales;
242 
244  LocaleCombinations m_supportedLocalesCombinations;
245 
247  Locale m_defaultLocale;
248 
250  Locales m_defaultLocales;
251 
252 #ifdef KWD
253  const std::shared_ptr<avsCommon::avs::AudioInputStream> m_audioInputStream;
256  const std::shared_ptr<avsCommon::utils::AudioFormat> m_audioFormat;
257 
259  std::mutex m_defaultClientMutex;
260 
262  std::mutex m_keywordDetectorMutex;
263 
265 
267  std::shared_ptr<defaultClient::DefaultClient> m_DefaultClient;
268 
270  std::shared_ptr<acsdkKWDImplementations::AbstractKeywordDetector> m_keywordDetector;
271 #ifdef ASSET_MANAGER
272  std::shared_ptr<AssetManager> m_assetManager;
274 #endif
275 #endif
276 
278  mutable std::mutex m_observersMutex;
279 
281  std::mutex m_ermMutex;
282 
284 
286  std::unordered_set<std::shared_ptr<avsCommon::sdkInterfaces::LocaleAssetsObserverInterface>> m_observers;
287 
289  std::shared_ptr<avsCommon::sdkInterfaces::endpoints::EndpointRegistrationManagerInterface>
290  m_endpointRegistrationManager;
291 };
292 
293 } // namespace ipcServerSampleApp
294 } // namespace sampleApplications
295 } // namespace alexaClientSDK
296 
297 #endif // ALEXA_CLIENT_SDK_LIBIPCSERVERSAMPLEAPP_INCLUDE_IPCSERVERSAMPLEAPP_LOCALEASSETSMANAGER_H_
std::set< Locales > LocaleCombinations
Definition: LocaleAssetsManagerInterface.h:73
std::set< std::string > WakeWords
Definition: LocaleAssetsManagerInterface.h:57
std::vector< Locale > Locales
Definition: LocaleAssetsManagerInterface.h:68
std::string Locale
Definition: LocaleAssetsManagerInterface.h:46
Whether or not curl logs should be emitted.
Definition: AVSConnectionManager.h:36
std::set< WakeWords > WakeWordsSets
Definition: LocaleAssetsManagerInterface.h:62
Definition: CapabilityConfiguration.h:42

AlexaClientSDK 3.0.0 - Copyright 2016-2022 Amazon.com, Inc. or its affiliates. All Rights Reserved. Licensed under the Apache License, Version 2.0