Index: DialityCoreCanProtocol.py =================================================================== diff -u -r37f5ecccfa5d998a9a7d2ccf6948de3758015235 -re5bdbe114daac21f97d3c69552a0171878c0f54e --- DialityCoreCanProtocol.py (.../DialityCoreCanProtocol.py) (revision 37f5ecccfa5d998a9a7d2ccf6948de3758015235) +++ DialityCoreCanProtocol.py (.../DialityCoreCanProtocol.py) (revision e5bdbe114daac21f97d3c69552a0171878c0f54e) @@ -19,7 +19,6 @@ import can import math from time import sleep -from ctypes import c_int8 class DenaliMessage: @@ -87,13 +86,14 @@ if payload is None: payload = [] + message = [DenaliCanMessenger.START_BYTE] if 0 <= message_id <= DenaliMessage.MAX_MSG_ID_NUMBER: # Make sure an unsigned int was passed message_id_in_bytes = message_id.to_bytes(2, byteorder=DenaliMessage.BYTE_ORDER) - message += [message_id_in_bytes[0]] + message = [message_id_in_bytes[0]] message += [message_id_in_bytes[1]] else: @@ -121,10 +121,9 @@ @staticmethod def crc8(message): crc = 0 - for byte in message: - unsigned_byte = c_int8(byte).value - crc ^= DenaliMessage.CRC_LIST[unsigned_byte] + unsigned_byte = byte ^ crc + crc = DenaliMessage.CRC_LIST[unsigned_byte] return crc @@ -212,7 +211,7 @@ the_message = message if is_array else message['message'] return math.ceil((the_message[DenaliMessage.PAYLOAD_LENGTH_INDEX] + - DenaliMessage.HEADER_LENGTH + DenaliMessage.CRC_LENGTH) / + DenaliMessage.HEADER_LENGTH + DenaliMessage.CRC_LENGTH) / DenaliMessage.PACKET_LENGTH) @@ -390,10 +389,10 @@ # At this point we have a complete (long or short) Diality Packet if self.__dialinMessage is not None: - completeDialinMessage = DenaliMessage.buildBasicMessage(channel_id=channel_id, + complete_dialin_message = DenaliMessage.buildBasicMessage(channel_id=channel_id, message=self.__dialinMessage) - dialin_msg_id = DenaliMessage.getMessageID(completeDialinMessage) - dialin_ch_id = DenaliMessage.getChannelID(completeDialinMessage) + dialin_msg_id = DenaliMessage.getMessageID(complete_dialin_message) + dialin_ch_id = DenaliMessage.getChannelID(complete_dialin_message) if dialin_ch_id in self.__longMsgChannelIDSet: # We need to remove channel ID from the long message set @@ -402,15 +401,15 @@ # We first check if this is a response to a send request that is pending if dialin_msg_id == self.__sendPacketRequestID: - self.__dialinCommandResponseMessage = completeDialinMessage + self.__dialinCommandResponseMessage = complete_dialin_message self.__sendEvent.set() self.__sendPacketRequestID = -1 # If it is not, this is a publication message and we need to call it's register function elif dialin_ch_id in self.__sync_response_dictionary.keys() and \ dialin_msg_id in self.__sync_response_dictionary[channel_id].keys(): - self.__sync_response_dictionary[dialin_ch_id][dialin_msg_id](completeDialinMessage) + self.__sync_response_dictionary[dialin_ch_id][dialin_msg_id](complete_dialin_message) # Done with this message, let's get the next one self.__dialinMessage = None