Example #1
0
def ParseMEI(line, logObj):
    length = len(line)
    if 2 < length:
        NumberOfContextID = 0
        if line[2] != '':
            NumberOfContextID = int(line[2])
        logObj.event = "Measurement Event Information"
        logObj.msgType = ' '
        logObj.time = line[1]
        measureSystems = ''
        measurementEvent = 0
        if ((3 + NumberOfContextID) < length) and (line[3 + NumberOfContextID]
                                                   != ''):
            measureSystems = int(line[3 + NumberOfContextID])
            logObj.modeSystem = MeasureSysConverter(measureSystems)

        if logObj.modeSystem == 'UMTS FDD':
            if ((4 + NumberOfContextID) <
                    length) and (line[4 + NumberOfContextID] != ''):
                measurementEvent = int(line[4 + NumberOfContextID])  #add
                logObj.MeasurementEvent = parseMEIUmtsFddParseMeasurementEvent(
                    measurementEvent)  #addd
        elif logObj.modeSystem == 'LTE FDD' or logObj.modeSystem == 'LTE TDD':
            if ((4 + NumberOfContextID) <
                    length) and (line[4 + NumberOfContextID] != ''):
                measurementEvent = int(line[4 + NumberOfContextID])  #add
                logObj.MeasurementEvent = parseMEILteParseMeasurementEvent(
                    measurementEvent)  #addd

        return 1
    else:
        return 0
Example #2
0
def ParseMACRATEU(line, logObj):
    length = len(line)
    if 2 < length:
        NumberOfContextID = 0
        if line[2] != '':
            NumberOfContextID = int(line[2])
        logObj.event = "Parse MAC layer throughput uplink"
        logObj.msgType = ''
        logObj.time = line[1]
        if ((3 + NumberOfContextID) < length) and (line[3 + NumberOfContextID]
                                                   != ''):
            logObj.modeSystem = MeasureSysConverter(
                int(line[3 + NumberOfContextID]))
        if logObj.modeSystem == 'LTE FDD' or logObj.modeSystem == 'LTE TDD':

            if ((4 + NumberOfContextID) <
                    length) and (line[4 + NumberOfContextID] != ''):
                logObj.MACULBitRate = int(line[4 + NumberOfContextID])
            if ((6 + NumberOfContextID) <
                    length) and (line[6 + NumberOfContextID] != ''):
                logObj.MACULRetr = float(line[6 + NumberOfContextID])
        return 1

    else:
        dataOfTAU = "No of context id not found"
        return 0
Example #3
0
def ParseGAA(line, logObj, dictionary):
    length = len(line)
    if 2 < length:
        contextID = 0
        dataOfGAA = ''
        NumberOfContextID = 0
        if line[2] != '':

            NumberOfContextID = int(line[2])
            if NumberOfContextID != 0:
                if (3 < length) and (line[3] != ''):
                    contextID = int(line[3])

        if contextID in dictionary:
            attachment = dictionary[contextID]
        else:
            attachment = AttachmentEventInfo()
            dictionary[contextID] = attachment
            attachment = dictionary[contextID]

        attachment.Attempt = line[1]
        logObj.event = "Attach Attempt"
        logObj.msgType = "Setup"
        dataOfGAA += "Attach Context ID: " + str(contextID)
        measureSystem = MeasureSysConverter(int(line[3 + NumberOfContextID]))
        logObj.eventInfo = dataOfGAA
        logObj.modeSystem = measureSystem
        return 1
Example #4
0
def ParseAMRS (line, logObj):
    length = len(line)
    if 2 < length:
        NumberOfContextID = 0
        if line[2] != '':
            NumberOfContextID = int(line[2])        
        logObj.event = "AMR Status"
        logObj.msgType = ''
        logObj.time = line[1]  
        chi = 0
        if ((3 + NumberOfContextID) < length) and (line[3+NumberOfContextID] != '') :
            logObj.modeSystem = MeasureSysConverter(int(line[3 + NumberOfContextID]))
        if logObj.modeSystem == 'GSM':
            if ((4 + NumberOfContextID) < length) and (line[4+NumberOfContextID] != '') :
                logObj.AMRModeUL = ParseAMRCodec(int(line[4 + NumberOfContextID])) #add this
            if ((5 + NumberOfContextID) < length) and (line[5+NumberOfContextID] != '') :
                logObj.AMRModeDL = ParseAMRCodec(int(line[5 + NumberOfContextID]))
            if ((8 + NumberOfContextID) < length) and (line[8+NumberOfContextID] != '') :
                chi = int(line[8 + NumberOfContextID])
                if chi == 1:
                    logObj.AMRICMI = "Half rate"
                elif chi == 2:
                    logObj.AMRICMI = "Full rate"
                elif chi == 3:
                    logObj.AMRICMI = "Wideband rate"
        elif logObj.modeSystem == 'UMTS FDD' or logObj.modeSystem == 'UMTS TD-SCDMA' or logObj.modeSystem == 'LTE FDD' or logObj.modeSystem == 'LTE TDD':
            if ((4 + NumberOfContextID) < length) and (line[4+NumberOfContextID] != '') :
                logObj.AMRModeUL = ParseAMRCodec(int(line[4 + NumberOfContextID])) 
            if ((5 + NumberOfContextID) < length) and (line[5+NumberOfContextID] != '') :
                logObj.AMRModeDL = ParseAMRCodec(int(line[5 + NumberOfContextID]))
        return 1
    
    else:
        return 0
Example #5
0
def ParseRABF(line, logObj):
    length = len(line)
    if 2 < length:
        NumberOfContextID = 0
        if line[2] != '':
            NumberOfContextID = int(line[2])
        dataOfRABF = ''
        numberOfRABRBs = 0
        logObj.event = "RAB Allocation Failed"
        logObj.msgType = 'Setup Failed'
        logObj.time = line[1]
        rabContextID = 0
        rabType = 0
        rabFailType = 0
        numberOfHeaderParam = 0
        if (3 < length) and (line[3] != ''):
            rabContextID = int(line[3])
            dataOfRABF = 'Context ID: ' + str(rabContextID) + ';'
        if ((3 + NumberOfContextID) < length) and (line[3 + NumberOfContextID]
                                                   != ''):
            logObj.modeSystem = MeasureSysConverter(
                int(line[3 + NumberOfContextID]))
            dataOfRABF += ('Measure System: ' + logObj.modeSystem) + ';'
        if ((4 + NumberOfContextID) < length) and (line[4 + NumberOfContextID]
                                                   != ''):
            numberOfHeaderParam = int(line[4 + NumberOfContextID])
        if numberOfHeaderParam > 0:
            if ((5 + NumberOfContextID) <
                    length) and (line[5 + NumberOfContextID] != ''):
                rabType = int(line[5 + NumberOfContextID])
            if rabType == 1:
                logObj.rabType = 'CS'
                dataOfRABF += 'RAB Type: CS;'
            if rabType == 2:
                logObj.rabType = 'PS'
                dataOfRABF += 'RAB Type: PS;'
            if numberOfHeaderParam > 1:
                if ((6 + NumberOfContextID) <
                        length) and (line[6 + NumberOfContextID] != ''):
                    logObj.RABID = int(line[6 + NumberOfContextID])
        if ((5 + NumberOfContextID + numberOfHeaderParam) < length) and (
                line[5 + NumberOfContextID + numberOfHeaderParam] != ''):
            rabFailType = int(line[5 + NumberOfContextID +
                                   numberOfHeaderParam])
            if rabFailType == 1:
                logObj.RABFailType = "LTE re-establishment cause"
                dataOfRABF += "Fail Type: LTE re-establishment cause; "
            elif rabFailType == 2:
                logObj.RABFailType = "UMTS failure cause"
                dataOfRABF += "Fail Type: UMTS failure cause; "
            elif rabFailType == 3:
                logObj.RABFailType = "UMTS ISHO failure cause"
                dataOfRABF += "Fail Type: UMTS ISHO failure cause; "
            elif rabFailType == 4:
                logObj.RABFailType = "GSM RR cause"
                dataOfRABF += "Fail Type: GSM RR cause; "
        logObj.eventInfo = dataOfRABF
        return 1
    else:
        return 0
