[tuxdroid-svn] r989 - software_suite_v2/middleware/tuxdriver/trunk/src
Status: Beta
Brought to you by:
ks156
From: eFfeM <c2m...@c2...> - 2008-04-20 12:16:47
|
Author: eFfeM Date: 2008-04-20 14:16:51 +0200 (Sun, 20 Apr 2008) New Revision: 989 Modified: software_suite_v2/middleware/tuxdriver/trunk/src/tux_movements.c Log: layout Modified: software_suite_v2/middleware/tuxdriver/trunk/src/tux_movements.c =================================================================== --- software_suite_v2/middleware/tuxdriver/trunk/src/tux_movements.c 2008-04-20 12:06:32 UTC (rev 988) +++ software_suite_v2/middleware/tuxdriver/trunk/src/tux_movements.c 2008-04-20 12:16:51 UTC (rev 989) @@ -31,10 +31,10 @@ /* * Prototypes */ -int static movement_status_control(char final_state, int value, char condition); -int static control_final_state(char motor, char final_state, int value); -int static compute_value(char motor, float timeout); -void static single_movement(char motor, char final_state); +static int movement_status_control(char final_state, int value, char condition); +static int control_final_state(char motor, char final_state, int value); +static int compute_value(char motor, float timeout); +static void single_movement(char motor, char final_state); /** @@ -51,7 +51,7 @@ * * The time of each movement has been measured, and defined in movements.h. */ -int static +static int compute_value(char motor, float timeout) { int value = 0; @@ -75,7 +75,9 @@ } if (value > 255) + { value = 255; + } return value; } @@ -105,39 +107,64 @@ { condition = hw_status_table.ports.portd.bits.eyes_open_switch; if (value) + { value = movement_status_control(final_state, value, condition); - else if (final_state != FINAL_ST_UNDEFINED) - single_movement(motor, final_state); + } + else + { + if (final_state != FINAL_ST_UNDEFINED) + { + single_movement(motor, final_state); + } + } break; } case (MOVE_MOUTH): { condition = hw_status_table.ports.portb.bits.mouth_open_switch; if (value) + { value = movement_status_control(final_state, value, condition); - else if (final_state != FINAL_ST_UNDEFINED) - single_movement(motor, final_state); + } + else + { + if (final_state != FINAL_ST_UNDEFINED) + { + single_movement(motor, final_state); + } + } break; } case (MOVE_FLIPPERS): { condition = !hw_status_table.position2.wings_down; if (value) + { value = movement_status_control(final_state, value, condition); - else if (final_state != FINAL_ST_UNDEFINED) - single_movement(motor, final_state); + } + else + { + if (final_state != FINAL_ST_UNDEFINED) + { + single_movement(motor, final_state); + } + } break; } case (MOVE_SPIN_R): { if (!(value) && final_state == FINAL_ST_STOP) + { single_movement(motor, final_state); + } break; } case (MOVE_SPIN_L): { if (!(value) && final_state == FINAL_ST_STOP) + { single_movement(motor, final_state); + } break; } } @@ -159,14 +186,14 @@ int static movement_status_control(char final_state, int value, char condition) { - if (condition == 1 && final_state == FINAL_ST_OPEN_UP && !(value % 2)) - value ++; - else if (condition == 1 && final_state == FINAL_ST_CLOSE_DOWN && value % 2) - value ++; - else if (condition == 0 && final_state == FINAL_ST_CLOSE_DOWN && !(value % 2)) - value ++; - else if (condition == 0 && final_state == FINAL_ST_OPEN_UP && value % 2) - value ++; + if ((condition == 2 && final_state == FINAL_ST_OPEN_UP && !(value % 2)) || + (condition == 1 && final_state == FINAL_ST_CLOSE_DOWN && value % 2) || + (condition == 0 && final_state == FINAL_ST_CLOSE_DOWN && !(value % 2)) || + (condition == 0 && final_state == FINAL_ST_OPEN_UP && value % 2) + ) + { + value ++; + } return value; } @@ -188,37 +215,77 @@ { case (MOVE_EYES): if (final_state == FINAL_ST_OPEN_UP) + { frame[0] = EYES_OPEN_CMD; - else if (final_state == FINAL_ST_CLOSE_DOWN) - frame[0] = EYES_CLOSE_CMD; - else if (final_state == FINAL_ST_STOP) - frame[0] = EYES_STOP_CMD; + } + else + { + if (final_state == FINAL_ST_CLOSE_DOWN) + { + frame[0] = EYES_CLOSE_CMD; + } + else + { + if (final_state == FINAL_ST_STOP) + { + frame[0] = EYES_STOP_CMD; + } + } + } break; case (MOVE_MOUTH): if (final_state == FINAL_ST_OPEN_UP) + { frame[0] = MOUTH_OPEN_CMD; - else if (final_state == FINAL_ST_CLOSE_DOWN) - frame[0] = MOUTH_CLOSE_CMD; - else if (final_state == FINAL_ST_STOP) - frame[0] = MOUTH_STOP_CMD; + } + else + { + if (final_state == FINAL_ST_CLOSE_DOWN) + { + frame[0] = MOUTH_CLOSE_CMD; + } + else + { + if (final_state == FINAL_ST_STOP) + { + frame[0] = MOUTH_STOP_CMD; + } + } + } break; case (MOVE_FLIPPERS): if (final_state == FINAL_ST_OPEN_UP) + { frame[0] = WINGS_RAISE_CMD; - else if (final_state == FINAL_ST_CLOSE_DOWN) - frame[0] = WINGS_LOWER_CMD; - else if (final_state == FINAL_ST_STOP) - frame[0] = WINGS_STOP_CMD; + } + else + { + if (final_state == FINAL_ST_CLOSE_DOWN) + { + frame[0] = WINGS_LOWER_CMD; + } + else + { + if (final_state == FINAL_ST_STOP) + { + frame[0] = WINGS_STOP_CMD; + } + } + } break; case (MOVE_SPIN_L): if (final_state == FINAL_ST_STOP) + { frame[0] = SPIN_STOP_CMD; + } break; case (MOVE_SPIN_R): if (final_state == FINAL_ST_STOP) + { frame[0] = SPIN_STOP_CMD; + } break; default: return; @@ -265,8 +332,12 @@ char type = 0; if (movement == (MOVE_SPIN_L) || movement == (MOVE_SPIN_R)) + { if (final_state != FINAL_ST_STOP) + { final_state = FINAL_ST_UNDEFINED; + } + } /* * Refresh has the maximum priority. If it's set, only the command to @@ -340,26 +411,48 @@ tux_movement_conststr_to_val(char *conststr) { if (!strcmp(conststr, "VERYLOW")) + { return 1; + } if (!strcmp(conststr, "LOW")) + { return 2; + } if (!strcmp(conststr, "MEDIUM")) + { return 3; + } if (!strcmp(conststr, "MIDHIGH")) + { return 4; + } if (!strcmp(conststr, "HIGH")) + { return 5; + } if (!strcmp(conststr, "UNDEFINED")) + { return 0; + } if (!strcmp(conststr, "OPEN")) + { return 1; + } if (!strcmp(conststr, "UP")) + { return 1; + } if (!strcmp(conststr, "CLOSE")) + { return 2; + } if (!strcmp(conststr, "DOWN")) + { return 2; + } if (!strcmp(conststr, "STOP")) + { return 3; + } return 0; } |