void EQModSimulator::Connect() { char *settingstexts[2]; char *settingsnames[]= {(char *)"SIM_RASETTING", (char *)"SIM_DESETTING"}; ISwitch *sw=IUFindOnSwitch(SimModeSP); sksim=new SkywatcherSimulator(); if (!strcmp(sw->name, "SIM_EQ6")) { sksim->setupVersion("020300"); sksim->setupRA(180, 47,12,200,64,2); sksim->setupDE(180, 47,12,200,64,2); } else { if (!strcmp(sw->name, "SIM_HEQ5")) { sksim->setupVersion("020301"); sksim->setupRA(135, 47,9,200,64,2); sksim->setupDE(135, 47,9,200,64,2); } else { if (!strcmp(sw->name, "SIM_NEQ5")) { sksim->setupVersion("020302"); sksim->setupRA(144, 44,9,200,32,2); sksim->setupDE(144, 44,9,200,32,2); } else { if (!strcmp(sw->name, "SIM_NEQ3")) { sksim->setupVersion("020303"); sksim->setupRA(130, 55,10,200,32,2); sksim->setupDE(130, 55,10,200,32,2); } else { if (!strcmp(sw->name, "SIM_GEEHALEL")) { sksim->setupVersion("0203F0"); sksim->setupRA(144, 60,15,400,8,1); sksim->setupDE(144, 60,10,400,8,1); } else { if (!strcmp(sw->name, "SIM_CUSTOM")) { double teeth, num, den, steps, microsteps, highspeed; ISwitch *hssw=IUFindOnSwitch(SimHighSpeedSP); sksim->setupVersion(IUFindText(SimMCVersionTP, "SIM_MCPHRASE")->text); teeth=IUFindNumber(SimWormNP, "RA_TEETH")->value; num=IUFindNumber(SimRatioNP, "RA_RATIO_NUM")->value; den=IUFindNumber(SimRatioNP, "RA_RATIO_DEN")->value; steps=IUFindNumber(SimMotorNP, "RA_MOTOR_STEPS")->value; microsteps=IUFindNumber(SimMotorNP, "RA_MOTOR_USTEPS")->value; highspeed=1; if (!strcmp(hssw->name, "SIM_HALFSTEP")) highspeed=2; sksim->setupRA(teeth, num, den, steps, microsteps, highspeed); teeth=IUFindNumber(SimWormNP, "DE_TEETH")->value; num=IUFindNumber(SimRatioNP, "DE_RATIO_NUM")->value; den=IUFindNumber(SimRatioNP, "DE_RATIO_DEN")->value; steps=IUFindNumber(SimMotorNP, "DE_MOTOR_STEPS")->value; microsteps=IUFindNumber(SimMotorNP, "DE_MOTOR_USTEPS")->value; sksim->setupDE(teeth, num, den, steps, microsteps, highspeed); } } } } } } }
bool Controller::ISNewText (const char * dev, const char * name, char * texts[], char * names[], int n) { if(strcmp(dev,device->getDeviceName())==0) { if (!strcmp(name, "JOYSTICKSETTINGS") && n <= JoystickSettingTP.ntp) { for (int i=0; i < JoystickSettingTP.ntp; i++) { IText * tp = IUFindText(&JoystickSettingTP, names[i]); if (tp) { ControllerType cType = getControllerType(texts[i]); ControllerType myType = *((ControllerType *) JoystickSettingT[i].aux0); if (cType != myType) { JoystickSettingTP.s = IPS_ALERT; IDSetText(&JoystickSettingTP, NULL); DEBUGFDEVICE(dev, INDI::Logger::DBG_ERROR, "Cannot change controller type to %s.", texts[i]); return false; } } } IUUpdateText(&JoystickSettingTP, texts, names, n); for (int i=0; i < n; i++) { if (strstr(JoystickSettingT[i].text, "JOYSTICK_")) IDSnoopDevice("Joystick", JoystickSettingT[i].text); } JoystickSettingTP.s = IPS_OK; IDSetText(&JoystickSettingTP, NULL); return true; } } return false; }
void INDI::BaseClientQt::sendNewText (const char * deviceName, const char * propertyName, const char * elementName, const char * text) { INDI::BaseDevice * drv = getDevice(deviceName); if (drv == NULL) return; ITextVectorProperty * tvp = drv->getText(propertyName); if (tvp == NULL) return; IText * tp = IUFindText(tvp, elementName); if (tp == NULL) return; IUSaveText(tp, text); sendNewText(tvp); }
void IEQPro::getStartupData() { DEBUG(INDI::Logger::DBG_DEBUG, "Getting firmware data..."); if (get_ieqpro_firmware(PortFD, &firmwareInfo)) { IUSaveText(&FirmwareT[0], firmwareInfo.Model.c_str()); IUSaveText(&FirmwareT[1], firmwareInfo.MainBoardFirmware.c_str()); IUSaveText(&FirmwareT[2], firmwareInfo.ControllerFirmware.c_str()); IUSaveText(&FirmwareT[3], firmwareInfo.RAFirmware.c_str()); IUSaveText(&FirmwareT[4], firmwareInfo.DEFirmware.c_str()); FirmwareTP.s = IPS_OK; IDSetText(&FirmwareTP, NULL); } DEBUG(INDI::Logger::DBG_DEBUG, "Getting guiding rate..."); double guideRate=0; if (get_ieqpro_guide_rate(PortFD, &guideRate)) { GuideRateN[0].value = guideRate; IDSetNumber(&GuideRateNP, NULL); } double HA = ln_get_apparent_sidereal_time(ln_get_julian_from_sys()); double DEC = (HemisphereS[HEMI_NORTH].s == ISS_ON) ? 90 : -90; if (InitPark()) { // If loading parking data is successful, we just set the default parking values. SetAxis1ParkDefault(HA); SetAxis2ParkDefault(DEC); } else { // Otherwise, we set all parking data to default in case no parking data is found. SetAxis1Park(HA); SetAxis2Park(DEC); SetAxis1ParkDefault(HA); SetAxis2ParkDefault(DEC); } double utc_offset; int yy, dd, mm, hh, minute, ss; if (get_ieqpro_utc_date_time(PortFD, &utc_offset, &yy, &mm, &dd, &hh, &minute, &ss)) { char isoDateTime[32]; char utcOffset[8]; snprintf(isoDateTime, 32, "%04d-%02d-%02dT%02d:%02d:%02d", yy, mm, dd, hh, minute, ss); snprintf(utcOffset, 8, "%4.2f", utc_offset); IUSaveText(IUFindText(&TimeTP, "UTC"), isoDateTime); IUSaveText(IUFindText(&TimeTP, "OFFSET"), utcOffset); DEBUGF(INDI::Logger::DBG_SESSION, "Mount UTC offset is %s. UTC time is %s", utcOffset, isoDateTime); IDSetText(&TimeTP, NULL); } // Get Longitude and Latitude from mount double longitude=0,latitude=0; if (get_ieqpro_latitude(PortFD, &latitude) && get_ieqpro_longitude(PortFD, &longitude)) { // Convert to INDI standard longitude (0 to 360 Eastward) if (longitude < 0) longitude += 360; LocationN[LOCATION_LATITUDE].value = latitude; LocationN[LOCATION_LONGITUDE].value= longitude; LocationNP.s = IPS_OK; IDSetNumber(&LocationNP, NULL); } if (isSimulation()) { if (isParked()) set_sim_system_status(ST_PARKED); else set_sim_system_status(ST_STOPPED); } }