diff --git a/tests/encode_decode/01_info.yaml b/tests/encode_decode/01_info.yaml index 3512c2b..63ffbeb 100644 --- a/tests/encode_decode/01_info.yaml +++ b/tests/encode_decode/01_info.yaml @@ -15,6 +15,9 @@ regions: size: 35 used_size: 1 root: + cc_capacity: 312 + ndef_tlv_payload_start: 8 + ndef_tlv_payload_size: 303 data_size: 312 payload_size: 245 overhead: 67 diff --git a/tests/encode_decode/02_info.yaml b/tests/encode_decode/02_info.yaml index a894c8a..c6352a3 100644 --- a/tests/encode_decode/02_info.yaml +++ b/tests/encode_decode/02_info.yaml @@ -15,6 +15,9 @@ regions: size: 35 used_size: 1 root: + cc_capacity: 312 + ndef_tlv_payload_start: 8 + ndef_tlv_payload_size: 303 data_size: 312 payload_size: 245 overhead: 67 diff --git a/tests/encode_decode/04_info.yaml b/tests/encode_decode/04_info.yaml index 715824b..6e1d359 100644 --- a/tests/encode_decode/04_info.yaml +++ b/tests/encode_decode/04_info.yaml @@ -15,6 +15,9 @@ regions: size: 35 used_size: 1 root: + cc_capacity: 312 + ndef_tlv_payload_start: 8 + ndef_tlv_payload_size: 303 data_size: 312 payload_size: 255 overhead: 57 diff --git a/tests/encode_decode/05_info.yaml b/tests/encode_decode/05_info.yaml index bc563f4..ac7a796 100644 --- a/tests/encode_decode/05_info.yaml +++ b/tests/encode_decode/05_info.yaml @@ -15,6 +15,9 @@ regions: size: 35 used_size: 1 root: + cc_capacity: 312 + ndef_tlv_payload_start: 8 + ndef_tlv_payload_size: 303 data_size: 312 payload_size: 269 overhead: 43 diff --git a/tests/specific/unknown_info_1.yaml b/tests/specific/unknown_info_1.yaml index b8c0d01..36f6039 100644 --- a/tests/specific/unknown_info_1.yaml +++ b/tests/specific/unknown_info_1.yaml @@ -15,6 +15,9 @@ regions: size: 35 used_size: 1 root: + cc_capacity: 312 + ndef_tlv_payload_start: 8 + ndef_tlv_payload_size: 303 data_size: 312 payload_size: 269 overhead: 43 diff --git a/tests/specific/unknown_info_2.yaml b/tests/specific/unknown_info_2.yaml index 80fbb57..e5087ec 100644 --- a/tests/specific/unknown_info_2.yaml +++ b/tests/specific/unknown_info_2.yaml @@ -15,6 +15,9 @@ regions: size: 35 used_size: 1 root: + cc_capacity: 312 + ndef_tlv_payload_start: 8 + ndef_tlv_payload_size: 303 data_size: 312 payload_size: 269 overhead: 43 diff --git a/utils/rec_info.py b/utils/rec_info.py index f6fd3c2..b99367e 100644 --- a/utils/rec_info.py +++ b/utils/rec_info.py @@ -1,16 +1,16 @@ import argparse +import json import sys -import yaml - -from record import Record -from common import default_config_file -from opt_check import opt_check -from pathlib import Path -import referencing import urllib.parse +from pathlib import Path + import jsonschema import jsonschema.validators -import json +import referencing +import yaml +from common import default_config_file +from opt_check import opt_check +from record import Record parser = argparse.ArgumentParser(prog="rec_info", description="Reads a record from the STDIN and prints various information about it in the YAML format") parser.add_argument("-c", "--config-file", type=str, default=default_config_file, help="Record configuration YAML file") @@ -64,6 +64,7 @@ if args.show_root_info: overhead = len(record.data) - len(record.payload) output["root"] = { + **record.root_info, "data_size": len(record.data), "payload_size": len(record.payload), "overhead": overhead, diff --git a/utils/record.py b/utils/record.py index 6c05bc9..2740ff1 100644 --- a/utils/record.py +++ b/utils/record.py @@ -1,12 +1,12 @@ -import os -import ndef -import yaml -import cbor2 import io +import os import types import typing -from fields import Fields, EncodeConfig +import cbor2 +import ndef +import yaml +from fields import EncodeConfig, Fields class Region: @@ -99,6 +99,9 @@ class Record: regions: dict[str, Region] = None + # Debug information about the record - to be shown in the CLI if the user demands it + root_info: dict[str, typing.Any] + encode_config: EncodeConfig def __init__(self, config_file: str, data: memoryview): @@ -106,6 +109,7 @@ def __init__(self, config_file: str, data: memoryview): self.data = data self.encode_config = EncodeConfig() + self.root_info = dict() self.config_dir = os.path.dirname(config_file) with open(config_file, "r", encoding="utf-8") as f: @@ -124,6 +128,8 @@ def __init__(self, config_file: str, data: memoryview): # TODO: Support 8-byte CC (with a different magic) assert cc[0] == 0xE1, "Capability container magic number does not match" + self.root_info["cc_capacity"] = cc[2] * 8 + # Find the NDEF TLV while True: base_tlv = data_io.read(2) @@ -143,7 +149,10 @@ def __init__(self, config_file: str, data: memoryview): # 0x03 = NDEF TLV if tag == 0x03: - # Found it - + # Found it + + self.root_info["ndef_tlv_payload_start"] = data_io.tell() + self.root_info["ndef_tlv_payload_size"] = tlv_len break else: # Skip the TLV block