Skip to content
This repository has been archived by the owner on Jan 16, 2024. It is now read-only.

Commit

Permalink
Version 1.8.1 alexa-client-sdk
Browse files Browse the repository at this point in the history
Changes in this update:

**Enhancements**

* Added support for adjustment of alert volume.
* Added support for deletion of multiple alerts.
* The following `SpeakerInterface::Type` enumeration values have changed:
  * `AVS_SYNCED` is now `AVS_SPEAKER_VOLUME`.
  * `LOCAL` is now `AVS_ALERTS_VOLUME`.

**Known Issues**
* The `ACL` may encounter issues if audio attachments are received but not consumed.
* `SpeechSynthesizerState` currently uses `GAINING_FOCUS` and `LOSING_FOCUS` as a workaround for handling intermediate state. These states may be removed in a future release.
* The Alexa app doesn't always indicate when a device is successfully connected via Bluetooth.
* Connecting a product to streaming media via Bluetooth will sometimes stop media playback within the source application. Resuming playback through the source application or toggling next/previous will correct playback.
* When a source device is streaming silence via Bluetooth, the Alexa companion app indicates that audio content is streaming.
* The Bluetooth agent assumes that the Bluetooth adapter is always connected to a power source. Disconnecting from a power source during operation is not yet supported.
* On some products, interrupted Bluetooth playback may not resume if other content is locally streamed.
* On Raspberry Pi, when streaming audio via Bluetooth, sometimes the
audio stream stutters.
  • Loading branch information
