From cf494447fff570d4a626b545ef395682391c49b4 Mon Sep 17 00:00:00 2001 From: Dario Nieuwenhuis Date: Fri, 5 Nov 2021 00:39:36 +0100 Subject: [PATCH] Ignore pins with broken names. Only Pxyy. --- stm32data/__main__.py | 48 +++++++++++++++++++++++++++++-------------- 1 file changed, 33 insertions(+), 15 deletions(-) diff --git a/stm32data/__main__.py b/stm32data/__main__.py index a8a5909..e8312b6 100755 --- a/stm32data/__main__.py +++ b/stm32data/__main__.py @@ -362,6 +362,33 @@ memories_map = { } +def cleanup_pin_name(pin_name): + if p := parse_pin_name(pin_name): + return f'P{p[0]}{p[1]}' + + +def parse_pin_name(pin_name): + if len(pin_name) < 3: + return None + if pin_name[0] != 'P': + return None + port = pin_name[1] + if not port.isalpha(): + return None + + pin = pin_name[2:] + i = 0 + while i < len(pin) and pin[i].isnumeric(): + i += 1 + + if i == 0: + return None + + pin = int(pin[:i]) + + return port, pin + + def parse_chips(): os.makedirs('data/chips', exist_ok=True) @@ -499,14 +526,9 @@ def parse_chips(): pins[pname] = [] for pin in r['Pin']: - pin_name = pin['@Name'] - pin_name = pin_name.split(' ', 1)[0] - pin_name = pin_name.split('-', 1)[0] - pin_name = pin_name.split('/', 1)[0] - pin_name = pin_name.split('_', 1)[0] - pin_name = pin_name.split('(', 1)[0] - pin_name = removesuffix(pin_name, 'OSC32') - pin_name = removesuffix(pin_name, 'BOOT0') + pin_name = cleanup_pin_name(pin['@Name']) + if pin_name is None: + continue if 'Signal' in pin: signals = [] @@ -871,13 +893,9 @@ def parse_gpio_af(): continue # Cleanup pin name - pin_name = pin_name.split('/')[0] - pin_name = pin_name.split('-')[0] - pin_name = pin_name.split(' ')[0] - pin_name = pin_name.split('_')[0] - pin_name = pin_name.split('(')[0] - pin_name = removesuffix(pin_name, 'OSC32') - pin_name = removesuffix(pin_name, 'BOOT0') + pin_name = cleanup_pin_name(pin_name) + if pin_name is None: + continue # Extract AFs afs = {}