def get_resource(self, *args, **kwargs):
        """
        Retrieve device parameters.

        @param params DriverParameter.ALL or a list of parameters to retrieve.
        @param timeout Timeout for each involved instrument interation,
                self._timeout by default.

        @retval parameter : value dict.
        @raises InstrumentParameterException if missing or invalid get parameters.
        @raises InstrumentStateException if command not allowed in current state
        """

        if log.isEnabledFor(logging.DEBUG):
            log.debug("args=%s kwargs=%s" % (str(args), str(kwargs)))

        self._assert_state(TrhphDriverState.CONNECTED)

        params = kwargs.get('params', None)
        if params is None:
            #            raise InstrumentParameterException(msg=
            #                    "'params' parameter required")
            params = args[0]

        if params == DriverParameter.ALL:
            params = TrhphParameter.list()
        elif not isinstance(params, (list, tuple)):
            raise InstrumentParameterException(
                msg='params must be list or tuple.')

        timeout = kwargs.get('timeout', self._timeout)

        # gather data collection params if any of them are requested:
        data_collec_params = {}
        if TrhphParameter.TIME_BETWEEN_BURSTS in params or \
           TrhphParameter.VERBOSE_MODE in params:
            seconds, is_data_only = self._get_data_collection_params(timeout)
            verbose = not is_data_only
            data_collec_params[TrhphParameter.TIME_BETWEEN_BURSTS] = seconds
            data_collec_params[TrhphParameter.VERBOSE_MODE] = verbose

        params = list(set(params))  # remove any duplicates

        result = {}
        for param in params:
            if param == TrhphParameter.TIME_BETWEEN_BURSTS or \
               param == TrhphParameter.VERBOSE_MODE:
                value = data_collec_params[param]
            else:
                #                value = InstErrorCode.INVALID_PARAMETER
                raise InstrumentParameterException(msg='invalid parameter %s' %
                                                   param)
            result[param] = value

        return result
    def _get_params_OLD(self, valid_params, invalid_params=None):
        # TODO Remove this method

        invalid_params = invalid_params or []

        if len(invalid_params) == 0:
            # use valid_params exactly as given
            params = valid_params
        else:
            if valid_params == DriverParameter.ALL:
                valid_params = TrhphParameter.list()

            params = valid_params + invalid_params

        result = self.driver.get_resource(params=params, timeout=self._timeout)
        log.info("get result = %s" % str(result))
        self.assertTrue(isinstance(result, dict))

        if params == DriverParameter.ALL:
            all_requested_params = TrhphParameter.list()
        else:
            all_requested_params = params

        # check all requested params are in the result
        for p in all_requested_params:
            self.assertTrue(p in result)

        for p in valid_params:
            self.assertFalse(InstErrorCode.is_error(result.get(p)))
            if TrhphParameter.TIME_BETWEEN_BURSTS == p:
                seconds = result.get(p)
                self.assertTrue(isinstance(seconds, int))
            if TrhphParameter.VERBOSE_MODE == p:
                is_data_only = result.get(p)
                self.assertTrue(isinstance(is_data_only, bool))

        for p in invalid_params:
            res_p = result.get(p)
            print '::::: %s' % str(res_p)
            self.assertTrue(InstErrorCode.is_error(res_p))

        return result
    def _get_params_OLD(self, valid_params, invalid_params=None):
        # TODO Remove this method

        invalid_params = invalid_params or []

        if len(invalid_params) == 0:
            # use valid_params exactly as given
            params = valid_params
        else:
            if valid_params == DriverParameter.ALL:
                valid_params = TrhphParameter.list()

            params = valid_params + invalid_params

        result = self.driver.get_resource(params=params, timeout=self._timeout)
        log.info("get result = %s" % str(result))
        self.assertTrue(isinstance(result, dict))

        if params == DriverParameter.ALL:
            all_requested_params = TrhphParameter.list()
        else:
            all_requested_params = params

        # check all requested params are in the result
        for p in all_requested_params:
            self.assertTrue(p in result)

        for p in valid_params:
            self.assertFalse(InstErrorCode.is_error(result.get(p)))
            if TrhphParameter.TIME_BETWEEN_BURSTS == p:
                seconds = result.get(p)
                self.assertTrue(isinstance(seconds, int))
            if TrhphParameter.VERBOSE_MODE == p:
                is_data_only = result.get(p)
                self.assertTrue(isinstance(is_data_only, bool))

        for p in invalid_params:
            res_p = result.get(p)
            print '::::: %s' % str(res_p)
            self.assertTrue(InstErrorCode.is_error(res_p))

        return result
    def get_resource(self, *args, **kwargs):
        """
        Retrieve device parameters.

        @param params DriverParameter.ALL or a list of parameters to retrieve.
        @param timeout Timeout for each involved instrument interation,
                self._timeout by default.

        @retval parameter : value dict.
        @raises InstrumentParameterException if missing or invalid get parameters.
        @raises InstrumentStateException if command not allowed in current state
        """
        
        if log.isEnabledFor(logging.DEBUG):
            log.debug("args=%s kwargs=%s" % (str(args), str(kwargs)))

        self._assert_state(TrhphDriverState.CONNECTED)

        params = kwargs.get('params', None)
        if params is None:
