2 * Copyright (c) 2010-2022 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.magentatv.internal;
15 import java.util.Collections;
18 import org.eclipse.jdt.annotation.NonNullByDefault;
19 import org.openhab.core.thing.ThingTypeUID;
22 * The {@link MagentaTVBindingConstants} class defines common constants, which are
23 * used across the whole binding.
25 * @author Markus Michels - Initial contribution
28 public class MagentaTVBindingConstants {
30 public static final String BINDING_ID = "magentatv";
31 public static final String VENDOR = "Deutsche Telekom";
32 public static final String OEM_VENDOR = "HUAWEI";
34 // List of all Thing Type UIDs
35 public static final ThingTypeUID THING_TYPE_RECEIVER = new ThingTypeUID(BINDING_ID, "receiver");
36 public static final Set<ThingTypeUID> SUPPORTED_THING_TYPES = Collections.singleton(THING_TYPE_RECEIVER);
39 * Property names for config/status properties
41 public static final String PROPERTY_UDN = "udn";
42 public static final String PROPERTY_FRIENDLYNAME = "friendlyName";
43 public static final String PROPERTY_MODEL_NUMBER = "modelRev";
44 public static final String PROPERTY_HOST = "host";
45 public static final String PROPERTY_IP = "ipAddress";
46 public static final String PROPERTY_PORT = "port";
47 public static final String PROPERTY_DESC_URL = "descriptionUrl";
48 public static final String PROPERTY_PAIRINGCODE = "pairingCode";
49 public static final String PROPERTY_VERIFICATIONCODE = "verificationCode";
50 public static final String PROPERTY_ACCT_NAME = "accountName";
51 public static final String PROPERTY_ACCT_PWD = "accountPassword";
52 public static final String PROPERTY_USERID = "userId";
53 public static final String PROPERTY_LOCAL_IP = "localIP";
54 public static final String PROPERTY_LOCAL_MAC = "localMAC";
55 public static final String PROPERTY_TERMINALID = "terminalID";
56 public static final String PROPERTY_WAKEONLAN = "wakeOnLAN";
61 public static final String CHGROUP_CONTROL = "control";
62 public static final String CHANNEL_POWER = CHGROUP_CONTROL + "#" + "power";
63 public static final String CHANNEL_PLAYER = CHGROUP_CONTROL + "#" + "player";
64 public static final String CHANNEL_MUTE = CHGROUP_CONTROL + "#" + "mute";
65 public static final String CHANNEL_CHANNEL = CHGROUP_CONTROL + "#" + "channel";
66 public static final String CHANNEL_KEY = CHGROUP_CONTROL + "#" + "key";
68 public static final String CHGROUP_PROGRAM = "program";
69 public static final String CHANNEL_PROG_TITLE = CHGROUP_PROGRAM + "#" + "title";
70 public static final String CHANNEL_PROG_TEXT = CHGROUP_PROGRAM + "#" + "text";
71 public static final String CHANNEL_PROG_START = CHGROUP_PROGRAM + "#" + "start";
72 public static final String CHANNEL_PROG_DURATION = CHGROUP_PROGRAM + "#" + "duration";
73 public static final String CHANNEL_PROG_POS = CHGROUP_PROGRAM + "#" + "position";
75 public static final String CHGROUP_STATUS = "status";
76 public static final String CHANNEL_CHANNEL_CODE = CHGROUP_STATUS + "#" + "channelCode";
77 public static final String CHANNEL_RUN_STATUS = CHGROUP_STATUS + "#" + "runStatus";
78 public static final String CHANNEL_PLAY_MODE = CHGROUP_STATUS + "#" + "playMode";
81 * Definitions for the control interface
83 public static final String CONTENT_TYPE_XML = "text/xml; charset=UTF-8";
85 public static final String PAIRING_NOTIFY_URI = "/magentatv/notify";
86 public static final String NOTIFY_PAIRING_CODE = "X-pairingCheck:";
88 public static final String MODEL_MR400 = "DMS_TPB"; // Old DSL receiver
89 public static final String MODEL_MR401B = "MR401B"; // New DSL receiver
90 public static final String MODEL_MR601 = "MR601"; // SAT receiver
91 public static final String MODEL_MR201 = "MR201"; // sub receiver
93 public static final String MR400_DEF_REMOTE_PORT = "49152";
94 public static final String MR400_DEF_DESCRIPTION_URL = "/description.xml";
95 public static final String MR401B_DEF_REMOTE_PORT = "8081";
96 public static final String MR401B_DEF_DESCRIPTION_URL = "/xml/dial.xml";
97 public static final String DEF_FRIENDLY_NAME = "PAD:openHAB";
99 public static final int DEF_REFRESH_INTERVAL_SEC = 60;
100 public static final int NETWORK_TIMEOUT_MS = 3000;
102 public static final String HEADER_CONTENT_TYPE = "Content-Type";
103 public static final String HEADER_HOST = "HOST";
104 public static final String HEADER_ACCEPT = "Accept";
105 public static final String HEADER_CACHE_CONTROL = "Cache-Control";
106 public static final String HEADER_LANGUAGE = "Accept-Language";
107 public static final String HEADER_SOAPACTION = "SOAPACTION";
108 public static final String HEADER_CONNECTION = "CONNECTION";
109 public static final String HEADER_USER_AGENT = "USER_AGENT";
110 public static final String USER_AGENT = "Darwin/16.5.0 UPnP/1.0 HUAWEI_iCOS/iCOS V1R1C00 DLNADOC/1.50";
111 public static final String ACCEPT_TYPE = "*/*";
114 * OAuth authentication for Deutsche Telekom MatengaTV portal
116 public static final String OAUTH_GET_CRED_URL = "https://slbedmfk11100.prod.sngtv.t-online.de";
117 public static final String OAUTH_GET_CRED_PORT = "33428";
118 public static final String OAUTH_GET_CRED_URI = "/EDS/JSON/Login?UserID=Guest";
119 public static final String OAUTH_USER_AGENT = "Mozilla/5.0 (iPhone; CPU iPhone OS 10_3_3 like Mac OS X) AppleWebKit/603.3.8 (KHTML, like Gecko) Mobile/14G60 (400962928)";
124 public static final String MR_EVENT_EIT_CHANGE = "EVENT_EIT_CHANGE";
126 public static final String MR_EVENT_CHAN_TAG = "\"channel_num\":";
129 * program Info event data
130 * EVENT_EIT_CHANGE: for a complete list see
131 * http://support.huawei.com/hedex/pages/DOC1100366313CEH0713H/01/DOC1100366313CEH0713H/01/resources/dsv_hdx_idp/DSV/en/en-us_topic_0094619523.html
133 public static final int EV_EITCHG_RUNNING_NONE = 0;
134 public static final int EV_EITCHG_RUNNING_NOT_RUNNING = 1;
135 public static final int EV_EITCHG_RUNNING_STARTING = 2;
136 public static final int EV_EITCHG_RUNNING_PAUSING = 3;
137 public static final int EV_EITCHG_RUNNING_RUNNING = 4;
140 * playStatus event data
141 * EVENT_PLAYMODE_CHANGE: for a complete list see
142 * http://support.huawei.com/hedex/pages/DOC1100366313CEH0713H/01/DOC1100366313CEH0713H/01/resources/dsv_hdx_idp/DSV/en/en-us_topic_0094619231.html
144 public static final int EV_PLAYCHG_STOP = 0; // STOP: stop status.
145 public static final int EV_PLAYCHG_PAUSE = 1; // PAUSE: pause status.
146 public static final int EV_PLAYCHG_PLAY = 2; // NORMAL_PLAY: normal playback status for non-live content
148 public static final int EV_PLAYCHG_TRICK = 3; // TRICK_MODE: trick play mode, such as fast-forward, rewind,
149 // slow-forward, and slow-rewind.
150 public static final int EV_PLAYCHG_MC_PLAY = 4; // MULTICAST_CHANNEL_PLAY: live broadcast status of IPTV
151 // multicast channels and DVB channels.
152 public static final int EV_PLAYCHG_UC_PLAY = 5; // UNICAST_CHANNEL_PLAY: live broadcast status of IPTV unicast
153 // channels and OTT channels. //
154 public static final int EV_PLAYCHG_BUFFERING = 20; // BUFFERING: playback buffering status, including playing
155 // cPVR content during the recording, playing content
156 // during the download, playing the OTT content, and no
157 // data in the buffer area.
160 // MagentaTVControl SOAP requests
162 public static final String CHECKDEV_URI = "http://{0}:{1}{2}";
164 public static final int PAIRING_TIMEOUT_SEC = 300;
165 public static final String PAIRING_CONTROL_URI = "/upnp/service/X-CTC_RemotePairing/Control";
166 public static final String PAIRING_SUBSCRIBE = "SUBSCRIBE /upnp/service/X-CTC_RemotePairing/Event HTTP/1.1\r\nHOST: {0}:{1}\r\nCALLBACK: <http://{2}:{3}{4}>\r\nNT: upnp:event\r\nTIMEOUT: Second-{5}\r\nCONNECTION: close\r\n\r\n";
167 public static final String CONNECTION_CLOSE = "close";
169 public static final String SOAP_ENVELOPE = "<s:Envelope xmlns:s=\"http://schemas.xmlsoap.org/soap/envelope/\" s:encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\"><s:Body>{0}</s:Body></s:Envelope>";
170 public static final String PAIRING_SOAP_ACTION = "\"urn:schemas-upnp-org:service:X-CTC_RemotePairing:1#X-pairingRequest\"";
171 public static final String PAIRING_SOAP_BODY = "<u:X-pairingRequest xmlns:u=\"urn:schemas-upnp-org:service:X-CTC_RemotePairing:1\"><pairingDeviceID>{0}</pairingDeviceID><friendlyName>{1}</friendlyName><userID>{2}</userID></u:X-pairingRequest>";
173 public static final String PAIRCHECK_URI = "/upnp/service/X-CTC_RemotePairing/Control";
174 public static final String PAIRCHECK_SOAP_ACTION = "\"urn:schemas-upnp-org:service:X-CTC_RemotePairing:1#X-pairingCheck\"";
175 public static final String PAIRCHECK_SOAP_BODY = "<u:X-pairingCheck xmlns:u=\"urn:schemas-upnp-org:service:X-CTC_RemotePairing:1\"><pairingDeviceID>{0}</pairingDeviceID><verificationCode>{1}</verificationCode></u:X-pairingCheck>";
177 public static final String SENDKEY_URI = "/upnp/service/X-CTC_RemoteControl/Control";
178 public static final String SENDKEY_SOAP_ACTION = "\"urn:schemas-upnp-org:service:X-CTC_RemoteControl:1#X_CTC_RemoteKey\"";
179 public static final String SENDKEY_SOAP_BODY = "<u:X_CTC_RemoteKey xmlns:u=\"urn:schemas-upnp-org:service:X-CTC_RemoteControl:1\"><InstanceID>0</InstanceID><KeyCode>keyCode={0}^{1}:{2}^userID:{3}</KeyCode></u:X_CTC_RemoteKey>";
181 public static final String HTTP_NOTIFY = "NOTIFY";
182 public static final String NOTIFY_SID = "SID: ";
184 public static final String HASH_ALGORITHM_MD5 = "MD5";
185 public static final String HASH_ALGORITHM_SHA256 = "SHA-256";