Mercurial > templog
annotate server/ts.py @ 329:740438e21ea0
Fix bugs in server code (try actually running it)
author | Matt Johnston <matt@ucc.asn.au> |
---|---|
date | Mon, 04 Jun 2012 23:50:42 +0800 |
parents | 46070aaf29ea |
children | 44c5ab5ea879 |
rev | line source |
---|---|
327
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
1 #!/usr/bin/env python2.7 |
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
2 |
328
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
3 BTADDR = "00:12:03:27:70:88" |
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
4 SLEEP_TIME = 180 |
329
740438e21ea0
Fix bugs in server code (try actually running it)
Matt Johnston <matt@ucc.asn.au>
parents:
328
diff
changeset
|
5 # time that the bluetooth takes to get going? |
740438e21ea0
Fix bugs in server code (try actually running it)
Matt Johnston <matt@ucc.asn.au>
parents:
328
diff
changeset
|
6 EXTRA_WAKEUP = 0 |
740438e21ea0
Fix bugs in server code (try actually running it)
Matt Johnston <matt@ucc.asn.au>
parents:
328
diff
changeset
|
7 |
740438e21ea0
Fix bugs in server code (try actually running it)
Matt Johnston <matt@ucc.asn.au>
parents:
328
diff
changeset
|
8 # avoid turning off the bluetooth etc. |
740438e21ea0
Fix bugs in server code (try actually running it)
Matt Johnston <matt@ucc.asn.au>
parents:
328
diff
changeset
|
9 TESTING = True |
328
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
10 |
327
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
11 import sys |
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
12 import httplib |
328
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
13 import time |
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
14 import traceback |
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
15 |
329
740438e21ea0
Fix bugs in server code (try actually running it)
Matt Johnston <matt@ucc.asn.au>
parents:
328
diff
changeset
|
16 from utils import monotonic_time, retry, readline |
327
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
17 |
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
18 lightblue = None |
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
19 try: |
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
20 import lightblue |
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
21 except ImportError: |
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
22 import bluetooth |
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
23 |
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
24 def get_socket(addr): |
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
25 if lightblue: |
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
26 s = lightblue.socket() |
329
740438e21ea0
Fix bugs in server code (try actually running it)
Matt Johnston <matt@ucc.asn.au>
parents:
328
diff
changeset
|
27 s.connect((addr, 1)) |
327
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
28 else: |
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
29 s = bluetooth.BluetoothSocket( bluetooth.RFCOMM ) |
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
30 s.connect((addr, 1)) |
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
31 |
328
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
32 s.setnonblocking(True) |
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
33 |
327
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
34 return s |
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
35 |
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
36 # from http://blog.stalkr.net/2011/04/pctf-2011-32-thats-no-bluetooth.html |
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
37 def crc16(buff, crc = 0, poly = 0x8408): |
328
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
38 l = len(buff) |
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
39 i = 0 |
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
40 while i < l: |
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
41 ch = ord(buff[i]) |
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
42 uc = 0 |
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
43 while uc < 8: |
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
44 if (crc & 1) ^ (ch & 1): |
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
45 crc = (crc >> 1) ^ poly |
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
46 else: |
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
47 crc >>= 1 |
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
48 ch >>= 1 |
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
49 uc += 1 |
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
50 i += 1 |
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
51 return crc |
327
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
52 |
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
53 |
328
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
54 @retry() |
327
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
55 def fetch(sock): |
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
56 sock.send("fetch\n") |
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
57 |
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
58 crc = 0 |
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
59 |
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
60 lines = [] |
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
61 l = readline(sock) |
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
62 if l != 'START\n': |
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
63 print>>sys.stderr, "Bad expected START line '%s'\n" % l.rstrip('\n') |
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
64 return None |
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
65 crc = crc16(l, crc) |
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
66 lines.append(l) |
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
67 |
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
68 while true: |
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
69 l = readline(sock) |
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
70 |
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
71 crc = crc16(l, crc) |
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
72 |
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
73 if l == 'END\n': |
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
74 break |
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
75 |
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
76 lines.append(l) |
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
77 |
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
78 l = readline(sock) |
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
79 recv_crc = None |
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
80 try: |
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
81 k, v = l.rstrip('\n').split('=') |
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
82 if k == 'CRC': |
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
83 recv_crc = int(v) |
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
84 if recv_crc < 0 or recv_crc > 0xffff: |
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
85 recv_crc = None |
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
86 except ValueError: |
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
87 pass |
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
88 |
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
89 if recv_crc is None: |
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
90 print>>sys.stderr, "Bad expected CRC line '%s'\n" % l.rstrip('\n') |
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
91 return None |
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
92 |
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
93 if recv_crc != crc: |
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
94 print>>sys.stderr, "Bad CRC: calculated 0x%x vs received 0x%x\n" % (crc, recv_crc) |
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
95 return None |
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
96 |
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
97 return ''.join(lines) |
328
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
98 |
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
99 @retry() |
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
100 def turn_off(sock): |
329
740438e21ea0
Fix bugs in server code (try actually running it)
Matt Johnston <matt@ucc.asn.au>
parents:
328
diff
changeset
|
101 if TESTING: |
740438e21ea0
Fix bugs in server code (try actually running it)
Matt Johnston <matt@ucc.asn.au>
parents:
328
diff
changeset
|
102 return None |
328
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
103 sock.send("btoff\n"); |
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
104 # read newline |
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
105 l = readline(sock) |
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
106 if not l: |
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
107 print>>sys.stderr, "Bad response to btoff\n" |
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
108 return None |
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
109 |
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
110 off, next_wake = l.rstrip().split(':') |
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
111 if off != 'Off': |
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
112 print>>sys.stderr, "Bad response to btoff '%s'\n" % l |
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
113 |
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
114 return int(next_wake) |
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
115 |
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
116 def do_comms(sock): |
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
117 d = None |
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
118 # serial could be unreliable, try a few times |
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
119 for i in range(FETCH_TRIES): |
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
120 d = fetch(sock) |
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
121 if d: |
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
122 break |
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
123 time.sleep(1) |
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
124 if not d: |
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
125 return |
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
126 |
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
127 res = send_results() |
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
128 if not res: |
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
129 return |
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
130 |
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
131 clear_meas(sock) |
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
132 |
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
133 next_wake = turn_off(sock) |
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
134 sock.close() |
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
135 return next_wake |
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
136 |
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
137 testcount = 0 |
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
138 |
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
139 def sleep_for(secs): |
329
740438e21ea0
Fix bugs in server code (try actually running it)
Matt Johnston <matt@ucc.asn.au>
parents:
328
diff
changeset
|
140 until = monotonic_time() + secs |
328
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
141 while True: |
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
142 length = until < monotonic_time() |
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
143 if length <= 0: |
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
144 return |
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
145 time.sleep(length) |
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
146 |
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
147 def main(): |
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
148 |
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
149 while True: |
329
740438e21ea0
Fix bugs in server code (try actually running it)
Matt Johnston <matt@ucc.asn.au>
parents:
328
diff
changeset
|
150 sock = None |
740438e21ea0
Fix bugs in server code (try actually running it)
Matt Johnston <matt@ucc.asn.au>
parents:
328
diff
changeset
|
151 try: |
740438e21ea0
Fix bugs in server code (try actually running it)
Matt Johnston <matt@ucc.asn.au>
parents:
328
diff
changeset
|
152 sock = get_socket(BTADDR) |
740438e21ea0
Fix bugs in server code (try actually running it)
Matt Johnston <matt@ucc.asn.au>
parents:
328
diff
changeset
|
153 except Exception, e: |
740438e21ea0
Fix bugs in server code (try actually running it)
Matt Johnston <matt@ucc.asn.au>
parents:
328
diff
changeset
|
154 print>>sys.stderr, "Error connecting:" |
740438e21ea0
Fix bugs in server code (try actually running it)
Matt Johnston <matt@ucc.asn.au>
parents:
328
diff
changeset
|
155 traceback.print_exc(file=sys.stderr) |
328
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
156 sleep_time = SLEEP_TIME |
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
157 if sock: |
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
158 next_wake = None |
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
159 try: |
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
160 next_wake = do_comms(sock) |
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
161 except Exception, e: |
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
162 print>>sys.stderr, "Error in do_comms:" |
329
740438e21ea0
Fix bugs in server code (try actually running it)
Matt Johnston <matt@ucc.asn.au>
parents:
328
diff
changeset
|
163 traceback.print_exc(file=sys.stderr) |
328
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
164 if next_wake: |
329
740438e21ea0
Fix bugs in server code (try actually running it)
Matt Johnston <matt@ucc.asn.au>
parents:
328
diff
changeset
|
165 sleep_time = min(next_wake+EXTRA_WAKEUP, sleep_time) |
328
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
166 |
329
740438e21ea0
Fix bugs in server code (try actually running it)
Matt Johnston <matt@ucc.asn.au>
parents:
328
diff
changeset
|
167 if TESTING: |
740438e21ea0
Fix bugs in server code (try actually running it)
Matt Johnston <matt@ucc.asn.au>
parents:
328
diff
changeset
|
168 print "Sleeping for %d" % sleep_time |
328
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
169 sleep_for(sleep_time) |
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
170 |
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
171 if __name__ == '__main__': |
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
172 main() |