diff options
author | Raquel Medina <raquel.medina@konsulko.com> | 2019-11-29 23:01:41 +0100 |
---|---|---|
committer | Raquel Medina <raquel.medina@konsulko.com> | 2019-11-29 23:41:25 +0100 |
commit | da091649e775b23a35eb88df1c2cf9ce3fb350f7 (patch) | |
tree | 0eb475a54336b12c6796f93dbedce60d2e30199d /voice/voicemessage.h | |
parent | 5cd66764ad6f7397feeb3bf30f24c58ab62c1064 (diff) |
voice: add initial support for voice agents configuration
Bug-AGL: SPEC-2981
Signed-off-by: Raquel Medina <raquel.medina@konsulko.com>
Change-Id: I0195d914dc10f4fcdea1cb6df0e6a5859ad8269d
Diffstat (limited to 'voice/voicemessage.h')
-rw-r--r-- | voice/voicemessage.h | 112 |
1 files changed, 112 insertions, 0 deletions
diff --git a/voice/voicemessage.h b/voice/voicemessage.h new file mode 100644 index 0000000..1de5dd2 --- /dev/null +++ b/voice/voicemessage.h @@ -0,0 +1,112 @@ +/* + * Copyright (C) 2019 Konsulko Group + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef VOICE_MESSAGE_H +#define VOICE_MESSAGE_H + +#include "message.h" + +class VoiceMessage : public Message +{ + Q_OBJECT + public: + virtual ~VoiceMessage() {}; + virtual bool isAuthStateEvent() const = 0; + virtual bool isConnectionStateEvent() const = 0; + virtual bool isDialogStateEvent() const = 0; + virtual bool createRequest(QString verb, QJsonObject parameter) = 0; +}; + +class VshlCoreVoiceMessage : public VoiceMessage +{ + Q_OBJECT + public: + virtual ~VshlCoreVoiceMessage() {}; + bool isAuthStateEvent() const override { + return (this->eventName() == "voice_authstate_event"); }; + bool isConnectionStateEvent() const override { + return (this->eventName() == "voice_connectionstate_event"); }; + bool isDialogStateEvent() const override { + return (this->eventName() == "voice_dialogstate_event"); }; + bool createRequest(QString verb, QJsonObject parameter) override; + + private: + QStringList verbs { + "startListening", + "cancelListening", + "subscribe", + "unsubscribe", + "enumerateVoiceAgents", + "setDefaultVoiceAgent", + }; + QStringList events { + "", + }; +}; + +class VshlCpbltsVoiceMessage : public VoiceMessage +{ + Q_OBJECT + public: + virtual ~VshlCpbltsVoiceMessage() {}; + bool isAuthStateEvent() const override { return false; }; + bool isConnectionStateEvent() const override { return false; }; + bool isDialogStateEvent() const override { return false; }; + bool createRequest(QString verb, QJsonObject parameter) override; + + private: + QStringList verbs { + "guiMetadataSubscribe", + "guiMetadataPublish", + "phonecontrolSubscribe", + "phonecontrolPublish", + "navigationSubscribe", + "navigationPublish", + "playbackControllerSubscribe", + "playbackControllerPublish", + }; + QStringList events { + "voice_authstate_event", + "voice_dialogstate_event", + "voice_connectionstate_event", + }; +}; + +/* We shouldnt access an agent directly, but CBL events + * are not abstracted/forwarded by vshl bindings. + */ +class AlexaVoiceMessage : public VoiceMessage +{ + Q_OBJECT + public: + virtual ~AlexaVoiceMessage() {}; + bool isAuthStateEvent() const override { + return (!events.contains(this->eventName())); }; + bool isConnectionStateEvent() const override { return false; }; + bool isDialogStateEvent() const override { return false; }; + bool createRequest(QString verb, QJsonObject parameter) override; + + private: + QStringList verbs { + "subscribeToCBLEvents", + }; + QStringList events { + "voice_cbl_codepair_received_event", + "voice_cbl_codepair_expired_event", + }; +}; + +#endif // VOICE_MESSAGE_H |