diff --git a/pulse_lib/tests/mock_m4i.py b/pulse_lib/tests/mock_m4i.py index 1222099f5a23a40988bb79a663238db574d6ad8e..1518ddec35274d1d7c8a105b1b31f344d43283e3 100644 --- a/pulse_lib/tests/mock_m4i.py +++ b/pulse_lib/tests/mock_m4i.py @@ -17,6 +17,8 @@ class MockM4i(Instrument): self.add_parameter('enable_channels', set_cmd=None, initial_value=0) self.add_parameter('data_memory_size', set_cmd=None, initial_value=0) self.add_parameter('pretrigger_memory_size', set_cmd=None, initial_value=16) + self._data = {} + self._n_triggers = 0 def get_idn(self): return dict(vendor='Pulselib', model=type(self).__name__, serial='', firmware='') @@ -41,18 +43,31 @@ class MockM4i(Instrument): pass def setup_multi_recording(self, seg_size, n_triggers, boxcar_average): - self.segment_size(math.ceil(seg_size/16)*16 + 16) + pretrigger = self.pretrigger_memory_size() + self.segment_size(math.ceil(seg_size/16)*16 + pretrigger) self.data_memory_size(self.segment_size()*n_triggers) + self._n_triggers = n_triggers + + def set_data(self, ch_num, data): + self._data[ch_num] = data def get_data(self): + pretrigger = self.pretrigger_memory_size() channels = self.enable_channels() - n_ch = 0 - while channels: - if channels & 1: - n_ch += 1 - channels >>= 1 + ch_nums = [] + for ch_num in range(4): + if channels & (1 << ch_num): + ch_nums.append(ch_num) + n_ch = len(ch_nums) n_samples = self.data_memory_size() - res = np.empty((n_ch, n_samples)) + res = np.full((n_ch, n_samples), np.nan) for i in range(n_ch): - res[i] = np.linspace(0, 1.0, n_samples) + data = self._data.get(ch_nums[i], None) + if data is None: + res[i] = np.linspace(0, 1.0, n_samples) + else: + mem_data = np.full((self._n_triggers, self.segment_size()), np.nan) + d = data.reshape(self._n_triggers, -1) + mem_data[:,pretrigger:pretrigger+d.shape[1]] = d + res[i] = mem_data.flatten() return res