All pastes #1343720 Raw Edit

Mine

public text v1 · immutable
#1343720 ·published 2009-02-21 15:28 UTC
rendered paste body
#include <stdlib.h>
#include <assert.h>

#include "../../include/SDL.h"
#include "../../include/SDL_haptic.h"


int test_haptic( SDL_Joystick *joystick ) {
   SDL_Haptic *haptic;
   SDL_HapticEffect effect;
   int effect_id;

//	assert(joystick != NULL);

   // Open the device
   //haptic = SDL_HapticOpenFromJoystick( joystick );
   haptic = SDL_HapticOpen( 0 );
   if (haptic == NULL) return -1; // Most likely joystick isn't haptic

   // See if it can do sine waves
   if ((SDL_HapticQuery(haptic) & SDL_HAPTIC_SINE)==0) {
      SDL_HapticClose(haptic); // No sine effect
      return -2;
   }

   // Create the effect
   memset( &effect, 0, sizeof(SDL_HapticEffect) ); // 0 is safe default
   effect.type = SDL_HAPTIC_SINE;
   effect.periodic.direction.type = SDL_HAPTIC_POLAR; // Polar coordinates
   effect.periodic.direction.dir[0] = 18000; // Force comes from south
   effect.periodic.period = 1000; // 1000 ms
   effect.periodic.magnitude = 20000; // 20000/32767 strength
   effect.periodic.length = 5000; // 5 seconds long
   effect.periodic.attack_length = 1000; // Takes 1 second to get max strength
   effect.periodic.fade_length = 1000; // Takes 1 second to fade away

   // Upload the effect
   effect_id = SDL_HapticNewEffect( haptic, &effect );

   // Test the effect
   SDL_HapticRunEffect( haptic, effect_id, 1 );
   SDL_Delay( 5000); // Wait for the effect to finish

   // We destroy the effect, although closing the device also does this
   SDL_HapticDestroyEffect( haptic, effect_id );

   // Close the device
   SDL_HapticClose(haptic);

   return 0; // Success
}


int main(void)
{
	SDL_Init(SDL_INIT_JOYSTICK|SDL_INIT_HAPTIC);
	printf("N: %d\n", SDL_NumJoysticks());
	printf("JS: %s\n", SDL_JoystickName(0));
	SDL_Joystick *js;// = SDL_JoystickOpen(0);
	int rval = test_haptic(js);
	if (rval == -1)
		printf("Not haptic\n");
	else if (rval == -2)
		printf("No sine\n");
	printf("ERROR: %s\n", SDL_GetError());
	return EXIT_SUCCESS;
}