package org.wfc.omada.api.sitesetting.model;

import com.fasterxml.jackson.annotation.JsonProperty;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;

import javax.validation.Valid;
import java.math.BigDecimal;
import java.util.Objects;

/**
 * SSID 802.11 Rate Control config.
 */
@ApiModel(description = "SSID 802.11 Rate Control config.")
@javax.annotation.Generated(value = "org.openapitools.codegen.languages.SpringCodegen", date = "2024-12-04T11:32:19.054+08:00[Asia/Shanghai]")

public class SsidRateControlOpenApiVo   {
  @JsonProperty("rate2gCtrlEnable")
  private Boolean rate2gCtrlEnable;

  @JsonProperty("lowerDensity2g")
  private BigDecimal lowerDensity2g;

  @JsonProperty("higherDensity2g")
  private Integer higherDensity2g;

  @JsonProperty("cckRatesDisable")
  private Boolean cckRatesDisable;

  @JsonProperty("clientRatesRequire2g")
  private Boolean clientRatesRequire2g;

  @JsonProperty("sendBeacons2g")
  private Boolean sendBeacons2g;

  @JsonProperty("rate5gCtrlEnable")
  private Boolean rate5gCtrlEnable;

  @JsonProperty("lowerDensity5g")
  private Integer lowerDensity5g;

  @JsonProperty("higherDensity5g")
  private Integer higherDensity5g;

  @JsonProperty("clientRatesRequire5g")
  private Boolean clientRatesRequire5g;

  @JsonProperty("sendBeacons5g")
  private Boolean sendBeacons5g;

  @JsonProperty("rate6gCtrlEnable")
  private Boolean rate6gCtrlEnable;

  @JsonProperty("lowerDensity6g")
  private Integer lowerDensity6g;

  @JsonProperty("higherDensity6g")
  private Integer higherDensity6g;

  @JsonProperty("clientRatesRequire6g")
  private Boolean clientRatesRequire6g;

  @JsonProperty("sendBeacons6g")
  private Boolean sendBeacons6g;

  public SsidRateControlOpenApiVo rate2gCtrlEnable(Boolean rate2gCtrlEnable) {
    this.rate2gCtrlEnable = rate2gCtrlEnable;
    return this;
  }

  /**
   * Whether to enable 2.4GHz Data Rate Control
   * @return rate2gCtrlEnable
  */
  @ApiModelProperty(value = "Whether to enable 2.4GHz Data Rate Control")


  public Boolean getRate2gCtrlEnable() {
    return rate2gCtrlEnable;
  }

  public void setRate2gCtrlEnable(Boolean rate2gCtrlEnable) {
    this.rate2gCtrlEnable = rate2gCtrlEnable;
  }

  public SsidRateControlOpenApiVo lowerDensity2g(BigDecimal lowerDensity2g) {
    this.lowerDensity2g = lowerDensity2g;
    return this;
  }

  /**
   * 2.4GHz Data Rate Control lower density value(Unit: Mbps); It should be a value as follows: [1, 2, 5.5, 6, 9, 11, 12, 18, 24, 36, 48, 54].
   * @return lowerDensity2g
  */
  @ApiModelProperty(value = "2.4GHz Data Rate Control lower density value(Unit: Mbps); It should be a value as follows: [1, 2, 5.5, 6, 9, 11, 12, 18, 24, 36, 48, 54].")

  @Valid

  public BigDecimal getLowerDensity2g() {
    return lowerDensity2g;
  }

  public void setLowerDensity2g(BigDecimal lowerDensity2g) {
    this.lowerDensity2g = lowerDensity2g;
  }

  public SsidRateControlOpenApiVo higherDensity2g(Integer higherDensity2g) {
    this.higherDensity2g = higherDensity2g;
    return this;
  }

  /**
   * 2.4GHz Data Rate Control higher density value(Unit: Mbps); It should be a value as follows: [54].
   * @return higherDensity2g
  */
  @ApiModelProperty(value = "2.4GHz Data Rate Control higher density value(Unit: Mbps); It should be a value as follows: [54].")


  public Integer getHigherDensity2g() {
    return higherDensity2g;
  }

  public void setHigherDensity2g(Integer higherDensity2g) {
    this.higherDensity2g = higherDensity2g;
  }

  public SsidRateControlOpenApiVo cckRatesDisable(Boolean cckRatesDisable) {
    this.cckRatesDisable = cckRatesDisable;
    return this;
  }

