carriersettings-extractor: Make APNs extract optional

Change-Id: Ic7701d660146a400b5e7ee4ee41a940f6d56c455
This commit is contained in:
Michael Bestas
2023-06-11 21:25:43 +03:00
committed by Michael Bestas
parent 9a7adaa7c7
commit cfd6e2d601

View File

@@ -37,7 +37,7 @@ def parse_args():
parser.add_argument('-i', '--input', help='CarrierSettings folder', parser.add_argument('-i', '--input', help='CarrierSettings folder',
required=True) required=True)
parser.add_argument('-a', '--apns', help='apns-conf.xml Output folder', parser.add_argument('-a', '--apns', help='apns-conf.xml Output folder',
required=True) required=False)
parser.add_argument('-v', '--vendor', help='vendor.xml Output folder', parser.add_argument('-v', '--vendor', help='vendor.xml Output folder',
required=True) required=True)
return parser.parse_args() return parser.parse_args()
@@ -316,52 +316,60 @@ def main():
self.add_attribute('user_visible') self.add_attribute('user_visible')
self.add_attribute('user_editable') self.add_attribute('user_editable')
with open(os.path.join(apns_folder, 'apns-conf.xml'), 'w', encoding='utf-8') as f: if apns_folder is not None:
f.write('<?xml version="1.0" encoding="UTF-8" standalone="yes"?>\n\n') with open(os.path.join(apns_folder, 'apns-conf.xml'), 'w', encoding='utf-8') as f:
f.write('<apns version="8">\n\n') f.write('<?xml version="1.0" encoding="UTF-8" standalone="yes"?>\n\n')
f.write('<apns version="8">\n\n')
for entry in carrier_list.entry: for entry in carrier_list.entry:
try: try:
setting = all_settings[entry.canonical_name] setting = all_settings[entry.canonical_name]
except KeyError: except KeyError:
print("Skipping " + entry.canonical_name, file=sys.stderr) print("Skipping " + entry.canonical_name, file=sys.stderr)
continue continue
for apn in setting.apns.apn: for apn in setting.apns.apn:
f.write(' <apn carrier={}\n'.format(quoteattr(apn.name))) f.write(' <apn carrier={}\n'.format(quoteattr(apn.name)))
apn_element = ApnElement(apn, entry.carrier_id[0]) apn_element = ApnElement(apn, entry.carrier_id[0])
for (key, value) in apn_element.attributes.items(): for (key, value) in apn_element.attributes.items():
f.write(' {}={}\n'.format(escape(key), quoteattr(value))) f.write(' {}={}\n'.format(escape(key), quoteattr(value)))
f.write(' />\n\n') f.write(' />\n\n')
carrier_config_element = ET.SubElement( f.write('</apns>\n')
carrier_config_root,
# Test XML parsing.
ET.parse(os.path.join(apns_folder, 'apns-conf.xml'))
for entry in carrier_list.entry:
try:
setting = all_settings[entry.canonical_name]
except KeyError:
print("Skipping " + entry.canonical_name, file=sys.stderr)
continue
carrier_config_element = ET.SubElement(
carrier_config_root,
'carrier_config',
)
mcc = entry.carrier_id[0].mcc_mnc[:3]
mnc = entry.carrier_id[0].mcc_mnc[3:]
if (mcc == '000' and mnc == '000'):
carrier_config_no_sim_element = ET.SubElement(
carrier_config_no_sim_root,
'carrier_config', 'carrier_config',
) )
mcc = entry.carrier_id[0].mcc_mnc[:3]
mnc = entry.carrier_id[0].mcc_mnc[3:]
if (mcc == '000' and mnc == '000'):
carrier_config_no_sim_element = ET.SubElement(
carrier_config_no_sim_root,
'carrier_config',
)
for config in setting.configs.config:
extract_gps_elements(carrier_config_no_sim_element, config)
else:
carrier_config_element.set('mcc', mcc)
carrier_config_element.set('mnc', mnc)
for field in ['spn', 'imsi', 'gid1']:
if entry.carrier_id[0].HasField(field):
carrier_config_element.set(
field,
getattr(entry.carrier_id[0], field),
)
for config in setting.configs.config: for config in setting.configs.config:
extract_elements(carrier_config_element, config) extract_gps_elements(carrier_config_no_sim_element, config)
else:
f.write('</apns>\n') carrier_config_element.set('mcc', mcc)
carrier_config_element.set('mnc', mnc)
# Test XML parsing. for field in ['spn', 'imsi', 'gid1']:
ET.parse(os.path.join(apns_folder, 'apns-conf.xml')) if entry.carrier_id[0].HasField(field):
carrier_config_element.set(
field,
getattr(entry.carrier_id[0], field),
)
for config in setting.configs.config:
extract_elements(carrier_config_element, config)
indent(carrier_config_root) indent(carrier_config_root)
carrier_config_tree = ET.ElementTree(carrier_config_root) carrier_config_tree = ET.ElementTree(carrier_config_root)