Source code for decocare.download
import time
import logging
log = logging.getLogger( ).getChild(__name__)
import lib
import commands
class Downloader(object):
[docs] log_format = 'logs/'
def __init__(self, stick=None, device=None, log_format=log_format):
self.stick = stick
stick.open( )
self.device = device
self.log_format = log_format
def download(self):
[docs] """
Download a single page, copy paste from elsewhere.
"""
log.info("read HISTORY DATA")
comm = commands.ReadHistoryData(serial=self.device.serial, page=0)
self.device.execute(comm)
log.info('comm:READ history data page!!!:\n%s' % (lib.hexdump(comm.getData( ))))
comm.save(prefix=self.log_format)
class PageDownloader(Downloader):
[docs] log_format = 'logs/'
def __init__(self, stick=None, device=None, log_format=log_format):
self.stick = stick
stick.open( )
self.device = device
self.log_format = log_format
def read_current(self):
[docs]
log.info("read cur page number")
comm = commands.ReadCurPageNumber( )
self.device.execute(comm)
self.pages = comm.getData( )
log.info('attempting to read %s pages of history' % self.pages)
return self.pages
def download_page(self, x):
[docs] log.info('comm:XXX:READ HISTORY DATA page number: %r' % (x))
comm = commands.ReadHistoryData(serial=self.device.serial, params=[ x ] )
self.device.execute(comm)
page = comm.getData( )
comm.save(prefix=self.log_format)
log.info("XXX: READ HISTORY DATA page number %r!!:\n%s" % (x, lib.hexdump(page)))
time.sleep(.100)
def download(self):
[docs] self.read_current( )
for x in range(self.pages + 1):
log.info("read page %s" % x)
self.download_page(x)
if __name__ == '__main__':
import doctest
doctest.testmod( )
import sys
port = None
port = sys.argv[1:] and sys.argv[1] or False
serial_num = sys.argv[2:] and sys.argv[2] or False
if not port or not serial_num:
print "usage:\n%s <port> <serial>, eg /dev/ttyUSB0 208850" % sys.argv[0]
sys.exit(1)
import link
import stick
import session
from pprint import pformat
logging.basicConfig(stream=sys.stdout, level=logging.DEBUG)
log.info("howdy! I'm going to take a look at your pump download something info.")
stick = stick.Stick(link.Link(port, timeout=.400))
stick.open( )
session = session.Pump(stick, serial_num)
log.info(pformat(stick.interface_stats( )))
downloader = Downloader(stick, session)
downloader.download( )
downloader = PageDownloader(stick, session)
downloader.download( )
log.info(pformat(stick.interface_stats( )))
log.info("howdy! we downloaded everything.")