Example #6
0
def ParseMACERATEV27(line, logObj):
    length = len(line)
    if 2 < length:
        NumberOfContextID = 0
        if line[2] != '':
            NumberOfContextID = int(line[2])
        logObj.event = "MAC-E layer throughput"
        logObj.msgType = ''
        logObj.time = line[1]
        measureSystems = ''
        if ((3 + NumberOfContextID) < length) and (line[3 + NumberOfContextID]
                                                   != ''):
            measureSystems = int(line[3 + NumberOfContextID])
            logObj.modeSystem = MeasureSysConverter(measureSystems)

        if logObj.modeSystem == 'UMTS FDD':
            if ((4 + NumberOfContextID) <
                    length) and (line[4 + NumberOfContextID] != ''):
                logObj.MACEBitRate = int(line[4 + NumberOfContextID])

            if ((4 + NumberOfContextID) <
                    length) and (line[4 + NumberOfContextID] != ''):
                celltype = line[9 + NumberOfContextID]

                if celltype == '1':
                    logObj.cellType = "Primary"
                elif celltype == '2':
                    logObj.cellType = "Secondary"

        return 1
    else:
        return 0
Example #7
0
def ParseGAD (line, logObj,dictionary):
    length = len(line)
    if 2 < length:
        contextID = 0
        dataOfGAD = ''
        if line[2] != '':
            
            NumberOfContextID = int(line[2])
            if NumberOfContextID != 0:
                if(3 < length) and (line[3] != '') and NumberOfContextID == 1 :
                    contextID = int(line[3])
                    
        if contextID in dictionary:
            attachment = dictionary[contextID]
        else:
            attachment = AttachmentEventInfo()
            dictionary[contextID] = attachment
            attachment = dictionary[contextID]
         
        attachmentDuration = 0
        attachment.End = line[1]
        if attachment.End != '' and attachment.Established != '':
            tdelta = datetime.strptime(attachment.End.split('.', 1)[0], '%H:%M:%S') - datetime.strptime(attachment.Established.split('.', 1)[0], '%H:%M:%S')        
            attachmentDuration = float(tdelta.seconds)*1000 #MilliSeconds 
        
        logObj.event = "Detach"
        logObj.msgType = "Release"
        dataOfGAD += "Detach Context ID: " + str(contextID)
        measureSystem = MeasureSysConverter(int(line[3 + NumberOfContextID]))
        dataOfGAD += ";Measured System: " + measureSystem
        
        detachStatus = 'Unknown'
        if((4 + NumberOfContextID) < length) and (line[4 + NumberOfContextID] != '') :
            detachCheck = int(line[4 + NumberOfContextID])
            if detachCheck == 1:
                detachStatus = 'User detach'
            elif detachCheck == 2:
                detachStatus = 'Network detach (GMM Cause)'
            elif detachCheck == 3:
                detachStatus = 'Mobile detach (GMM Cause)'
            elif detachCheck == 4:
                detachStatus = 'Test system failure'
                
        if attachmentDuration > 0:
            dataOfGAD += ";Attachemt Duration: " + str(attachmentDuration) + 'ms'
        dataOfGAD += ";Detach status: "+detachStatus
        
        disconnectionCause = "Unknown"
        if((5 + NumberOfContextID) < length) and (line[5 + NumberOfContextID] != '') :
            disconnectionCause = parseGADDisconnectionCause(int(line[5 + NumberOfContextID]))
            
 
        dataOfGAD += ";Disconnection Cause: " + disconnectionCause
        if((6 + NumberOfContextID) < length) and (line[6 + NumberOfContextID] != '') :
            dataOfGAD += ";Detach Time: "+line[6 + NumberOfContextID]
            
        logObj.eventInfo = dataOfGAD
        logObj.modeSystem = measureSystem
        return 1
Example #8
0
def ParseMACI(line, listOfLogObj, PREVIOUS_LAT, PREVIOUS_LONG, PREVIOUS_MCC,
              PREVIOUS_MNC):
    dataOfMACI = ""
    length = len(line)
    if 2 < length:
        NumberOfContextID = 0
        if line[2] != '':
            NumberOfContextID = int(line[2])
        contextID = 'Unknown'
        measureSystem = 'Unknown'
        logDTObj = LogDT()
        logDTObj.lat = PREVIOUS_LAT
        logDTObj.longg = PREVIOUS_LONG
        logDTObj.mcc = PREVIOUS_MCC
        logDTObj.mnc = PREVIOUS_MNC
        logDTObj.event = 'Parse MAC layer info'
        if (3 < length) and (line[3] != ''):
            contextID = line[3]

        if ((3 + NumberOfContextID) < length) and (line[3 + NumberOfContextID]
                                                   != ''):
            measureSystem = line[3 + NumberOfContextID]
            logDTObj.modeSystem = MeasureSysConverter(int(measureSystem))

        numberOfCells = 0
        if ((4 + NumberOfContextID) < length) and (line[4 + NumberOfContextID]
                                                   != ''):
            numberOfCells = int(line[4 + NumberOfContextID])
        if ((5 + NumberOfContextID) < length) and (line[5 + NumberOfContextID]
                                                   != ''):
            numberOfParameterPerCell = int(line[5 + NumberOfContextID])

        for cell in range(0, numberOfCells):
            currentLog = LogDT()
            currentLog = copy.deepcopy(logDTObj)

            for parameter in range(0, numberOfParameterPerCell):
                paramNumber = NumberOfContextID + 6 + (
                    cell * numberOfParameterPerCell) + parameter
                if ((paramNumber) < length) and (line[paramNumber] != ''):

                    if parameter == 0:
                        if currentLog.modeSystem == 'UMTS FDD':
                            if line[paramNumber] == '2':
                                currentLog.cellType = 'Secondary'
                        elif currentLog.modeSystem == 'LTE FDD' or currentLog.modeSystem == 'LTE TDD':
                            currentLog.cellType = ParseCellTypeJ(
                                line[paramNumber], currentLog.modeSystem)

                    elif parameter == 1:
                        if line[paramNumber] == '0':
                            currentLog.cellState = 'Deactivate'
                        elif line[paramNumber] == '1':
                            currentLog.cellState = 'Activate'
            listOfLogObj.append(currentLog)

        return 1
    else:
        return 0
