def initProperties(self):
     self.logger.info("initProperties "+self.getDefaultName())
     super(CCDSimulator, self).initProperties()
     
     PyIndiDriver.IUFillNumber(self.SimulatorSettingsN[0],"SIM_XRES","CCD X resolution","%4.0f",0,2048,0,1280)
     PyIndiDriver.IUFillNumber(self.SimulatorSettingsN[1],"SIM_YRES","CCD Y resolution","%4.0f",0,2048,0,1024)
     PyIndiDriver.IUFillNumber(self.SimulatorSettingsN[2],"SIM_XSIZE","CCD X Pixel Size","%4.2f",0,60,0,5.2)
     PyIndiDriver.IUFillNumber(self.SimulatorSettingsN[3],"SIM_YSIZE","CCD Y Pixel Size","%4.2f",0,60,0,5.2)
     PyIndiDriver.IUFillNumber(self.SimulatorSettingsN[4],"SIM_MAXVAL","CCD Maximum ADU","%4.0f",0,65000,0,65000)
     PyIndiDriver.IUFillNumber(self.SimulatorSettingsN[5],"SIM_BIAS","CCD Bias","%4.0f",0,6000,0,10)
     PyIndiDriver.IUFillNumber(self.SimulatorSettingsN[6],"SIM_SATURATION","Saturation Mag","%4.1f",0,20,0,1.0)
     PyIndiDriver.IUFillNumber(self.SimulatorSettingsN[7],"SIM_LIMITINGMAG","Limiting Mag","%4.1f",0,20,0,17.0)
     PyIndiDriver.IUFillNumber(self.SimulatorSettingsN[8],"SIM_NOISE","CCD Noise","%4.0f",0,6000,0,10)
     PyIndiDriver.IUFillNumber(self.SimulatorSettingsN[9],"SIM_SKYGLOW","Sky Glow (magnitudes)","%4.1f",0,6000,0,19.5)
     PyIndiDriver.IUFillNumber(self.SimulatorSettingsN[10],"SIM_OAGOFFSET","Oag Offset (arcminutes)","%4.1f",0,6000,0,0)
     PyIndiDriver.IUFillNumber(self.SimulatorSettingsN[11],"SIM_POLAR","PAE (arcminutes)","%4.1f",-600,600,0,0)
     PyIndiDriver.IUFillNumber(self.SimulatorSettingsN[12],"SIM_POLARDRIFT","PAE Drift (minutes)","%4.1f",0,6000,0,0)
     cnumbers=PyIndiDriver.new_INumberArray(13)
     for i in range(len(self.SimulatorSettingsN)):
         PyIndiDriver.INumberArray_setitem(cnumbers, i, self.SimulatorSettingsN[i])
     PyIndiDriver.IUFillNumberVector(self.SimulatorSettingsNV,cnumbers,13,self.getDeviceName(),"SIMULATOR_SETTINGS","Simulator Settings","Simulator Config",PyIndi.IP_RW,60,PyIndi.IPS_IDLE)
     PyIndiDriver.IUFillSwitch(self.TimeFactorS[0],"1X","Actual Time",PyIndi.ISS_ON)
     PyIndiDriver.IUFillSwitch(self.TimeFactorS[1],"10X","10x",PyIndi.ISS_OFF)
     PyIndiDriver.IUFillSwitch(self.TimeFactorS[2],"100X","100x",PyIndi.ISS_OFF)
     cswitchs=PyIndiDriver.new_ISwitchArray(3)
     for i in range(len(self.TimeFactorS)):
         PyIndiDriver.ISwitchArray_setitem(cswitchs, i, self.TimeFactorS[i])
     PyIndiDriver.IUFillSwitchVector(self.TimeFactorSV,cswitchs,3,self.getDeviceName(),"ON_TIME_FACTOR","Time Factor","Simulator Config",PyIndi.IP_RW,PyIndi.ISR_1OFMANY,60,PyIndi.IPS_IDLE)
     self.addDebugControl()
     logProperties(self)
     return True
