blob: 2721d427ade96d46f0b640dd9cd38d9b0445ba84 [file] [log] [blame]
Christina Quast789a4012015-05-04 15:29:07 +02001#!/usr/bin/env python
2
3from enum import Enum
4
5# FIXME: response!
6class pts_states(Enum):
7 PTSS = 0
8 PTS0 = 1
9 PTS1 = 2
10 PTS2 = 3
11 PTS3 = 4
12 PCK = 5
13
14class Pts_splitter:
15
16 def __init__(self):
17 self.state = pts_states.PTSS
18 self.buf = []
19
20 def func_PTS_PTSS(self, ptss):
21 self.state = pts_states.PTS0
22
23 def func_PTS_PTS0(self, pts0):
24 self.pts0 = pts0
25 self.state = pts_states.PTS1
26
27 def func_PTS_PTS1(self, fidi):
28 print("pts0: ", self.pts0)
29 if (self.pts0 & 1<<4) != 0:
30 self.fidi = fidi
31 print("FiDi: ", fidi)
32 self.state = pts_states.PTS2
33 else:
34 self.PTS_S[pts_states.PTS2](self, c)
35
36 def func_PTS_PTS2(self, c):
37 if (self.pts0 & 1<<5) != 0:
38 print("ETU: ", c)
39 self.state = pts_states.PTS3
40 else:
41 self.PTS_S[pts_states.PTS3](self, c)
42
43 def func_PTS_PTS3(self, c):
44 if (self.pts0 & 1<<6) != 0:
45 print("RFU: ", c)
46 self.state = pts_states.PCK
47 else:
48 self.PTS_S[pts_states.PCK](self, c)
49
50 def func_PTS_PCK(self, c):
51 print("PCK: ", c)
52 self.state = pts_states.PCK
53
54 PTS_S = {
55 pts_states.PTSS : func_PTS_PTSS,
56 pts_states.PTS0 : func_PTS_PTS0,
57 pts_states.PTS1 : func_PTS_PTS1,
58 pts_states.PTS2 : func_PTS_PTS2,
59 pts_states.PTS3 : func_PTS_PTS3,
60 pts_states.PCK : func_PTS_PCK
61 }
62
63 def split(self, c):
64 self.PTS_S[self.state](self, c)
65
66if __name__ == '__main__':
67 pts_msg1 = [0xff, 0x00, 0xff]
68 pts_msg_fidi = [0xff, (1<<4), 0x18, 0xff]
69 pts_msg_fidi_etu = [0xff, ((1<<4) | (1<<5)), 0x18, 0x01, 0xff]
70 pts = Pts_splitter()
71 for c in pts_msg1 + pts_msg_fidi + pts_msg_fidi_etu:
72 pts.split(c)
73 if (pts.state == pts_states.PCK):
74 pts = Pts_splitter()