Example #9
0
def ParseMACBLER(line, listOfLogObj, PREVIOUS_LAT, PREVIOUS_LONG, PREVIOUS_MCC,
                 PREVIOUS_MNC):
    length = len(line)
    if 2 < length:
        NumberOfContextID = 0
        if line[2] != '':
            NumberOfContextID = int(line[2])
        logObj = LogDT()
        logObj.lat = PREVIOUS_LAT
        logObj.longg = PREVIOUS_LONG
        logObj.mcc = PREVIOUS_MCC
        logObj.mnc = PREVIOUS_MNC
        logObj.event = "Parse MAC layer Block Error Rate"
        logObj.msgType = ''
        logObj.time = line[1]
        headerParameters = 0
        numberOfTrChs = 0
        numberOfParamsPerTrCh = 0
        cellType = 0
        if ((3 + NumberOfContextID) < length) and (line[3 + NumberOfContextID]
                                                   != ''):
            logObj.modeSystem = MeasureSysConverter(
                int(line[3 + NumberOfContextID]))
        if logObj.modeSystem == 'UMTS FDD':
            if ((4 + NumberOfContextID) <
                    length) and (line[4 + NumberOfContextID] != ''):
                headerParameters = int(line[4 + NumberOfContextID])
            if ((5 + NumberOfContextID) <
                    length) and (line[5 + NumberOfContextID] != ''):
                numberOfTrChs = int(line[5 + NumberOfContextID])
            if ((6 + NumberOfContextID) <
                    length) and (line[6 + NumberOfContextID] != ''):
                numberOfParamsPerTrCh = int(line[6 + NumberOfContextID])
            for c in range(0, numberOfTrChs):
                currentObj = LogDT()
                currentObj = copy.deepcopy(logObj)
                if ((7 + NumberOfContextID + headerParameters +
                     (c * numberOfParamsPerTrCh) + 3) < length) and (
                         line[7 + NumberOfContextID + headerParameters +
                              (c * numberOfParamsPerTrCh) + 3] != ''):
                    currentObj.MAChsBLER = float(
                        line[7 + NumberOfContextID + headerParameters +
                             (c * numberOfParamsPerTrCh) + 3])
                if ((7 + NumberOfContextID + headerParameters +
                     (c * numberOfParamsPerTrCh) + 6) < length) and (
                         line[7 + NumberOfContextID + headerParameters +
                              (c * numberOfParamsPerTrCh) + 6] != ''):
                    cellType = int(
                        line[7 + NumberOfContextID + headerParameters +
                             (c * numberOfParamsPerTrCh) + 6])
                    if cellType == 1:
                        currentObj.cellType = "Primary"
                    else:
                        currentObj.cellType = "Secondary"
                listOfLogObj.append(currentObj)
        return 1

    else:
        return 0
Example #10
0
def ParseRRA(line, logObj, dictionary):
    length = len(line)
    if 2 < length:
        dataOfRRA = ''
        rrcContextID = 0
        NumberOfContextID = 0
        if line[2] != '':
            NumberOfContextID = int(line[2])
        if (3 < length) and (line[3] != ''):
            rrcContextID = int(line[3])
            RRCContextIdValue = rrcContextID

        if rrcContextID in dictionary:
            RRAInfo = dictionary[rrcContextID]
        else:
            RRAInfo = RadioResourceInfo()
            dictionary[rrcContextID] = RRAInfo
            RRAInfo = dictionary[rrcContextID]

        cause = "Unknown"
        logObj.event = "Radio resource connection attempt"
        RRAInfo.ConnectionAttempt = line[1]
        dictionary[rrcContextID] = RRAInfo
        logObj.msgType = "Attempt"
        dataOfRRA = "RRC Context ID: " + str(rrcContextID)

        if ((3 + NumberOfContextID) < length) and (line[3 + NumberOfContextID]
                                                   != ''):
            measureSystem = MeasureSysConverter(
                int(line[3 + NumberOfContextID]))

        establishmentCause = "Unknown"
        if measureSystem == 'UMTS FDD' or measureSystem == 'UMTS TDSCDMA':
            if ((4 + NumberOfContextID) <
                    length) and (line[4 + NumberOfContextID] != ''):
                cause = int(line[4 + NumberOfContextID])
                cause = parseRRAUMTSFDD(cause)
        elif measureSystem == 'LTE FDD' or measureSystem == 'LTE TDD':
            if ((4 + NumberOfContextID) <
                    length) and (line[4 + NumberOfContextID] != ''):
                cause = int(line[4 + NumberOfContextID])
                if cause == 0:
                    cause = 'Emergency'
                elif cause == 1:
                    cause = 'High priority access'
                elif cause == 2:
                    cause = 'Mobile terminating access'
                elif cause == 3:
                    cause = 'Mobile originating signaling'
                elif cause == 4:
                    cause = 'Mobile originating data'

        dataOfRRA += ';RRC Establishment Cause: ' + str(cause)
        logObj.eventInfo = dataOfRRA
        logObj.modeSystem = measureSystem

        return 1
Example #11
0
def ParseRRCSM(line, logObj):
    length = len(line)
    if 2 < length:
        dataOfRRCSM = ''
        RRCSMContextID = 0
        NumberOfContextID = 0
        if line[2] != '':
            NumberOfContextID = int(line[2])
            if NumberOfContextID != 0:
                if (3 < length) and (line[3] != ''):
                    RRCSMContextID = int(line[3])
        logObj.direction = 'NA'

        if ((3 + NumberOfContextID) < length) and (line[3 + NumberOfContextID]
                                                   != ''):
            measureSystem = MeasureSysConverter(
                int(line[3 + NumberOfContextID]))

        if ((4 + NumberOfContextID) < length) and (line[4 + NumberOfContextID]
                                                   != ''):
            cause = line[4 + NumberOfContextID]
            if cause == '1':
                logObj.direction = 'UL'
            elif cause == '2':
                logObj.direction = 'DL'
        if ((5 + NumberOfContextID) < length) and (line[5 + NumberOfContextID]
                                                   != ''):
            logObj.RRCMessage = line[5 + NumberOfContextID]
        if ((6 + NumberOfContextID) < length) and (line[6 + NumberOfContextID]
                                                   != ''):
            logObj.SubChannel = line[6 + NumberOfContextID]
        if ((9 + NumberOfContextID) < length) and (line[9 + NumberOfContextID]
                                                   != ''):
            logObj.RRCData = line[9 + NumberOfContextID]
        if logObj.event != '':
            logObj.event = logObj.RRCMessage

        if measureSystem == 'UMTS FDD' or measureSystem == 'UMTS TD-SCDMA':
            if ((7 + NumberOfContextID) <
                    length) and (line[7 + NumberOfContextID] != ''):
                logObj.UARFCN = line[7 + NumberOfContextID]
            if ((8 + NumberOfContextID) <
                    length) and (line[8 + NumberOfContextID] != ''):
                logObj.SC = line[8 + NumberOfContextID]

        if measureSystem == 'LTE FDD' or measureSystem == 'LTE TDD':
            if ((7 + NumberOfContextID) <
                    length) and (line[7 + NumberOfContextID] != ''):
                logObj.EARFCN = line[7 + NumberOfContextID]
            if ((8 + NumberOfContextID) <
                    length) and (line[8 + NumberOfContextID] != ''):
                logObj.PCI = line[8 + NumberOfContextID]
        logObj.modeSystem = measureSystem

        return 1