Exemple #2
0
 def ISNewNumber(self, dev, name, values, names, n):
     if (dev != self.name):
         return False
     self.logger.info("ISNewNumber " + dev + " property " + name)
     nvp = self.getNumber(name)
     if not nvp:
         return False
     if name == 'SIMULATOR_SETTINGS':
         cvalues = PyIndiDriver.new_doubleArray(n)
         for i in range(len(values)):
             self.logger.info('  ' + names[i] + ' = ' + str(values[i]))
             PyIndiDriver.doubleArray_setitem(cvalues, i, values[i])
         PyIndiDriver.IUUpdateNumber(nvp, cvalues, names, n)
         nvp.s = PyIndi.IPS_OK
         # Reset our parameters now
         #SetupParms();
         PyIndiDriver.IDSetNumber(nvp, None)
         #saveConfig();
         #IDLog("Frame set to %4.0f,%4.0f %4.0f x %4.0f\n",CcdFrameN[0].value,CcdFrameN[1].value,CcdFrameN[2].value,CcdFrameN[3].value);
         #self.seeing=nvp[0].value
         return True
     cvalues = PyIndiDriver.new_doubleArray(n)
     for i in range(len(values)):
         self.logger.info('  ' + names[i] + ' = ' + str(values[i]))
         PyIndiDriver.doubleArray_setitem(cvalues, i, values[i])
     if super(CCDSimulator, self).ISNewNumber(dev, name, cvalues, names, n):
         return True
     return False
Exemple #3
0
    def __init__(self):
        super(CCDSimulator, self).__init__()
        #PyIndiDriver.PyCCD.__init__(self)
        #self.RA=0.0
        self.name = 'PyCCD Simulator'
        self.AbortGuideFrame = False
        self.AbortPrimaryFrame = False
        self.ShowStarField = True
        self.timefactor = 1.0
        self.InExposure = False
        self.ExposureRequest = 1.0
        # CCD Capability is nested structure in C++ class: capability not supported by swig
        self.cap = PyIndiDriver.CCDCapability()
        self.cap.canAbort = True
        self.cap.canBin = True
        self.cap.canSubFrame = True
        self.cap.hasCooler = False
        self.cap.hasGuideHead = True
        self.cap.hasShutter = True
        self.cap.hasST4Port = True
        # no way: capability is private, SetCapability is protected (can not extend for Python)
        #self.setCCDCapability(self.cap)
        #self.SetCapability(self.cap)

        # it is unuseful to keep these objetcs as they are not synchronized with C++ real data
        self.SimulatorSettingsNV = PyIndi.INumberVectorProperty()
        self.SimulatorSettingsN = [PyIndi.INumber() for x in range(13)]
        self.TimeFactorSV = PyIndi.ISwitchVectorProperty()
        self.TimeFactorS = [PyIndi.ISwitch() for x in range(3)]
        self.logger = logging.getLogger('PyIndiDriver.CCD')
        self.logger.info('creating an instance of PyIndiDriver.CCD')
 def ISNewSwitch (self, dev, name, states, names, n):
     if (dev != self.name):
         return False    
     self.logger.info("ISNewSwitch " + dev + " property " + name)
     # Always fetch data from C++ world
     svp=self.getSwitch(name)
     if not svp:
         return False
     cstates=PyIndiDriver.new_ISStateArray(n)
     for i in range(len(states)):
         self.logger.info('  '+names[i] + ' = ' + str(states[i]))
         PyIndiDriver.ISStateArray_setitem(cstates, i, states[i])
     if name == 'ON_TIME_FACTOR':
          svp.s=PyIndi.IPS_OK
          PyIndiDriver.IUUpdateSwitch(svp,cstates,names,n)
          # Update client display
          PyIndiDriver.IDSetSwitch(svp,None)
          #saveConfig();
          if svp[0].s==PyIndi.ISS_ON:
                  PyIndiDriver.IDLog("CCDSim:: Time Factor 1\n")
                  self.timefactor=1.0
          if svp[1].s==PyIndi.ISS_ON:
                  PyIndiDriver.IDLog("CCDSim:: Time Factor 0.1\n")
                  self.timefactor=0.1
          if svp[2].s==PyIndi.ISS_ON:
                  PyIndiDriver.IDLog("CCDSim:: Time Factor 0.01\n")
                  self.timefactor=0.01
          return True 
     if super(CCDSimulator, self).ISNewSwitch(dev, name, cstates, names, n):
         return True
     return False
