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 SAMPLEAPP_LOCALEASSETSMANAGER_H_
17 #define SAMPLEAPP_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 sampleApp {
41 
42 #if defined(KWD) && defined(ASSET_MANAGER)
43 using namespace acsdkAssets::manager;
44 #endif
45 
54 public:
62  static std::shared_ptr<avsCommon::sdkInterfaces::LocaleAssetsManagerInterface> createLocaleAssetsManagerInterface(
63  const std::shared_ptr<avsCommon::utils::configuration::ConfigurationNode>& configurationNode,
64  const std::shared_ptr<acsdkShutdownManagerInterfaces::ShutdownNotifierInterface>& shutdownNotifier);
65 
72  static std::shared_ptr<LocaleAssetsManager> createLocaleAssetsManager(
73  const std::shared_ptr<avsCommon::utils::configuration::ConfigurationNode>& configurationNode);
74 
81  static std::shared_ptr<LocaleAssetsManager> create(bool enableWakeWord);
82 
85  bool changeAssets(const Locales& locales, const WakeWords& wakeWords) override;
86  void cancelOngoingChange() override;
87  WakeWordsSets getDefaultSupportedWakeWords() const override;
88  std::map<LanguageTag, WakeWordsSets> getLanguageSpecificWakeWords() const override;
89  std::map<Locale, WakeWordsSets> getLocaleSpecificWakeWords() const override;
90  WakeWordsSets getSupportedWakeWords(const Locale& locale) const override;
91  std::set<Locale> getSupportedLocales() const override;
92  LocaleCombinations getSupportedLocaleCombinations() const override;
93  Locale getDefaultLocale() const override;
94  Locales getDefaultLocales() const override;
95  void addLocaleAssetsObserver(
96  const std::shared_ptr<alexaClientSDK::avsCommon::sdkInterfaces::LocaleAssetsObserverInterface>& observer)
97  override;
98  void removeLocaleAssetsObserver(
99  const std::shared_ptr<alexaClientSDK::avsCommon::sdkInterfaces::LocaleAssetsObserverInterface>& observer)
100  override;
101  void onConfigurationChanged(const alexaClientSDK::avsCommon::avs::CapabilityConfiguration& configuration) override;
102  void setEndpointRegistrationManager(
103  const std::shared_ptr<
105  override;
107 
110  void doShutdown() override;
112 
113 #ifdef KWD
114 #ifdef ASSET_MANAGER
115 
126  static std::shared_ptr<avsCommon::sdkInterfaces::LocaleAssetsManagerInterface>
127  createLocaleAssetsManagerInterfaceWithKwdAndDavs(
128  const std::shared_ptr<avsCommon::utils::configuration::ConfigurationNode>& configurationNode,
129  const std::shared_ptr<acsdkShutdownManagerInterfaces::ShutdownNotifierInterface>& shutdownNotifier,
130  const std::shared_ptr<avsCommon::avs::AudioInputStream>& audioInputStream,
131  const std::shared_ptr<avsCommon::utils::AudioFormat>& audioFormat,
132  const std::shared_ptr<acsdkKWDImplementations::AbstractKeywordDetector>& keywordDetector,
133  const std::shared_ptr<AssetManager>& assetManager);
134 
145  static std::shared_ptr<LocaleAssetsManager> createLocaleAssetsManagerWithKwdAndDavs(
146  const std::shared_ptr<avsCommon::utils::configuration::ConfigurationNode>& configurationNode,
147  const std::shared_ptr<avsCommon::avs::AudioInputStream>& audioInputStream,
148  const std::shared_ptr<avsCommon::utils::AudioFormat>& audioFormat,
149  const std::shared_ptr<acsdkKWDImplementations::AbstractKeywordDetector>& keywordDetector,
150  const std::shared_ptr<AssetManager>& assetManager);
151 #else
152 
162  static std::shared_ptr<avsCommon::sdkInterfaces::LocaleAssetsManagerInterface>
163  createLocaleAssetsManagerInterfaceWithKwd(
164  const std::shared_ptr<avsCommon::utils::configuration::ConfigurationNode>& configurationNode,
165  const std::shared_ptr<acsdkShutdownManagerInterfaces::ShutdownNotifierInterface>& shutdownNotifier,
166  const std::shared_ptr<avsCommon::avs::AudioInputStream>& audioInputStream,
167  const std::shared_ptr<avsCommon::utils::AudioFormat>& audioFormat,
168  const std::shared_ptr<acsdkKWDImplementations::AbstractKeywordDetector>& keywordDetector);
169 
179  static std::shared_ptr<LocaleAssetsManager> createLocaleAssetsManagerWithKwd(
180  const std::shared_ptr<avsCommon::utils::configuration::ConfigurationNode>& configurationNode,
181  const std::shared_ptr<avsCommon::avs::AudioInputStream>& audioInputStream,
182  const std::shared_ptr<avsCommon::utils::AudioFormat>& audioFormat,
183  const std::shared_ptr<acsdkKWDImplementations::AbstractKeywordDetector>& keywordDetector);
184 #endif
185  void setDefaultClient(const std::shared_ptr<defaultClient::DefaultClient>& defaultClient);
186 #endif
187 private:
192 
193 #ifdef KWD
194 #ifdef ASSET_MANAGER
195 
204  const std::shared_ptr<avsCommon::avs::AudioInputStream>& audioInputStream,
205  const std::shared_ptr<avsCommon::utils::AudioFormat>& audioFormat,
206  const std::shared_ptr<acsdkKWDImplementations::AbstractKeywordDetector>& keywordDetector,
207  const std::shared_ptr<AssetManager>& assetManager);
208 #else
209 
217  const std::shared_ptr<avsCommon::avs::AudioInputStream>& audioInputStream,
218  const std::shared_ptr<avsCommon::utils::AudioFormat>& audioFormat,
219  const std::shared_ptr<acsdkKWDImplementations::AbstractKeywordDetector>& keywordDetector);
220 #endif
221 #endif
222 
228  bool initialize(const std::shared_ptr<avsCommon::utils::configuration::ConfigurationNode>& configurationNode);
229 
237  bool initialize(bool enableWakeWord, const avsCommon::utils::configuration::ConfigurationNode& configurationNode);
238 
240  WakeWordsSets m_supportedWakeWords;
241 
243  std::set<Locale> m_supportedLocales;
244 
246  LocaleCombinations m_supportedLocalesCombinations;
247 
249  Locale m_defaultLocale;
250 
252  Locales m_defaultLocales;
253 
254 #ifdef KWD
255  const std::shared_ptr<avsCommon::avs::AudioInputStream> m_audioInputStream;
258  const std::shared_ptr<avsCommon::utils::AudioFormat> m_audioFormat;
259 
261  std::mutex m_defaultClientMutex;
262 
264  std::mutex m_keywordDetectorMutex;
265 
267 
269  std::shared_ptr<defaultClient::DefaultClient> m_DefaultClient;
270 
272  std::shared_ptr<acsdkKWDImplementations::AbstractKeywordDetector> m_keywordDetector;
273 #ifdef ASSET_MANAGER
274  std::shared_ptr<AssetManager> m_assetManager;
276 #endif
277 #endif
278 
280  mutable std::mutex m_observersMutex;
281 
283  std::mutex m_ermMutex;
284 
286 
288  std::unordered_set<std::shared_ptr<alexaClientSDK::avsCommon::sdkInterfaces::LocaleAssetsObserverInterface>>
289  m_observers;
290 
292  std::shared_ptr<alexaClientSDK::avsCommon::sdkInterfaces::endpoints::EndpointRegistrationManagerInterface>
293  m_endpointRegistrationManager;
294 };
295 
296 } // namespace sampleApp
297 } // namespace alexaClientSDK
298 
299 #endif // SAMPLEAPP_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
Alias for the locale type.
Definition: DeviceSettingsManager.h:34
Whether or not curl logs should be emitted.
Definition: AVSConnectionManager.h:36
std::set< WakeWords > WakeWordsSets
Definition: LocaleAssetsManagerInterface.h:62
Definition: LocaleAssetsManager.h:51
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