Skip to content

Commit 0f9da6b

Browse files
packets code clean up
1 parent 2a222e6 commit 0f9da6b

4 files changed

Lines changed: 35 additions & 26 deletions

File tree

aprslib/packets/__init__.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
1-
from aprslib.packets.position import PositionReport
2-
from aprslib.packets.telemetry import TelemetryReport
1+
from aprslib.packets.position import *
2+
from aprslib.packets.telemetry import *

aprslib/packets/base.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,11 @@ class APRSPacket(object):
55
format = 'raw'
66
fromcall = 'N0CALL'
77
tocall = 'N0CALL'
8-
path = []
8+
path = None
99

1010
def __init__(self, data=None):
11+
self.path = []
12+
1113
if data:
1214
self.load(data)
1315

aprslib/packets/position.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,10 @@
22
from aprslib.packets.base import APRSPacket
33
from aprslib.util import latitude_to_ddm, longitude_to_ddm, comment_altitude
44

5+
__all__ = [
6+
'PositionReport',
7+
]
8+
59

610
class PositionReport(APRSPacket):
711
format = 'uncompressed'

aprslib/packets/telemetry.py

Lines changed: 26 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,17 @@
11
from aprslib.packets.base import APRSPacket
22

3+
__all__ = [
4+
'TelemetryReport',
5+
]
6+
37
class TelemetryAddon(object):
48
_analog_values = None
59
_sequence_number = 0
610
_digital_value = 0
711

812

913
def __init__(self, *args, **kwargs):
10-
self._analog_values = AnalogList()
14+
self._analog_values = AnalogValueList()
1115
super(TelemetryAddon, self).__init__( *args, **kwargs)
1216

1317
@property
@@ -21,7 +25,8 @@ def analog_values(self, v):
2125
if len(v) != 5:
2226
raise ValueError("Expected a list of 5 elements, got a list of %d" % len(v))
2327

24-
self._analog_values[:] = v
28+
for i, elm in enumerate(v):
29+
self._analog_values[i] = elm
2530

2631
@property
2732
def sequence_number(self):
@@ -46,24 +51,12 @@ def digital_value(self, v):
4651
raise ValueError("Value outside of range 0-255")
4752

4853

49-
class AnalogList(list):
50-
def __init__(self):
51-
list.__init__(self, [0] * 5)
52-
53-
def __setitem__(self, i, v):
54-
if not 0 <= i <= 4:
55-
raise IndexError("Index outside of range 0-4, got %d" % i)
56-
if not 0 <= v <= 999:
57-
raise ValueError("Value outside of range 0-999, got %d" % v)
58-
else:
59-
list.__setitem__(self, i, v)
60-
61-
def __setslice__(self, i, j, v):
62-
if i > j:
63-
i, j = j, i
54+
class ImmutableList(list):
55+
def __setitem__(self, a, b):
56+
raise NotImplementedError("not supported")
6457

65-
for x in range(max(0, i), min(5, j)):
66-
list.__setitem__(self, x, v[x])
58+
def __setslice__(self, a, b, c):
59+
raise NotImplementedError("not supported")
6760

6861
def append(self, a):
6962
raise NotImplementedError("not supported")
@@ -81,11 +74,21 @@ def insert(self, a, b):
8174
raise NotImplementedError("not supported")
8275

8376

84-
class TelemetryReport(TelemetryAddon, APRSPacket):
85-
@property
86-
def format(self):
87-
return 'telemetry'
77+
class AnalogValueList(ImmutableList):
78+
def __init__(self):
79+
list.__init__(self, [0] * 5)
80+
81+
def __setitem__(self, i, v):
82+
if not 0 <= i <= 4:
83+
raise IndexError("Index outside of range 0-4, got %d" % i)
84+
if not 0 <= v <= 999:
85+
raise ValueError("Value outside of range 0-999, got %d" % v)
86+
else:
87+
list.__setitem__(self, i, v)
88+
8889

90+
class TelemetryReport(TelemetryAddon, APRSPacket):
91+
format = 'telemetry'
8992
_comment = ''
9093

9194
@property

0 commit comments

Comments
 (0)