apdu_split without C code remains
diff --git a/usb_application/apdu_split.py b/usb_application/apdu_split.py
old mode 100644
new mode 100755
index 5413d79..c0e08db
--- a/usb_application/apdu_split.py
+++ b/usb_application/apdu_split.py
@@ -1,3 +1,5 @@
+#!/usr/bin/env python
+
 # Code ported from simtrace host program apdu_split.c
 #
 # (C) 2010 by Harald Welte <hwelte@hmw-consulting.de>
@@ -13,36 +15,24 @@
 
 from enum import Enum
 
-def Apdu_States(Enum):
-   	APDU_S_CLA = 1
-	APDU_S_INS = 2
-	APDU_S_P1 = 3
-	APDU_S_P2 = 4
-	APDU_S_P3 = 5
-	APDU_S_DATA = 6
-	APDU_S_DATA_SINGLE = 7
-	APDU_S_SW1 = 8
-	APDU_S_SW2 = 9
-	APDU_S_FIN = 10
+class Apdu_splitter:
 
+    APDU_S_CLA = 1
+    APDU_S_INS = 2
+    APDU_S_P1 = 3
+    APDU_S_P2 = 4
+    APDU_S_P3 = 5
+    APDU_S_DATA = 6
+    APDU_S_DATA_SINGLE = 7
+    APDU_S_SW1 = 8
+    APDU_S_SW2 = 9
+    APDU_S_FIN = 10
 
-Apdu_S = {
-   	APDU_S_CLA :            func_APDU_S_CLA_P1_P2,
-	APDU_S_INS :            func_APDU_S_INS,
-	APDU_S_P1 :             func_APDU_S_CLA_P1_P2,
-	APDU_S_P2 :             func_APDU_S_CLA_P1_P2,
-	APDU_S_P3 :             func_APDU_S_P3,
-	APDU_S_DATA :           func_APDU_S_DATA,
-	APDU_S_DATA_SINGLE :    func_APDU_S_DATA_SINGLE,
-	APDU_S_SW1 :            func_APDU_S_SW1,
-	APDU_S_SW2 :            func_APDU_S_SW2 }
-
-class apdu_split:
     def __init__(self):
-        pass
-        # FIXME: init
+        self.state = APDU_S_CLA
+        self.buf = []
 
-    def apdu_split_inbyte(self, c):
+    def split(self, c):
         Apdu_S[state](c)
 
     def func_APDU_S_INS(self, c):
@@ -52,9 +42,9 @@
         self.buf.append(c)
         self.state += 1
 
-    def func_func_APDU_S_P3(self, c):
+    def func_APDU_S_P3(self, c):
         self.buf.append(c)
-        data_remaining = 256 if c == 0 else c
+        self.data_remaining = 256 if c == 0 else c
         self.state = func_APDU_S_SW1
 
     def func_APDU_S_DATA(self, c):
@@ -69,23 +59,45 @@
         self.state = APDU_S_SW1
 
     def func_APDU_S_SW1(self, c):
-        if (c == 0x60) {
+        if (c == 0x60):
             print("APDU_S_SW1: NULL")
         else:
             # check for 'all remaining' type ACK
             if c == self.ins or c == self.ins + 1 or c == ~(self.ins+1):
                 print("ACK")
-                self.state = APDU_S_DATA)
+                self.state = APDU_S_DATA
             else:
                 # check for 'only next byte' type ACK */
-                if c == ~(as->apdu_ins):
+                if c == ~(self.ins):
                     self.state = APDU_S_DATA_SINGLE
                 else:
                     # must be SW1
                     self.buf.append(c)
                     self.state = func_APDU_S_SW2
 
-    def func_APDU_S_SW2:
+    def func_APDU_S_SW2(self, c):
         self.buf.append(c)
-        print("APDU:", self.buf, self.apdu_len)
+        print("APDU:", self.buf)
         self.state = APDU_S_FIN
+
+    Apdu_S = {
+            APDU_S_CLA :            func_APDU_S_CLA_P1_P2,
+            APDU_S_INS :            func_APDU_S_INS,
+            APDU_S_P1 :             func_APDU_S_CLA_P1_P2,
+            APDU_S_P2 :             func_APDU_S_CLA_P1_P2,
+            APDU_S_P3 :             func_APDU_S_P3,
+            APDU_S_DATA :           func_APDU_S_DATA,
+            APDU_S_DATA_SINGLE :    func_APDU_S_DATA_SINGLE,
+            APDU_S_SW1 :            func_APDU_S_SW1,
+            APDU_S_SW2 :            func_APDU_S_SW2 }
+
+
+if __name__ == '__main__':
+    msg = [0xA0, 0xA4, 0x00, 0x00, 0x02]
+    apdus = Apdu_splitter()
+
+    for c in msg:
+        print(c)
+        apdus.split(c)
+
+