circuit strat, first version
[aversive.git] / projects / microb2010 / mainboard / strat_corn.c
index 7fa64c4..8f8503f 100644 (file)
@@ -69,6 +69,7 @@
 /* return 1 if there is a corn near, and fill the index ptr */
 int8_t corn_is_near(uint8_t *corn_idx, uint8_t side)
 {
 /* return 1 if there is a corn near, and fill the index ptr */
 int8_t corn_is_near(uint8_t *corn_idx, uint8_t side)
 {
+       /* XXX to be checked */
 #define SENSOR_CORN_DIST  225
 #define SENSOR_CORN_ANGLE 90
        double x = position_get_x_double(&mainboard.pos);
 #define SENSOR_CORN_DIST  225
 #define SENSOR_CORN_ANGLE 90
        double x = position_get_x_double(&mainboard.pos);
@@ -130,8 +131,8 @@ static uint8_t handle_spickles(void)
 #endif
 }
 
 #endif
 }
 
-uint8_t line2line(uint8_t dir1, uint8_t num1,
-                 uint8_t dir2, uint8_t num2)
+uint8_t line2line(uint8_t num1, uint8_t dir1,
+                 uint8_t num2, uint8_t dir2)
 {
        double line1_a_rad, line1_a_deg, line2_a_rad;
        double diff_a_deg, diff_a_deg_abs, beta_deg;
 {
        double line1_a_rad, line1_a_deg, line2_a_rad;
        double diff_a_deg, diff_a_deg_abs, beta_deg;
@@ -141,6 +142,7 @@ uint8_t line2line(uint8_t dir1, uint8_t num1,
        point_t p;
        uint8_t err;
        uint16_t a_speed, d_speed;
        point_t p;
        uint8_t err;
        uint16_t a_speed, d_speed;
+       int8_t ret;
 
        /* convert to 2 points */
        num2line(&l1, dir1, num1);
 
        /* convert to 2 points */
        num2line(&l1, dir1, num1);
@@ -196,10 +198,13 @@ uint8_t line2line(uint8_t dir1, uint8_t num1,
        }
 
        /* XXX check return value !! */
        }
 
        /* XXX check return value !! */
-       trajectory_clitoid(&mainboard.traj, l1.p1.x, l1.p1.y,
-                          line1_a_deg, 150., diff_a_deg, beta_deg,
-                          radius, xy_norm(l1.p1.x, l1.p1.y,
-                                          p.x, p.y));
+       ret = trajectory_clitoid(&mainboard.traj, l1.p1.x, l1.p1.y,
+                                line1_a_deg, 150., diff_a_deg, beta_deg,
+                                radius, xy_norm(l1.p1.x, l1.p1.y,
+                                                p.x, p.y));
+       if (ret < 0)
+               DEBUG(E_USER_STRAT, "clitoid failed");
+
        /* disabled */
        if (0) {
                err = 0;
        /* disabled */
        if (0) {
                err = 0;
@@ -218,9 +223,11 @@ uint8_t line2line(uint8_t dir1, uint8_t num1,
        strat_get_speed(&d_speed, &a_speed);
 
        /* XXX 600 -> cste */
        strat_get_speed(&d_speed, &a_speed);
 
        /* XXX 600 -> cste */
-       if (err == 0 && d_speed < 600 &&
-           mainboard.traj.state == RUNNING_CLITOID_LINE)
-               strat_set_speed(600, SPEED_ANGLE_FAST);
+       /* XXX does not work, do better */
+/*     if (err == 0 && d_speed < 600 && */
+/*         mainboard.traj.state == RUNNING_CLITOID_LINE) */
+/*             strat_set_speed(600, SPEED_ANGLE_FAST); */
+
        err = wait_traj_end(0xFF);
 
        return err;
        err = wait_traj_end(0xFF);
 
        return err;