Telescope Control Library

Dependents:   PushToGo-F429

Revision:
4:b8ad57bbf9e1
Parent:
2:2ee28add0821
Child:
10:e356188d208e
--- a/EqMountServer.cpp	Tue Aug 21 00:00:48 2018 +0000
+++ b/EqMountServer.cpp	Mon Aug 27 23:24:00 2018 +0000
@@ -410,7 +410,7 @@
 	if (argn == 0)
 	{
 		stprintf(server->getStream(),
-				"%s usage: align add [star]\nalign replace [n] [star]\nalign delete [n]\nalign show\nalign show [n]\n\nalign clear\n",
+				"%s usage: align add [star]\r\nalign replace [n] [star]\r\nalign delete [n]\r\nalign show\r\nalign show [n]\r\nalign clear\r\nalign set\r\nalign force\r\nalign update\r\n",
 				cmd);
 		return ERR_WRONG_NUM_PARAM;
 	}
@@ -420,7 +420,7 @@
 		if (argn != 3 && argn != 5)
 		{
 			stprintf(server->getStream(),
-					"%s usage: align add {ref_ra} {ref_dec}\n%s usage: align add {ref_ra} {ref_dec} {meas_ra} {meas_dec}\n",
+					"%s usage: align add {ref_ra} {ref_dec}\r\n%s usage: align add {ref_ra} {ref_dec} {meas_ra} {meas_dec}\r\n",
 					cmd, cmd);
 			return ERR_WRONG_NUM_PARAM;
 		}
@@ -461,7 +461,7 @@
 		if (argn != 4 && argn != 6)
 		{
 			stprintf(server->getStream(),
-					"%s usage: align replace [index] {ref_ra} {ref_dec}\n%s usage: align replace [index] {ref_ra} {ref_dec} {meas_ra} {meas_dec}\n",
+					"%s usage: align replace [index] {ref_ra} {ref_dec}\r\n%s usage: align replace [index] {ref_ra} {ref_dec} {meas_ra} {meas_dec}\r\n",
 					cmd, cmd);
 			return ERR_WRONG_NUM_PARAM;
 		}
@@ -512,41 +512,32 @@
 		{
 			return ERR_PARAM_OUT_OF_RANGE;
 		}
