comparison server/utils.py @ 330:7ac6b8846eea

- some fixes for server code - don't turn off bluetooth in avr code
author Matt Johnston <matt@ucc.asn.au>
date Wed, 06 Jun 2012 22:32:49 +0800
parents 740438e21ea0
children 2943f62c8e62
comparison
equal deleted inserted replaced
329:740438e21ea0 330:7ac6b8846eea
1 import os 1 import os
2 import sys 2 import sys
3 import ctypes 3 import ctypes
4 import time 4 import time
5 import select 5 import select
6
7 lightblue = None
8 try:
9 import lightblue
10 except ImportError:
11 pass
6 12
7 DEFAULT_TRIES = 3 13 DEFAULT_TRIES = 3
8 READLINE_SELECT_TIMEOUT = 20 14 READLINE_SELECT_TIMEOUT = 20
9 15
10 __all__ = ('monotonic_time', 'retry') 16 __all__ = ('monotonic_time', 'retry')
55 return inner 61 return inner
56 62
57 def readline(sock): 63 def readline(sock):
58 timeout = READLINE_SELECT_TIMEOUT 64 timeout = READLINE_SELECT_TIMEOUT
59 buf = '' 65 buf = ''
60 while true: 66 while True:
61 (rlist, wlist, xlist) = select.select([sock], [], [], timeout) 67 if not lightblue:
62 if sock not in rlist: 68 (rlist, wlist, xlist) = select.select([sock], [], [], timeout)
63 # hit timeout 69 if sock not in rlist:
64 return None 70 # hit timeout
71 return None
65 72
66 c = sock.recv(1) 73 c = sock.recv(1)
74 if c == '':
75 # lightblue timeout
76 return None
67 if c == '\r': 77 if c == '\r':
68 continue 78 continue
69 79
70 buf.append(c) 80 buf.append(c)
71 if c == '\n': 81 if c == '\n':