import org.slf4j.LoggerFactory;
/**
- * Monitors <openHAB-conf>/automation/ruby for Ruby files, but not libraries in lib or gems
+ * Monitors {@code <openHAB-conf>/automation/ruby} for Ruby files, but not libraries in lib or gems
*
* @author Cody Cutrer - Initial contribution
* @author Jan N. Klug - Refactored to new WatchService
* @author Dan Cunningham - Script injections
* @author Florian Hotze - Create lock object for multi-thread synchronization; Inject the {@link JSRuntimeFeatures}
* into the JS context; Fix memory leak caused by HostObject by making HostAccess reference static; Switch to
- * {@link Lock} for multi-thread synchronization; globals & openhab-js injection code caching
+ * {@link Lock} for multi-thread synchronization; globals and openhab-js injection code caching
*/
public class OpenhabGraalJSScriptEngine
extends InvocationInterceptingScriptEngineWithInvocableAndAutoCloseable<GraalJSScriptEngine> {
private final boolean injectionCachingEnabled;
/**
- * Creates an implementation of ScriptEngine (& Invocable), wrapping the contained engine, that tracks the script
- * lifecycle and provides hooks for scripts to do so too.
+ * Creates an implementation of ScriptEngine {@code (& Invocable)}, wrapping the contained engine,
+ * that tracks the script lifecycle and provides hooks for scripts to do so too.
*/
public OpenhabGraalJSScriptEngine(boolean injectionEnabled, boolean injectionCachingEnabled,
JSScriptServiceUtil jsScriptServiceUtil, JSDependencyTracker jsDependencyTracker) {
import org.osgi.service.component.annotations.Reference;
/**
- * Monitors <openHAB-conf>/automation/js for Javascript files, but not libraries
+ * Monitors {@code <openHAB-conf>/automation/js} for Javascript files, but not libraries
*
* @author Jonathan Gilbert - Initial contribution
* @author Jan N. Klug - Refactored to new WatchService
/**
* Returns the next collection dates per {@link WasteType}.
+ *
+ * @throws IOException
*/
Map<WasteType, CollectionDate> getCollectionDates() throws IOException;
}
import jcifs.smb.SmbFile;
/**
- * Autodiscovery for AirVisual Node by searching for a host advertised with the NetBIOS name 'AVISUAL-<SerialNumber>'.
+ * Autodiscovery for AirVisual Node by searching for a host advertised with the NetBIOS name
+ * {@code 'AVISUAL-<SerialNumber>'}.
*
* @author Victor Antonovich - Initial contribution
*/
import org.slf4j.LoggerFactory;
/**
- * The {@link ZoneHandler} is responsible for handling wired zones (i.e. REL & EXP messages).
+ * The {@link ZoneHandler} is responsible for handling wired zones (i.e. REL & EXP messages).
*
* @author Bob Adair - Initial contribution
* @author Bill Forsyth - Initial contribution
/**
* Construct an AD configuration command. If configParam is null, a query configuration command will be created.
- * If configParam consists of one or more NAME=value pairs (separated by '&' characters), a set configuration
- * command will be created. The validity of configParam is not checked.
+ * If configParam consists of one or more NAME=value pairs (separated by {@code '&'} characters), a set
+ * configuration command will be created. The validity of configParam is not checked.
*
* @param configParam String containing parameters to set or null
* @return ADCommand object containing the constructed command
*
* @author Gerhard Riegler - Initial contribution
* @author Christoph Weitkamp - Introduced UoM
- * @see based on the calculations of
- * http://www.computus.de/mondphase/mondphase.htm azimuth/elevation and
- * zodiac based on http://lexikon.astronomie.info/java/sunmoon/
+ * @implNote based on the calculations of
+ * http://www.computus.de/mondphase/mondphase.htm azimuth/elevation and
+ * zodiac based on http://lexikon.astronomie.info/java/sunmoon/
*/
public class MoonCalc {
private static final double NEW_MOON = 0;
* Calculates the seasons of the year.
*
* @author Gerhard Riegler - Initial contribution
- * @see based on the calculations of http://stellafane.org/misc/equinox.html
+ * @implNote based on the calculations of http://stellafane.org/misc/equinox.html
*/
public class SeasonCalc {
private int currentYear;
*
* @author Gerhard Riegler - Initial contribution
* @author Christoph Weitkamp - Introduced UoM
- * @see based on the calculations of http://www.suncalc.net
+ * @implNote based on the calculations of http://www.suncalc.net
*/
public class SunCalc {
private static final double J2000 = 2451545.0;
/**
* Stops a scheduler.
*
- * @param scheduler ScheduledFeature<?> which should be stopped
+ * @param scheduler {@code ScheduledFeature<?>} which should be stopped
*/
protected void stopScheduler(@Nullable ScheduledFuture<?> scheduler) {
if (scheduler != null) {
* {@inheritDoc}
*
* Stops the discovery scan. We set {@link #scanning} to false (allowing the listening threads to end naturally
- * within {@link #TIMEOUT) * 5 time then shutdown the {@link #executorService}
+ * within {@link #TIMEOUT} * 5 time then shutdown the {@link ExecutorService}
*/
@Override
protected synchronized void stopScan() {
* binding allows openHAB to both monitor and control a pool system through
* these controllers.
*
- * @see <a href="http://Autelis.com">http://autelis.com</a>
- * @see <a href="http://www.autelis.com/wiki/index.php?title=Pool_Control_HTTP_Command_Reference"</a> for Jandy API
- * @see <a href="http://www.autelis.com/wiki/index.php?title=Pool_Control_(PI)_HTTP_Command_Reference"</a> for Pentair
- * API
+ * The {@link AutelisHandler} is responsible for handling commands, which
+ * are sent to one of the channels.
*
- * The {@link AutelisHandler} is responsible for handling commands, which
- * are sent to one of the channels.
+ * @see <a href="http://Autelis.com">http://autelis.com</a>
+ * @see <a href="http://www.autelis.com/wiki/index.php?title=Pool_Control_HTTP_Command_Reference">for Jandy API</a>
+ * @see <a href="http://www.autelis.com/wiki/index.php?title=Pool_Control_(PI)_HTTP_Command_Reference">for Pentair
+ * API</a>
*
* @author Dan Cunningham - Initial contribution
* @author Svilen Valkanov - Replaced Apache HttpClient with Jetty
* devicelist version 1 (currently used by AVM) response:
*
* <pre>
+ * {@code
* <devicelist version="1">
* <device identifier="##############" id="##" functionbitmask="2944" fwversion="03.83" manufacturer="AVM" productname=
* "FRITZ!DECT 200">
* </hkr>
* </device>
* </devicelist>
- *
- * <pre>
+ * }
+ * </pre>
*
* @author Robert Bausdorf - Initial contribution
* @author Christoph Weitkamp - Added support for groups
/**
* Converts a celsius value to a FRITZ!Box value.
- * Valid celsius values: 8 to 28 °C > 16 to 56
- * 16 <= 8°C, 17 = 8.5°C...... 56 >= 28°C, 254 = ON, 253 = OFF
+ * Valid celsius values: 8 to 28 °C > 16 to 56,
+ * 16 <= 8°C, 17 = 8.5°C...... 56 >= 28°C, 254 = ON, 253 = OFF
*
* @param celsiusValue The celsius value to be converted
* @return The FRITZ!Box value
* Constructs an URL from the stored information, a specified path and a specified argument string
*
* @param path Path to include in URL
- * @param args String of arguments, in standard HTTP format (arg1=value1&arg2=value2&...)
+ * @param args String of arguments, in standard HTTP format ({@code arg1=value1&arg2=value2&...})
* @return URL
*/
public String getURL(String path, String args) {
*
* {@inheritDoc}
*
- * @implSpec
+ * @implNote
* This implementation returns a new HeritableFuture instance that uses
* the current instance as a parent. Cancellation of the child will result in
* cancellation of the parent.
*
* {@inheritDoc}
*
- * @implSpec
+ * @implNote
* This implementation cancels this future first, then cancels the parent future.
*/
@Override
*
* {@inheritDoc}
*
- * @implSpec
+ * @implNote
* This implementation will treat the future returned by the function as a parent future.
*/
@Override
*
* {@inheritDoc}
*
- * @implSpec
+ * @implNote
* This implementation will treat the future returned by the function as a parent future.
*/
@Override
*
* {@inheritDoc}
*
- * @implSpec
+ * @implNote
* This implementation will treat the future returned by the function as a parent future.
*/
@Override
* Constructor of the receiver runnable thread.
*
* @param bridgeHandler The handler of the Bond Bridge
- * @throws SocketException is some problem occurs opening the socket.
*/
public BPUPListener(BondBridgeHandler bridgeHandler) {
logger.debug("Starting BPUP Listener...");
/**
* Sends a PUT/POST request to the server.
*
- * @param method the type of request ({@link org.eclipse.jetty.http.HttpMethod.PUT} or
- * {@link org.eclipse.jetty.http.HttpMethod.POST})
+ * @param method the type of request ({@link org.eclipse.jetty.http.HttpMethod#PUT} or
+ * {@link org.eclipse.jetty.http.HttpMethod#POST})
* @param path the relative path to which the request should be sent
* @param requestDto the DTO which should be sent to the server as JSON
* @throws IndegoAuthenticationException if request was rejected as unauthorized
}
/**
- * Request map position updates for the next ({@link count} * {@link interval}) number of seconds.
+ * Request map position updates for the next ({@code count} * {@code interval}) number of seconds.
*
* @param count number of updates
* @param interval number of seconds between updates
/**
* Return tool name from tool type number.
*
- * @see https://www.boschtoolservice.com/gb/en/boschdiy/spareparts/search-results?q=Indego
+ * @see <a href=
+ * "https://www.boschtoolservice.com/gb/en/boschdiy/spareparts/search-results?q=Indego">
+ * https://www.boschtoolservice.com/gb/en/boschdiy/spareparts/search-results?q=Indego</a>
*
* @param toolTypeNumber condensed tool type number, e.g. "3600HA2200" rather than "3 600 HA2 200".
* @return tool type name
public abstract @Nullable String getBoschID();
/**
- * Initializes this handler. Use this method to register all services of the device with
- * {@link #registerService(TService, Consumer<TState>, Collection<String>, boolean)}.
+ * Initializes this handler.
*/
@Override
public void initialize() {
}
/**
- * Should be used by handlers to create their required services.
+ * Use this method to register all services of the device with
+ * {@link #registerService(BoschSHCService, Consumer, Collection, boolean)}.
*/
protected void initializeServices() throws BoschSHCException {
}
/**
* Query the Bosch Smart Home Controller for the state of the service with the specified name.
*
- * @note Use services instead of directly requesting a state.
+ * @implNote Use services instead of directly requesting a state.
*
* @param stateName Name of the service to query
* @param classOfT Class to convert the resulting JSON to
import com.google.gson.JsonSyntaxException;
/**
- * HTTP client using own context with private & Bosch Certs
+ * HTTP client using own context with private and Bosch Certs
* to pair and connect to the Bosch Smart Home Controller.
*
* @author Gerd Zanker - Initial contribution
import org.openhab.core.thing.ThingTypeUID;
/**
- * The {@link BoseSoundTouchBindinConstants} class defines common constants, which are
+ * The {@link BoseSoundTouchBindingConstants} class defines common constants, which are
* used across the whole binding.
*
* @author Christian Niessner - Initial contribution
* Synchronizes the underlying storage container with the current value for the presets stored on the player
* by updating the available ones and deleting the cleared ones
*
- * @param playerPresets a Map<Integer, ContentItems> containing the items currently stored on the player
+ * @param playerPresets a {@code Map<Integer, ContentItems>} containing the items currently stored on the player
*/
public void updatePresetContainerFromPlayer(Map<Integer, ContentItem> playerPresets) {
playerPresets.forEach((k, v) -> {
*
* @return the list of registered plants, or an empty {@link List} in case of no plants found
*
- * @throws {@link SmartherGatewayException}
+ * @throws SmartherGatewayException
* in case of communication issues with the Smarther API
*/
List<Plant> getPlants() throws SmartherGatewayException;
* @param chronothermostat
* the chronothermostat dto to get data from
*
- * @throws {@link SmartherIllegalPropertyValueException}
+ * @throws SmartherIllegalPropertyValueException
* if at least one of the module properties cannot be mapped to any valid enum value
*/
public void updateFromChronothermostat(Chronothermostat chronothermostat)
*
* @return a string representing the local date and time object
*
- * @throws DateTimeException if an error occurs during printing
+ * @throws DateTimeParseException if an error occurs during printing
*/
public static String format(LocalDateTime date, String pattern) {
DateTimeFormatter dtf = DateTimeFormatter.ofPattern(pattern);
*
* @return a string representing the date and time with timezone object
*
- * @throws DateTimeException if an error occurs during printing
+ * @throws DateTimeParseException if an error occurs during printing
*/
public static String format(ZonedDateTime date, String pattern) {
DateTimeFormatter dtf = DateTimeFormatter.ofPattern(pattern);
*
* @return a string representing the range between the two local date and time objects
*
- * @throws DateTimeException if an error occurs during printing
+ * @throws DateTimeParseException if an error occurs during printing
*/
public static String formatRange(LocalDateTime date1, LocalDateTime date2, String pattern) {
DateTimeFormatter dtf = DateTimeFormatter.ofPattern(pattern);
*
* @return a string representing the range between the two date and time with timezone objects
*
- * @throws DateTimeException if an error occurs during printing
+ * @throws DateTimeParseException if an error occurs during printing
*/
public static String formatRange(ZonedDateTime date1, ZonedDateTime date2, String pattern) {
DateTimeFormatter dtf = DateTimeFormatter.ofPattern(pattern);
* The {@link DaikinBindingConstants} class defines common constants, which are
* used across the whole binding.
*
- * @author Tim Waterhouse <tim@timwaterhouse.com> - Initial contribution
- * @author Paul Smedley <paul@smedley.id.au> - Modifications to support Airbase Controllers
+ * @author Tim Waterhouse - Initial contribution
+ * @author Paul Smedley - Modifications to support Airbase Controllers
*/
@NonNullByDefault
public class DaikinBindingConstants {
/**
* Exception for when an unexpected response is received from the Daikin controller.
*
- * @author Tim Waterhouse <tim@timwaterhouse.com> - Initial contribution
+ * @author Tim Waterhouse - Initial contribution
*
*/
@NonNullByDefault
* The {@link DaikinHandlerFactory} is responsible for creating things and thing
* handlers.
*
- * @author Tim Waterhouse <tim@timwaterhouse.com> - Initial contribution
- * @author Paul Smedley <paul@smedley.id.au> - Modifications to support Airbase Controllers
+ * @author Tim Waterhouse - Initial contribution
+ * @author Paul Smedley - Modifications to support Airbase Controllers
*
*/
@Component(service = ThingHandlerFactory.class, configurationPid = "binding.daikin")
* Handles performing the actual HTTP requests for communicating with Daikin air conditioning units.
*
* @author Tim Waterhouse - Initial Contribution
- * @author Paul Smedley <paul@smedley.id.au> - Modifications to support Airbase Controllers
+ * @author Paul Smedley - Modifications to support Airbase Controllers
* @author Jimmy Tanagra - Add support for https and Daikin's uuid authentication
* Implement connection retry
*
* Class for holding the set of parameters used by set and get control info.
*
* @author Tim Waterhouse - Initial Contribution
- * @author Paul Smedley <paul@smedley.id.au> - mods for Daikin Airbase
+ * @author Paul Smedley - mods for Daikin Airbase
*
*/
@NonNullByDefault
/**
* Container class for enums related to Daikin A/C systems
*
- * @author Tim Waterhouse <tim@timwaterhouse.com> - Initial contribution
+ * @author Tim Waterhouse - Initial contribution
* @author Lukas Agethen - Add special modes
*
*/
* Class for holding the set of parameters used by set and get control info.
*
* @author Tim Waterhouse - Initial Contribution
- * @author Paul Smedley <paul@smedley.id.au> - Mods for Daikin Airbase Units
+ * @author Paul Smedley - Mods for Daikin Airbase Units
*
*/
@NonNullByDefault
/**
* Container class for enums related to Daikin Airbase A/C systems
*
- * @author Tim Waterhouse <tim@timwaterhouse.com> - Initial contribution
- * @author Paul Smedley <paul@smedley.id.au> - Mods for Daikin Airbase Units
+ * @author Tim Waterhouse - Initial contribution
+ * @author Paul Smedley - Mods for Daikin Airbase Units
*
*/
@NonNullByDefault
/**
* Discovery service for Daikin AC units.
*
- * @author Tim Waterhouse <tim@timwaterhouse.com> - Initial contribution
- * @author Paul Smedley <paul@smedley.id.au> - Modifications to support Airbase Controllers
+ * @author Tim Waterhouse - Initial contribution
+ * @author Paul Smedley - Modifications to support Airbase Controllers
*
*/
@Component(service = DiscoveryService.class, configurationPid = "discovery.daikin")
* @author Tim Waterhouse - Initial Contribution
* @author Paul Smedley - Modifications to support Airbase Controllers
* @author Lukas Agethen - Added support for Energy Year reading, compressor frequency and powerful mode
- * @author Wouter Denayer - Added to support for weekly & daily energy reading
+ * @author Wouter Denayer - Added to support for weekly and daily energy reading
*
*/
@NonNullByDefault
* Handles communicating with a Daikin Airbase wifi adapter.
*
* @author Tim Waterhouse - Initial Contribution
- * @author Paul Smedley <paul@smedley.id.au> - Modifications to support Airbase Controllers
+ * @author Paul Smedley - Modifications to support Airbase Controllers
* @author Jimmy Tanagra - Support Airside and auto fan levels, DynamicStateDescription
*
*/
* Base class that handles common tasks with a Daikin air conditioning unit.
*
* @author Tim Waterhouse - Initial Contribution
- * @author Paul Smedley <paul@smedley.id.au> - Modifications to support Airbase Controllers
+ * @author Paul Smedley - Modifications to support Airbase Controllers
* @author Jimmy Tanagra - Split handler classes, support Airside and DynamicStateDescription
*
*/
/**
* http://dresden-elektronik.github.io/deconz-rest-doc/configuration/
* # Get full state
- * GET /api/<apikey>
+ * {@code GET /api/<apikey>}
*
* @author David Graeff - Initial contribution
*/
import javax.xml.bind.annotation.XmlRootElement;
/**
- * Used to unmarshall <list> items of the <functiondelete> CommandRX.
+ * Used to unmarshall {@code <list>} items of the {@code <functiondelete>} CommandRX.
*
* @author Jan-Willem Veldhuis - Initial contribution
*/
import javax.xml.bind.annotation.XmlRootElement;
/**
- * Used to unmarshall <list> items of the <functionrename> CommandRX.
+ * Used to unmarshall {@code <list>} items of the {@code <functionrename>} CommandRX.
*
* @author Jan-Willem Veldhuis - Initial contribution
*/
*
* chapter "1.2.7 TripLabel" in Technical Interface Description for external Developers
*
- * @see See <a href="https://developers.deutschebahn.com/db-api-marketplace/apis/product/timetables">DB API
- * Marketplace</a>
+ * See <a href="https://developers.deutschebahn.com/db-api-marketplace/apis/product/timetables">DB API
+ * Marketplace</a>
*
* @author Sönke Küper - Initial contribution.
*
* This class does store 4 serial parameters (baudrate, databits, parity, stopbits)
* for use in {@link DSMRSerialConnector}.
*
- * This class can also convert a string setting (<speed> <databits><parity><stopbits>)
+ * This class can also convert a string setting
+ * ({@code <speed> <databits><parity><stopbits>})
* to a {@link DSMRSerialSettings} object (e.g. 115200 8N1)
*
* @author M. Volaart - Initial contribution
+ *
* @author Hilbrand Bouwkamp - Removed auto detecting state checking from this class.
*/
@NonNullByDefault
*
* e.g. If the list contains 4 descriptors and the last 2 are repeating, idx=6 will return the 4th descriptor.
*
- * The idx is < 0 or outside a non-repeating descriptorslist size null is returned
+ * The idx {@code is < 0} or outside a non-repeating descriptorslist size null is returned
*
* @param idx the CosemValueDescriptor to return
* @return the CosemValueDescriptor or null if not found.
import org.eclipse.jdt.annotation.NonNullByDefault;
/**
- * Configuration for the {@link DWDPollenflugBridgeHandler}
+ * Configuration for the {@link org.openhab.binding.dwdpollenflug.internal.handler.DWDPollenflugBridgeHandler}
*
* @author Johannes Ott - Initial contribution
*/
* app. The meaning of the EcoTouch tags was provided by Waterkotte's technical
* service (by an excerpt of a developer manual).
*
- * @author Sebastian Held <sebastian.held@gmx.de> - Initial contribution
+ * @author Sebastian Held - Initial contribution
* @since 1.5.0
*/
*
* Used to solve compiler warning: "Avoid throwing raw exception types".
*
- * @author Sebastian Held <sebastian.held@gmx.de> - Initial contribution
+ * @author Sebastian Held - Initial contribution
* @since 3.1.0
*/
@NonNullByDefault
/**
* Represents all valid commands which could be processed by this binding
*
- * @author Sebastian Held <sebastian.held@gmx.de> - Initial contribution
+ * @author Sebastian Held - Initial contribution
* @since 1.5.0
*/
@NonNullByDefault
/**
* This Class provides the DatagramSocket that listens for eKey packets on the network
- * This will run in a thread and can be interrupted by calling <code>stopListener()<code>
+ * This will run in a thread and can be interrupted by calling <code>stopListener()</code>
* Before starting the thread initialization is required (mode, ip, port and deliminator)
*
* @author Hans-Jörg Merk - Initial contribution
/**
* Charge type for DatahubPricelist dataset.
- * See {@link https://www.energidataservice.dk/tso-electricity/DatahubPricelist#metadata-info}}
- *
+ *
+ * @see <a href="https://www.energidataservice.dk/tso-electricity/DatahubPricelist#metadata-info">
+ * https://www.energidataservice.dk/tso-electricity/DatahubPricelist#metadata-info</a>
* @author Jacob Laursen - Initial contribution
*/
@NonNullByDefault
/**
* Charge type code for DatahubPricelist dataset.
- * See {@link https://www.energidataservice.dk/tso-electricity/DatahubPricelist#metadata-info}}
+ *
* These codes are defined by the individual grid companies.
* For example, N1 uses "CD" for "Nettarif C" and "CD R" for "Rabat på nettarif N1 A/S".
*
+ * @see <a href="https://www.energidataservice.dk/tso-electricity/DatahubPricelist#metadata-info">
+ * https://www.energidataservice.dk/tso-electricity/DatahubPricelist#metadata-info</a>
* @author Jacob Laursen - Initial contribution
*/
@NonNullByDefault
/**
* Global Location Number.
- * See {@link https://www.gs1.org/standards/id-keys/gln}}
- * The Global Location Number (GLN) can be used by companies to identify their locations.
+ *
+ * The <a href="https://www.gs1.org/standards/id-keys/gln">Global Location Number (GLN)</a>
+ * can be used by companies to identify their locations.
*
* @author Jacob Laursen - Initial contribution
*/
/**
* Discovery for Enocean USB dongles, integrated in USB-serial discovery by implementing a component of type
* {@link UsbSerialDiscoveryParticipant}.
- * <p/>
+ * <p>
* Currently, this {@link UsbSerialDiscoveryParticipant} supports the Enocean USB300 dongles.
*
* @author Aitor Iturrioz - initial contribution
import org.slf4j.LoggerFactory;
/**
- * The {@link EnOceanBridgeHandler} is responsible for sending ESP3Packages build by
- * {@link org.openhab.binding.enocean.internal.handler.EnOceanActuatorHandler} and
- * transferring received ESP3Packages to
- * {@link org.openhab.binding.enocean.internal.handler.EnOceanSensorHandler}.
+ * The {@link EnOceanBridgeHandler} is responsible for sending ESP3Packages build by {@link EnOceanBaseActuatorHandler}
+ * and transferring received ESP3Packages to {@link EnOceanBaseSensorHandler}.
*
* @author Daniel Weber - Initial contribution
*/
LOW_HIGH,
/**
- * level0~5,<=1 for BATT low
+ * level0~5,{@literal <=1} for BATT low
*/
LEVEL,
/**
- * level0~6,<=1 for BATT low, 6 = dc power supply
+ * level0~6,{@literal <=1} for BATT low, 6 = dc power supply
*/
LEVEL_OR_DC,
VOLTAGE_BROAD_STEPS,
/**
- * val*0.02V if v<=1.2V BATT low
+ * val*0.02V if {@literal v<=1.2V} BATT low
*/
VOLTAGE_FINE_STEPS
}
*
* @param channelUID channel UID
* @param epochSecond value to update
- * @param unit unit associated with the value
*/
protected <T extends Quantity<T>> void updateEpochSecondStateIfLinked(ChannelUID channelUID, long epochSecond) {
if (isLinked(channelUID)) {
*
* Client for accessing FMI weather data
*
+ * <p>
* Subject to license terms https://en.ilmatieteenlaitos.fi/open-data
*
- *
- * All weather stations:
- * https://opendata.fmi.fi/wfs/fin?service=WFS&version=2.0.0&request=GetFeature&storedquery_id=fmi::ef::stations&networkid=121&
- * Networkid parameter isexplained in entries of
- * https://opendata.fmi.fi/wfs/fin?service=WFS&version=2.0.0&request=GetFeature&storedquery_id=fmi::ef::stations
+ * @see <a href=
+ * "https://opendata.fmi.fi/wfs/fin?service=WFS&version=2.0.0&request=GetFeature&storedquery_id=fmi::ef::stations&networkid=121&">
+ * All weather stations</a>
+ * @see <a href=
+ * "https://opendata.fmi.fi/wfs/fin?service=WFS&version=2.0.0&request=GetFeature&storedquery_id=fmi::ef::stations">
+ * Networkid parameter is explained in entries of</a>
*
* @author Sami Salonen - Initial contribution
*
/**
* Cities of Finland
*
- * Originally parsed from (not available any more)
- * https://opendata.fmi.fi/wfs?service=WFS&version=2.0.0&request=getFeature&storedquery_id=fmi::forecast::hirlam::surface::cities::multipointcoverage
- *
+ * Originally parsed from <a href=
+ * "https://opendata.fmi.fi/wfs?service=WFS&version=2.0.0&request=getFeature&storedquery_id=fmi::forecast::hirlam::surface::cities::multipointcoverage">
+ * (not available any more)</a>
*
* Using piece of code similar to below:
*
* @author Thomas Rokohl - Initial contribution
* @author Peter Schraffl - Added device status and error status channels
* @author Thomas Kordelle - Added inverter power, battery state of charge and PV solar yield
- * @author Hannes Spenger - Added ohmpilot & meter power sum
+ * @author Hannes Spenger - Added ohmpilot and meter power sum
* @author Jimmy Tanagra - Implement a common url parsing method
*/
@NonNullByDefault
* this:
*
* <pre>
+ * {@code
* <xmp>
* <fsapiResponse> <status>FS_OK</status> <value><u8>1</u8></value> </fsapiResponse>
* </xmp>
+ * }
* </pre>
*
* This class parses this XML data and provides functions for reading and casting typical fields.
@NonNullByDefault
public interface GardenaSmartWebSocketListener {
/**
- * This method is called, when the evenRunner stops abnormally (statuscode <> 1000).
+ * This method is called, when the evenRunner stops abnormally ({@code statuscode <> 1000}).
*/
void onWebSocketClose(String id);
* temperature value shown on the device LCD display should match the value shown by this binding when the config
* parameter currentTemperatureOffset is set to 0.
*
- * @see https://github.com/tomikaa87/gree-remote#getting-the-current-temperature-reading-from-the-internal-sensor
+ * @see <a href=
+ * "https://github.com/tomikaa87/gree-remote#getting-the-current-temperature-reading-from-the-internal-sensor">
+ * https://github.com/tomikaa87/gree-remote#getting-the-current-temperature-reading-from-the-internal-sensor</a>
* for more details.
*/
public static final double INTERNAL_TEMP_SENSOR_OFFSET = -40.0;
/**
* SwingLfRig: controls the swing mode of the horizontal air blades (available on limited number of devices, e.g.
- * some Cooper & Hunter units - thanks to mvmn)
+ * some Cooper and Hunter units - thanks to mvmn)
*
* 0: default
* 1: full swing
* The {@link HubShadeTimeoutException} is a custom exception for the HD PowerView Hub
* which is thrown when a shade does not respond to a request.
*
- * @author @author Jacob Laursen - Initial contribution
+ * @author Jacob Laursen - Initial contribution
*/
@NonNullByDefault
public class HubShadeTimeoutException extends HubException {
import org.openhab.core.types.UnDefType;
/**
- * The {@next HeliosVentilationDataPoint} is a description of a datapoint in the Helios ventilation system.
+ * The {@link HeliosVentilationDataPoint} is a description of a datapoint in the Helios ventilation system.
*
* @author Raphael Mack - Initial contribution
*/
/**
* Ask for the actual shuffle mode of the player. The result has
* to be handled by the event controller. The HEOS system returns {@link HeosConstants#ON},
- * {@link HeosConstants#HEOS_REPEAT_ALL} or {@link HeosConstants#HEOS_REPEAT_ONE}
+ * {@link HeosConstants#REPEAT_ALL} or {@link HeosConstants#REPEAT_ONE}
*
* @param id The player id the shuffle mode shall get for
* @return
* @return A list with all read commands
* @throws ReadException
* @throws IOException
- * @see Telnet.readLine(int timeOut).
+ * @see #readLine(int timeOut)
*/
public String readLine() throws ReadException, IOException {
return readLine(READ_TIMEOUT);
}
/**
- * Returns the encoding that is suitable on requests to & responds from the Homematic gateway.
+ * Returns the encoding that is suitable on requests to and responds from the Homematic gateway.
*/
public Charset getEncoding() {
if (gatewayInfo != null && gatewayInfo.isHomegear()) {
* which are excluded by
* {@link org.openhab.binding.homematic.type.HomematicThingTypeExcluder}
*
- * @param URI config-description-uri
+ * @param uri config-description-uri
* e.g. <i>thing-type:homematic:HM-WDS40-TH-I-2</i>
* @return ConfigDescription that was added to HomematicConfigDescriptionProvider,
* identified by its config-description-uri<br>
* Use this method to lookup a ThingType which was generated by the
* homematic binding. Other than {@link #getThingType(ThingTypeUID, Locale)}
* of this provider, it will return also those {@link ThingType}s which are
- * excluded by {@link HomematicThingTypeExcluder}
+ * excluded by {@link org.openhab.binding.homematic.type.HomematicThingTypeExcluder}
*
* @param thingTypeUID
* e.g. <i>homematic:HM-Sec-SC</i>
/**
* Get the color as an HSBType. This returns an HSB that is based on an amalgamation of the color xy, dimming, and
- * on/off JSON elements. It takes its 'H' & 'S' parts from the 'ColorXy' JSON element, and its 'B' part from the
+ * on/off JSON elements. It takes its 'H' and 'S' parts from the 'ColorXy' JSON element, and its 'B' part from the
* on/off resp. dimming JSON elements. If off the B part is 0, otherwise it is the dimming element value. Note: this
* method is only to be used on cached state DTOs which already have a defined color gamut.
*
* DTO that contains an API reference element.
*
* The V2 API is set up in such a way that all resources of the same type are grouped together under the
- * /resource/<resourcetype> endpoint, but all those resources commonly reference each other, which is done in a
+ * {@code /resource/<resourcetype>} endpoint, but all those resources commonly reference each other, which is done in a
* standardized way by indicating the resource type (rtype) and resource id (rid).
*
* A typical usage is in a single physical device that hosts multiple services. An existing example is the Philips Hue
* (if any).
*
* @param target the target resource.
- * @param command the new state command should be a QuantityType<Temperature> (but it can also handle DecimalType).
+ * @param command the new state command should be a {@code QuantityType<Temperature>} (but it can also handle
+ * {@code DecimalType}).
* @param source another resource containing the MirekSchema.
*
* @return the target resource.
}
/**
- * Fetch the full list of scenes from the bridge, and call updateSceneContributors(List<Resource> allScenes)
+ * Fetch the full list of scenes from the bridge, and call {@code updateSceneContributors(List<Resource> allScenes)}
*
* @throws ApiException if a communication error occurred.
* @throws AssetNotLoadedException if one of the assets is not loaded.
* @param sessionID
* @param auxID
* @param lightValue
- * @param subtype
+ * @param subType
* @return
* @throws IOException
* @throws NotAuthorizedException
/**
* Sends an Auxiliary dimmer command
*
- * @param serialNumber
- * @param sessionId
- * @param auxId
- * @param lightValue
+ * @param serial
+ * @param sessionID
+ * @param auxID
+ * @param level
* @return
* @throws IOException
* @throws NotAuthorizedException
* the binding, encapsulating the implementation of the real calendar.
*
* @author Michael Wodniok - Initial contribution
- * @author Andrew Fiddian-Green - Methods getJustBegunEvents() & getJustEndedEvents()
+ * @author Andrew Fiddian-Green - Methods getJustBegunEvents() and getJustEndedEvents()
* @author Michael Wodniok - Added getFilteredEventsBetween()
*/
@NonNullByDefault
* This is a class that implements a Command Tag that may be embedded in an
* Event Description. Valid Tags must follow one of the following forms..
*
+ * <pre>
+ * {@code
* BEGIN:<itemName>:<targetState>
* BEGIN:<itemName>:<targetState>:<authorizationCode>
* END:<itemName>:<targetState>
* END:<itemName>:<targetState>:<authorizationCode>
+ * }
+ * </pre>
*
* @author Andrew Fiddian-Green - Initial contribution
*/
/**
* A type enumerator to indicate whether a Command Tag is of type BEGIN or END; as in the following examples:
*
+ * <pre>
+ * {@code
* BEGIN:<item_name>:<new_state>
* END:<item_name>:<new_state>
+ * }
+ * </pre>
*
* @author Andrew Fiddian-Green - Initial contribution
*/
import org.openhab.binding.ihc.internal.ws.exeptions.ConversionException;
/**
- * IHC / ELKO <-> openHAB data type converter interface.
+ * IHC / ELKO {@literal <->} openHAB data type converter interface.
*
* @author Pauli Anttila - Initial contribution
*/
import org.openhab.core.types.Type;
/**
- * IHC / ELKO <-> openHAB data type converter factory.
+ * IHC / ELKO {@literal <->} openHAB data type converter factory.
*
* @author Pauli Anttila - Initial contribution
*/
import org.openhab.core.library.types.DateTimeType;
/**
- * DateTimeType <-> WSDateValue converter.
+ * DateTimeType {@literal <->} WSDateValue converter.
*
* @author Pauli Anttila - Initial contribution
*/
import org.openhab.core.library.types.DateTimeType;
/**
- * DateTimeType <-> WSTimeValue converter.
+ * DateTimeType {@literal <->} WSTimeValue converter.
*
* @author Pauli Anttila - Initial contribution
*/
import org.openhab.core.library.types.DecimalType;
/**
- * DecimalType <-> WSBooleanValue converter.
+ * DecimalType {@literal <->} WSBooleanValue converter.
*
* @author Pauli Anttila - Initial contribution
*/
import org.openhab.core.library.types.DecimalType;
/**
- * DecimalType <-> WSEnumValue converter.
+ * DecimalType {@literal <->} WSEnumValue converter.
*
* @author Pauli Anttila - Initial contribution
*/
import org.openhab.core.library.types.DecimalType;
/**
- * DecimalType <-> WSFloatingPointValue converter.
+ * DecimalType {@literal <->} WSFloatingPointValue converter.
*
* @author Pauli Anttila - Initial contribution
*/
import org.openhab.core.library.types.DecimalType;
/**
- * DecimalType <-> WSIntegerValue converter.
+ * DecimalType {@literal <->} WSIntegerValue converter.
*
* @author Pauli Anttila - Initial contribution
*/
import org.openhab.core.library.types.DecimalType;
/**
- * DecimalType <-> WSTimerValue converter.
+ * DecimalType {@literal <->} WSTimerValue converter.
*
* @author Pauli Anttila - Initial contribution
*/
import org.openhab.core.library.types.DecimalType;
/**
- * DecimalType <-> WSWeekdayValue converter.
+ * DecimalType {@literal <->} WSWeekdayValue converter.
*
* @author Pauli Anttila - Initial contribution
*/
import org.openhab.core.library.types.OnOffType;
/**
- * OnOffType <-> WSBooleanValue converter.
+ * OnOffType {@literal <->} WSBooleanValue converter.
*
* @author Pauli Anttila - Initial contribution
*/
import org.openhab.core.types.Command;
/**
- * OnOffType <-> WSIntegerValue converter.
+ * OnOffType {@literal <->} WSIntegerValue converter.
*
* @author Pauli Anttila - Initial contribution
*/
import org.openhab.core.library.types.OpenClosedType;
/**
- * OpenClosedType <-> WSBooleanValue converter.
+ * OpenClosedType {@literal <->} WSBooleanValue converter.
*
* @author Pauli Anttila - Initial contribution
*/
import org.openhab.core.library.types.OpenClosedType;
/**
- * OpenClosedType <-> WSIntegerValue converter.
+ * OpenClosedType {@literal <->} WSIntegerValue converter.
*
* @author Pauli Anttila - Initial contribution
*/
import org.openhab.core.library.types.PercentType;
/**
- * PercentType <-> WSIntegerValue converter.
+ * PercentType {@literal <->} WSIntegerValue converter.
*
* @author Pauli Anttila - Initial contribution
*/
import org.openhab.core.library.types.StringType;
/**
- * StringType <-> WSEnumValue converter.
+ * StringType {@literal <->} WSEnumValue converter.
*
* @author Pauli Anttila - Initial contribution
*/
import org.openhab.core.library.types.UpDownType;
/**
- * UpDownType <-> WSBooleanValue converter.
+ * UpDownType {@literal <->} WSBooleanValue converter.
*
* @author Pauli Anttila - Initial contribution
*/
import org.openhab.core.library.types.UpDownType;
/**
- * UpDownType <-> WSIntegerValue converter.
+ * UpDownType {@literal <->} WSIntegerValue converter.
*
* @author Pauli Anttila - Initial contribution
*/
package org.openhab.binding.ihc.internal.ws.services;
import java.io.IOException;
-import java.net.SocketTimeoutException;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
*
* @param timeoutInSeconds How many seconds to wait notifications.
* @return List of received runtime value notifications.
- * @throws SocketTimeoutException
* @throws IhcExecption
*/
public List<WSResourceValue> waitResourceValueNotifications(int timeoutInSeconds) throws IhcExecption {
* Constructor for an InsteonAddress that wraps an X10 address.
* Simply stuff the X10 address into the lowest byte.
*
- * @param aX10HouseUnit the house & unit number as encoded by the X10 protocol
+ * @param aX10HouseUnit the house and unit number as encoded by the X10 protocol
*/
public InsteonAddress(byte aX10HouseUnit) {
highByte = 0;
import org.eclipse.jdt.annotation.NonNullByDefault;
/**
- * The {@link IntesisModeEnum) contains informations for translating device modes into internally used numbers.
+ * The {@link IntesisHomeModeEnum} contains informations for translating device modes into internally used numbers.
*
* @author Hans-Jörg Merk - Initial contribution
*/
* {@inheritDoc}
*
* Stops the discovery scan. We set {@link #scanning} to false (allowing the listening thread to end naturally
- * within {@link #TIMEOUT) * 5 time then shutdown the {@link #executorService}
+ * within {@link #DISCOVERY_DEFAULT_TIMEOUT_RATE_MS} * 5 time then shutdown the {@link #ExecutorService}
*/
@Override
protected synchronized void stopScan() {
* The KM200SwitchProgramService representing a switch program service with its all capabilities
*
* @author Markus Eckhardt - Initial contribution
- * @NonNullByDefault is not working here because of the switchMap array handling
+ * @implNote {@code @NonNullByDefault} is not working here because of the switchMap array handling
*/
public class KM200SwitchProgramServiceHandler {
</bnd>
</configuration>
</plugin>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-javadoc-plugin</artifactId>
- <configuration>
- <tags>
- <tag>
- <name>apiNote</name>
- <placement>a</placement>
- <head>API note:</head>
- </tag>
- <tag>
- <name>implNote</name>
- <placement>a</placement>
- <head>Implementation note:</head>
- </tag>
- </tags>
- </configuration>
- </plugin>
</plugins>
</pluginManagement>
</build>
*
* @author Paul Frank - Initial contribution
* @author Christoph Weitkamp - Added channels for opening PVR TV or Radio streams
- * @author Andreas Reinhardt & Christoph Weitkamp - Added channels for thumbnail and fanart
+ * @author Andreas Reinhardt and Christoph Weitkamp - Added channels for thumbnail and fanart
* @author Christoph Weitkamp - Improvements for playing audio notifications
*/
@NonNullByDefault
*
* @author Paul Frank - Initial contribution
* @author Christoph Weitkamp - Added channels for opening PVR TV or Radio streams
- * @author Andreas Reinhardt & Christoph Weitkamp - Added channels for thumbnail and fanart
+ * @author Andreas Reinhardt and Christoph Weitkamp - Added channels for thumbnail and fanart
* @author Christoph Weitkamp - Improvements for playing audio notifications
* @author Meng Yiqi - Added selection of audio and subtitle
*/
*
* @author Paul Frank - Initial contribution
* @author Christoph Weitkamp - Added channels for opening PVR TV or Radio streams
- * @author Andreas Reinhardt & Christoph Weitkamp - Added channels for thumbnail and fanart
+ * @author Andreas Reinhardt and Christoph Weitkamp - Added channels for thumbnail and fanart
* @author Christoph Weitkamp - Improvements for playing audio notifications
*/
public class KodiConnection implements KodiClientSocketEventListener {
}
/**
- * Process a {@link WebHookEvent} that has been received by the Servlet from a Konnected module with respect to a
- * sensor event or status update request
+ * Process a {@link KonnectedModuleGson} that has been received by the Servlet from a Konnected module with respect
+ * to a sensor event or status update request
*
* @param event the {@link KonnectedModuleGson} event that contains the state and pin information to be processed
*/
* <pre>
* {
* @code
- * RuntimeTypeAdapterFactory<Shape> shapeAdapterFactory = RuntimeTypeAdapterFactory.of(Shape.class, "type");
+ * RuntimeTypeAdapterFactory<Shape> shapeAdapterFactory = RuntimeTypeAdapterFactory.of(Shape.class, "type");
* }
* </pre>
*
* <pre>
* {
* @code
- * RuntimeTypeAdapterFactory<Shape> shapeAdapterFactory = RuntimeTypeAdapterFactory.of(Shape.class)
+ * RuntimeTypeAdapterFactory<Shape> shapeAdapterFactory = RuntimeTypeAdapterFactory.of(Shape.class)
* .registerSubtype(Rectangle.class).registerSubtype(Circle.class).registerSubtype(Diamond.class);
* }
* </pre>
* {@inheritDoc}
*
* Stops the discovery scan. We set {@link #scanning} to false (allowing the listening threads to end naturally
- * within {@link #TIMEOUT_MS) * {@link #SCAN_THREADS} time then shutdown the {@link #executorService}
+ * within {@link #TIMEOUT_MS} * {@link #SCAN_THREADS} time then shutdown the {@link #executorService}
*/
@Override
protected synchronized void stopScan() {
/**
* Enumerates the LIFX products, their IDs and feature set.
*
- * @see https://lan.developer.lifx.com/docs/lifx-products
+ * @see <a href="https://lan.developer.lifx.com/docs/lifx-products">
+ * https://lan.developer.lifx.com/docs/lifx-products</a>
*
* @author Wouter Born - Initial contribution
* @author Wouter Born - Add temperature ranges and simplify feature definitions
/**
* Returns the signal strength as a quality percentage:
* <ul>
- * <li>RSSI <= -100: returns 0
- * <li>-100 < RSSI < -50: returns a value between 0 and 1 (linearly distributed)
- * <li>RSSI >= -50: returns 1
+ * <li>{@code RSSI <= -100}: returns 0
+ * <li>{@code -100 < RSSI < -50}: returns a value between 0 and 1 (linearly distributed)
+ * <li>{@code RSSI >= -50}: returns 1
* </ul>
*
* @return a value between 0 and 1. 0 being worst strength and 1
/**
* Returns the received signal strength indicator (RSSI).
*
- * @return a value <= 0. 0 being best strength and more negative values indicate worser strength.
+ * @return a value {@code <= 0. 0} being best strength and more negative values indicate worser strength.
*/
public double toRSSI() {
return 10 * Math.log10(milliWatts);
/**
* The {@link LivisiBridgeHandler} is responsible for handling the LIVISI SmartHome controller including the connection
* to the LIVISI SmartHome backend for all communications with the LIVISI SmartHome {@link DeviceDTO}s.
- * <p/>
+ * <p>
* It implements the {@link AccessTokenRefreshListener} to handle updates of the oauth2 tokens and the
* {@link EventListener} to handle {@link EventDTO}s, that are received by the {@link LivisiWebSocket}.
- * <p/>
+ * <p>
* The {@link DeviceDTO}s are organized by the {@link DeviceStructureManager}, which is also responsible for the
* connection
* to the LIVISI SmartHome webservice via the {@link LivisiClient}.
void onError(Throwable cause);
/**
- * This method is called, when the evenRunner stops abnormally (statuscode <> 1000).
+ * This method is called, when the evenRunner stops abnormally ({@code statuscode <> 1000}).
*/
void connectionClosed();
}
* Handler responsible for communicating with Lutron contact closure outputs (CCOs).
* e.g. VCRX CCOs and CCO RF module
*
- * Note: For a RA2 Pulsed CCO, querying the output state with ?OUTPUT,<id>,1 is meaningless and will always
- * return 100 (on). Also, the main repeater will not report ~OUTPUT commands for a pulsed CCO regardless of
- * the #MONITORING setting. So this binding supports sending pulses ONLY.
+ * Note: For a RA2 Pulsed CCO, querying the output state with {@code ?OUTPUT,<id>,1} is meaningless and will
+ * always return 100 (on). Also, the main repeater will not report ~OUTPUT commands for a pulsed CCO regardless
+ * of the #MONITORING setting. So this binding supports sending pulses ONLY.
*
* @author Bob Adair - Initial contribution
*
* {@inheritDoc}
*
* Stops the discovery scan. We set {@link #scanning} to false (allowing the listening threads to end naturally
- * within {@link #TIMEOUT_MS) * {@link #SCAN_THREADS} time then shutdown the {@link #executorService}
+ * within {@link #TIMEOUT_MS} * {@link #SCAN_THREADS} time then shutdown the {@link #executorService}
*/
@Override
protected synchronized void stopScan() {
* Retries the device properties. This will result in an Exception if the device
* is not connected.
*
+ * <p>
* Response is returned in XMl format, e.g.:
+ *
+ * <p>
+ * {@code
* <?xml version="1.0"?> <root xmlns="urn:schemas-upnp-org:device-1-0">
* <specVersion><major>1</major><minor>0</minor></specVersion> <device>
* <UDN>uuid:70dff25c-1bdf-5731-a283-XXXXXXXX</UDN>
* <service> <serviceType>urn:dial-multiscreen-org:service:dial:1</serviceType>
* <serviceId>urn:dial-multiscreen-org:service:dial</serviceId> </service>
* </serviceList> </device> </root>
+ * }
*
* @return true: device is online, false: device is offline
* @throws MagentaTVException
* Subscripbe to event channel a) receive the pairing code b) receive
* programInfo and playStatus events after successful paring
*
+ * {@code
* SUBSCRIBE /upnp/service/X-CTC_RemotePairing/Event HTTP/1.1\r\n HOST:
* $remote_ip:$remote_port CALLBACK: <http://$local_ip:$local_port/>\r\n // NT:
* upnp:event\r\n // TIMEOUT: Second-300\r\n // CONNECTION: close\r\n // \r\n
+ * }
*
* @throws MagentaTVException
*/
/**
* Send Pairing Request to the Media Receiver. The method waits for the
* response, but the pairing code will be received via the NOTIFY callback (see
- * NotifyServlet)
+ * NotifyServlet).
+ *
+ * <p>
+ * XML format for Pairing Request:
*
- * XML format for Pairing Request: <s:Envelope
+ * <p>
+ * {@code
+ * <s:Envelope
* xmlns:s=\"http://schemas.xmlsoap.org/soap/envelope/\"
* <s:encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\"> <s:Body>\n
* <u:X-pairingRequest
* <pairingDeviceID>$pairingDeviceID</pairingDeviceID>\n
* <friendlyName>$friendlyName</friendlyName>\n <userID>$userID</userID>\n
* </u:X-pairingRequest>\n </s:Body> </s:Envelope>
- *
+ * }
+ *
* @return true: pairing successful
* @throws MagentaTVException
*/
/**
* Calculates the verifificationCode to complete pairing. This will be triggered
* as a result after receiving the pairing code provided by the MR. The
- * verification code is the MD5 hash of <Pairing Code><Terminal-ID><User ID>
+ * verification code is the MD5 hash of {@code <Pairing Code><Terminal-ID><User ID>}
*
* @param pairingCode Pairing code received from the MR
* @return true: a new code has been generated, false: the code matches a
* code (0x.... notation) or with a symbolic namne, which will first be mapped
* to the key code
*
- * XML format for Send Key
+ * <p>
+ * XML format for Send Key:
*
+ * <p>
+ * {@code
* <s:Envelope xmlns:s=\"http://schemas.xmlsoap.org/soap/envelope/\"
* s:encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\"> <s:Body>\n
* <u:X_CTC_RemoteKey
* <InstanceID>0</InstanceID>\n
* <KeyCode>keyCode=$keyCode^$pairingDeviceID:$verificationCode^userID:$userID</KeyCode>\n
* </u:X_CTC_RemoteKey>\n </s:Body></s:Envelope>
+ * }
*
* @param keyName
* @return true: successful, false: failed, e.g. unkown key code
/**
* Helper to parse a Xml tag value from string without using a complex XML class
*
- * @param xml Input string in the format <tag>value</tag>
+ * @param xml Input string in the format {@code <tag>value</tag>}
* @param tagName The tag to find
- * @return Tag value (between <tag> and </tag>)
+ * @return Tag value (between {@code <tag>} and {@code </tag>})
*/
public static String getXmlValue(String xml, String tagName) {
String open = "<" + tagName + ">";
/**
* Notify servlet handler (will be called by jetty
*
+ * <p>
* Format of SOAP message:
+ *
+ * <p>
+ * {@code
* <e:propertyset xmlns:e="urn:schemas-upnp-org:event-1-0"> <e:property>
* <uniqueDeviceID>1C18548DAF7DE9BC231249DB28D2A650</uniqueDeviceID>
* </e:property> <e:property> <messageBody>X-pairingCheck:5218C0AA</messageBody>
* </e:property> </e:propertyset>
+ * }
+ *
+ * <p>
+ * Format of event message: {@code <?xml version="1.0"?>}
*
- * Format of event message: <?xml version="1.0"?>
+ * <p>
+ * {@code
* <e:propertyset xmlns:e="urn:schemas-upnp-org:event-1-0"> <e:property>
* <STB_Mac>AC6FBB61B1E5</STB_Mac> </e:property> <e:property>
* <STB_playContent>{"new_play_mode":0,"playBackState":1,&
* quot;mediaType":1,"mediaCode":"3682"}</
* STB_playContent> </e:property> </e:propertyset>
+ * }
*
* @param request
* @param response
*
- * @throws ServletException, IOException
+ * @throws ServletException
+ * @throws IOException
*/
@Override
protected void service(@Nullable HttpServletRequest request, @Nullable HttpServletResponse response)
/**
* Utility class for common tasks within the MAX! binding package.
*
- * @author Andreas Heil (info@aheil.de) - Initial contribution
+ * @author Andreas Heil - Initial contribution
* @author Marcel Verpaalen - OH2 update
*
*/
import org.slf4j.LoggerFactory;
/**
- * The {@link MCommand} Creates the MAX! Cube the room & device name information update message.
+ * The {@link MCommand} Creates the MAX! Cube the room and device name information update message.
*
* @author Marcel Verpaalen - Initial Contribution
*/
import org.openhab.binding.max.internal.device.ThermostatModeType;
/**
- * {@link SCommand} for setting MAX! thermostat temperature & mode.
+ * {@link SCommand} for setting MAX! thermostat temperature and mode.
*
- * @author Andreas Heil (info@aheil.de) - Initial contribution
+ * @author Andreas Heil - Initial contribution
* @author Marcel Verpaalen - OH2 update + simplification
*/
@NonNullByDefault
/**
* The port of the MAX! Cube LAN gateway as provided at
- * http://www.elv.de/controller.aspx?cid=824&detail=10&detail2=3484
+ * <a href="http://www.elv.de/controller.aspx?cid=824&detail=10&detail2=3484">
+ * http://www.elv.de/controller.aspx?cid=824&detail=10&detail2=3484</a>
*/
public Integer port;
/**
* Base class for devices provided by the MAX! protocol.
*
- * @author Andreas Heil (info@aheil.de) - Initial contribution
+ * @author Andreas Heil - Initial contribution
* @author Marcel Verpaalen - OH2 update + enhancements
*/
public abstract class Device {
/**
* Base class for configuration provided by the MAX! Cube C Message.
*
- * @author Andreas Heil (info@aheil.de) - Initial contribution
+ * @author Andreas Heil - Initial contribution
*/
public final class DeviceConfiguration {
/**
* Device information provided by the M message meta information.
*
- * @author Andreas Heil (info@aheil.de) - Initial contribution
+ * @author Andreas Heil - Initial contribution
*/
public class DeviceInformation {
/**
* This enumeration represents the different message types provided by the MAX! Cube protocol.
*
- * @author Andreas Heil (info@aheil.de) - Initial contribution
+ * @author Andreas Heil - Initial contribution
*/
public enum DeviceType {
Invalid(256),
import java.util.Date;
/**
- * MAX! Heating thermostat & Heating thermostat+ .
+ * MAX! Heating thermostat and Heating thermostat+ .
*
- * @author Andreas Heil (info@aheil.de) - Initial contribution
+ * @author Andreas Heil - Initial contribution
* @author Marcel Verpaalen - OH2 update
*/
public class HeatingThermostat extends Device {
/**
* Room information provided by the M message meta information.
*
- * @author Andreas Heil (info@aheil.de) - Initial contribution
- * @author Marcel Verpaalen (marcel@verpaalen.com) - OH2 update
+ * @author Andreas Heil - Initial contribution
+ * @author Marcel Verpaalen - OH2 update
*/
public class RoomInformation {
private int position;
/**
* MAX! Shutter contact device.
*
- * @author Andreas Heil (info@aheil.de) - Initial contribution
+ * @author Andreas Heil - Initial contribution
* @author Marcel Verpaalen - OH2 update
*/
public class ShutterContact extends Device {
/**
* This enumeration represents the different mode types of a MAX! heating thermostat.
*
- * @author Andreas Heil (info@aheil.de) - Initial contribution
+ * @author Andreas Heil - Initial contribution
* @author Marcel Verpaalen - OH2 update
*/
public enum ThermostatModeType implements PrimitiveType, State, Command {
/**
* Unsupported devices.
*
- * @author Andreas Heil (info@aheil.de) - Initial contribution
+ * @author Andreas Heil - Initial contribution
* @author Marcel Verpaalen - OH2 update
*/
/**
* MAX! wall mounted thermostat.
*
- * @author Andreas Heil (info@aheil.de) - Initial contribution
+ * @author Andreas Heil - Initial contribution
*/
public class WallMountedThermostat extends HeatingThermostat {
* Will be thrown when there is an attempt to put a new message line into the message processor,
* but the processor is currently processing another message type.
*
- * @author Christian Rockrohr <christian@rockrohr.de> - Initial contribution
+ * @author Christian Rockrohr - Initial contribution
*/
public class IncompleteMessageException extends Exception {
* Will be thrown when there is an attempt to put a new message line into the message processor,
* but the processor is currently processing another message type.
*
- * @author Christian Rockrohr <christian@rockrohr.de> - Initial contribution
+ * @author Christian Rockrohr - Initial contribution
*/
public class IncorrectMultilineIndexException extends Exception {
* but the processor is not yet ready to handle new lines because there is already a message that
* has be pulled before.
*
- * @author Christian Rockrohr <christian@rockrohr.de> - Initial contribution
+ * @author Christian Rockrohr - Initial contribution
*/
public class MessageIsWaitingException extends Exception {
* Will be thrown when there is an attempt to pull a message from the message processor,
* but the processor does not yet have a complete message.
*
- * @author Christian Rockrohr <christian@rockrohr.de> - Initial contribution
+ * @author Christian Rockrohr - Initial contribution
*/
public class NoMessageAvailableException extends Exception {
* Will be thrown when there is an attempt to put a new message line into the message processor,
* the processor detects a known message indicator, but the message could not be parsed correctly.
*
- * @author Christian Rockrohr <christian@rockrohr.de> - Initial contribution
+ * @author Christian Rockrohr - Initial contribution
*/
public class UnprocessableMessageException extends Exception {
* Will be thrown when there is an attempt to put a new message line into the message processor,
* but the line starts with an unknown message indicator.
*
- * @author Christian Rockrohr <christian@rockrohr.de> - Initial contribution
+ * @author Christian Rockrohr - Initial contribution
*/
public class UnsupportedMessageTypeException extends Exception {
* to the framework. All {@link MaxDevicesHandler}s use the
* {@link MaxCubeBridgeHandler} to execute the actual commands.
*
- * @author Andreas Heil (info@aheil.de) - Initial contribution
+ * @author Andreas Heil - Initial contribution
* @author Marcel Verpaalen - Initial contribution OH2 version
* @author Bernd Michael Helm (bernd.helm at helmundwalter.de) - Exclusive mode
*/
/**
* The {@link CMessage} contains configuration about a MAX! device.
*
- * @author Andreas Heil (info@aheil.de) - Initial contribution
+ * @author Andreas Heil - Initial contribution
* @author Marcel Verpaalen - Detailed parsing, OH2 Update
*/
@NonNullByDefault
/**
* The H message contains information about the MAX! Cube.
*
- * @author Andreas Heil (info@aheil.de) - Initial contribution
+ * @author Andreas Heil - Initial contribution
* @author Marcel Verpaalen - Details parsing, OH2 version
*/
@NonNullByDefault
/**
* The L message contains real time information about all MAX! devices.
*
- * @author Andreas Heil (info@aheil.de) - Initial contribution
+ * @author Andreas Heil - Initial contribution
* @author Marcel Verpaalen - OH2 update
*
*/
/**
* The M message contains metadata about the MAX! Cube setup.
*
- * @author Andreas Heil (info@aheil.de) - Initial Contribution
+ * @author Andreas Heil - Initial contribution
* @author Marcel Verpaalen - Room details parse
*/
@NonNullByDefault
* The tokens returned consist of the payload solely, and do not contain the first byte holding the
* tokens length.
*
- * @author Andreas Heil (info@aheil.de) - Initial contribution
+ * @author Andreas Heil - Initial contribution
*/
@NonNullByDefault
public final class MaxTokenizer implements Enumeration<byte[]> {
/**
* Base message for the messages received from the MAX! Cube.
*
- * @author Andreas Heil (info@aheil.de) - Initial contribution
+ * @author Andreas Heil - Initial contribution
*/
@NonNullByDefault
public abstract class Message {
* possible to add additional lines when there is a message ready to be
* processed.
*
- * @author Christian Rockrohr <christian@rockrohr.de> - Initial contribution
+ * @author Christian Rockrohr - Initial contribution
*/
@NonNullByDefault
public class MessageProcessor {
/**
* This enumeration represents the different message types provided by the MAX! Cube protocol.
*
- * @author Andreas Heil (info@aheil.de) - Initial contribution
+ * @author Andreas Heil - Initial contribution
*/
@NonNullByDefault
public enum MessageType {
/**
* Tests cases for {@link CMessage}.
*
- * @author Andreas Heil (info@aheil.de) - Initial contribution
+ * @author Andreas Heil - Initial contribution
* @author Marcel Verpaalen - OH2 Version and updates
*/
@NonNullByDefault
/**
* Tests cases for {@link DeviceConfiguration}.
*
- * @author Andreas Heil (info@aheil.de) - Initial contribution
+ * @author Andreas Heil - Initial contribution
* @author Marcel Verpaalen - OH2 Version and updates
*/
@NonNullByDefault
import org.openhab.binding.max.internal.exceptions.UnsupportedMessageTypeException;
/**
- * @author Christian Rockrohr <christian@rockrohr.de> - Initial contribution
+ * @author Christian Rockrohr - Initial contribution
*/
@NonNullByDefault
public class MessageProcessorTest {
/**
* Tests cases for {@link Utils}.
*
- * @author Andreas Heil (info@aheil.de) - Initial contribution
+ * @author Andreas Heil - Initial contribution
* @author Marcel Verpaalen - OH2 Version and updates
*/
@NonNullByDefault
}
/**
- * Should be used by C&S binding's things to obtain the bridge's access token
+ * Should be used by C&S binding's things to obtain the bridge's access token
*
* @return returns the access token as String
*/
* used across the whole binding.
*
* @author Karel Goderis - Initial contribution
- * @author Martin Lepsy - added constants for support of WiFi devices & protocol
+ * @author Martin Lepsy - added constants for support of WiFi devices and protocol
* @author Jacob Laursen - Fixed multicast and protocol support (ZigBee/LAN)
*/
@NonNullByDefault
*
* @author Karel Goderis - Initial contribution
* @author Kai Kreuzer - Fixed lifecycle issues
- * @author Martin Lepsy - Added protocol information to support WiFi devices & some refactoring for HomeDevice
+ * @author Martin Lepsy - Added protocol information to support WiFi devices and some refactoring for HomeDevice
* @author Jacob Laursen - Fixed multicast and protocol support (Zigbee/LAN)
**/
@NonNullByDefault
import org.slf4j.LoggerFactory;
/**
- * Encrypts communication between openhab & xiaomi bridge (required by xiaomi).
+ * Encrypts communication between openhab and xiaomi bridge (required by xiaomi).
*
* @author Ondřej Pečta - Initial contribution to Xiaomi MiHome Binding for OH 1.x
* @author Dieter Schmidt - Refactor logger
* @author Patrick Boos - Initial contribution
* @author Kuba Wolanin - Renamed labels
* @author Dieter Schmidt - Refactor
- * @author Daniel Walters - Add Xiaomi Aqara Temperature, Humidity & Pressure sensor and Xiaomi Aqara Door/Window sensor
+ * @author Daniel Walters - Add Xiaomi Aqara Temperature, Humidity & Pressure sensor and Xiaomi Aqara Door/Window
+ * sensor
*/
public class ModelMapper {
/**
* @author Patrick Boos - Initial contribution
- * @author Dieter Schmidt - Refactor & sound
+ * @author Dieter Schmidt - Refactor and sound
*/
public class XiaomiActorGatewayHandler extends XiaomiActorBaseHandler {
import com.google.gson.JsonObject;
/**
- * Handles the Xiaomi temperature & humidity sensor
+ * Handles the Xiaomi temperature & humidity sensor
*
* @author Patrick Boos - Initial contribution
* @author Daniel Walters - Add pressure support
* The session ID, password and sequence number is automatically inserted from this object.
*
* Produces data like:
+ *
+ * <pre>
+ * {@code
* SN: Sequence number
* S1: SessionID1
* S2: SessionID2
* CK: Checksum
*
* #zone 1 on
- * @ 80 00 00 00 11 84 00 00 0c 00 31 00 00 08 04 01 00 00 00 01 00 3f
+ * @ 80 00 00 00 11 84 00 00 0c 00 31 00 00 08 04 01 00 00 00 01 00 3f
*
* Colors:
* CC: Color value (hue)
* 80 00 00 00 11 S1 S2 SN SN 00 31 P1 P2 WB 01 CC CC CC CC ZN 00 CK
*
* 80 00 00 00 11 D4 00 00 12 00 31 00 00 08 01 FF FF FF FF 01 00 38
+ * }
+ * </pre>
*
* @return
*/
EP_POSSIBLE, EP_SWITCH };
/**
- * For decoding see Modbus Register Mapping Chapter 3.1.2 page 14 & 15
+ * For decoding see Modbus Register Mapping Chapter 3.1.2 page 14 & 15
*
* @param bArray - Modbus Registers as bytes from 40084 to 40085
*/
* Copy data atomically and return the new (shallow) copy
*
* @return new copy of the data
- * @throws CloneNotSupportedException
*/
@SuppressWarnings("unchecked")
public synchronized AtomicStampedValue<V> copy() {
* </p>
*
* <pre>
+ * {@code
* void attributeChanged(..., boolean allMandatoryFieldsReceived) {
* if (allMandatoryFieldsReceived && !attributes.isComplete()) {
* // The attribute class is now complete but wasn't before...
* }
* }
+ * }
* </pre>
*/
public boolean isComplete() {
* used across the whole binding.
*
* @author Bernd Weymann - Initial contribution
- * @author Norbert Truchsess - edit & send of charge profile
+ * @author Norbert Truchsess - edit and send of charge profile
*/
@NonNullByDefault
public class MyBMWConstants {
* The {@link ChargeProfile} Data Transfer Object
*
* @author Bernd Weymann - Initial contribution
- * @author Norbert Truchsess - edit & send of charge profile
+ * @author Norbert Truchsess - edit and send of charge profile
*/
public class ChargeProfile {
public static final Timer INVALID_TIMER = new Timer();
* The {@link Time} Data Transfer Object
*
* @author Bernd Weymann - Initial contribution
- * @author Norbert Truchsess - edit & send of charge profile
+ * @author Norbert Truchsess - edit and send of charge profile
*/
public class Time {
public int hour;// ": 11,
* The {@link Timer} Data Transfer Object
*
* @author Bernd Weymann - Initial contribution
- * @author Norbert Truchsess - edit & send of charge profile
+ * @author Norbert Truchsess - edit and send of charge profile
*/
public class Timer {
public int id = -1;// ": 1,
/**
* The {@link MyBMWProxy} This class holds the important constants for the BMW Connected Drive Authorization.
- * They
- * are taken from the Bimmercode from github {@link https://github.com/bimmerconnected/bimmer_connected}
+ * They are taken from the Bimmercode from github <a href="https://github.com/bimmerconnected/bimmer_connected">
+ * https://github.com/bimmerconnected/bimmer_connected</a>.
* File defining these constants
- * {@link https://github.com/bimmerconnected/bimmer_connected/blob/master/bimmer_connected/account.py}
- * https://customer.bmwgroup.com/one/app/oauth.js
+ * <a href="https://github.com/bimmerconnected/bimmer_connected/blob/master/bimmer_connected/account.py">
+ * https://github.com/bimmerconnected/bimmer_connected/blob/master/bimmer_connected/account.py</a>
+ * <a href="https://customer.bmwgroup.com/one/app/oauth.js">https://customer.bmwgroup.com/one/app/oauth.js</a>
*
* @author Bernd Weymann - Initial contribution
- * @author Norbert Truchsess - edit & send of charge profile
+ * @author Norbert Truchsess - edit and send of charge profile
*/
@NonNullByDefault
public class MyBMWProxy {
/**
* The {@link RemoteServiceHandler} handles executions of remote services towards your Vehicle
*
- * @see https://github.com/bimmerconnected/bimmer_connected/blob/master/bimmer_connected/remote_services.py
+ * @see <a href="https://github.com/bimmerconnected/bimmer_connected/blob/master/bimmer_connected/remote_services.py">
+ * https://github.com/bimmerconnected/bimmer_connected/blob/master/bimmer_connected/remote_services.py</a>
*
* @author Bernd Weymann - Initial contribution
- * @author Norbert Truchsess - edit & send of charge profile
+ * @author Norbert Truchsess - edit and send of charge profile
*/
@NonNullByDefault
public class RemoteServiceHandler implements StringResponseCallback {
* The {@link VehicleChannelHandler} handles Channel updates
*
* @author Bernd Weymann - Initial contribution
- * @author Norbert Truchsess - edit & send of charge profile
+ * @author Norbert Truchsess - edit and send of charge profile
*/
@NonNullByDefault
public abstract class VehicleChannelHandler extends BaseThingHandler {
* The {@link VehicleHandler} handles responses from BMW API
*
* @author Bernd Weymann - Initial contribution
- * @author Norbert Truchsess - edit & send charge profile
+ * @author Norbert Truchsess - edit and send charge profile
*/
@NonNullByDefault
public class VehicleHandler extends VehicleChannelHandler {
/**
* The {@link BimmerConstants} This class holds the important constants for the BMW Connected Drive Authorization. They
- * are taken from the Bimmercode from github {@link https://github.com/bimmerconnected/bimmer_connected}
+ * are taken from the Bimmercode from github <a href="https://github.com/bimmerconnected/bimmer_connected">
+ * https://github.com/bimmerconnected/bimmer_connected</a>.
* File defining these constants
- * {@link https://github.com/bimmerconnected/bimmer_connected/blob/master/bimmer_connected/account.py}
- * https://customer.bmwgroup.com/one/app/oauth.js
+ * <a href="https://github.com/bimmerconnected/bimmer_connected/blob/master/bimmer_connected/account.py">
+ * https://github.com/bimmerconnected/bimmer_connected/blob/master/bimmer_connected/account.py</a>
+ * <a href="https://customer.bmwgroup.com/one/app/oauth.js">https://customer.bmwgroup.com/one/app/oauth.js</a>
*
* @author Bernd Weymann - Initial contribution
*/
*
* @author Wouter Born - Initial contribution
*
- * @see https://cloud.google.com/pubsub/docs/reference/rest
- * @see https://developers.google.com/nest/device-access/api/events
+ * @see <a href="https://cloud.google.com/pubsub/docs/reference/rest">
+ * https://cloud.google.com/pubsub/docs/reference/rest</a>
+ * @see <a href="https://developers.google.com/nest/device-access/api/events">
+ * https://developers.google.com/nest/device-access/api/events</a>
*/
@NonNullByDefault
public class PubSubAPI {
*
* @author Wouter Born - Initial contribution
*
- * @see https://developers.google.com/nest/device-access/reference/rest
+ * @see <a href="https://developers.google.com/nest/device-access/reference/rest">
+ * https://developers.google.com/nest/device-access/reference/rest</a>
*/
@NonNullByDefault
public class SDMAPI {
* @author Brian Higginbotham - Initial contribution
* @author Wouter Born - Initial contribution
*
- * @see https://developers.google.com/nest/device-access/reference/rest/v1/enterprises.devices/list
+ * @see <a href="https://developers.google.com/nest/device-access/reference/rest/v1/enterprises.devices/list">
+ * https://developers.google.com/nest/device-access/reference/rest/v1/enterprises.devices/list</a>
*/
@NonNullByDefault
public class SDMDiscoveryService extends AbstractDiscoveryService implements ThingHandlerService {
*
* @author Wouter Born - Initial contribution
*
- * @see https://cloud.google.com/pubsub/docs/reference/rest
+ * @see <a href="https://cloud.google.com/pubsub/docs/reference/rest">
+ * https://cloud.google.com/pubsub/docs/reference/rest</a>
*/
public class PubSubRequestsResponses {
*
* @author Wouter Born - Initial contribution
*
- * @see https://developers.google.com/nest/device-access/reference/rest/v1/enterprises.devices/executeCommand
+ * @see <a href="https://developers.google.com/nest/device-access/reference/rest/v1/enterprises.devices/executeCommand">
+ * https://developers.google.com/nest/device-access/reference/rest/v1/enterprises.devices/executeCommand</a>
*/
public class SDMCommands {
*
* @author Wouter Born - Initial contribution
*
- * @see https://developers.google.com/nest/device-access/reference/errors/api
+ * @see <a href="https://developers.google.com/nest/device-access/reference/errors/api">
+ * https://developers.google.com/nest/device-access/reference/errors/api</a>
*/
public class SDMError {
*
* @author Wouter Born - Initial contribution
*
- * @see https://developers.google.com/nest/device-access/api/events
+ * @see <a href="https://developers.google.com/nest/device-access/api/events">
+ * https://developers.google.com/nest/device-access/api/events</a>
*/
public class SDMEvent {
*
* @author Wouter Born - Initial contribution
*
- * @see https://developers.google.com/nest/device-access/reference/rest/v1/enterprises.devices/list
+ * @see <a href="https://developers.google.com/nest/device-access/reference/rest/v1/enterprises.devices/list">
+ * https://developers.google.com/nest/device-access/reference/rest/v1/enterprises.devices/list</a>
*/
@NonNullByDefault
public class SDMListDevicesResponse {
*
* @author Wouter Born - Initial contribution
*
- * @see https://developers.google.com/nest/device-access/reference/rest/v1/enterprises.structures.rooms/list
+ * @see <a href="https://developers.google.com/nest/device-access/reference/rest/v1/enterprises.structures.rooms/list">
+ * https://developers.google.com/nest/device-access/reference/rest/v1/enterprises.structures.rooms/list</a>
*/
@NonNullByDefault
public class SDMListRoomsResponse {
*
* @author Wouter Born - Initial contribution
*
- * @see https://developers.google.com/nest/device-access/reference/rest/v1/enterprises.structures/list
+ * @see <a href="https://developers.google.com/nest/device-access/reference/rest/v1/enterprises.structures/list">
+ * https://developers.google.com/nest/device-access/reference/rest/v1/enterprises.structures/list</a>
*/
@NonNullByDefault
public class SDMListStructuresResponse {
}
/**
- * Return the last seen value in milliseconds based on {@link System.currentTimeMillis()} or 0 if not seen yet.
+ * Return the last seen value in milliseconds based on {@link System#currentTimeMillis()} or 0 if not seen yet.
*/
public long getLastSeen() {
return lastSeenInMS;
*
* @param expiry the duration in milliseconds for how long the value stays valid. Must be greater than 0.
* @param cacheUpdater The cache will use this callback if a new value is needed. Must not be null.
- * @throws IllegalArgumentException For an expire value <=0 or a null cacheUpdater.
+ * @throws IllegalArgumentException For an expire value {@literal <=0} or a null cacheUpdater.
*/
public ExpiringCacheAsync(long expiry, @Nullable ExpiringCacheUpdate cacheUpdater) throws IllegalArgumentException {
if (expiry <= 0) {
}
/**
- * @Nullable wrapper of gson which does not 'understand' nonnull annotations
+ * {@code @Nullable} wrapper of gson which does not 'understand' nonnull annotations
*
* @param json
* @return
* @param overrule the overrule temperature in 0.1°C multiples
* @param overruletime in minutes
* @param ecosave
- * @param demand 0 if no demand, > 0 if heating, < 0 if cooling
+ * @param demand 0 if no demand, > 0 if heating, < 0 if cooling
*/
public void updateState(int measured, int setpoint, int mode, int overrule, int overruletime, int ecosave,
int demand) {
* @param setpoint the setpoint temperature in 0.1°C multiples
* @param mode thermostat mode 0 = day, 1 = night, 2 = eco, 3 = off, 4 = cool, 5 = prog1, 6 = prog2, 7 = prog3
* @param overrule the overrule temperature in 0.1°C multiples
- * @param demand 0 if no demand, > 0 if heating, < 0 if cooling
+ * @param demand 0 if no demand, > 0 if heating, < 0 if cooling
*/
void thermostatEvent(int measured, int setpoint, int mode, int overrule, int demand);
}
/**
- * get Label "<thingtype> (<id>)"
+ * get Label {@code "<thingtype> (<id>)"}
*
* @return the thing label
*/
/**
* Container class for enums related to opengarage
*
- * @author Paul Smedley <paul@smedley.id.au> - Initial contribution
+ * @author Paul Smedley - Initial contribution
*
*/
public class Enums {
/**
* Returns a list of all internal programs as a list of StateOptions.
*
- * @return List<StateOption>
+ * @return {@code List<StateOption>}
*/
List<StateOption> getPrograms();
/**
* Return a list of all the stations the device has as List of StateOptions
*
- * @return List<StateOption>
+ * @return {@code List<StateOption>}
*/
List<StateOption> getStations();
void runProgram(Command command) throws CommunicationApiException, UnauthorizedApiException;
/**
- * Fetch the station names and place them in a list of List<StateOption>.
+ * Fetch the station names and place them in a list of {@code List<StateOption>}.
* Use getStations() to retrieve this list.
*
* @throws CommunicationApiException
/**
* Gets the rain delay in hours from the OpenSprinkler device.
*
- * @return QuantityType<Time>
+ * @return {@code QuantityType<Time>}
*/
QuantityType<Time> getRainDelay();
}
* {@inheritDoc}
*
* Stops the discovery scan. We set {@link #scanning} to false (allowing the listening threads to end naturally
- * within {@link #TIMEOUT) * 5 time then shutdown the {@link #executorService}
+ * within {@link #TIMEOUT_MS} * 5 time then shutdown the {@link #executorService}
*/
@Override
protected synchronized void stopScan() {
* Due to nature of Paradox communication receive queue is with priority, i.e. if there is anything in receive queue we
* attempt to read the socket first and only after receive queue is empty then we attempt to send. We never send any
* packet if we have something to read.
- * For more details about usage see method {@link AbstractCommunicator.submitRequest()}
+ * For more details about usage see method {@link AbstractCommunicator#submitRequest(IRequest)}
*
* @author Konstantin Polihronov - Initial contribution
*/
* Part of the {@link Action} message that is sent to pilight.
* This contains the desired state for a single device.
*
- * {@link http://www.pilight.org/development/api/#sender}
+ * @see <a href="https://manual.pilight.org/development/socket/index.html">
+ * https://manual.pilight.org/development/socket/index.html</a>
*
* @author Jeroen Idserda - Initial contribution
* @author Stefan Röllin - Port to openHAB 2 pilight binding
/**
* pilight configuration object
*
- * {@link http://www.pilight.org/development/api/#controller}
+ * @see <a href="https://manual.pilight.org/development/socket/index.html">
+ * https://manual.pilight.org/development/socket/index.html</a>
*
* @author Jeroen Idserda - Initial contribution
* @author Stefan Röllin - Port to openHAB 2 pilight binding
/**
* pilight version information object
*
- * {@link http://www.pilight.org/development/api/#controller}
+ * @see <a href="https://manual.pilight.org/development/socket/index.html">
+ * https://manual.pilight.org/development/socket/index.html</a>
*
* @author Niklas Dörfler - Initial contribution
*/
*
* A class that wraps the communication to Pioneer AVR devices by using Input/Ouptut streams.
*
- * see {@link http ://www.pioneerelectronics.com/StaticFiles/PUSA/Files/Home%20Custom %20Install/VSX-1120-K-RS232.PDF}
- * for the protocol specs
- *
* Based on the Onkyo binding by Pauli Anttila and others.
*
+ * @see <a href="http://www.pioneerelectronics.com/StaticFiles/PUSA/Files/Home%20Custom%20Install/VSX-1120-K-RS232.PDF">
+ * http://www.pioneerelectronics.com/StaticFiles/PUSA/Files/Home%20Custom%20Install/VSX-1120-K-RS232.PDF</a>
+ * for the protocol specs
* @author Antoine Besnard - Initial contribution
* @author Rainer Ostendorf - Initial contribution
* @author Leroy Foerster - Listening Mode, Playing Listening Mode
* PlayStation store
*
* @param titleId Title ID of application.
- * @param size Size (width & height) of art work in pixels , max 1024.
+ * @param size Size (width and height) of art work in pixels , max 1024.
* @param locale Locale used on PlayStation store to find art work.
* @return A JPEG image as a RawType if an art work file is found otherwise null.
*/
* PlayStation store
*
* @param titleId Title ID of application.
- * @param size Size (width & height) of art work in pixels , max 1024.
+ * @param size Size (width and height) of art work in pixels , max 1024.
* @param locale Locale used on PlayStation store to find art work.
* @param forceRefetch When true, tries to re-fetch art work from PlayStation store, sometimes the art work is
* updated along with the game.
*
* Visonic does not provide a specification of the RS232 protocol and, thus,
* the binding uses the available protocol specification given at the domoticaforum
- * http://www.domoticaforum.eu/viewtopic.php?f=68&t=6581
+ * <a href="http://www.domoticaforum.eu/viewtopic.php?f=68&t=6581">
+ * http://www.domoticaforum.eu/viewtopic.php?f=68&t=6581</a>
*
* @author Laurent Garnier - Initial contribution
*/
* Constructor for TCP connection
*
* @param ip the IP address
- * @param port TCP port number; default port is used if value <= 0
+ * @param port TCP port number; default port is used if value {@code <= 0}
* @param panelType the panel type to be used when in standard mode
* @param forceStandardMode true to force the standard mode rather than trying using the Powerlink mode
* @param autoSyncTime true for automatic sync time
import org.openhab.core.config.core.ParameterOption;
/**
- * The {@link Icons} is the Java class used to map the JSON response to a Pushsafer API request..
+ * The {@link Icon}s is the Java class used to map the JSON response to a Pushsafer API request.
*
* @author Kevin Siml - Initial contribution, forked from Christoph Weitkamp
*/
import org.eclipse.jdt.annotation.NonNullByDefault;
/**
- * Match content of field value from {@link RemoteopenhabChannelDescriptionChangedEvent) event payload when event is for
+ * Match content of field value from {@link RemoteopenhabChannelDescriptionChangedEvent} event payload when event is for
* COMMAND_OPTIONS
*
* @author Laurent Garnier - Initial contribution
import org.eclipse.jdt.annotation.NonNullByDefault;
/**
- * Match content of field value from {@link RemoteopenhabChannelDescriptionChangedEvent) event payload when event is for
+ * Match content of field value from {@link RemoteopenhabChannelDescriptionChangedEvent} event payload when event is for
* STATE_OPTIONS
*
* @author Laurent Garnier - Initial contribution
*
* a Lighting4 Base command is composed of 24 bit DATA plus PULSE information
*
+ * <p>
+ * {@code
* DATA:
* Code = 014554
* S1- S24 = <0000 0001 0100 0101 0101> <0100>
*
* PULSE:
* default 350
- *
+ * }
+ *
* Tested on a PT2262 remote PlugIn module
*
+ * <p>
* Example:
*
+ * <pre>
+ * {@code
* Switch TESTout "TestOut" (All) {rfxcom=">83205.350:LIGHTING4.PT2262:Command"}
* (SendCommand DeviceID(int).Pulse(int):LIGHTING4.Subtype:Command )
*
* Switch TESTin "TestIn" (All) {rfxcom="<83205:Command"}
* (ReceiveCommand ON/OFF Command )
+ * }
+ * </pre>
*
* @author Alessandro Ballini (ITA) - Initial contribution
* @author Pauli Anttila - Migrated to OH2
*
* @author Sander Biesenbeek - Initial contribution
* @author Ruud Beukema - Initial contribution (parallel development)
- * @author Martin van Wingerden - Joined contribution of Sander & Ruud
+ * @author Martin van Wingerden - Joined contribution of Sander and Ruud
*/
public class RFXComThermostat3Message extends RFXComDeviceMessageImpl<RFXComThermostat3Message.SubType> {
public enum SubType implements ByteEnumWrapper {
/**
* The {@link RobonectClient} class is responsible to communicate with the robonect module via it's HTTP interface.
*
- * The API of the module is documented here: http://robonect.de/viewtopic.php?f=10&t=37
+ * @see <a href="http://robonect.de/viewtopic.php?f=10&t=37">
+ * http://robonect.de/viewtopic.php?f=10&t=37</a>. The API of the module is documented here.
*
* @author Marco Meyer - Initial contribution
*/
}
/**
- * @return - the error code. Some codes are documented here: http://www.robonect.de/viewtopic.php?f=11&t=110
+ * @return - the error code. Some codes are documented here:
+ * <a href="http://www.robonect.de/viewtopic.php?f=11&t=110">
+ * http://www.robonect.de/viewtopic.php?f=11&t=110</a>
*/
public Integer getErrorCode() {
return errorCode;
/**
* Queries the mowers status. The status holds a lot of status information.
* See {@link MowerStatus}
- * or the documentation at: http://www.robonect.de/viewtopic.php?f=11&t=38
+ * or the documentation at <a href="http://www.robonect.de/viewtopic.php?f=11&t=38">
+ * http://www.robonect.de/viewtopic.php?f=11&t=38</a>
*
* @author Marco Meyer - Initial contribution
*/
* source type is not a tuner (however the {@link #lastUpdateTime} will be reset).
*
* @param sourceId a source identifier between 1 and 8
- * @throws IllegalArgumentException if sourceId is < 1 or > 8
+ * @throws IllegalArgumentException if sourceId is {@code < 1} or {@code > 8}
*/
public void refreshPresets(Integer sourceId) {
if (sourceId < 1 || sourceId > 8) {
* @param zone a zone between 1 and 8
* @param source a source between 1 and 8
* @param presetJson the possibly empty, possibly null JSON representation of the preset
- * @throws IllegalArgumentException if controller is < 1 or > 6
- * @throws IllegalArgumentException if zone is < 1 or > 8
- * @throws IllegalArgumentException if source is < 1 or > 8
+ * @throws IllegalArgumentException if controller is {@literal <} 1 or > 6
+ * @throws IllegalArgumentException if zone is {@literal <} 1 or > 8
+ * @throws IllegalArgumentException if source is {@literal <} 1 or > 8
* @throws IllegalArgumentException if presetJson contains more than one preset
*/
public void setZonePresets(int controller, int zone, int source, @Nullable String presetJson) {
* @param controller the controller number between 1 and 6
* @param zone the zone number between 1 and 8
* @param favJson the possibly empty, possibly null JSON representation of system favorites
- * @throws IllegalArgumentException if controller is < 1 or > 6
- * @throws IllegalArgumentException if zone is < 1 or > 8
+ * @throws IllegalArgumentException if controller is {@literal <} 1 or > 6
+ * @throws IllegalArgumentException if zone is {@literal < 1} or > 8
*/
public void setSystemFavorites(int controller, int zone, @Nullable String favJson) {
if (controller < 1 || controller > 6) {
* Create the object from the given ID (using the default name of "Bank" + id)
*
* @param id a bank identifier between 1 and 6
- * @throws IllegalArgumentException if id is < 1 or > 6
+ * @throws IllegalArgumentException if id is {@literal <} 1 or > 6
*/
public RioBank(int id) {
this(id, null);
*
* @param id a bank identifier between 1 and 6
* @param name a possibly null, possibly empty bank name (null or empty will result in a bank name of "Bank "+ id)
- * @throws IllegalArgumentException if id is < 1 or > 6
+ * @throws IllegalArgumentException if id is {@literal < 1} or > 6
*/
public RioBank(int id, @Nullable String name) {
if (id < 1 || id > 6) {
* "Favorite " + id
*
* @param id a favorite ID between 1 and 32
- * @throws IllegalArgumentException if id < 1 or > 32
+ * @throws IllegalArgumentException if id {@literal < 1} or > 32
*/
public RioFavorite(int id) {
this(id, false, null);
* @param id a favorite ID between 1 and 32
* @param isValid true if the favorite is valid, false otherwise
* @param name a possibly null, possibly empty favorite name
- * @throws IllegalArgumentException if id < 1 or > 32
+ * @throws IllegalArgumentException if id {@literal < 1} or > 32
*/
public RioFavorite(int id, boolean isValid, @Nullable String name) {
if (id < 1 || id > 32) {
* "Preset " + id
*
* @param id a preset ID between 1 and 36
- * @throws IllegalArgumentException if id < 1 or > 36
+ * @throws IllegalArgumentException if id {@literal < 1} or > 36
*/
public RioPreset(int id) {
this(id, false, "Preset " + id);
* @param id a preset ID between 1 and 36
* @param valid true if the preset is valid, false otherwise
* @param name a possibly null, possibly empty preset name
- * @throws IllegalArgumentException if id < 1 or > 32
+ * @throws IllegalArgumentException if id {@literal < 1} or > 32
*/
public RioPreset(int id, boolean valid, @Nullable String name) {
if (id < 1 || id > 36) {
/**
* Initializes the bridge. Confirms the configuration is valid and that our parent bridge is a
- * {@link RioSystemHandler}. Once validated, a {@link RioSystemProtocol} is set via
+ * {@link RioSystemHandler}. Once validated, a
+ * {@link org.openhab.binding.russound.internal.rio.system.RioSystemProtocol} is set via
* {@link #setProtocolHandler(RioSystemProtocol)} and the bridge comes online.
*/
@Override
/**
* Send single WOL (Wake On Lan) package on all interfaces
*
- * @macAddress MAC address to send WOL package to
+ * @param macAddress MAC address to send WOL package to
*/
public static void sendWOLPacket(String macAddress) {
byte[] bytes = getWOLPackage(macAddress);
import com.google.gson.annotations.SerializedName;
/**
- * POJO containing (a small subset of) the data received from the portal when issuing a {@link StationRequest)
+ * POJO containing (a small subset of) the data received from the portal when issuing a {@link StatusRequest}
*
* @author Iwan Bron - Initial contribution
*/
import org.openhab.core.library.unit.SIUnits;
/**
- * The {@link SensiboTemperatureUnitConverter} converts to/from Sensibo temperature symbols to Unit<Temperature>
+ * The {@link SensiboTemperatureUnitConverter} converts to/from Sensibo temperature symbols to {@code Unit<Temperature>}
*
* @author Arne Seime - Initial contribution
*/
*
* Handles the combined updated of the brightness channel:
* brightness$Switch is the OnOffType (power state)
- * brightness&Value is the brightness value
+ * brightness&Value is the brightness value
*
* @param profile Device profile, required to select the channel group and name
- * @param updates List of updates. updatePower will add brightness$Switch and brightness&Value if changed
+ * @param updates List of updates. updatePower will add brightness$Switch and brightness&Value if changed
* @param id Sensor id from the update
* @param sen Sensor description from the update
* @param s New sensor value
/***
* The{@link ShellyComponents} implements updates for supplemental components
- * Meter will be used by Relay + Light; Sensor is part of H&T, Flood, Door Window, Sense
+ * Meter will be used by Relay + Light; Sensor is part of H&T, Flood, Door Window, Sense
*
* @author Markus Michels - Initial contribution
*/
import org.eclipse.jdt.annotation.NonNullByDefault;
/**
- * {@link ShellyDeviceListener} can register on the
- * {@link org.openhab.binding.tradfri.internal.handler.TradfriGatewayHandler} to be informed about details about
+ * {@link ShellyDeviceListener} can register on the {@link ShellyBaseHandler} to be informed about details about
* devices.
*
* @author Markus Michels - Initial contribution
/**
* Auto-create relay channels depending on relay type/mode
*
- * @return ArrayList<Channel> of channels to be added to the thing
+ * @return {@code ArrayList<Channel>} of channels to be added to the thing
*/
public static Map<String, Channel> createDeviceChannels(final Thing thing, final ShellyDeviceProfile profile,
final ShellySettingsStatus status) {
/**
* Auto-create relay channels depending on relay type/mode
*
- * @return ArrayList<Channel> of channels to be added to the thing
+ * @return {@code ArrayList<Channel>} of channels to be added to the thing
*/
public static Map<String, Channel> createRelayChannels(final Thing thing, final ShellyDeviceProfile profile,
final ShellySettingsRelay rstatus, int idx) {
/**
* Constructor of the discovery service.
*
- * @throws IllegalArgumentException if the timeout < 0
+ * @throws IllegalArgumentException if the timeout {@literal < 0}
*/
public SilvercrestWifiSocketDiscoveryService() throws IllegalArgumentException {
super(SilvercrestWifiSocketBindingConstants.SUPPORTED_THING_TYPES_UIDS,
/**
* Represents an OBIS code.
*
- * @see For more information see https://de.wikipedia.org/wiki/OBIS-Kennzahlen
+ * @see <a href="https://de.wikipedia.org/wiki/OBIS-Kennzahlen">https://de.wikipedia.org/wiki/OBIS-Kennzahlen</a> for
+ * more information
* @author Matthias Steigenberger - Initial contribution
*
*/
* Gets whether negation should be applied for the given <code>negateProperty</code> and the {@link MeterValue}
* provided by the <code>getObisValueFunction</code>
*
- * @param negateProperty The negate property (in form <OBIS>:<POSITION>:<BIT_SET>)
+ * @param negateProperty The negate property (in form {@code <OBIS>:<POSITION>:<BIT_SET>})
* @param getObisValueFunction The function to get the {@link MeterValue} from an OBIS code.
* @return whether to negate or not.
*/
}
/**
- * converts the value to QuantityType<Power> and puts it into the targetMap. If no value or unit is provided
- * UnDefType.UNDEF will be used
+ * converts the value to {@code QuantityType<Power>} and puts it into the targetMap. If no value or unit is
+ * provided, UnDefType.UNDEF will be used
*
* @param targetMap result will be put into this map
* @param channel channel to assign the value
}
/**
- * converts the value to QuantityType<Energy> and puts it into the targetMap. If no value or unit is provided
- * UnDefType.UNDEF will be used
+ * converts the value to {@code QuantityType<Energy>} and puts it into the targetMap. If no value or unit is
+ * provided UnDefType.UNDEF will be used
*
* @param targetMap result will be put into this map
* @param channel channel to assign the value
}
/**
- * converts the value to QuantityType<Energy> and puts it into the targetMap. If no value or unit is provided
- * UnDefType.UNDEF will be used
+ * converts the value to {@code QuantityType<Energy>} and puts it into the targetMap. If no value or unit is
+ * provided, UnDefType.UNDEF will be used
*
* @param targetMap result will be put into this map
* @param channel channel to assign the value
}
/**
- * converts the meter value to QuantityType<Energy> and puts it into the targetMap. If multiple meter value are
- * provided a sum will be calculated. If no
+ * converts the meter value to {@code QuantityType<Energy>} and puts it into the targetMap. If multiple meter value
+ * are provided a sum will be calculated. If no
* unit can be determined UnDefType.UNDEF will be used
*
* @param targetMap result will be put into this map
}
/**
- * Setup the handler and trigger initial load via {@link EnergyManagerHandler::refreshDevices}.
+ * Setup the handler and trigger initial load via {@link EnergyManagerHandler#refreshDevices}.
*
* Web request against energy manager and loading of devices is deferred and will send the ONLINE
* event after loading all devices.
/**
* The {@link SomfyTahomaRollerShutterHandler} is responsible for handling commands,
- * which are sent to one of the channels of the roller shutter, screen & garage door
+ * which are sent to one of the channels of the roller shutter, screen and garage door
* things.
*
* @author Ondrej Pecta - Initial contribution
/**
* Contains the resource meta data within a browse response result
- * "<r:resMD>..</r:resMD>". This is used for SONOS favorites.
+ * {@code "<r:resMD>..</r:resMD>"}. This is used for SONOS favorites.
*
* @author Dan Cunningham - Initial contribution
*
/**
* Removes a range of tracks from the queue.
- * (<x,y> will remove y songs started by the song number x)
+ * ({@code <x,y>} will remove y songs started by the song number x)
*
- * @param command - must be in the format <startIndex, numberOfSongs>
+ * @param command - must be in the format {@code <startIndex, numberOfSongs>}
*/
public void removeRangeOfTracksFromQueue(Command command) {
if (command instanceof StringType) {
/**
* Simple method to escape XML special characters in String.
- * There are five XML Special characters which needs to be escaped :
+ * There are five XML Special characters which needs to be escaped:
+ *
+ * <pre>
+ * {@code
* & - &
* < - <
* > - >
* " - "
* ' - '
+ * }
+ * </pre>
*/
public static String escapeXml(String xml) {
xml = xml.replace("&", "&");
/**
* Simple method to un escape XML special characters in String.
* There are five XML Special characters which needs to be escaped :
+ *
+ * <pre>
+ * {@code
* & - &
* < - <
* > - >
* " - "
* ' - '
+ * }
+ * </pre>
*/
public static String unEscapeXml(String xml) {
xml = xml.replace("&", "&");
/**
* Store the channel configurations for a thing, to be able to restore them later when the thing handler for the
* same thing gets recreated with a new thing type. This is necessary because the
- * {@link BaseThingHandler##changeThingType()} method reverts channel configurations to their defaults.
+ * {@link org.openhab.core.thing.binding.BaseThingHandler#changeThingType()} method reverts channel configurations
+ * to their defaults.
*
* @param thing
*/
*
* @param pid - the PID of the process
* @return memory size
- * @throws DeviceNotFoundException- thrown if process with this PID can not be found
+ * @throws DeviceNotFoundException thrown if process with this PID can not be found
*/
@Nullable
QuantityType<DataAmount> getProcessMemoryUsage(int pid) throws DeviceNotFoundException;
/**
* send multiple "set_device_info" commands to device
*
- * @param map HashMap<String, Object> (name, value of parameter)
+ * @param map {@code HashMap<String, Object> (name, value of parameter)}
*/
public void sendDeviceCommands(HashMap<String, Object> map) {
sendDeviceCommands(DEVICE_CMD_SETINFO, map);
* send multiple commands to device
*
* @param method Method command belongs to
- * @param map HashMap<String, Object> (name, value of parameter)
+ * @param map {@code HashMap<String, Object> (name, value of parameter)}
*/
public void sendDeviceCommands(String method, HashMap<String, Object> map) {
long now = System.currentTimeMillis();
/**
* Stop scheduler
*
- * @param scheduler ScheduledFeature<?> which schould be stopped
+ * @param scheduler {@code ScheduledFeature<?>} which schould be stopped
*/
protected void stopScheduler(@Nullable ScheduledFuture<?> scheduler) {
if (scheduler != null) {
/**
* Stop scheduler
*
- * @param scheduler ScheduledFeature<?> which schould be stopped
+ * @param scheduler {@code ScheduledFeature<?>} which schould be stopped
*/
protected void stopScheduler(@Nullable ScheduledFuture<?> scheduler) {
if (scheduler != null) {
* Return QuantityType with Time
*
* @param numVal Number with value
- * @param unit TimeUnit (Unit<Time>)
- * @return QuantityType<Time>
+ * @param unit TimeUnit ({@code Unit<Time>})
+ * @return {@code QuantityType<Time>}
*/
public static QuantityType<Time> getTimeType(@Nullable Number numVal, Unit<Time> unit) {
return new QuantityType<>((numVal != null ? numVal : 0), unit);
* Return QuantityType with Power
*
* @param numVal Number with value
- * @param unit PowerUnit (Unit<Power>)
- * @return QuantityType<Power>
+ * @param unit PowerUnit ({@code Unit<Power>})
+ * @return {@code QuantityType<Power>}
*/
public static QuantityType<Power> getPowerType(@Nullable Number numVal, Unit<Power> unit) {
return new QuantityType<>((numVal != null ? numVal : 0), unit);
* Return QuantityType with Energy
*
* @param numVal Number with value
- * @param unit PowerUnit (Unit<Power>)
- * @return QuantityType<Energy>
+ * @param unit PowerUnit ({@code Unit<Power>})
+ * @return {@code QuantityType<Energy>}
*/
public static QuantityType<Energy> getEnergyType(@Nullable Number numVal, Unit<Energy> unit) {
return new QuantityType<>((numVal != null ? numVal : 0), unit);
import com.google.gson.annotations.SerializedName;
/**
- * {@TapoSubRequest} holds data sent to device in order to act on a child
+ * {@link TapoSubRequest} holds data sent to device in order to act on a child
*
* @author Gaël L'hopital - Initial contribution
*/
/**
* Compute the checksum of the given group line.
*
- * @param groupLine group line ("etiquette" <SPACE> "valeur"). Note: the SPACE before the checksum of the group line
+ * @param groupLine group line {@literal ("etiquette" <SPACE> "valeur")}.
+ * Note: the SPACE before the checksum of the group line
* must not include in checksum computation.
* @return the checksum of the given group line.
*/
/**
* This method is called whenever the state of the given device has changed.
- * The new state can be obtained by {@link TellstickNetDevice#getState()} /
- * {@link TellstickLocalDeviceDTO#getState()}.
+ * The new state can be obtained by
+ * {@link org.openhab.binding.tellstick.internal.live.xml.TellstickNetDevice#getState()} /
+ * {@link org.openhab.binding.tellstick.internal.local.dto.TellstickLocalDeviceDTO#getState()}.
*
* @param bridge
* The Tellstick bridge the changed device is connected to.
import org.eclipse.jdt.annotation.Nullable;
/**
- * The Class {@link TivoConfigData} stores the dynamic configuration parameters used within the {@link TiVoHandler} and
+ * The Class {@link TivoConfigData} stores the dynamic configuration parameters used within the
+ * {@link org.openhab.binding.tivo.internal.handler.TiVoHandler} and
* {@link TivoStatusProvider}.
*
* @author Jayson Kubilis (DigitalBytes) - Initial contribution
}
/**
- * {@link #isCmdOK()} indicates if the last command executed correctly.
+ * {@link #isCmdOk()} indicates if the last command executed correctly.
*
* @return cmdOk boolean true = executed correctly, false = last command failed with error message
*/
* Instantiates a new TivoConfigStatusProvider.
*
* @param tivoConfigData {@link TivoConfigData} configuration data for the specific thing.
- * @param tivoHandler {@link TivoHandler} parent handler object for the TivoConfigStatusProvider.
+ * @param tivoHandler {@link TiVoHandler} parent handler object for the TivoConfigStatusProvider.
*
*/
* BufferedReader.
*
* @param inputStream socket input stream.
- * @throws IOException
*/
public StreamReader(InputStream inputStream) {
this.setName("OH-binding-" + thingUid + "-" + tivoConfigData.getHost() + ":" + tivoConfigData.getTcpPort());
import org.eclipse.jdt.annotation.NonNullByDefault;
/**
- * Configuration class for {@link TouchWandBridgeHandler}.
+ * Configuration class for {@link org.openhab.binding.touchwand.internal.TouchWandBridgeHandler}.
*
* @author Roie Geron - Initial contribution
*/
/**
* The {@link TradfriColor} is used for conversion between color formats.
- * Use the static constructors {@link #TradfriColor(int, int, int)} and {@link #TradfriColor(HSBType)} for
- * construction.
+ * Use the static constructors {@link #TradfriColor(Integer, Integer, Integer)} and
+ * {@link #TradfriColor(HSBType)} for construction.
*
* @author Holger Reichert - Initial contribution
* @author Stefan Triller - Use conversions from HSBType
*
* @param xyX x value 0 to 65535
* @param xyY y value 0 to 65535
- * @param xyBrightness brightness from 0 to 254
+ * @param brightness brightness from 0 to 254
*/
public TradfriColor(Integer xyX, Integer xyY, @Nullable Integer brightness) {
this.xyX = xyX;
/**
* Simple method to escape XML special characters in String.
* There are five XML Special characters which needs to be escaped :
+ *
+ * <pre>
+ * {@code
* & - &
* < - <
* > - >
* " - "
* ' - '
+ * }
+ * </pre>
*/
public static String escapeXml(String xml) {
xml = xml.replace("&", "&");
/**
* Simple method to un escape XML special characters in String.
* There are five XML Special characters which needs to be escaped :
+ *
+ * <pre>
+ * {@code
* & - &
* < - <
* > - >
* " - "
* ' - '
+ * }
+ * </pre>
*/
public static String unEscapeXml(String xml) {
xml = xml.replace("&", "&");
* Test if an UPnP protocol matches the object class. This method is used to filter resources for the primary
* resource.
*
- * @param protocol format: <protocol>:<network>:<contentFormat>:<additionalInfo>
+ * @param protocol format: {@code <protocol>:<network>:<contentFormat>:<additionalInfo>}
* e.g. http-get:*:audio/mpeg:*
* @param objectClass e.g. object.item.audioItem.musicTrack
* @return true if protocol matches objectClass
* Ignore vendor specific additionalInfo part in UPnP protocol string.
* Do all comparisons in lower case.
*
- * @param protocol format: <protocol>:<network>:<contentFormat>:<additionalInfo>
+ * @param protocol format: {@code <protocol>:<network>:<contentFormat>:<additionalInfo>}
* @param protocolSet
* @return true if protocol in protocolSet
*/
*
* @param actions ThingActions from the caller
* @param nodeId the node Id in the bridge
- * @param relativePercent the target position relative to its current position (-100% <= relativePercent <= +100%)
+ * @param relativePercent the target position relative to its current position
+ * ({@code -100% <= relativePercent <= +100%})
* @return true if the command was sent
* @throws IllegalArgumentException if actions is invalid
* @throws IllegalStateException if anything else is wrong
* Exported method (called by an OpenHAB Rules Action) to move an actuator relative to its current position
*
* @param nodeId the node to be moved
- * @param relativePercent relative position change to the current position (-100% <= relativePercent <= +100%)
+ * @param relativePercent relative position change to the current position
+ * ({@code -100% <= relativePercent <= +100%})
* @return true if the command could be issued
*/
public boolean moveRelative(int nodeId, int relativePercent) {
* Contains data about the logged in user - including the accountID and token's used
* for authenticating other payload's.
*
- * @see unit test - Result may not be in respone if not authenticated
+ * @implNote See unit test - Result may not be in respone if not authenticated
*
* @author David Goodyear - Initial contribution
*/
import org.eclipse.jdt.annotation.NonNullByDefault;
/**
- * @see https://github.com/volumio/Volumio2-UI/blob/master/src/app/services/player.service.js
- * @see https://github.com/volumio/Volumio2/blob/master/app/plugins/user_interface/websocket/index.js
+ * @see <a href="https://github.com/volumio/Volumio2-UI/blob/master/src/app/services/player.service.js">
+ * https://github.com/volumio/Volumio2-UI/blob/master/src/app/services/player.service.js</a>
+ * @see <a href="https://github.com/volumio/Volumio2/blob/master/app/plugins/user_interface/websocket/index.js">
+ * https://github.com/volumio/Volumio2/blob/master/app/plugins/user_interface/websocket/index.js</a>
*
* @author Patrick Sernetz - Initial Contribution
* @author Chris Wohlbrecht - Adaption for openHAB 3
import org.slf4j.LoggerFactory;
/**
- * The {@VehicleAction } class is responsible to call corresponding
+ * The {@link VolvoOnCallActions} class is responsible to call corresponding
* action on Vehicle Handler
*
* @author Gaël L'hopital - Initial contribution
import org.openhab.core.library.CoreItemFactory;
/**
- * The {@link TypeMapping} class defines the mapping of Item types <-> WebThing Property types.
+ * The {@link TypeMapping} class defines the mapping of Item types {@literal <->} WebThing Property types.
*
- * Please consider that changes of 'Item types <-> WebThing Property types' mapping will break the
+ * Please consider that changes of 'Item types {@literal <->} WebThing Property types' mapping will break the
* compatibility to former releases
*
* @author Gregor Roth - Initial contribution
import org.openhab.binding.wemo.internal.http.WemoHttpCall;
/**
- * {@link WemoHttpCallFactory} creates {@WemoHttpCall}s.
+ * {@link WemoHttpCallFactory} creates {@link WemoHttpCall}s.
*
* @author Wouter Born - Initial contribution
*/
/**
* Test app for discovering devices.
*
- * @author Stefan Endrullis <stefan@endrullis.de>
+ * @author Stefan Endrullis - Initial contribution
*/
public class WiFiLEDDiscoveryServiceTestApp {
* Helps with authenticating users to Amazon Cognito to get a JWT access token which can be used for retrieving
* information using the REST APIs.
*
- * @see https://en.wikipedia.org/wiki/Secure_Remote_Password_protocol
- * @see https://stackoverflow.com/questions/67528443/cognito-srp-using-aws-java-sdk-v2-x
- * @see https://github.com/aws-samples/aws-cognito-java-desktop-app/blob/master/src/main/java/com/amazonaws/sample/cognitoui/AuthenticationHelper.java
+ * @see <a href="https://en.wikipedia.org/wiki/Secure_Remote_Password_protocol">
+ * https://en.wikipedia.org/wiki/Secure_Remote_Password_protocol</a>
+ * @see <a href="https://stackoverflow.com/questions/67528443/cognito-srp-using-aws-java-sdk-v2-x">
+ * https://stackoverflow.com/questions/67528443/cognito-srp-using-aws-java-sdk-v2-x</a>
+ * @see <a href=
+ * "https://github.com/aws-samples/aws-cognito-java-desktop-app/blob/master/src/main/java/com/amazonaws/sample/cognitoui/AuthenticationHelper.java">
+ * https://github.com/aws-samples/aws-cognito-java-desktop-app/blob/master/src/main/java/com/amazonaws/sample/cognitoui/AuthenticationHelper.java</a>
*
* @author Wouter Born - Initial contribution
*/
/**
* Provides the details required for getting tokens using SRP from the Windcentrale Cognito user pool.
*
- * @see https://mijn.windcentrale.nl/api/v0/labels/key?domain=mijn.windcentrale.nl
+ * @see <a href="https://mijn.windcentrale.nl/api/v0/labels/key?domain=mijn.windcentrale.nl">
+ * https://mijn.windcentrale.nl/api/v0/labels/key?domain=mijn.windcentrale.nl</a>
*
* @author Wouter Born - Initial contribution
*/
/**
* Navigate back
*
- * @throws ReceivedMessageParseException, IOException
+ * @throws ReceivedMessageParseException
+ * @throws IOException
*/
void goBack() throws ReceivedMessageParseException, IOException;
/**
* Navigate up
*
- * @throws ReceivedMessageParseException, IOException
+ * @throws ReceivedMessageParseException
+ * @throws IOException
*/
void goUp() throws IOException, ReceivedMessageParseException;
/**
* Navigate down
*
- * @throws ReceivedMessageParseException, IOException
+ * @throws ReceivedMessageParseException
+ * @throws IOException
*/
void goDown() throws IOException, ReceivedMessageParseException;
/**
* Navigate left. Not for all zones or functions available.
*
- * @throws ReceivedMessageParseException, IOException
+ * @throws ReceivedMessageParseException
+ * @throws IOException
*/
void goLeft() throws IOException, ReceivedMessageParseException;
/**
* Navigate right. Not for all zones or functions available.
*
- * @throws ReceivedMessageParseException, IOException
+ * @throws ReceivedMessageParseException
+ * @throws IOException
*/
void goRight() throws IOException, ReceivedMessageParseException;
/**
* Select current item. Not for all zones or functions available.
*
- * @throws ReceivedMessageParseException, IOException
+ * @throws ReceivedMessageParseException
+ * @throws IOException
*/
void selectCurrentItem() throws IOException, ReceivedMessageParseException;
/**
* Navigate to root menu
*
- * @throws ReceivedMessageParseException, IOException
+ * @throws ReceivedMessageParseException
+ * @throws IOException
*/
boolean goToRoot() throws IOException, ReceivedMessageParseException;
/**
* Wraps the XML message with the inputID tags. Example with inputID=NET_RADIO:
- * <NET_RADIO>message</NET_RADIO>.
+ * {@code
+ * <NET_RADIO>message</NET_RADIO>
+ * }.
*
* @param message XML message
* @return
* We need that called only once. Will give us name, id, version and zone information.
*
* Example:
+ *
+ * <pre>
+ * {@code
* <Feature_Existence>
* <Main_Zone>1</Main_Zone>
* <Zone_2>1</Zone_2>
* <iPod_USB>1</iPod_USB>
* <AirPlay>1</AirPlay>
* </Feature_Existence>
+ * }
+ * </pre>
*
* @throws IOException
*/
* other inputs are using the same way of navigating through menus. A menu on Yamaha AVRs
* is hierarchically organised. Entries are divided into pages with 8 elements per page.
*
- * The XML nodes <List_Control> and <List_Info> are used.
+ * The XML nodes {@code <List_Control>} and {@code <List_Info>} are used.
*
* In contrast to other protocol classes an object of this type will store state information,
* because it caches the received XML information of the updateNavigationState(). This may change
* This class implements the Yamaha Receiver protocol related to navigation functionally. USB, NET_RADIO, IPOD and
* other inputs are using the same way of playback control.
* <p>
- * The XML nodes <Play_Info> and <Play_Control> are used.
+ * The XML nodes {@code <Play_Info>} and {@code <Play_Control>} are used.
* <p>
* Example:
* <p>
* This class implements the Yamaha Receiver protocol related to navigation functionally. USB, NET_RADIO, IPOD and
* other inputs are using the same way of playback control.
*
- * The XML nodes <Play_Info> and <Play_Control> are used.
+ * The XML nodes {@code <Play_Info>} and {@code <Play_Control>} are used.
*
* Example:
*
*
* Note that yamaha maintains separate presets for each band.
*
- * The XML nodes <DAB><Play_Control><Band>FM</Band></Play_Control></DAB> are used.
+ * The XML nodes {@code <DAB><Play_Control><Band>FM</Band></Play_Control></DAB>} are used.
*
* No state will be saved in here, but in {@link DabBandState}, {@link PresetInfoState} and {@link PlayInfoState}
* instead.
/**
* Post the given xml message
*
- * @param message XML formatted message excluding < ?xml > or <YAMAHA_AV> tags.
+ * @param message XML formatted message excluding {@code <?xml>} or {@code <YAMAHA_AV>} tags.
* @throws IOException
*/
@Override
/**
* Post the given xml message and return the response as string.
*
- * @param message XML formatted message excluding <?xml> or <YAMAHA_AV> tags.
+ * @param message XML formatted message excluding {@code <?xml>} or {@code <YAMAHA_AV>} tags.
* @return Return the response as text or throws an exception if the connection failed.
* @throws IOException
*/
/**
* Wraps the XML message with the zone tags. Example with zone=Main_Zone:
- * <Main_Zone>message</Main_Zone>.
+ * {@code
+ * <Main_Zone>message</Main_Zone>
+ * }.
*
* @param message XML message
* @return
import java.util.TreeMap;
/**
- * List of AVR input channel names with <Input ID, Input Name>
+ * List of AVR input channel names with {@code <Input ID, Input Name>}
*
* @author David Graeff - Initial contribution
*/
/**
* Gives an accessory an opportunity to populate additional characteristics after all optional
* charactericteristics have been added.
+ *
+ * @throws HomekitException
*/
public void init() throws HomekitException {
}
* of the caller to add characteristics when the primary service is created.
*
* @param characteristic
+ * @throws NoSuchMethodException
+ * @throws IllegalAccessException
+ * @throws InvocationTargetException
*/
@NonNullByDefault
public void addCharacteristic(Characteristic characteristic)
* Validates a hue http address used in schedules and hue rules.
*
* @param ds A hue datastore to verify that referred lights/groups do exist
- * @param address Relative hue API address. Example: "/api/<username>/groups/1/action" or
- * "/api/<username>/lights/1/state"
+ * @param address Relative hue API address. Example: {@code "/api/<username>/groups/1/action"} or
+ * {@code "/api/<username>/lights/1/state"}
* @throws IllegalStateException Thrown if address is invalid
*/
@SuppressWarnings({ "unused", "null" })
/**
* Universal logging filter.
- * <p/>
+ * <p>
* Can be used on client or server side. Has the highest priority.
*
* @author Pavel Bucek (pavel.bucek at oracle.com)
}
/**
- * Constructs the timings from the specified delays. If the delay is < {@link #MIN_DELAY}, it is set to
+ * Constructs the timings from the specified delays. If the delay is {@literal <} {@link #MIN_DELAY}, it is set to
* {@link #MIN_DELAY}. If the delay is > {@link #MAX_DELAY}, the delay will be set to {@link #MAX_DELAY}. If any
* delay is null, {@link #DEFAULT_DELAY} will be used instead
*
/**
* This is the implementation of the InfluxDB {@link PersistenceService}. It
- * persists item values using the <a href="http://influxdb.org">InfluxDB time
- * series database. The states ( {@link State}) of an {@link Item} are persisted
+ * persists item values using the <a href="http://influxdb.org">InfluxDB</a> time
+ * series database. The states ({@link State}) of an {@link Item} are persisted
* by default in a time series with names equal to the name of the item.
*
* This addon supports 1.X and 2.X versions, as two versions are incompatible
/**
* Return all stored item names with its count of stored points
*
- * @return Map with <ItemName,ItemCount> entries
+ * @return Map with {@code <ItemName,ItemCount>} entries
*/
Map<String, Integer> getStoredItemsCount();
/**
* <b>JDBC-URI Examples:</b><br/>
+ *
+ * <pre>
+ * {@code
* jdbc:dbShortcut:c:/dev/databaseName<br/>
* jdbc:dbShortcut:scheme:c:/dev/databaseName<br/>
* jdbc:dbShortcut:scheme:c:\\dev\\databaseName<br/>
* jdbc:dbShortcut:./../../path/databaseName<br/>
* jdbc:dbShortcut:scheme:./path/../path/databaseName;param1=true;<br/>
* jdbc:dbShortcut://192.168.0.145:3306/databaseName?param1=false¶m2=true
- * <p/>
+ * }
+ * </pre>
+ * <p>
*
* @param url JDBC-URI
* @param def Predefined Properties Object
*
* {@code <Label> <Locale> # <Sentence>}
*
- * where <Label> is the voice name (which may contain spaces), <Locale>
- * is the locale ISO 639 alpha-2 + "_" + ISO 3166 alpha-2 and <Sentence>
- * is an example sentence in <Locale>.
+ * where {@code <Label>} is the voice name (which may contain spaces), {@code <Locale>}
+ * is the locale ISO 639 alpha-2 + "_" + ISO 3166 alpha-2 and {@code <Sentence>}
+ * is an example sentence in {@code <Locale>}.
*
* @param line Line from a 'say -v ?' call.
*/
/**
* Tests for the Astro Channels state
*
- * @see {@link AstroParametrizedTestCases}
+ * @see AstroParametrizedTestCases
* @author Petar Valchev - Initial contribution
* @author Svilen Valkanov - Reworked to plain unit tests
* @author Erdoan Hadzhiyusein - Adapted the class to work with the new DateTimeType
*
* @param thing the thing
* @param clazz type of thing handler
+ * @param <T> a ThingHandler or subtype
* @return the thing handler
*/
protected <T extends ThingHandler> T getThingHandler(Thing thing, Class<T> clazz) {
* @throws SecurityException if the operation is not allowed.
* @throws IllegalAccessException if the method is enforcing Java language access control and is inaccessible.
* @throws IllegalArgumentException if one of the passed parameters is invalid.
- * @throws InvocationTargetException if the invoked method throws an exception.
*/
public static <T> T invokePrivate(Object object, String methodName, Object... parameters)
throws NoSuchMethodException, SecurityException, IllegalAccessException, IllegalArgumentException {
* @throws SecurityException if the operation is not allowed.
* @throws IllegalAccessException if the method is enforcing Java language access control and is inaccessible.
* @throws IllegalArgumentException if one of the passed parameters is invalid.
- * @throws InvocationTargetException if the invoked method throws an exception.
*/
@SuppressWarnings("unchecked")
public static <T> T invokePrivate(Object object, String methodName, Class<?>[] parameterTypes, Object... parameters)
<version>3.2.0</version>
<configuration>
<failOnError>!${quality.skip}</failOnError>
+ <tags>
+ <tag>
+ <name>apiNote</name>
+ <placement>a</placement>
+ <head>API note:</head>
+ </tag>
+ <tag>
+ <name>implNote</name>
+ <placement>a</placement>
+ <head>Implementation note:</head>
+ </tag>
+ </tags>
</configuration>
<dependencies>
<!-- This newer version fixes issues with resolving tech.units:indriya packages -->