Mercurial > templog
annotate server/ts.py @ 488:4792e9910cde
watcher script
author | Matt Johnston <matt@ucc.asn.au> |
---|---|
date | Sun, 09 Feb 2014 11:41:13 +0800 |
parents | 2607e4f322cf |
children |
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? |
403 | 4 EXTRA_WAKEUP = -3 |
329
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 |
438 | 23 import socket |
395
f0ddb75bcf04
main.c : add a delay before turning on uart
Matt Johnston <matt@ucc.asn.au>
parents:
388
diff
changeset
|
24 |
f0ddb75bcf04
main.c : add a delay before turning on uart
Matt Johnston <matt@ucc.asn.au>
parents:
388
diff
changeset
|
25 L = logging.info |
f0ddb75bcf04
main.c : add a delay before turning on uart
Matt Johnston <matt@ucc.asn.au>
parents:
388
diff
changeset
|
26 W = logging.warning |
f0ddb75bcf04
main.c : add a delay before turning on uart
Matt Johnston <matt@ucc.asn.au>
parents:
388
diff
changeset
|
27 E = logging.error |
334 | 28 |
29 import config | |
328
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
30 |
332
05c1249da994
- Move crc16 to utils and fix it
Matt Johnston <matt@ucc.asn.au>
parents:
331
diff
changeset
|
31 from utils import monotonic_time, retry, readline, crc16 |
372 | 32 import utils |
327
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
33 |
395
f0ddb75bcf04
main.c : add a delay before turning on uart
Matt Johnston <matt@ucc.asn.au>
parents:
388
diff
changeset
|
34 import bluetooth |
327
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 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
|
37 s = bluetooth.BluetoothSocket( bluetooth.RFCOMM ) |
403 | 38 L("connecting") |
395
f0ddb75bcf04
main.c : add a delay before turning on uart
Matt Johnston <matt@ucc.asn.au>
parents:
388
diff
changeset
|
39 s.connect((addr, 1)) |
397
f1428cddb882
handle new next_wake format
Matt Johnston <matt@ucc.asn.au>
parents:
395
diff
changeset
|
40 s.setblocking(False) |
403 | 41 s.settimeout(1) |
397
f1428cddb882
handle new next_wake format
Matt Johnston <matt@ucc.asn.au>
parents:
395
diff
changeset
|
42 |
327
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
43 return s |
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
44 |
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
45 |
418 | 46 def flush(sock): |
429 | 47 ret = [] |
48 while True: | |
49 l = readline(sock) | |
50 if l: | |
51 ret.append(l) | |
52 else: | |
53 break | |
54 return ret | |
55 | |
56 def encode_extra(extra_lines): | |
57 return ['extra%d=%s' % (n, l.strip()) for (n,l) in enumerate(extra_lines)] | |
418 | 58 |
328
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
59 @retry() |
327
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
60 def fetch(sock): |
429 | 61 extra_lines = flush(sock) |
327
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
62 sock.send("fetch\n") |
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
63 |
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
64 crc = 0 |
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
65 |
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
66 lines = [] |
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
67 l = readline(sock) |
429 | 68 if not l: |
69 return None | |
70 | |
327
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
71 if l != 'START\n': |
429 | 72 W("Bad expected START line '%s'\n" % l.rstrip('\n')) |
73 extra_lines.append(l) | |
74 return encode_extra(extra_lines) | |
327
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
75 crc = crc16(l, crc) |
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
76 |
330
7ac6b8846eea
- some fixes for server code
Matt Johnston <matt@ucc.asn.au>
parents:
329
diff
changeset
|
77 while True: |
327
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 |
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
80 crc = crc16(l, crc) |
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
81 |
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
82 if l == 'END\n': |
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
83 break |
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
84 |
333
298e502fdcd4
Add some web server handling
Matt Johnston <matt@ucc.asn.au>
parents:
332
diff
changeset
|
85 lines.append(l.rstrip('\n')) |
327
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
86 |
429 | 87 lines += encode_extra(extra_lines) |
88 | |
395
f0ddb75bcf04
main.c : add a delay before turning on uart
Matt Johnston <matt@ucc.asn.au>
parents:
388
diff
changeset
|
89 for d in lines: |
f0ddb75bcf04
main.c : add a delay before turning on uart
Matt Johnston <matt@ucc.asn.au>
parents:
388
diff
changeset
|
90 L("Received: %s" % d) |
f0ddb75bcf04
main.c : add a delay before turning on uart
Matt Johnston <matt@ucc.asn.au>
parents:
388
diff
changeset
|
91 |
327
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
92 l = readline(sock) |
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
93 recv_crc = None |
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
94 try: |
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
95 k, v = l.rstrip('\n').split('=') |
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
96 if k == 'CRC': |
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
97 recv_crc = int(v) |
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
98 if recv_crc < 0 or recv_crc > 0xffff: |
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
99 recv_crc = None |
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
100 except ValueError: |
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
101 pass |
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
102 |
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
103 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
|
104 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
|
105 return None |
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
106 |
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
107 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
|
108 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
|
109 return None |
5639c74f2cbb
untested simple server proxy code
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
110 |
333
298e502fdcd4
Add some web server handling
Matt Johnston <matt@ucc.asn.au>
parents:
332
diff
changeset
|
111 return lines |
328
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
112 |
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
113 @retry() |
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
114 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
|
115 if TESTING: |
348 | 116 return 99 |
395
f0ddb75bcf04
main.c : add a delay before turning on uart
Matt Johnston <matt@ucc.asn.au>
parents:
388
diff
changeset
|
117 L("Sending btoff") |
418 | 118 flush(sock) |
328
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
119 sock.send("btoff\n"); |
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
120 # read newline |
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
121 l = readline(sock) |
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
122 if not l: |
395
f0ddb75bcf04
main.c : add a delay before turning on uart
Matt Johnston <matt@ucc.asn.au>
parents:
388
diff
changeset
|
123 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
|
124 return None |
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
125 |
397
f1428cddb882
handle new next_wake format
Matt Johnston <matt@ucc.asn.au>
parents:
395
diff
changeset
|
126 if not l.startswith('next_wake'): |
395
f0ddb75bcf04
main.c : add a delay before turning on uart
Matt Johnston <matt@ucc.asn.au>
parents:
388
diff
changeset
|
127 W("Bad response to btoff '%s'" % l) |
348 | 128 return None |
397
f1428cddb882
handle new next_wake format
Matt Johnston <matt@ucc.asn.au>
parents:
395
diff
changeset
|
129 L("Next wake line %s" % l) |
328
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
130 |
397
f1428cddb882
handle new next_wake format
Matt Johnston <matt@ucc.asn.au>
parents:
395
diff
changeset
|
131 toks = dict(v.split('=') for v in l.split(',')) |
f1428cddb882
handle new next_wake format
Matt Johnston <matt@ucc.asn.au>
parents:
395
diff
changeset
|
132 |
398 | 133 rem = int(toks['rem']) |
134 tick_secs = int(toks['tick_secs']) | |
405
d9b78a1bdd1d
fix off-by-one in remainder code
Matt Johnston <matt@ucc.asn.au>
parents:
400
diff
changeset
|
135 tick_wake = int(toks['tick_wake']) + 1 |
398 | 136 next_wake = int(toks['next_wake']) |
137 | |
138 rem_secs = float(rem) / tick_wake * tick_secs | |
139 | |
140 next_wake_secs = next_wake - rem_secs | |
141 L("next_wake_secs %f\n", next_wake_secs) | |
142 return next_wake_secs | |
328
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
143 |
338 | 144 @retry() |
145 def clear_meas(sock): | |
418 | 146 flush(sock) |
338 | 147 sock.send("clear\n"); |
148 l = readline(sock) | |
149 if l and l.rstrip() == 'cleared': | |
150 return True | |
151 | |
395
f0ddb75bcf04
main.c : add a delay before turning on uart
Matt Johnston <matt@ucc.asn.au>
parents:
388
diff
changeset
|
152 E("Bad response to clear '%s'" % str(l)) |
338 | 153 return False |
154 | |
334 | 155 def send_results(lines): |
335 | 156 enc_lines = binascii.b2a_base64(zlib.compress('\n'.join(lines))) |
342 | 157 mac = hmac.new(config.HMAC_KEY, enc_lines).hexdigest() |
334 | 158 |
342 | 159 url_data = urllib.urlencode( {'lines': enc_lines, 'hmac': mac} ) |
334 | 160 con = urllib2.urlopen(config.UPDATE_URL, url_data) |
338 | 161 result = con.read(100) |
162 if result == 'OK': | |
163 return True | |
164 else: | |
395
f0ddb75bcf04
main.c : add a delay before turning on uart
Matt Johnston <matt@ucc.asn.au>
parents:
388
diff
changeset
|
165 W("Bad result '%s'" % result) |
338 | 166 return False |
334 | 167 |
328
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
168 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
|
169 L("do_comms") |
328
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
170 d = None |
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
171 # 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
|
172 d = fetch(sock) |
328
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
173 if not d: |
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
174 return |
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
175 |
333
298e502fdcd4
Add some web server handling
Matt Johnston <matt@ucc.asn.au>
parents:
332
diff
changeset
|
176 res = send_results(d) |
328
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
177 if not res: |
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
178 return |
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
179 |
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
180 clear_meas(sock) |
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
181 |
416 | 182 next_wake = 600 |
183 #next_wake = turn_off(sock) | |
438 | 184 #sock.close() |
328
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
185 return next_wake |
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
186 |
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
187 testcount = 0 |
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
188 |
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
189 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
|
190 until = monotonic_time() + secs |
328
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
191 while True: |
330
7ac6b8846eea
- some fixes for server code
Matt Johnston <matt@ucc.asn.au>
parents:
329
diff
changeset
|
192 length = until - monotonic_time() |
328
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
193 if length <= 0: |
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
194 return |
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
195 time.sleep(length) |
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
196 |
395
f0ddb75bcf04
main.c : add a delay before turning on uart
Matt Johnston <matt@ucc.asn.au>
parents:
388
diff
changeset
|
197 def setup_logging(): |
f0ddb75bcf04
main.c : add a delay before turning on uart
Matt Johnston <matt@ucc.asn.au>
parents:
388
diff
changeset
|
198 logging.basicConfig(format='%(asctime)s %(message)s', |
397
f1428cddb882
handle new next_wake format
Matt Johnston <matt@ucc.asn.au>
parents:
395
diff
changeset
|
199 datefmt='%m/%d/%Y %I:%M:%S %p', |
f1428cddb882
handle new next_wake format
Matt Johnston <matt@ucc.asn.au>
parents:
395
diff
changeset
|
200 level=logging.INFO) |
395
f0ddb75bcf04
main.c : add a delay before turning on uart
Matt Johnston <matt@ucc.asn.au>
parents:
388
diff
changeset
|
201 |
438 | 202 def get_net_socket(host, port): |
203 s = socket.create_connection((host, port)) | |
204 s.setblocking(False) | |
205 s.settimeout(1) | |
206 return s | |
207 | |
328
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
208 def main(): |
395
f0ddb75bcf04
main.c : add a delay before turning on uart
Matt Johnston <matt@ucc.asn.au>
parents:
388
diff
changeset
|
209 setup_logging() |
f0ddb75bcf04
main.c : add a delay before turning on uart
Matt Johnston <matt@ucc.asn.au>
parents:
388
diff
changeset
|
210 |
f0ddb75bcf04
main.c : add a delay before turning on uart
Matt Johnston <matt@ucc.asn.au>
parents:
388
diff
changeset
|
211 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
|
212 |
371 | 213 if '--daemon' in sys.argv: |
214 utils.cheap_daemon() | |
215 | |
403 | 216 next_wake_time = 0 |
438 | 217 |
328
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
218 while True: |
329
740438e21ea0
Fix bugs in server code (try actually running it)
Matt Johnston <matt@ucc.asn.au>
parents:
328
diff
changeset
|
219 sock = None |
740438e21ea0
Fix bugs in server code (try actually running it)
Matt Johnston <matt@ucc.asn.au>
parents:
328
diff
changeset
|
220 try: |
438 | 221 sock = get_net_socket(config.SERIAL_HOST, config.SERIAL_PORT) |
329
740438e21ea0
Fix bugs in server code (try actually running it)
Matt Johnston <matt@ucc.asn.au>
parents:
328
diff
changeset
|
222 except Exception, e: |
400 | 223 #logging.exception("Error connecting") |
395
f0ddb75bcf04
main.c : add a delay before turning on uart
Matt Johnston <matt@ucc.asn.au>
parents:
388
diff
changeset
|
224 pass |
438 | 225 |
226 if not sock: | |
227 sleep_for(config.SLEEP_TIME) | |
228 continue | |
229 | |
230 while True: | |
328
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
231 try: |
438 | 232 do_comms(sock) |
233 sleep_for(config.SLEEP_TIME) | |
328
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
234 except Exception, e: |
395
f0ddb75bcf04
main.c : add a delay before turning on uart
Matt Johnston <matt@ucc.asn.au>
parents:
388
diff
changeset
|
235 logging.exception("Error in do_comms") |
438 | 236 break |
328
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
237 |
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
238 if __name__ == '__main__': |
46070aaf29ea
A bit of work on the server python
Matt Johnston <matt@ucc.asn.au>
parents:
327
diff
changeset
|
239 main() |