Index: .gitignore =================================================================== diff -u -r8c39fe1f9affe360ee6a97c5e6243e58a5c27509 -r61479ce1965fdcf793913f5e58af92e56c3aea67 --- .gitignore (.../.gitignore) (revision 8c39fe1f9affe360ee6a97c5e6243e58a5c27509) +++ .gitignore (.../.gitignore) (revision 61479ce1965fdcf793913f5e58af92e56c3aea67) @@ -13,3 +13,4 @@ dist/ build/ dialin.egg-info/ +README.pdf Index: dialin/hd/hemodialysis_device.py =================================================================== diff -u -ra03128f183206dc430bc0e27f43d7f3aee62672d -r61479ce1965fdcf793913f5e58af92e56c3aea67 --- dialin/hd/hemodialysis_device.py (.../hemodialysis_device.py) (revision a03128f183206dc430bc0e27f43d7f3aee62672d) +++ dialin/hd/hemodialysis_device.py (.../hemodialysis_device.py) (revision 61479ce1965fdcf793913f5e58af92e56c3aea67) @@ -62,7 +62,7 @@ HD_OP_MODE_TREATMENT = 7 HD_OP_MODE_POST_TREATMENT = 8 - def __init__(self, can_interface="can0"): + def __init__(self, can_interface="can0", log_level=None): """ HD constructor using can bus @@ -74,7 +74,7 @@ hd_object = HD('can0') """ # Create listener - self.can_interface = DenaliCanMessenger(can_interface=can_interface) + self.can_interface = DenaliCanMessenger(can_interface=can_interface, log_level=log_level) self.can_interface.start() # register handler for HD operation mode broadcast messages Index: dialin/protocols/CAN.py =================================================================== diff -u -r10ed41d4e0580b54aa859c9ddde83183ff4f51e4 -r61479ce1965fdcf793913f5e58af92e56c3aea67 --- dialin/protocols/CAN.py (.../CAN.py) (revision 10ed41d4e0580b54aa859c9ddde83183ff4f51e4) +++ dialin/protocols/CAN.py (.../CAN.py) (revision 61479ce1965fdcf793913f5e58af92e56c3aea67) @@ -21,8 +21,8 @@ from time import sleep import sys import logging +import os - class DenaliMessage: BYTE_ORDER = 'little' START_BYTE = 0xA5 @@ -366,14 +366,29 @@ self.run = False self.sync_response_dictionary = {} self.logging_enabled = log_level is not None and log_level.upper() in ["DEBUG", "INFO", "WARNING", "ERROR", "CRITICAL"] + self.log_can_separate = log_level is not None and log_level.upper() in ["CAN_ONLY"] + self.log_can_file = "Dialin_CAN_Sent.log" + if os.path.exists(self.log_can_file): + os.remove(self.log_can_file) if self.logging_enabled: numeric_level = getattr(logging, log_level.upper(), logging.ERROR) - logging.basicConfig(format='%(asctime)s,%(msecs)d %(levelname)-8s [%(filename)s:%(lineno)d] %(message)s', - filename="dialin.log", - datefmt='%m-%d-%Y:%H:%M:%S', - level=numeric_level) # DEBUG, INFO, WARNING, ERROR, CRITICAL + self.logger = logging.getLogger("Dialin") + self.logger.setLevel(numeric_level) + fh = logging.FileHandler("Dialin.log") + fh.setLevel(numeric_level) + ch = logging.StreamHandler() + ch.setLevel(numeric_level) + formatter = logging.Formatter(fmt='%(asctime)s,%(msecs)d %(levelname)-8s [%(filename)s:%(lineno)d] %(message)s', + datefmt='%m-%d-%Y:%H:%M:%S') + fh.setFormatter(formatter) + ch.setFormatter(formatter) + + self.logger.addHandler(fh) + self.logger.addHandler(ch) + + if self.bus is not None: self.serial_listener_thread = threading.Thread(target=self.listener, daemon=True) @@ -549,7 +564,9 @@ data=packet, is_extended_id=False) - self.print_and_log(packet) + self.print_and_log(packet, log_level=logging.CRITICAL) + if self.log_can_separate: + self.do_log_can(packet) self.bus.send(packet, 0) # 0.1) # Sending @@ -575,6 +592,18 @@ # This value is None or it has a message depending of the listener return self.command_response_message + def do_log_can(self, packet, style="candump"): + if style == "candump": + with open(self.log_can_file, 'a') as f: + tmp = str(packet) + f.write("{0} {1} [{2}] {3}\n".format(self.bus.channel, + hex(packet.arbitration_id)[2:], + packet.dlc, tmp[-23:].upper())) + else: + with open(self.log_can_file, 'a') as f: + f.write("{0}\n".format(packet)) + + def print_and_log(self, message, log_level=logging.DEBUG): """ Prints a message if its severity is >= the current log level. @@ -588,16 +617,16 @@ if not self.logging_enabled: return - if logging.getLogger().getEffectiveLevel() <= log_level: + if self.logger.getEffectiveLevel() <= log_level: print(message) - if log_level == "debug": - logging.debug(message) - elif log_level == "info": - logging.info(message) - elif log_level == "warning": - logging.warning(message) - elif log_level == "error": - logging.error(message) - elif log_level == "critical": - logging.critical(message) + if log_level == logging.DEBUG: + self.logger.debug(message) + elif log_level == logging.INFO: + self.logger.info(message) + elif log_level == logging.WARNING: + self.logger.warning(message) + elif log_level == logging.ERROR: + self.logger.error(message) + elif log_level == logging.CRITICAL: + self.logger.critical(message) Index: tools/build_readme_pdf.sh =================================================================== diff -u --- tools/build_readme_pdf.sh (revision 0) +++ tools/build_readme_pdf.sh (revision 61479ce1965fdcf793913f5e58af92e56c3aea67) @@ -0,0 +1,4 @@ +#!/bin/bash + +cd ../ +pandoc README.md -o README.pdf \ No newline at end of file Index: tools/setup_canbus.sh =================================================================== diff -u -r028952270169971af5075574ba7b7b4ba241acd3 -r61479ce1965fdcf793913f5e58af92e56c3aea67 --- tools/setup_canbus.sh (.../setup_canbus.sh) (revision 028952270169971af5075574ba7b7b4ba241acd3) +++ tools/setup_canbus.sh (.../setup_canbus.sh) (revision 61479ce1965fdcf793913f5e58af92e56c3aea67) @@ -15,5 +15,6 @@ # ############################################################################ +sudo ifconfig can0 down sudo ip link set can0 up type can bitrate 250000 restart-ms 100