Mercurial > templog
annotate server/ts.py @ 395:f0ddb75bcf04
main.c : add a delay before turning on uart
server : try and improve timeouts, get rid of lightblue, don't use https,
use python logging module
author | Matt Johnston <matt@ucc.asn.au> |
---|---|
date | Sun, 15 Jul 2012 21:49:59 +0800 |
parents | b33045e7e08e |
children | 231662c6690c |
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 |
329
740438e21ea0
Fix bugs in server code (try actually running it)
Matt Johnston <matt@ucc.asn.au>
parents:
328
diff
changeset
|
3 # 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
|
4 EXTRA_WAKEUP = 0 |
740438e21ea0
Fix bugs in server code (try actually running it)
Matt Johnston <matt@ucc.asn.au>
parents:
328
diff
changeset
|
5 |
330
7ac6b8846eea
- some fixes for server code
Matt Johnston <matt@ucc.asn.au>
parents:
329
diff
changeset
|
6 FETCH_TRIES = 3 |
7ac6b8846eea
- some fixes for server code
Matt Johnston <matt@ucc.asn.au>
parents:
329
diff
changeset
|
7 |
329
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. |
348 | 9 TESTING = False |
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 |
333
298e502fdcd4
Add some web server handling
Matt Johnston <matt@ucc.asn.au>
parents:
332
diff
changeset
|
12 # for wrt |
298e502fdcd4
Add some web server handling
Matt Johnston <matt@ucc.asn.au>
parents:
332
diff
changeset
|
13 sys.path.append('/root/python') |
298e502fdcd4
Add some web server handling
Matt Johnston <matt@ucc.asn.au>
parents:
332
diff
changeset
|
14 import httplib |
328
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
15 import time |
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
16 import traceback |
334 | 17 import binascii |
18 import hmac | |
340 | 19 import zlib |
342 | 20 import urllib |
21 import urllib2 | |
395
f0ddb75bcf04
main.c : add a delay before turning on uart
Matt Johnston <matt@ucc.asn.au>
parents:
388
diff
changeset
|
22 import logging |
f0ddb75bcf04
main.c : add a delay before turning on uart
Matt Johnston <matt@ucc.asn.au>
parents:
388
diff
changeset
|
23 |
f0ddb75bcf04
main.c : add a delay before turning on uart
Matt Johnston <matt@ucc.asn.au>
parents:
388
diff
changeset
|
24 L = logging.info |
f0ddb75bcf04
main.c : add a delay before turning on uart
Matt Johnston <matt@ucc.asn.au>
parents:
388
diff
changeset
|
25 W = logging.warning |
f0ddb75bcf04
main.c : add a delay before turning on uart
Matt Johnston <matt@ucc.asn.au>
parents:
388
diff
changeset
|
26 E = logging.error |
334 | 27 |
28 import config | |
328
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
29 |
332
05c1249da994
- Move crc16 to utils and fix it
Matt Johnston <matt@ucc.asn.au>
parents:
331
diff
changeset
|
30 from utils import monotonic_time, retry, readline, crc16 |
372 | 31 import utils |
327
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
32 |
395
f0ddb75bcf04
main.c : add a delay before turning on uart
Matt Johnston <matt@ucc.asn.au>
parents:
388
diff
changeset
|
33 import bluetooth |
327
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
34 |
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
35 def get_socket(addr): |
395
f0ddb75bcf04
main.c : add a delay before turning on uart
Matt Johnston <matt@ucc.asn.au>
parents:
388
diff
changeset
|
36 s = bluetooth.BluetoothSocket( bluetooth.RFCOMM ) |
f0ddb75bcf04
main.c : add a delay before turning on uart
Matt Johnston <matt@ucc.asn.au>
parents:
388
diff
changeset
|
37 s.settimeout(1) |
f0ddb75bcf04
main.c : add a delay before turning on uart
Matt Johnston <matt@ucc.asn.au>
parents:
388
diff
changeset
|
38 s.connect((addr, 1)) |
330
7ac6b8846eea
- some fixes for server code
Matt Johnston <matt@ucc.asn.au>
parents:
329
diff
changeset
|
39 |
327
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
40 return s |
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
41 |
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
42 |
328
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
43 @retry() |
327
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
44 def fetch(sock): |
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
45 sock.send("fetch\n") |
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
46 |
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
47 crc = 0 |
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
48 |
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
49 lines = [] |
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
50 l = readline(sock) |
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
51 if l != 'START\n': |
395
f0ddb75bcf04
main.c : add a delay before turning on uart
Matt Johnston <matt@ucc.asn.au>
parents:
388
diff
changeset
|
52 W("Bad expected START line '%s'\n" % l.rstrip('\n')) |
327
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
53 return None |
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
54 crc = crc16(l, crc) |
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
55 |
330
7ac6b8846eea
- some fixes for server code
Matt Johnston <matt@ucc.asn.au>
parents:
329
diff
changeset
|
56 while True: |
327
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
57 l = readline(sock) |
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
58 |
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
59 crc = crc16(l, crc) |
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
60 |
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
61 if l == 'END\n': |
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
62 break |
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
63 |
333
298e502fdcd4
Add some web server handling
Matt Johnston <matt@ucc.asn.au>
parents:
332
diff
changeset
|
64 lines.append(l.rstrip('\n')) |
327
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
65 |
395
f0ddb75bcf04
main.c : add a delay before turning on uart
Matt Johnston <matt@ucc.asn.au>
parents:
388
diff
changeset
|
66 for d in lines: |
f0ddb75bcf04
main.c : add a delay before turning on uart
Matt Johnston <matt@ucc.asn.au>
parents:
388
diff
changeset
|
67 L("Received: %s" % d) |
f0ddb75bcf04
main.c : add a delay before turning on uart
Matt Johnston <matt@ucc.asn.au>
parents:
388
diff
changeset
|
68 |
327
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 recv_crc = None |
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
71 try: |
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
72 k, v = l.rstrip('\n').split('=') |
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
73 if k == 'CRC': |
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
74 recv_crc = int(v) |
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
75 if recv_crc < 0 or recv_crc > 0xffff: |
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
76 recv_crc = None |
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
77 except ValueError: |
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
78 pass |
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
79 |
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
80 if recv_crc is None: |
395
f0ddb75bcf04
main.c : add a delay before turning on uart
Matt Johnston <matt@ucc.asn.au>
parents:
388
diff
changeset
|
81 W("Bad expected CRC line '%s'\n" % l.rstrip('\n')) |
327
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
82 return None |
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
83 |
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
84 if recv_crc != crc: |
395
f0ddb75bcf04
main.c : add a delay before turning on uart
Matt Johnston <matt@ucc.asn.au>
parents:
388
diff
changeset
|
85 W("Bad CRC: calculated 0x%x vs received 0x%x\n" % (crc, recv_crc)) |
327
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
86 return None |
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
87 |
333
298e502fdcd4
Add some web server handling
Matt Johnston <matt@ucc.asn.au>
parents:
332
diff
changeset
|
88 return lines |
328
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
89 |
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
90 @retry() |
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
91 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
|
92 if TESTING: |
348 | 93 return 99 |
395
f0ddb75bcf04
main.c : add a delay before turning on uart
Matt Johnston <matt@ucc.asn.au>
parents:
388
diff
changeset
|
94 L("Sending btoff") |
328
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
95 sock.send("btoff\n"); |
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
96 # read newline |
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
97 l = readline(sock) |
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
98 if not l: |
395
f0ddb75bcf04
main.c : add a delay before turning on uart
Matt Johnston <matt@ucc.asn.au>
parents:
388
diff
changeset
|
99 W("Bad response to btoff") |
328
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
100 return None |
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
101 |
348 | 102 if not l.startswith('off:'): |
395
f0ddb75bcf04
main.c : add a delay before turning on uart
Matt Johnston <matt@ucc.asn.au>
parents:
388
diff
changeset
|
103 W("Bad response to btoff '%s'" % l) |
348 | 104 return None |
328
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
105 off, next_wake = l.rstrip().split(':') |
395
f0ddb75bcf04
main.c : add a delay before turning on uart
Matt Johnston <matt@ucc.asn.au>
parents:
388
diff
changeset
|
106 L("Next wake %s" % next_wake) |
328
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
107 |
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
108 return int(next_wake) |
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
109 |
338 | 110 @retry() |
111 def clear_meas(sock): | |
112 sock.send("clear\n"); | |
113 l = readline(sock) | |
114 if l and l.rstrip() == 'cleared': | |
115 return True | |
116 | |
395
f0ddb75bcf04
main.c : add a delay before turning on uart
Matt Johnston <matt@ucc.asn.au>
parents:
388
diff
changeset
|
117 E("Bad response to clear '%s'" % str(l)) |
338 | 118 return False |
119 | |
334 | 120 def send_results(lines): |
335 | 121 enc_lines = binascii.b2a_base64(zlib.compress('\n'.join(lines))) |
342 | 122 mac = hmac.new(config.HMAC_KEY, enc_lines).hexdigest() |
334 | 123 |
342 | 124 url_data = urllib.urlencode( {'lines': enc_lines, 'hmac': mac} ) |
334 | 125 con = urllib2.urlopen(config.UPDATE_URL, url_data) |
338 | 126 result = con.read(100) |
127 if result == 'OK': | |
128 return True | |
129 else: | |
395
f0ddb75bcf04
main.c : add a delay before turning on uart
Matt Johnston <matt@ucc.asn.au>
parents:
388
diff
changeset
|
130 W("Bad result '%s'" % result) |
338 | 131 return False |
334 | 132 |
328
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
133 def do_comms(sock): |
395
f0ddb75bcf04
main.c : add a delay before turning on uart
Matt Johnston <matt@ucc.asn.au>
parents:
388
diff
changeset
|
134 L("do_comms") |
328
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
135 d = None |
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
136 # serial could be unreliable, try a few times |
395
f0ddb75bcf04
main.c : add a delay before turning on uart
Matt Johnston <matt@ucc.asn.au>
parents:
388
diff
changeset
|
137 d = fetch(sock) |
328
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
138 if not d: |
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
139 return |
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
140 |
333
298e502fdcd4
Add some web server handling
Matt Johnston <matt@ucc.asn.au>
parents:
332
diff
changeset
|
141 res = send_results(d) |
328
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
142 if not res: |
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
143 return |
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
144 |
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
145 clear_meas(sock) |
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 next_wake = turn_off(sock) |
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
148 sock.close() |
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
149 return next_wake |
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
150 |
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
151 testcount = 0 |
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
152 |
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
153 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
|
154 until = monotonic_time() + secs |
328
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
155 while True: |
330
7ac6b8846eea
- some fixes for server code
Matt Johnston <matt@ucc.asn.au>
parents:
329
diff
changeset
|
156 length = until - monotonic_time() |
328
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
157 if length <= 0: |
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
158 return |
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
159 time.sleep(length) |
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
160 |
395
f0ddb75bcf04
main.c : add a delay before turning on uart
Matt Johnston <matt@ucc.asn.au>
parents:
388
diff
changeset
|
161 def setup_logging(): |
f0ddb75bcf04
main.c : add a delay before turning on uart
Matt Johnston <matt@ucc.asn.au>
parents:
388
diff
changeset
|
162 logging.basicConfig(format='%(asctime)s %(message)s', |
f0ddb75bcf04
main.c : add a delay before turning on uart
Matt Johnston <matt@ucc.asn.au>
parents:
388
diff
changeset
|
163 datefmt='%m/%d/%Y %I:%M:%S %p') |
f0ddb75bcf04
main.c : add a delay before turning on uart
Matt Johnston <matt@ucc.asn.au>
parents:
388
diff
changeset
|
164 |
328
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
165 def main(): |
395
f0ddb75bcf04
main.c : add a delay before turning on uart
Matt Johnston <matt@ucc.asn.au>
parents:
388
diff
changeset
|
166 setup_logging() |
f0ddb75bcf04
main.c : add a delay before turning on uart
Matt Johnston <matt@ucc.asn.au>
parents:
388
diff
changeset
|
167 |
f0ddb75bcf04
main.c : add a delay before turning on uart
Matt Johnston <matt@ucc.asn.au>
parents:
388
diff
changeset
|
168 L("Running templog rfcomm server") |
328
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
169 |
371 | 170 if '--daemon' in sys.argv: |
171 utils.cheap_daemon() | |
172 | |
328
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
173 while True: |
329
740438e21ea0
Fix bugs in server code (try actually running it)
Matt Johnston <matt@ucc.asn.au>
parents:
328
diff
changeset
|
174 sock = None |
740438e21ea0
Fix bugs in server code (try actually running it)
Matt Johnston <matt@ucc.asn.au>
parents:
328
diff
changeset
|
175 try: |
388
b33045e7e08e
move server config into config.py
Matt Johnston <matt@ucc.asn.au>
parents:
372
diff
changeset
|
176 sock = get_socket(config.BTADDR) |
329
740438e21ea0
Fix bugs in server code (try actually running it)
Matt Johnston <matt@ucc.asn.au>
parents:
328
diff
changeset
|
177 except Exception, e: |
395
f0ddb75bcf04
main.c : add a delay before turning on uart
Matt Johnston <matt@ucc.asn.au>
parents:
388
diff
changeset
|
178 pass |
f0ddb75bcf04
main.c : add a delay before turning on uart
Matt Johnston <matt@ucc.asn.au>
parents:
388
diff
changeset
|
179 #print>>sys.stderr, "Error connecting:" |
f0ddb75bcf04
main.c : add a delay before turning on uart
Matt Johnston <matt@ucc.asn.au>
parents:
388
diff
changeset
|
180 #traceback.print_exc(file=sys.stderr) |
f0ddb75bcf04
main.c : add a delay before turning on uart
Matt Johnston <matt@ucc.asn.au>
parents:
388
diff
changeset
|
181 next_wake_time = 0 |
328
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
182 if sock: |
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
183 try: |
395
f0ddb75bcf04
main.c : add a delay before turning on uart
Matt Johnston <matt@ucc.asn.au>
parents:
388
diff
changeset
|
184 avr_wake = do_comms(sock) |
f0ddb75bcf04
main.c : add a delay before turning on uart
Matt Johnston <matt@ucc.asn.au>
parents:
388
diff
changeset
|
185 next_wake_time = time.time() + avr_wake |
328
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
186 except Exception, e: |
395
f0ddb75bcf04
main.c : add a delay before turning on uart
Matt Johnston <matt@ucc.asn.au>
parents:
388
diff
changeset
|
187 logging.exception("Error in do_comms") |
328
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
188 |
395
f0ddb75bcf04
main.c : add a delay before turning on uart
Matt Johnston <matt@ucc.asn.au>
parents:
388
diff
changeset
|
189 next_wake_interval = next_wake_time - time.time() - EXTRA_WAKEUP |
f0ddb75bcf04
main.c : add a delay before turning on uart
Matt Johnston <matt@ucc.asn.au>
parents:
388
diff
changeset
|
190 sleep_time = config.SLEEP_TIME |
f0ddb75bcf04
main.c : add a delay before turning on uart
Matt Johnston <matt@ucc.asn.au>
parents:
388
diff
changeset
|
191 if next_wake_interval > 0: |
f0ddb75bcf04
main.c : add a delay before turning on uart
Matt Johnston <matt@ucc.asn.au>
parents:
388
diff
changeset
|
192 sleep_time = min(next_wake_interval, sleep_time) |
f0ddb75bcf04
main.c : add a delay before turning on uart
Matt Johnston <matt@ucc.asn.au>
parents:
388
diff
changeset
|
193 L("Sleeping for %d, next wake time %f" % (sleep_time, next_wake_time)) |
328
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
194 sleep_for(sleep_time) |
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
195 |
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
196 if __name__ == '__main__': |
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
197 main() |