Exemple #5
0
 def ISNewSwitch(self, dev, name, states, names, n):
     if (dev != self.name):
         return False
     self.logger.info("ISNewSwitch " + dev + " property " + name)
     # Always fetch data from C++ world
     svp = self.getSwitch(name)
     if not svp:
         return False
     cstates = PyIndiDriver.new_ISStateArray(n)
     for i in range(len(states)):
         self.logger.info('  ' + names[i] + ' = ' + str(states[i]))
         PyIndiDriver.ISStateArray_setitem(cstates, i, states[i])
     if name == 'ON_TIME_FACTOR':
         svp.s = PyIndi.IPS_OK
         PyIndiDriver.IUUpdateSwitch(svp, cstates, names, n)
         # Update client display
         PyIndiDriver.IDSetSwitch(svp, None)
         #saveConfig();
         if svp[0].s == PyIndi.ISS_ON:
             PyIndiDriver.IDLog("CCDSim:: Time Factor 1\n")
             self.timefactor = 1.0
         if svp[1].s == PyIndi.ISS_ON:
             PyIndiDriver.IDLog("CCDSim:: Time Factor 0.1\n")
             self.timefactor = 0.1
         if svp[2].s == PyIndi.ISS_ON:
             PyIndiDriver.IDLog("CCDSim:: Time Factor 0.01\n")
             self.timefactor = 0.01
         return True
     if super(CCDSimulator, self).ISNewSwitch(dev, name, cstates, names, n):
         return True
     return False
Exemple #6
0
def logProperties(d):
    # print a list of all device properties
    lp = d.getProperties()
    for p in lp:
        PyIndiDriver.IDLog('Property ' + p.getName() + ' - ' + p.getLabel() +
                           '\n')
        if p.getType() == PyIndi.INDI_TEXT:
            tpy = p.getText()
            for t in tpy:
                PyIndiDriver.IDLog("       " + t.name + "(" + t.label + ")= " +
                                   t.text + '\n')
        elif p.getType() == PyIndi.INDI_NUMBER:
            tpy = p.getNumber()
            for t in tpy:
                PyIndiDriver.IDLog("       " + t.name + "(" + t.label + ")= " +
                                   str(t.value) + '\n')
        elif p.getType() == PyIndi.INDI_SWITCH:
            tpy = p.getSwitch()
            for t in tpy:
                PyIndiDriver.IDLog("       " + t.name + "(" + t.label + ")= " +
                                   strISState(t.s) + '\n')
        elif p.getType() == PyIndi.INDI_LIGHT:
            tpy = p.getLight()
            for t in tpy:
                PyIndiDriver.IDLog("       " + t.name + "(" + t.label + ")= " +
                                   strIPState(t.s) + '\n')
        elif p.getType() == PyIndi.INDI_BLOB:
            tpy = p.getBLOB()
            for t in tpy:
                PyIndiDriver.IDLog("       " + t.name + "(" + t.label +
                                   ")= <blob " + str(t.size) + " bytes>" +
                                   '\n')
 def ISNewNumber (self, dev, name, values, names, n):
     if (dev != self.name):
         return False    
     self.logger.info("ISNewNumber " + dev + " property " + name)
     nvp=self.getNumber(name)
     if not nvp:
         return False
     if name == 'SIMULATOR_SETTINGS':
         cvalues=PyIndiDriver.new_doubleArray(n)
         for i in range(len(values)):
             self.logger.info('  ' + names[i] + ' = ' + str(values[i])) 
             PyIndiDriver.doubleArray_setitem(cvalues, i, values[i])
         PyIndiDriver.IUUpdateNumber(nvp, cvalues, names, n)
         nvp.s=PyIndi.IPS_OK
         # Reset our parameters now
         #SetupParms();
         PyIndiDriver.IDSetNumber(nvp,None)
         #saveConfig();
         #IDLog("Frame set to %4.0f,%4.0f %4.0f x %4.0f\n",CcdFrameN[0].value,CcdFrameN[1].value,CcdFrameN[2].value,CcdFrameN[3].value);
         #self.seeing=nvp[0].value
         return True
     cvalues=PyIndiDriver.new_doubleArray(n)
     for i in range(len(values)):
         self.logger.info('  ' + names[i] + ' = ' + str(values[i])) 
         PyIndiDriver.doubleArray_setitem(cvalues, i, values[i])
     if super(CCDSimulator, self).ISNewNumber(dev, name, cvalues, names, n):
         return True
     return False
