51 lines
1.6 KiB
Python
51 lines
1.6 KiB
Python
|
#!/usr/bin/env python3
|
||
|
#
|
||
|
# Copyright (c) 2021 Intel Corporation
|
||
|
# Copyright (c) 2024 Nordic Semiconductor ASA
|
||
|
#
|
||
|
# SPDX-License-Identifier: Apache-2.0
|
||
|
|
||
|
"""
|
||
|
Parser library for Dictionary-based Logging
|
||
|
|
||
|
This library along with dictionary_parser converts the
|
||
|
input binary data to the log using log database.
|
||
|
"""
|
||
|
import sys
|
||
|
import logging
|
||
|
|
||
|
import dictionary_parser
|
||
|
from dictionary_parser.log_database import LogDatabase
|
||
|
|
||
|
def parser(logdata, dbfile, logger):
|
||
|
"""function of serial parser"""
|
||
|
# Read from database file
|
||
|
database = LogDatabase.read_json_database(dbfile)
|
||
|
|
||
|
if not isinstance(logger, logging.Logger):
|
||
|
raise ValueError("Invalid logger instance. Please configure the logger!")
|
||
|
|
||
|
if database is None:
|
||
|
logger.error("ERROR: Cannot open database file: exiting...")
|
||
|
sys.exit(1)
|
||
|
|
||
|
if logdata is None:
|
||
|
logger.error("ERROR: cannot read log from file: exiting...")
|
||
|
sys.exit(1)
|
||
|
|
||
|
log_parser = dictionary_parser.get_parser(database)
|
||
|
if log_parser is not None:
|
||
|
logger.debug("# Build ID: %s", database.get_build_id())
|
||
|
logger.debug("# Target: %s, %d-bit", database.get_arch(), database.get_tgt_bits())
|
||
|
if database.is_tgt_little_endian():
|
||
|
logger.debug("# Endianness: Little")
|
||
|
else:
|
||
|
logger.debug("# Endianness: Big")
|
||
|
|
||
|
ret = log_parser.parse_log_data(logdata)
|
||
|
if not ret:
|
||
|
logger.error("ERROR: there were error(s) parsing log data")
|
||
|
sys.exit(1)
|
||
|
else:
|
||
|
logger.error("ERROR: Cannot find a suitable parser matching database version!")
|