mirror of
https://github.com/zephyrproject-rtos/zephyr
synced 2025-08-06 03:46:03 +00:00
Fix pylint warnings for bad indent, redundant len()s in conditionals, tests that could be improved with 'in', methods that don't use 'self', and type()s where isinstance() is more common. Preparation for adding a CI check. Signed-off-by: Ulf Magnusson <Ulf.Magnusson@nordicsemi.no>
108 lines
3.8 KiB
Python
108 lines
3.8 KiB
Python
#
|
|
# Copyright (c) 2018 Bobby Noelte
|
|
#
|
|
# SPDX-License-Identifier: Apache-2.0
|
|
#
|
|
|
|
# NOTE: This file is part of the old device tree scripts, which will be removed
|
|
# later. They are kept to generate some legacy #defines via the
|
|
# --deprecated-only flag.
|
|
#
|
|
# The new scripts are gen_defines.py, edtlib.py, and dtlib.py.
|
|
|
|
from extract.globals import *
|
|
from extract.directive import DTDirective
|
|
|
|
##
|
|
# @brief Manage directives in a default way.
|
|
#
|
|
class DTDefault(DTDirective):
|
|
|
|
@staticmethod
|
|
def _extract_enum(node_path, prop, prop_values, label):
|
|
cell_yaml = get_binding(node_path)['properties'][prop]
|
|
if 'enum' in cell_yaml:
|
|
if prop_values in cell_yaml['enum']:
|
|
if isinstance(cell_yaml['enum'], list):
|
|
value = cell_yaml['enum'].index(prop_values)
|
|
if isinstance(cell_yaml['enum'], dict):
|
|
value = cell_yaml['enum'][prop_values]
|
|
label = label + "_ENUM"
|
|
return {label:value}
|
|
else:
|
|
print("ERROR")
|
|
return {}
|
|
|
|
|
|
##
|
|
# @brief Extract directives in a default way
|
|
#
|
|
# @param node_path Path to node owning the clockxxx definition.
|
|
# @param prop property name
|
|
# @param prop type (string, boolean, etc)
|
|
# @param def_label Define label string of node owning the directive.
|
|
#
|
|
def extract(self, node_path, prop, prop_type, def_label):
|
|
prop_def = {}
|
|
prop_alias = {}
|
|
|
|
if prop_type == 'boolean':
|
|
if prop in reduced[node_path]['props']:
|
|
prop_values = 1
|
|
else:
|
|
prop_values = 0
|
|
else:
|
|
prop_values = reduced[node_path]['props'][prop]
|
|
|
|
if prop_type in {"string-array", "array", "uint8-array"}:
|
|
if not isinstance(prop_values, list):
|
|
prop_values = [prop_values]
|
|
|
|
if prop_type == "uint8-array":
|
|
prop_name = str_to_label(prop)
|
|
label = def_label + '_' + prop_name
|
|
prop_value = ''.join(['{ ',
|
|
', '.join(["0x%02x" % b for b in prop_values]),
|
|
' }'])
|
|
prop_def[label] = prop_value
|
|
add_compat_alias(node_path, prop_name, label, prop_alias)
|
|
elif isinstance(prop_values, list):
|
|
for i, prop_value in enumerate(prop_values):
|
|
prop_name = str_to_label(prop)
|
|
label = def_label + '_' + prop_name
|
|
if isinstance(prop_value, str):
|
|
prop_value = "\"" + prop_value + "\""
|
|
prop_def[label + '_' + str(i)] = prop_value
|
|
add_compat_alias(node_path,
|
|
prop_name + '_' + str(i),
|
|
label + '_' + str(i),
|
|
prop_alias)
|
|
else:
|
|
prop_name = str_to_label(prop)
|
|
label = def_label + '_' + prop_name
|
|
|
|
if prop_values == 'parent-label':
|
|
prop_values = find_parent_prop(node_path, 'label')
|
|
|
|
prop_def = self._extract_enum(node_path, prop, prop_values, label)
|
|
if prop_def:
|
|
add_compat_alias(node_path, prop_name + "_ENUM" , label + "_ENUM", prop_alias)
|
|
if isinstance(prop_values, str):
|
|
prop_values = "\"" + prop_values + "\""
|
|
prop_def[label] = prop_values
|
|
add_compat_alias(node_path, prop_name, label, prop_alias)
|
|
|
|
# generate defs for node aliases
|
|
if node_path in aliases:
|
|
add_prop_aliases(
|
|
node_path,
|
|
lambda alias: str_to_label(alias) + '_' + prop_name,
|
|
label,
|
|
prop_alias)
|
|
|
|
insert_defs(node_path, prop_def, prop_alias)
|
|
|
|
##
|
|
# @brief Management information for directives handled by default.
|
|
default = DTDefault()
|