]> git.basschouten.com Git - openhab-addons.git/blob
e1868dc70e99953050c9bda41d4eb992095c314b
[openhab-addons.git] /
1 /**
2  * Copyright (c) 2010-2023 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.upnpcontrol.internal;
14
15 import static org.openhab.binding.upnpcontrol.internal.UpnpControlBindingConstants.*;
16
17 import java.util.Map;
18 import java.util.function.Function;
19 import java.util.stream.Collectors;
20 import java.util.stream.Stream;
21
22 import org.eclipse.jdt.annotation.NonNullByDefault;
23 import org.eclipse.jdt.annotation.Nullable;
24
25 /**
26  * This enum contains default openHAB channel configurations for optional channels as defined in the UPnP standard.
27  * Vendor specific channels are not part of this.
28  *
29  * @author Mark Herwege - Initial contribution
30  *
31  */
32 @NonNullByDefault
33 public enum UpnpChannelName {
34
35     // Volume channels
36     LF_VOLUME("LFvolume", "@text/channel.upnpcontrol.lfvolume.label", "@text/channel.upnpcontrol.lfvolume.description",
37             ITEM_TYPE_VOLUME, CHANNEL_TYPE_VOLUME),
38     RF_VOLUME("RFvolume", "@text/channel.upnpcontrol.rfvolume.label", "@text/channel.upnpcontrol.rfvolume.description",
39             ITEM_TYPE_VOLUME, CHANNEL_TYPE_VOLUME),
40     CF_VOLUME("CFvolume", "@text/channel.upnpcontrol.cfvolume.label", "@text/channel.upnpcontrol.cfvolume.description",
41             ITEM_TYPE_VOLUME, CHANNEL_TYPE_VOLUME),
42     LFE_VOLUME("LFEvolume", "@text/channel.upnpcontrol.lfevolume.label",
43             "@text/channel.upnpcontrol.lfevolume.description", ITEM_TYPE_VOLUME, CHANNEL_TYPE_VOLUME),
44     LS_VOLUME("LSvolume", "@text/channel.upnpcontrol.lsvolume.label", "@text/channel.upnpcontrol.lsvolume.description",
45             ITEM_TYPE_VOLUME, CHANNEL_TYPE_VOLUME),
46     RS_VOLUME("RSvolume", "@text/channel.upnpcontrol.rsvolume.label", "@text/channel.upnpcontrol.rsvolume.description",
47             ITEM_TYPE_VOLUME, CHANNEL_TYPE_VOLUME),
48     LFC_VOLUME("LFCvolume", "@text/channel.upnpcontrol.lfcvolume.label",
49             "@text/channel.upnpcontrol.lfcvolume.description", ITEM_TYPE_VOLUME, CHANNEL_TYPE_VOLUME),
50     RFC_VOLUME("RFCvolume", "@text/channel.upnpcontrol.rfcvolume.label",
51             "@text/channel.upnpcontrol.rfcvolume.description", ITEM_TYPE_VOLUME, CHANNEL_TYPE_VOLUME),
52     SD_VOLUME("SDvolume", "@text/channel.upnpcontrol.sdvolume.label", "@text/channel.upnpcontrol.sdvolume.description",
53             ITEM_TYPE_VOLUME, CHANNEL_TYPE_VOLUME),
54     SL_VOLUME("SLvolume", "@text/channel.upnpcontrol.slvolume.label", "@text/channel.upnpcontrol.slvolume.description",
55             ITEM_TYPE_VOLUME, CHANNEL_TYPE_VOLUME),
56     SR_VOLUME("SRvolume", "@text/channel.upnpcontrol.srvolume.label", "@text/channel.upnpcontrol.srvolume.description",
57             ITEM_TYPE_VOLUME, CHANNEL_TYPE_VOLUME),
58     T_VOLUME("Tvolume", "@text/channel.upnpcontrol.tvolume.label", "@text/channel.upnpcontrol.tvolume.description",
59             ITEM_TYPE_VOLUME, CHANNEL_TYPE_VOLUME),
60     B_VOLUME("Bvolume", "@text/channel.upnpcontrol.bvolume.label", "@text/channel.upnpcontrol.bvolume.description",
61             ITEM_TYPE_VOLUME, CHANNEL_TYPE_VOLUME),
62     BC_VOLUME("BCvolume", "@text/channel.upnpcontrol.bcvolume.label", "@text/channel.upnpcontrol.bcvolume.description",
63             ITEM_TYPE_VOLUME, CHANNEL_TYPE_VOLUME),
64     BL_VOLUME("BLvolume", "@text/channel.upnpcontrol.blvolume.label", "@text/channel.upnpcontrol.blvolume.description",
65             ITEM_TYPE_VOLUME, CHANNEL_TYPE_VOLUME),
66     BR_VOLUME("BRvolume", "@text/channel.upnpcontrol.brvolume.label", "@text/channel.upnpcontrol.brvolume.description",
67             ITEM_TYPE_VOLUME, CHANNEL_TYPE_VOLUME),
68
69     // Mute channels
70     LF_MUTE("LFmute", "@text/channel.upnpcontrol.lfmute.label", "@text/channel.upnpcontrol.lfmute.description",
71             ITEM_TYPE_MUTE, CHANNEL_TYPE_MUTE),
72     RF_MUTE("RFmute", "@text/channel.upnpcontrol.rfmute.label", "@text/channel.upnpcontrol.rfmute.description",
73             ITEM_TYPE_MUTE, CHANNEL_TYPE_MUTE),
74     CF_MUTE("CFmute", "@text/channel.upnpcontrol.cfmute.label", "@text/channel.upnpcontrol.cfmute.description",
75             ITEM_TYPE_MUTE, CHANNEL_TYPE_MUTE),
76     LFE_MUTE("LFEmute", "@text/channel.upnpcontrol.lfemute.label", "@text/channel.upnpcontrol.lfemute.description",
77             ITEM_TYPE_MUTE, CHANNEL_TYPE_MUTE),
78     LS_MUTE("LSmute", "@text/channel.upnpcontrol.lsmute.label", "@text/channel.upnpcontrol.lsmute.description",
79             ITEM_TYPE_MUTE, CHANNEL_TYPE_MUTE),
80     RS_MUTE("RSmute", "@text/channel.upnpcontrol.rsmute.label", "@text/channel.upnpcontrol.rsmute.description",
81             ITEM_TYPE_MUTE, CHANNEL_TYPE_MUTE),
82     LFC_MUTE("LFCmute", "@text/channel.upnpcontrol.lfcmute.label", "@text/channel.upnpcontrol.lfcmute.description",
83             ITEM_TYPE_MUTE, CHANNEL_TYPE_MUTE),
84     RFC_MUTE("RFCmute", "@text/channel.upnpcontrol.rfcmute.label", "@text/channel.upnpcontrol.rfcmute.description",
85             ITEM_TYPE_MUTE, CHANNEL_TYPE_MUTE),
86     SD_MUTE("SDmute", "@text/channel.upnpcontrol.sdmute.label", "@text/channel.upnpcontrol.sdmute.description",
87             ITEM_TYPE_MUTE, CHANNEL_TYPE_MUTE),
88     SL_MUTE("SLmute", "@text/channel.upnpcontrol.slmute.label", "@text/channel.upnpcontrol.slmute.description",
89             ITEM_TYPE_MUTE, CHANNEL_TYPE_MUTE),
90     SR_MUTE("SRmute", "@text/channel.upnpcontrol.srmute.label", "@text/channel.upnpcontrol.srmute.description",
91             ITEM_TYPE_MUTE, CHANNEL_TYPE_MUTE),
92     T_MUTE("Tmute", "@text/channel.upnpcontrol.tmute.label", "@text/channel.upnpcontrol.tmute.description",
93             ITEM_TYPE_MUTE, CHANNEL_TYPE_MUTE),
94     B_MUTE("Bmute", "@text/channel.upnpcontrol.bmute.label", "@text/channel.upnpcontrol.bmute.description",
95             ITEM_TYPE_MUTE, CHANNEL_TYPE_MUTE),
96     BC_MUTE("BCmute", "@text/channel.upnpcontrol.bcmute.label", "@text/channel.upnpcontrol.bcmute.description",
97             ITEM_TYPE_MUTE, CHANNEL_TYPE_MUTE),
98     BL_MUTE("BLmute", "@text/channel.upnpcontrol.blmute.label", "@text/channel.upnpcontrol.blmute.description",
99             ITEM_TYPE_MUTE, CHANNEL_TYPE_MUTE),
100     BR_MUTE("BRmute", "@text/channel.upnpcontrol.brmute.label", "@text/channel.upnpcontrol.brmute.description",
101             ITEM_TYPE_MUTE, CHANNEL_TYPE_MUTE),
102
103     // Loudness channels
104     LF_LOUDNESS("LFloudness", "@text/channel.upnpcontrol.lfloudness.label",
105             "@text/channel.upnpcontrol.lfloudness.description", ITEM_TYPE_LOUDNESS, CHANNEL_TYPE_LOUDNESS),
106     RF_LOUDNESS("RFloudness", "@text/channel.upnpcontrol.rfloudness.label",
107             "@text/channel.upnpcontrol.rfloudness.description", ITEM_TYPE_LOUDNESS, CHANNEL_TYPE_LOUDNESS),
108     CF_LOUDNESS("CFloudness", "@text/channel.upnpcontrol.cfloudness.label",
109             "@text/channel.upnpcontrol.cfloudness.description", ITEM_TYPE_LOUDNESS, CHANNEL_TYPE_LOUDNESS),
110     LFE_LOUDNESS("LFEloudness", "@text/channel.upnpcontrol.lfeloudness.label",
111             "@text/channel.upnpcontrol.lfeloudness.description", ITEM_TYPE_LOUDNESS, CHANNEL_TYPE_LOUDNESS),
112     LS_LOUDNESS("LSloudness", "@text/channel.upnpcontrol.lsloudness.label",
113             "@text/channel.upnpcontrol.lsloudness.description", ITEM_TYPE_LOUDNESS, CHANNEL_TYPE_LOUDNESS),
114     RS_LOUDNESS("RSloudness", "@text/channel.upnpcontrol.rsloudness.label",
115             "@text/channel.upnpcontrol.rsloudness.description", ITEM_TYPE_LOUDNESS, CHANNEL_TYPE_LOUDNESS),
116     LFC_LOUDNESS("LFCloudness", "@text/channel.upnpcontrol.lfcloudness.label",
117             "@text/channel.upnpcontrol.lfcloudness.description", ITEM_TYPE_LOUDNESS, CHANNEL_TYPE_LOUDNESS),
118     RFC_LOUDNESS("RFCloudness", "@text/channel.upnpcontrol.rfcloudness.label",
119             "@text/channel.upnpcontrol.rfcloudness.description", ITEM_TYPE_LOUDNESS, CHANNEL_TYPE_LOUDNESS),
120     SD_LOUDNESS("SDloudness", "@text/channel.upnpcontrol.sdloudness.label",
121             "@text/channel.upnpcontrol.sdloudness.description", ITEM_TYPE_LOUDNESS, CHANNEL_TYPE_LOUDNESS),
122     SL_LOUDNESS("SLloudness", "@text/channel.upnpcontrol.slloudness.label",
123             "@text/channel.upnpcontrol.slloudness.description", ITEM_TYPE_LOUDNESS, CHANNEL_TYPE_LOUDNESS),
124     SR_LOUDNESS("SRloudness", "@text/channel.upnpcontrol.srloudness.label",
125             "@text/channel.upnpcontrol.srloudness.description", ITEM_TYPE_LOUDNESS, CHANNEL_TYPE_LOUDNESS),
126     T_LOUDNESS("Tloudness", "@text/channel.upnpcontrol.tloudness.label",
127             "@text/channel.upnpcontrol.tloudness.description", ITEM_TYPE_LOUDNESS, CHANNEL_TYPE_LOUDNESS),
128     B_LOUDNESS("Bloudness", "@text/channel.upnpcontrol.bloudness.label",
129             "@text/channel.upnpcontrol.bloudness.description", ITEM_TYPE_LOUDNESS, CHANNEL_TYPE_LOUDNESS),
130     BC_LOUDNESS("BCloudness", "@text/channel.upnpcontrol.bcloudness.label",
131             "@text/channel.upnpcontrol.bcloudness.description", ITEM_TYPE_LOUDNESS, CHANNEL_TYPE_LOUDNESS),
132     BL_LOUDNESS("BLloudness", "@text/channel.upnpcontrol.blloudness.label",
133             "@text/channel.upnpcontrol.blloudness.description", ITEM_TYPE_LOUDNESS, CHANNEL_TYPE_LOUDNESS),
134     BR_LOUDNESS("BRloudness", "@text/channel.upnpcontrol.brloudness.label",
135             "@text/channel.upnpcontrol.brloudness.description", ITEM_TYPE_LOUDNESS, CHANNEL_TYPE_LOUDNESS);
136
137     private static final Map<String, UpnpChannelName> UPNP_CHANNEL_NAME_MAP = Stream.of(UpnpChannelName.values())
138             .collect(Collectors.toMap(UpnpChannelName::getChannelId, Function.identity()));
139
140     private final String channelId;
141     private final String label;
142     private final String description;
143     private final String itemType;
144     private final String channelType;
145
146     UpnpChannelName(final String channelId, final String label, final String description, final String itemType,
147             final String channelType) {
148         this.channelId = channelId;
149         this.label = label;
150         this.description = description;
151         this.itemType = itemType;
152         this.channelType = channelType;
153     }
154
155     /**
156      * @return The name of the Channel
157      */
158     public String getChannelId() {
159         return channelId;
160     }
161
162     /**
163      * @return The label for the Channel
164      */
165     public String getLabel() {
166         return label;
167     }
168
169     /**
170      * @return The description for the Channel
171      */
172     public String getDescription() {
173         return description;
174     }
175
176     /**
177      * @return The item type for the Channel
178      */
179     public String getItemType() {
180         return itemType;
181     }
182
183     /**
184      * @return The channel type for the Channel
185      */
186     public String getChannelType() {
187         return channelType;
188     }
189
190     /**
191      * Returns the UPnP Channel enum for the given channel id or null if there is no enum available for the given
192      * channel.
193      *
194      * @param channelId Channel to find
195      * @return The UPnP Channel enum or null if there is none.
196      */
197     public static @Nullable UpnpChannelName channelIdToUpnpChannelName(final String channelId) {
198         return UPNP_CHANNEL_NAME_MAP.get(channelId);
199     }
200 }