Exemple #8
0
    def ISNewSwitch (self, dev, name, states, names, n):
        self.logger.info("ISNewSwitch " + dev + " property " + name)
        if (dev != self.name):
            return False    
        # Build Clike array to call C++ method
        # names is handled by swig (see %typemap(in) char *[]) 
        cstates=PyIndiDriver.new_ISStateArray(n)
        for i in range(len(states)):
            self.logger.info('  '+names[i] + ' = ' + str(states[i]))
            PyIndiDriver.ISStateArray_setitem(cstates, i, states[i])
        if super(IndiDriver, self).ISNewSwitch(dev, name, cstates, names, n):
            return True

        svp=self.getSwitch(name)
        lvp=self.getLight('Light Property')
        if not svp:
            return False
        if not self.isConnected():
            svp.s=PyIndi.IPS_ALERT
            PyIndiDriver.IDSetSwitch(svp, "Cannot change property while device is disconnected.")
            return False
        if not lvp:
            return False       
        if (name == "Menu"):
            # Use the Clike array to call C methods
            PyIndiDriver.IUUpdateSwitch(svp, cstates, names, n)
            onSW=PyIndiDriver.IUFindOnSwitch(svp)
            lightIndex=PyIndiDriver.IUFindOnSwitchIndex(svp)
            if (lightIndex < 0 or lightIndex > lvp.nlp):
                return False
            if (onSW):
                lightState=random.randint(0,3)
                lvp[lightIndex].s=lightState # direct indexing of the vector, do not use lvp.lp
                svp.s=PyIndi.IPS_OK
                lvp.s=PyIndi.IPS_OK
                PyIndiDriver.IDSetSwitch(svp, 'Setting to switch '+onSW.name+' is successful. Changing corresponding light property to '+strIPState(lvp[lightIndex].s))
                PyIndiDriver.IDSetLight(lvp, None)
            return True           
        PyIndiDriver.delete_ISStateArray(cstates)
        return False
