Cleanup of parse.
This commit is contained in:
parent
fa14144963
commit
ed248082b8
24
parse.py
24
parse.py
@ -838,7 +838,7 @@ def parse_dma():
|
|||||||
ff = removeprefix(f, 'sources/cubedb/mcu/IP/DMA-')
|
ff = removeprefix(f, 'sources/cubedb/mcu/IP/DMA-')
|
||||||
ff = removesuffix(ff, '_Modes.xml')
|
ff = removesuffix(ff, '_Modes.xml')
|
||||||
|
|
||||||
r = xmltodict.parse(open(f, 'rb'), force_list={'Mode'})
|
r = xmltodict.parse(open(f, 'rb'), force_list={'Mode', 'RefMode'})
|
||||||
|
|
||||||
chip_dma = {
|
chip_dma = {
|
||||||
'channels': {},
|
'channels': {},
|
||||||
@ -886,6 +886,18 @@ def parse_dma():
|
|||||||
'channel': i,
|
'channel': i,
|
||||||
})
|
})
|
||||||
else:
|
else:
|
||||||
|
# see if we can scrape out requests
|
||||||
|
requests = {}
|
||||||
|
|
||||||
|
request_blocks = filter(lambda x: x['@BaseMode'] == 'DMA_Request', r['IP']['RefMode'])
|
||||||
|
for block in request_blocks:
|
||||||
|
name = block['@Name']
|
||||||
|
request_num = next(filter(lambda x: x['@Name'] == 'Channel', block['Parameter']), None)
|
||||||
|
if request_num is not None:
|
||||||
|
request_num = request_num['PossibleValue']
|
||||||
|
request_num = removeprefix(request_num, "DMA_CHANNEL_")
|
||||||
|
requests[name] = int(request_num)
|
||||||
|
|
||||||
for channel in channels:
|
for channel in channels:
|
||||||
channel_name = channel['@Name']
|
channel_name = channel['@Name']
|
||||||
channel_name = removeprefix(channel_name, dma_peri_name + '_')
|
channel_name = removeprefix(channel_name, dma_peri_name + '_')
|
||||||
@ -897,6 +909,7 @@ def parse_dma():
|
|||||||
})
|
})
|
||||||
for target in channel['ModeLogicOperator']['Mode']:
|
for target in channel['ModeLogicOperator']['Mode']:
|
||||||
target_name = target['@Name']
|
target_name = target['@Name']
|
||||||
|
original_target_name = target_name
|
||||||
parts = target_name.split(':')
|
parts = target_name.split(':')
|
||||||
target_name = parts[0]
|
target_name = parts[0]
|
||||||
parts = target_name.split('_')
|
parts = target_name.split('_')
|
||||||
@ -914,10 +927,15 @@ def parse_dma():
|
|||||||
event = event.split(':')[0]
|
event = event.split(':')[0]
|
||||||
if 'channels' not in peri_dma:
|
if 'channels' not in peri_dma:
|
||||||
peri_dma['channels'] = {}
|
peri_dma['channels'] = {}
|
||||||
if event not in peri_dma:
|
if event not in peri_dma['channels']:
|
||||||
peri_dma['channels'][event] = []
|
peri_dma['channels'][event] = []
|
||||||
event_dma = peri_dma['channels'][event]
|
event_dma = peri_dma['channels'][event]
|
||||||
event_dma.append(dma_peri_name + '_' + channel_name)
|
entry = OrderedDict({
|
||||||
|
'channel': dma_peri_name + '_' + channel_name,
|
||||||
|
} )
|
||||||
|
if original_target_name in requests:
|
||||||
|
entry['request'] = requests[original_target_name]
|
||||||
|
event_dma.append( entry )
|
||||||
dma_channels[ff] = chip_dma
|
dma_channels[ff] = chip_dma
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user