001// Copyright (c) FIRST and other WPILib contributors.
002// Open Source Software; you can modify and/or share it under the terms of
003// the WPILib BSD license file in the root directory of this project.
004
005// THIS FILE WAS AUTO-GENERATED BY ./ntcore/generate_topics.py. DO NOT MODIFY
006
007package edu.wpi.first.networktables;
008
009import java.util.function.DoubleSupplier;
010
011/** NetworkTables Double subscriber. */
012@SuppressWarnings("PMD.MissingOverride")
013public interface DoubleSubscriber extends Subscriber, DoubleSupplier {
014  /**
015   * Get the corresponding topic.
016   *
017   * @return Topic
018   */
019  @Override
020  DoubleTopic getTopic();
021
022  /**
023   * Get the last published value.
024   * If no value has been published, returns the stored default value.
025   *
026   * @return value
027   */
028  double get();
029
030  /**
031   * Get the last published value.
032   * If no value has been published, returns the passed defaultValue.
033   *
034   * @param defaultValue default value to return if no value has been published
035   * @return value
036   */
037  double get(double defaultValue);
038
039  @Override
040  default double getAsDouble() {
041    return get();
042  }
043
044  /**
045   * Get the last published value along with its timestamp
046   * If no value has been published, returns the stored default value and a
047   * timestamp of 0.
048   *
049   * @return timestamped value
050   */
051  TimestampedDouble getAtomic();
052
053  /**
054   * Get the last published value along with its timestamp
055   * If no value has been published, returns the passed defaultValue and a
056   * timestamp of 0.
057   *
058   * @param defaultValue default value to return if no value has been published
059   * @return timestamped value
060   */
061  TimestampedDouble getAtomic(double defaultValue);
062
063  /**
064   * Get an array of all value changes since the last call to readQueue.
065   * Also provides a timestamp for each value.
066   *
067   * <p>The "poll storage" subscribe option can be used to set the queue
068   * depth.
069   *
070   * @return Array of timestamped values; empty array if no new changes have
071   *     been published since the previous call.
072   */
073  TimestampedDouble[] readQueue();
074
075  /**
076   * Get an array of all value changes since the last call to readQueue.
077   *
078   * <p>The "poll storage" subscribe option can be used to set the queue
079   * depth.
080   *
081   * @return Array of values; empty array if no new changes have been
082   *     published since the previous call.
083   */
084  double[] readQueueValues();
085}