edition = "2023";

package milotic_tlbmc;

import "google/protobuf/duration.proto";
import "google/protobuf/timestamp.proto";
import "entity_common_config.proto";
import "hal_common_config.proto";
import "reading_range_config.proto";
import "reading_transform_config.proto";
import "threshold_config.proto";
import "resource.proto";
import "status.proto";

enum SensorUnit {
  UNIT_UNKNOWN = 0;
  UNIT_DEGREE_CELSIUS = 1;
  UNIT_WATT = 2;
  UNIT_AMPERE = 3;
  UNIT_VOLT = 4;
  UNIT_REVOLUTION_PER_MINUTE = 5;
  UNIT_PERCENT = 6;
  UNIT_COUNT = 7;
  UNIT_JOULES = 8;
  UNIT_PASCAL = 9;
  UNIT_GIGABITS_PER_SECOND = 10;
  UNIT_BINARY = 11;
}

message SensorValue {
  oneof sensor_reading {
    double reading = 1;
    uint64 count = 3;
  }
  // Timestamp of when the sensor reading was collected/polled by the software.
  google.protobuf.Timestamp timestamp = 2;
  // Timestamp of the original source value (e.g., hardware timestamp or shared
  // memory update timestamp). For native/direct sensors where collection
  // happens at the source, this is identical to 'timestamp'.
  google.protobuf.Timestamp source_timestamp = 4;
}

message SensorAttributesStatic {
  Attributes attributes = 1;
  SensorUnit unit = 2;
  ReadingRangeConfigs reading_ranges = 3;
  EntityCommonConfig entity_common_config = 4;
  google.protobuf.Duration static_refresh_interval = 5;
  HalCommonConfig hal_common_config = 6;
  ReadingTransformConfig reading_transform = 7;
  RelatedItem related_item = 8;
  bool redfish_hidden = 9;
  bool append_to_sensor_collection = 10;
  string devpath = 11;
}

message SensorAttributesDynamic {
  State state = 1;
  // The refresh interval of the sensor.
  google.protobuf.Duration refresh_interval = 2;
  // Threshold for data points in the buffer reaching which the sensor will
  // trigger a notification.
  int32 data_points_to_notify = 3;
  // The number of data points buffered.
  int32 data_points_buffered = 4;
  // The reading thresholds for the sensor. This property is dynamic to be
  // updated during sensor reinitialization as in the case of IntelCpuSensor.
  // For some sensors, it may be updated dynamically at read time as well.
  ThresholdConfigs thresholds = 5;
  // Operation status of the sensor.
  OperationStatus operation_status = 6;
  // Presence status of the sensor.
  PresenceStatus presence_status = 7;
}

// The metrics for the sensor.
// Ideally, we should see `average_hardware_polling_latency` being very small,
// and `average_software_polling_start_interval` and
// `average_software_polling_end_interval` being closed to the configured
// refresh interval.
message SensorMetrics {
  // The average latency for the hardware polling.
  // One latency is measured as time between sending the request to the HAL and
  // receiving the response.
  // This metrics can indicate whether the device is the bottleneck.
  google.protobuf.Duration average_hardware_polling_latency = 1;
  // The average interval for the software polling start.
  // One interval is measured as time between two consecutive refresh schedule
  // start timepoints.
  // This metrics can indicate whether the software, e.g., the scheduler, is the
  // bottleneck.
  google.protobuf.Duration average_software_polling_start_interval = 2;
  // The average interval for the software polling end.
  // One interval is measured as time between two consecutive hardware response
  // received timepoints.
  // This metrics can supplement the above metrics to
  // indicate how the software and the device are performing together.
  google.protobuf.Duration average_software_polling_end_interval = 3;
}
