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.omnilink.internal.discovery;
15 import org.eclipse.jdt.annotation.NonNullByDefault;
17 import com.digitaldan.jomnilinkII.Message;
18 import com.digitaldan.jomnilinkII.MessageTypes.ObjectProperties;
19 import com.digitaldan.jomnilinkII.MessageTypes.properties.AccessControlReaderProperties;
20 import com.digitaldan.jomnilinkII.MessageTypes.properties.AreaProperties;
21 import com.digitaldan.jomnilinkII.MessageTypes.properties.AudioSourceProperties;
22 import com.digitaldan.jomnilinkII.MessageTypes.properties.AudioZoneProperties;
23 import com.digitaldan.jomnilinkII.MessageTypes.properties.AuxSensorProperties;
24 import com.digitaldan.jomnilinkII.MessageTypes.properties.ButtonProperties;
25 import com.digitaldan.jomnilinkII.MessageTypes.properties.ThermostatProperties;
26 import com.digitaldan.jomnilinkII.MessageTypes.properties.UnitProperties;
27 import com.digitaldan.jomnilinkII.MessageTypes.properties.ZoneProperties;
30 * @author Craig Hamilton - Initial contribution
35 public class ObjectPropertyRequests<T extends ObjectProperties> {
37 public static final ObjectPropertyRequests<ThermostatProperties> THERMOSTAT = new ObjectPropertyRequests<>(
38 Message.OBJ_TYPE_THERMO, ThermostatProperties.class);
40 public static final ObjectPropertyRequests<ButtonProperties> BUTTONS = new ObjectPropertyRequests<>(
41 Message.OBJ_TYPE_BUTTON, ButtonProperties.class);
43 public static final ObjectPropertyRequests<AreaProperties> AREA = new ObjectPropertyRequests<>(
44 Message.OBJ_TYPE_AREA, AreaProperties.class);
46 public static final ObjectPropertyRequests<ZoneProperties> ZONE = new ObjectPropertyRequests<>(
47 Message.OBJ_TYPE_ZONE, ZoneProperties.class);
49 public static final ObjectPropertyRequests<UnitProperties> UNIT = new ObjectPropertyRequests<>(
50 Message.OBJ_TYPE_UNIT, UnitProperties.class);
52 public static final ObjectPropertyRequests<AudioZoneProperties> AUDIO_ZONE = new ObjectPropertyRequests<>(
53 Message.OBJ_TYPE_AUDIO_ZONE, AudioZoneProperties.class);
55 public static final ObjectPropertyRequests<AudioSourceProperties> AUDIO_SOURCE = new ObjectPropertyRequests<>(
56 Message.OBJ_TYPE_AUDIO_SOURCE, AudioSourceProperties.class);
58 public static final ObjectPropertyRequests<AuxSensorProperties> AUX_SENSORS = new ObjectPropertyRequests<>(
59 Message.OBJ_TYPE_AUX_SENSOR, AuxSensorProperties.class);
61 public static final ObjectPropertyRequests<AccessControlReaderProperties> LOCK = new ObjectPropertyRequests<>(
62 Message.OBJ_TYPE_CONTROL_READER, AccessControlReaderProperties.class);
64 private final int propertyRequest;
65 private final Class<T> responseType;
67 private ObjectPropertyRequests(int propertyRequest, Class<T> type) {
68 this.propertyRequest = propertyRequest;
69 this.responseType = type;
72 public int getPropertyRequest() {
73 return propertyRequest;
76 public Class<T> getResponseType() {