# Define the Seat type
"""
The model of a vehicle's Seat.
"""
type Seat {

  """
  Heating or Cooling requested for the Item. -100 = Maximum cooling, 0 = Heating/cooling deactivated, 100 = Maximum heating.
  """
  heatingCooling(unit: DimensionlessRatioUnit = PERCENT): Int8
    @range(min: -100, max: 100)
    @metadata(vssType: "actuator")

  """
  Seat position on vehicle z-axis. Position is relative within available movable range of the seating. 0 = Lowermost position supported.
  """
  height(unit: LengthUnit = MILLIM): UInt16
    @metadata(vssType: "actuator")

  """
  Seat backward switch engaged.
  """
  isBackwardSwitchEngaged: Boolean
    @metadata(
      comment: "Affects the property (SingleSeat.Position)",
      vssType: "actuator")

  """Is the belt engaged."""
  isBelted: Boolean
    @metadata(vssType: "sensor")

  """
  Cooler switch for Seat heater.
  """
  isCoolerSwitchEngaged: Boolean
    @metadata(
      comment: "Affects the property (SingleSeat.Heating)",
      vssType: "actuator")

  """
  Decrease massage level switch engaged.
  """
  isDecreaseMassageLevelSwitchEngaged: Boolean
    @metadata(
      comment: "Affects the property (SingleSeat.MassageLevel)",
      vssType: "actuator")

  """
  Seat down switch engaged.
  """
  isDownSwitchEngaged: Boolean
    @metadata(
      comment: "Affects the property (SingleSeat.Height)",
      vssType: "actuator")

  """
  Seat forward switch engaged.
  """
  isForwardSwitchEngaged: Boolean
    @metadata(
      comment: "Affects the property (SingleSeat.Position)",
      vssType: "actuator")

  """
  Increase massage level switch engaged.
  """
  isIncreaseMassageLevelSwitchEngaged: Boolean
    @metadata(
      comment: "Affects the property (SingleSeat.MassageLevel)",
      vssType: "actuator")

  """Does the seat have a passenger in it."""
  isOccupied: Boolean
    @metadata(vssType: "sensor")

  """
  Tilt backward switch engaged.
  """
  isTiltBackwardSwitchEngaged: Boolean
    @metadata(
      comment: "Affects the property (SingleSeat.Tilt)",
      vssType: "actuator")

  """
  Tilt forward switch engaged.
  """
  isTiltForwardSwitchEngaged: Boolean
    @metadata(
      comment: "Affects the property (SingleSeat.Tilt)",
      vssType: "actuator")

  """
  Seat up switch engaged.
  """
  isUpSwitchEngaged: Boolean
    @metadata(
      comment: "Affects the property (SingleSeat.Height)",
      vssType: "actuator")

  """
  Warmer switch for Seat heater.
  """
  isWarmerSwitchEngaged: Boolean
    @metadata(
      comment: "Affects the property (SingleSeat.Heating)",
      vssType: "actuator")

  """
  Seat massage level. 0 = off. 100 = max massage.
  """
  massage(unit: DimensionlessRatioUnit = PERCENT): UInt8
    @deprecated(reason: "v5.0 - refactored to Seat.MassageLevel")
    @range(max: 100)
    @metadata(vssType: "actuator")

  """
  Seat massage level. 0 = off. 100 = max massage.
  """
  massageLevel(unit: DimensionlessRatioUnit = PERCENT): UInt8
    @range(max: 100)
    @metadata(vssType: "actuator")

  """
  Seat position on vehicle x-axis. Position is relative to the frontmost position supported by the seat. 0 = Frontmost position supported.
  """
  position(unit: LengthUnit = MILLIM): UInt16
    @metadata(vssType: "actuator")

  """
  Seat belt position on vehicle z-axis. Position is relative within available movable range of the seat belt. 0 = Lowermost position supported.
  """
  seatBeltHeight(unit: LengthUnit = MILLIM): UInt16
    @metadata(vssType: "actuator")

  """
  Tilting of seat (seating and backrest) relative to vehicle x-axis. 0 = seat bottom is flat, seat bottom and vehicle x-axis are parallel. Positive degrees = seat tilted backwards, seat x-axis tilted upward, seat z-axis is tilted backward.
  """
  tilt(unit: AngleUnit = DEG): Float
    @metadata(
      comment: "In VSS it is assumed that tilting a seat affects both seating (seat bottom) and backrest, i.e. the angle between seating and backrest will not be affected when changing Tilt.",
      vssType: "actuator")

  airbag: Airbag
  backrest: Backrest
  headrest: Headrest
  seating: Seating
}
