CameraVISRemoteControlDefault.py 2.76 KB
from devices.CameraRemoteControlAbstract import CameraRemoteControlAbstract
from devices import CameraVIS

class CameraVISRemoteControlDefault(CameraRemoteControlAbstract):
    def __init__(self, command, expert_mode, chosen_camera):
        super().__init__(command, expert_mode)
        if chosen_camera == "ddrago_r":
            self._camera = CameraVIS.VISCameraController()
        else:                                                   #TODO: Pour l'instant pas de différence DRRAGO RED et BLUE a vor plus tard
            self._camera = CameraVIS.VISCameraController()

        self._command_matcher_set = {
            "WINDOW": self.set,
            "READMODE [MODE 1]": self.set,
            "READMODE [MODE 2]": self.set,
            "READMODE [MODE 3]": self.set,
            "FILENAME": self.set,
            "HEADER": self.set,
            "READOUT_FREQUENCY": self.set,
            "FILTER [FILTER 1]": self.set,
            "FILTER [FILTER 2]": self.set,
            "FILTER [FILTER 3]": self.set
        }
        self._command_matcher_get = {
            "STATUS": self.get,
            "SETUP": self.get,
            "TIMER": self.get
       }
        self._command_matcher_do = {
            "COOLER ON": self.do,
            "COOLER OFF": self.do,
            "DOME SHUTTER OPEN": self.do,
            "DOME SHUTTER CLOSE": self.do,
            "DOME SHUTTER SYNCHRO": self.do,
            "START": self.do,
            "ABORT": self.do,
            "STOP": self.do
        }




    def exec_command(self):

        #os.system("echo \"status :" + str(self._command) + "\" >> /home/portos/IRAP/pyros/src/commande_recu")
        if self._command[0] == "GET":
            self._current_matcher = self._command_matcher_get
        elif self._command[0] == "SET":
            self._current_matcher = self._command_matcher_set
        elif self._command[0] == "DO":
            self._current_matcher = self._command_matcher_do
        else: return "KO: Unknown command"
        if self._command[1] in self._current_matcher:
            return self._current_matcher[self._command[1]]()
        else:
            return "KO: Unknown command"


    '''
        Locals methods for the generic grammar
    '''

    def do(self):
        definitive_command = "DO " + self._command[1] + ' ' + ' '.join(self._command[2:])
        response = self._camera.send_command(definitive_command)
        return response

    def set(self):
        definitive_command = "SET " + self._command[1] + ' ' + ' '.join(self._command[2:])
        response = self._camera.send_command(definitive_command)
        return response

    def get(self):
        definitive_command = "GET " + self._command[1] #+ ' ' + ' '.join(self._command[2:])
        response = self._camera.send_command(definitive_command)
        return response