diff --git a/litescope/software/driver/analyzer.py b/litescope/software/driver/analyzer.py index bd7c771..3e1ea46 100644 --- a/litescope/software/driver/analyzer.py +++ b/litescope/software/driver/analyzer.py @@ -134,6 +134,13 @@ class LiteScopeAnalyzerDriver: self.storage_enable.write(1) self.trigger_enable.write(1) + def clear(self): + self.data = DumpData(self.data_width) + self.offset = 0 + self.length = None + self.trigger_enable.write(0) + self.storage_enable.write(0) + def done(self): return self.storage_done.read() @@ -168,6 +175,8 @@ class LiteScopeAnalyzerDriver: dump = CSVDump() elif ext == ".py": dump = PythonDump() + elif ext == ".json": + dump = JSONDump() elif ext == ".sr": dump = SigrokDump(samplerate=samplerate) else: diff --git a/litescope/software/dump/__init__.py b/litescope/software/dump/__init__.py index 0183987..5062041 100644 --- a/litescope/software/dump/__init__.py +++ b/litescope/software/dump/__init__.py @@ -1,5 +1,6 @@ from litescope.software.dump.common import DumpData, DumpVariable, Dump from litescope.software.dump.csv import CSVDump from litescope.software.dump.python import PythonDump +from litescope.software.dump.json import JSONDump from litescope.software.dump.sigrok import SigrokDump from litescope.software.dump.vcd import VCDDump diff --git a/litescope/software/dump/json.py b/litescope/software/dump/json.py new file mode 100644 index 0000000..f98be8f --- /dev/null +++ b/litescope/software/dump/json.py @@ -0,0 +1,25 @@ +# +# This file is part of LiteScope. +# +# Copyright (c) 2021 Arnaud Durand +# SPDX-License-Identifier: BSD-2-Clause + +import json + +from litescope.software.dump.common import Dump + + +class JSONDump(Dump): + def __init__(self, dump=None): + Dump.__init__(self) + self.variables = [] if dump is None else dump.variables + + def generate_data(self): + return {v.name: v.values for v in self.variables} + + def write(self, filename): + with open(filename, "w") as f: + json.dump(self.generate_data(), f) + + def read(self, filename): + raise NotImplementedError("JSON files can not (yet) be read, please contribute!")