Beispiel #1
0
    def read_parameters(self, parameters):
        data = []
        target = parameters[0].get_target()

        data.append(0xA8)
        data.append(0x00)
        for parameter in parameters:
            # TODO:
            if target != parameter.get_target() and target & 0x01 != parameter.get_target() & 0x01 and target & 0x02 != parameter.get_target() & 0x02:
                raise Exception('connection', "targets differ: " + str(target) + " vs " + str(parameter.get_target()))

            address = parameter.get_address().get_address()
            address_len = parameter.get_address().get_length()
            for i in range(0, address_len):
                target_address = address + i
                data.append((target_address & 0xffffff) >> 16)
                data.append((target_address & 0xffff) >> 8)
                data.append(target_address & 0xff)

        request_packet = PMPacket(self.get_destination(target), 0xf0, data)
        out_packet = self.send_packet(request_packet)

        out_data = out_packet.get_data()
        out_packets = []
        data_offset = 1  # skip E8

        for parameter in parameters:
            address_len = parameter.get_address().get_length()
            single_out_data = [0xE8]
            single_out_data.extend(out_data[data_offset:address_len + data_offset])
            single_out_packet = PMPacket(out_packet.get_destination(), out_packet.get_source(), single_out_data)
            out_packets.append(single_out_packet)
            data_offset += address_len

        return out_packets
Beispiel #2
0
    def read_parameter(self, parameter):
        address = parameter.get_address().get_address()
        address_len = parameter.get_address().get_length()

        data = [0xA8, 0x00]

        for i in range(0, address_len):
            target_address = address + i
            data.append((target_address & 0xffffff) >> 16)
            data.append((target_address & 0xffff) >> 8)
            data.append(target_address & 0xff)

        request_packet = PMPacket(self.get_destination(parameter.get_target()), 0xf0, data)
        return self.send_packet(request_packet)
Beispiel #3
0
 def init(self, target):
     request_packet = PMPacket(self.get_destination(target), 0xF0, [0xBF])
     return self.send_packet(request_packet)