diff options
Diffstat (limited to 'backends/PalmOS')
-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 |