  /**
   * Whether to disable 2G CCK Rates. If this field is true, Parameter [lowerDensity2g] can not enter the following values: [1, 2, 5.5, 11].
   * @return cckRatesDisable
  */
  @ApiModelProperty(value = "Whether to disable 2G CCK Rates. If this field is true, Parameter [lowerDensity2g] can not enter the following values: [1, 2, 5.5, 11].")


  public Boolean getCckRatesDisable() {
    return cckRatesDisable;
  }

  public void setCckRatesDisable(Boolean cckRatesDisable) {
    this.cckRatesDisable = cckRatesDisable;
  }

  public SsidRateControlOpenApiVo clientRatesRequire2g(Boolean clientRatesRequire2g) {
    this.clientRatesRequire2g = clientRatesRequire2g;
    return this;
  }

  /**
   * Whether to require clients to use rates at or above the specified value of 2.4GHz Data Rate Control.
   * @return clientRatesRequire2g
  */
  @ApiModelProperty(value = "Whether to require clients to use rates at or above the specified value of 2.4GHz Data Rate Control.")


  public Boolean getClientRatesRequire2g() {
    return clientRatesRequire2g;
  }

  public void setClientRatesRequire2g(Boolean clientRatesRequire2g) {
    this.clientRatesRequire2g = clientRatesRequire2g;
  }

  public SsidRateControlOpenApiVo sendBeacons2g(Boolean sendBeacons2g) {
    this.sendBeacons2g = sendBeacons2g;
    return this;
  }

  /**
   * Whether to enable send beacons at 1Mbps of 2.4GHz Data Rate Control.
   * @return sendBeacons2g
  */
  @ApiModelProperty(value = "Whether to enable send beacons at 1Mbps of 2.4GHz Data Rate Control.")


  public Boolean getSendBeacons2g() {
    return sendBeacons2g;
  }

  public void setSendBeacons2g(Boolean sendBeacons2g) {
    this.sendBeacons2g = sendBeacons2g;
  }

  public SsidRateControlOpenApiVo rate5gCtrlEnable(Boolean rate5gCtrlEnable) {
    this.rate5gCtrlEnable = rate5gCtrlEnable;
    return this;
  }

  /**
   * Whether to enable 5GHz Data Rate Control.
   * @return rate5gCtrlEnable
  */
  @ApiModelProperty(value = "Whether to enable 5GHz Data Rate Control.")


  public Boolean getRate5gCtrlEnable() {
    return rate5gCtrlEnable;
  }

  public void setRate5gCtrlEnable(Boolean rate5gCtrlEnable) {
    this.rate5gCtrlEnable = rate5gCtrlEnable;
  }

  public SsidRateControlOpenApiVo lowerDensity5g(Integer lowerDensity5g) {
    this.lowerDensity5g = lowerDensity5g;
    return this;
  }

  /**
   * 5GHz Data Rate Control lower density value(Unit: Mbps); It should be a value as follows: [6, 9, 12, 18, 24, 36, 48, 54].
   * @return lowerDensity5g
  */
  @ApiModelProperty(value = "5GHz Data Rate Control lower density value(Unit: Mbps); It should be a value as follows: [6, 9, 12, 18, 24, 36, 48, 54].")


  public Integer getLowerDensity5g() {
    return lowerDensity5g;
  }

  public void setLowerDensity5g(Integer lowerDensity5g) {
    this.lowerDensity5g = lowerDensity5g;
  }

  public SsidRateControlOpenApiVo higherDensity5g(Integer higherDensity5g) {
    this.higherDensity5g = higherDensity5g;
    return this;
  }

  /**
   * 5GHz Data Rate Control higher density value(Unit: Mbps); It should be a value as follows: [54].
   * @return higherDensity5g
  */
  @ApiModelProperty(value = "5GHz Data Rate Control higher density value(Unit: Mbps); It should be a value as follows: [54].")


  public Integer getHigherDensity5g() {
    return higherDensity5g;
  }

  public void setHigherDensity5g(Integer higherDensity5g) {
    this.higherDensity5g = higherDensity5g;
  }

  public SsidRateControlOpenApiVo clientRatesRequire5g(Boolean clientRatesRequire5g) {
    this.clientRatesRequire5g = clientRatesRequire5g;
    return this;
  }

  /**
   * Whether to require clients to use rates at or above the specified value of 5GHz Data Rate Control.
   * @return clientRatesRequire5g
  */
  @ApiModelProperty(value = "Whether to require clients to use rates at or above the specified value of 5GHz Data Rate Control.")


  public Boolean getClientRatesRequire5g() {
    return clientRatesRequire5g;
  }

