2 * Copyright (c) 2010-2023 Contributors to the openHAB project
4 * See the NOTICE file(s) distributed with this work for additional
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
11 * SPDX-License-Identifier: EPL-2.0
13 package org.openhab.binding.upnpcontrol.internal;
17 import java.util.stream.Collectors;
18 import java.util.stream.Stream;
20 import org.eclipse.jdt.annotation.NonNullByDefault;
21 import org.openhab.core.OpenHAB;
22 import org.openhab.core.thing.DefaultSystemChannelTypeProvider;
23 import org.openhab.core.thing.ThingTypeUID;
24 import org.openhab.core.thing.type.ChannelTypeUID;
27 * The {@link UpnpControlBindingConstants} class defines common constants, which are
28 * used across the whole binding.
30 * @author Mark Herwege - Initial contribution
33 public class UpnpControlBindingConstants {
35 public static final String BINDING_ID = "upnpcontrol";
37 // List of all Thing Type UIDs
38 public static final ThingTypeUID THING_TYPE_RENDERER = new ThingTypeUID(BINDING_ID, "upnprenderer");
39 public static final ThingTypeUID THING_TYPE_SERVER = new ThingTypeUID(BINDING_ID, "upnpserver");
40 public static final Set<ThingTypeUID> SUPPORTED_THING_TYPES_UIDS = Stream.of(THING_TYPE_RENDERER, THING_TYPE_SERVER)
41 .collect(Collectors.toSet());
43 // Binding config parameters
44 public static final String PATH = "path";
46 // Thing config parameters
47 public static final String UDN_PARAMETER = "udn";
48 public static final String REFRESH_INTERVAL = "refresh";
49 public static final String RESPONSE_TIMEOUT = "responsetimeout";
50 // Server thing only config parameters
51 public static final String CONFIG_FILTER = "filter";
52 public static final String SORT_CRITERIA = "sortcriteria";
53 public static final String BROWSE_DOWN = "browsedown";
54 public static final String SEARCH_FROM_ROOT = "searchfromroot";
55 // Renderer thing only config parameters
56 public static final String NOTIFICATION_VOLUME_ADJUSTMENT = "notificationvolumeadjustment";
57 public static final String MAX_NOTIFICATION_DURATION = "maxnotificationduration";
58 public static final String SEEK_STEP = "seekstep";
60 // List of all Channel ids
61 public static final String VOLUME = "volume";
62 public static final String MUTE = "mute";
63 public static final String CONTROL = "control";
64 public static final String STOP = "stop";
65 public static final String REPEAT = "repeat";
66 public static final String SHUFFLE = "shuffle";
67 public static final String ONLY_PLAY_ONE = "onlyplayone";
68 public static final String URI = "uri";
69 public static final String FAVORITE_SELECT = "favoriteselect";
70 public static final String FAVORITE = "favorite";
71 public static final String FAVORITE_ACTION = "favoriteaction";
72 public static final String TITLE = "title";
73 public static final String ALBUM = "album";
74 public static final String ALBUM_ART = "albumart";
75 public static final String CREATOR = "creator";
76 public static final String ARTIST = "artist";
77 public static final String PUBLISHER = "publisher";
78 public static final String GENRE = "genre";
79 public static final String TRACK_NUMBER = "tracknumber";
80 public static final String TRACK_DURATION = "trackduration";
81 public static final String TRACK_POSITION = "trackposition";
82 public static final String REL_TRACK_POSITION = "reltrackposition";
84 public static final String UPNPRENDERER = "upnprenderer";
85 public static final String CURRENTTITLE = "currenttitle";
86 public static final String BROWSE = "browse";
87 public static final String SEARCH = "search";
88 public static final String SERVE = "serve";
89 public static final String PLAYLIST_SELECT = "playlistselect";
90 public static final String PLAYLIST = "playlist";
91 public static final String PLAYLIST_ACTION = "playlistaction";
93 // Type constants for dynamic renderer channels
94 public static final String CHANNEL_TYPE_VOLUME = DefaultSystemChannelTypeProvider.SYSTEM_VOLUME.toString();
95 public static final String CHANNEL_TYPE_MUTE = DefaultSystemChannelTypeProvider.SYSTEM_MUTE.toString();
96 public static final String CHANNEL_TYPE_LOUDNESS = (new ChannelTypeUID(BINDING_ID, "loudness")).toString();
98 public static final String ITEM_TYPE_VOLUME = "Dimmer";
99 public static final String ITEM_TYPE_MUTE = "Switch";
100 public static final String ITEM_TYPE_LOUDNESS = "Switch";
102 // Command options for playlist and favorite actions
103 public static final String RESTORE = "RESTORE";
104 public static final String SAVE = "SAVE";
105 public static final String APPEND = "APPEND";
106 public static final String DELETE = "DELETE";
108 // Channels that are duplicated on server to control current renderer
109 public static final Set<String> SERVER_CONTROL_CHANNELS = Set.of(VOLUME, MUTE, CONTROL, STOP);
111 // Master volume and mute identifier
112 public static final String UPNP_MASTER = "Master";
114 // Filepath and extension defaults and constants for playlists and favorites
115 public static final String DEFAULT_PATH = OpenHAB.getUserDataFolder() + File.separator + BINDING_ID
117 public static final String PLAYLIST_FILE_EXTENSION = ".lst";
118 public static final String FAVORITE_FILE_EXTENSION = ".fav";
120 // Notification audio sink name extension
121 public static final String NOTIFICATION_AUDIOSINK_EXTENSION = "-notify";