bool LX200_16::initProperties() { LX200GPS::initProperties(); IUFillSwitch(&FanStatusS[0], "On", "", ISS_OFF); IUFillSwitch(&FanStatusS[1], "Off", "", ISS_OFF); IUFillSwitchVector(&FanStatusSP, FanStatusS, 2, getDeviceName(), "Fan", "", LX16_TAB, IP_RW, ISR_1OFMANY, 0, IPS_IDLE); IUFillSwitch(&HomeSearchS[0], "Save Home", "", ISS_OFF); IUFillSwitch(&HomeSearchS[1], "Set Home", "", ISS_OFF); IUFillSwitchVector(&HomeSearchSP, HomeSearchS, 2, getDeviceName(), "Home", "", LX16_TAB, IP_RW, ISR_1OFMANY, 0, IPS_IDLE); IUFillSwitch(&FieldDeRotatorS[0], "On", "", ISS_OFF); IUFillSwitch(&FieldDeRotatorS[1], "Off", "", ISS_OFF); IUFillSwitchVector(&FieldDeRotatorSP, FieldDeRotatorS, 2, getDeviceName(), "Field De-Rotator", "", LX16_TAB, IP_RW, ISR_1OFMANY, 0, IPS_IDLE); IUFillNumber(&HorizontalCoordsN[0], "ALT", "Alt D:M:S", "%10.6m", -90., 90.0, 0.0, 0); IUFillNumber(&HorizontalCoordsN[1], "AZ", "Az D:M:S", "%10.6m", 0.0, 360.0, 0.0, 0); IUFillNumberVector(&HorizontalCoordsNP, HorizontalCoordsN, 2, getDeviceName(), "HORIZONTAL_COORD", "Horizontal Coord", MAIN_CONTROL_TAB, IP_RW, 0, IPS_IDLE); return true; }
bool lacerta_mfoc::initProperties() { INDI::Focuser::initProperties(); IUFillNumber(&BacklashN[0], "BACKLASH", "step", "%4.2f", 0, 255, 1, 12); IUFillNumberVector(&BacklashNP, BacklashN, 1, getDeviceName(), "BACKLASH_SETTINGS", "Backlash", MAIN_CONTROL_TAB, IP_RW, 60, IPS_IDLE); IUFillNumber(&TempCompN[0], "TEMPCOMP", "step/10 degC", "%4.2f", -5000, 5000, 1, 65); IUFillNumberVector(&TempCompNP, TempCompN, 1, getDeviceName(), "TEMPCOMP_SETTINGS", "T Comp.", MAIN_CONTROL_TAB, IP_RW, 60, IPS_IDLE); FocusMaxPosN[0].min = MFOC_POSMIN_HARDWARE; FocusMaxPosN[0].max = MFOC_POSMAX_HARDWARE; FocusMaxPosN[0].step = (FocusMaxPosN[0].max - FocusMaxPosN[0].min) / 20.0; FocusMaxPosN[0].value = 8000; FocusAbsPosN[0].max = FocusAbsPosN[0].value; IUFillSwitch(&TempTrackDirS[MODE_TDIR_BOTH], "Both", "Both", ISS_ON); IUFillSwitch(&TempTrackDirS[MODE_TDIR_IN], "In", "In", ISS_ON); IUFillSwitch(&TempTrackDirS[MODE_TDIR_OUT], "Out", "Out", ISS_ON); IUFillSwitchVector(&TempTrackDirSP, TempTrackDirS, MODE_COUNT_TEMP_DIR, getDeviceName(), "Temp. dir.", "Temp. dir.", MAIN_CONTROL_TAB, IP_RW, ISR_1OFMANY, 60, IPS_IDLE); IUFillSwitch(&StartSavedPositionS[MODE_SAVED_ON], "Yes", "Yes", ISS_ON); IUFillSwitch(&StartSavedPositionS[MODE_SAVED_OFF], "No", "No", ISS_OFF); IUFillSwitchVector(&StartSavedPositionSP, StartSavedPositionS, MODE_COUNT_SAVED, getDeviceName(), "Start saved pos.", "Start saved pos.", MAIN_CONTROL_TAB, IP_RW, ISR_1OFMANY, 60, IPS_IDLE); return true; }
void FocuserInterface::initProperties(const char *groupName) { IUFillNumber(&FocusSpeedN[0], "FOCUS_SPEED_VALUE", "Focus Speed", "%3.0f", 0.0, 255.0, 1.0, 255.0); IUFillNumberVector(&FocusSpeedNP, FocusSpeedN, 1, m_defaultDevice->getDeviceName(), "FOCUS_SPEED", "Speed", groupName, IP_RW, 60, IPS_OK); IUFillNumber(&FocusTimerN[0], "FOCUS_TIMER_VALUE", "Focus Timer (ms)", "%4.0f", 0.0, 5000.0, 50.0, 1000.0); IUFillNumberVector(&FocusTimerNP, FocusTimerN, 1, m_defaultDevice->getDeviceName(), "FOCUS_TIMER", "Timer", groupName, IP_RW, 60, IPS_OK); lastTimerValue = 1000.0; IUFillSwitch(&FocusMotionS[0], "FOCUS_INWARD", "Focus In", ISS_ON); IUFillSwitch(&FocusMotionS[1], "FOCUS_OUTWARD", "Focus Out", ISS_OFF); IUFillSwitchVector(&FocusMotionSP, FocusMotionS, 2 ,m_defaultDevice->getDeviceName(), "FOCUS_MOTION", "Direction", groupName, IP_RW, ISR_1OFMANY, 60, IPS_OK); // Driver can define those to clients if there is support IUFillNumber(&FocusAbsPosN[0], "FOCUS_ABSOLUTE_POSITION", "Ticks", "%4.0f", 0.0, 100000.0, 1000.0, 0); IUFillNumberVector(&FocusAbsPosNP, FocusAbsPosN, 1, m_defaultDevice->getDeviceName(), "ABS_FOCUS_POSITION", "Absolute Position", groupName, IP_RW, 60, IPS_OK); IUFillNumber(&FocusRelPosN[0], "FOCUS_RELATIVE_POSITION", "Ticks", "%4.0f", 0.0, 100000.0, 1000.0, 0); IUFillNumberVector(&FocusRelPosNP, FocusRelPosN, 1, m_defaultDevice->getDeviceName(), "REL_FOCUS_POSITION", "Relative Position", groupName, IP_RW, 60, IPS_OK); IUFillSwitch(&AbortS[0], "ABORT", "Abort", ISS_OFF); IUFillSwitchVector(&AbortSP, AbortS, 1, m_defaultDevice->getDeviceName(), "FOCUS_ABORT_MOTION", "Abort Motion", groupName, IP_RW, ISR_ATMOST1, 60, IPS_IDLE); }
void MathPluginManagement::InitProperties(Telescope* ChildTelescope) { EnumeratePlugins(); AlignmentSubsystemMathPlugins.reset(new ISwitch[MathPluginDisplayNames.size() + 1]); IUFillSwitch(AlignmentSubsystemMathPlugins.get(), "INBUILT_MATH_PLUGIN", "Inbuilt Math Plugin", ISS_ON); for (int i = 0; i < MathPluginDisplayNames.size(); i++) IUFillSwitch(AlignmentSubsystemMathPlugins.get() + i + 1, MathPluginDisplayNames[i].c_str(), MathPluginDisplayNames[i].c_str(), ISS_OFF); IUFillSwitchVector(&AlignmentSubsystemMathPluginsV, AlignmentSubsystemMathPlugins.get(), MathPluginDisplayNames.size() + 1, ChildTelescope->getDeviceName(), "ALIGNMENT_SUBSYSTEM_MATH_PLUGINS", "Math Plugins", ALIGNMENT_TAB, IP_RW, ISR_1OFMANY, 60, IPS_IDLE); ChildTelescope->registerProperty(&AlignmentSubsystemMathPluginsV, INDI_SWITCH); IUFillSwitch(&AlignmentSubsystemMathPluginInitialise, "ALIGNMENT_SUBSYSTEM_MATH_PLUGIN_INITIALISE", "OK", ISS_OFF); IUFillSwitchVector(&AlignmentSubsystemMathPluginInitialiseV, &AlignmentSubsystemMathPluginInitialise, 1, ChildTelescope->getDeviceName(), "ALIGNMENT_SUBSYSTEM_MATH_PLUGIN_INITIALISE", "(Re)Initialise Plugin", ALIGNMENT_TAB, IP_RW, ISR_ATMOST1, 60, IPS_IDLE); ChildTelescope->registerProperty(&AlignmentSubsystemMathPluginInitialiseV, INDI_SWITCH); IUFillSwitch(&AlignmentSubsystemActive, "ALIGNMENT SUBSYSTEM ACTIVE", "Alignment Subsystem Active", ISS_OFF); IUFillSwitchVector(&AlignmentSubsystemActiveV, &AlignmentSubsystemActive, 1, ChildTelescope->getDeviceName(), "ALIGNMENT_SUBSYSTEM_ACTIVE", "Activate alignment subsystem", ALIGNMENT_TAB, IP_RW, ISR_ATMOST1, 60, IPS_IDLE); ChildTelescope->registerProperty(&AlignmentSubsystemActiveV, INDI_SWITCH); // The following property is used for configuration purposes only and is not exposed to the client. IUFillText(&AlignmentSubsystemCurrentMathPlugin, "ALIGNMENT_SUBSYSTEM_CURRENT_MATH_PLUGIN", "Current Math Plugin", AlignmentSubsystemMathPlugins.get()[0].label); IUFillTextVector(&AlignmentSubsystemCurrentMathPluginV, &AlignmentSubsystemCurrentMathPlugin, 1, ChildTelescope->getDeviceName(), "ALIGNMENT_SUBSYSTEM_CURRENT_MATH_PLUGIN", "Current Math Plugin", ALIGNMENT_TAB, IP_RO, 60, IPS_IDLE); }
bool Weather::initProperties() { DefaultDevice::initProperties(); WI::initProperties(MAIN_CONTROL_TAB, PARAMETERS_TAB); // Location IUFillNumber(&LocationN[LOCATION_LATITUDE], "LAT", "Lat (dd:mm:ss)", "%010.6m", -90, 90, 0, 0.0); IUFillNumber(&LocationN[LOCATION_LONGITUDE], "LONG", "Lon (dd:mm:ss)", "%010.6m", 0, 360, 0, 0.0); IUFillNumber(&LocationN[LOCATION_ELEVATION], "ELEV", "Elevation (m)", "%g", -200, 10000, 0, 0); IUFillNumberVector(&LocationNP, LocationN, 3, getDeviceName(), "GEOGRAPHIC_COORD", "Location", SITE_TAB, IP_RW, 60, IPS_OK); // Active Devices IUFillText(&ActiveDeviceT[0], "ACTIVE_GPS", "GPS", "GPS Simulator"); IUFillTextVector(&ActiveDeviceTP, ActiveDeviceT, 1, getDeviceName(), "ACTIVE_DEVICES", "Snoop devices", OPTIONS_TAB, IP_RW, 60, IPS_IDLE); // Update Period IUFillNumber(&UpdatePeriodN[0], "PERIOD", "Period (secs)", "%4.2f", 0, 3600, 60, 60); IUFillNumberVector(&UpdatePeriodNP, UpdatePeriodN, 1, getDeviceName(), "WEATHER_UPDATE", "Update", MAIN_CONTROL_TAB, IP_RW, 60, IPS_IDLE); // Refresh IUFillSwitch(&RefreshS[0], "REFRESH", "Refresh", ISS_OFF); IUFillSwitchVector(&RefreshSP, RefreshS, 1, getDeviceName(), "WEATHER_REFRESH", "Weather", MAIN_CONTROL_TAB, IP_RW, ISR_ATMOST1, 0, IPS_IDLE); // Override IUFillSwitch(&OverrideS[0], "OVERRIDE", "Override Status", ISS_OFF); IUFillSwitchVector(&OverrideSP, OverrideS, 1, getDeviceName(), "WEATHER_OVERRIDE", "Safety", MAIN_CONTROL_TAB, IP_RW, ISR_NOFMANY, 0, IPS_IDLE); IDSnoopDevice(ActiveDeviceT[0].text, "GEOGRAPHIC_COORD"); if (weatherConnection & CONNECTION_SERIAL) { serialConnection = new Connection::Serial(this); serialConnection->registerHandshake([&]() { return callHandshake(); }); registerConnection(serialConnection); } if (weatherConnection & CONNECTION_TCP) { tcpConnection = new Connection::TCP(this); tcpConnection->registerHandshake([&]() { return callHandshake(); }); registerConnection(tcpConnection); } setDriverInterface(WEATHER_INTERFACE); return true; }
bool ASICCD::initProperties() { INDI::CCD::initProperties(); IUFillNumber(&CoolerN[0], "CCD_COOLER_VALUE", "Cooling Power (%)", "%+06.2f", 0., 1., .2, 0.0); IUFillNumberVector(&CoolerNP, CoolerN, 1, getDeviceName(), "CCD_COOLER_POWER", "Cooling Power", MAIN_CONTROL_TAB, IP_RO, 60, IPS_IDLE); IUFillNumberVector(&ControlNP, NULL, 0, getDeviceName(), "CCD_CONTROLS", "Controls", CONTROL_TAB, IP_RW, 60, IPS_IDLE); IUFillSwitchVector(&ControlSP, NULL, 0, getDeviceName(), "CCD_CONTROLS_MODE", "Set Auto", CONTROL_TAB, IP_RW, ISR_NOFMANY, 60, IPS_IDLE); IUFillSwitchVector(&VideoFormatSP, NULL, 0, getDeviceName(), "CCD_VIDEO_FORMAT", "Format", CONTROL_TAB, IP_RW, ISR_1OFMANY, 60, IPS_IDLE); IUSaveText(&BayerT[2], getBayerString()); int maxBin=1; for (int i=0; i < 16; i++) { if (m_camInfo->SupportedBins[i] != 0) maxBin = m_camInfo->SupportedBins[i]; else break; } PrimaryCCD.setResolution(m_camInfo->MaxWidth, m_camInfo->MaxHeight); PrimaryCCD.setMinMaxStep("CCD_EXPOSURE", "CCD_EXPOSURE_VALUE", MIN_DURATION, 3600, 1, false); PrimaryCCD.setMinMaxStep("CCD_BINNING", "HOR_BIN", 1, maxBin, 1, false); PrimaryCCD.setMinMaxStep("CCD_BINNING", "VER_BIN", 1, maxBin, 1, false); uint32_t cap =0; cap |= CCD_CAN_ABORT; if (maxBin > 1) cap |= CCD_CAN_BIN; cap |= CCD_CAN_SUBFRAME; if (m_camInfo->IsCoolerCam) cap |= CCD_HAS_COOLER; if (m_camInfo->MechanicalShutter) cap |= CCD_HAS_SHUTTER; if (m_camInfo->ST4Port) cap |= CCD_HAS_ST4_PORT; if (m_camInfo->IsColorCam) cap |= CCD_HAS_BAYER; #ifndef OSX_EMBEDED_MODE cap |= CCD_HAS_STREAMING; #endif SetCCDCapability(cap); addAuxControls(); return true; }
bool MoonLite::initProperties() { INDI::Focuser::initProperties(); FocusSpeedN[0].min = 1; FocusSpeedN[0].max = 5; FocusSpeedN[0].value = 1; /* Step Mode */ IUFillSwitch(&StepModeS[0], "Half Step", "", ISS_OFF); IUFillSwitch(&StepModeS[1], "Full Step", "", ISS_ON); IUFillSwitchVector(&StepModeSP, StepModeS, 2, getDeviceName(), "Step Mode", "", OPTIONS_TAB, IP_RW, ISR_1OFMANY, 0, IPS_IDLE); /* Focuser temperature */ IUFillNumber(&TemperatureN[0], "TEMPERATURE", "Celsius", "%6.2f", -50, 70., 0., 0.); IUFillNumberVector(&TemperatureNP, TemperatureN, 1, getDeviceName(), "FOCUS_TEMPERATURE", "Temperature", MAIN_CONTROL_TAB, IP_RO, 0, IPS_IDLE); // Maximum Travel IUFillNumber(&MaxTravelN[0], "MAXTRAVEL", "Maximum travel", "%6.0f", 1., 60000., 0., 10000.); IUFillNumberVector(&MaxTravelNP, MaxTravelN, 1, getDeviceName(), "FOCUS_MAXTRAVEL", "Max. travel", OPTIONS_TAB, IP_RW, 0, IPS_IDLE); // Temperature Settings IUFillNumber(&TemperatureSettingN[0], "Calibration", "", "%6.2f", -20, 20, 0.5, 0); IUFillNumber(&TemperatureSettingN[1], "Coefficient", "", "%6.2f", -20, 20, 0.5, 0); IUFillNumberVector(&TemperatureSettingNP, TemperatureSettingN, 2, getDeviceName(), "Temperature Settings", "", OPTIONS_TAB, IP_RW, 0, IPS_IDLE); // Compensate for temperature IUFillSwitch(&TemperatureCompensateS[0], "Enable", "", ISS_OFF); IUFillSwitch(&TemperatureCompensateS[1], "Disable", "", ISS_ON); IUFillSwitchVector(&TemperatureCompensateSP, TemperatureCompensateS, 2, getDeviceName(), "Temperature Compensate", "", MAIN_CONTROL_TAB, IP_RW, ISR_1OFMANY, 0, IPS_IDLE); // Sync IUFillNumber(&SyncN[0], "FOCUS_SYNC_OFFSET", "Offset", "%6.0f", 0, 60000., 0., 0.); IUFillNumberVector(&SyncNP, SyncN, 1, getDeviceName(), "FOCUS_SYNC", "Sync", MAIN_CONTROL_TAB, IP_RW, 0, IPS_IDLE); /* Relative and absolute movement */ FocusRelPosN[0].min = 0.; FocusRelPosN[0].max = 30000.; FocusRelPosN[0].value = 0; FocusRelPosN[0].step = 1000; FocusAbsPosN[0].min = 0.; FocusAbsPosN[0].max = 60000.; FocusAbsPosN[0].value = 0; FocusAbsPosN[0].step = 1000; setDefaultPollingPeriod(500); addDebugControl(); return true; }
void GPhotoCCD::AddWidget(gphoto_widget *widget) { IPerm perm; struct tm *tm; if(! widget) return; perm = widget->readonly ? IP_RO : IP_RW; cam_opt *opt = new cam_opt(); opt->widget = widget; switch(widget->type) { case GP_WIDGET_RADIO: case GP_WIDGET_MENU: opt->item.sw = create_switch(widget->name, widget->choices, widget->choice_cnt, widget->value.index); IUFillSwitchVector(&opt->prop.sw, opt->item.sw, widget->choice_cnt, getDeviceName(), widget->name, widget->name, widget->parent, perm, ISR_1OFMANY, 60, IPS_IDLE); IDDefSwitch(&opt->prop.sw, NULL); break; case GP_WIDGET_TEXT: IUFillText(&opt->item.text, widget->name, widget->name, widget->value.text); IUFillTextVector(&opt->prop.text, &opt->item.text, 1, getDeviceName(), widget->name, widget->name, widget->parent, perm, 60, IPS_IDLE); IDDefText(&opt->prop.text, NULL); break; case GP_WIDGET_TOGGLE: opt->item.sw = create_switch(widget->name, (char **)on_off, 2, widget->value.toggle ? 0 : 1); IUFillSwitchVector(&opt->prop.sw, opt->item.sw, 2, getDeviceName(), widget->name, widget->name, widget->parent, perm, ISR_1OFMANY, 60, IPS_IDLE); IDDefSwitch(&opt->prop.sw, NULL); break; case GP_WIDGET_RANGE: IUFillNumber(&opt->item.num, widget->name, widget->name, "%5.2f", widget->min, widget->max, widget->step, widget->value.num); IUFillNumberVector(&opt->prop.num, &opt->item.num, 1, getDeviceName(), widget->name, widget->name, widget->parent, perm, 60, IPS_IDLE); break; case GP_WIDGET_DATE: tm = gmtime((time_t *)&widget->value.date); IUFillText(&opt->item.text, widget->name, widget->name, asctime(tm)); IUFillTextVector(&opt->prop.text, &opt->item.text, 1, getDeviceName(), widget->name, widget->name, widget->parent, perm, 60, IPS_IDLE); IDDefText(&opt->prop.text, NULL); break; default: delete opt; return; } CamOptions[widget->name] = opt; }
bool MoonLiteDRO::initProperties() { INDI::Focuser::initProperties(); FocusSpeedN[0].min = 1; FocusSpeedN[0].max = 5; FocusSpeedN[0].value = 1; // Step Delay IUFillNumber(&StepDelayN[0], "STEP_DELAY", "Delay", "%.f", 1, 5, 1., 1.); IUFillNumberVector(&StepDelayNP, StepDelayN, 1, getDeviceName(), "FOCUS_STEP_DELAY", "Step", SETTINGS_TAB, IP_RW, 0, IPS_IDLE); // Step Mode IUFillSwitch(&StepModeS[FOCUS_HALF_STEP], "HALF_STEP", "Half Step", ISS_OFF); IUFillSwitch(&StepModeS[FOCUS_FULL_STEP], "FULL_STEP", "Full Step", ISS_ON); IUFillSwitchVector(&StepModeSP, StepModeS, 2, getDeviceName(), "FOCUS_STEP_MODE", "Step Mode", SETTINGS_TAB, IP_RW, ISR_1OFMANY, 0, IPS_IDLE); // Temperature Settings IUFillNumber(&TemperatureSettingN[0], "Calibration", "Calibration", "%6.2f", -20, 20, 0.5, 0); IUFillNumber(&TemperatureSettingN[1], "Coefficient", "Coefficient", "%6.2f", -20, 20, 0.5, 0); IUFillNumberVector(&TemperatureSettingNP, TemperatureSettingN, 2, getDeviceName(), "FOCUS_TEMPERATURE_SETTINGS", "T. Settings", SETTINGS_TAB, IP_RW, 0, IPS_IDLE); // Compensate for temperature IUFillSwitch(&TemperatureCompensateS[0], "Enable", "Enable", ISS_OFF); IUFillSwitch(&TemperatureCompensateS[1], "Disable", "Disable", ISS_ON); IUFillSwitchVector(&TemperatureCompensateSP, TemperatureCompensateS, 2, getDeviceName(), "FOCUS_TEMPERATURE_COMPENSATION", "T. Compensate", SETTINGS_TAB, IP_RW, ISR_1OFMANY, 0, IPS_IDLE); // Focuser temperature IUFillNumber(&TemperatureN[0], "TEMPERATURE", "Celsius", "%6.2f", -50, 70., 0., 0.); IUFillNumberVector(&TemperatureNP, TemperatureN, 1, getDeviceName(), "FOCUS_TEMPERATURE", "Temperature", MAIN_CONTROL_TAB, IP_RO, 0, IPS_IDLE); // Relative and absolute movement FocusRelPosN[0].min = 0.; FocusRelPosN[0].max = 50000.; FocusRelPosN[0].value = 0; FocusRelPosN[0].step = 1000; FocusAbsPosN[0].min = 0.; FocusAbsPosN[0].max = 100000.; FocusAbsPosN[0].value = 0; FocusAbsPosN[0].step = 1000; setDefaultPollingPeriod(500); addDebugControl(); return true; }
bool GPhotoCCD::initProperties() { // Init parent properties first INDI::CCD::initProperties(); initFocuserProperties(getDeviceName(), FOCUS_TAB); IUFillText(&mPortT[0], "PORT" , "Port", ""); IUFillTextVector(&PortTP, mPortT, NARRAY(mPortT), getDeviceName(), "DEVICE_PORT" , "Shutter Release", MAIN_CONTROL_TAB, IP_RW, 0, IPS_IDLE); IUFillNumber(&mMirrorLockN[0], "MIRROR_LOCK_SECONDS" , "Seconds", "%1.0f", 0, 10, 1, 0); IUFillNumberVector(&mMirrorLockNP, mMirrorLockN, 1, getDeviceName(), "MIRROR_LOCK" , "Mirror Lock", MAIN_CONTROL_TAB, IP_RW, 60, IPS_IDLE); //We don't know how many items will be in the switch yet IUFillSwitchVector(&mIsoSP, NULL, 0, getDeviceName(), "CCD_ISO", "ISO", IMAGE_SETTINGS_TAB, IP_RW, ISR_1OFMANY, 60, IPS_IDLE); IUFillSwitchVector(&mFormatSP, NULL, 0, getDeviceName(), "CAPTURE_FORMAT", "Capture Format", IMAGE_SETTINGS_TAB, IP_RW, ISR_1OFMANY, 60, IPS_IDLE); IUFillSwitch(&autoFocusS[0], "Set", "", ISS_OFF); IUFillSwitchVector(&autoFocusSP, autoFocusS, 1, getDeviceName(), "Auto Focus", "", FOCUS_TAB, IP_RW, ISR_1OFMANY, 0, IPS_IDLE); IUFillSwitch(&transferFormatS[0], "FITS", "", ISS_ON); IUFillSwitch(&transferFormatS[1], "Native", "", ISS_OFF); IUFillSwitchVector(&transferFormatSP, transferFormatS, 2, getDeviceName(), "Transfer Format", "", IMAGE_SETTINGS_TAB, IP_RW, ISR_1OFMANY, 0, IPS_IDLE); IUFillSwitch(&livePreviewS[0], "Enable", "", ISS_OFF); IUFillSwitch(&livePreviewS[1], "Disable", "", ISS_ON); IUFillSwitchVector(&livePreviewSP, livePreviewS, 2, getDeviceName(), "VIDEO_STREAM", "Preview", MAIN_CONTROL_TAB, IP_RW, ISR_1OFMANY, 0, IPS_IDLE); PrimaryCCD.setMinMaxStep("CCD_EXPOSURE", "CCD_EXPOSURE_VALUE", 0.001, 3600, 1, false); // Most cameras have this by default, so let's set it as default. IUSaveText(&BayerT[2], "RGGB"); SetCCDCapability(CCD_CAN_SUBFRAME | CCD_HAS_BAYER); SetFocuserCapability(FOCUSER_HAS_VARIABLE_SPEED); FocusSpeedN[0].min=0; FocusSpeedN[0].max=3; FocusSpeedN[0].step=1; FocusSpeedN[0].value=1; /* JM 2014-05-20 Make PrimaryCCD.ImagePixelSizeNP writable since we can't know for now the pixel size and bit depth from gphoto */ PrimaryCCD.getCCDInfo()->p = IP_RW; setDriverInterface(getDriverInterface() | FOCUSER_INTERFACE); gphoto_set_debug(getDeviceName()); gphoto_read_set_debug(getDeviceName()); return true; }
bool StarbookDriver::initProperties() { Telescope::initProperties(); IUFillText(&VersionT[0], "Version", "Version", ""); IUFillTextVector(&VersionTP, VersionT, 1, getDeviceName(), "Firmware", "Firmware", INFO_TAB, IP_RO, 0, IPS_IDLE); IUFillText(&StateT[0], "State", "State", ""); IUFillTextVector(&StateTP, StateT, 1, getDeviceName(), "Status", "Status", MAIN_CONTROL_TAB, IP_RO, 0, IPS_IDLE); IUFillSwitch(&StartS[0], "Initialize", "Initialize", ISS_OFF); IUFillSwitchVector(&StartSP, StartS, 1, getDeviceName(), "Basic", "Basic control", MAIN_CONTROL_TAB, IP_RW, ISR_ATMOST1, 60, IPS_IDLE); curlConnection = new Connection::Curl(this); curlConnection->registerHandshake([&]() { return callHandshake(); }); registerConnection(curlConnection); curlConnection->setDefaultHost(DEFAULT_STARBOOK_ADDRESS); curlConnection->setDefaultPort(DEFAULT_STARBOOK_PORT); cmd_interface = std::unique_ptr<starbook::CommandInterface>( new starbook::CommandInterface(curlConnection) ); addDebugControl(); last_known_state = starbook::UNKNOWN; return true; }
bool XAGYLWheel::initProperties() { INDI::FilterWheel::initProperties(); // Device port IUFillText(&PortT[0],"PORT","Port","/dev/ttyUSB0"); IUFillTextVector(&PortTP,PortT,1,getDeviceName(),"DEVICE_PORT","Ports",OPTIONS_TAB,IP_RW,60,IPS_IDLE); // Firmware info IUFillText(&FirmwareInfoT[0],"Product","",NULL); IUFillText(&FirmwareInfoT[1],"Firmware","",NULL); IUFillText(&FirmwareInfoT[2],"Serial #","",NULL); IUFillTextVector(&FirmwareInfoTP,FirmwareInfoT,3,getDeviceName(),"Info","",MAIN_CONTROL_TAB,IP_RO,60,IPS_IDLE); // Settings IUFillNumber(&SettingsN[0], "Speed", "", "%.f", 0, 100, 10., 0.); IUFillNumber(&SettingsN[1], "Jitter", "", "%.f", 0, 10, 1., 0.); IUFillNumber(&SettingsN[2], "Threshold", "", "%.f", 0, 100, 10., 0.); IUFillNumber(&SettingsN[3], "Pulse Width", "", "%.f", 100, 10000, 100., 0.); IUFillNumberVector(&SettingsNP, SettingsN, 4, getDeviceName(), "Settings", "", SETTINGS_TAB, IP_RW, 0, IPS_IDLE); // Reset IUFillSwitch(&ResetS[0], "Reboot", "", ISS_OFF); IUFillSwitch(&ResetS[1], "Initialize", "", ISS_OFF); IUFillSwitch(&ResetS[2], "Clear Calibration", "", ISS_OFF); IUFillSwitch(&ResetS[3], "Perform Calibration", "", ISS_OFF); IUFillSwitchVector(&ResetSP, ResetS, 4, getDeviceName(), "Commands", "", MAIN_CONTROL_TAB, IP_RW, ISR_ATMOST1, 0, IPS_IDLE); addAuxControls(); return true; }
bool ASIEAF::initProperties() { INDI::Focuser::initProperties(); // Focuser temperature IUFillNumber(&TemperatureN[0], "TEMPERATURE", "Celsius", "%6.2f", -50, 70., 0., 0.); IUFillNumberVector(&TemperatureNP, TemperatureN, 1, getDeviceName(), "FOCUS_TEMPERATURE", "Temperature", MAIN_CONTROL_TAB, IP_RO, 0, IPS_IDLE); // Focus motion beep IUFillSwitch(&BeepS[BEEP_ON], "ON", "On", ISS_ON); IUFillSwitch(&BeepS[BEEL_OFF], "OFF", "Off", ISS_OFF); IUFillSwitchVector(&BeepSP, BeepS, 2, getDeviceName(), "FOCUS_BEEP", "Beep", OPTIONS_TAB, IP_RW, ISR_1OFMANY, 0, IPS_IDLE); FocusRelPosN[0].min = 0.; FocusRelPosN[0].max = m_MaxSteps / 2.0; FocusRelPosN[0].value = 0; FocusRelPosN[0].step = FocusRelPosN[0].max / 20; FocusAbsPosN[0].min = 0.; FocusAbsPosN[0].max = m_MaxSteps; FocusAbsPosN[0].value = 0; FocusAbsPosN[0].step = m_MaxSteps / 20.0; setDefaultPollingPeriod(500); addDebugControl(); return true; }
bool Vantage::initProperties() { INDI::Weather::initProperties(); IUFillText(&PortT[0],"PORT","Port","/dev/vantage"); IUFillTextVector(&PortTP,PortT,1,getDeviceName(),"DEVICE_PORT","Ports",OPTIONS_TAB,IP_RW,60,IPS_IDLE); IUFillSwitch(&BaudRateS[0], "1200", "", ISS_OFF); IUFillSwitch(&BaudRateS[1], "2400", "", ISS_OFF); IUFillSwitch(&BaudRateS[2], "4800", "", ISS_OFF); IUFillSwitch(&BaudRateS[3], "9600", "", ISS_OFF); IUFillSwitch(&BaudRateS[4], "14400", "", ISS_OFF); IUFillSwitch(&BaudRateS[5], "19200", "", ISS_ON); IUFillSwitchVector(&BaudRateSP, BaudRateS, 6, getDeviceName(),"DEVICE_BAUD_RATE", "Baud Rate", OPTIONS_TAB, IP_RW, ISR_1OFMANY, 60, IPS_IDLE); addParameter("WEATHER_FORECAST", "Forecast", 0, 0, 0, 1); addParameter("WEATHER_TEMPERATURE", "Temperature (C)", -10, 30, -20, 40); addParameter("WEATHER_BAROMETER", "Barometer (mbar)", 20, 32.5, 20, 32.5); addParameter("WEATHER_WIND_SPEED", "Wind (kph)", 0, 20, 0, 40); addParameter("WEAHTER_WIND_DIRECTION", "Wind Direction", 0, 360, 0, 360); addParameter("WEATHER_HUMIDITY", "Humidity %", 0, 100, 0, 100); addParameter("WEATHER_RAIN_RATE", "Rain (mm/h)", 0, 0, 0, 0); addParameter("WEATHER_SOLAR_RADIATION", "Solar Radiation (w/m^2)", 0, 10000, 0, 10000); setCriticalParameter("WEATHER_FORECAST"); setCriticalParameter("WEATHER_TEMPERATURE"); setCriticalParameter("WEATHER_WIND_SPEED"); setCriticalParameter("WEATHER_RAIN_RATE"); addDebugControl(); return true; }
bool FocusMaster::initProperties() { INDI::Focuser::initProperties(); // Sync to a particular position IUFillNumber(&SyncN[0], "Ticks", "", "%.f", 0, 100000, 100., 0.); IUFillNumberVector(&SyncNP, SyncN, 1, getDeviceName(), "Sync", "", MAIN_CONTROL_TAB, IP_RW, 0, IPS_IDLE); // Full Forward/Reverse Motion IUFillSwitch(&FullMotionS[FOCUS_INWARD], "FULL_INWARD", "Full Inward", ISS_OFF); IUFillSwitch(&FullMotionS[FOCUS_OUTWARD], "FULL_OUTWARD", "Full Outward", ISS_OFF); IUFillSwitchVector(&FullMotionSP, FullMotionS, 2, getDeviceName(), "FULL_MOTION", "Full Motion", MAIN_CONTROL_TAB, IP_RW, ISR_ATMOST1, 0, IPS_IDLE); FocusAbsPosN[0].min = SyncN[0].min = 0; FocusAbsPosN[0].max = SyncN[0].max; FocusAbsPosN[0].step = SyncN[0].step; FocusAbsPosN[0].value = 0; FocusRelPosN[0].max = (FocusAbsPosN[0].max - FocusAbsPosN[0].min) / 2; FocusRelPosN[0].step = FocusRelPosN[0].max / 100.0; FocusRelPosN[0].value = 100; addSimulationControl(); return true; }
bool WeatherSafetyProxy::initProperties() { INDI::Weather::initProperties(); IUFillText(&keywordT[0], "WEATHER_CONDITION", "Weather Condition", "condition"); IUFillTextVector(&keywordTP, keywordT, 1, getDeviceName(), "KEYWORD", "Keywords", OPTIONS_TAB, IP_RW, 60, IPS_IDLE); IUFillText(&ScriptsT[WSP_SCRIPT], "WEATHER_SAFETY_SCRIPT", "Weather safety script", "/usr/local/share/indi/scripts/weather_status.py"); IUFillTextVector(&ScriptsTP, ScriptsT, WSP_SCRIPT_COUNT, getDefaultName(), "WEATHER_SAFETY_SCRIPTS", "Script", OPTIONS_TAB, IP_RW, 100, IPS_IDLE); IUFillText(&UrlT[WSP_URL], "WEATHER_SAFETY_URL", "Weather safety URL", "http://0.0.0.0:5000/weather/safety"); IUFillTextVector(&UrlTP, UrlT, WSP_URL_COUNT, getDefaultName(), "WEATHER_SAFETY_URLS", "Url", OPTIONS_TAB, IP_RW, 100, IPS_IDLE); IUFillSwitch(&ScriptOrCurlS[WSP_USE_SCRIPT], "Use script", "", ISS_ON); IUFillSwitch(&ScriptOrCurlS[WSP_USE_CURL], "Use url", "", ISS_OFF); IUFillSwitchVector(&ScriptOrCurlSP, ScriptOrCurlS, WSP_USE_COUNT, getDeviceName(), "SCRIPT_OR_CURL", "Script or url", OPTIONS_TAB, IP_RW, ISR_1OFMANY, 0, IPS_IDLE); IUFillNumber(&softErrorHysteresisN[WSP_SOFT_ERROR_MAX], "SOFT_ERROR_MAX", "Max soft errors", "%g", 0.0, 1000.0, 1.0, 30.0); IUFillNumber(&softErrorHysteresisN[WSP_SOFT_ERROR_RECOVERY], "SOFT_ERROR_RECOVERY", "Minumum soft error for recovery", "%g", 0.0, 1000.0, 1.0, 7.0); IUFillNumberVector(&softErrorHysteresisNP, softErrorHysteresisN, 2, getDeviceName(), "SOFT_ERROR_HYSTERESIS", "Soft error hysterese", OPTIONS_TAB, IP_RW, 0, IPS_IDLE); addParameter("WEATHER_SAFETY", "Weather Safety", 0.9, 1.1, 0); // 0 is unsafe, 1 is safe setCriticalParameter("WEATHER_SAFETY"); IUFillText(&reasonsT[0], "Reasons", "", nullptr); IUFillTextVector(&reasonsTP, reasonsT, 1, getDeviceName(), "WEATHER_SAFETY_REASONS", "Weather Safety Reasons", MAIN_CONTROL_TAB, IP_RO, 120, IPS_IDLE); addDebugControl(); return true; }
bool INDI::Focuser::initProperties() { DefaultDevice::initProperties(); // let the base class flesh in what it wants initFocuserProperties(getDeviceName(), MAIN_CONTROL_TAB); /* Port */ IUFillText(&PortT[0], "PORT", "Port", "/dev/ttyUSB0"); IUFillTextVector(&PortTP, PortT, 1, getDeviceName(), "DEVICE_PORT", "Ports", OPTIONS_TAB, IP_RW, 0, IPS_IDLE); // Presets IUFillNumber(&PresetN[0], "Preset 1", "", "%6.2f", 0, 60000, 1000, 0); IUFillNumber(&PresetN[1], "Preset 2", "", "%6.2f", 0, 60000, 1000, 0); IUFillNumber(&PresetN[2], "Preset 3", "", "%6.2f", 0, 60000, 1000, 0); IUFillNumberVector(&PresetNP, PresetN, 3, getDeviceName(), "Presets", "", "Presets", IP_RW, 0, IPS_IDLE); //Preset GOTO IUFillSwitch(&PresetGotoS[0], "Preset 1", "", ISS_OFF); IUFillSwitch(&PresetGotoS[1], "Preset 2", "", ISS_OFF); IUFillSwitch(&PresetGotoS[2], "Preset 3", "", ISS_OFF); IUFillSwitchVector(&PresetGotoSP, PresetGotoS, 3, getDeviceName(), "Goto", "", "Presets", IP_RW, ISR_1OFMANY, 0, IPS_IDLE); addDebugControl(); controller->mapController("Focus In", "Focus In", INDI::Controller::CONTROLLER_BUTTON, "BUTTON_1"); controller->mapController("Focus Out", "Focus Out", INDI::Controller::CONTROLLER_BUTTON, "BUTTON_2"); controller->mapController("Abort Focus", "Abort Focus", INDI::Controller::CONTROLLER_BUTTON, "BUTTON_3"); controller->initProperties(); setDriverInterface(FOCUSER_INTERFACE); return true; }
void INDI::LightBoxInterface::initLightBoxProperties(const char *deviceName, const char *groupName) { // Turn on/off light IUFillSwitch(&LightS[FLAT_LIGHT_ON], "FLAT_LIGHT_ON", "On", ISS_OFF); IUFillSwitch(&LightS[FLAT_LIGHT_OFF], "FLAT_LIGHT_OFF", "Off", ISS_OFF); IUFillSwitchVector(&LightSP, LightS, 2, deviceName, "FLAT_LIGHT_CONTROL", "Flat Light", groupName, IP_RW, ISR_1OFMANY, 0, IPS_IDLE); // Light Intensity IUFillNumber(&LightIntensityN[0], "FLAT_LIGHT_INTENSITY_VALUE", "Value", "%.f", 0, 255, 10, 0); IUFillNumberVector(&LightIntensityNP, LightIntensityN, 1, deviceName, "FLAT_LIGHT_INTENSITY", "Brightness", groupName, IP_RW, 0, IPS_IDLE); // Active Devices IUFillText(&ActiveDeviceT[0], "ACTIVE_FILTER", "Filter", "Filter Simulator"); IUFillTextVector(&ActiveDeviceTP, ActiveDeviceT, 1, deviceName, "ACTIVE_DEVICES", "Snoop devices", OPTIONS_TAB, IP_RW, 60, IPS_IDLE); // Filter duration IUFillNumberVector(&FilterIntensityNP, nullptr, 0, deviceName, "FLAT_LIGHT_FILTER_INTENSITY", "Filter Intensity", "Preset", IP_RW, 60, IPS_OK); IDSnoopDevice(ActiveDeviceT[0].text, "FILTER_SLOT"); IDSnoopDevice(ActiveDeviceT[0].text, "FILTER_NAME"); }
bool WatchDog::initProperties() { INDI::DefaultDevice::initProperties(); IUFillNumber(&HeartBeatN[0], "WATCHDOG_HEARTBEAT_VALUE", "Threshold (min)", "%g", 0, 180, 10, 0); IUFillNumberVector(&HeartBeatNP, HeartBeatN, 1, getDeviceName(), "WATCHDOG_HEARTBEAT", "Heart beat", MAIN_CONTROL_TAB, IP_RW, 60, IPS_IDLE); IUFillText(&SettingsT[0], "INDISERVER_HOST", "indiserver host", "localhost"); IUFillText(&SettingsT[1], "INDISERVER_PORT", "indiserver port", "7624"); IUFillText(&SettingsT[2], "SHUTDOWN_SCRIPT", "shutdown script", nullptr); IUFillTextVector(&SettingsTP, SettingsT, 3, getDeviceName(), "WATCHDOG_SETTINGS", "Settings", MAIN_CONTROL_TAB, IP_RW, 60, IPS_IDLE); IUFillSwitch(&ShutdownProcedureS[PARK_MOUNT], "PARK_MOUNT", "Park Mount", ISS_OFF); IUFillSwitch(&ShutdownProcedureS[PARK_DOME], "PARK_DOME", "Park Dome", ISS_OFF); IUFillSwitch(&ShutdownProcedureS[EXECUTE_SCRIPT], "EXECUTE_SCRIPT", "Execute Script", ISS_OFF); IUFillSwitchVector(&ShutdownProcedureSP, ShutdownProcedureS, 3, getDeviceName(), "WATCHDOG_SHUTDOWN", "Shutdown", MAIN_CONTROL_TAB, IP_RW, ISR_NOFMANY, 60, IPS_IDLE); IUFillText(&ActiveDeviceT[ACTIVE_TELESCOPE], "ACTIVE_TELESCOPE", "Telescope", "Telescope Simulator"); IUFillText(&ActiveDeviceT[ACTIVE_DOME], "ACTIVE_DOME", "Dome", "Dome Simulator"); IUFillTextVector(&ActiveDeviceTP, ActiveDeviceT, 2, getDeviceName(), "ACTIVE_DEVICES", "Active devices", OPTIONS_TAB, IP_RW, 60, IPS_IDLE); addDebugControl(); return true; }
bool INDI::GPS::initProperties() { INDI::DefaultDevice::initProperties(); IUFillNumber(&PeriodN[0], "PERIOD", "Period (s)", "%.f", 0, 3600, 60.0, 0); IUFillNumberVector(&PeriodNP, PeriodN, 1, getDeviceName(), "GPS_REFRESH_PERIOD", "Refresh", MAIN_CONTROL_TAB, IP_RW, 0, IPS_IDLE); IUFillSwitch(&RefreshS[0], "REFRESH", "GPS", ISS_OFF); IUFillSwitchVector(&RefreshSP, RefreshS, 1, getDeviceName(), "GPS_REFRESH", "Refresh", MAIN_CONTROL_TAB, IP_RW, ISR_ATMOST1, 0, IPS_IDLE); IUFillNumber(&LocationN[LOCATION_LATITUDE], "LAT", "Lat (dd:mm:ss)", "%010.6m", -90, 90, 0, 0.0); IUFillNumber(&LocationN[LOCATION_LONGITUDE], "LONG", "Lon (dd:mm:ss)", "%010.6m", 0, 360, 0, 0.0); IUFillNumber(&LocationN[LOCATION_ELEVATION], "ELEV", "Elevation (m)", "%g", -200, 10000, 0, 0); IUFillNumberVector(&LocationNP, LocationN, 3, getDeviceName(), "GEOGRAPHIC_COORD", "Location", MAIN_CONTROL_TAB, IP_RO, 60, IPS_IDLE); IUFillText(&TimeT[0], "UTC", "UTC Time", nullptr); IUFillText(&TimeT[1], "OFFSET", "UTC Offset", nullptr); IUFillTextVector(&TimeTP, TimeT, 2, getDeviceName(), "TIME_UTC", "UTC", MAIN_CONTROL_TAB, IP_RO, 60, IPS_IDLE); updatePeriodMS = PeriodN[0].value; return true; }
bool Controller::initProperties() { IUFillSwitch(&UseJoystickS[0], "ENABLE", "Enable", ISS_OFF); IUFillSwitch(&UseJoystickS[1], "DISABLE", "Disable", ISS_ON); IUFillSwitchVector(&UseJoystickSP, UseJoystickS, 2, device->getDeviceName(), "USEJOYSTICK", "Joystick", OPTIONS_TAB, IP_RW, ISR_1OFMANY, 0, IPS_IDLE); return true; }
bool LX200GPS::initProperties() { LX200Autostar::initProperties(); IUFillSwitch(&GPSPowerS[0], "On", "", ISS_OFF); IUFillSwitch(&GPSPowerS[1], "Off", "", ISS_OFF); IUFillSwitchVector(&GPSPowerSP, GPSPowerS, 2, getDeviceName(), "GPS Power", "", GPS_TAB, IP_RW, ISR_1OFMANY, 0, IPS_IDLE); IUFillSwitch(&GPSStatusS[0], "Sleep", "", ISS_OFF); IUFillSwitch(&GPSStatusS[1], "Wake Up", "", ISS_OFF); IUFillSwitch(&GPSStatusS[2], "Restart", "", ISS_OFF); IUFillSwitchVector(&GPSStatusSP, GPSStatusS, 3, getDeviceName(), "GPS Status", "", GPS_TAB, IP_RW, ISR_1OFMANY, 0, IPS_IDLE); IUFillSwitch(&GPSUpdateS[0], "Update GPS", "", ISS_OFF); IUFillSwitch(&GPSUpdateS[1], "Update Client", "", ISS_OFF); IUFillSwitchVector(&GPSUpdateSP, GPSUpdateS, 2, getDeviceName(), "GPS System", "", GPS_TAB, IP_RW, ISR_1OFMANY, 0, IPS_IDLE); IUFillSwitch(&AltDecPecS[0], "Enable", "", ISS_OFF); IUFillSwitch(&AltDecPecS[1], "Disable", "", ISS_OFF); IUFillSwitchVector(&AltDecPecSP, AltDecPecS, 2, getDeviceName(), "Alt/Dec PEC", "", GPS_TAB, IP_RW, ISR_1OFMANY, 0, IPS_IDLE); IUFillSwitch(&AzRaPecS[0], "Enable", "", ISS_OFF); IUFillSwitch(&AzRaPecS[1], "Disable", "", ISS_OFF); IUFillSwitchVector(&AzRaPecSP, AzRaPecS, 2, getDeviceName(), "Az/RA PEC", "", GPS_TAB, IP_RW, ISR_1OFMANY, 0, IPS_IDLE); IUFillSwitch(&SelenSyncS[0], "Sync", "", ISS_OFF); IUFillSwitchVector(&SelenSyncSP, SelenSyncS, 1, getDeviceName(), "Selenographic Sync", "", GPS_TAB, IP_RW, ISR_ATMOST1, 0, IPS_IDLE); IUFillSwitch(&AltDecBacklashS[0], "Activate", "", ISS_OFF); IUFillSwitchVector(&AltDecBacklashSP, AltDecBacklashS, 1, getDeviceName(), "Alt/Dec Anti-backlash", "", GPS_TAB, IP_RW, ISR_ATMOST1, 0, IPS_IDLE); IUFillSwitch(&AzRaBacklashS[0], "Activate", "", ISS_OFF); IUFillSwitchVector(&AzRaBacklashSP, AzRaBacklashS, 1, getDeviceName(), "Az/Ra Anti-backlash", "", GPS_TAB, IP_RW, ISR_ATMOST1, 0, IPS_IDLE); IUFillSwitch(&OTAUpdateS[0], "Update", "", ISS_OFF); IUFillSwitchVector(&OTAUpdateSP, OTAUpdateS, 1, getDeviceName(), "OTA Update", "", GPS_TAB, IP_RW, ISR_ATMOST1, 0, IPS_IDLE); IUFillNumber(&OTATempN[0], "Temp", "", "%03g", -200.0, 500.0, 0.0, 0); IUFillNumberVector(&OTATempNP, OTATempN, 1, getDeviceName(), "OTA Temp (C)", "", GPS_TAB, IP_RO, 0, IPS_IDLE); return true; }
/* Initialize and setup all properties on startup. */ bool ShelyakEshel::initProperties() { INDI::DefaultDevice::initProperties(); //-------------------------------------------------------------------------------- // Calibration Unit //-------------------------------------------------------------------------------- // setup the mirror switch IUFillSwitch(&MirrorS[0], "ACTIVATED", "Activated", ISS_OFF); IUFillSwitch(&MirrorS[1], "DEACTIVATED", "Deactivated", ISS_ON); IUFillSwitchVector(&MirrorSP, MirrorS, 2, getDeviceName(), "FLIP_MIRROR", "Flip mirror", CALIBRATION_UNIT_TAB, IP_RW, ISR_1OFMANY, 0, IPS_IDLE); // setup the lamp switches IUFillSwitch(&LampS[0], "LED", "LED", ISS_OFF); IUFillSwitch(&LampS[1], "THAR", "ThAr", ISS_OFF); IUFillSwitch(&LampS[2], "TUNGSTEN", "Tungsten", ISS_OFF); IUFillSwitchVector(&LampSP, LampS, 3, getDeviceName(), "CALIB_LAMPS", "Calibration lamps", CALIBRATION_UNIT_TAB, IP_RW, ISR_NOFMANY, 0, IPS_IDLE); //-------------------------------------------------------------------------------- // Options //-------------------------------------------------------------------------------- // setup the text input for the serial port IUFillText(&PortT[0], "PORT", "Port", "/dev/ttyUSB0"); IUFillTextVector(&PortTP, PortT, 1, getDeviceName(), "DEVICE_PORT", "Ports", OPTIONS_TAB, IP_RW, 60, IPS_IDLE); //-------------------------------------------------------------------------------- // Spectrograph Settings //-------------------------------------------------------------------------------- IUFillNumber(&SettingsN[0], "GRATING", "Grating [lines/mm]", "%.2f", 0, 1000, 0, 79); IUFillNumber(&SettingsN[1], "INCIDENCE_ANGLE_ALPHA", "Incidence angle alpha [degrees]", "%.2f", 0, 90, 0, 62.2); IUFillNumber(&SettingsN[2], "DIFFRACTION_ANGLE_BETA", "Diffraction angle beta [degrees]", "%.2f", 0, 90, 0, 0); IUFillNumber(&SettingsN[3], "SHIFT_ANGLE_GAMMA", "Shift angle gamma [degrees]", "%.2f", 0, 90, 0, 5.75); IUFillNumber(&SettingsN[4], "OBJ_FOCAL", "Obj Focal [mm]", "%.0f", 1, 700, 0, 85); IUFillNumberVector(&SettingsNP, SettingsN, 5, getDeviceName(), "SPECTROGRAPH_SETTINGS", "Spectrograph settings", SPECTROGRAPH_SETTINGS_TAB, IP_RW, 60, IPS_IDLE); setDriverInterface(SPECTROGRAPH_INTERFACE); return true; }
void FocuserInterface::initProperties(const char * groupName) { IUFillNumber(&FocusSpeedN[0], "FOCUS_SPEED_VALUE", "Focus Speed", "%3.0f", 0.0, 255.0, 1.0, 255.0); IUFillNumberVector(&FocusSpeedNP, FocusSpeedN, 1, m_defaultDevice->getDeviceName(), "FOCUS_SPEED", "Speed", groupName, IP_RW, 60, IPS_OK); IUFillNumber(&FocusTimerN[0], "FOCUS_TIMER_VALUE", "Focus Timer (ms)", "%4.0f", 0.0, 5000.0, 50.0, 1000.0); IUFillNumberVector(&FocusTimerNP, FocusTimerN, 1, m_defaultDevice->getDeviceName(), "FOCUS_TIMER", "Timer", groupName, IP_RW, 60, IPS_OK); lastTimerValue = 1000.0; IUFillSwitch(&FocusMotionS[0], "FOCUS_INWARD", "Focus In", ISS_ON); IUFillSwitch(&FocusMotionS[1], "FOCUS_OUTWARD", "Focus Out", ISS_OFF); IUFillSwitchVector(&FocusMotionSP, FocusMotionS, 2, m_defaultDevice->getDeviceName(), "FOCUS_MOTION", "Direction", groupName, IP_RW, ISR_1OFMANY, 60, IPS_OK); // Absolute Position IUFillNumber(&FocusAbsPosN[0], "FOCUS_ABSOLUTE_POSITION", "Steps", "%.f", 0.0, 100000.0, 1000.0, 0); IUFillNumberVector(&FocusAbsPosNP, FocusAbsPosN, 1, m_defaultDevice->getDeviceName(), "ABS_FOCUS_POSITION", "Absolute Position", groupName, IP_RW, 60, IPS_OK); // Relative Position IUFillNumber(&FocusRelPosN[0], "FOCUS_RELATIVE_POSITION", "Steps", "%.f", 0.0, 100000.0, 1000.0, 0); IUFillNumberVector(&FocusRelPosNP, FocusRelPosN, 1, m_defaultDevice->getDeviceName(), "REL_FOCUS_POSITION", "Relative Position", groupName, IP_RW, 60, IPS_OK); // Sync IUFillNumber(&FocusSyncN[0], "FOCUS_SYNC_VALUE", "Steps", "%.f", 0.0, 100000.0, 1000.0, 0); IUFillNumberVector(&FocusSyncNP, FocusSyncN, 1, m_defaultDevice->getDeviceName(), "FOCUS_SYNC", "Sync", groupName, IP_RW, 60, IPS_OK); // Maximum Position IUFillNumber(&FocusMaxPosN[0], "FOCUS_MAX_VALUE", "Steps", "%.f", 1e3, 1e6, 1e4, 1e5); IUFillNumberVector(&FocusMaxPosNP, FocusMaxPosN, 1, m_defaultDevice->getDeviceName(), "FOCUS_MAX", "Max. Position", groupName, IP_RW, 60, IPS_OK); // Abort IUFillSwitch(&FocusAbortS[0], "ABORT", "Abort", ISS_OFF); IUFillSwitchVector(&FocusAbortSP, FocusAbortS, 1, m_defaultDevice->getDeviceName(), "FOCUS_ABORT_MOTION", "Abort Motion", groupName, IP_RW, ISR_ATMOST1, 60, IPS_IDLE); // Revese IUFillSwitch(&FocusReverseS[REVERSED_ENABLED], "ENABLED", "Enabled", ISS_OFF); IUFillSwitch(&FocusReverseS[REVERSED_DISABLED], "DISABLED", "Disabled", ISS_ON); IUFillSwitchVector(&FocusReverseSP, FocusReverseS, 2, m_defaultDevice->getDeviceName(), "FOCUS_REVERSE_MOTION", "Reverse Motion", groupName, IP_RW, ISR_1OFMANY, 60, IPS_IDLE); }
bool RoboFocus::initProperties() { INDI::Focuser::initProperties(); /* Focuser temperature */ IUFillNumber(&TemperatureN[0], "TEMPERATURE", "Celsius", "%6.2f", 0, 65000., 0., 10000.); IUFillNumberVector(&TemperatureNP, TemperatureN, 1, getDeviceName(), "FOCUS_TEMPERATURE", "Temperature", MAIN_CONTROL_TAB, IP_RO, 0, IPS_IDLE); /* Settings of the Robofocus */ IUFillNumber(&SettingsN[0], "Duty cycle", "Duty cycle", "%6.0f", 0., 255., 0., 1.0); IUFillNumber(&SettingsN[1], "Step Delay", "Step delay", "%6.0f", 0., 255., 0., 1.0); IUFillNumber(&SettingsN[2], "Motor Steps", "Motor steps per tick", "%6.0f", 0., 255., 0., 1.0); IUFillNumberVector(&SettingsNP, SettingsN, 3, getDeviceName(), "FOCUS_SETTINGS", "Settings", SETTINGS_TAB, IP_RW, 0, IPS_IDLE); /* Power Switches of the Robofocus */ IUFillSwitch(&PowerSwitchesS[0], "1", "Switch 1", ISS_OFF); IUFillSwitch(&PowerSwitchesS[1], "2", "Switch 2", ISS_OFF); IUFillSwitch(&PowerSwitchesS[2], "3", "Switch 3", ISS_OFF); IUFillSwitch(&PowerSwitchesS[3], "4", "Switch 4", ISS_ON); IUFillSwitchVector(&PowerSwitchesSP, PowerSwitchesS, 4, getDeviceName(), "SWTICHES", "Power", SETTINGS_TAB, IP_RW, ISR_1OFMANY, 0, IPS_IDLE); /* Robofocus should stay within these limits */ IUFillNumber(&MinMaxPositionN[0], "MINPOS", "Minimum Tick", "%6.0f", 1., 65000., 0., 100. ); IUFillNumber(&MinMaxPositionN[1], "MAXPOS", "Maximum Tick", "%6.0f", 1., 65000., 0., 55000.); IUFillNumberVector(&MinMaxPositionNP, MinMaxPositionN, 2, getDeviceName(), "FOCUS_MINMAXPOSITION", "Extrema", SETTINGS_TAB, IP_RW, 0, IPS_IDLE); IUFillNumber(&MaxTravelN[0], "MAXTRAVEL", "Maximum travel", "%6.0f", 1., 64000., 0., 10000.); IUFillNumberVector(&MaxTravelNP, MaxTravelN, 1, getDeviceName(), "FOCUS_MAXTRAVEL", "Max. travel", SETTINGS_TAB, IP_RW, 0, IPS_IDLE ); /* Set Robofocus position register to this position */ IUFillNumber(&SetRegisterPositionN[0], "SETPOS", "Position", "%6.0f", 0, 64000., 0., 0. ); IUFillNumberVector(&SetRegisterPositionNP, SetRegisterPositionN, 1, getDeviceName(), "FOCUS_REGISTERPOSITION", "Sync", SETTINGS_TAB, IP_RW, 0, IPS_IDLE); /* Backlash */ IUFillNumber(&SetBacklashN[0], "SETBACKLASH", "Backlash", "%6.0f", -255., 255., 0., 0.); IUFillNumberVector(&SetBacklashNP, SetBacklashN, 1, getDeviceName(), "FOCUS_BACKLASH", "Set Register", SETTINGS_TAB, IP_RW, 0, IPS_IDLE); /* Relative and absolute movement */ FocusRelPosN[0].min = -5000.; FocusRelPosN[0].max = 5000.; FocusRelPosN[0].value = 100; FocusRelPosN[0].step = 100; FocusAbsPosN[0].min = 0.; FocusAbsPosN[0].max = 64000.; FocusAbsPosN[0].value = 0; FocusAbsPosN[0].step = 1000; simulatedTemperature=600.0; simulatedPosition=20000; addDebugControl(); addSimulationControl(); return true; }
bool BaaderDome::initProperties() { INDI::Dome::initProperties(); IUFillSwitch(&CalibrateS[0], "Start", "", ISS_OFF); IUFillSwitchVector(&CalibrateSP, CalibrateS, 1, getDeviceName(), "Calibrate", "", MAIN_CONTROL_TAB, IP_RW, ISR_ATMOST1, 0, IPS_IDLE); IUFillSwitch(&DomeFlapS[0], "FLAP_OPEN", "Open", ISS_OFF); IUFillSwitch(&DomeFlapS[1], "FLAP_CLOSE", "Close", ISS_ON); IUFillSwitchVector(&DomeFlapSP, DomeFlapS, 2, getDeviceName(), "DOME_FLAP", "Flap", MAIN_CONTROL_TAB, IP_RW, ISR_1OFMANY, 60, IPS_OK); SetParkDataType(PARK_AZ); addAuxControls(); return true; }
bool ATIKCCD::initProperties() { INDI::CCD::initProperties(); // Cooler control IUFillSwitch(&CoolerS[COOLER_ON], "COOLER_ON", "ON", ISS_OFF); IUFillSwitch(&CoolerS[COOLER_OFF], "COOLER_OFF", "OFF", ISS_ON); IUFillSwitchVector(&CoolerSP, CoolerS, 2, getDeviceName(), "CCD_COOLER", "Cooler", MAIN_CONTROL_TAB, IP_WO, ISR_1OFMANY, 2, IPS_IDLE); // Temperature value IUFillNumber(&CoolerN[0], "CCD_COOLER_VALUE", "Cooling Power (%)", "%+06.2f", 0., 1., .2, 0.0); IUFillNumberVector(&CoolerNP, CoolerN, 1, getDeviceName(), "CCD_COOLER_POWER", "Cooling Power", MAIN_CONTROL_TAB, IP_RO, 60, IPS_IDLE); // Version information IUFillText(&VersionInfoS[VERSION_API], "VERSION_API", "API", std::to_string(ArtemisAPIVersion()).c_str()); IUFillText(&VersionInfoS[VERSION_FIRMWARE], "VERSION_FIRMWARE", "Firmware", "Unknown"); IUFillTextVector(&VersionInfoSP, VersionInfoS, 2, getDeviceName(), "VERSION", "Version", INFO_TAB, IP_RO, 60, IPS_IDLE); // Gain/Offset Presets IUFillSwitch(&ControlPresetsS[PRESET_CUSTOM], "PRESET_CUSTOM", "Custom", ISS_ON); IUFillSwitch(&ControlPresetsS[PRESET_LOW], "PRESET_LOW", "Low", ISS_OFF); IUFillSwitch(&ControlPresetsS[PRESET_MEDIUM], "PRESET_MEDIUM", "Medium", ISS_OFF); IUFillSwitch(&ControlPresetsS[PRESET_HIGH], "PRESET_HIGH", "High", ISS_OFF); IUFillSwitchVector(&ControlPresetsSP, ControlPresetsS, 2, getDeviceName(), "CCD_CONTROL_PRESETS", "GO Presets", CONTROLS_TAB, IP_RW, ISR_1OFMANY, 4, IPS_IDLE); // Gain/Offset Controls IUFillNumber(&ControlN[CONTROL_GAIN], "CONTROL_GAIN", "Gain", "%.f", 0, 60, 5, 30); IUFillNumber(&ControlN[CONTROL_OFFSET], "CONTROL_OFFSET", "Offset", "%.f", 0, 511, 10, 0); IUFillNumberVector(&ControlNP, ControlN, 2, getDeviceName(), "CCD_CONTROLS", "GO Controls", CONTROLS_TAB, IP_RO, 60, IPS_IDLE); IUSaveText(&BayerT[2], "RGGB"); INDI::FilterInterface::initProperties(FILTER_TAB); addAuxControls(); return true; }
bool ioptronHC8406::initProperties() { LX200Generic::initProperties(); // Sync Type IUFillSwitch(&SyncCMRS[USE_REGULAR_SYNC], "USE_REGULAR_SYNC", ":CM#", ISS_ON); IUFillSwitch(&SyncCMRS[USE_CMR_SYNC], "USE_CMR_SYNC", ":CMR#", ISS_OFF); IUFillSwitchVector(&SyncCMRSP, SyncCMRS, 2, getDeviceName(), "SYNC_MODE", "Sync", MAIN_CONTROL_TAB, IP_RW, ISR_1OFMANY, 0,IPS_IDLE); // Cursor move Guiding/Center IUFillSwitch(&CursorMoveSpeedS[USE_GUIDE_SPEED],"USE_GUIDE_SPEED", "Guide Speed", ISS_ON); IUFillSwitch(&CursorMoveSpeedS[USE_CENTERING_SPEED],"USE_CENTERING_SPEED", "Centering Speed", ISS_OFF); IUFillSwitchVector(&CursorMoveSpeedSP, CursorMoveSpeedS, 2, getDeviceName(), "CURSOR_MOVE_MODE", "Cursor Move Speed", MOTION_TAB, IP_RO, ISR_1OFMANY, 0,IPS_IDLE); // Guide Rate IUFillSwitch(&GuideRateS[0], "0.25x", "", ISS_OFF); IUFillSwitch(&GuideRateS[1], "0.50x", "", ISS_ON); IUFillSwitch(&GuideRateS[2], "1.0x", "", ISS_OFF); IUFillSwitchVector(&GuideRateSP, GuideRateS, 3, getDeviceName(), "GUIDE_RATE", "Guide Speed", MOTION_TAB, IP_RW, ISR_1OFMANY, 0,IPS_IDLE); // Center Rate IUFillSwitch(&CenterRateS[0], "12x", "", ISS_OFF); IUFillSwitch(&CenterRateS[1], "64x", "", ISS_ON); IUFillSwitch(&CenterRateS[2], "600x", "", ISS_OFF); IUFillSwitch(&CenterRateS[3], "1200x", "", ISS_OFF); IUFillSwitchVector(&CenterRateSP, CenterRateS, 4, getDeviceName(), "CENTER_RATE", "Center Speed", MOTION_TAB, IP_RW, ISR_1OFMANY, 0,IPS_IDLE); // Slew Rate //NOT WORK!! IUFillSwitch(&SlewRateS[0], "600x", "", ISS_OFF); IUFillSwitch(&SlewRateS[1], "900x", "", ISS_OFF); IUFillSwitch(&SlewRateS[2], "1200x", "", ISS_ON); IUFillSwitchVector(&SlewRateSP, SlewRateS, 3, getDeviceName(), "SLEW_RATE", "Slew Speed", MOTION_TAB, IP_RW, ISR_1OFMANY, 0,IPS_IDLE); TrackModeSP.nsp = 3; return true; }
TCP::TCP(INDI::DefaultDevice *dev) : Interface(dev) { // Address/Port IUFillText(&AddressT[0], "ADDRESS", "Address", ""); IUFillText(&AddressT[1], "PORT", "Port", ""); IUFillTextVector(&AddressTP, AddressT, 2, getDeviceName(), "DEVICE_ADDRESS", "Server", CONNECTION_TAB, IP_RW, 60, IPS_IDLE); IUFillSwitch(&TcpUdpS[0], "TCP", "TCP", ISS_ON); IUFillSwitch(&TcpUdpS[1], "UDP", "UDP", ISS_OFF); IUFillSwitchVector(&TcpUdpSP, TcpUdpS, 2, getDeviceName(), "CONNECTION_TYPE", "Connection Type", CONNECTION_TAB, IP_RW, ISR_1OFMANY, 60, IPS_IDLE); }
/******************************************************************************* ** INDI is asking us to init our properties. *******************************************************************************/ bool DSICCD::initProperties() { // Must init parent properties first! INDI::CCD::initProperties(); // Add Debug Control. addDebugControl(); /* Add Gain number property (gs) */ IUFillNumber(GainN, "GAIN", "Gain", "%g", 0, 100, 1, 100); IUFillNumberVector(&GainNP, GainN, 1, getDeviceName(),"GAIN", "Gain", IMAGE_SETTINGS_TAB, IP_RW, 0, IPS_IDLE); /* Add Offset number property (gs) */ IUFillNumber(OffsetN, "OFFSET", "Offset", "%g", -50, 50, 1, 0); IUFillNumberVector(&OffsetNP, OffsetN, 1, getDeviceName(),"OFFSET", "Offset", IMAGE_SETTINGS_TAB, IP_RW, 0, IPS_IDLE); /* Vdd on during exposure property (gs) Actually, Meade envisage leaves Vdd always on for DSI III during exposure. However, this results in a significant amount of amp glow. Vdd auto mode also seems not to work properly for the DSI III. Experimentally, it turned out that swiching Vdd off manually during exposure significantly reduces amp glow and also noise by some amount. Hence this strategy is used by default but can be changed to envisage default mode by setting the following switch to ON. */ IUFillSwitch(&VddExpS[0], "Vdd On", "", ISS_OFF); IUFillSwitch(&VddExpS[1], "Vdd Off", "", ISS_ON); IUFillSwitchVector(&VddExpSP, VddExpS, 2, getDeviceName(), "DSI III exposure", "", IMAGE_SETTINGS_TAB, IP_RW, ISR_1OFMANY, 0, IPS_IDLE); /* Add Temp number property (gs) */ IUFillNumber(CCDTempN, "CCDTEMP", "CCD Temperature [°C]", "%.1f", -128.5,128.5,0.1,-128.5); IUFillNumberVector(&CCDTempNP, CCDTempN, 1, getDeviceName(), "CCDTemp", "CCD Temp", IMAGE_INFO_TAB, IP_RO, 0, IPS_IDLE); /* Set exposure times according to Meade datasheets (gs) Ekos probably may limit minimum exposure time to 1/1000 s, but setting the lower limit to 1/10000 s might be useful e.g. for taking bias frames. */ PrimaryCCD.setMinMaxStep("CCD_EXPOSURE", "CCD_EXPOSURE_VALUE", 0.0001, 3600, 1, false); return true; }