import socket
import sys
import time
import serial  
   
#ser = serial.Serial(
#    port='/dev/XPort',
#    baudrate = 9600,
#    parity=serial.PARITY_NONE,
#    stopbits=serial.STOPBITS_ONE,
#    bytesize=serial.EIGHTBITS,
#    timeout=2
#)

# Create a TCP/IP socket
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
# Bind the socket to the port
server_address = ('localhost', 10000)
print >>sys.stderr, 'starting up on %s port %s' % server_address
sock.bind(server_address)
# Listen for incoming connections
sock.listen(1)

while True:
  # Wait for a connection
  print >>sys.stderr, 'waiting for a connection'
  connection, client_address = sock.accept()
  try:
    print >>sys.stderr, 'connection from', client_address
      # Receive the data in small chunks and retransmit it
    while True:
      data = connection.recv(16)
      print >>sys.stderr, 'received "%s"' % data
      if data:    
        line = data.split("\r\n")
        print >>sys.stderr, 'start "%s"' % line[0]
        if line[0]=="status": 
          x = ''        
          ser =serial.Serial('/dev/XPort',9600)
          ser.flushInput()
          time.sleep(0.5)
          x = ser.readline()
          connection.sendall(x)
          ser.close()
        if line[0]=='F1':
          my_s = ''
          ser =serial.Serial('/dev/XPort',9600)
          ser.write("1")
          ser.flush()
          ser.flushInput()
          time.sleep(2)
          my_s = ser.readline();
          lx = [x.strip() for x in my_s.split(',')]
          print >>sys.stderr, ' lx ', lx
          connection.sendall(my_s) 
          ser.close()          
      else:
        print >>sys.stderr, 'no more data from', client_address
        break
            
  finally:
  # Clean up the connection
    ser.close()
    connection.close()