diff options
Diffstat (limited to 'backends')
| -rw-r--r-- | backends/PalmOS/Src/rumble.cpp | 106 | ||||
| -rw-r--r-- | backends/PalmOS/Src/rumble.h | 9 | 
2 files changed, 115 insertions, 0 deletions
| diff --git a/backends/PalmOS/Src/rumble.cpp b/backends/PalmOS/Src/rumble.cpp new file mode 100644 index 0000000000..c78e5878da --- /dev/null +++ b/backends/PalmOS/Src/rumble.cpp @@ -0,0 +1,106 @@ +#include <PalmOS.h> +#include "globals.h" +#include "vibrate.h" +#include "rumble.h" + +#ifndef DISABLE_TAPWAVE +#include "tapwave.h" + +TwDeviceHandle hRumble; +#endif + +Boolean RumbleExists() { +	Boolean exists = false; +	Err e; + +#ifndef DISABLE_TAPWAVE +	if (OPTIONS_TST(kOptDeviceZodiac)) { +		e = TwDeviceOpen(&hRumble, "vibrator0", "w"); +		if (!e) { +			exists = true; +			TwDeviceClose(hRumble); +		} +		 +	} else +#endif +	{ + +		UInt32 romVersion; + +		e = FtrGet(sysFtrCreator, sysFtrNumROMVersion, &romVersion); +		if (!e) { +			if (romVersion >= sysMakeROMVersion(4,0,0,sysROMStageRelease,0)) { +				Boolean active = false; +				e = HwrVibrateAttributes(0, kHwrVibrateActive, &active); +				exists = (!e) ? true : exists; +			} +		} +	} + +	return exists; +} + +void RumbleRun(Boolean active) { +#ifndef DISABLE_TAPWAVE +	if (OPTIONS_TST(kOptDeviceZodiac)) { +		if (active) { +			UInt8 buf[] = { '\64', '\100' }; +			TwDeviceControl(hRumble, 'play', buf, sizeof(buf)); +		} else { +			TwDeviceControl(hRumble, 'stop', 0, 0); +		} +		 +	} else +#endif +	{ +		UInt32 pattern	= active ? 0xFF000000 : 0x00000000; + +		HwrVibrateAttributes(1, kHwrVibratePattern, &pattern); +		HwrVibrateAttributes(1, kHwrVibrateActive, &active); +	} +} + +Boolean RumbleInit() { +	Boolean done = false; + +#ifndef DISABLE_TAPWAVE +	if (OPTIONS_TST(kOptDeviceZodiac)) { +		Err e = TwDeviceOpen(&hRumble, "vibrator0", "w"); +		done = (!e); + +	} else +#endif +	{ +		if (RumbleExists()) { +			UInt16 cycle	= (SysTicksPerSecond())/2; +			UInt32 pattern	= 0xFF000000; +			UInt16 delay	= 1; +			UInt16 repeat	= 1; + +			HwrVibrateAttributes(1, kHwrVibrateRate, &cycle); +			HwrVibrateAttributes(1, kHwrVibratePattern, &pattern); +			HwrVibrateAttributes(1, kHwrVibrateDelay, &delay); +			HwrVibrateAttributes(1, kHwrVibrateRepeatCount, &repeat); +			 +			done = true; +		} +	} + +	return done; +} + +void RumbleRelease() { +#ifndef DISABLE_TAPWAVE +	if (OPTIONS_TST(kOptDeviceZodiac)) { +		TwDeviceClose(hRumble); +	 +	} else +#endif +	{ +		UInt32 pattern	= 0x00000000; +		Boolean active = false; + +		HwrVibrateAttributes(1, kHwrVibratePattern, &pattern); +		HwrVibrateAttributes(1, kHwrVibrateActive, &active); +	} +} diff --git a/backends/PalmOS/Src/rumble.h b/backends/PalmOS/Src/rumble.h new file mode 100644 index 0000000000..8a067e8521 --- /dev/null +++ b/backends/PalmOS/Src/rumble.h @@ -0,0 +1,9 @@ +#ifndef __RUMBLE_H__ +#define __RUMBLE_H__ + +Boolean	RumbleExists	(); +void	RumbleRun		(Boolean active); +Boolean	RumbleInit		(); +void	RumbleRelease	(); + +#endif
\ No newline at end of file | 