Exemple #9
0
 def initProperties(self):
     self.logger.info("initProperties "+self.getDefaultName())
     super(IndiDriver, self).initProperties()
     #self.logger.info("initProperties loading skeleton")
     self.skelFileName = "tutorial_four_sk.xml"
     self.skel = os.getenv("INDISKEL")
     if self.skel:
         self.buildSkeleton(self.skel)
     else:
         try:
             os.stat(self.skelFileName)
             self.buildSkeleton(self.skelFileName)
         except OSError as e:
             PyIndiDriver.IDLog("No skeleton file was specified. Set environment variable INDISKEL to the skeleton path and try again.\n");
     # Optional: Add aux controls for configuration, debug & simulation that get added in the Options tab
     # of the driver.
     self.addAuxControls()
     # Let's print a list of all device properties
     lp=self.getProperties()
     for p in lp:
         PyIndiDriver.IDLog('Property '+p.getName()+' - ' + p.getLabel() + '\n')
         if p.getType()==PyIndi.INDI_TEXT:
             tpy=p.getText()
             for t in tpy:
                 PyIndiDriver.IDLog("       "+t.name+"("+t.label+")= "+t.text + '\n')
         elif p.getType()==PyIndi.INDI_NUMBER:
             tpy=p.getNumber()
             for t in tpy:
                 PyIndiDriver.IDLog("       "+t.name+"("+t.label+")= "+str(t.value) + '\n')
         elif p.getType()==PyIndi.INDI_SWITCH:
             tpy=p.getSwitch()
             for t in tpy:
                 PyIndiDriver.IDLog("       "+t.name+"("+t.label+")= "+strISState(t.s) + '\n')
         elif p.getType()==PyIndi.INDI_LIGHT:
             tpy=p.getLight()
             for t in tpy:
                 PyIndiDriver.IDLog("       "+t.name+"("+t.label+")= "+strIPState(t.s) + '\n')
         elif p.getType()==PyIndi.INDI_BLOB:
             tpy=p.getBLOB()
             for t in tpy:
                 PyIndiDriver.IDLog("       "+t.name+"("+t.label+")= <blob "+str(t.size)+" bytes>" + '\n')
     return True
Exemple #10
0
 def ISNewNumber (self, dev, name, values, names, n):
     self.logger.info("ISNewNumber " + dev + " property " + name)
     if (dev != self.name):
         return False
     nvp=self.getNumber(name)
     if not nvp:
         return False
     if not self.isConnected():
         nvp.s=PyIndi.IPS_ALERT
         PyIndiDriver.IDSetNumber(nvp, "Cannot change property while device is disconnected.")
         return False
     if (name == "Number Property"):
         cvalues=PyIndiDriver.new_doubleArray(n)
         for i in range(len(values)):
             self.logger.info('  ' + names[i] + ' = ' + str(values[i])) 
             PyIndiDriver.doubleArray_setitem(cvalues, i, values[i])
         PyIndiDriver.IUUpdateNumber(nvp, cvalues, names, n)
         print names
         nvp.s=PyIndi.IPS_OK
         PyIndiDriver.IDSetNumber(nvp, None)
         return True           
     return False