-		if (server->getEqMount()->getNumAlignmentStar() > 1)
-			return server->getEqMount()->removeAlignmentStar(n);
-		else
-			server->getEqMount()->clearCalibration();
+		int ret = server->getEqMount()->removeAlignmentStar(n);
+		if (server->getEqMount()->getNumAlignmentStar() == 0){
+			server->getEqMount()->clearCalibrationExceptOffsets();
+		}
+		return ret;
 	}
 	else if (strcmp(argv[0], "show") == 0)
 	{
 		if (argn == 1)
 		{
-			// Show all alignment stars
-//			int N = server->getEqMount()->getNumAlignmentStar();
-//			for (int i = 0; i < N; i++)
-//			{
-//				AlignmentStar *as = server->getEqMount()->getAlignmentStar(i);
-//				stprintf(server->getStream(), "%s %d %.8f %.8f %.8f %.8f %d\n",
-//						cmd, i, as->star_ref.ra, as->star_ref.dec,
-//						as->star_meas.ra_delta, as->star_meas.dec_delta,
-//						as->timestamp);
-//			}
-			stprintf(server->getStream(), "%s offset %.8f %.8f\n", cmd,
+			stprintf(server->getStream(), "%s offset %.8f %.8f\r\n", cmd,
 					server->getEqMount()->getCalibration().offset.ra_off,
 					server->getEqMount()->getCalibration().offset.dec_off);
-			stprintf(server->getStream(), "%s pa %.8f %.8f\n", cmd,
+			stprintf(server->getStream(), "%s pa %.8f %.8f\r\n", cmd,
 					server->getEqMount()->getCalibration().pa.alt,
 					server->getEqMount()->getCalibration().pa.azi);
-			stprintf(server->getStream(), "%s cone %.8f\n", cmd,
+			stprintf(server->getStream(), "%s cone %.8f\r\n", cmd,
 					server->getEqMount()->getCalibration().cone);
-			stprintf(server->getStream(), "%s error %g\n", cmd,
+			stprintf(server->getStream(), "%s error %g\r\n", cmd,
 					server->getEqMount()->getCalibration().error);
 		}
 		else if (argn == 2)
 		{
 			if (strcmp(argv[1], "num") == 0)
 			{
-				stprintf(server->getStream(), "%s %d\n", cmd,
+				stprintf(server->getStream(), "%s %d\r\n", cmd,
 						server->getEqMount()->getNumAlignmentStar());
 			}
 			else
@@ -565,7 +556,7 @@
 				{
 					return ERR_PARAM_OUT_OF_RANGE;
 				}
-				stprintf(server->getStream(), "%s %.8f %.8f %.8f %.8f %d\n",
+				stprintf(server->getStream(), "%s %.8f %.8f %.8f %.8f %d\r\n",
 						cmd, as->star_ref.ra, as->star_ref.dec,
 						as->star_meas.ra_delta, as->star_meas.dec_delta,
 						as->timestamp);
@@ -607,7 +598,7 @@
 			EquatorialCoordinates eq =
 					server->getEqMount()->convertToEqCoordinates(
 							MountCoordinates(dec, ra));
-			stprintf(server->getStream(), "%s %.8f %.8f\n", cmd, eq.ra, eq.dec);
+			stprintf(server->getStream(), "%s %.8f %.8f\r\n", cmd, eq.ra, eq.dec);
 		}
 		else if (strcmp(argv[1], "eq") == 0)
 		{
@@ -615,12 +606,66 @@
 			MountCoordinates mc =
 					server->getEqMount()->convertToMountCoordinates(
 							EquatorialCoordinates(dec, ra));
-			stprintf(server->getStream(), "%s %.8f %.8f\n", cmd, mc.ra_delta,
+			stprintf(server->getStream(), "%s %.8f %.8f\r\n", cmd, mc.ra_delta,
 					mc.dec_delta);
 		}
 		else
 			return ERR_PARAM_OUT_OF_RANGE;
 	}
+	else if (strcmp(argv[0], "set") == 0)
+	{
+		if (argn != 6)
+		{
+			stprintf(server->getStream(),
+					"%s usage: align set [offset_ra] [offset_dec] [pa_alt] [pa_az] [cone]\r\n", cmd);
+			return ERR_WRONG_NUM_PARAM;
+		}
+		char *tp;
+		EqCalibration calib;
+		calib.offset.ra_off = strtod(argv[1], &tp);
+		if (tp == argv[1])
+		{
+			return ERR_PARAM_OUT_OF_RANGE;
+		}
+		calib.offset.dec_off = strtod(argv[2], &tp);
+		if (tp == argv[2])
+		{
+			return ERR_PARAM_OUT_OF_RANGE;
+		}
+		calib.pa.alt = strtod(argv[3], &tp);
+		if (tp == argv[3])
+		{
+			return ERR_PARAM_OUT_OF_RANGE;
+		}
+ 		calib.pa.azi = strtod(argv[4], &tp);
+		if (tp == argv[4])
+		{
+			return ERR_PARAM_OUT_OF_RANGE;
+		}
+		calib.cone = strtod(argv[5], &tp);
+		if (tp == argv[5])
+		{
+			return ERR_PARAM_OUT_OF_RANGE;
+		}
+		
+		server->getEqMount()->setCalibration(calib);
+	}
+	else if (strcmp(argv[0], "force") == 0)
+	{
+		if (argn != 1)
+		{
+			return ERR_WRONG_NUM_PARAM;
+		}
+		server->getEqMount()->forceAlignment();
+	}
+	else if (strcmp(argv[0], "update") == 0)
+	{
+		if (argn != 1)
+		{
+			return ERR_WRONG_NUM_PARAM;
+		}
+		server->getEqMount()->recalibrate();
+	}
 	else
 	{
 		return ERR_PARAM_OUT_OF_RANGE;