aboutsummaryrefslogtreecommitdiff
path: root/lib/python/Components/Converter/FrontendInfo.py
blob: 932c04e0cc27171f9636830b1cf57295078d98f6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
from Components.Converter.Converter import Converter

class FrontendInfo(Converter, object):
	BER = 0
	SNR = 1
	AGC = 2
	LOCK = 3

	def __init__(self, type, *args, **kwargs):
		Converter.__init__(self)
		if type == "BER":
			self.type = self.BER
		elif type == "SNR":
			self.type = self.SNR
		elif type == "AGC":
			self.type = self.AGC
		else:
			self.type = self.LOCK

	def getText(self):
		assert self.type != self.LOCK, "the text output of FrontendInfo cannot be used for lock info"
		if self.type == self.BER: # as count
			count = self.source.ber
			if count is not None:
				return str(count)
			else:
				return "N/A"
		elif self.type == self.AGC:
			percent = self.source.agc
		elif self.type == self.SNR:
			percent = self.source.snr
		
		if percent is None:
			return "N/A"

		return "%d %%" % (percent * 100 / 65536)

	def getBool(self):
		assert self.type in [self.LOCK, selef.BER], "the boolean output of FrontendInfo can only be used for lock or BER info"
		if self.type == self.LOCK:
			return self.source.lock
		elif:
			return self.source.ber > 0

	text = property(getText)

	boolean = property(getBool)

	def getValue(self):
		assert self.type != self.LOCK, "the value/range output of FrontendInfo can not be used for lock info"
		if self.type == self.AGC:
			return self.source.agc or 0
		elif self.type == self.SNR:
			return self.source.snr or 0
		elif self.type == self.BER:
			if self.BER < self.range:
				return self.BER or 0
			else:
				return self.range

	range = 65536
	value = property(getValue)