def ParsePLAIUV27(line, listOfLogObj, PREVIOUS_LAT, PREVIOUS_LONG, PREVIOUS_MCC, PREVIOUS_MNC): dataOfCELLMEAS = "" length = len(line) if 2 < length: NumberOfContextID = 0 if line[2] != '': NumberOfContextID = int(line[2]) contextID = 'Unknown' numberOfHeaderParamters = 0 numberOfCells = 0 numberOfParametersPerCell = 0 measureSystem = 'Unknown' if (3 < length) and (line[3] != ''): contextID = line[3] if ((3 + NumberOfContextID) < length) and (line[3 + NumberOfContextID] != ''): measureSystem = line[3 + NumberOfContextID] measureSystem = MeasureSysConverter(int(measureSystem)) if measureSystem == '"UMTS FDD': if ((4 + NumberOfContextID) < length) and (line[4 + NumberOfContextID] != ''): numberOfHeaderParamters = int(line[4 + NumberOfContextID]) currentLog = LogDT() dataOfCELLMEAS = "Context ID:" + contextID currentLog.eventInfo = dataOfCELLMEAS currentLog.modeSystem = measureSystem currentLog.event = 'Packet link adaptation info for uplink' currentLog.lat = PREVIOUS_LAT currentLog.longg = PREVIOUS_LONG currentLog.mcc = PREVIOUS_MCC currentLog.mnc = PREVIOUS_MNC for header in range(1, numberOfHeaderParamters): if ((4 + NumberOfContextID + header) < length) and ( line[4 + NumberOfContextID + header] != ''): celltype = line[4 + NumberOfContextID + header] if header == 2: #E-DPDCH Rate currentLog.EDPDCHRate = int( line[4 + NumberOfContextID + header]) if header == 8: if celltype == '1': currentLog.cellType = "Primary" elif celltype == '2': currentLog.cellType = "Secondary" numberOfPLASets = 0 if ((5 + NumberOfContextID + numberOfHeaderParamters) < length) and (line[5 + NumberOfContextID + numberOfHeaderParamters] != ''): numberOfPLASets = int(line[5 + NumberOfContextID + numberOfHeaderParamters]) parametersPerPLASet = 0 if ((6 + NumberOfContextID + numberOfHeaderParamters) < length) and (line[6 + NumberOfContextID + numberOfHeaderParamters] != ''): numberOfPLASets = int(line[6 + NumberOfContextID + numberOfHeaderParamters]) original = currentLog for channel in range(0, numberOfPLASets): currentLog = LogDT() currentLog = copy.deepcopy(original) for parameter in range(0, parametersPerPLASet): if ((NumberOfContextID + 7 + numberOfHeaderParamters + parameter) < length) and ( line[NumberOfContextID + 7 + numberOfHeaderParamters + parameter]): value = int( line[NumberOfContextID + 7 + numberOfHeaderParamters + parameter]) if parameter == 1: #Modulation currentLog.Modulation = parseModulation( value, 'HSUPA') elif parameter == 4: #SFs if value == 1: currentLog.SFs = "SF 256" elif value == 2: currentLog.SFs = "SF 128" elif value == 3: currentLog.SFs = "SF 64" elif value == 4: currentLog.SFs = "SF 32" elif value == 5: currentLog.SFs = "SF 16" elif value == 6: currentLog.SFs = "SF 8" elif value == 7: currentLog.SFs = "SF 4" elif value == 8: currentLog.SFs = "2 * SF 4" elif value == 9: currentLog.SFs = "2 * SF 2" elif value == 10: currentLog.SFs = "2 * SF 4 and 2 * SF 2" elif parameter == 5: #retransmission rate per LA currentLog.ReTransmissionPerLA = float(value) listOfLogObj.append(currentLog) elif measureSystem == "LTE FDD" or measureSystem == "LTE TDD": currentLog = LogDT() dataOfCELLMEAS = "Context ID:" + contextID currentLog.eventInfo = dataOfCELLMEAS currentLog.modeSystem = measureSystem currentLog.event = 'Packet link adaptation info for uplink' currentLog.lat = PREVIOUS_LAT currentLog.longg = PREVIOUS_LONG currentLog.mcc = PREVIOUS_MCC currentLog.mnc = PREVIOUS_MNC original = currentLog numberOfHeaderParamters = 0 if ((4 + NumberOfContextID) < length) and (line[4 + NumberOfContextID] != ''): numberOfHeaderParamters = int(line[4 + NumberOfContextID]) numberOfPLASets = 0 if ((5 + NumberOfContextID + numberOfHeaderParamters) < length) and (line[5 + NumberOfContextID + numberOfHeaderParamters] != ''): numberOfPLASets = int(line[5 + NumberOfContextID + numberOfHeaderParamters]) if ((6 + NumberOfContextID + numberOfHeaderParamters) < length) and (line[6 + NumberOfContextID + numberOfHeaderParamters] != ''): parametersPerPLASet = int(line[6 + NumberOfContextID + numberOfHeaderParamters]) for channel in range(0, numberOfPLASets): currentLog = LogDT() currentLog = copy.deepcopy(original) for parameter in range(0, parametersPerPLASet): if ((NumberOfContextID + 7 + numberOfHeaderParamters + parameter) < length) and ( line[NumberOfContextID + 7 + numberOfHeaderParamters + parameter]): value = line[NumberOfContextID + 7 + numberOfHeaderParamters + parameter] if parameter == 2: currentLog.Modulation = parseModulation( value, 'PUSCH') elif parameter == 3: #MCS0 currentLog.MCS0 = int(value) listOfLogObj.append(currentLog) return 1 else: dataOfCELLMEAS = "No of context id not found" currentLog.eventInfo = dataOfCELLMEAS listOfLogObj.append(currentLog) return 1
def ParseRABA(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]) dataOfRAA = '' numberOfRABRBs = 0 logObj = LogDT() logObj.lat = PREVIOUS_LAT logObj.longg = PREVIOUS_LONG logObj.mcc = PREVIOUS_MCC logObj.mnc = PREVIOUS_MNC logObj.event = "RAB Allocation Attempt" logObj.msgType = 'Attempt' logObj.time = line[1] rabContextID = 0 rabType = 0 numberOfHeaderParam = 0 if (3 < length) and (line[3] != ''): rabContextID = int(line[3]) dataOfRAA = 'Context ID: ' + str(rabContextID) + ';' if ((3 + NumberOfContextID) < length) and (line[3 + NumberOfContextID] != ''): logObj.modeSystem = MeasureSysConverter( int(line[3 + NumberOfContextID])) dataOfRAA += ('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' dataOfRAA += 'RAB Type: CS;' if rabType == 2: logObj.rabType = 'PS' dataOfRAA += '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] != ''): numberOfRABRBs = int(line[5 + NumberOfContextID + numberOfHeaderParam]) logObj.eventInfo = dataOfRAA if numberOfRABRBs == 0: listOfLogObj.append(logObj) for i in range(0, numberOfRABRBs): currentObj = LogDT() currentObj = copy.deepcopy(logObj) if ((6 + NumberOfContextID + numberOfHeaderParam + i) < length) and (line[6 + NumberOfContextID + numberOfHeaderParam + i] != ''): currentObj.RABRBID = int(line[6 + NumberOfContextID + numberOfHeaderParam + i]) listOfLogObj.append(currentObj) return 1 else: return 0
def ParseTUS(line, listOfLogObj, PREVIOUS_LAT, PREVIOUS_LONG, PREVIOUS_MCC, PREVIOUS_MNC): dataOfTUS = "" length = len(line) if 2 < length: NumberOfContextID = 0 if line[2] != '': NumberOfContextID = int(line[2]) TUSContextID = 0 numberOfTAC = 0 parameterPerTAC = 0 logObj = LogDT() logObj.lat = PREVIOUS_LAT logObj.longg = PREVIOUS_LONG logObj.mcc = PREVIOUS_MCC logObj.mnc = PREVIOUS_MNC logObj.event = "Tracking Area Update Succcesful" logObj.msgType = 'Succces' logObj.time = line[1] if (3 < length) and (line[3] != ''): TUSContextID = line[3] dataOfTUS = "TAU Context ID: " + TUSContextID + ';' if ((3 + NumberOfContextID) < length) and (line[3 + NumberOfContextID] != ''): logObj.modeSystem = MeasureSysConverter( int(line[3 + NumberOfContextID])) dataOfTUS += ('Measure System: ' + logObj.modeSystem) + ';' if ((4 + NumberOfContextID) < length) and (line[4 + NumberOfContextID] != ''): numberOfTAC = int(line[4 + NumberOfContextID]) if ((5 + NumberOfContextID) < length) and (line[5 + NumberOfContextID] != ''): parameterPerTAC = int(line[5 + NumberOfContextID]) for c in range(0, numberOfTAC): if c > 0: dataOfTUS += (", [") else: dataOfTUS += ("Parameters: [") currentObj = LogDT() currentObj = copy.deepcopy(logObj) if ((6 + NumberOfContextID + (c * parameterPerTAC) + 0) < length) and (line[6 + NumberOfContextID + (c * parameterPerTAC) + 0] != ''): currentObj.mcc = int(line[6 + NumberOfContextID + (c * parameterPerTAC) + 0]) dataOfTUS += ("MCC: " + str(currentObj.mcc)) if ((6 + NumberOfContextID + (c * parameterPerTAC) + 1) < length) and (line[6 + NumberOfContextID + (c * parameterPerTAC) + 1] != ''): currentObj.mnc = int(line[6 + NumberOfContextID + (c * parameterPerTAC) + 1]) dataOfTUS += ("MNC: " + str(currentObj.mnc)) if ((6 + NumberOfContextID + (c * parameterPerTAC) + 2) < length) and (line[6 + NumberOfContextID + (c * parameterPerTAC) + 2] != ''): currentObj.TAC = int(line[6 + NumberOfContextID + (c * parameterPerTAC) + 2]) #add dataOfTUS += ("TAC: " + str(currentObj.TAC)) dataOfTUS += (']') if c < (numberOfTAC - 1): listOfLogObj.append(currentObj) else: currentObj.eventInfo = dataOfTUS listOfLogObj.append(currentObj) return 1 else: dataOfTUS = "No of context id not found" return 0