  public void setClientRatesRequire5g(Boolean clientRatesRequire5g) {
    this.clientRatesRequire5g = clientRatesRequire5g;
  }

  public SsidRateControlOpenApiVo sendBeacons5g(Boolean sendBeacons5g) {
    this.sendBeacons5g = sendBeacons5g;
    return this;
  }

  /**
   * Whether to enable send beacons at 6Mbps of 5GHz Data Rate Control.
   * @return sendBeacons5g
  */
  @ApiModelProperty(value = "Whether to enable send beacons at 6Mbps of 5GHz Data Rate Control.")


  public Boolean getSendBeacons5g() {
    return sendBeacons5g;
  }

  public void setSendBeacons5g(Boolean sendBeacons5g) {
    this.sendBeacons5g = sendBeacons5g;
  }

  public SsidRateControlOpenApiVo rate6gCtrlEnable(Boolean rate6gCtrlEnable) {
    this.rate6gCtrlEnable = rate6gCtrlEnable;
    return this;
  }

  /**
   * Whether to enable 6GHz Data Rate Control.
   * @return rate6gCtrlEnable
  */
  @ApiModelProperty(value = "Whether to enable 6GHz Data Rate Control.")


  public Boolean getRate6gCtrlEnable() {
    return rate6gCtrlEnable;
  }

  public void setRate6gCtrlEnable(Boolean rate6gCtrlEnable) {
    this.rate6gCtrlEnable = rate6gCtrlEnable;
  }

  public SsidRateControlOpenApiVo lowerDensity6g(Integer lowerDensity6g) {
    this.lowerDensity6g = lowerDensity6g;
    return this;
  }

  /**
   * 6GHz Data Rate Control lower density value(Unit: Mbps); It should be a value as follows: [6, 9, 12, 18, 24, 36, 48, 54].
   * @return lowerDensity6g
  */
  @ApiModelProperty(value = "6GHz Data Rate Control lower density value(Unit: Mbps); It should be a value as follows: [6, 9, 12, 18, 24, 36, 48, 54].")


  public Integer getLowerDensity6g() {
    return lowerDensity6g;
  }

  public void setLowerDensity6g(Integer lowerDensity6g) {
    this.lowerDensity6g = lowerDensity6g;
  }

  public SsidRateControlOpenApiVo higherDensity6g(Integer higherDensity6g) {
    this.higherDensity6g = higherDensity6g;
    return this;
  }

  /**
   * 6GHz Data Rate Control higher density value(Unit: Mbps); It should be a value as follows: [54].
   * @return higherDensity6g
  */
  @ApiModelProperty(value = "6GHz Data Rate Control higher density value(Unit: Mbps); It should be a value as follows: [54].")


  public Integer getHigherDensity6g() {
    return higherDensity6g;
  }

  public void setHigherDensity6g(Integer higherDensity6g) {
    this.higherDensity6g = higherDensity6g;
  }

  public SsidRateControlOpenApiVo clientRatesRequire6g(Boolean clientRatesRequire6g) {
    this.clientRatesRequire6g = clientRatesRequire6g;
    return this;
  }

  /**
   * Whether to require clients to use rates at or above the specified value of 6GHz Data Rate Control.
   * @return clientRatesRequire6g
  */
  @ApiModelProperty(value = "Whether to require clients to use rates at or above the specified value of 6GHz Data Rate Control.")


  public Boolean getClientRatesRequire6g() {
    return clientRatesRequire6g;
  }

  public void setClientRatesRequire6g(Boolean clientRatesRequire6g) {
    this.clientRatesRequire6g = clientRatesRequire6g;
  }

  public SsidRateControlOpenApiVo sendBeacons6g(Boolean sendBeacons6g) {
    this.sendBeacons6g = sendBeacons6g;
    return this;
  }

  /**
   * Whether to enable send beacons at 6Mbps of 6GHz Data Rate Control.
   * @return sendBeacons6g
  */
  @ApiModelProperty(value = "Whether to enable send beacons at 6Mbps of 6GHz Data Rate Control.")


  public Boolean getSendBeacons6g() {
    return sendBeacons6g;
  }

  public void setSendBeacons6g(Boolean sendBeacons6g) {
    this.sendBeacons6g = sendBeacons6g;
  }


