Index: DialityCoreSerialProtocol.py =================================================================== diff -u -rabd93c1d800178a5ee618b9bba83532b853e3c96 -r5f23b5ca87b6211702df8aa805fa767026862b77 --- DialityCoreSerialProtocol.py (.../DialityCoreSerialProtocol.py) (revision abd93c1d800178a5ee618b9bba83532b853e3c96) +++ DialityCoreSerialProtocol.py (.../DialityCoreSerialProtocol.py) (revision 5f23b5ca87b6211702df8aa805fa767026862b77) @@ -25,19 +25,26 @@ class DSM_State(Enum): """ - \brief defines 3 states of search + defines 3 states of search """ - SEARCHING_FOR_START_BYTE = 0 # ///< search for start byte - SEARCHING_FOR_PACKET_LENGTH = 1 # ///< search for the end of packet - SEARCHING_FOR_CRC = 2 # ///< search and check for CRC + SEARCHING_FOR_START_BYTE = 0 + SEARCHING_FOR_PACKET_LENGTH = 1 + SEARCHING_FOR_CRC = 2 class DialitySerialMessenger: START_BYTE = b'\xA5' def __init__(self, serial_port='/dev/ttyUSB0'): + """ + DialitySerialMesseger constructor + \param serial_port - string containing the serial port, e.g., '/dev/ttyUSB69" + + \returns DialitySerialMessenger object + """ + self.__serialConnection = serial.Serial(serial_port, baudrate=115200) self.__dialitySerialByteBuffer = bytearray() @@ -49,6 +56,7 @@ self.__sendRID = -1 self.__sendEvent = threading.Event() self.responseFunction = None + self.__run = False if self.__serialConnection is not None: self.__serialListenerThread = threading.Thread(target=self.__listener) @@ -57,22 +65,38 @@ print("Serial connection is not valid") def start(self): + """ + after an object is create, you need to "start" serial communication. + """ + if self.__serialConnection is None: print("Cannot start serial listener.") return else: - print("Serial listener has started.") + self.__run = True self.__serialListenerThread.start() + print("Serial", self.__serialConnection.port, "listener has started.") + def stop(self): + """ + stop serial listener thread + + """ + self.__run = False + print("Serial", self.__serialConnection.port, "listener has stopped.") + @staticmethod def __getRequestID(message): return int.from_bytes(message[1:3], byteorder='big', signed=False) def __listener(self): + """ + private method used as a thread. + """ - while True: + while self.__run: num_of_bytes_in_serial_port = self.__serialConnection.in_waiting @@ -169,6 +193,9 @@ sleep(0.001) def __denaliPacketCRC(self): + """ + utility method used to calculate incoming message CRC + """ return sum(self.__dialityPacket[0:self.__dialityPacketLength - 1]) % 256 @@ -196,14 +223,14 @@ @staticmethod def getCRC(message): - """ \brief getCRC returns a message with its CRC """ + """ getCRC returns a message with its CRC """ message_cargo_length = message[3] return sum(message[0:4 + message_cargo_length]) % 256 @staticmethod def buildPacket(request_id=0, cargo=bytearray()): - """ \brief buildPacket builds a Diality Packet + """ buildPacket builds a Diality Packet \param @@ -249,11 +276,13 @@ if __name__ == "__main__": - # the_messenger = DialitySerialMessenger(serial_port="/dev/ttyUSB0") - # the_messenger.start() - test = DialityPacket.buildPacket(request_id=8000, cargo=b'123') - print(test) + the_messenger = DialitySerialMessenger(serial_port="/dev/ttyUSB0") + the_messenger.start() + the_messenger.stop() - test1 = DialityPacket.buildPacket(request_id=8000, cargo=b'12345') - print(test1) + the_test = DialityPacket.buildPacket(request_id=8000, cargo=b'123') + print(the_test) + + the_test1 = DialityPacket.buildPacket(request_id=8000, cargo=b'12345') + print(the_test1) Index: DialysateGenerator.py =================================================================== diff -u -rabd93c1d800178a5ee618b9bba83532b853e3c96 -r5f23b5ca87b6211702df8aa805fa767026862b77 --- DialysateGenerator.py (.../DialysateGenerator.py) (revision abd93c1d800178a5ee618b9bba83532b853e3c96) +++ DialysateGenerator.py (.../DialysateGenerator.py) (revision 5f23b5ca87b6211702df8aa805fa767026862b77) @@ -23,9 +23,8 @@ Dialin API is comprised primarily by 3 classes: - - \ref DG - - \ref HD - - \ref UI + - \ref DialysateGenerator.DG + - \ref HemodialysisDevice.HD """ class DG: Index: HemodialysisDevice.py =================================================================== diff -u -rabd93c1d800178a5ee618b9bba83532b853e3c96 -r5f23b5ca87b6211702df8aa805fa767026862b77 --- HemodialysisDevice.py (.../HemodialysisDevice.py) (revision abd93c1d800178a5ee618b9bba83532b853e3c96) +++ HemodialysisDevice.py (.../HemodialysisDevice.py) (revision 5f23b5ca87b6211702df8aa805fa767026862b77) @@ -47,7 +47,13 @@ self.__messageID = 0 def login(self): + """ + send login command via serial port + \returns 0 if logged, 1 if it is not logged + + """ + request_id = 8000 cargo = b'123' @@ -73,7 +79,12 @@ def OffButton(self): + """ + sends the Off button command + \returns 0 if successful, non-zero otherwise + """ + request_id = 8001 cargo = b'\x00\x01\x00\x00\x00'