/** * 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(""); } }