예제 #1
0
    def get_payload(self):
        """Return Payload."""
        if self.currentpassword is None:
            raise PyVLXException("currentpassword is none")
        if self.newpassword is None:
            raise PyVLXException("newpassword is none")
        if len(self.currentpassword) > self.MAX_SIZE:
            raise PyVLXException("currentpassword is too long")
        if len(self.newpassword) > self.MAX_SIZE:
            raise PyVLXException("newpassword is too long")

        return string_to_bytes(self.currentpassword,
                               self.MAX_SIZE) + string_to_bytes(
                                   self.newpassword, self.MAX_SIZE)
예제 #2
0
 def get_payload(self):
     """Return Payload."""
     payload = bytes()
     payload += bytes([self.node_id])
     payload += bytes([self.order >> 8 & 255, self.order & 255])
     payload += bytes([self.placement])
     payload += bytes(string_to_bytes(self.name, 64))
     payload += bytes([self.velocity.value])
     payload += bytes(
         [self.node_type.value >> 8 & 255, self.node_type.value & 255])
     payload += bytes([self.product_group])
     payload += bytes([self.product_type])
     payload += bytes([self.node_variation.value])
     payload += bytes([self.power_mode])
     payload += bytes([
         self.build_number
     ])  # <-- hey @VELUX: your documentation is wrong here
     payload += bytes(self._serial_number)
     payload += bytes([self.state])
     payload += bytes(self.current_position.raw)
     payload += bytes(self.target.raw)
     payload += bytes(self.current_position_fp1.raw)
     payload += bytes(self.current_position_fp2.raw)
     payload += bytes(self.current_position_fp3.raw)
     payload += bytes(self.current_position_fp4.raw)
     payload += bytes(
         [self.remaining_time >> 8 & 255, self.remaining_time & 255])
     payload += struct.pack(">I", self.timestamp)
     payload += bytes(self.alias_array)
     return payload
예제 #3
0
 def get_payload(self):
     """Return Payload."""
     ret = bytes([len(self.scenes)])
     for number, name in self.scenes:
         ret += bytes([number])
         ret += string_to_bytes(name, 64)
     ret += bytes([self.remaining_scenes])
     return ret
 def get_payload(self):
     """Return Payload."""
     payload = bytes([self.node_id])
     payload += string_to_bytes(self.name, 64)
     payload += bytes([self.order >> 8 & 255, self.order & 255])
     payload += bytes([self.placement])
     payload += bytes([self.node_variation.value])
     return payload
예제 #5
0
 def test_encode_utf8(self):
     """Test encoding a string with special characters."""
     self.assertEqual(string_to_bytes('Fenster Büro', 16),
                      b'Fenster B\xc3\xbcro\x00\x00\x00')
예제 #6
0
 def test_encoding_failure(self):
     """Test error while encoding."""
     with self.assertRaises(PyVLXException):
         string_to_bytes('fnord', 4)
예제 #7
0
 def test_encoding_without_padding(self):
     """Test encoding with exact match of size."""
     self.assertEqual(string_to_bytes('fnord', 5), b'fnord')
예제 #8
0
 def test_encoding(self):
     """Test simple encoding."""
     self.assertEqual(string_to_bytes('fnord', 10), b'fnord' + bytes(5))
예제 #9
0
 def test_encoding(self):
     """Test simple encoding."""
     self.assertEqual(string_to_bytes("fnord", 10), b"fnord" + bytes(5))
예제 #10
0
 def get_payload(self):
     """Return Payload."""
     ret = bytes([self.node_id])
     ret += string_to_bytes(self.name, 64)
     return ret