Exemplo n.º 1
0
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);

                        }
                    }
                }
            }
        }
    }
}
Exemplo n.º 2
0
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;

}
Exemplo n.º 3
0
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);
}
Exemplo n.º 4
0
Arquivo: ieqpro.cpp Projeto: mp77/indi
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);
    }
}