  @Override
  public boolean equals(Object o) {
    if (this == o) {
      return true;
    }
    if (o == null || getClass() != o.getClass()) {
      return false;
    }
    SsidRateControlOpenApiVo ssidRateControlOpenApiVo = (SsidRateControlOpenApiVo) o;
    return Objects.equals(this.rate2gCtrlEnable, ssidRateControlOpenApiVo.rate2gCtrlEnable) &&
        Objects.equals(this.lowerDensity2g, ssidRateControlOpenApiVo.lowerDensity2g) &&
        Objects.equals(this.higherDensity2g, ssidRateControlOpenApiVo.higherDensity2g) &&
        Objects.equals(this.cckRatesDisable, ssidRateControlOpenApiVo.cckRatesDisable) &&
        Objects.equals(this.clientRatesRequire2g, ssidRateControlOpenApiVo.clientRatesRequire2g) &&
        Objects.equals(this.sendBeacons2g, ssidRateControlOpenApiVo.sendBeacons2g) &&
        Objects.equals(this.rate5gCtrlEnable, ssidRateControlOpenApiVo.rate5gCtrlEnable) &&
        Objects.equals(this.lowerDensity5g, ssidRateControlOpenApiVo.lowerDensity5g) &&
        Objects.equals(this.higherDensity5g, ssidRateControlOpenApiVo.higherDensity5g) &&
        Objects.equals(this.clientRatesRequire5g, ssidRateControlOpenApiVo.clientRatesRequire5g) &&
        Objects.equals(this.sendBeacons5g, ssidRateControlOpenApiVo.sendBeacons5g) &&
        Objects.equals(this.rate6gCtrlEnable, ssidRateControlOpenApiVo.rate6gCtrlEnable) &&
        Objects.equals(this.lowerDensity6g, ssidRateControlOpenApiVo.lowerDensity6g) &&
        Objects.equals(this.higherDensity6g, ssidRateControlOpenApiVo.higherDensity6g) &&
        Objects.equals(this.clientRatesRequire6g, ssidRateControlOpenApiVo.clientRatesRequire6g) &&
        Objects.equals(this.sendBeacons6g, ssidRateControlOpenApiVo.sendBeacons6g);
  }

  @Override
  public int hashCode() {
    return Objects.hash(rate2gCtrlEnable, lowerDensity2g, higherDensity2g, cckRatesDisable, clientRatesRequire2g, sendBeacons2g, rate5gCtrlEnable, lowerDensity5g, higherDensity5g, clientRatesRequire5g, sendBeacons5g, rate6gCtrlEnable, lowerDensity6g, higherDensity6g, clientRatesRequire6g, sendBeacons6g);
  }

  @Override
  public String toString() {
    StringBuilder sb = new StringBuilder();
    sb.append("class SsidRateControlOpenApiVo {\n");
    
    sb.append("    rate2gCtrlEnable: ").append(toIndentedString(rate2gCtrlEnable)).append("\n");
    sb.append("    lowerDensity2g: ").append(toIndentedString(lowerDensity2g)).append("\n");
    sb.append("    higherDensity2g: ").append(toIndentedString(higherDensity2g)).append("\n");
    sb.append("    cckRatesDisable: ").append(toIndentedString(cckRatesDisable)).append("\n");
    sb.append("    clientRatesRequire2g: ").append(toIndentedString(clientRatesRequire2g)).append("\n");
    sb.append("    sendBeacons2g: ").append(toIndentedString(sendBeacons2g)).append("\n");
    sb.append("    rate5gCtrlEnable: ").append(toIndentedString(rate5gCtrlEnable)).append("\n");
    sb.append("    lowerDensity5g: ").append(toIndentedString(lowerDensity5g)).append("\n");
    sb.append("    higherDensity5g: ").append(toIndentedString(higherDensity5g)).append("\n");
    sb.append("    clientRatesRequire5g: ").append(toIndentedString(clientRatesRequire5g)).append("\n");
    sb.append("    sendBeacons5g: ").append(toIndentedString(sendBeacons5g)).append("\n");
    sb.append("    rate6gCtrlEnable: ").append(toIndentedString(rate6gCtrlEnable)).append("\n");
    sb.append("    lowerDensity6g: ").append(toIndentedString(lowerDensity6g)).append("\n");
    sb.append("    higherDensity6g: ").append(toIndentedString(higherDensity6g)).append("\n");
    sb.append("    clientRatesRequire6g: ").append(toIndentedString(clientRatesRequire6g)).append("\n");
    sb.append("    sendBeacons6g: ").append(toIndentedString(sendBeacons6g)).append("\n");
    sb.append("}");
    return sb.toString();
  }

  /**
   * Convert the given object to string with each line indented by 4 spaces
   * (except the first line).
   */
  private String toIndentedString(Object o) {
    if (o == null) {
      return "null";
    }
    return o.toString().replace("\n", "\n    ");
  }
}

