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