]> git.basschouten.com Git - openhab-addons.git/blob
b92d8cde20766fc63e3c55c2d9dca641e2dffc51
[openhab-addons.git] /
1 /**
2  * Copyright (c) 2010-2024 Contributors to the openHAB project
3  *
4  * See the NOTICE file(s) distributed with this work for additional
5  * information.
6  *
7  * This program and the accompanying materials are made available under the
8  * terms of the Eclipse Public License 2.0 which is available at
9  * http://www.eclipse.org/legal/epl-2.0
10  *
11  * SPDX-License-Identifier: EPL-2.0
12  */
13 package org.openhab.binding.mycroft.internal.api;
14
15 import java.util.stream.Stream;
16
17 import javax.validation.constraints.NotNull;
18
19 import org.eclipse.jdt.annotation.NonNullByDefault;
20 import org.openhab.binding.mycroft.internal.api.dto.BaseMessage;
21 import org.openhab.binding.mycroft.internal.api.dto.MessageAudioNext;
22 import org.openhab.binding.mycroft.internal.api.dto.MessageAudioPause;
23 import org.openhab.binding.mycroft.internal.api.dto.MessageAudioPlay;
24 import org.openhab.binding.mycroft.internal.api.dto.MessageAudioPrev;
25 import org.openhab.binding.mycroft.internal.api.dto.MessageAudioResume;
26 import org.openhab.binding.mycroft.internal.api.dto.MessageAudioStop;
27 import org.openhab.binding.mycroft.internal.api.dto.MessageAudioTrackInfo;
28 import org.openhab.binding.mycroft.internal.api.dto.MessageAudioTrackInfoReply;
29 import org.openhab.binding.mycroft.internal.api.dto.MessageMicListen;
30 import org.openhab.binding.mycroft.internal.api.dto.MessageRecognizerLoopRecordBegin;
31 import org.openhab.binding.mycroft.internal.api.dto.MessageRecognizerLoopRecordEnd;
32 import org.openhab.binding.mycroft.internal.api.dto.MessageRecognizerLoopUtterance;
33 import org.openhab.binding.mycroft.internal.api.dto.MessageSpeak;
34 import org.openhab.binding.mycroft.internal.api.dto.MessageVolumeDecrease;
35 import org.openhab.binding.mycroft.internal.api.dto.MessageVolumeDuck;
36 import org.openhab.binding.mycroft.internal.api.dto.MessageVolumeGet;
37 import org.openhab.binding.mycroft.internal.api.dto.MessageVolumeGetResponse;
38 import org.openhab.binding.mycroft.internal.api.dto.MessageVolumeIncrease;
39 import org.openhab.binding.mycroft.internal.api.dto.MessageVolumeMute;
40 import org.openhab.binding.mycroft.internal.api.dto.MessageVolumeSet;
41 import org.openhab.binding.mycroft.internal.api.dto.MessageVolumeUnduck;
42 import org.openhab.binding.mycroft.internal.api.dto.MessageVolumeUnmute;
43
44 /**
45  * All message type of interest, issued by Mycroft, are referenced here
46  *
47  * @author Gwendal Roulleau - Initial contribution
48  */
49 @NonNullByDefault
50 public enum MessageType {
51
52     any("special-anymessages", BaseMessage.class),
53     speak("speak", MessageSpeak.class),
54     recognizer_loop__record_begin("recognizer_loop:record_begin", MessageRecognizerLoopRecordBegin.class),
55     recognizer_loop__record_end("recognizer_loop:record_end", MessageRecognizerLoopRecordEnd.class),
56     recognizer_loop__utterance("recognizer_loop:utterance", MessageRecognizerLoopUtterance.class),
57     mycroft_mic_listen("mycroft.mic.listen", MessageMicListen.class),
58
59     mycroft_audio_service_pause("mycroft.audio.service.pause", MessageAudioPause.class),
60     mycroft_audio_service_resume("mycroft.audio.service.resume", MessageAudioResume.class),
61     mycroft_audio_service_stop("mycroft.audio.service.stop", MessageAudioStop.class),
62     mycroft_audio_service_play("mycroft.audio.service.play", MessageAudioPlay.class),
63     mycroft_audio_service_next("mycroft.audio.service.next", MessageAudioNext.class),
64     mycroft_audio_service_prev("mycroft.audio.service.prev", MessageAudioPrev.class),
65     mycroft_audio_service_track_info("mycroft.audio.service.track_info", MessageAudioTrackInfo.class),
66     mycroft_audio_service_track_info_reply("mycroft.audio.service.track_info_reply", MessageAudioTrackInfoReply.class),
67
68     mycroft_volume_set("mycroft.volume.set", MessageVolumeSet.class),
69     mycroft_volume_increase("mycroft.volume.increase", MessageVolumeIncrease.class),
70     mycroft_volume_decrease("mycroft.volume.decrease", MessageVolumeDecrease.class),
71     mycroft_volume_get("mycroft.volume.get", MessageVolumeGet.class),
72     mycroft_volume_get_response("mycroft.volume.get.response", MessageVolumeGetResponse.class),
73     mycroft_volume_mute("mycroft.volume.mute", MessageVolumeMute.class),
74     mycroft_volume_unmute("mycroft.volume.unmute", MessageVolumeUnmute.class),
75     mycroft_volume_duck("mycroft.volume.duck", MessageVolumeDuck.class),
76     mycroft_volume_unduck("mycroft.volume.unduck", MessageVolumeUnduck.class),
77
78     mycroft_reminder_mycroftai__reminder("mycroft-reminder.mycroftai:reminder", BaseMessage.class),
79     mycroft_date_time_mycroftai__timeskillupdate_display("mycroft-date-time.mycroftai:TimeSkillupdate_display",
80             BaseMessage.class),
81     mycroft_configuration_mycroftai__configurationskillupdate_remote(
82             "mycroft-configuration.mycroftai:ConfigurationSkillupdate_remote", BaseMessage.class);
83
84     private @NotNull Class<? extends BaseMessage> messageTypeClass;
85     private @NotNull String messageTypeName;
86
87     MessageType(String messageTypeName, Class<? extends BaseMessage> messageType) {
88         this.messageTypeClass = messageType;
89         this.messageTypeName = messageTypeName;
90     }
91
92     /**
93      * Get the expected message type for this message
94      *
95      * @return The message type class associated with this type
96      */
97     public @NotNull Class<? extends BaseMessage> getMessageTypeClass() {
98         return messageTypeClass;
99     }
100
101     @NotNull
102     public static MessageType fromString(String asString) {
103         return Stream.of(values()).filter(messageType -> messageType.messageTypeName.equals(asString)).findFirst()
104                 .orElse(any);
105     }
106
107     public String getMessageTypeName() {
108         return messageTypeName;
109     }
110
111     protected void setMessageTypeName(String messageTypeName) {
112         this.messageTypeName = messageTypeName;
113     }
114 }