seems to run, untested
This commit is contained in:
parent
90bb19eff4
commit
84f9619f8c
@ -1 +1 @@
|
||||
3.14
|
||||
3.11
|
||||
|
||||
27
main.py
27
main.py
@ -6,7 +6,6 @@ from enum import IntEnum
|
||||
from typing import NamedTuple
|
||||
from LoRaRF import SX126x
|
||||
|
||||
|
||||
LoRa = SX126x()
|
||||
|
||||
# As per EN 300 220-2 V3.3.1; Annex B table 1
|
||||
@ -50,7 +49,7 @@ class LoRaPacketHeader:
|
||||
return base + time_bytes
|
||||
|
||||
@classmethod
|
||||
def unpack(cls, data: bytes) -> LoRaPacketHeader:
|
||||
def unpack(cls, data: bytes) -> 'LoRaPacketHeader':
|
||||
t, i, n = struct.unpack(f'{ENDIAN}B B B', data[0:3])
|
||||
time_val = int.from_bytes(data[3:9], byteorder='little', signed=False)
|
||||
return cls(t, i, n, time_val)
|
||||
@ -79,7 +78,7 @@ class LoRaSyncPacket:
|
||||
return hdr + bf_bytes + padding
|
||||
|
||||
@classmethod
|
||||
def unpack(cls, data: bytes) -> LoRaSyncPacket:
|
||||
def unpack(cls, data: bytes) -> 'LoRaSyncPacket':
|
||||
hdr = LoRaPacketHeader.unpack(data[:9])
|
||||
bitfield = int.from_bytes(data[9:12], byteorder='little', signed=False)
|
||||
|
||||
@ -99,7 +98,7 @@ class LoRaConnectPacket:
|
||||
return self.header.pack() + b'\x00' * 6
|
||||
|
||||
@classmethod
|
||||
def unpack(cls, data: bytes) -> LoRaConnectPacket:
|
||||
def unpack(cls, data: bytes) -> 'LoRaConnectPacket':
|
||||
return cls(LoRaPacketHeader.unpack(data[:9]))
|
||||
|
||||
|
||||
@ -114,7 +113,7 @@ class LoRaAcceptPacket:
|
||||
return hdr + ctime
|
||||
|
||||
@classmethod
|
||||
def unpack(cls, data: bytes) -> LoRaAcceptPacket:
|
||||
def unpack(cls, data: bytes) -> 'LoRaAcceptPacket':
|
||||
hdr = LoRaPacketHeader.unpack(data[:9])
|
||||
ctime = int.from_bytes(data[9:15], byteorder='little', signed=False)
|
||||
return cls(hdr, ctime)
|
||||
@ -148,7 +147,7 @@ class LoRaDataPacket:
|
||||
return hdr + payload
|
||||
|
||||
@classmethod
|
||||
def unpack(cls, data: bytes) -> LoRaDataPacket:
|
||||
def unpack(cls, data: bytes) -> 'LoRaDataPacket':
|
||||
hdr = LoRaPacketHeader.unpack(data[:9])
|
||||
fmt = f'{ENDIAN}H H H h H H h f f h'
|
||||
payload = struct.unpack(fmt, data[9:33])
|
||||
@ -168,7 +167,7 @@ class LoRaCommandPacket:
|
||||
return hdr + payload
|
||||
|
||||
@classmethod
|
||||
def unpack(cls, data: bytes) -> LoRaCommandPacket:
|
||||
def unpack(cls, data: bytes) -> 'LoRaCommandPacket':
|
||||
hdr = LoRaPacketHeader.unpack(data[:9])
|
||||
cmd, val = struct.unpack(f'{ENDIAN}B Q', data[9:18])
|
||||
return cls(hdr, cmd, val)
|
||||
@ -383,7 +382,7 @@ class LoRaGSStateMachine:
|
||||
"""Transmit packet over SPI to SX1262 and update self.last_tx_time."""
|
||||
# TODO: Implement via LoRaRF
|
||||
LoRa.beginPacket()
|
||||
LoRa.write(data, len(data))
|
||||
LoRa.write(list(data), len(data))
|
||||
LoRa.endPacket(timeout_ms * 64)
|
||||
self.last_tx_time = self.now_ms()
|
||||
return True
|
||||
@ -391,7 +390,7 @@ class LoRaGSStateMachine:
|
||||
def lora_receive_timeout(self, timeout_ms: int) -> bool:
|
||||
"""Listen for incoming packets until timeout. Update self.last_rx_time."""
|
||||
LoRa.request(timeout_ms)
|
||||
LoRa.wait()
|
||||
LoRa.wait(timeout_ms / 1000)
|
||||
status = LoRa.status()
|
||||
|
||||
if status == LoRa.STATUS_RX_DONE:
|
||||
@ -415,9 +414,13 @@ class LoRaGSStateMachine:
|
||||
|
||||
def main():
|
||||
print("Starting up LoRa module")
|
||||
LoRa.setPins(23, 25, 24, -1, 5)
|
||||
LoRa.setSpi(0, 0, 4_000_000)
|
||||
LoRa.begin()
|
||||
|
||||
#LoRa.setPins(23, 25, 24, -1, 5)
|
||||
#LoRa.setSpi(0, 0, 4_000_000)
|
||||
|
||||
LoRa.begin(0, 0, 23, 25, 24, -1, 5)
|
||||
|
||||
#LoRa.begin()
|
||||
print("LoRa module started")
|
||||
|
||||
print("Setting LoRa paramters")
|
||||
|
||||
@ -3,7 +3,11 @@ name = "raspberry"
|
||||
version = "0.1.0"
|
||||
description = "Add your description here"
|
||||
readme = "README.md"
|
||||
requires-python = ">=3.14"
|
||||
requires-python = ">=3.11, <3.13"
|
||||
dependencies = [
|
||||
"lorarf>=1.4.0",
|
||||
"rpi-lgpio>=0.6",
|
||||
]
|
||||
|
||||
[tool.uv]
|
||||
override-dependencies = ["rpi-gpio; sys_platform == 'never'"]
|
||||
|
||||
39
uv.lock
generated
39
uv.lock
generated
@ -1,13 +1,30 @@
|
||||
version = 1
|
||||
revision = 3
|
||||
requires-python = ">=3.14"
|
||||
requires-python = ">=3.11, <3.13"
|
||||
|
||||
[manifest]
|
||||
overrides = [{ name = "rpi-gpio", marker = "sys_platform == 'never'" }]
|
||||
|
||||
[[package]]
|
||||
name = "lgpio"
|
||||
version = "0.2.2.0"
|
||||
source = { registry = "https://pypi.org/simple" }
|
||||
sdist = { url = "https://files.pythonhosted.org/packages/56/33/26ec2e8049eaa2f077bf23a12dc61ca559fbfa7bea0516bf263d657ae275/lgpio-0.2.2.0.tar.gz", hash = "sha256:11372e653b200f76a0b3ef8a23a0735c85ec678a9f8550b9893151ed0f863fff", size = 90087, upload-time = "2024-03-29T21:59:55.901Z" }
|
||||
wheels = [
|
||||
{ url = "https://files.pythonhosted.org/packages/78/4e/5721ae44b29e4fe9175f68c881694e3713066590739a7c87f8cee2835c25/lgpio-0.2.2.0-cp311-cp311-linux_armv7l.whl", hash = "sha256:5b3c403e1fba9c17d178f1bde102726c548fc5c4fc1ccf5ec3e18f3c08e07e04", size = 382992, upload-time = "2024-03-29T22:00:45.039Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/88/53/e57a22fe815fc68d0991655c1105b8ed872a68491d32e4e0e7d10ffb5c4d/lgpio-0.2.2.0-cp311-cp311-manylinux_2_34_aarch64.whl", hash = "sha256:a2f71fb95b149d8ac82c7c6bae70f054f6dc42a006ad35c90c7d8e54921fbcf4", size = 364848, upload-time = "2024-04-01T22:49:45.889Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/a4/71/11f4e3d76400e4ca43f9f9b014f5a86d9a265340c0bea45cce037277eb34/lgpio-0.2.2.0-cp311-cp311-manylinux_2_34_x86_64.whl", hash = "sha256:e9f4f3915abe5ae0ffdb4b96f485076d80a663876d839e2d3fd9218a71b9873e", size = 370183, upload-time = "2024-04-13T14:08:14.139Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/fe/73/e56c9afb845df53492d42bdea01df9895272bccfdd5128f34719c3a07990/lgpio-0.2.2.0-cp312-cp312-linux_armv7l.whl", hash = "sha256:6c65ac42e878764d04a71ed12fe6d46089b36e9e8127722bf29bb2e4bc91de22", size = 383956, upload-time = "2024-03-29T22:00:47.315Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/3b/1c/becd00f66d2c65feed9a668ff9d91732394cb6baba7bec505d55de0e30c9/lgpio-0.2.2.0-cp312-cp312-manylinux_2_34_aarch64.whl", hash = "sha256:d907db79292c721c605af08187385ddb3b7af09907e1ffca56cf0cd6558ace0a", size = 366058, upload-time = "2024-04-01T22:49:47.615Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/4c/7a/e3b4e5225c9792c4092b2cc07504746acbe62d0a8e4cb023bdf65f6430cf/lgpio-0.2.2.0-cp312-cp312-manylinux_2_34_x86_64.whl", hash = "sha256:2aadff092f642fcdada8457c158f87259dfda3a89ec19bae0b99ff22b34aac4b", size = 372103, upload-time = "2024-04-13T14:08:16.351Z" },
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "lorarf"
|
||||
version = "1.4.0"
|
||||
source = { registry = "https://pypi.org/simple" }
|
||||
dependencies = [
|
||||
{ name = "rpi-gpio" },
|
||||
{ name = "rpi-gpio", marker = "sys_platform == 'never'" },
|
||||
{ name = "spidev" },
|
||||
]
|
||||
sdist = { url = "https://files.pythonhosted.org/packages/20/0c/8d68be030540edeada07a19dd653ea6874eefedea7084f770f83fb9cdd87/LoRaRF-1.4.0.tar.gz", hash = "sha256:ac28e7d5adebfc176b7d9d0cf70a0ad8627f589c3f808664d2fce2c64f0ac9b5", size = 22412, upload-time = "2022-09-25T07:42:06.3Z" }
|
||||
@ -21,10 +38,14 @@ version = "0.1.0"
|
||||
source = { virtual = "." }
|
||||
dependencies = [
|
||||
{ name = "lorarf" },
|
||||
{ name = "rpi-lgpio" },
|
||||
]
|
||||
|
||||
[package.metadata]
|
||||
requires-dist = [{ name = "lorarf", specifier = ">=1.4.0" }]
|
||||
requires-dist = [
|
||||
{ name = "lorarf", specifier = ">=1.4.0" },
|
||||
{ name = "rpi-lgpio", specifier = ">=0.6" },
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "rpi-gpio"
|
||||
@ -32,6 +53,18 @@ version = "0.7.1"
|
||||
source = { registry = "https://pypi.org/simple" }
|
||||
sdist = { url = "https://files.pythonhosted.org/packages/c4/0f/10b524a12b3445af1c607c27b2f5ed122ef55756e29942900e5c950735f2/RPi.GPIO-0.7.1.tar.gz", hash = "sha256:cd61c4b03c37b62bba4a5acfea9862749c33c618e0295e7e90aa4713fb373b70", size = 29090, upload-time = "2022-02-06T15:15:06.022Z" }
|
||||
|
||||
[[package]]
|
||||
name = "rpi-lgpio"
|
||||
version = "0.6"
|
||||
source = { registry = "https://pypi.org/simple" }
|
||||
dependencies = [
|
||||
{ name = "lgpio" },
|
||||
]
|
||||
sdist = { url = "https://files.pythonhosted.org/packages/6e/6d/7b6cb0def16abda6af89d16a3363d4036501bf042f9c67668aad3b34927f/rpi_lgpio-0.6.tar.gz", hash = "sha256:84579b11d543bb8abdddc1e10fcd6bdc2819e5897be72d6949a2b044d71fb73e", size = 12723, upload-time = "2024-05-11T16:09:29.463Z" }
|
||||
wheels = [
|
||||
{ url = "https://files.pythonhosted.org/packages/da/a9/06b843528e47ded0dd276537e9c56e7aec7c841b3b2749274e7d8121dab5/rpi_lgpio-0.6-py3-none-any.whl", hash = "sha256:0930b6e0ffbfbeee9366fbfa5038d29a7606be96a5229d570b1f81be8f776777", size = 11880, upload-time = "2024-05-11T16:09:27.75Z" },
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "spidev"
|
||||
version = "3.8"
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user