Exemple #11
0
    def initProperties(self):
        self.logger.info("initProperties " + self.getDefaultName())
        super(CCDSimulator, self).initProperties()

        PyIndiDriver.IUFillNumber(self.SimulatorSettingsN[0], "SIM_XRES",
                                  "CCD X resolution", "%4.0f", 0, 2048, 0,
                                  1280)
        PyIndiDriver.IUFillNumber(self.SimulatorSettingsN[1], "SIM_YRES",
                                  "CCD Y resolution", "%4.0f", 0, 2048, 0,
                                  1024)
        PyIndiDriver.IUFillNumber(self.SimulatorSettingsN[2], "SIM_XSIZE",
                                  "CCD X Pixel Size", "%4.2f", 0, 60, 0, 5.2)
        PyIndiDriver.IUFillNumber(self.SimulatorSettingsN[3], "SIM_YSIZE",
                                  "CCD Y Pixel Size", "%4.2f", 0, 60, 0, 5.2)
        PyIndiDriver.IUFillNumber(self.SimulatorSettingsN[4], "SIM_MAXVAL",
                                  "CCD Maximum ADU", "%4.0f", 0, 65000, 0,
                                  65000)
        PyIndiDriver.IUFillNumber(self.SimulatorSettingsN[5], "SIM_BIAS",
                                  "CCD Bias", "%4.0f", 0, 6000, 0, 10)
        PyIndiDriver.IUFillNumber(self.SimulatorSettingsN[6], "SIM_SATURATION",
                                  "Saturation Mag", "%4.1f", 0, 20, 0, 1.0)
        PyIndiDriver.IUFillNumber(self.SimulatorSettingsN[7],
                                  "SIM_LIMITINGMAG", "Limiting Mag", "%4.1f",
                                  0, 20, 0, 17.0)
        PyIndiDriver.IUFillNumber(self.SimulatorSettingsN[8], "SIM_NOISE",
                                  "CCD Noise", "%4.0f", 0, 6000, 0, 10)
        PyIndiDriver.IUFillNumber(self.SimulatorSettingsN[9], "SIM_SKYGLOW",
                                  "Sky Glow (magnitudes)", "%4.1f", 0, 6000, 0,
                                  19.5)
        PyIndiDriver.IUFillNumber(self.SimulatorSettingsN[10], "SIM_OAGOFFSET",
                                  "Oag Offset (arcminutes)", "%4.1f", 0, 6000,
                                  0, 0)
        PyIndiDriver.IUFillNumber(self.SimulatorSettingsN[11], "SIM_POLAR",
                                  "PAE (arcminutes)", "%4.1f", -600, 600, 0, 0)
        PyIndiDriver.IUFillNumber(self.SimulatorSettingsN[12],
                                  "SIM_POLARDRIFT", "PAE Drift (minutes)",
                                  "%4.1f", 0, 6000, 0, 0)
        cnumbers = PyIndiDriver.new_INumberArray(13)
        for i in range(len(self.SimulatorSettingsN)):
            PyIndiDriver.INumberArray_setitem(cnumbers, i,
                                              self.SimulatorSettingsN[i])
        PyIndiDriver.IUFillNumberVector(self.SimulatorSettingsNV, cnumbers, 13,
                                        self.getDeviceName(),
                                        "SIMULATOR_SETTINGS",
                                        "Simulator Settings",
                                        "Simulator Config", PyIndi.IP_RW, 60,
                                        PyIndi.IPS_IDLE)
        PyIndiDriver.IUFillSwitch(self.TimeFactorS[0], "1X", "Actual Time",
                                  PyIndi.ISS_ON)
        PyIndiDriver.IUFillSwitch(self.TimeFactorS[1], "10X", "10x",
                                  PyIndi.ISS_OFF)
        PyIndiDriver.IUFillSwitch(self.TimeFactorS[2], "100X", "100x",
                                  PyIndi.ISS_OFF)
        cswitchs = PyIndiDriver.new_ISwitchArray(3)
        for i in range(len(self.TimeFactorS)):
            PyIndiDriver.ISwitchArray_setitem(cswitchs, i, self.TimeFactorS[i])
        PyIndiDriver.IUFillSwitchVector(self.TimeFactorSV, cswitchs, 3,
                                        self.getDeviceName(), "ON_TIME_FACTOR",
                                        "Time Factor", "Simulator Config",
                                        PyIndi.IP_RW, PyIndi.ISR_1OFMANY, 60,
                                        PyIndi.IPS_IDLE)
        self.addDebugControl()
        logProperties(self)
        return True
Exemple #12
0
                self.PrimaryCCD.setExposureLeft(timeleft)
                if timeleft < 1.0:
                    if timeleft <= 0.001:
                        self.InExposure = False
                        self.ExposureComplete(self.PrimaryCCD)
                    else:
                        self.nexttimer = int(timeleft *
                                             1000)  # set a shorter timer
        self.SetTimer(self.nexttimer)
        return

    def DrawCCDFrame(self, targetChip):
        return


logging.basicConfig(format='%(asctime)s %(message)s', level=logging.INFO)

ccd = CCDSimulator()

PyIndiDriver.driver_run()
#indidriver.ISNewSwitch("Python Simple Skeleton", "CONNECTION", [0, 1], ["CONNECT", "DISCONNECT"], 1)