#            raise InstrumentParameterException(msg=
#                    "'params' parameter required")
            params = args[0]

        if params == DriverParameter.ALL:
            params = TrhphParameter.list()
        elif not isinstance(params, (list, tuple)):
            raise InstrumentParameterException(msg=
                    'params must be list or tuple.')

        timeout = kwargs.get('timeout', self._timeout)

        # gather data collection params if any of them are requested:
        data_collec_params = {}
        if TrhphParameter.TIME_BETWEEN_BURSTS in params or \
           TrhphParameter.VERBOSE_MODE in params:
            seconds, is_data_only = self._get_data_collection_params(timeout)
            verbose = not is_data_only
            data_collec_params[TrhphParameter.TIME_BETWEEN_BURSTS] = seconds
            data_collec_params[TrhphParameter.VERBOSE_MODE] = verbose

        params = list(set(params))  # remove any duplicates

        result = {}
        for param in params:
            if param == TrhphParameter.TIME_BETWEEN_BURSTS or \
               param == TrhphParameter.VERBOSE_MODE:
                value = data_collec_params[param]
            else:
#                value = InstErrorCode.INVALID_PARAMETER
                raise InstrumentParameterException(msg='invalid parameter %s' % param)
            result[param] = value

        return result
    def _get_params(self, params):

        result = self.driver.get_resource(params=params, timeout=self._timeout)
        log.info("get result = %s" % str(result))
        self.assertTrue(isinstance(result, dict))

        if params == DriverParameter.ALL:
            all_requested_params = TrhphParameter.list()
        else:
            all_requested_params = params

        # check all requested params are in the result
        for p in all_requested_params:
            self.assertTrue(p in result)

            if TrhphParameter.TIME_BETWEEN_BURSTS == p:
                seconds = result.get(p)
                self.assertTrue(isinstance(seconds, int))
            elif TrhphParameter.VERBOSE_MODE == p:
                is_data_only = result.get(p)
                self.assertTrue(isinstance(is_data_only, bool))

        return result
    def _get_params(self, params):

        result = self.driver.get_resource(params=params, timeout=self._timeout)
        log.info("get result = %s" % str(result))
        self.assertTrue(isinstance(result, dict))

        if params == DriverParameter.ALL:
            all_requested_params = TrhphParameter.list()
        else:
            all_requested_params = params

        # check all requested params are in the result
        for p in all_requested_params:
            self.assertTrue(p in result)

            if TrhphParameter.TIME_BETWEEN_BURSTS == p:
                seconds = result.get(p)
                self.assertTrue(isinstance(seconds, int))
            elif TrhphParameter.VERBOSE_MODE == p:
                is_data_only = result.get(p)
                self.assertTrue(isinstance(is_data_only, bool))

        return result