summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Cady <d@jerkface.net>2017-01-13 07:43:02 +0000
committerAndrew Cady <d@jerkface.net>2017-01-17 14:58:07 +0000
commit1cdd4d1d8a1407ac92ae77d50283a4f3c23191d9 (patch)
treea464e6412b891a41d43ff58f8fce86c97054d1e5
parent1c7351722dab02b01b4d76565f5b16bdcbd61404 (diff)
Output dexcom connection status
Also output extra debug info with command line option '-v'
-rw-r--r--dexcom_reader/dexcom_dumper.py60
1 files changed, 48 insertions, 12 deletions
diff --git a/dexcom_reader/dexcom_dumper.py b/dexcom_reader/dexcom_dumper.py
index 4a14762..9708f36 100644
--- a/dexcom_reader/dexcom_dumper.py
+++ b/dexcom_reader/dexcom_dumper.py
@@ -1,7 +1,8 @@
1import constants 1import constants
2import readdata 2import readdata
3from sys import stdout 3import sys
4from datetime import timedelta 4from sys import stdout, stderr
5from datetime import timedelta, datetime
5from time import sleep 6from time import sleep
6 7
7from optparse import OptionParser 8from optparse import OptionParser
@@ -17,10 +18,12 @@ parser.add_option("-a", "--all", action="store_const", dest="command", const="d
17parser.add_option("-p", "--poll", action="store_const", dest="command", const="poll", help="poll for latest CGM record") 18parser.add_option("-p", "--poll", action="store_const", dest="command", const="poll", help="poll for latest CGM record")
18 19
19parser.add_option("-n", type="int", dest="num_records", default=DEFAULT_PAGE_COUNT, help="number of pages of CGM records to display") 20parser.add_option("-n", type="int", dest="num_records", default=DEFAULT_PAGE_COUNT, help="number of pages of CGM records to display")
21parser.add_option("-v", "--verbose", action="store_true", dest="verbose", help="verbosity (currently for debugging)")
20 22
21(options, args) = parser.parse_args() 23(options, args) = parser.parse_args()
22 24
23command = options.command or "dump_cgm" 25command = options.command or "dump_cgm"
26VERBOSE = options.verbose
24 27
25def get_dexcom_reader(): 28def get_dexcom_reader():
26 if options.g5: 29 if options.g5:
@@ -56,33 +59,66 @@ def recent(t):
56 now = dr.ReadSystemTime() 59 now = dr.ReadSystemTime()
57 return t.system_time > now - timedelta(minutes=5) 60 return t.system_time > now - timedelta(minutes=5)
58 61
62def print_verbose(s):
63 global VERBOSE
64 if VERBOSE:
65 stderr.write('%s\n' % str(s))
66
59def read_recent_egv_data(): 67def read_recent_egv_data():
60 try: 68 try:
61 r = dr.ReadRecords('EGV_DATA', options.num_records)[-1] 69 r = dr.ReadRecords('EGV_DATA', options.num_records)[-1]
62 if recent(r) and not r.is_special and not r.display_only: 70 if recent(r) and not r.is_special and not r.display_only:
63 return r 71 return r
64 else: 72 else:
65 return None 73 return None
66 except: 74 except ValueError as v:
67 return None 75 if (v.args[0] == 'Attempting to use a port that is not open'):
76 return False
77 else:
78 print_verbose(v)
79 return None
80 except:
81 print_verbose(sys.exc_info)
82 return None
68 83
69def format_times(now, stamp): 84def format_times(now, stamp):
70 diff = (stamp - now).total_seconds() 85 diff = (stamp - now).total_seconds()
71 operand = '-' if diff < 0 else '+' # should always be - 86 operand = '-' if diff < 0 else '+' # should always be -
72 return '%s %s %d' % (now.strftime('%s'), operand, abs(diff)) 87 return '%s %s %d' % (now.strftime('%s'), operand, abs(diff))
73 88
89def print_localtime(str):
90 print '%s (system): %s' % (datetime.now().strftime('%s'), str)
91
92CONNECTED = None
93def connected(state):
94 global CONNECTED
95 if (state == CONNECTED):
96 return
97 else:
98 CONNECTED = state
99 print_localtime('dexcom receiver %s connected' % ('is' if state else 'is not'))
100
101def sleep_verbose(n):
102 print_verbose('sleep(%d)' % n)
103 sleep(n)
104
74def poll(): 105def poll():
106 print_localtime('dexcom_dumper started')
75 while True: 107 while True:
76 r = read_recent_egv_data() 108 r = read_recent_egv_data()
77 if r is None: 109 if r is None:
78 sleep(10) 110 connected(True)
111 sleep_verbose(10)
112 elif r is False:
113 connected(False)
114 sleep_verbose(10)
79 else: 115 else:
80 now = dr.ReadSystemTime() 116 now = dr.ReadSystemTime()
81 print '%s: %s %s' % (format_times(now, r.system_time), r.glucose, r.trend_arrow) 117 print '%s: %s %s' % (format_times(now, r.system_time), r.glucose, r.trend_arrow)
82 stdout.flush() 118 stdout.flush()
83 next_reading = (r.system_time - now + timedelta(minutes=5, seconds=2)).total_seconds() 119 next_reading = (r.system_time - now + timedelta(minutes=5, seconds=2)).total_seconds()
84 if (next_reading > 0): 120 if (next_reading > 0):
85 sleep(next_reading) 121 sleep_verbose(next_reading)
86 122
87{"dump_everything": dump_everything, 123{"dump_everything": dump_everything,
88 "dump_cgm": dump_cgm, 124 "dump_cgm": dump_cgm,