diff --git a/adafruit_pioasm.py b/adafruit_pioasm.py index fa5a529..cf7f7e5 100644 --- a/adafruit_pioasm.py +++ b/adafruit_pioasm.py @@ -58,6 +58,8 @@ class Program: # pylint: disable=too-few-public-methods wrap = None wrap_target = None offset = -1 + pio_version = 0 + for i, line in enumerate(text_program.split("\n")): line = line.strip() if not line: @@ -68,6 +70,8 @@ class Program: # pylint: disable=too-few-public-methods if program_name: raise RuntimeError("Multiple programs not supported") program_name = line.split()[1] + elif line.startswith(".pio_version"): + pio_version = int(line.split()[1], 0) elif line.startswith(".origin"): offset = int(line.split()[1], 0) elif line.startswith(".wrap_target"): @@ -247,6 +251,9 @@ class Program: # pylint: disable=too-few-public-methods if offset != -1: self.pio_kwargs["offset"] = offset + if pio_version != 0: + self.pio_kwargs["pio_version"] = pio_version + if sideset_count != 0: self.pio_kwargs["sideset_pin_count"] = sideset_count diff --git a/tests/pytest_helpers.py b/tests/pytest_helpers.py index 72ac7cf..8425a5b 100644 --- a/tests/pytest_helpers.py +++ b/tests/pytest_helpers.py @@ -45,4 +45,6 @@ def assert_assembly_fails( def assert_pio_kwargs(source: str, **kw: Any) -> None: program = adafruit_pioasm.Program(source) - assert kw == program.pio_kwargs + assert ( + kw == program.pio_kwargs + ), f"Assembling {source!r}: Expected {kw}, got {program.pio_kwargs}" diff --git a/tests/test_version.py b/tests/test_version.py new file mode 100644 index 0000000..82717e8 --- /dev/null +++ b/tests/test_version.py @@ -0,0 +1,15 @@ +# SPDX-FileCopyrightText: 2024 Jeff Epler, written for Adafruit Industries +# +# SPDX-License-Identifier: MIT + +""" +Tests version dependent instructions +""" + +from pytest_helpers import assert_pio_kwargs, assert_assembly_fails + + +def test_version() -> None: + assert_pio_kwargs(".pio_version 0", sideset_enable=0) + assert_pio_kwargs(".pio_version 1", pio_version=1, sideset_enable=0) + assert_assembly_fails(".pio_version muffin", errtype=ValueError)