Exemple #1
0
void LX200_16::getBasicData()
{
   LX200GPS::getBasicData();

   if (isSimulation() == false)
   {
       getLX200Az(PortFD, &currentAZ);
       getLX200Alt(PortFD, &currentALT);
       HorizontalCoordsNP.np[0].value = currentALT;
       HorizontalCoordsNP.np[1].value = currentAZ;
       IDSetNumber (&HorizontalCoordsNP, NULL);
   }
}
Exemple #2
0
 void LX200_16::getBasicData()
 {

   getLX200Az(&targetAz);
   getLX200Alt(&targetAlt);

   horNum.np[0].value = targetAlt;
   horNum.np[1].value = targetAz;

   IDSetNumber (&horNum, NULL);
   
   LX200Autostar::getBasicData();

 }
Exemple #3
0
 void LX200_16::ISPoll ()
 {
   int searchResult=0;
   double dx, dy;
   int err;
   
   LX200Autostar::ISPoll();

   	switch (HomeSearchSw.s)
	{
	case IPS_IDLE:
	     break;

	case IPS_BUSY:

	    if ( (err = getHomeSearchStatus(&searchResult)) < 0)
	    {
	      handleError(&HomeSearchSw, err, "Home search");
	      return;
	    }

	    if (searchResult == 0)
	    {
	      HomeSearchSw.s = IPS_IDLE;
	      IDSetSwitch(&HomeSearchSw, "Home search failed.");
	    }
	    else if (searchResult == 1)
	    {
	      HomeSearchSw.s = IPS_OK;
	      IDSetSwitch(&HomeSearchSw, "Home search successful.");
	    }
	    else if (searchResult == 2)
	      IDSetSwitch(&HomeSearchSw, "Home search in progress...");
	    else
	    {
	      HomeSearchSw.s = IPS_IDLE;
	      IDSetSwitch(&HomeSearchSw, "Home search error.");
	    }
	    break;

	 case IPS_OK:
	   break;
	 case IPS_ALERT:
	  break;
	}

	switch (horNum.s)
	{
	case IPS_IDLE:
	     break;

	case IPS_BUSY:

	    if ( (err = getLX200Az(&currentAz)) < 0 || (err = getLX200Alt(&currentAlt)) < 0)
	    {
	      IDSetNumber(&horNum, NULL);
	      handleError(&horNum, err, "Get Alt/Az");
	      return;
	    }
	    
	    dx = targetAz - currentAz;
	    dy = targetAlt - currentAlt;

            horNum.np[0].value = currentAlt;
	    horNum.np[1].value = currentAz;

	    IDLog("targetAz is %g, currentAz is %g\n", targetAz, currentAz);
	    IDLog("targetAlt is %g, currentAlt is %g\n**********************\n", targetAlt,  currentAlt);


	    // accuracy threshhold (3'), can be changed as desired.
	    if ( fabs(dx) <= 0.05 && fabs(dy) <= 0.05)
	    {

		horNum.s = IPS_OK;
		currentAz = targetAz;
		currentAlt = targetAlt;
                IDSetNumber (&horNum, "Slew is complete");
	    } else
	    	IDSetNumber (&horNum, NULL);
	    break;

	case IPS_OK:
	    break;

	case IPS_ALERT:
	    break;
	}

 }
Exemple #4
0
 bool LX200_16::ReadScopeStatus()
 {
   int searchResult=0;
   double dx, dy;

   LX200Generic::ReadScopeStatus();

    switch (HomeSearchSP.s)
	{
	case IPS_IDLE:
	     break;

	case IPS_BUSY:

        if (isSimulation())
            searchResult = 1;
        else if (getHomeSearchStatus(PortFD, &searchResult) < 0)
	    {
            HomeSearchSP.s = IPS_ALERT;
            IDSetSwitch(&HomeSearchSP, "Error updating home search status.");
            return false;
	    }

	    if (searchResult == 0)
	    {
	      HomeSearchSP.s = IPS_ALERT;
	      IDSetSwitch(&HomeSearchSP, "Home search failed.");
	    }
	    else if (searchResult == 1)
	    {
	      HomeSearchSP.s = IPS_OK;
	      IDSetSwitch(&HomeSearchSP, "Home search successful.");
	    }
	    else if (searchResult == 2)
	      IDSetSwitch(&HomeSearchSP, "Home search in progress...");
	    else
	    {
	      HomeSearchSP.s = IPS_ALERT;
	      IDSetSwitch(&HomeSearchSP, "Home search error.");
	    }
	    break;

	 case IPS_OK:
	   break;
	 case IPS_ALERT:
	  break;
	}

    switch (HorizontalCoordsNP.s)
	{
	case IPS_IDLE:
	     break;

	case IPS_BUSY:

        if (isSimulation())
        {
            currentAZ  = targetAZ;
            currentALT = targetALT;
            TrackState = SCOPE_TRACKING;
            return true;
        }
        if (getLX200Az(PortFD, &currentAZ) < 0 || getLX200Alt(PortFD, &currentALT) < 0)
	    {
            HorizontalCoordsNP.s = IPS_ALERT;
            IDSetNumber(&HorizontalCoordsNP, "Error geting Alt/Az.");
            return false;
	    }
	    
	    dx = targetAZ - currentAZ;
	    dy = targetALT - currentALT;

        HorizontalCoordsNP.np[0].value = currentALT;
        HorizontalCoordsNP.np[1].value = currentAZ;

	    // accuracy threshold (3'), can be changed as desired.
	    if ( fabs(dx) <= 0.05 && fabs(dy) <= 0.05)
	    {

        HorizontalCoordsNP.s = IPS_OK;
		currentAZ = targetAZ;
		currentALT = targetALT;
        IDSetNumber (&HorizontalCoordsNP, "Slew is complete.");
	    } else
            IDSetNumber (&HorizontalCoordsNP, NULL);
	    break;

	case IPS_OK:
	    break;

	case IPS_ALERT:
	    break;
	}

    return true;
 }