Example #12
0
def ParseRABD(line, logObj):
    length = len(line)
    if 2 < length:
        NumberOfContextID = 0
        if line[2] != '':
            NumberOfContextID = int(line[2])
        dataOfRABD = ''
        numberOfRABRBs = 0
        logObj.event = "RAB Release"
        logObj.msgType = 'Complete'
        logObj.time = line[1]
        rabContextID = 0
        rabType = 0
        rabFailType = 0
        numberOfHeaderParam = 0
        if (3 < length) and (line[3] != ''):
            rabContextID = int(line[3])
            dataOfRABD = 'Context ID: ' + str(rabContextID) + ';'
        if ((3 + NumberOfContextID) < length) and (line[3 + NumberOfContextID]
                                                   != ''):
            logObj.modeSystem = MeasureSysConverter(
                int(line[3 + NumberOfContextID]))
            dataOfRABD += ('Measure System: ' + logObj.modeSystem) + ';'
        if ((4 + NumberOfContextID) < length) and (line[4 + NumberOfContextID]
                                                   != ''):
            numberOfHeaderParam = int(line[4 + NumberOfContextID])
        if numberOfHeaderParam > 0:
            if ((5 + NumberOfContextID) <
                    length) and (line[5 + NumberOfContextID] != ''):
                rabType = int(line[5 + NumberOfContextID])
            if rabType == 1:
                logObj.rabType = 'CS'
                dataOfRABD += 'RAB Type: CS;'
            if rabType == 2:
                logObj.rabType = 'PS'
                dataOfRABD += 'RAB Type: PS;'
            if numberOfHeaderParam > 1:
                if ((6 + NumberOfContextID) <
                        length) and (line[6 + NumberOfContextID] != ''):
                    logObj.RABID = int(line[6 + NumberOfContextID])
        if ((5 + NumberOfContextID + numberOfHeaderParam) < length) and (
                line[5 + NumberOfContextID + numberOfHeaderParam] != ''):
            rabFailType = int(line[5 + NumberOfContextID +
                                   numberOfHeaderParam])
            if rabFailType == 1:
                logObj.RABRelaseType = "Network Release"
                dataOfRABD += "Release Type: Network Release; "
            elif rabFailType == 2:
                logObj.RABRelaseType = "UE Release"
                dataOfRABD += "Release Type: UE Release; "
        logObj.eventInfo = dataOfRABD
        return 1
    else:
        return 0
Example #13
0
def ParseRRRE(line, logObj, dictionary):
    length = len(line)
    if 2 < length:
        dataOfRRRE = ''
        RRREContextID = 0
        NumberOfContextID = 0
        if line[2] != '':
            NumberOfContextID = int(line[2])
            if NumberOfContextID != 0:
                if (3 < length) and (line[3] != ''):
                    RRREContextID = int(line[3])
                    RRREContextIdValue = RRREContextID

        if RRREContextID in dictionary:
            RRREInfo = dictionary[RRREContextID]
        else:
            RRREInfo = RadioResourceInfo()
            dictionary[RRREContextID] = RRREInfo
            RRREInfo = dictionary[RRREContextID]

        logObj.event = "Radio Resource Connection Re-Establishment"
        RRREInfo.ConnectionEnd = line[1]
        dictionary[RRREContextID] = RRREInfo
        logObj.msgType = "Re-Establishment"
        dataOfRRRE = "RRRE Context ID: " + str(RRREContextID)
        if ((3 + NumberOfContextID) < length) and (line[3 + NumberOfContextID]
                                                   != ''):
            measureSystem = MeasureSysConverter(
                int(line[3 + NumberOfContextID]))
        cause = "Unknown"
        if measureSystem == 'LTE FDD' or measureSystem == 'LTE TDD':
            if ((4 + NumberOfContextID) <
                    length) and (line[4 + NumberOfContextID] != ''):
                cause = line[4 + NumberOfContextID]
                if cause == '1':
                    dataOfRRRE += ";Re-Establishment Status: Succeeded; "
                elif cause == '2':
                    dataOfRRRE += ";Re-Establishment Status: Failed; "
                elif cause == '3':
                    dataOfRRRE += ";Re-Establishment Status: Rejected; "
            if ((5 + NumberOfContextID) <
                    length) and (line[5 + NumberOfContextID] != ''):
                cause = line[5 + NumberOfContextID]
                if cause == '0':
                    dataOfRRRE += ";Re-Establishment Cause: Reconfiguration failure"
                elif cause == '1':
                    dataOfRRRE += ";Re-Establishment Cause: Handover failure; "
                elif cause == '2':
                    dataOfRRRE += ";Re-Establishment Cause: Other Failure; "

        logObj.eventInfo = dataOfRRRE
        logObj.modeSystem = measureSystem

        return 1
Example #14
0
def ParseAMRI(line, logObj):
    length = len(line)
    if 2 < length:
        NumberOfContextID = 0
        if line[2] != '':
            NumberOfContextID = int(line[2])
        logObj.event = "AMR Information"
        logObj.msgType = ''
        logObj.time = line[1]
        chi = 0
        if ((3 + NumberOfContextID) < length) and (line[3 + NumberOfContextID]
                                                   != ''):
            logObj.modeSystem = MeasureSysConverter(
                int(line[3 + NumberOfContextID]))
        if logObj.modeSystem == 'GSM':
            if ((4 + NumberOfContextID) <
                    length) and (line[4 + NumberOfContextID] != ''):
                logObj.AMRInitMode = line[4 + NumberOfContextID]
            if ((5 + NumberOfContextID) <
                    length) and (line[5 + NumberOfContextID] != ''):
                chi = int(line[5 + NumberOfContextID])
                if chi == 0:
                    logObj.AMRICMI = "Implicit rule"
                elif chi == 1:
                    logObj.AMRICMI = "RATSCCH/L3"
            if ((6 + NumberOfContextID) <
                    length) and (line[6 + NumberOfContextID] != ''):
                logObj.AMRTH1 = float(line[6 + NumberOfContextID])
            if ((7 + NumberOfContextID) <
                    length) and (line[7 + NumberOfContextID] != ''):
                logObj.AMRHYS1 = float(line[7 + NumberOfContextID])
            if ((8 + NumberOfContextID) <
                    length) and (line[8 + NumberOfContextID] != ''):
                logObj.AMRTH2 = float(line[8 + NumberOfContextID])
            if ((9 + NumberOfContextID) <
                    length) and (line[9 + NumberOfContextID] != ''):
                logObj.AMRHYS2 = float(line[9 + NumberOfContextID])
            if ((10 + NumberOfContextID) <
                    length) and (line[10 + NumberOfContextID] != ''):
                logObj.AMRTH3 = float(line[10 + NumberOfContextID])
            if ((11 + NumberOfContextID) <
                    length) and (line[11 + NumberOfContextID] != ''):
                logObj.AMRHYS3 = float(line[11 + NumberOfContextID])
            if ((12 + NumberOfContextID) <
                    length) and (line[12 + NumberOfContextID] != ''):
                logObj.ActiveAMRCodecCount = int(line[12 + NumberOfContextID])
            if ((13 + NumberOfContextID) <
                    length) and (line[13 + NumberOfContextID] != ''):
                logObj.AMRCodec = line[13 + NumberOfContextID]
        return 1

    else:
        return 0
