def copyFromCaptureTrace(self, _=None):
        """ Send reference data to hardware from the trace window """
        ds_param = Parameter.findParameter(
            ['OpenADC', 'Trigger Setup', 'Downsample Factor'])
        if ds_param is not None and ds_param.getValue() != 1:
            logging.warning(
                "OpenADC downsampling is enabled - SAD trigger will not work")

        data = self.getCaptueTraceRef()

        if len(data) != 128:
            logging.warning('Reference IS NOT 128 samples long, got %d' %
                            len(data))

        self.findParam(['sad', 'sadref']).setValue(self.packTrace(data))
    def setTriggerModule(self, module):

        #When using special modes, force rising edge & stop user from easily changing
        if module != self.MODULE_BASIC:
            Parameter.findParameter(['OpenADC', 'Trigger Setup', 'Mode']).setValue("rising edge", ignoreReadonly=True)
            Parameter.findParameter(['OpenADC', 'Trigger Setup', 'Mode']).setReadonly(True)
        else:
            Parameter.findParameter(['OpenADC', 'Trigger Setup', 'Mode']).setReadonly(False)

        resp = self.oa.sendMessage(CODE_READ, ADDR_TRIGMOD, Validate=False, maxResp=1)
        resp[0] &= 0xF8
        resp[0] |= module
        self.oa.sendMessage(CODE_WRITE, ADDR_TRIGMOD, resp)
    def setTriggerModule(self, module):

        #When using special modes, force rising edge & stop user from easily changing
        if module != self.MODULE_BASIC:
            Parameter.findParameter(['OpenADC', 'Trigger Setup', 'Mode']).setValue("rising edge", ignoreReadonly=True)
            Parameter.findParameter(['OpenADC', 'Trigger Setup', 'Mode']).setReadonly(True)
        else:
            Parameter.findParameter(['OpenADC', 'Trigger Setup', 'Mode']).setReadonly(False)

        resp = self.oa.sendMessage(CODE_READ, ADDR_TRIGMOD, Validate=False, maxResp=1)
        resp[0] &= 0xF8
        resp[0] |= module
        self.oa.sendMessage(CODE_WRITE, ADDR_TRIGMOD, resp)