/*
 * ThingPark things management Networks API
 * REST interface for networks management. 
 *
 * The version of the OpenAPI document: 7.3
 * 
 *
 * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
 * https://openapi-generator.tech
 * Do not edit the class manually.
 */

package lora.ns.actility.api.model.basestation;

import java.util.Objects;

import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonPropertyOrder;
import com.fasterxml.jackson.annotation.JsonValue;

/**
 * BsIntCellular
 */
@JsonPropertyOrder({ BsIntCellular.JSON_PROPERTY_STATE, BsIntCellular.JSON_PROPERTY_CONNECTION_TYPE,
    BsIntCellular.JSON_PROPERTY_ICCID, BsIntCellular.JSON_PROPERTY_IMEI, BsIntCellular.JSON_PROPERTY_IMSI,
    BsIntCellular.JSON_PROPERTY_NETWORK_OPERATOR, BsIntCellular.JSON_PROPERTY_RSSI, BsIntCellular.JSON_PROPERTY_RSCP,
    BsIntCellular.JSON_PROPERTY_EC_IO, BsIntCellular.JSON_PROPERTY_RSRP, BsIntCellular.JSON_PROPERTY_RSRQ,
    BsIntCellular.JSON_PROPERTY_SINR })
@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", date = "2024-05-31T16:08:44.630492043+02:00[Europe/Paris]", comments = "Generator version: 7.6.0")
public class BsIntCellular {
  public static final String JSON_PROPERTY_STATE = "state";
  private Integer state;

  /**
   * Cellular connection type
   */
  public enum ConnectionTypeEnum {
    _3G("3G"),

    _4G("4G");

    private String value;

    ConnectionTypeEnum(String value) {
      this.value = value;
    }

    @JsonValue
    public String getValue() {
      return value;
    }

    @Override
    public String toString() {
      return String.valueOf(value);
    }

    @JsonCreator
    public static ConnectionTypeEnum fromValue(String value) {
      for (ConnectionTypeEnum b : ConnectionTypeEnum.values()) {
        if (b.value.equals(value)) {
          return b;
        }
      }
      throw new IllegalArgumentException("Unexpected value '" + value + "'");
    }
  }

  public static final String JSON_PROPERTY_CONNECTION_TYPE = "connectionType";
  private ConnectionTypeEnum connectionType;

  public static final String JSON_PROPERTY_ICCID = "iccid";
  private String iccid;

  public static final String JSON_PROPERTY_IMEI = "imei";
  private String imei;

  public static final String JSON_PROPERTY_IMSI = "imsi";
  private String imsi;

  public static final String JSON_PROPERTY_NETWORK_OPERATOR = "networkOperator";
  private String networkOperator;

  public static final String JSON_PROPERTY_RSSI = "rssi";
  private Float rssi;

  public static final String JSON_PROPERTY_RSCP = "rscp";
  private Float rscp;

  public static final String JSON_PROPERTY_EC_IO = "ecIo";
  private Float ecIo;

  public static final String JSON_PROPERTY_RSRP = "rsrp";
  private Float rsrp;

  public static final String JSON_PROPERTY_RSRQ = "rsrq";
  private Float rsrq;

  public static final String JSON_PROPERTY_SINR = "sinr";
  private Float sinr;

  public BsIntCellular() {
  }

  public BsIntCellular state(Integer state) {

    this.state = state;
    return this;
  }

  /**
   * State for a GPRS interface: - Down / No started (5) - Up / Nw. reg. failed /
   * No sig. (4) - Up / No IP / No PDP context (3) - Up / Network down (2) - Up
   * and running (1) - Up / running and used (0) - Unknown because of disconnected
   * Base Station (null)
   * 
   * @return state
   **/
  @javax.annotation.Nullable
  @JsonProperty(JSON_PROPERTY_STATE)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public Integer getState() {
    return state;
  }

  @JsonProperty(JSON_PROPERTY_STATE)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
  public void setState(Integer state) {
    this.state = state;
  }

