Example #1
0
  /**
   * Initializes an instance of the RrcStateMachine class using the specified analysisData.
   *
   * @param analysisData The trace analysis data.
   */
  public RRCStateMachine(TraceData.Analysis analysisData) {

    TimeRange timeRange = analysisData.getFilter().getTimeRange();
    if (timeRange == null) {
      this.rrc = RrcStateRange.runTrace(analysisData);
    } else {
      this.rrc =
          getRRCStatesForTheTimeRange(
              RrcStateRange.runTrace(analysisData),
              timeRange.getBeginTime(),
              timeRange.getEndTime());
    }
    if (logger.isLoggable(Level.FINER)) {
      for (RrcStateRange r : rrc) {
        logger.finer(
            r.getState()
                + ": "
                + (r.getEndTime() - r.getBeginTime())
                + " "
                + analysisData
                    .getProfile()
                    .energy(
                        r.getBeginTime(), r.getEndTime(), r.getState(), analysisData.getPackets()));
      }
    }

    this.packetsDuration = analysisData.getPacketsDuration();
    this.traceDuration = analysisData.getTraceData().getTraceDuration();

    final Profile profile = analysisData.getProfile();

    if (profile instanceof Profile3G) {
      // Perform analysis on 3G RRC data
      run3GRRcStatistics(analysisData);
    } else if (profile instanceof ProfileLTE) {
      // Perform analysis on LTE RRC data
      runLTERRcStatistics(analysisData);
    } else if (profile instanceof ProfileWiFi) {
      // Perform analysis on LTE RRC data
      runWiFiRRcStatistics(analysisData);
    }

    if (logger.isLoggable(Level.FINE)) {
      logger.fine("===== RRC State Machine Simulation =====");
      logger.fine("CELL_DCH: " + getDchTime() + "(" + (getDchTimeRatio() * 100) + "%)");
      logger.fine("CELL_FACH: " + getFachTime() + "(" + (getFachTimeRatio() * 100) + "%)");
      logger.fine("IDLE: " + getIdleTime() + "(" + (getIdleTimeRatio() * 100) + "%)");
      logger.fine(
          "IDLE->DCH: " + getIdleToDchTime() + "(" + (getIdleToDchTimeRatio() * 100) + "%)");
      logger.fine(
          "FACH->DCH: " + getFachToDchTime() + "(" + (getFachToDchTimeRatio() * 100) + "%)");
      logger.fine("DCH Tail Ratio = : " + getDchTailRatio());
      logger.fine("FACH Tail Ratio = : " + getFachTailRatio());
      logger.fine("Promotion Ratio = : " + getPromotionRatio());
      logger.fine("");
    }
  }