#!/usr/bin/env python

import socket
import time
from struct import *

BIT0 = '\x03'
BIT1 = '\x1F'
BITS_PER_BIT = 8
BUFFER_SIZE = 1024

def int_to_bitval(n):
  output = ''
  for i in xrange(8):
    if n & (1 << (7-i)):
      output += BIT1
    else:
      output += BIT0
  return output

def convert_image_raw(d):
  res = pack('<h', len(d) * BITS_PER_BIT)
  for i in d:
    res += int_to_bitval(i)

  return res

def display(s, d):
  s.send('4')
  time.sleep(0.1)
  s.send(convert_image_raw(d))



#TCP_IP = '127.0.0.1'
#TCP_PORT = 8000
TCP_IP = '192.168.178.248'
TCP_PORT = 80

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((TCP_IP, TCP_PORT))
for i in xrange(100):
#s.send(convert_image_raw([0, 0, 0, 200, 0, 0, 0, 200, 0, 0, 0, 200, 0, 0, 0, 200, 200, 200, 100, 100, 100, 140, 140, 140, 255, 255, 255, 0, 10, 0, 0, 0, 10, 10, 0, 0, 10, 10, 10, 1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4, 5, 5, 5, 6, 6, 6, 24, 24, 24, 0, 0, 0, 0, 0, 0]))
  #for i in xrange(100, 255, 10):
    #display(s, [i for x in range(180)])
  #display(s, [30 for x in range(180)])
  #display(s, [0 for x in range(180)])
  for i in xrange(0, 180, 3):
    print 'display ' + str(i) + '\n'
    display(s, [100 if (x == i or x == i+3 or x == i+6)  else 0 for x in range(180)])

data = s.recv(BUFFER_SIZE)
print "received data:", data
data = s.recv(BUFFER_SIZE)
print "received data:", data
data = s.recv(BUFFER_SIZE)
print "received data:", data
data = s.recv(BUFFER_SIZE)
print "received data:", data
data = s.recv(BUFFER_SIZE)
print "received data:", data
s.close()

