48 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Python
		
	
	
	
			
		
		
	
	
			48 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Python
		
	
	
	
| # This file consists of the common useful functions for eFuse
 | |
| #
 | |
| # SPDX-FileCopyrightText: 2020-2022 Espressif Systems (Shanghai) CO LTD
 | |
| #
 | |
| # SPDX-License-Identifier: GPL-2.0-or-later
 | |
| 
 | |
| import esptool
 | |
| 
 | |
| 
 | |
| def hexify(bitstring, separator=""):
 | |
|     as_bytes = tuple(b for b in bitstring)
 | |
|     return separator.join(("%02x" % b) for b in as_bytes)
 | |
| 
 | |
| 
 | |
| def popcnt(b):
 | |
|     """Return number of "1" bits set in 'b'"""
 | |
|     return len([x for x in bin(b) if x == "1"])
 | |
| 
 | |
| 
 | |
| def check_duplicate_name_in_list(name_list):
 | |
|     duples_name = [name for i, name in enumerate(name_list) if name in name_list[:i]]
 | |
|     if duples_name != []:
 | |
|         raise esptool.FatalError(
 | |
|             "Found repeated {} in the name list".format(duples_name)
 | |
|         )
 | |
| 
 | |
| 
 | |
| class SdkConfig(object):
 | |
|     def __init__(self, path_to_file):
 | |
|         self.sdkconfig = dict()
 | |
|         if path_to_file is None:
 | |
|             return
 | |
|         with open(path_to_file, "r") as file:
 | |
|             for line in file.readlines():
 | |
|                 if line.startswith("#"):
 | |
|                     continue
 | |
|                 config = line.strip().split("=", 1)
 | |
|                 if len(config) == 2:
 | |
|                     self.sdkconfig[config[0]] = (
 | |
|                         True if config[1] == "y" else config[1].strip('"')
 | |
|                     )
 | |
| 
 | |
|     def __getitem__(self, config_name):
 | |
|         try:
 | |
|             return self.sdkconfig[config_name]
 | |
|         except KeyError:
 | |
|             return False
 |