44from aprslib .parsing import logger
55
66__all__ = [
7- 'parse_comment_telemetry' ,
8- 'parse_telemetry_config' ,
9- ]
7+ 'parse_comment_telemetry' ,
8+ 'parse_telemetry_config' ,
9+ 'parse_telemetry_report'
10+ ]
1011
1112
1213def parse_comment_telemetry (text ):
@@ -23,19 +24,19 @@ def parse_comment_telemetry(text):
2324
2425 temp = [0 ] * 7
2526 for i in range (7 ):
26- temp [i ] = base91 .to_decimal (telemetry [i * 2 :i * 2 + 2 ])
27+ temp [i ] = base91 .to_decimal (telemetry [i * 2 :i * 2 + 2 ])
2728
2829 parsed .update ({
2930 'telemetry' : {
3031 'seq' : temp [0 ],
3132 'vals' : temp [1 :6 ]
32- }
33- })
33+ }
34+ })
3435
3536 if temp [6 ] != '' :
3637 parsed ['telemetry' ].update ({
3738 'bits' : "{0:08b}" .format (temp [6 ] & 0xFF )[::- 1 ]
38- })
39+ })
3940
4041 return (text , parsed )
4142
@@ -62,14 +63,14 @@ def parse_telemetry_config(body):
6263
6364 parsed .update ({
6465 't%s' % form : defvals
65- })
66+ })
6667 elif form == "EQNS" :
6768 eqns = body .rstrip ().split (',' )[:15 ]
6869 teqns = [0 , 1 , 0 ] * 5
6970
7071 for idx , val in enumerate (eqns ):
7172 if not re .match (r"^([-]?\d*\.?\d+|)$" , val ):
72- raise ParseError ("value at %d is not a number in %s" % (idx + 1 , form ))
73+ raise ParseError ("value at %d is not a number in %s" % (idx + 1 , form ))
7374 else :
7475 try :
7576 val = int (val )
@@ -79,11 +80,11 @@ def parse_telemetry_config(body):
7980 teqns [idx ] = val
8081
8182 # group values in 5 list of 3
82- teqns = [teqns [i * 3 :(i + 1 ) * 3 ] for i in range (5 )]
83+ teqns = [teqns [i * 3 :(i + 1 ) * 3 ] for i in range (5 )]
8384
8485 parsed .update ({
8586 't%s' % form : teqns
86- })
87+ })
8788 elif form == "BITS" :
8889 match = re .findall (r"^([01]{8}),(.{0,23})$" , body .rstrip ())
8990 if not match :
@@ -94,7 +95,26 @@ def parse_telemetry_config(body):
9495 parsed .update ({
9596 't%s' % form : bits ,
9697 'title' : title .strip (' ' )
97- })
98+ })
9899
99100 return (body , parsed )
100101
102+
103+ def parse_telemetry_report (text ):
104+ temp = text .split ("," )
105+ parsed = {}
106+
107+ if len (temp ) == 7 :
108+
109+ seq = int (temp [0 ].replace ('#' , '' ))
110+ values = list (map (float , temp [1 :6 ]))
111+
112+ parsed .update ({
113+ 'telemetry' : {
114+ 'seq' : seq ,
115+ 'vals' : values ,
116+ 'bits' : temp [6 ]
117+ }
118+ })
119+
120+ return '' , parsed
0 commit comments