예제 #1
0
 def device(self, value: VirtualDevice):
     self.__device = value
     self.__device.is_send_continuous = True
     self.ringbuffer = RingBuffer(
         int(constants.CONTINUOUS_BUFFER_SIZE_MB * 10**6) // 8,
         self.__device.data_type)
     self.__device.continuous_send_ring_buffer = self.ringbuffer
예제 #2
0
 def test_big_buffer(self):
     ring_buffer = RingBuffer(size=5)
     try:
         ring_buffer.push(IQArray(np.array([1, 2, 3, 4, 5, 6, 7], dtype=np.complex64)))
         self.assertTrue(False)
     except ValueError:
         self.assertTrue(True)
예제 #3
0
    def test_pop(self):
        ring_buffer = RingBuffer(size=5)
        add1 = np.array([1, 2, 3], dtype=np.complex64)
        ring_buffer.push(add1)
        self.assertTrue(np.array_equal(add1, ring_buffer.pop(40)))
        self.assertTrue(ring_buffer.is_empty)

        add2 = np.array([1, 2, 3, 4], dtype=np.complex64)
        ring_buffer.push(add2)
        self.assertTrue(np.array_equal(add2, ring_buffer.pop(4)))
        self.assertTrue(ring_buffer.is_empty)

        add3 = np.array([1, 2], dtype=np.complex64)
        ring_buffer.push(add3)
        popped_item = ring_buffer.pop(1)
        self.assertTrue(np.array_equal(add3[0:1], popped_item),
                        msg=popped_item)
        self.assertFalse(ring_buffer.is_empty)

        add4 = np.array([7, 8, 9, 10], dtype=np.complex64)
        ring_buffer.push(add4)
        self.assertFalse(ring_buffer.will_fit(1))
        self.assertTrue(
            np.array_equal(np.concatenate((np.atleast_1d(add3[1]), add4)),
                           ring_buffer.pop(5)))
예제 #4
0
 def __init__(self, backend_handler, name: str):
     self.__device = VirtualDevice(backend_handler=backend_handler,
                                   name=name,
                                   mode=Mode.send)
     self.ringbuffer = RingBuffer(
         int(constants.CONTINUOUS_BUFFER_SIZE_MB * 10**6) // 8)
     self.__device.continuous_send_ring_buffer = self.ringbuffer
     self.__device.is_send_continuous = True
예제 #5
0
    def test_continuous_pop(self):
        ring_buffer = RingBuffer(size=10)
        values = np.array(list(range(10)), dtype=np.complex64)
        ring_buffer.push(values)
        retrieved = np.array([], dtype=np.complex64)

        for i in range(10):
            retrieved = np.append(retrieved, ring_buffer.pop(1))

        self.assertTrue(np.array_equal(values, retrieved))
예제 #6
0
    def test_continuous_pop(self):
        ring_buffer = RingBuffer(size=10)
        values = IQArray(np.array(list(range(10)), dtype=np.complex64))
        ring_buffer.push(values)
        retrieved = np.empty(0, dtype=np.float32)

        for i in range(10):
            retrieved = np.append(retrieved, ring_buffer.pop(1))

        self.assertEqual(values, IQArray(retrieved))
예제 #7
0
 def test_will_fit(self):
     ring_buffer = RingBuffer(size=8)
     self.assertEqual(ring_buffer.space_left, 8)
     self.assertTrue(ring_buffer.will_fit(4))
     self.assertTrue(ring_buffer.will_fit(8))
     self.assertFalse(ring_buffer.will_fit(9))
     ring_buffer.push(np.array([1, 2, 3, 4], dtype=np.complex64))
     self.assertEqual(ring_buffer.space_left, 4)
     self.assertTrue(ring_buffer.will_fit(3))
     self.assertTrue(ring_buffer.will_fit(4))
     self.assertFalse(ring_buffer.will_fit(5))
예제 #8
0
    def test_push(self):
        ring_buffer = RingBuffer(size=10)
        self.assertEqual(0, ring_buffer.left_index)

        add1 = np.array([1, 2, 3, 4, 5], dtype=np.complex64)
        ring_buffer.push(add1)
        self.assertEqual(5, ring_buffer.right_index)
        self.assertTrue(np.array_equal(ring_buffer.data[0:5], add1))

        add2 = np.array([10, 20, 30, 40, 50, 60], dtype=np.complex64)
        self.assertFalse(ring_buffer.will_fit(len(add2)))
        ring_buffer.push(add2[:-1])
        self.assertTrue(np.array_equal(ring_buffer.data[5:10], add2[:-1]))
        self.assertTrue(np.array_equal(ring_buffer.data[0:5], add1))
예제 #9
0
    def __init__(self, messages, modulators):
        """
        
        :type messages: list of Message 
        :type modulators: list of Modulator 
        """
        self.messages = messages
        self.modulators = modulators

        self.ring_buffer = RingBuffer(int(self.BUFFER_SIZE_MB * 10**6) // 8)

        self.current_message_index = Value("L", 0)

        self.abort = Value("i", 0)
        self.process = Process(target=self.modulate_continuously)
        self.process.daemon = True
예제 #10
0
    def __init__(self, messages, modulators, num_repeats=-1):
        """
        
        :type messages: list of Message 
        :type modulators: list of Modulator 
        """
        self.messages = messages
        self.modulators = modulators
        self.num_repeats = num_repeats  # -1 or 0 = infinite

        self.ring_buffer = RingBuffer(int(constants.CONTINUOUS_BUFFER_SIZE_MB*10**6)//8, dtype=Modulator.get_dtype())

        self.current_message_index = Value("L", 0)

        self.abort = Value("i", 0)
        self.process = Process(target=self.modulate_continuously, args=(self.num_repeats, ))
        self.process.daemon = True
예제 #11
0
    def test_pop(self):
        ring_buffer = RingBuffer(size=5)
        add1 = np.array([1, 2, 3], dtype=np.complex64)
        ring_buffer.push(add1)
        self.assertTrue(np.array_equal(add1, ring_buffer.pop(40)))
        self.assertTrue(ring_buffer.is_empty)

        add2 = np.array([1, 2, 3, 4], dtype=np.complex64)
        ring_buffer.push(add2)
        self.assertTrue(np.array_equal(add2, ring_buffer.pop(4)))
        self.assertTrue(ring_buffer.is_empty)

        add3 = np.array([1, 2], dtype=np.complex64)
        ring_buffer.push(add3)
        popped_item = ring_buffer.pop(1)
        self.assertTrue(np.array_equal(add3[0:1], popped_item),
                        msg=popped_item)
        self.assertFalse(ring_buffer.is_empty)
예제 #12
0
 def __init__(self, backend_handler, name: str):
     self.__device = VirtualDevice(backend_handler=backend_handler, name=name, mode=Mode.send)
     self.ringbuffer = RingBuffer(int(self.BUFFER_SIZE_MB * 10 ** 6) // 8)
     self.__device.continuous_send_ring_buffer = self.ringbuffer
     self.__device.is_send_continuous = True
     self.__device.num_sending_repeats = 0