Example #15
0
def ParseGAF(line, logObj, dictionary):
    length = len(line)
    if 2 < length:
        contextID = 0
        dataOfGAF = ''
        if line[2] != '':

            NumberOfContextID = int(line[2])
            if NumberOfContextID != 0:
                if (3 < length) and (line[3] != '') and NumberOfContextID == 1:
                    contextID = int(line[3])

        if contextID in dictionary:
            attachment = dictionary[contextID]
        else:
            attachment = AttachmentEventInfo()
            dictionary[contextID] = attachment
            attachment = dictionary[contextID]

        attachment.Failure = line[1]
        logObj.event = "Attach Failed"
        logObj.MessageType = "Failure"
        dataOfGAF += "Attach Context ID: " + str(contextID)
        measureSystem = MeasureSysConverter(int(line[3 + NumberOfContextID]))

        failState = 'Unknown'
        if ((4 + NumberOfContextID) < length) and (line[4 + NumberOfContextID]
                                                   != ''):
            failCheck = int(line[4 + NumberOfContextID])
            if failCheck == 1:
                failState = 'User abort'
            elif failCheck == 2:
                failState = 'Network reject'
            elif failCheck == 3:
                failState = 'Mobile reject'
            elif failCheck == 4:
                failState = 'Timeout'
            elif failCheck == 5:
                failState = 'PPP error'
            elif failCheck == 6:
                failState = 'Test system failure'

        dataOfGAF += ";Failure status: " + failState
        disconnectionCause = "Unknown"
        if ((5 + NumberOfContextID) < length) and (line[5 + NumberOfContextID]
                                                   != ''):
            disconnectionCause = parseGADDisconnectionCause(
                int(line[5 + NumberOfContextID]))

        dataOfGAF += ";Disconnection Cause: " + disconnectionCause
        logObj.eventInfo = dataOfGAF
        logObj.modeSystem = measureSystem
        return 1
Example #16
0
def ParseRRC(line, logObj, dictionary):
    length = len(line)
    if 2 < length:
        dataOfRRC = ''
        rrcContextID = 0
        NumberOfContextID = 0
        if line[2] != '':
            NumberOfContextID = int(line[2])
            if NumberOfContextID != 0:
                if (3 < length) and (line[3] != ''):
                    rrcContextID = int(line[3])
                    RRCContextIdValue = rrcContextID

        if rrcContextID in dictionary:
            RRCInfo = dictionary[rrcContextID]
        else:
            RRCInfo = RadioResourceInfo()
            dictionary[rrcContextID] = RRCInfo
            RRCInfo = dictionary[rrcContextID]

        logObj.event = "Radio Resource Connection Success"
        RRCInfo.ConnectionSetup = line[1]
        dictionary[rrcContextID] = RRCInfo
        logObj.msgType = "Success"
        dataOfRRC = "RRC Context ID: " + str(rrcContextID)

        if RRCInfo.ConnectionSetup != '' and RRCInfo.ConnectionAttempt != '':
            tdelta = datetime.strptime(
                RRCInfo.ConnectionSetup.split('.', 1)[0],
                '%H:%M:%S') - datetime.strptime(
                    RRCInfo.ConnectionAttempt.split('.', 1)[0], '%H:%M:%S')
            setupTime = float(tdelta.seconds) * 1000  #MilliSeconds
            dataOfRRC += ";Setup Time: " + str(setupTime)
        if ((3 + NumberOfContextID) < length) and (line[3 + NumberOfContextID]
                                                   != ''):
            measureSystem = MeasureSysConverter(
                int(line[3 + NumberOfContextID]))
        cause = "Unknown"
        if measureSystem == 'UMTS FDD' or measureSystem == 'UMTS TDSCDMA':
            if ((4 + NumberOfContextID) <
                    length) and (line[4 + NumberOfContextID] != ''):
                cause = line[4 + NumberOfContextID]

        dataOfRRC += ';RRC Requests before connection: ' + cause
        logObj.eventInfo = dataOfRRC
        logObj.modeSystem = measureSystem

        return 1
Example #17
0
def ParsePBD(line, logObj, dictionary):
    length = len(line)
    if 2 < length:
        dataOfPBD = ''
        PBDContextID = 0
        NumberOfContextID = 0
        if line[2] != '':
            NumberOfContextID = int(line[2])
            if NumberOfContextID != 0:
                if (3 < length) and (line[3] != ''):
                    PBDContextID = int(line[3])

        if PBDContextID in dictionary:
            packet = dictionary[PBDContextID]
        else:
            packet = PacketBearerInfo()
            dictionary[PBDContextID] = packet
            packet = dictionary[PBDContextID]

        packet.ConnectionEnd = line[1]
        logObj.event = 'Packet Bearer Release'
        logObj.msgType = 'Release'
        dataOfPBD = "PB Context ID: " + str(PBDContextID)

        if packet.ConnectionEnd != '' and packet.ConnectionSetup != '':
            tdelta = datetime.strptime(
                packet.ConnectionEnd.split('.', 1)[0],
                '%H:%M:%S') - datetime.strptime(
                    packet.ConnectionSetup.split('.', 1)[0], '%H:%M:%S')
            Time = float(tdelta.seconds) * 1000  #MilliSeconds
            dataOfPBD += ";PB Connection Failure duration: " + str(Time)

        if ((3 + NumberOfContextID) < length) and (line[3 + NumberOfContextID]
                                                   != ''):
            measureSystem = MeasureSysConverter(
                int(line[3 + NumberOfContextID]))
        esmCause = 'Unknown'
        if measureSystem == 'LTE FDD' or measureSystem == 'LTE TDD':
            if ((4 + NumberOfContextID) <
                    length) and (line[4 + NumberOfContextID] != ''):
                esmCause = line[4 + NumberOfContextID]
                esmCause = parsePBSEsmCause(int(esmCause))
        dataOfPBD += ";ESM Cause: " + esmCause
        logObj.modeSystem = measureSystem
        logObj.eventInfo = dataOfPBD
        return 1
Example #18
0
def ParseRXPC (line, logObj):
    length = len(line)
    if 2 < length:
        NumberOfContextID = 0
        if line[2] != '':
            NumberOfContextID = int(line[2])
        logObj.event = "RX power control"
        logObj.msgType = ' '
        logObj.time = line[1]
        measureSystems=''
        bsDivState = 0
        dpcMode = 0
        if ((3 + NumberOfContextID) < length) and (line[3+NumberOfContextID] != '') :
            measureSystems = int(line[3 + NumberOfContextID])
            logObj.modeSystem = MeasureSysConverter(measureSystems)
            
        if logObj.modeSystem == 'UMTS FDD':
            if ((4 + NumberOfContextID) < length) and (line[4+NumberOfContextID] != '') :
                logObj.SIRTarget = float(line[4+NumberOfContextID]) #add
            if ((5 + NumberOfContextID) < length) and (line[5+NumberOfContextID] != '') :
                logObj.SIR = float(line[5+NumberOfContextID]) #add
            if ((6 + NumberOfContextID) < length) and (line[6+NumberOfContextID] != '') :
                bsDivState = int(line[6+NumberOfContextID]) #add
                if bsDivState == 0:
                    lobObj.BSDivState = "Not active"#add
                elif bsDivState == 1:
                    lobObj.BSDivState = "Closed loop mode 1"#add
                elif bsDivState == 2:
                    lobObj.BSDivState = "Closed loop mode 2"#add
            if ((7 + NumberOfContextID) < length) and (line[7+NumberOfContextID] != '') :
                logObj.DLPwrUpsNum = int(line[7+NumberOfContextID]) #add
            if ((8 + NumberOfContextID) < length) and (line[8+NumberOfContextID] != '') :
                logObj.DLPwrDownsNum = int(line[8+NumberOfContextID]) #add
            if ((9 + NumberOfContextID) < length) and (line[9+NumberOfContextID] != '') :
                logObj.DLPwrUpPercent = float(line[9+NumberOfContextID]) #add
            if ((10 + NumberOfContextID) < length) and (line[10+NumberOfContextID] != '') :
                dpcMode = int(line[10+NumberOfContextID]) #add
                if dpcMode == 0:
                    lobObj.DpcMode = "Unique TPC command in each slot"#add
                else:
                    lobObj.DpcMode = "Same TPC command repeated over three slots"#add
                
        return 1
    else:
        return 0
