bool ScopeSim::ISNewNumber(const char *dev, const char *name, double values[], char *names[], int n) { // first check if it's for our device if (dev != nullptr && strcmp(dev, getDeviceName()) == 0) { if (strcmp(name, "GUIDE_RATE") == 0) { IUUpdateNumber(&GuideRateNP, values, names, n); GuideRateNP.s = IPS_OK; IDSetNumber(&GuideRateNP, nullptr); return true; } if (strcmp(name, GuideNSNP.name) == 0 || strcmp(name, GuideWENP.name) == 0) { processGuiderProperties(name, values, names, n); return true; } } // if we didn't process it, continue up the chain, let somebody else // give it a shot return INDI::Telescope::ISNewNumber(dev, name, values, names, n); }
bool IEQPro::ISNewNumber (const char *dev, const char *name, double values[], char *names[], int n) { if (!strcmp (dev, getDeviceName())) { // Custom Tracking Rate if (!strcmp(name, CustomTrackRateNP.name)) { if (TrackModeS[TRACK_CUSTOM].s != ISS_ON) { CustomTrackRateNP.s = IPS_IDLE; DEBUG(INDI::Logger::DBG_ERROR, "Can only set tracking rate if tracking mode is set to custom."); IDSetNumber(&CustomTrackRateNP, NULL); return true; } IUUpdateNumber(&CustomTrackRateNP, values, names, n); if (set_ieqpro_custom_track_rate(PortFD, CustomTrackRateN[0].value)) CustomTrackRateNP.s = IPS_OK; else CustomTrackRateNP.s = IPS_ALERT; IDSetNumber(&CustomTrackRateNP, NULL); return true; } // Guiding Rate if (!strcmp(name, GuideRateNP.name)) { IUUpdateNumber(&GuideRateNP, values, names, n); if (set_ieqpro_guide_rate(PortFD, GuideRateN[0].value)) GuideRateNP.s = IPS_OK; else GuideRateNP.s = IPS_ALERT; IDSetNumber(&GuideRateNP, NULL); return true; } if (!strcmp(name,GuideNSNP.name) || !strcmp(name,GuideWENP.name)) { processGuiderProperties(name, values, names, n); return true; } } return INDI::Telescope::ISNewNumber (dev, name, values, names, n); }
bool GPUSB::ISNewNumber(const char *dev, const char *name, double values[], char *names[], int n) { if (dev != nullptr && strcmp(dev, getDeviceName()) == 0) { if (!strcmp(name, GuideNSNP.name) || !strcmp(name, GuideWENP.name)) { processGuiderProperties(name, values, names, n); return true; } } return INDI::DefaultDevice::ISNewNumber(dev, name, values, names, n); }
bool SynscanDriver::ISNewNumber(const char * dev, const char * name, double values[], char * names[], int n) { if (dev && !strcmp(dev, getDeviceName())) { // Guide Rate if (strcmp(name, "GUIDE_RATE") == 0) { IUUpdateNumber(&GuideRateNP, values, names, n); GuideRateNP.s = IPS_OK; IDSetNumber(&GuideRateNP, nullptr); return true; } // Custom Slew Rate if (strcmp(name, CustomSlewRateNP.name) == 0) { if (TrackState == SCOPE_SLEWING) { LOG_ERROR("Cannot change rate while slewing."); CustomSlewRateNP.s = IPS_ALERT; IDSetNumber(&CustomSlewRateNP, nullptr); return true; } IUUpdateNumber(&CustomSlewRateNP, values, names, n); CustomSlewRateNP.s = IPS_OK; IDSetNumber(&CustomSlewRateNP, nullptr); return true; } // Horizonal Coords if (!strcmp(name, HorizontalCoordsNP.name)) { if (isParked()) { LOG_WARN("Unpark mount before issuing GOTO commands."); HorizontalCoordsNP.s = IPS_IDLE; IDSetNumber(&HorizontalCoordsNP, nullptr); return true; } int nset = 0; double newAlt = 0, newAz = 0; for (int i = 0; i < n; i++) { INumber * horp = IUFindNumber(&HorizontalCoordsNP, names[i]); if (horp == &HorizontalCoordsN[AXIS_AZ]) { newAz = values[i]; nset += newAz >= 0. && newAz <= 360.0; } else if (horp == &HorizontalCoordsN[AXIS_ALT]) { newAlt = values[i]; nset += newAlt >= -90. && newAlt <= 90.0; } } if (nset == 2 && GotoAzAlt(newAz, newAlt)) return true; HorizontalCoordsNP.s = IPS_ALERT; IDSetNumber(&HorizontalCoordsNP, "Altitude or Azimuth missing or invalid."); return false; } // Guiding if (strcmp(name, GuideNSNP.name) == 0 || strcmp(name, GuideWENP.name) == 0) { processGuiderProperties(name, values, names, n); return true; } } return INDI::Telescope::ISNewNumber(dev, name, values, names, n); }
bool INDI::CCD::ISNewNumber (const char *dev, const char *name, double values[], char *names[], int n) { // first check if it's for our device //IDLog("INDI::CCD::ISNewNumber %s\n",name); if(strcmp(dev,getDeviceName())==0) { // This is for our device // Now lets see if it's something we process here if(strcmp(name,"CCD_EXPOSURE")==0) { float n; int rc; n=values[0]; PrimaryCCD.ImageExposureN[0].value=n; if (PrimaryCCD.ImageExposureNP->s==IPS_BUSY) AbortExposure(); PrimaryCCD.ImageExposureNP->s=IPS_BUSY; // now we have a new number, this is our requested exposure time // Tell the clients we are busy with this exposure // And now call the physical hardware layer to start the exposure rc=StartExposure(n); switch(rc) { case 0: // normal case, exposure running on timers, callbacks when it's finished PrimaryCCD.ImageExposureNP->s=IPS_BUSY; break; case 1: // Short exposure, it's already done PrimaryCCD.ImageExposureNP->s=IPS_OK; break; case -1: // error condition PrimaryCCD.ImageExposureNP->s=IPS_ALERT; break; } IDSetNumber(PrimaryCCD.ImageExposureNP,NULL); return true; } if(strcmp(name,"GUIDER_EXPOSURE")==0) { float n; int rc; n=values[0]; GuideCCD.ImageExposureN[0].value=n; GuideCCD.ImageExposureNP->s=IPS_BUSY; // now we have a new number, this is our requested exposure time // Tell the clients we are busy with this exposure // And now call the physical hardware layer to start the exposure // change of plans, this is just changing exposure time // the start/stop stream buttons do the rest rc=StartGuideExposure(n); //rc=1; // set it to ok switch(rc) { case 0: // normal case, exposure running on timers, callbacks when it's finished GuideCCD.ImageExposureNP->s=IPS_BUSY; break; case 1: // Short exposure, it's already done GuideCCD.ImageExposureNP->s=IPS_OK; break; case -1: // error condition GuideCCD.ImageExposureNP->s=IPS_ALERT; break; } IDSetNumber(GuideCCD.ImageExposureNP,NULL); return true; } if(strcmp(name,"CCD_BINNING")==0) { // We are being asked to set camera binning PrimaryCCD.ImageBinNP->s=IPS_OK; IUUpdateNumber(PrimaryCCD.ImageBinNP,values,names,n); if (updateCCDBin(PrimaryCCD.ImageBinN[0].value, PrimaryCCD.ImageBinN[1].value) == false) { PrimaryCCD.ImageBinNP->s = IPS_ALERT; IDSetNumber (PrimaryCCD.ImageBinNP, NULL); } return true; } if(strcmp(name,"CCD_FRAME")==0) { // We are being asked to set camera binning PrimaryCCD.ImageFrameNP->s=IPS_OK; IUUpdateNumber(PrimaryCCD.ImageFrameNP,values,names,n); if (updateCCDFrame(PrimaryCCD.ImageFrameN[0].value, PrimaryCCD.ImageFrameN[1].value, PrimaryCCD.ImageFrameN[2].value, PrimaryCCD.ImageFrameN[3].value) == false) { PrimaryCCD.ImageFrameNP->s = IPS_ALERT; IDSetNumber(PrimaryCCD.ImageFrameNP, NULL); } return true; } if(strcmp(name,"GUIDER_FRAME")==0) { // We are being asked to set camera binning GuideCCD.ImageFrameNP->s=IPS_OK; IUUpdateNumber(GuideCCD.ImageFrameNP,values,names,n); // Update client display //IDSetNumber(GuiderFrameNP,NULL); if (isDebug()) IDLog("GuiderFrame set to %4.0f,%4.0f %4.0f x %4.0f\n", GuideCCD.ImageFrameN[0].value,GuideCCD.ImageFrameN[1].value,GuideCCD.ImageFrameN[2].value,GuideCCD.ImageFrameN[3].value); //GSubX=GuiderFrameN[0].value; //GSubY=GuiderFrameN[1].value; //GSubW=GuiderFrameN[2].value; //GSubH=GuiderFrameN[3].value; GuideCCD.setFrame(GuideCCD.ImageFrameN[0].value, GuideCCD.ImageFrameN[1].value, GuideCCD.ImageFrameN[2].value,GuideCCD.ImageFrameN[3].value); return true; } if (!strcmp(name,GuideNSP.name) || !strcmp(name,GuideEWP.name)) { processGuiderProperties(name, values, names, n); return true; } } // if we didn't process it, continue up the chain, let somebody else // give it a shot return DefaultDevice::ISNewNumber(dev,name,values,names,n); }