/************************************************************************************** ** INDI is asking us to init our properties. ***************************************************************************************/ bool INovaCCD::initProperties() { // Must init parent properties first! INDI::CCD::initProperties(); // We init the property details. This is a stanard property of the INDI Library. IUFillText(&iNovaInformationT[0], "INOVA_NAME", "Camera Name", ""); IUFillText(&iNovaInformationT[1], "INOVA_SENSOR_NAME", "Sensor Name", ""); IUFillText(&iNovaInformationT[2], "INOVA_SN", "Serial Number", ""); IUFillText(&iNovaInformationT[3], "INOVA_ST4", "Can Guide", ""); IUFillText(&iNovaInformationT[4], "INOVA_COLOR", "Color Sensor", ""); IUFillTextVector(&iNovaInformationTP, iNovaInformationT, 5, getDeviceName(), "INOVA_INFO", "iNova Info", MAIN_CONTROL_TAB, IP_RO, 60, IPS_IDLE); IUFillNumber(&CameraPropertiesN[CCD_GAIN_N], "CCD_GAIN_VALUE", "Gain", "%4.0f", 0, 1023, 1, 255); IUFillNumber(&CameraPropertiesN[CCD_BLACKLEVEL_N], "CCD_BLACKLEVEL_VALUE", "Black Level", "%3.0f", 0, 255, 1, 0); IUFillNumberVector(&CameraPropertiesNP, CameraPropertiesN, 2, getDeviceName(), "CCD_PROPERTIES", "Control", MAIN_CONTROL_TAB, IP_RW, 60, IPS_IDLE); // Set minimum exposure speed to 0.001 seconds PrimaryCCD.setMinMaxStep("CCD_EXPOSURE", "CCD_EXPOSURE_VALUE", 0.0001, 1000, 1, false); setDefaultPollingPeriod(500); 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 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 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 IpFocus::initProperties() { INDI::Focuser::initProperties(); IUFillText(&FocuserEndpointT[0], "API_ENDPOINT", "API Endpoint", "http://192.168.1.203/focuser"); IUFillTextVector(&FocuserEndpointTP, FocuserEndpointT, 1, getDeviceName(), "FOCUSER_API_ENDPOINT", "Focuser", OPTIONS_TAB, IP_RW, 60, IPS_IDLE); IUFillText(&AlwaysApproachDirection[0], "ALWAYS_APPROACH_DIR", "Always approach CW/CCW/blank", "CCW"); IUFillTextVector(&AlwaysApproachDirectionP, AlwaysApproachDirection, 1, getDeviceName(), "BACKLASH_APPROACH_SETTINGS", "Backlash Direction", OPTIONS_TAB, IP_RW, 60, IPS_IDLE); IUFillText(&BacklashSteps[0],"BACKLASH_STEPS","Backlash steps","300"); IUFillTextVector(&BacklashStepsP,BacklashSteps,1,getDeviceName(),"BACKLASH_STEPS_SETTINGS","Backlash Steps",OPTIONS_TAB,IP_RW,60,IPS_IDLE); IUFillNumber(&SeeingN[0],"SIM_SEEING","arcseconds","%4.2f",0,60,0,3.5); IUFillNumberVector(&SeeingNP,SeeingN,1,getDeviceName(),"SEEING_SETTINGS","Seeing",MAIN_CONTROL_TAB,IP_RW,60,IPS_IDLE); IUFillNumber(&FWHMN[0],"SIM_FWHM","arcseconds","%4.2f",0,60,0,7.5); IUFillNumberVector(&FWHMNP,FWHMN,1,getDeviceName(), "FWHM","FWHM",MAIN_CONTROL_TAB,IP_RO,60,IPS_IDLE); ticks = initTicks = sqrt(FWHMN[0].value - SeeingN[0].value) / 0.75; /* Relative and absolute movement settings which are not set on connect*/ FocusRelPosN[0].min = 0.; FocusRelPosN[0].max = 5000.; FocusRelPosN[0].value = 0; FocusRelPosN[0].step = 1000; FocusAbsPosN[0].step = 1000; addDebugControl(); 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 FlipFlat::initProperties() { INDI::DefaultDevice::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); // Status IUFillText(&StatusT[0],"Cover","",NULL); IUFillText(&StatusT[1],"Light","",NULL); IUFillText(&StatusT[2],"Motor","",NULL); IUFillTextVector(&StatusTP,StatusT,3,getDeviceName(),"Status","",MAIN_CONTROL_TAB,IP_RO,60,IPS_IDLE); // Firmware version IUFillText(&FirmwareT[0],"Version","",NULL); IUFillTextVector(&FirmwareTP,FirmwareT,1,getDeviceName(),"Firmware","",MAIN_CONTROL_TAB,IP_RO,60,IPS_IDLE); initDustCapProperties(getDeviceName(), MAIN_CONTROL_TAB); initLightBoxProperties(getDeviceName(), MAIN_CONTROL_TAB); LightIntensityN[0].min = 0; LightIntensityN[0].max = 255; LightIntensityN[0].step = 10; // Set DUSTCAP_INTEFACE later on connect after we verify whether it's flip-flat (dust cover + light) or just flip-man (light only) setDriverInterface(AUX_INTERFACE | LIGHTBOX_INTERFACE); addDebugControl(); return true; }
bool FlipFlat::initProperties() { INDI::DefaultDevice::initProperties(); // Status IUFillText(&StatusT[0], "Cover", "", nullptr); IUFillText(&StatusT[1], "Light", "", nullptr); IUFillText(&StatusT[2], "Motor", "", nullptr); IUFillTextVector(&StatusTP, StatusT, 3, getDeviceName(), "Status", "", MAIN_CONTROL_TAB, IP_RO, 60, IPS_IDLE); // Firmware version IUFillText(&FirmwareT[0], "Version", "", nullptr); IUFillTextVector(&FirmwareTP, FirmwareT, 1, getDeviceName(), "Firmware", "", MAIN_CONTROL_TAB, IP_RO, 60, IPS_IDLE); initDustCapProperties(getDeviceName(), MAIN_CONTROL_TAB); initLightBoxProperties(getDeviceName(), MAIN_CONTROL_TAB); LightIntensityN[0].min = 0; LightIntensityN[0].max = 255; LightIntensityN[0].step = 10; // Set DUSTCAP_INTEFACE later on connect after we verify whether it's flip-flat (dust cover + light) or just flip-man (light only) setDriverInterface(AUX_INTERFACE | LIGHTBOX_INTERFACE); addAuxControls(); serialConnection = new Connection::Serial(this); serialConnection->registerHandshake([&]() { return Handshake(); }); registerConnection(serialConnection); return true; }
bool WeatherMeta::initProperties() { INDI::DefaultDevice::initProperties(); // Active Devices IUFillText(&ActiveDeviceT[0], "ACTIVE_WEATHER_1", "Station #1", nullptr); IUFillText(&ActiveDeviceT[1], "ACTIVE_WEATHER_2", "Station #2", nullptr); IUFillText(&ActiveDeviceT[2], "ACTIVE_WEATHER_3", "Station #3", nullptr); IUFillText(&ActiveDeviceT[3], "ACTIVE_WEATHER_4", "Station #4", nullptr); IUFillTextVector(&ActiveDeviceTP, ActiveDeviceT, 4, getDeviceName(), "ACTIVE_DEVICES", "Stations", OPTIONS_TAB, IP_RW, 60, IPS_IDLE); // Station Status IUFillLight(&StationL[0], "STATION_STATUS_1", "Station #1", IPS_IDLE); IUFillLight(&StationL[1], "STATION_STATUS_2", "Station #2", IPS_IDLE); IUFillLight(&StationL[2], "STATION_STATUS_3", "Station #3", IPS_IDLE); IUFillLight(&StationL[3], "STATION_STATUS_4", "Station #4", IPS_IDLE); IUFillLightVector(&StationLP, StationL, 4, getDeviceName(), "WEATHER_STATUS", "Status", MAIN_CONTROL_TAB, 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_RO, 60, IPS_IDLE); addDebugControl(); setDriverInterface(AUX_INTERFACE); 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; }
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); }
void Controller::mapController(const char *propertyName, const char *propertyLabel, ControllerType type, const char *initialValue) { if (JoystickSettingT == nullptr) JoystickSettingT = (IText *)malloc(sizeof(IText)); // Ignore duplicates for (int i = 0; i < JoystickSettingTP.ntp; i++) { if (!strcmp(propertyName, JoystickSettingT[i].name)) return; } JoystickSettingT = (IText *)realloc(JoystickSettingT, (JoystickSettingTP.ntp + 1) * sizeof(IText)); ControllerType *ctype = (ControllerType *)malloc(sizeof(ControllerType)); *ctype = type; IUFillText(&JoystickSettingT[JoystickSettingTP.ntp], propertyName, propertyLabel, initialValue); JoystickSettingT[JoystickSettingTP.ntp++].aux0 = ctype; IUFillTextVector(&JoystickSettingTP, JoystickSettingT, JoystickSettingTP.ntp, device->getDeviceName(), "JOYSTICKSETTINGS", "Settings", "Joystick", IP_RW, 0, 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); }
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 SestoSenso::initProperties() { INDI::Focuser::initProperties(); // Firmware Information IUFillText(&FirmwareT[0], "VERSION", "Version", ""); IUFillTextVector(&FirmwareTP, FirmwareT, 1, getDeviceName(), "FOCUS_FIRMWARE", "Firmware", MAIN_CONTROL_TAB, IP_RO, 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); // 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 = 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; addAuxControls(); updatePeriodMS = POLLMS; 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 QSICCD::GetFilterNames(const char* groupName) { char filterName[MAXINDINAME]; char filterLabel[MAXINDILABEL]; int maxFilters = (int) FilterSlotN[0].max; if (FilterNameT != NULL) delete FilterNameT; try { QSICam.get_Names(filterDesignation); } catch (std::runtime_error err) { DEBUGF(INDI::Logger::DBG_ERROR, "QSICamera::get_Names() failed. %s.", err.what()); return false; } FilterNameT = new IText[maxFilters]; for (int i=0; i < maxFilters; i++) { snprintf(filterName, MAXINDINAME, "FILTER_SLOT_NAME_%d", i+1); snprintf(filterLabel, MAXINDILABEL, "Filter #%d", i+1); IUFillText(&FilterNameT[i], filterName, filterLabel, filterDesignation[i].c_str()); } IUFillTextVector(FilterNameTP, FilterNameT, maxFilters, getDeviceName(), "FILTER_NAME", "Filter", groupName, IP_RW,1, IPS_IDLE); 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; }
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 LX200Autostar::initProperties() { LX200Generic::initProperties(); IUFillText(&VersionT[0], "Date", "", ""); IUFillText(&VersionT[1], "Time", "", ""); IUFillText(&VersionT[2], "Number", "", ""); IUFillText(&VersionT[3], "Full", "", ""); IUFillText(&VersionT[4], "Name", "", ""); IUFillTextVector(&VersionTP, VersionT, 5, getDeviceName(), "Firmware Info", "", FIRMWARE_TAB, IP_RO, 0, IPS_IDLE); IUFillNumber(&FocusSpeedN[0], "SPEED", "Speed", "%0.f", 0, 4.0, 1.0, 0); IUFillNumberVector(&FocusSpeedNP, FocusSpeedN, 1, getDeviceName(), "FOCUS_SPEED", "Speed", FOCUS_TAB, IP_RW, 0, IPS_IDLE); 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 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; }
/* 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; }
bool Starbook::initProperties() { Telescope::initProperties(); IUFillText(&VersionT[0], "Version", "Version", ""); IUFillTextVector(&VersionInfo, VersionT, 1, getDeviceName(), "Firmware", "Firmware", MAIN_CONTROL_TAB, IP_RO, 0, IPS_IDLE); if (getTelescopeConnection() & CONNECTION_TCP) { tcpConnection->setDefaultHost("127.0.0.1"); tcpConnection->setDefaultPort(5000); } addDebugControl(); state = starbook::UNKNOWN; return true; }
bool QikFlat::initProperties() { INDI::DefaultDevice::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 version IUFillText(&FirmwareT[0],"Version","",NULL); IUFillTextVector(&FirmwareTP,FirmwareT,1,getDeviceName(),"Firmware","",MAIN_CONTROL_TAB,IP_RO,60,IPS_IDLE); initLightBoxProperties(getDeviceName(), MAIN_CONTROL_TAB); LightIntensityN[0].min = 0; LightIntensityN[0].max = 255; LightIntensityN[0].step = 10; setDriverInterface(AUX_INTERFACE | LIGHTBOX_INTERFACE); addDebugControl(); return true; }
bool XAGYLWheel::GetFilterNames(const char* groupName) { char filterName[MAXINDINAME]; char filterLabel[MAXINDILABEL]; int MaxFilter = FilterSlotN[0].max; if (FilterNameT != NULL) delete FilterNameT; FilterNameT = new IText[MaxFilter]; for (int i=0; i < MaxFilter; i++) { snprintf(filterName, MAXINDINAME, "FILTER_SLOT_NAME_%d", i+1); snprintf(filterLabel, MAXINDILABEL, "Filter#%d", i+1); IUFillText(&FilterNameT[i], filterName, filterLabel, filterLabel); } IUFillTextVector(FilterNameTP, FilterNameT, MaxFilter, getDeviceName(), "FILTER_NAME", "Filter", groupName, IP_RW, 0, IPS_IDLE); return true; }
bool CCDSim::GetFilterNames(const char* groupName) { char filterName[MAXINDINAME]; char filterLabel[MAXINDILABEL]; const char *filterDesignation[5] = { "Red", "Green", "Blue", "H_Alpha", "Luminosity" }; if (FilterNameT != NULL) delete FilterNameT; FilterNameT = new IText[MaxFilter]; for (int i=0; i < MaxFilter; i++) { snprintf(filterName, MAXINDINAME, "FILTER_SLOT_NAME_%d", i+1); snprintf(filterLabel, MAXINDILABEL, "Filter #%d", i+1); IUFillText(&FilterNameT[i], filterName, filterLabel, filterDesignation[i]); } IUFillTextVector(FilterNameTP, FilterNameT, MaxFilter, getDeviceName(), "FILTER_NAME", "Filter", groupName, IP_RW, 0, IPS_IDLE); return true; }
bool WunderGround::initProperties() { INDI::Weather::initProperties(); IUFillText(&wunderAPIKeyT[0], "API_KEY", "API Key", NULL); IUFillTextVector(&wunderAPIKeyTP, wunderAPIKeyT, 1, getDeviceName(), "WUNDER_API_KEY", "Wunder", OPTIONS_TAB, IP_RW, 60, IPS_IDLE); addParameter("WEATHER_FORECAST", "Weather", 0, 0, 0, 1); addParameter("WEATHER_TEMPERATURE", "Temperature (C)", -10, 30, -20, 40); addParameter("WEATHER_WIND_SPEED", "Wind (kph)", 0, 20, 0, 40); addParameter("WEATHER_WIND_GUST", "Gust (kph)", 0, 20, 0, 50); addParameter("WEATHER_RAIN_HOUR", "Precip (mm)", 0, 0, 0, 0); setCriticalParameter("WEATHER_FORECAST"); setCriticalParameter("WEATHER_TEMPERATURE"); setCriticalParameter("WEATHER_WIND_SPEED"); setCriticalParameter("WEATHER_RAIN_HOUR"); addDebugControl(); return true; }
bool JoyStick::initProperties() { INDI::DefaultDevice::initProperties(); IUFillText(&PortT[0],"PORT","Port","/dev/input/js0"); IUFillTextVector(&PortTP,PortT,1,getDeviceName(),"DEVICE_PORT","Ports",OPTIONS_TAB,IP_RW,60,IPS_IDLE); IUFillText(&JoystickInfoT[0],"JOYSTICK_NAME","Name",""); IUFillText(&JoystickInfoT[1],"JOYSTICK_VERSION","Version",""); IUFillText(&JoystickInfoT[2],"JOYSTICK_NJOYSTICKS","# Joysticks",""); IUFillText(&JoystickInfoT[3],"JOYSTICK_NAXES","# Axes",""); IUFillText(&JoystickInfoT[4],"JOYSTICK_NBUTTONS","# Buttons",""); IUFillTextVector(&JoystickInfoTP,JoystickInfoT,5,getDeviceName(),"JOYSTICK_INFO","Joystick Info",MAIN_CONTROL_TAB,IP_RO,60,IPS_IDLE); addDebugControl(); return true; }