FB2PNG: Add fb2png source to TWRP

  * Add Source of fb2png to TWRP tree
  * Android.mk by PhilZ-cwm6
  * Makefile for CrossCompiling via external toolchan by me (Talustus)

Change-Id: If9680688df6e4c9c567f74f46dfc303566b868ba
diff --git a/fb2png/ascreenshooter.py b/fb2png/ascreenshooter.py
new file mode 100644
index 0000000..1e99484
--- /dev/null
+++ b/fb2png/ascreenshooter.py
@@ -0,0 +1,106 @@
+#!/usr/bin/python
+
+import socket
+import sys
+import struct
+import time
+
+# debug
+VERBOSE = True
+
+def D(msg):
+    if VERBOSE: print(msg)
+
+# "struct fbinfo" is defined in $T/system/core/adb/framebuffer_service.c
+def fbinfo_unpack(data):
+    keys = ("version",
+            "bpp",
+            "size",
+            "width",
+            "height",
+            "red_offset",
+            "red_length",
+            "blue_offset",
+            "blue_length",
+            "green_offset",
+            "green_length",
+            "alpha_offset",
+            "alpha_length"
+        )
+    # the data is little-endian
+    values = struct.unpack("<IIIIIIIIIIIII",data)
+
+    D("dump struct fbinfo")
+    i = 0
+    for key in keys:
+        D("%14s: %-12d" % (key, values[i]))
+        i = i + 1
+
+
+
+def save():
+    f = open('dump', 'w')
+    while True:
+        data = s.recv(4096 * 16)
+        if data == "":
+            break
+        f.write(data)
+    f.close()
+
+
+def communicate(cmd=None):
+    if cmd != None:
+        buf = "%04x%s" % (len(cmd), cmd)
+        D("<< " + buf)
+        s.send(buf)
+    data = s.recv(4096)
+
+    D(">> [%s]" % len(data))
+    D(data)
+
+    if data[0:4] == 'FAIL':
+        return False
+    else:
+        return True
+
+
+target = ''
+# use getopt module in future
+for arg in sys.argv:
+    if arg == '-q':
+        VERBOSE = False
+    if target != 'any':
+        # compatiable with "adb -d", redirect commands to usb
+        if arg == '-d':
+            target = 'usb'
+        # compatiable with "adb -e", redirect commands to emulator
+        elif arg == '-e':
+            target = 'local'
+
+if target == '': target ='any'
+
+s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
+
+D("connecting")
+try:
+    s.connect(("localhost", 5037))
+except socket.error:
+    print 'Cannot connect to localhost:5037'
+    print socket.error
+    sys.exit(0)
+
+D("connected")
+
+if not communicate("host:transport-%s" % target):
+    sys.exit(1)
+#communicate("host:transport-usb:shell:ls /data")
+communicate("framebuffer:")
+
+data = s.recv(52)
+fbinfo_unpack(data)
+
+t0 = float(time.time())
+save()
+t1 = float(time.time())
+print t1 - t0
+