mirror of
https://gitea.osmocom.org/sim-card/simtrace2.git
synced 2026-03-16 21:28:33 +03:00
Added pts parsing
This commit is contained in:
74
usb_application/pts_split.py
Executable file
74
usb_application/pts_split.py
Executable file
@@ -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()
|
||||
Reference in New Issue
Block a user