# test
#import PyIndi
#import PyIndiDriver
#ion=[PyIndi.INumber() for x in range(13)]
#PyIndiDriver.IUFillNumber(ion[0],"SIM_XRES","CCD X resolution","%4.0f",0,2048,0,1280)
#PyIndiDriver.IUFillNumber(ion[1],"SIM_YRES","CCD Y resolution","%4.0f",0,2048,0,1024)
#ionv=PyIndi.INumberVectorProperty()
#PyIndiDriver.IUFillNumberVector(ionv, ion,13,"to","SI","Si","Sic",PyIndi.IP_RW, 60, PyIndi.IPS_IDLE)
                timeleft=self.CalcTimeLeft(self.ExpStart, self.ExposureRequest)
                if timeleft < 0.0:
                    timeleft=0.0
                self.PrimaryCCD.setExposureLeft(timeleft)
                if timeleft < 1.0:
                        if timeleft <= 0.001:
                            self.InExposure=False
                            self.ExposureComplete(self.PrimaryCCD)
                        else:
                            self.nexttimer=int(timeleft*1000) # set a shorter timer
        self.SetTimer(self.nexttimer)
        return 
    def DrawCCDFrame(self, targetChip):
        return

logging.basicConfig(format='%(asctime)s %(message)s', level=logging.INFO)

ccd=CCDSimulator()

PyIndiDriver.driver_run()
#indidriver.ISNewSwitch("Python Simple Skeleton", "CONNECTION", [0, 1], ["CONNECT", "DISCONNECT"], 1)

# test
#import PyIndi
#import PyIndiDriver
#ion=[PyIndi.INumber() for x in range(13)]
#PyIndiDriver.IUFillNumber(ion[0],"SIM_XRES","CCD X resolution","%4.0f",0,2048,0,1280)
#PyIndiDriver.IUFillNumber(ion[1],"SIM_YRES","CCD Y resolution","%4.0f",0,2048,0,1024)
#ionv=PyIndi.INumberVectorProperty()
#PyIndiDriver.IUFillNumberVector(ionv, ion,13,"to","SI","Si","Sic",PyIndi.IP_RW, 60, PyIndi.IPS_IDLE)
Exemple #14
0
def ISNewBLOB(dev, name, sizes, blobsizes, blobs, formats, names, n):
    PyIndiDriver.IDLog("Main ISNewBLOB\n")
    indidriver.ISNewBLOB(dev, name, sizes, blobsizes, blobs, formats, names, n)
Exemple #15
0
 def ISNewBLOB (self, dev, name, sizes, blobsizes, blobs, formats, names, n):
     self.logger.info("ISNewBLOB " + dev + " property " + name)
     if (dev != self.name):
         return False
     bvp=self.getBLOB(name)
     if not bvp:
         return False
     if not self.isConnected():
         bvp.s=PyIndi.IPS_ALERT
         PyIndiDriver.IDSetNumber(bvp, "Cannot change property while device is disconnected.")
         return False
     if (bvp.name == "BLOB Test"):
         csizes=PyIndiDriver.new_intArray(n)
         for i in range(len(sizes)):
             PyIndiDriver.intArray_setitem(csizes, i, sizes[i])
             #PyIndiDriver.IDLog('BLOB '+str(i)+' Content:\n##################################\n'+blobs[i]+'\n##################################\n')
         cblobsizes=PyIndiDriver.new_intArray(n)
         for i in range(len(blobsizes)):
             PyIndiDriver.intArray_setitem(cblobsizes, i, blobsizes[i])
         
         PyIndiDriver.IUUpdateBLOB(bvp, csizes, cblobsizes, blobs, formats, names, n);
         bp = PyIndiDriver.IUFindBLOB(bvp, names[0])
         if (not bp):
             return False
         PyIndiDriver.IDLog('Received BLOB with name '+bp.name+', format '+getattr(bp,'format')+', and size '+str(bp.size)+', and bloblen '+str(bp.bloblen)+'\n')
         #PyIndiDriver.IDLog('BLOB Content:\n##################################\n'+str(bp.getblobdata())+'\n##################################\n')
         bp.size=0
         bvp.s = PyIndi.IPS_OK
         PyIndiDriver.IDSetBLOB(bvp, None)
     return True