diff --git a/detect.h b/detect.h index 05ca733..d3f47c3 100644 --- a/detect.h +++ b/detect.h @@ -54,6 +54,7 @@ enum { enum { POSCTL_CALIB_MODE_OFF = 0, + POSCTL_CALIB_MODE_START, POSCTL_CALIB_MODE_STOP1, POSCTL_CALIB_MODE_DELTAM, POSCTL_CALIB_MODE_AXIS1START, diff --git a/posctl.cc b/posctl.cc index 1423e5b..5e7e3e1 100644 --- a/posctl.cc +++ b/posctl.cc @@ -595,10 +595,6 @@ gboolean cb_thread_posctl (gpointer data) { free (data); switch (posctl_calib_debug.mode) { - case (POSCTL_CALIB_MODE_OFF): - tg = GTK_WIDGET(gtk_builder_get_object (GTK_BUILDER(_builder_), "cal_mode_off")); - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(tg), true); - break; case (POSCTL_CALIB_MODE_STOP1): tg = GTK_WIDGET(gtk_builder_get_object (GTK_BUILDER(_builder_), "cal_mode_rs")); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(tg), true); @@ -628,6 +624,8 @@ gboolean cb_thread_posctl (gpointer data) { gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(tg), true); break; default: + tg = GTK_WIDGET(gtk_builder_get_object (GTK_BUILDER(_builder_), "cal_mode_off")); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(tg), true); break; } } @@ -717,7 +715,7 @@ void PosCtl::StartCalibration() { return; } mode = POSCTL_MODE_CALIB; - calib_mode = POSCTL_CALIB_MODE_STOP1; + calib_mode = POSCTL_CALIB_MODE_START; gettimeofday (&calib_timestamp, NULL); NotifyGtk(); } @@ -848,13 +846,13 @@ void PosCtl::CalibModeAxis(int x, int y) { fp.y = (y - calib_pos.y) / timediff; if (calib_mode == POSCTL_CALIB_MODE_AXIS1M) { - calib_axis1_v = fp; + calib_axis1_v = fp - calib_rot_v; calc_vec2anglelen(&calib_axis1_v, &calib_axis1); if (OutputWriteStop()) mode = POSCTL_MODE_OFF; else if (OutputWriteValue(1, pid_axis[1].GetMax())) mode = POSCTL_MODE_OFF; } else if (calib_mode == POSCTL_CALIB_MODE_AXIS2M) { - calib_axis2_v = fp; + calib_axis2_v = fp - calib_rot_v; calc_vec2anglelen(&calib_axis2_v, &calib_axis2); } @@ -896,6 +894,9 @@ void PosCtl::Loop (int posx, int posy) { // calibration mode? if (mode == POSCTL_MODE_CALIB) { switch (calib_mode) { + case (POSCTL_CALIB_MODE_START): + CalibModeStart(posx, posy); + break; case (POSCTL_CALIB_MODE_STOP1): case (POSCTL_CALIB_MODE_AXIS1START): case (POSCTL_CALIB_MODE_AXIS2START):