11from aprslib .packets .base import APRSPacket
22
3+ __all__ = [
4+ 'TelemetryReport' ,
5+ ]
6+
37class 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