Esempio n. 1
0
File: phys.py Progetto: topikuu/pem
 def receive_message(self, timeout_ms=500):
     """
     Receives a message and stops either when the message is
     complete or when the allotted time expires, whichever
     comes first.
     """
     self._calculate_deadline(timeout_ms=timeout_ms)
     if self._hook_message_signature() is False:
         logging.info("Failed to obtain message signature "
                      "within allotted time")
         return False
     logging.debug("Got message signature.")
     header = self._receive_buffer(size=self._header.buffer_length)
     if header == []:
         logging.info("Failed to obtain message header "
                      "within allotted time")
         return False
     logging.debug("Got message header.")
     self._header.unpack(packed_data="".join(header))
     payload_len = \
         self._header.message_len - \
         self._signature.buffer_length - \
         self._header.buffer_length - \
         self._checksum.buffer_length
     if payload_len is not 0:
         self._payload = self._receive_buffer(size=payload_len)
         if self._payload == []:
             logging.info("Failed to obtain message payload "
                          "within allotted time")
             return False
         logging.debug("Got message payload.")
         for _ in self._payload:
             logging.debug("payload {0}".format(binascii.hexlify(_)))
     else:
         logging.debug("Got empty message without payload.")
         self._payload = []
     checksum = self._receive_buffer(size=self._checksum.buffer_length)
     if checksum == []:
         logging.info("Failed to obtain message checksum "
                      "within allotted time")
         return False
     logging.debug("Got message checksum.")
     self._checksum.unpack(packed_data="".join(checksum))
     calculated_checksum = \
         MappedBuffer.calculate_checksum(
             [self._SIGNATURE[0], self._SIGNATURE[1],
              self._header.buffer_checksum,
              MappedBuffer.calculate_checksum(self._payload)])
     if self._checksum.checksum == calculated_checksum:
         logging.info("RX: id = {0}\t\tpayload = {1}".
                      format(self._header.message_id, self._payload))
         logging.debug("Checksum verification successful.")
         return True
     else:
         logging.info("Checksum verification failed:\n" +
                      "Received = {0}\n".format(self._checksum.checksum) +
                      "Calculated = {0}".format(calculated_checksum))
         return False
 def receive_message(self, timeout_ms=500):
     """
     Receives a message and stops either when the message is
     complete or when the allotted time expires, whichever
     comes first.
     """
     self._calculate_deadline(timeout_ms=timeout_ms)
     if self._hook_message_signature() is False:
         logging.info("Failed to obtain message signature "
                      "within allotted time")
         return False
     logging.debug("Got message signature.")
     header = self._receive_buffer(size=self._header.buffer_length)
     if header == []:
         logging.info("Failed to obtain message header "
                      "within allotted time")
         return False
     logging.debug("Got message header.")
     self._header.unpack(packed_data="".join(header))
     payload_len = \
         self._header.message_len - \
         self._signature.buffer_length - \
         self._header.buffer_length - \
         self._checksum.buffer_length
     if payload_len is not 0:
         self._payload = self._receive_buffer(size=payload_len)
         if self._payload == []:
             logging.info("Failed to obtain message payload "
                          "within allotted time")
             return False
         logging.debug("Got message payload.")
         for _ in self._payload:
             logging.debug("payload {0}".format(binascii.hexlify(_)))
     else:
         logging.debug("Got empty message without payload.")
         self._payload = []
     checksum = self._receive_buffer(size=self._checksum.buffer_length)
     if checksum == []:
         logging.info("Failed to obtain message checksum "
                      "within allotted time")
         return False
     logging.debug("Got message checksum.")
     self._checksum.unpack(packed_data="".join(checksum))
     calculated_checksum = \
         MappedBuffer.calculate_checksum(
             [self._SIGNATURE[0], self._SIGNATURE[1],
              self._header.buffer_checksum,
              MappedBuffer.calculate_checksum(self._payload)])
     if self._checksum.checksum == calculated_checksum:
         logging.info("RX: id = {0}\t\tpayload = {1}".format(
             self._header.message_id, self._payload))
         logging.debug("Checksum verification successful.")
         return True
     else:
         logging.info("Checksum verification failed:\n" +
                      "Received = {0}\n".format(self._checksum.checksum) +
                      "Calculated = {0}".format(calculated_checksum))
         return False
Esempio n. 3
0
File: phys.py Progetto: topikuu/pem
 def transmit_message(self, payload=""):
     """
     Transmits a message
     """
     self._message_id = (self._message_id + 1) % 256
     self._header.message_len = \
         self._signature.buffer_length + \
         self._header.buffer_length + \
         len(payload) + \
         self._checksum.buffer_length
     self._header.message_id = self._message_id
     message = self._signature.pack() + self._header.pack() + payload
     self._checksum.checksum = MappedBuffer.calculate_checksum(message)
     message = message + self._checksum.pack()
     logging.info("TX {0}".format(binascii.hexlify(message)))
     for character in message:
         self._write_char(character)
     self._flush()
Esempio n. 4
0
File: phys.py Progetto: 01org/pem
 def transmit_message(self, payload=""):
     """
     Transmits a message
     """
     self._message_id = (self._message_id + 1) % 256
     self._header.message_len = \
         self._signature.buffer_length + \
         self._header.buffer_length + \
         len(payload) + \
         self._checksum.buffer_length
     self._header.message_id = self._message_id
     message = self._signature.pack() + self._header.pack() + payload
     self._checksum.checksum = MappedBuffer.calculate_checksum(message)
     message = message + self._checksum.pack()
     logging.info("TX {0}".format(binascii.hexlify(message)))
     for character in message:
         #check for python version
         if sys.version_info[0] == 2:
             self._write_char(character)
         elif sys.version_info[0] == 3:
             self._write_char(chr(character).encode("Latin-1"))
     self._flush()
 def transmit_message(self, payload=""):
     """
     Transmits a message
     """
     self._message_id = (self._message_id + 1) % 256
     self._header.message_len = \
         self._signature.buffer_length + \
         self._header.buffer_length + \
         len(payload) + \
         self._checksum.buffer_length
     self._header.message_id = self._message_id
     message = self._signature.pack() + self._header.pack() + payload
     self._checksum.checksum = MappedBuffer.calculate_checksum(message)
     message = message + self._checksum.pack()
     logging.info("TX {0}".format(binascii.hexlify(message)))
     for character in message:
         #check for python version
         if sys.version_info[0] == 2:
             self._write_char(character)
         elif sys.version_info[0] == 3:
             self._write_char(chr(character).encode("Latin-1"))
     self._flush()