Beispiel #1
0
 def getParameter(self, path):
     """Return the value of a registered parameter"""
     return Parameter.getParameter(path)
Beispiel #2
0
 def getParameter(self, path):
     """Return the value of a registered parameter"""
     return Parameter.getParameter(path)
Beispiel #3
0
    def addResponse(self, resp):
        """ Add a response from the system to glitch table + logs """

        normeval = self.findParam("normalresp").getValue()
        succeval = self.findParam("successresp").getValue()

        if len(normeval) > 0:
            # Check if Normal
            normresult = eval(normeval, {"s": resp}, {})
        else:
            normresult = False

        # Check if Successful
        if len(succeval) > 0:
            # Check if Normal
            succresult = eval(succeval, {"s": resp}, {})
        else:
            succresult = False

        # Check ?
        if not isinstance(normresult, bool):
            raise ValueError(
                "Result of 'normal' eval() not a bool, got %s (result: %s)" % (type(normresult), normresult)
            )

        if not isinstance(succresult, bool):
            raise ValueError(
                "Result of 'success' eval() not a bool, got %s (result: %s)" % (type(succresult), succresult)
            )

        if normresult and succresult:
            logging.warning("Both normresult and succresult True!")

        starttime = datetime.now()

        respstr = str(bytearray(resp.encode("utf-8")))
        # respstr = ' '.join(["%02x" % t for t in bytearray(resp)])

        settingsList = []
        for i in range(0, len(self.tuneParamList)):
            try:
                settingsList.append(Parameter.getParameter(self.tuneParamList[i].paramScript))
            except:
                raise StopIteration(
                    'Choose a valid Parameter Path for Tuning Parameter "%s" . Got: %s'
                    % (self.tuneParamList[i].name(), self.tuneParamList[i].paramScript)
                )
        newdata = {
            "input": "",
            "output": respstr,
            "normal": normresult,
            "success": succresult,
            "settings": settingsList,
            "date": starttime,
        }

        self.tableList.append(newdata)
        self.appendToTable(newdata)
        self.updateStatus()

        if self._campaignRunning and self.findParam(["Recordings", "saveresults"]).getValue():
            if self._autosavef is None:
                # File previously not open
                try:
                    self._autosavef = open(self._autosavefname, "w")
                except Exception as e:
                    self.findParam(["Recordings", "saveresults"]).setValue(False)
                    raise Warning(
                        "Could not save recordings to file: %s. Reason: %s. Disabling it in order to continue."
                        % (self._autosavefname, str(e))
                    )
                self.findParam(["Recordings", "savefilename"]).setValue(self._autosavefname, ignoreReadonly=True)

                # Add notes
                pickle.dump({"notes": self.findParam(["Recordings", "savenotes"]).getValue()}, self._autosavef)

                # Add headers
                cmds = [
                    self.tuneParamList[i].findParam("parampath").getValue() for i in range(0, len(self.tuneParamList))
                ]
                pickle.dump({"commands": cmds}, self._autosavef)

            # Add data
            pickle.dump({"data": newdata}, self._autosavef)
Beispiel #4
0
    def addResponse(self, resp):
        """ Add a response from the system to glitch table + logs """

        normeval = self.findParam('normalresp').getValue()
        succeval = self.findParam('successresp').getValue()

        if len(normeval) > 0:
            #Check if Normal
            normresult = eval(normeval, {'s':resp}, {})
        else:
            normresult = False

        #Check if Successful
        if len(succeval) > 0:
            #Check if Normal
            succresult = eval(succeval, {'s':resp}, {})
        else:
            succresult = False

        #Check ?
        if not isinstance(normresult, bool):
            raise ValueError("Result of 'normal' eval() not a bool, got %s (result: %s)" % (type(normresult), normresult))

        if not isinstance(succresult, bool):
            raise ValueError("Result of 'success' eval() not a bool, got %s (result: %s)" % (type(succresult), succresult))

        if normresult and succresult:
            logging.warning('Both normresult and succresult True!')

        starttime = datetime.now()

        respstr = str(bytearray(resp.encode('utf-8')))
        # respstr = ' '.join(["%02x" % t for t in bytearray(resp)])

        settingsList = []
        for i in range(0, len(self.tuneParamList)):
            try:
                settingsList.append(Parameter.getParameter(self.tuneParamList[i].paramScript))
            except:
                raise StopIteration("Choose a valid Parameter Path for Tuning Parameter \"%s\" . Got: %s" % (self.tuneParamList[i].name(), self.tuneParamList[i].paramScript))
        newdata = {"input":"", "output":respstr, "normal":normresult, "success":succresult, "settings":settingsList, "date":starttime}

        self.tableList.append(newdata)
        self.appendToTable(newdata)
        self.updateStatus()

        if self._campaignRunning and self.findParam(["Recordings","saveresults"]).getValue():
            if self._autosavef is None:
                # File previously not open
                try:
                    self._autosavef = open(self._autosavefname, "w")
                except Exception as e:
                    self.findParam(["Recordings","saveresults"]).setValue(False)
                    raise Warning("Could not save recordings to file: %s. Reason: %s. Disabling it in order to continue." % (self._autosavefname, str(e)))
                self.findParam(["Recordings",'savefilename']).setValue(self._autosavefname, ignoreReadonly=True)

                # Add notes
                pickle.dump({"notes":self.findParam(["Recordings",'savenotes']).getValue()}, self._autosavef)

                # Add headers
                cmds = [self.tuneParamList[i].findParam('parampath').getValue() for i in range(0, len(self.tuneParamList))]
                pickle.dump({"commands":cmds}, self._autosavef)

            # Add data
            pickle.dump({"data":newdata}, self._autosavef)