Example #1
0
    def execute(self, *args):
        """ Execute the diagnostic request on the given device

        :returns: The initialized response message
        """
        # if _MCB.isListenOnly():
        register = pack_bitstring(_MCB.get_diagnostic_register())
        return ReturnDiagnosticRegisterResponse(register)
Example #2
0
    def encode(self):
        """ Encodes response pdu

        :returns: The encoded packet message
        """
        result = pack_bitstring(self.bits)
        packet = struct.pack('>B', len(result)) + result
        return packet
Example #3
0
    def encode(self):
        """ Encodes response pdu

        :returns: The encoded packet message
        """
        result = pack_bitstring(self.bits)
        packet = struct.pack('>B', len(result)) + result
        return packet
Example #4
0
    def encode(self):
        """ Encodes the status bits to an event message

        :returns: The encoded event message
        """
        bits = [False] * 3
        bits += [self.overrun, self.listen, self.broadcast, True]
        packet = pack_bitstring(bits)
        return packet
Example #5
0
    def encode(self):
        """ Encodes the status bits to an event message

        :returns: The encoded event message
        """
        bits = [False] * 3
        bits += [self.overrun, self.listen, self.broadcast, True]
        packet = pack_bitstring(bits)
        return packet
Example #6
0
    def encode(self):
        """ Encodes write coils request

        :returns: The byte encoded message
        """
        count = len(self.values)
        self.byte_count = (count + 7) // 8
        packet = struct.pack('>HHB', self.address, count, self.byte_count)
        packet += pack_bitstring(self.values)
        return packet
Example #7
0
    def encode(self):
        """ Encodes write coils request

        :returns: The byte encoded message
        """
        count = len(self.values)
        self.byte_count = (count + 7) // 8
        packet = struct.pack('>HHB', self.address, count, self.byte_count)
        packet += pack_bitstring(self.values)
        return packet
Example #8
0
    def add_bits(self, values):
        """ Adds a collection of bits to be encoded

        If these are less than a multiple of eight,
        they will be left padded with 0 bits to make
        it so.

        :param values: The value to add to the buffer
        """
        value = pack_bitstring(values)
        self._payload.append(value)
Example #9
0
    def add_bits(self, values):
        """ Adds a collection of bits to be encoded

        If these are less than a multiple of eight,
        they will be left padded with 0 bits to make
        it so.

        :param values: The value to add to the buffer
        """
        value = pack_bitstring(values)
        self._payload.append(value)
Example #10
0
    def encode(self):
        """ Encodes the status bits to an event message

        :returns: The encoded event message
        """
        bits = [
            self.read, self.slave_abort, self.slave_busy, self.slave_nak,
            self.write_timeout, self.listen
        ]
        bits += [True, False]
        packet = pack_bitstring(bits)
        return packet
Example #11
0
    def encode(self):
        """ Encodes the status bits to an event message

        :returns: The encoded event message
        """
        bits = [self.read,
                self.slave_abort,
                self.slave_busy,
                self.slave_nak,
                self.write_timeout,
                self.listen]
        bits += [True, False]
        packet = pack_bitstring(bits)
        return packet
Example #12
0
    def from_coils(cls, coils, endian=Endian.Little):
        """ Initialize a payload decoder with the result of
        reading a collection of coils from a modbus device.

        The coils are treated as a list of bit(boolean) values.

        :param coils: The coil results to initialize with
        :param endian: The endianess of the payload
        :returns: An initialized PayloadDecoder
        """
        if isinstance(coils, list):
            payload = pack_bitstring(coils)
            return cls(payload, endian)
        raise ParameterException('Invalid collection of coils supplied')
Example #13
0
    def from_coils(cls, coils, endian=Endian.Little):
        """ Initialize a payload decoder with the result of
        reading a collection of coils from a modbus device.

        The coils are treated as a list of bit(boolean) values.

        :param coils: The coil results to initialize with
        :param endian: The endianess of the payload
        :returns: An initialized PayloadDecoder
        """
        if isinstance(coils, list):
            payload = pack_bitstring(coils)
            return cls(payload, endian)
        raise ParameterException('Invalid collection of coils supplied')
Example #14
0
 def test_bit_packing(self):
     """ Test all string <=> bit packing functions """
     self.assertEqual(unpack_bitstring(b'\x55'), self.bits)
     self.assertEqual(pack_bitstring(self.bits), b'\x55')
Example #15
0
 def test_bit_packing(self):
     """ Test all string <=> bit packing functions """
     self.assertEqual(unpack_bitstring(b'\x55'), self.bits)
     self.assertEqual(pack_bitstring(self.bits), b'\x55')