Example #19
0
def ParseSEI(line, logObj):
    dataOfSEI = ""
    length = len(line)
    if 2 < length:
        NumberOfContextID = 0
        if line[2] != '':
            NumberOfContextID = int(line[2])
        SEIType = 0
        mmCause = 0
        logObj.event = "Service Information"
        logObj.msgType = ''
        logObj.time = line[1]

        if ((3 + NumberOfContextID) < length) and (line[3 + NumberOfContextID]
                                                   != ''):
            logObj.modeSystem = MeasureSysConverter(
                int(line[3 + NumberOfContextID]))
        if ((4 + NumberOfContextID) < length) and (line[4 + NumberOfContextID]
                                                   != ''):
            SEIType = int(line[4 + NumberOfContextID])  #add
            if SEIType == 1:
                dataOfSEI = 'Service received'
            elif SEIType == 2:
                dataOfSEI = 'Service dropped'
        if logObj.modeSystem == 'GSM' or logObj.modeSystem == 'UMTS FDD' or logObj.modeSystem == 'UMTS TD-SCDMA' or logObj.modeSystem == 'LTE FDD' or logObj.modeSystem == 'LTE TDD':

            if ((5 + NumberOfContextID) <
                    length) and (line[5 + NumberOfContextID] != ''):
                logObj.LAC = int(line[5 + NumberOfContextID])  #add
            if ((6 + NumberOfContextID) <
                    length) and (line[6 + NumberOfContextID] != ''):
                logObj.mcc = line[6 + NumberOfContextID]  #add
            if ((7 + NumberOfContextID) <
                    length) and (line[7 + NumberOfContextID] != ''):
                logObj.mnc = int(line[7 + NumberOfContextID])  #add
            if ((8 + NumberOfContextID) <
                    length) and (line[8 + NumberOfContextID] != ''):
                logObj.TMSI = line[8 + NumberOfContextID]  #add

        logObj.eventInfo = dataOfSEI
        return 1

    else:
        dataOfSEI = "No of context id not found"
        return 0
Example #20
0
def ParseVCHI(line, logObj):

    dataOfVCHI = ""
    callContextIDCount = 0
    logObj.event = "Voice Channel Information"
    if line[2] != '':
        callContextIDCount = line[2]

    if callContextIDCount == 1 and line[3] != '':
        callContextID = line[3]
        dataOfVCHI += "Call Context ID: " + callContextID

    if ((3 + callContextIDCount) < length) and (line[3 + callContextIDCount] !=
                                                ''):
        logObj.modeSystem = MeasureSysConverter(
            int(line[3 + callContextIDCount]))

    dataOfVCHI += ";Measured System: " + logObj.modeSystem
Example #21
0
def ParseRLCBLER(line, logObj):
    length = len(line)
    if 2 < length:
        contextID = 0
        NumberOfContextID = 0
        if line[2] != '':
            NumberOfContextID = int(line[2])
            if NumberOfContextID != 0:
                if (3 < length) and (line[3] != ''):
                    contextID = int(line[3])
        if ((3 + NumberOfContextID) < length) and (line[3 + NumberOfContextID]
                                                   != ''):
            logObj.modeSystem = MeasureSysConverter(
                int(line[3 + NumberOfContextID]))
        if ((4 + NumberOfContextID) < length) and (line[4 + NumberOfContextID]
                                                   != ''):
            logObj.BLER = float(line[4 + NumberOfContextID])
        return 1
Example #22
0
def ParseTXPC (line, logObj):
    length = len(line)
    if 2 < length:
        NumberOfContextID = 0
        if line[2] != '':
            NumberOfContextID = int(line[2])
        logObj.event = "TX power control"
        logObj.msgType = ' '
        logObj.time = line[1]
        measureSystems=''
        if ((3 + NumberOfContextID) < length) and (line[3+NumberOfContextID] != '') :
            measureSystems = int(line[3 + NumberOfContextID])
            logObj.modeSystem = MeasureSysConverter(measureSystems)
            
        if logObj.modeSystem == 'GSM':
            if ((4 + NumberOfContextID) < length) and (line[4+NumberOfContextID] != '') :
                logObj.TXPower = float(line[4+NumberOfContextID]) #add
            if ((5 + NumberOfContextID) < length) and (line[5+NumberOfContextID] != '') :
                if int((line[5+NumberOfContextID])) == 0:
                    lobObj.TXPwrCtrlAlgo = "Power control algorithm 0"#add
                else:
                    lobObj.TXPwrCtrlAlgo = "Power control algorithm 1"#add
            if ((6 + NumberOfContextID) < length) and (line[6+NumberOfContextID] != '') :
                logObj.TXPwrCtrlStep = float(line[6+NumberOfContextID]) #add
            if ((7 + NumberOfContextID) < length) and (line[7+NumberOfContextID] != '') :
                if int((line[7+NumberOfContextID])) == 0:
                    lobObj.CompressMode = "No Compressed mode"#add
                else:
                    lobObj.CompressMode = "Compressed mode"#add
            if ((8 + NumberOfContextID) < length) and (line[8+NumberOfContextID] != '') :
                logObj.ULPwrUpsNum = int(line[8+NumberOfContextID]) #add
            if ((9 + NumberOfContextID) < length) and (line[9+NumberOfContextID] != '') :
                logObj.ULPwrDownsNum = int(line[9+NumberOfContextID]) #add
            if ((10 + NumberOfContextID) < length) and (line[10+NumberOfContextID] != '') :
                logObj.ULPwrUpPercent = float(line[10+NumberOfContextID]) #add
        elif logObj.modeSystem == 'LTE FDD' or logObj.modeSystem == 'LTE TDD':
            if ((4 + NumberOfContextID) < length) and (line[4+NumberOfContextID] != '') :
                logObj.PUSCHTXPower = float(line[4+NumberOfContextID]) #add
                
        return 1
    else:
        return 0
Example #23
0
def ParsePBA (line, logObj,dictionary):
    length = len(line)
    if 2 < length:
        dataOfPBA = ''
        PBAContextID = 0
        NumberOfContextID = 0
        if line[2] != '':
            NumberOfContextID = int(line[2])
            if NumberOfContextID != 0:
                if(3 < length) and (line[3] != '') :
                    PBAContextID = int(line[3])
                    
        if PBAContextID in dictionary:
            packet = dictionary[PBAContextID]
        else:
            packet = PacketBearerInfo()
            dictionary[PBAContextID] = packet
            packet = dictionary[PBAContextID]
            
        packet.ConnectionAttempt = line[1]
        logObj.event = 'Packet Bearer Allocation Attempt'
        logObj.msgType = 'Attempt'       
        dataOfPBA = "PB Context ID: " + str(PBAContextID)
        
        if((3 + NumberOfContextID) < length) and (line[3 + NumberOfContextID] != '') : 
            measureSystem = MeasureSysConverter (int(line[3 + NumberOfContextID]))           
        pbType = 'Unknown'
        if measureSystem == 'LTE FDD' or measureSystem == 'LTE TDD':
            if((4 + NumberOfContextID) < length) and (line[4 + NumberOfContextID] != '') : 
                pbType = int(line[4 + NumberOfContextID])
                
                if pbType == 1:
                    pbType = "Default"
                elif pbType == 2:
                    pbType = "Dedicated"
        dataOfPBA += ";PB Type: "+pbType
        logObj.modeSystem = measureSystem
        logObj.eventInfo = dataOfPBA             
        return 1
