2 * Copyright (c) 2010-2024 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.emotiva.internal;
15 import java.util.HashSet;
16 import java.util.List;
19 import org.eclipse.jdt.annotation.NonNullByDefault;
20 import org.openhab.core.thing.ThingTypeUID;
23 * The {@link EmotivaBindingConstants} class defines common constants, which are used across the whole binding.
25 * @author Espen Fossen - Initial contribution
28 public class EmotivaBindingConstants {
30 public static final String BINDING_ID = "emotiva";
32 /** Property name to uniquely identify (discovered) things. */
33 static final String UNIQUE_PROPERTY_NAME = "ip4Address";
35 /** Default port used to discover Emotiva devices. */
36 static final int DEFAULT_PING_PORT = 7000;
38 /** Default port used to receive transponder (discovered) Emotiva devices. */
39 static final int DEFAULT_TRANSPONDER_PORT = 7001;
41 /** Default timeout in milliseconds for sending UDP packets. */
42 static final int DEFAULT_UDP_SENDING_TIMEOUT = 1000;
44 /** Number of connection attempts, set OFFLINE if no success and a retry job is then started. */
45 static final int DEFAULT_CONNECTION_RETRIES = 3;
47 /** Connection retry interval in minutes */
48 static final int DEFAULT_RETRY_INTERVAL_MINUTES = 2;
51 * Default Emotiva device keep alive in milliseconds. {@link org.openhab.binding.emotiva.internal.dto.ControlDTO}
53 static final int DEFAULT_KEEP_ALIVE_IN_MILLISECONDS = 7500;
55 /** State name for storing keepAlive timestamp messages */
56 public static final String LAST_SEEN_STATE_NAME = "no-channel#last-seen";
59 * Default Emotiva device considered list in milliseconds.
60 * {@link org.openhab.binding.emotiva.internal.dto.ControlDTO}
62 static final int DEFAULT_KEEP_ALIVE_CONSIDERED_LOST_IN_MILLISECONDS = 30000;
64 /** Default Emotiva control message value **/
65 public static final String DEFAULT_CONTROL_MESSAGE_SET_DEFAULT_VALUE = "0";
67 /** Default value for ack property in Emotiva control messages **/
68 public static final String DEFAULT_CONTROL_ACK_VALUE = "yes";
70 /** Default discovery timeout in seconds **/
71 public static final int DISCOVERY_TIMEOUT_SECONDS = 5;
73 /** Default discovery broadcast address **/
74 public static final String DISCOVERY_BROADCAST_ADDRESS = "255.255.255.255";
76 /** List of all Thing Type UIDs **/
77 static final ThingTypeUID THING_PROCESSOR = new ThingTypeUID(BINDING_ID, "processor");
79 public static final Set<ThingTypeUID> SUPPORTED_THING_TYPES_UIDS = new HashSet<>(List.of(THING_PROCESSOR));
81 /** Default values for Emotiva channels **/
82 public static final String DEFAULT_EMOTIVA_PROTOCOL_VERSION = "2.0";
83 public static final int DEFAULT_VOLUME_MIN_DECIBEL = -96;
84 public static final int DEFAULT_VOLUME_MAX_DECIBEL = 15;
85 public static final int DEFAULT_TRIM_MIN_DECIBEL = -12;
86 public static final int DEFAULT_TRIM_MAX_DECIBEL = 12;
87 public static final String MAP_SOURCES_MAIN_ZONE = "sources";
88 public static final String MAP_SOURCES_ZONE_2 = "zone2-sources";
90 /** Miscellaneous Constants **/
91 public static final int PROTOCOL_V3_LEVEL_MULTIPLIER = 2;
92 public static final String TRIM_SET_COMMAND_SUFFIX = "_trim_set";
93 static final String MENU_PANEL_CHECKBOX_ON = "on";
94 static final String MENU_PANEL_HIGHLIGHTED = "true";
95 static final String EMOTIVA_SOURCE_COMMAND_PREFIX = "source_";
97 /** Emotiva Protocol V1 channels **/
98 public static final String CHANNEL_STANDBY = "general#standby";
99 public static final String CHANNEL_MAIN_ZONE_POWER = "main-zone#power";
100 public static final String CHANNEL_SOURCE = "main-zone#source";
101 public static final String CHANNEL_MENU = "general#menu";
102 public static final String CHANNEL_MENU_CONTROL = "general#menu-control";
103 public static final String CHANNEL_MENU_UP = "general#up";
104 public static final String CHANNEL_MENU_DOWN = "general#down";
105 public static final String CHANNEL_MENU_LEFT = "general#left";
106 public static final String CHANNEL_MENU_RIGHT = "general#right";
107 public static final String CHANNEL_MENU_ENTER = "general#enter";
108 public static final String CHANNEL_MUTE = "main-zone#mute";
109 public static final String CHANNEL_DIM = "general#dim";
110 public static final String CHANNEL_MODE = "general#mode";
111 public static final String CHANNEL_CENTER = "general#center";
112 public static final String CHANNEL_SUBWOOFER = "general#subwoofer";
113 public static final String CHANNEL_SURROUND = "general#surround";
114 public static final String CHANNEL_BACK = "general#back";
115 public static final String CHANNEL_MODE_SURROUND = "general#mode-surround";
116 public static final String CHANNEL_SPEAKER_PRESET = "general#speaker-preset";
117 public static final String CHANNEL_MAIN_VOLUME = "main-zone#volume";
118 public static final String CHANNEL_MAIN_VOLUME_DB = "main-zone#volume_db";
119 public static final String CHANNEL_LOUDNESS = "general#loudness";
120 public static final String CHANNEL_ZONE2_POWER = "zone2#power";
121 public static final String CHANNEL_ZONE2_VOLUME = "zone2#volume";
122 public static final String CHANNEL_ZONE2_VOLUME_DB = "zone2#volume-db";
123 public static final String CHANNEL_ZONE2_MUTE = "zone2#mute";
124 public static final String CHANNEL_ZONE2_SOURCE = "zone2#source";
125 public static final String CHANNEL_FREQUENCY = "general#frequency";
126 public static final String CHANNEL_SEEK = "general#seek";
127 public static final String CHANNEL_CHANNEL = "general#channel";
128 public static final String CHANNEL_TUNER_BAND = "general#tuner-band";
129 public static final String CHANNEL_TUNER_CHANNEL = "general#tuner-channel";
130 public static final String CHANNEL_TUNER_CHANNEL_SELECT = "general#tuner-channel-select";
131 public static final String CHANNEL_TUNER_SIGNAL = "general#tuner-signal";
132 public static final String CHANNEL_TUNER_PROGRAM = "general#tuner-program";
133 public static final String CHANNEL_TUNER_RDS = "general#tuner-RDS";
134 public static final String CHANNEL_AUDIO_INPUT = "general#audio-input";
135 public static final String CHANNEL_AUDIO_BITSTREAM = "general#audio-bitstream";
136 public static final String CHANNEL_AUDIO_BITS = "general#audio-bits";
137 public static final String CHANNEL_VIDEO_INPUT = "general#video-input";
138 public static final String CHANNEL_VIDEO_FORMAT = "general#video-format";
139 public static final String CHANNEL_VIDEO_SPACE = "general#video-space";
140 public static final String CHANNEL_INPUT1 = "general#input-1";
141 public static final String CHANNEL_INPUT2 = "general#input-2";
142 public static final String CHANNEL_INPUT3 = "general#input-3";
143 public static final String CHANNEL_INPUT4 = "general#input-4";
144 public static final String CHANNEL_INPUT5 = "general#input-5";
145 public static final String CHANNEL_INPUT6 = "general#input-6";
146 public static final String CHANNEL_INPUT7 = "general#input-7";
147 public static final String CHANNEL_INPUT8 = "general#input-8";
148 public static final String CHANNEL_MODE_REF_STEREO = "general#mode-ref-stereo";
149 public static final String CHANNEL_SURROUND_MODE = "general#surround-mode";
150 public static final String CHANNEL_MODE_STEREO = "general#mode-stereo";
151 public static final String CHANNEL_MODE_MUSIC = "general#mode-music";
152 public static final String CHANNEL_MODE_MOVIE = "general#mode-movie";
153 public static final String CHANNEL_MODE_DIRECT = "general#mode-direct";
154 public static final String CHANNEL_MODE_DOLBY = "general#mode-dolby";
155 public static final String CHANNEL_MODE_DTS = "general#mode-dts";
156 public static final String CHANNEL_MODE_ALL_STEREO = "general#mode-all-stereo";
157 public static final String CHANNEL_MODE_AUTO = "general#mode-auto";
159 /** Emotiva Protocol V2 channels **/
160 public static final String CHANNEL_SELECTED_MODE = "general#selected-mode";
161 public static final String CHANNEL_SELECTED_MOVIE_MUSIC = "general#selected-movie-music";
163 /** Emotiva Protocol V3 channels **/
164 public static final String CHANNEL_TREBLE = "general#treble";
165 public static final String CHANNEL_BASS = "general#bass";
166 public static final String CHANNEL_WIDTH = "general#width";
167 public static final String CHANNEL_HEIGHT = "general#height";
168 public static final String CHANNEL_BAR = "general#bar";
169 public static final String CHANNEL_MENU_DISPLAY_PREFIX = "general#menu-display";
170 public static final String CHANNEL_MENU_DISPLAY_HIGHLIGHT = "general#menu-display-highlight";