From 789a4013b4a1d8877e34255667665fdc7082f82e Mon Sep 17 00:00:00 2001 From: Christina Quast Date: Mon, 4 May 2015 15:29:07 +0200 Subject: [PATCH] Added pts parsing --- usb_application/pts_split.py | 74 ++++++++++++++++++++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100755 usb_application/pts_split.py diff --git a/usb_application/pts_split.py b/usb_application/pts_split.py new file mode 100755 index 00000000..2721d427 --- /dev/null +++ b/usb_application/pts_split.py @@ -0,0 +1,74 @@ +#!/usr/bin/env python + +from enum import Enum + +# FIXME: response! +class pts_states(Enum): + PTSS = 0 + PTS0 = 1 + PTS1 = 2 + PTS2 = 3 + PTS3 = 4 + PCK = 5 + +class Pts_splitter: + + def __init__(self): + self.state = pts_states.PTSS + self.buf = [] + + def func_PTS_PTSS(self, ptss): + self.state = pts_states.PTS0 + + def func_PTS_PTS0(self, pts0): + self.pts0 = pts0 + self.state = pts_states.PTS1 + + def func_PTS_PTS1(self, fidi): + print("pts0: ", self.pts0) + if (self.pts0 & 1<<4) != 0: + self.fidi = fidi + print("FiDi: ", fidi) + self.state = pts_states.PTS2 + else: + self.PTS_S[pts_states.PTS2](self, c) + + def func_PTS_PTS2(self, c): + if (self.pts0 & 1<<5) != 0: + print("ETU: ", c) + self.state = pts_states.PTS3 + else: + self.PTS_S[pts_states.PTS3](self, c) + + def func_PTS_PTS3(self, c): + if (self.pts0 & 1<<6) != 0: + print("RFU: ", c) + self.state = pts_states.PCK + else: + self.PTS_S[pts_states.PCK](self, c) + + def func_PTS_PCK(self, c): + print("PCK: ", c) + self.state = pts_states.PCK + + PTS_S = { + pts_states.PTSS : func_PTS_PTSS, + pts_states.PTS0 : func_PTS_PTS0, + pts_states.PTS1 : func_PTS_PTS1, + pts_states.PTS2 : func_PTS_PTS2, + pts_states.PTS3 : func_PTS_PTS3, + pts_states.PCK : func_PTS_PCK + } + + def split(self, c): + self.PTS_S[self.state](self, c) + +if __name__ == '__main__': + pts_msg1 = [0xff, 0x00, 0xff] + pts_msg_fidi = [0xff, (1<<4), 0x18, 0xff] + pts_msg_fidi_etu = [0xff, ((1<<4) | (1<<5)), 0x18, 0x01, 0xff] + pts = Pts_splitter() + for c in pts_msg1 + pts_msg_fidi + pts_msg_fidi_etu: + pts.split(c) + if (pts.state == pts_states.PCK): + pts = Pts_splitter()