Example #24
0
def ParseGAC(line, logObj, dictionary):
    length = len(line)
    if 2 < length:
        contextID = 0
        dataOfGAC = ''
        if line[2] != '':

            NumberOfContextID = int(line[2])
            if NumberOfContextID != 0:
                if (3 < length) and (line[3] != '') and NumberOfContextID == 1:
                    contextID = int(line[3])

        if contextID in dictionary:
            attachment = dictionary[contextID]
        else:
            attachment = AttachmentEventInfo()
            dictionary[contextID] = attachment
            attachment = dictionary[contextID]

        setupTime = 0
        attachment.Established = line[1]
        if attachment.Setup != '' and attachment.Established != '':
            tdelta = datetime.strptime(
                attachment.Setup.split('.', 1)[0],
                '%H:%M:%S') - datetime.strptime(
                    attachment.Established.split('.', 1)[0], '%H:%M:%S')
            setupTime = float(tdelta.seconds) * 1000  #MilliSeconds

        logObj.event = "Attach Conneted"
        logObj.msgType = "Connect"
        dataOfGAC += "Attach Context ID: " + str(contextID)
        measureSystem = MeasureSysConverter(int(line[3 + NumberOfContextID]))
        dataOfGAC += ";Measured System: " + measureSystem

        if setupTime > 0:
            dataOfGAC += ";Setup time: " + setupTime + "ms"
        logObj.eventInfo = dataOfGAC
        logObj.modeSystem = measureSystem
        return 1
Example #25
0
def ParseTAD (line, logObj):
    length = len(line)
    if 2 < length:
        NumberOfContextID = 0
        if line[2] != '':
            NumberOfContextID = int(line[2])
        logObj.event = "Timing Advance"
        logObj.msgType = ' '
        logObj.time = line[1]
        measureSystems=''
        
        if ((3 + NumberOfContextID) < length) and (line[3+NumberOfContextID] != '') :
            measureSystems = int(line[3 + NumberOfContextID])
            logObj.modeSystem = MeasureSysConverter(measureSystems)
            
        if logObj.modeSystem == 'GSM' or logObj.modeSystem == 'UMTS TD-SCDMA' or logObj.modeSystem == 'LTE FDD' or logObj.modeSystem == 'LTE TDD':
            if ((4 + NumberOfContextID) < length) and (line[4+NumberOfContextID] != '') :
                logObj.TA = int(line[4+NumberOfContextID]) #add

        return 1
    else:
        return 0
Example #26
0
def ParseFER(line, logObj):
    length = len(line)
    if 2 < length:
        NumberOfContextID = 0
        if line[2] != '':
            NumberOfContextID = int(line[2])
        logObj.event = "Frame Error Rate"
        logObj.msgType = ' '
        logObj.time = line[1]
        measureSystems = ''

        if ((3 + NumberOfContextID) < length) and (line[3 + NumberOfContextID]
                                                   != ''):
            measureSystems = int(line[3 + NumberOfContextID])
            logObj.modeSystem = MeasureSysConverter(measureSystems)

        if logObj.modeSystem == 'GSM':
            if ((4 + NumberOfContextID) <
                    length) and (line[4 + NumberOfContextID] != ''):
                logObj.FERFull = float(line[4 + NumberOfContextID])  #add
            if ((5 + NumberOfContextID) <
                    length) and (line[5 + NumberOfContextID] != ''):
                logObj.FERSub = float(line[5 + NumberOfContextID])  #add
            if ((6 + NumberOfContextID) <
                    length) and (line[6 + NumberOfContextID] != ''):
                logObj.FERTCH = float(line[6 + NumberOfContextID])  #add
            if ((7 + NumberOfContextID) <
                    length) and (line[7 + NumberOfContextID] != ''):
                logObj.DTXDL = int(line[7 + NumberOfContextID])  #add
        elif logObj.modeSystem == 'UMTS FDD':
            if ((4 + NumberOfContextID) <
                    length) and (line[4 + NumberOfContextID] != ''):
                logObj.FER = float(line[4 + NumberOfContextID])  #add

        return 1
    else:
        return 0
Example #27
0
def ParseLLCRATE(line, logObj):
    length = len(line)
    if 2 < length:
        contextID = 0
        if line[2] != '':

            NumberOfContextID = int(line[2])
            if NumberOfContextID != 0:
                if (3 < length) and (line[3] != ''):
                    contextID = int(line[3])
        if ((3 + NumberOfContextID) < length) and (line[3 + NumberOfContextID]
                                                   != ''):
            logObj.modeSystem = MeasureSysConverter(line[3 +
                                                         NumberOfContextID])

        if logObj.modeSystem == 'GSM':
            if ((4 + NumberOfContextID) <
                    length) and (line[4 + NumberOfContextID] != ''):
                logObj.LLCRateUL = int(line[4 + NumberOfContextID])
            if ((5 + NumberOfContextID) <
                    length) and (line[5 + NumberOfContextID] != ''):
                logObj.LLCRateDL = int(line[5 + NumberOfContextID])

        return 1
Example #28
0
def ParseRXQ (line, logObj):
    length = len(line)
    if 2 < length:
        NumberOfContextID = 0
        if line[2] != '':
            NumberOfContextID = int(line[2])
        logObj.event = "RX Quality"
        logObj.msgType = ' '
        logObj.time = line[1]
        measureSystems=''
        
        if ((3 + NumberOfContextID) < length) and (line[3+NumberOfContextID] != '') :
            measureSystems = int(line[3 + NumberOfContextID])
            logObj.modeSystem = MeasureSysConverter(measureSystems)
            
        if logObj.modeSystem == 'GSM':
            if ((4 + NumberOfContextID) < length) and (line[4+NumberOfContextID] != '') :
                logObj.rxQualityFull = float(line[4+NumberOfContextID]) #add
            if ((5 + NumberOfContextID) < length) and (line[5+NumberOfContextID] != '') :
                logObj.rxQualitySub = float(line[5+NumberOfContextID]) #add

        return 1
    else:
        return 0
