File size: 5,374 Bytes
123d5ff
 
 
cabf258
123d5ff
fcdd232
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
123d5ff
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
464445a
123d5ff
 
 
 
 
464445a
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
123d5ff
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
464445a
123d5ff
 
464445a
 
 
 
 
 
 
123d5ff
 
 
 
 
464445a
 
 
123d5ff
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
import pandas as pd
import streamlit as st

st.title("Dump Core Parsing")

st.write(
    """This app allows you to parse core dump files int TXT format, 
    extract the Global Cell ID, LA Cell Name, WCDMA Service Area Number, and WCDMA Service Area Name.
    Then convert LAC and Cell ID to Decimal to be easier to check.
                      """
)

dump_core_sample_file = "samples/dump_core.txt"

# Create a download button
st.download_button(
    label="Download Dump core sample File",
    data=open(dump_core_sample_file, "rb").read(),
    file_name="dump_core.txt",
    mime="text/plain",
)

# Initialize a list to hold the extracted data
data_global_cell_id = []
data_la_cell_name = []
data_wcdma_service_area_number = []
data_wcdma_service_area_name = []


# Create a Streamlit file uploader
uploaded_files = st.file_uploader(
    "Upload Core Creation dump files", type=["txt"], accept_multiple_files=True
)


# Process each uploaded file
if uploaded_files:

    all_data_global_cell_id = []
    all_data_la_cell_name = []
    all_data_wcdma_service_area_number = []
    all_data_wcdma_service_area_name = []

    for file in uploaded_files:
        # Read the content of the file

        content = file.read().decode("utf-8").splitlines()
        data_global_cell_id = []
        data_la_cell_name = []
        data_wcdma_service_area_number = []
        data_wcdma_service_area_name = []

        # Loop through each line in the file
        for line in content:
            if "Global cell ID" in line:
                data_global_cell_id.append([line.split("=")[1].strip()])
            elif "LA cell name" in line:
                data_la_cell_name.append([line.split("=")[1].strip()])
            elif "3G service area number" in line:
                data_wcdma_service_area_number.append([line.split("=")[1].strip()])
            elif "3G service area name" in line:
                data_wcdma_service_area_name.append([line.split("=")[1].strip()])

        # Append the extracted data for the current file to the overall lists
        all_data_global_cell_id.extend(data_global_cell_id)
        all_data_la_cell_name.extend(data_la_cell_name)
        all_data_wcdma_service_area_number.extend(data_wcdma_service_area_number)
        all_data_wcdma_service_area_name.extend(data_wcdma_service_area_name)

    ################################################### 2G CORE DUMP DATA ###################################################
    # Create a DataFrame from the extracted data
    df_global_cell_id = pd.DataFrame(
        all_data_global_cell_id, columns=["Global cell ID"]
    )
    df_la_cell_name = pd.DataFrame(all_data_la_cell_name, columns=["LA cell name"])

    # add index column df_global_cell_id and df_la_cell_name  and dfa_wcdma_service_area_numbera and df_wcdma_service_area_name
    df_global_cell_id.insert(0, "index", range(0, len(df_global_cell_id)))
    df_la_cell_name.insert(0, "index", range(0, len(df_la_cell_name)))

    # Merge global_cell_id and la_cell_name on index
    df_la_cell_name = df_la_cell_name.merge(df_global_cell_id, on="index")

    # extract LAC and Cell ID from Global cell ID
    df_la_cell_name["LAC & Cell ID"] = df_la_cell_name["Global cell ID"].str[5:]

    # extract LAC and Cell ID from LAC_ID and SAC_ID
    df_la_cell_name["LAC"] = df_la_cell_name["LAC & Cell ID"].str[:4]
    df_la_cell_name["Cell ID"] = df_la_cell_name["LAC & Cell ID"].str[4:]

    # convert LAC to from HEXadecimal to DECimal
    df_la_cell_name["LAC_DECIMAL"] = df_la_cell_name["LAC"].apply(lambda x: int(x, 16))
    df_la_cell_name["Cell_ID_DECIMAL"] = df_la_cell_name["Cell ID"].apply(
        lambda x: int(x, 16)
    )
    df_la_cell_name = df_la_cell_name.reset_index(drop=True)

    ################################################### 3G CORE DUMP DATA ###################################################

    # WCDMA Service Area Number and Name
    df_wcdma_service_area_number = pd.DataFrame(
        all_data_wcdma_service_area_number, columns=["3G service area number"]
    )
    df_wcdma_service_area_name = pd.DataFrame(
        all_data_wcdma_service_area_name, columns=["3G service area name"]
    )

    df_wcdma_service_area_number.insert(
        0, "index", range(0, len(df_wcdma_service_area_number))
    )
    df_wcdma_service_area_name.insert(
        0, "index", range(0, len(df_wcdma_service_area_name))
    )
    df_wcdma_service_area_name = df_wcdma_service_area_name.merge(
        df_wcdma_service_area_number, on="index"
    )

    df_wcdma_service_area_name["LAC & SAC_ID"] = df_wcdma_service_area_name[
        "3G service area number"
    ].str[5:]

    df_wcdma_service_area_name["LAC"] = df_wcdma_service_area_name["LAC & SAC_ID"].str[
        :4
    ]
    df_wcdma_service_area_name["SAC_ID"] = df_wcdma_service_area_name[
        "LAC & SAC_ID"
    ].str[4:]

    # convert LAC to from HEXadecimal to DECimal
    df_wcdma_service_area_name["LAC_DECIMAL"] = df_wcdma_service_area_name["LAC"].apply(
        lambda x: int(x, 16)
    )
    # convert SAC_ID to from HEXadecimal to DECimal
    df_wcdma_service_area_name["SAC_ID_DECIMAL"] = df_wcdma_service_area_name[
        "SAC_ID"
    ].apply(lambda x: int(x, 16))

    # Display the DataFrame
    st.subheader("2G CORE DUMP DATA")
    st.write(df_la_cell_name)
    st.subheader("3G CORE DUMP DATA")
    st.write(df_wcdma_service_area_name)