gr-rylr998/pyproject.toml
Ryan Malloy c839d225a8 Initial release: complete LoRa TX/RX for RYLR998 modems
GNU Radio Out-of-Tree module providing:
- Complete TX chain: PHYEncode → FrameGen → CSSMod
- Complete RX chain: CSSDemod → FrameSync → PHYDecode
- NETWORKID extraction/encoding (0-255 range)
- All SF (7-12) and CR (4/5-4/8) combinations
- Loopback tested with 24/24 configurations passing

Key features:
- Fractional SFD (2.25 downchirp) handling
- Gray encode/decode with proper inverse operations
- gr-lora_sdr compatible decode modes
- GRC block definitions and example flowgraphs
- Comprehensive documentation

Discovered RYLR998 sync word mapping:
  sync_bin_1 = (NETWORKID >> 4) * 8
  sync_bin_2 = (NETWORKID & 0x0F) * 8
2026-02-05 13:38:07 -07:00

63 lines
1.6 KiB
TOML

[build-system]
requires = ["setuptools>=61.0", "wheel"]
build-backend = "setuptools.build_meta"
[project]
name = "gr-rylr998"
version = "0.1.0"
description = "GNU Radio OOT module for RYLR998 LoRa modems"
readme = "README.md"
license = {text = "GPL-3.0-or-later"}
authors = [
{name = "Ryan Malloy", email = "ryan@supported.systems"}
]
classifiers = [
"Development Status :: 3 - Alpha",
"Intended Audience :: Developers",
"Intended Audience :: Science/Research",
"License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)",
"Operating System :: POSIX :: Linux",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Topic :: Communications :: Ham Radio",
"Topic :: Scientific/Engineering",
]
keywords = ["gnuradio", "lora", "rylr998", "sdr", "chirp-spread-spectrum"]
requires-python = ">=3.10"
dependencies = [
"numpy>=1.21",
]
[project.optional-dependencies]
dev = [
"pytest>=7.0",
"pytest-cov",
"ruff",
]
[project.urls]
Homepage = "https://github.com/yourusername/gr-rylr998"
Documentation = "https://github.com/yourusername/gr-rylr998#readme"
Issues = "https://github.com/yourusername/gr-rylr998/issues"
[tool.setuptools.packages.find]
where = ["python"]
[tool.setuptools.package-data]
"*" = ["*.yml"]
[tool.ruff]
line-length = 100
target-version = "py310"
[tool.ruff.lint]
select = ["E", "F", "W", "I", "N", "UP", "B", "C4"]
ignore = ["E501"] # Line length handled by formatter
[tool.pytest.ini_options]
testpaths = ["tests"]
python_files = "test_*.py"
addopts = "-v --tb=short"