#!/usr/bin/env python3 # SPDX-License-Identifier: GPL-2.0 # -*- coding: utf-8 -*- import mmap import sys import json LOG_DEBUG = 5 LOG_INFO = 1 LOG_ERROR = 0 CURRENT_LOG_LEVEL = LOG_INFO def log_e(*args): if CURRENT_LOG_LEVEL < LOG_ERROR: return print(args) def log_i(*args): if CURRENT_LOG_LEVEL < LOG_INFO: return print(args) def log_d(*args): if CURRENT_LOG_LEVEL < LOG_DEBUG: return print(args) def debug_print(data): if CURRENT_LOG_LEVEL < LOG_DEBUG: return if isinstance(data, list): for i in data: print(" {}".format(i)) elif isinstance(data, dict): for key, value in data.items(): print(key, value) elif isinstance(data, bytearray): i = 0 width = 16 while i < len(data): print(data[i: i + width].hex()) i = i + width else: print(data) class Utils(): @staticmethod def file_write_data(file_name: str, data: bytearray, pos: int): with open(file_name, "r+b") as file: mm_hndl = mmap.mmap(file.fileno(), 0) mm_hndl.seek(pos) mm_hndl.write(bytes(data)) @staticmethod def file_wr_data(file_name: str, data): with open(file_name, "w") as file: if isinstance(data, list): for i in data: file.write(i) file.write("\n") elif isinstance(data, str): file.write(data) @staticmethod def file_append_data(file_name: str, data): with open(file_name, "a") as file: if isinstance(data, list): for i in data: file.write(i) file.write("\n") elif isinstance(data, str): file.write(data) elif isinstance(data, dict): json.dump(data, file) else: raise RuntimeError(" ERROR: File append data type cant be handled") @staticmethod def file_read_dict(file_name: str) -> dict: with open(file_name, "r") as file: return json.load(file) @staticmethod def custom_print_to_file(data, filename: str): orig_stdout = sys.stdout with open(filename, 'w') as f_out: sys.stdout = f_out if isinstance(data, list): for i in data: print(" {}".format(i)) elif isinstance(data, dict): for key, value in data.items(): print(key, value) elif isinstance(data, bytearray): i = 0 width = 16 while i < len(data): print(data[i: i + width].hex()) i = i + width else: print(data) sys.stdout = orig_stdout