Keith Huang committed Jul 9, 2018
1 parent 0c0c5c1 commit 872eb56
Show file tree
Hide file tree
Showing 30 changed files with 1,027 additions and 186 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -34,10 +34,10 @@ class SpeakerInterface {
* This enum provides the type of the @c SpeakerInterface.
*/
enum class Type {
/// Speaker source that should be synced with AVS.
AVS_SYNCED,
/// Speaker source that will not be synced with AVS.
LOCAL
/// Volume type reflecting AVS Speaker API volume.
AVS_SPEAKER_VOLUME,
/// Volume type reflecting AVS Alerts API volume.
AVS_ALERTS_VOLUME
};

/**
Expand Down Expand Up @@ -111,11 +111,11 @@ class SpeakerInterface {
*/
inline std::ostream& operator<<(std::ostream& stream, SpeakerInterface::Type type) {
switch (type) {
case SpeakerInterface::Type::AVS_SYNCED:
stream << "AVS_SYNCED";
case SpeakerInterface::Type::AVS_SPEAKER_VOLUME:
stream << "AVS_SPEAKER_VOLUME";
return stream;
case SpeakerInterface::Type::LOCAL:
stream << "LOCAL";
case SpeakerInterface::Type::AVS_ALERTS_VOLUME:
stream << "AVS_ALERTS_VOLUME";
return stream;
}
stream << "UNKNOWN";
Expand Down
4 changes: 2 additions & 2 deletions AVSCommon/Utils/include/AVSCommon/Utils/SDKVersion.h
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ namespace utils {
namespace sdkVersion{

inline static std::string getCurrentVersion(){
return "1.8.0";
return "1.8.1";
}

inline static int getMajorVersion(){
Expand All @@ -42,7 +42,7 @@ inline static int getMinorVersion(){
}

inline static int getPatchVersion(){
return 0;
return 1;
}


Expand Down
34 changes: 17 additions & 17 deletions ApplicationUtilities/DefaultClient/src/DefaultClient.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -430,14 +430,31 @@ bool DefaultClient::initialize(
return false;
}

std::vector<std::shared_ptr<avsCommon::sdkInterfaces::SpeakerInterface>> allSpeakers = {
speakSpeaker, audioSpeaker, alertsSpeaker, notificationsSpeaker, bluetoothSpeaker, ringtoneSpeaker};
allSpeakers.insert(allSpeakers.end(), additionalSpeakers.begin(), additionalSpeakers.end());

/*
* Creating the SpeakerManager Capability Agent - This component is the Capability Agent that implements the
* Speaker interface of AVS.
*/
m_speakerManager = capabilityAgents::speakerManager::SpeakerManager::create(
allSpeakers, contextManager, m_connectionManager, m_exceptionSender);
if (!m_speakerManager) {
ACSDK_ERROR(LX("initializeFailed").d("reason", "unableToCreateSpeakerManager"));
return false;
}

/*
* Creating the Alerts Capability Agent - This component is the Capability Agent that implements the Alerts
* interface of AVS.
*/
m_alertsCapabilityAgent = capabilityAgents::alerts::AlertsCapabilityAgent::create(
m_connectionManager,
m_connectionManager,
m_certifiedSender,
m_audioFocusManager,
m_speakerManager,
contextManager,
m_exceptionSender,
alertStorage,
Expand All @@ -449,8 +466,6 @@ bool DefaultClient::initialize(
return false;
}

addConnectionObserver(m_alertsCapabilityAgent);

addConnectionObserver(m_dialogUXStateAggregator);

/*
Expand Down Expand Up @@ -512,21 +527,6 @@ bool DefaultClient::initialize(
return false;
}

std::vector<std::shared_ptr<avsCommon::sdkInterfaces::SpeakerInterface>> allSpeakers = {
speakSpeaker, audioSpeaker, alertsSpeaker, notificationsSpeaker, bluetoothSpeaker, ringtoneSpeaker};
allSpeakers.insert(allSpeakers.end(), additionalSpeakers.begin(), additionalSpeakers.end());

/*
* Creating the SpeakerManager Capability Agent - This component is the Capability Agent that implements the
* Speaker interface of AVS.
*/
m_speakerManager = capabilityAgents::speakerManager::SpeakerManager::create(
allSpeakers, contextManager, m_connectionManager, m_exceptionSender);
if (!m_speakerManager) {
ACSDK_ERROR(LX("initializeFailed").d("reason", "unableToCreateSpeakerManager"));
return false;
}

/*
* Creating the ExternalMediaPlayer CA - This component is the Capability Agent that implements the
* ExternalMediaPlayer interface of AVS.
Expand Down
22 changes: 21 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,25 @@
## ChangeLog

### v1.8.1 released 07/09/2018:

**Enhancements**

* Added support for adjustment of alert volume.
* Added support for deletion of multiple alerts.
* The following `SpeakerInterface::Type` enumeration values have changed:
* `AVS_SYNCED` is now `AVS_SPEAKER_VOLUME`.
* `LOCAL` is now `AVS_ALERTS_VOLUME`.

**Known Issues**
* The `ACL` may encounter issues if audio attachments are received but not consumed.
* `SpeechSynthesizerState` currently uses `GAINING_FOCUS` and `LOSING_FOCUS` as a workaround for handling intermediate state. These states may be removed in a future release.
* The Alexa app doesn't always indicate when a device is successfully connected via Bluetooth.
* Connecting a product to streaming media via Bluetooth will sometimes stop media playback within the source application. Resuming playback through the source application or toggling next/previous will correct playback.
* When a source device is streaming silence via Bluetooth, the Alexa companion app indicates that audio content is streaming.
* The Bluetooth agent assumes that the Bluetooth adapter is always connected to a power source. Disconnecting from a power source during operation is not yet supported.
* On some products, interrupted Bluetooth playback may not resume if other content is locally streamed.
* On Raspberry Pi, when streaming audio via Bluetooth, sometimes the audio stream stutters.

### v1.8.0 released 06/27/2018:

**Enhancements**
Expand Down Expand Up @@ -59,7 +79,7 @@
* Added new properties to `AlexaClientSDKConfig`:
* [`cblAuthDelegate`](https://github.com/alexa/avs-device-sdk/blob/master/Integration/AlexaClientSDKConfig.json#L2) - This object specifies parameters for `CBLAuthDelegate`.
* [`miscDatabase`](https://github.com/alexa/avs-device-sdk/blob/master/Integration/AlexaClientSDKConfig.json#L34) - A generic key/value database to be used by various components.
* [`dcfDelegate`](https://github.com/alexa/avs-device-sdk/blob/master/Integration/AlexaClientSDKConfig.json#L17) - This object specifies parameters for `DCFDelegate`. Within this object, values were added for `endpoint` and `overridenDcfPublishMessageBody`. `endpoint` is the endpoint for the Capabilities API. `overridenDcfPublishMessageBody`is the message that is sent to the Capabilities API. **Note**: Values in the `dcfDelegate` object will only work in `DEBUG` builds.
* [`dcfDelegate`](https://github.com/alexa/avs-device-sdk/blob/master/Integration/AlexaClientSDKConfig.json#L17) - This object specifies parameters for `DCFDelegate`. Within this object, values were added for `endpoint` and `overridenDcfPublishMessageBody`. `endpoint` is the endpoint for the Capabilities API. `overridenDcfPublishMessageBody`is the message that is sent to the Capabilities API. **Note**: Values in the `dcfDelegate` object will only work in `DEBUG` builds.
* [`deviceInfo`](https://github.com/alexa/avs-device-sdk/blob/master/Integration/AlexaClientSDKConfig.json#L9) - Specifies device-identifying information for use by the Capabilities API and `CBLAuthDelegate`.
* Updated Directive Sequencer to support wildcard directive handlers. This allows a handler for a given AVS interface to register at the namespace level, rather than specifying the names of all directives within a given namespace.
* Updated the Raspberry Pi installation script to include `alsasink` in `AlexaClientSDKConfig`.
Expand Down
2 changes: 1 addition & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
cmake_minimum_required(VERSION 3.1 FATAL_ERROR)

# Set project information
project(AlexaClientSDK VERSION 1.8.0 LANGUAGES CXX)
project(AlexaClientSDK VERSION 1.8.1 LANGUAGES CXX)
set(PROJECT_BRIEF "A cross-platform, modular SDK for interacting with the Alexa Voice Service")
if (EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/CapabilityAgents/ExternalMediaPlayer/src/ExternalMediaPlayerAdapters")
set(HAS_EXTERNAL_MEDIA_PLAYER_ADAPTERS ON)
Expand Down
11 changes: 11 additions & 0 deletions CapabilityAgents/Alerts/include/Alerts/AlertScheduler.h
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,8 @@
#include <AVSCommon/AVS/FocusState.h>

#include <set>
#include <string>
#include <list>

namespace alexaClientSDK {
namespace capabilityAgents {
Expand Down Expand Up @@ -94,6 +96,15 @@ class AlertScheduler : public AlertObserverInterface {
*/
bool deleteAlert(const std::string& alertToken);

/**
* Delete multiple alerts from the schedule by their tokens. All existing alerts are deleted with all-or-none rule.
* In case of failure no actual deletion is made. Missing alert is not treated as an error.
*
* @param tokenList List of tokens of the alerts to be deleted
* @return true if all alerts has been deleted, false if any of the deletion failed.
*/
bool deleteAlerts(const std::list<std::string>& tokenList);

/**
* Utility function to determine if an alert is currently active.
*
Expand Down
Loading

0 comments on commit 872eb56

Please sign in to comment.