Beispiel #1
0
 def test_as_db_get(self):
     _buffer = buffer_type()
     size = ctypes.c_int(buffer_size)
     self.client.as_db_get(db_number, _buffer, size)
     self.client.wait_as_completion(500)
     result = bytearray(_buffer)[:size.value]
     self.assertEqual(100, len(result))
Beispiel #2
0
 def db_get(self, db_number):
     """Uploads a DB from AG.
     """
     logging.debug("db_get db_number: %s" % db_number)
     buffer_ = buffer_type()
     result = clib.Cli_DBGet(self.pointer, db_number, byref(buffer_),
                             byref(c_int(buffer_size)))
     check_error(result, client=True)
     return bytearray(buffer_)
Beispiel #3
0
 def db_get(self, db_number):
     """Uploads a DB from AG.
     """
     logging.debug("db_get db_number: %s" % db_number)
     buffer_ = buffer_type()
     result = clib.Cli_DBGet(self.pointer, db_number, byref(buffer_),
                             byref(c_int(buffer_size)))
     check_error(result, client=True)
     return bytearray(buffer_)
Beispiel #4
0
 def db_get(self, db_number) -> bytearray:
     """Uploads a DB from AG.
     """
     logger.debug(f"db_get db_number: {db_number}")
     _buffer = buffer_type()
     result = self._library.Cli_DBGet(self._pointer, db_number,
                                      byref(_buffer),
                                      byref(c_int(buffer_size)))
     check_error(result, context="client")
     return bytearray(_buffer)
Beispiel #5
0
 def as_full_upload(self, _type: str, block_num: int) -> int:
     # Cli_AsFullUpload
     _buffer = buffer_type()
     size = c_int(sizeof(_buffer))
     block_type = snap7.types.block_types[_type]
     result = self._library.Cli_AsFullUpload(self._pointer, block_type,
                                             block_num, byref(_buffer),
                                             byref(size))
     check_error(result, context="client")
     return result
Beispiel #6
0
 def db_get(self, db_number):
     """Uploads a DB from AG.
     """
     logging.debug("db_get db_number: %s" % db_number)
     _buffer = buffer_type()
     result = self.library.Cli_DBGet(self.pointer, db_number,
                                     byref(_buffer),
                                     byref(c_int(buffer_size)))
     check_error(result, context="client")
     return bytearray(_buffer)
Beispiel #7
0
 def as_db_get(self, db_number) -> bytearray:
     """
     This is the asynchronous counterpart of Cli_DBGet.
     """
     logger.debug(f"db_get db_number: {db_number}")
     _buffer = buffer_type()
     result = self._library.Cli_AsDBGet(self._pointer, db_number,
                                        byref(_buffer),
                                        byref(c_int(buffer_size)))
     check_error(result, context="client")
     return bytearray(_buffer)
 async def as_db_get(self, db_number, timeout=1):
     """
     This is the asynchronous counterpart of Cli_DBGet with asyncio features.
     """
     logger.debug(f"db_get db_number: {db_number}")
     _buffer = buffer_type()
     result = self._library.Cli_AsDBGet(self._pointer, db_number, byref(_buffer), byref(c_int(buffer_size)))
     request_in_time = await self.as_check_and_wait(timeout)
     if request_in_time is False:
         return None
     check_error(result, context="client")
     return bytearray(_buffer)
Beispiel #9
0
    def full_upload(self, _type: str, block_num: int) -> Tuple[bytearray, int]:
        """
        Uploads a full block body from AG.
        The whole block (including header and footer) is copied into the user
        buffer.

        :param block_num: Number of Block
        """
        _buffer = buffer_type()
        size = c_int(sizeof(_buffer))
        block_type = snap7.types.block_types[_type]
        result = self._library.Cli_FullUpload(self._pointer, block_type,
                                              block_num, byref(_buffer),
                                              byref(size))
        check_error(result, context="client")
        return bytearray(_buffer)[:size.value], size.value
Beispiel #10
0
    def upload(self, block_num) -> bytearray:
        """
        Uploads a block body from AG

        :param block_num: bytearray
        """
        logger.debug(f"db_upload block_num: {block_num}")
        block_type = snap7.types.block_types['DB']
        _buffer = buffer_type()
        size = c_int(sizeof(_buffer))

        result = self._library.Cli_Upload(self._pointer, block_type, block_num,
                                          byref(_buffer), byref(size))

        check_error(result, context="client")
        logger.info(f'received {size} bytes')
        return bytearray(_buffer)
Beispiel #11
0
    def upload(self, block_num):
        """
        Uploads a block body from AG

        :param data: bytearray
        """
        logger.debug("db_upload block_num: %s" % (block_num))

        block_type = snap7.types.block_types['DB']
        _buffer = buffer_type()
        size = c_int(sizeof(_buffer))

        result = self.library.Cli_Upload(self.pointer, block_type, block_num,
                                         byref(_buffer), byref(size))

        check_error(result, context="client")
        logger.info('received %s bytes' % size)
        return bytearray(_buffer)
Beispiel #12
0
 def test_as_upload(self):
     _buffer = buffer_type()
     size = ctypes.c_int(ctypes.sizeof(_buffer))
     self.client.as_upload(1, _buffer, size)
     self.assertRaises(Snap7Exception, self.client.wait_as_completion, 500)