  public BsIntCellular connectionType(ConnectionTypeEnum connectionType) {

    this.connectionType = connectionType;
    return this;
  }

  /**
   * Cellular connection type
   * 
   * @return connectionType
   **/
  @javax.annotation.Nullable
  @JsonProperty(JSON_PROPERTY_CONNECTION_TYPE)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public ConnectionTypeEnum getConnectionType() {
    return connectionType;
  }

  @JsonProperty(JSON_PROPERTY_CONNECTION_TYPE)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
  public void setConnectionType(ConnectionTypeEnum connectionType) {
    this.connectionType = connectionType;
  }

  public BsIntCellular iccid(String iccid) {

    this.iccid = iccid;
    return this;
  }

  /**
   * ICCID of the SIM card
   * 
   * @return iccid
   **/
  @javax.annotation.Nullable
  @JsonProperty(JSON_PROPERTY_ICCID)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public String getIccid() {
    return iccid;
  }

  @JsonProperty(JSON_PROPERTY_ICCID)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
  public void setIccid(String iccid) {
    this.iccid = iccid;
  }

  public BsIntCellular imei(String imei) {

    this.imei = imei;
    return this;
  }

  /**
   * IMEI of the Base Station
   * 
   * @return imei
   **/
  @javax.annotation.Nullable
  @JsonProperty(JSON_PROPERTY_IMEI)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public String getImei() {
    return imei;
  }

  @JsonProperty(JSON_PROPERTY_IMEI)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
  public void setImei(String imei) {
    this.imei = imei;
  }

  public BsIntCellular imsi(String imsi) {

    this.imsi = imsi;
    return this;
  }

  /**
   * IMSI of the SIM card
   * 
   * @return imsi
   **/
  @javax.annotation.Nullable
  @JsonProperty(JSON_PROPERTY_IMSI)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public String getImsi() {
    return imsi;
  }

  @JsonProperty(JSON_PROPERTY_IMSI)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
  public void setImsi(String imsi) {
    this.imsi = imsi;
  }

  public BsIntCellular networkOperator(String networkOperator) {

    this.networkOperator = networkOperator;
    return this;
  }

  /**
   * Cellular network operator
   * 
   * @return networkOperator
   **/
  @javax.annotation.Nullable
  @JsonProperty(JSON_PROPERTY_NETWORK_OPERATOR)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public String getNetworkOperator() {
    return networkOperator;
  }

  @JsonProperty(JSON_PROPERTY_NETWORK_OPERATOR)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
  public void setNetworkOperator(String networkOperator) {
    this.networkOperator = networkOperator;
  }

  public BsIntCellular rssi(Float rssi) {

    this.rssi = rssi;
    return this;
  }

  /**
   * Cellular RSSI in dBm
   * 
   * @return rssi
   **/
  @javax.annotation.Nullable
  @JsonProperty(JSON_PROPERTY_RSSI)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public Float getRssi() {
    return rssi;
  }

  @JsonProperty(JSON_PROPERTY_RSSI)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
  public void setRssi(Float rssi) {
    this.rssi = rssi;
  }

  public BsIntCellular rscp(Float rscp) {

    this.rscp = rscp;
    return this;
  }

  /**
   * Cellular 3G RSCP in dBm
   * 
   * @return rscp
   **/
  @javax.annotation.Nullable
  @JsonProperty(JSON_PROPERTY_RSCP)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public Float getRscp() {
    return rscp;
  }

  @JsonProperty(JSON_PROPERTY_RSCP)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
  public void setRscp(Float rscp) {
    this.rscp = rscp;
  }

  public BsIntCellular ecIo(Float ecIo) {

    this.ecIo = ecIo;
    return this;
  }

  /**
   * Cellular 3G Ec/Io in dB
   * 
   * @return ecIo
   **/
  @javax.annotation.Nullable
  @JsonProperty(JSON_PROPERTY_EC_IO)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public Float getEcIo() {
    return ecIo;
  }

  @JsonProperty(JSON_PROPERTY_EC_IO)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
  public void setEcIo(Float ecIo) {
    this.ecIo = ecIo;
  }

