Traveler: Slow movement down

This commit is contained in:
Gregory Nutt 2014-12-14 14:14:13 -06:00
parent f739f3f50a
commit be1611fbc4

View File

@ -64,7 +64,15 @@
/****************************************************************************
* Pre-processor Definitions
*************************************************************************/
****************************************************************************/
#define RUN_RATE (2 * STEP_DISTANCE)
#define WALK_RATE (STEP_DISTANCE)
#define MAX_RATE RUN_RATE
#define SLOW_TURN ANGLE_6
#define FAST_TURN ANGLE_9
#define MAX_TURN ANGLE_12
#if defined(CONFIG_GRAPHICS_TRAVELER_AJOYSTICK)
# define BUTTON_SET (AJOY_BUTTON_SELECT_BIT | AJOY_BUTTON_FIRE_BIT)
@ -75,7 +83,7 @@
/****************************************************************************
* Private Types
*************************************************************************/
****************************************************************************/
struct trv_joystick_s
{
@ -104,7 +112,7 @@ struct trv_joystick_s
/****************************************************************************
* Public Data
*************************************************************************/
****************************************************************************/
/* Report positional inputs */
@ -112,7 +120,7 @@ struct trv_input_s g_trv_input;
/****************************************************************************
* Private Function Prototypes
****************************************************************************/
*****************************************************************************/
#ifdef CONFIG_GRAPHICS_TRAVELER_JOYSTICK
static struct trv_joystick_s g_trv_joystick;
@ -120,7 +128,7 @@ static struct trv_joystick_s g_trv_joystick;
/****************************************************************************
* Private Data
*************************************************************************/
****************************************************************************/
/****************************************************************************
* Private Functions
@ -281,8 +289,8 @@ static int trv_joystick_calibrate(void)
}
g_trv_joystick.lplus = (sample.as_x > g_trv_joystick.centerx);
g_trv_joystick.leftslope = trv_joystick_slope(sample.as_x - g_trv_joystick.centerx, 3 * STEP_DISTANCE);
g_trv_joystick.lturnslope = trv_joystick_slope(sample.as_x - g_trv_joystick.centerx, ANGLE_12);
g_trv_joystick.leftslope = trv_joystick_slope(sample.as_x - g_trv_joystick.centerx, MAX_RATE);
g_trv_joystick.lturnslope = trv_joystick_slope(sample.as_x - g_trv_joystick.centerx, MAX_TURN);
printf("Move the joystick to the far LEFT and press any button\n");
ret = trv_joystick_sample(&sample);
@ -292,8 +300,8 @@ static int trv_joystick_calibrate(void)
return ret;
}
g_trv_joystick.rightslope = trv_joystick_slope(sample.as_x - g_trv_joystick.centerx, -3 * STEP_DISTANCE);
g_trv_joystick.rturnslope = trv_joystick_slope(sample.as_x - g_trv_joystick.centerx, -ANGLE_12);
g_trv_joystick.rightslope = trv_joystick_slope(sample.as_x - g_trv_joystick.centerx, -MAX_RATE);
g_trv_joystick.rturnslope = trv_joystick_slope(sample.as_x - g_trv_joystick.centerx, -MAX_TURN);
/* Get the forward/backward calibration data */
@ -306,8 +314,8 @@ static int trv_joystick_calibrate(void)
}
g_trv_joystick.fplus = (sample.as_y > g_trv_joystick.centery);
g_trv_joystick.fwdslope = trv_joystick_slope(sample.as_y - g_trv_joystick.centery, 3 * STEP_DISTANCE);
g_trv_joystick.uturnslope = trv_joystick_slope(sample.as_y - g_trv_joystick.centery, ANGLE_12);
g_trv_joystick.fwdslope = trv_joystick_slope(sample.as_y - g_trv_joystick.centery, MAX_RATE);
g_trv_joystick.uturnslope = trv_joystick_slope(sample.as_y - g_trv_joystick.centery, MAX_TURN);
printf("Move the joystick to the far BACKWARD and press any button\n");
ret = trv_joystick_sample(&sample);
@ -317,8 +325,8 @@ static int trv_joystick_calibrate(void)
return ret;
}
g_trv_joystick.backslope = trv_joystick_slope(sample.as_y - g_trv_joystick.centery, -3 * STEP_DISTANCE);
g_trv_joystick.dturnslope = trv_joystick_slope(sample.as_y - g_trv_joystick.centery, -ANGLE_12);
g_trv_joystick.backslope = trv_joystick_slope(sample.as_y - g_trv_joystick.centery, -MAX_RATE);
g_trv_joystick.dturnslope = trv_joystick_slope(sample.as_y - g_trv_joystick.centery, -MAX_TURN);
printf("Calibrated:\n");
trv_debug(" X: center=%d, R-slope=%08lx L-slope=%08lx\n",
@ -565,6 +573,13 @@ void trv_input_read(void)
/* Look upward/downward */
g_trv_input.pitchrate = trv_scale_input_pitch(&sample);
/* If we are moving faster than a walk, we can jump higher */
if (g_trv_input.leftrate < -WALK_RATE || g_trv_input.leftrate > WALK_RATE)
{
g_trv_input.stepheight = g_run_stepheight;
}
}
else
{
@ -576,12 +591,9 @@ void trv_input_read(void)
g_trv_input.fwdrate = trv_scale_input_y(&sample);
/* If we are moving fast, we can just higher */
/* If we are moving faster than a walk, we can jump higher */
if (g_trv_input.fwdrate <= -2 * STEP_DISTANCE ||
g_trv_input.fwdrate >= 2 * STEP_DISTANCE ||
g_trv_input.leftrate <= -2 * STEP_DISTANCE ||
g_trv_input.leftrate >= 2 * STEP_DISTANCE)
if (g_trv_input.fwdrate < -WALK_RATE || g_trv_input.fwdrate > WALK_RATE)
{
g_trv_input.stepheight = g_run_stepheight;
}
@ -615,7 +627,7 @@ void trv_input_read(void)
/* Run faster/step higher */
g_trv_joystick.stepheight = g_run_stepheight;
move_rate = 2 * STEP_DISTANCE;
move_rate = RUN_RATE;
turn_rate = ANGLE_9;
}
else
@ -623,7 +635,7 @@ void trv_input_read(void)
/* Normal walking rate and stepping height */
g_trv_joystick.stepheight = g_walk_stepheight;
move_rate = STEP_DISTANCE;
move_rate = WALK_RATE;
turn_rate = ANGLE_6;
}