Example #29
0
def ParseRRF(line, logObj, dictionary):
    length = len(line)
    if 2 < length:
        dataOfRRF = ''
        RRFContextID = 0
        NumberOfContextID = 0
        if line[2] != '':
            NumberOfContextID = int(line[2])
            if NumberOfContextID != 0:
                if (3 < length) and (line[3] != ''):
                    RRFContextID = int(line[3])
                    RRFContextIdValue = RRFContextID

        if RRFContextID in dictionary:
            RRFInfo = dictionary[RRFContextID]
        else:
            RRFInfo = RadioResourceInfo()
            dictionary[RRFContextID] = RRFInfo
            RRFInfo = dictionary[RRFContextID]

        logObj.event = "Radio Resource Connection Failure"
        RRFInfo.ConnectionFailure = line[1]
        dictionary[RRFContextID] = RRFInfo
        logObj.msgType = "Failure"
        dataOfRRF = "RRF Context ID: " + str(RRFContextID)

        if RRFInfo.ConnectionFailure != '' and RRFInfo.ConnectionAttempt != '':
            tdelta = datetime.strptime(
                RRFInfo.ConnectionFailure.split('.', 1)[0],
                '%H:%M:%S') - datetime.strptime(
                    RRFInfo.ConnectionAttempt.split('.', 1)[0], '%H:%M:%S')
            setupTime = float(tdelta.seconds) * 1000  #MilliSeconds
            dataOfRRF += ";Failure Time: " + str(setupTime)
        if ((3 + NumberOfContextID) < length) and (line[3 + NumberOfContextID]
                                                   != ''):
            measureSystem = MeasureSysConverter(line[3 + NumberOfContextID])
        cause = "Unknown"
        if measureSystem == 'UMTS FDD' or measureSystem == 'UMTS TDSCDMA':
            if ((4 + NumberOfContextID) <
                    length) and (line[4 + NumberOfContextID] != ''):
                dataOfRRF += "RRC Requests before connection: " + line[
                    4 + NumberOfContextID]
            if ((5 + NumberOfContextID) <
                    length) and (line[5 + NumberOfContextID] != ''):
                cause = line[5 + NumberOfContextID]
                if cause == '1':
                    dataOfRRF += "Rejection Status: Network Reject"
            if ((6 + NumberOfContextID) <
                    length) and (line[6 + NumberOfContextID] != ''):
                cause = line[6 + NumberOfContextID]
                if cause == '1':
                    dataOfRRF += "Rejection Cause: Congestion"
                elif cause == '2':
                    dataOfRRF += "Rejection Cause: Unspecified"

        elif measureSystem == 'LTE FDD' or measureSystem == 'LTE TDD':
            if ((4 + NumberOfContextID) <
                    length) and (line[4 + NumberOfContextID] != ''):
                cause = line[4 + NumberOfContextID]
                if cause == '1':
                    dataOfRRF += "Rejection Status: Network Reject"

        dataOfRRF += ';RRF Requests before connection: ' + cause
        logObj.eventInfo = dataOfRRF
        logObj.modeSystem = measureSystem

        return 1
Example #30
0
def ParsePILOTSCAN(line, listOfLogObj, PREVIOUS_LAT, PREVIOUS_LONG,
                   PREVIOUS_MCC, PREVIOUS_MNC):
    length = len(line)
    if 2 < length:
        NumberOfContextID = 0
        if line[2] != '':
            NumberOfContextID = int(line[2])
        logObj = LogDT()
        logObj.lat = PREVIOUS_LAT
        logObj.longg = PREVIOUS_LONG
        logObj.mcc = PREVIOUS_MCC
        logObj.mnc = PREVIOUS_MNC
        logObj.event = "Pilot Scanning results"
        logObj.msgType = ''
        logObj.time = line[1]
        numberOfHeaderParameters = 0
        channelType = -1
        numberOfCells = 0
        parameterPerCell = 0
        if ((3 + NumberOfContextID) < length) and (line[3 + NumberOfContextID]
                                                   != ''):
            logObj.modeSystem = MeasureSysConverter(
                int(line[3 + NumberOfContextID]))
        if logObj.modeSystem == "UMTS FDD":
            if ((4 + NumberOfContextID) <
                    length) and (line[4 + NumberOfContextID] != ''):
                numberOfHeaderParameters = int(line[4 + NumberOfContextID])
            if numberOfHeaderParameters > 0:
                if ((5 + NumberOfContextID) <
                        length) and (line[5 + NumberOfContextID] != ''):
                    logObj.ChannelNum = int(line[5 + NumberOfContextID])  #add
            if numberOfHeaderParameters > 1:
                if ((6 + NumberOfContextID) <
                        length) and (line[6 + NumberOfContextID] != ''):
                    channelType = int(line[6 + NumberOfContextID])  #add
                    if channelType == 1:
                        logObj.channelType = 'CPICH'
                    elif channelType == 2:
                        logObj.channelType = 'P SCH'
                    elif channelType == 3:
                        logObj.channelType = 'S SCH'
                    elif channelType == 4:
                        logObj.channelType = 'CPICH (TX diversity)'
                    elif channelType == 5:
                        logObj.channelType = 'PPCH'
            if numberOfHeaderParameters > 2:
                if ((7 + NumberOfContextID) <
                        length) and (line[7 + NumberOfContextID] != ''):
                    logObj.RSSI = float(line[7 + NumberOfContextID])  #add
            if numberOfHeaderParameters > 3:
                if ((8 + NumberOfContextID) <
                        length) and (line[8 + NumberOfContextID] != ''):
                    logObj.Band = parseCellMeasuresParseBand(
                        int(line[8 + NumberOfContextID]))  #add

            if ((5 + NumberOfContextID + numberOfHeaderParameters) <
                    length) and (line[5 + NumberOfContextID +
                                      numberOfHeaderParameters] != ''):
                numberOfCells = int(line[5 + NumberOfContextID +
                                         numberOfHeaderParameters])
            if ((6 + NumberOfContextID + numberOfHeaderParameters) <
                    length) and (line[6 + NumberOfContextID +
                                      numberOfHeaderParameters] != ''):
                parameterPerCell = int(line[6 + NumberOfContextID +
                                            numberOfHeaderParameters])
            if numberOfCells == 0:
                listOfLogObj.append(logObj)

            for i in range(0, numberOfCells):
                currentObj = LogDT()
                currentObj = copy.deepcopy(logObj)
                if (
                    (7 + NumberOfContextID + numberOfHeaderParameters +
                     (i * parameterPerCell) + 0) < length
                ) and (line[7 + NumberOfContextID + numberOfHeaderParameters +
                            (i * parameterPerCell) + 0] != ''):
                    currentObj.scramblingCode = float(
                        line[7 + NumberOfContextID + numberOfHeaderParameters +
                             (i * parameterPerCell) + 0])
                if (
                    (7 + NumberOfContextID + numberOfHeaderParameters +
                     (i * parameterPerCell) + 1) < length
                ) and (line[7 + NumberOfContextID + numberOfHeaderParameters +
                            (i * parameterPerCell) + 1] != ''):
                    currentObj.ServingCPICHEcNo = float(
                        line[7 + NumberOfContextID + numberOfHeaderParameters +
                             (i * parameterPerCell) + 1])
                if (
                    (7 + NumberOfContextID + numberOfHeaderParameters +
                     (i * parameterPerCell) + 2) < length
                ) and (line[7 + NumberOfContextID + numberOfHeaderParameters +
                            (i * parameterPerCell) + 2] != ''):
                    currentObj.ServingCPICHRSCP = float(
                        line[7 + NumberOfContextID + numberOfHeaderParameters +
                             (i * parameterPerCell) + 2])
                if (
                    (7 + NumberOfContextID + numberOfHeaderParameters +
                     (i * parameterPerCell) + 3) < length
                ) and (line[7 + NumberOfContextID + numberOfHeaderParameters +
                            (i * parameterPerCell) + 3] != ''):
                    currentObj.SIR = float(
                        line[7 + NumberOfContextID + numberOfHeaderParameters +
                             (i * parameterPerCell) + 3])

                listOfLogObj.append(currentObj)
        return 1

    else:
        return 0