diff options
author | notaz | 2012-03-01 23:34:16 +0200 |
---|---|---|
committer | notaz | 2012-03-01 23:34:16 +0200 |
commit | 3a40ff141abca7d9c5a1e3f47e41c26d9bc3b3ff (patch) | |
tree | c6fcccf114319e52684848ff59f243b3a22a22dc /frontend/plat_pollux.c | |
parent | 76720f7ff171a7d13d010d7f0af1ae546f781c9c (diff) | |
download | pcsx_rearmed-3a40ff141abca7d9c5a1e3f47e41c26d9bc3b3ff.tar.gz pcsx_rearmed-3a40ff141abca7d9c5a1e3f47e41c26d9bc3b3ff.tar.bz2 pcsx_rearmed-3a40ff141abca7d9c5a1e3f47e41c26d9bc3b3ff.zip |
improve vibration support for Caanoo
..maybe, not tested much.
Diffstat (limited to 'frontend/plat_pollux.c')
-rw-r--r-- | frontend/plat_pollux.c | 37 |
1 files changed, 26 insertions, 11 deletions
diff --git a/frontend/plat_pollux.c b/frontend/plat_pollux.c index d402e84..c03173e 100644 --- a/frontend/plat_pollux.c +++ b/frontend/plat_pollux.c @@ -689,21 +689,22 @@ struct haptic_data { #define HAPTIC_SET_VIB_LEVEL _IOW(HAPTIC_IOCTL_MAGIC, 9, unsigned int) static int hapticdev = -1; -static struct haptic_data haptic_seq; +static struct haptic_data haptic_seq[2]; -static int haptic_init(void) +static int haptic_read(const char *fname, struct haptic_data *data) { int i, ret, v1, v2; char buf[128], *p; FILE *f; - f = fopen("haptic.txt", "r"); + f = fopen(fname, "r"); if (f == NULL) { - perror("fopen(haptic.txt)"); + fprintf("fopen(%s)", fname); + perror(""); return -1; } - for (i = 0; i < sizeof(haptic_seq.actions) / sizeof(haptic_seq.actions[0]); ) { + for (i = 0; i < sizeof(data->actions) / sizeof(data->actions[0]); ) { p = fgets(buf, sizeof(buf), f); if (p == NULL) break; @@ -718,17 +719,31 @@ static int haptic_init(void) continue; } - haptic_seq.actions[i].time = v1; - haptic_seq.actions[i].strength = v2; + data->actions[i].time = v1; + data->actions[i].strength = v2; i++; } fclose(f); if (i == 0) { - fprintf(stderr, "bad haptic.txt\n"); + fprintf(stderr, "bad haptic file: %s\n", fname); return -1; } - haptic_seq.count = i; + data->count = i; + + return 0; +} + +static int haptic_init(void) +{ + int ret, i; + + ret = haptic_read("haptic_w.cfg", &haptic_seq[0]); + if (ret != 0) + return -1; + ret = haptic_read("haptic_s.cfg", &haptic_seq[1]); + if (ret != 0) + return -1; hapticdev = open("/dev/isa1200", O_RDWR | O_NONBLOCK); if (hapticdev == -1) { @@ -750,7 +765,7 @@ static int haptic_init(void) return 0; } -void plat_trigger_vibrate(void) +void plat_trigger_vibrate(int is_strong) { int ret; @@ -764,7 +779,7 @@ void plat_trigger_vibrate(void) } } - ioctl(hapticdev, HAPTIC_PLAY_PATTERN, &haptic_seq); + ioctl(hapticdev, HAPTIC_PLAY_PATTERN, &haptic_seq[!!is_strong]); } /* Wiz stuff */ |