| | |
| | | SDL_UDEV_Quit(); |
| | | return SDL_SetError("Could not setup haptic <-> udev callback"); |
| | | } |
| | | |
| | | /* Force a scan to build the initial device list */ |
| | | SDL_UDEV_Scan(); |
| | | #endif /* SDL_USE_LIBUDEV */ |
| | | |
| | | return numhaptics; |
| | |
| | | else if (periodic->type == SDL_HAPTIC_SAWTOOTHDOWN) |
| | | dest->u.periodic.waveform = FF_SAW_DOWN; |
| | | dest->u.periodic.period = CLAMP(periodic->period); |
| | | dest->u.periodic.magnitude = periodic->magnitude; |
| | | /* Linux expects 0-65535, so multiply by 2 */ |
| | | dest->u.periodic.magnitude = CLAMP(periodic->magnitude) * 2; |
| | | dest->u.periodic.offset = periodic->offset; |
| | | /* Linux phase is defined in interval "[0x0000, 0x10000[", corresponds with "[0deg, 360deg[" phase shift. */ |
| | | dest->u.periodic.phase = ((Uint32)periodic->phase * 0x10000U) / 36000; |
| | |
| | | dest->trigger.button = 0; |
| | | dest->trigger.interval = 0; |
| | | |
| | | /* Rumble */ |
| | | dest->u.rumble.strong_magnitude = leftright->large_magnitude; |
| | | dest->u.rumble.weak_magnitude = leftright->small_magnitude; |
| | | /* Rumble (Linux expects 0-65535, so multiply by 2) */ |
| | | dest->u.rumble.strong_magnitude = CLAMP(leftright->large_magnitude) * 2; |
| | | dest->u.rumble.weak_magnitude = CLAMP(leftright->small_magnitude) * 2; |
| | | |
| | | break; |
| | | |