  public BsIntCellular rsrp(Float rsrp) {

    this.rsrp = rsrp;
    return this;
  }

  /**
   * Cellular 4G RSRP in dBm
   * 
   * @return rsrp
   **/
  @javax.annotation.Nullable
  @JsonProperty(JSON_PROPERTY_RSRP)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public Float getRsrp() {
    return rsrp;
  }

  @JsonProperty(JSON_PROPERTY_RSRP)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
  public void setRsrp(Float rsrp) {
    this.rsrp = rsrp;
  }

  public BsIntCellular rsrq(Float rsrq) {

    this.rsrq = rsrq;
    return this;
  }

  /**
   * Cellular 4G RSRQ in dBm
   * 
   * @return rsrq
   **/
  @javax.annotation.Nullable
  @JsonProperty(JSON_PROPERTY_RSRQ)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public Float getRsrq() {
    return rsrq;
  }

  @JsonProperty(JSON_PROPERTY_RSRQ)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
  public void setRsrq(Float rsrq) {
    this.rsrq = rsrq;
  }

  public BsIntCellular sinr(Float sinr) {

    this.sinr = sinr;
    return this;
  }

  /**
   * Cellular 4G SINR in dB
   * 
   * @return sinr
   **/
  @javax.annotation.Nullable
  @JsonProperty(JSON_PROPERTY_SINR)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public Float getSinr() {
    return sinr;
  }

  @JsonProperty(JSON_PROPERTY_SINR)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
  public void setSinr(Float sinr) {
    this.sinr = sinr;
  }

  @Override
  public boolean equals(Object o) {
    if (this == o) {
      return true;
    }
    if (o == null || getClass() != o.getClass()) {
      return false;
    }
    BsIntCellular bsIntCellular = (BsIntCellular) o;
    return Objects.equals(this.state, bsIntCellular.state)
            && Objects.equals(this.connectionType, bsIntCellular.connectionType)
            && Objects.equals(this.iccid, bsIntCellular.iccid) && Objects.equals(this.imei, bsIntCellular.imei)
            && Objects.equals(this.imsi, bsIntCellular.imsi)
            && Objects.equals(this.networkOperator, bsIntCellular.networkOperator)
            && Objects.equals(this.rssi, bsIntCellular.rssi) && Objects.equals(this.rscp, bsIntCellular.rscp)
            && Objects.equals(this.ecIo, bsIntCellular.ecIo) && Objects.equals(this.rsrp, bsIntCellular.rsrp)
            && Objects.equals(this.rsrq, bsIntCellular.rsrq) && Objects.equals(this.sinr, bsIntCellular.sinr);
  }

  @Override
  public int hashCode() {
    return Objects.hash(state, connectionType, iccid, imei, imsi, networkOperator, rssi, rscp, ecIo, rsrp, rsrq, sinr);
  }

  @Override
  public String toString() {
    StringBuilder sb = new StringBuilder();
    sb.append("class BsIntCellular {\n");
    sb.append("    state: ").append(toIndentedString(state)).append("\n");
    sb.append("    connectionType: ").append(toIndentedString(connectionType)).append("\n");
    sb.append("    iccid: ").append(toIndentedString(iccid)).append("\n");
    sb.append("    imei: ").append(toIndentedString(imei)).append("\n");
    sb.append("    imsi: ").append(toIndentedString(imsi)).append("\n");
    sb.append("    networkOperator: ").append(toIndentedString(networkOperator)).append("\n");
    sb.append("    rssi: ").append(toIndentedString(rssi)).append("\n");
    sb.append("    rscp: ").append(toIndentedString(rscp)).append("\n");
    sb.append("    ecIo: ").append(toIndentedString(ecIo)).append("\n");
    sb.append("    rsrp: ").append(toIndentedString(rsrp)).append("\n");
    sb.append("    rsrq: ").append(toIndentedString(rsrq)).append("\n");
    sb.append("    sinr: ").append(toIndentedString(sinr)).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    ");
  }

}
