zephyr/scripts/dts/extract/directive.py

66 lines
1.8 KiB
Python

#
# Copyright (c) 2018 Bobby Noelte
#
# SPDX-License-Identifier: Apache-2.0
#
from .globals import *
##
# @brief Base class for device tree directives
#
class DTDirective(object):
##
# @brief Get a label string for a list of label sub-strings.
#
# Label sub-strings are concatenated by '_'.
#
# @param label List of label sub-strings
# @return label string
#
@staticmethod
def get_label_string(label):
return convert_string_to_label(
'_'.join(x.strip() for x in label if x.strip()))
##
# @brief Get label string for a node by address
#
# @param node_address Address of node
# @return label string
#
@staticmethod
def get_node_label_string(node_address):
node = reduced[node_address]
node_compat = get_compat(node_address)
if node_compat is None:
raise Exception(
"No compatible property for node address {}."
.format(node_address))
label = convert_string_to_label(node_compat.upper())
if '@' in node_address:
label += '_' + node_address.split('@')[-1].upper()
elif 'reg' in node['props']:
label += '_' + hex(node['props']['reg'][0])[2:].zfill(8)
else:
label += convert_string_to_label(node_address.upper())
return label
def __init__():
pass
##
# @brief Extract directive information.
#
# @param node_address Address of node issueuing the directive.
# @param yaml YAML definition for the node.
# @param prop Directive property name
# @param names Names assigned to directive.
# @param[out] defs Property definitions for each node address
# @param def_label Define label string of node owning the directive.
#
def extract(self, node_address, yaml, prop, names, defs, def_label):
pass