Advertisement
Guest User

Untitled

a guest
May 21st, 2019
94
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 5.71 KB | None | 0 0
  1. for ff in glob('%s/*.json'%folder)[:]:
  2.         try:
  3.             events = json.load(open(ff))
  4.         except JSONDecodeError:
  5.             undecodable_jsons.append(ff)
  6.         for event in events[1:]:
  7.             h = event['CHRHEADER']
  8.             eventid = h['EventId']
  9.             callid  = h['CallId']
  10.             serv_cellid = h['eNodeBId']*256+h['CellId']
  11.             timestamp = calTimestamp(h)
  12.             if eventid == 4097: # PUBLIC_INFORMATION
  13.                 sig = event_signatures[eventid]
  14.                 b = event[sig['name']]
  15.                 mtmsi = b[sig['id']]
  16.                 mtmsi_map[callid] = mtmsi
  17.             if eventid == 4866: # PERIOD_INTRA_FREQ_MR_MDT
  18.                 sig = event_signatures[eventid]
  19.                 b = event[sig['name']]
  20.                 n = b[sig['n']]
  21.                 if not n:
  22.                     continue
  23.                 if not b['Location_Info_Present']:
  24.                     continue
  25.                 if not b['ShapeType'] == 2:
  26.                     continue
  27.                 shape = sig['shape']
  28.                 usr_loc_dict = b[shape]
  29.                
  30.                 # %%%%
  31.                 lat = usr_loc_dict['Degrees_Latitude']
  32.                 lon = usr_loc_dict['Degrees_Longitude']
  33.                 # %%%%
  34.                 nCell_arr = b[sig['array']%n]
  35.                 nCell_arr_out = []
  36.                 serv_EARFCN = earfcn_map[serv_cellid]
  37.                 for i in range(n):
  38.                     pci = nCell_arr[i][sig['pci']]
  39.                     # since intra nbr_EARFCN==serv_EARFCN
  40.                     triad = (serv_cellid,pci,serv_EARFCN)
  41.                     try:
  42.                         nbr_cell_id = pci_map[(triad)]
  43.                     except KeyError:
  44.                         unknown_pci_keys.add(triad)
  45.                         continue
  46.                     else:
  47.                         nCell_arr[i]['EARFCN'] = serv_EARFCN
  48.                         nCell_arr[i]['Current_CI'] = nbr_cell_id
  49.                         nCell_arr_out.append(nCell_arr[i])
  50.                 serv_cell_rsrp = b['Serving_Cell_RSRP']
  51.                 serv_cell_rsrq = b['Serving_Cell_RSRQ']
  52.                 if nCell_arr_out:
  53.                     power_map[callid][serv_cellid][timestamp] = \
  54.                     [serv_cell_rsrp,serv_cell_rsrq,\
  55.                     nCell_arr_out,usr_loc_dict,serv_EARFCN]
  56.                     stats['Resolved_INTRA_MDT']+=1
  57.             if eventid == 4867: # PERIOD_INTER_FREQ_MR_MDT
  58.                 sig = event_signatures[eventid]
  59.                 b = event[sig['name']]
  60.                 n = b[sig['n']]
  61.                 if not n:
  62.                     continue
  63.                 if not b['Location_Info_Present']:
  64.                     continue
  65.                 if not b['ShapeType'] == 2:
  66.                     continue
  67.                 shape = sig['shape']
  68.                 usr_loc_dict = b[shape]
  69.                 nCell_arr = b[sig['array']%n]
  70.                 nCell_arr_out = []
  71.                 serv_EARFCN = earfcn_map[serv_cellid]
  72.                 for i in range(n):
  73.                     pci = nCell_arr[i][sig['pci']]
  74.                     nbr_EARFCN = nCell_arr[i][sig['arfcn']]
  75.                     EUTRAN_cell_id = nCell_arr[i][sig['ci']]
  76.                     if EUTRAN_cell_id == 4294967295:
  77.                         continue # invalid cell
  78.                     triad = (serv_cellid,pci,nbr_EARFCN)
  79.                     if eutran: # don't use pci-map
  80.                         nbr_cell_id = EUTRAN_cell_id
  81.                         nCell_arr[i]['Current_CI'] = nbr_cell_id
  82.                         nCell_arr[i]['EARFCN'] = nbr_EARFCN
  83.                         nCell_arr_out.append(nCell_arr[i])
  84.                     else:
  85.                         try:
  86.                             nbr_cell_id = pci_map[(triad)]
  87.                         except KeyError:
  88.                             unknown_pci_keys.add(triad)
  89.                             continue
  90.                         else:
  91.                             if EUTRAN_cell_id!=nbr_cell_id:
  92.                                 if debug:
  93.                                     print('Wrong Neighbouring Cell Id?')
  94.                                     print('\tEUTRAN_Cell_ID:%i'%EUTRAN_cell_id)
  95.                                     print('\tResolved From Map:%i'%nbr_cell_id)
  96.                             else:
  97.                                 nCell_arr[i]['EARFCN'] = nbr_EARFCN
  98.                                 nCell_arr[i]['Current_CI'] = nbr_cell_id
  99.                                 nCell_arr_out.append(nCell_arr[i])
  100.                 serv_cell_rsrp = b['Serving_Cell_RSRP']
  101.                 serv_cell_rsrq = b['Serving_Cell_RSRQ']
  102.                 if nCell_arr_out:
  103.                     if (callid,timestamp) in power_map:
  104.                         if debug:
  105.                             print('Same CallId-Timstamp')
  106.                             print('\t',(callid,timestamp))
  107.                             print('\t',power_map[(callid,timestamp)])
  108.                             print('\t',[serv_cellid,serv_cell_rsrp,serv_cell_rsrq,\
  109.                                    nCell_arr_out,usr_loc_dict])
  110.                     power_map[callid][serv_cellid][timestamp] = \
  111.                     [serv_cell_rsrp,serv_cell_rsrq,\
  112.                     nCell_arr_out,usr_loc_dict,serv_EARFCN]
  113.                     stats['Resolved_INTER_MDT']+=1
  114.             if eventid == 4626: # PERIOD_PRIVATE_UE_MEASUREMENT
  115.                 sig = event_signatures[eventid]
  116.                 b = event[sig['name']]
  117.                 ta = b[sig['ta']]
  118.                 delay_map[callid][serv_cellid][timestamp] = ta
  119.             if eventid == 4097: # PUBLIC_INFORMATION
  120.                 sig = event_signatures[eventid]
  121.                 b = event[sig['name']]
  122.                 mtmsi_map[callid] = b[sig['id']]
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement