diff options
author | aliaspider | 2015-11-04 18:17:04 +0100 |
---|---|---|
committer | aliaspider | 2015-11-04 18:17:04 +0100 |
commit | d2100979fd519b40c61dbdc6808120755513c88a (patch) | |
tree | 44df448bc43815273f6ceb8a8d33aab6291eb80f /src/usbjoy.c | |
parent | 0e70c7f861ed41b86be891882d08cd0fa0530d55 (diff) | |
download | snes9x2002-d2100979fd519b40c61dbdc6808120755513c88a.tar.gz snes9x2002-d2100979fd519b40c61dbdc6808120755513c88a.tar.bz2 snes9x2002-d2100979fd519b40c61dbdc6808120755513c88a.zip |
cleanups
Diffstat (limited to 'src/usbjoy.c')
-rw-r--r-- | src/usbjoy.c | 297 |
1 files changed, 0 insertions, 297 deletions
diff --git a/src/usbjoy.c b/src/usbjoy.c deleted file mode 100644 index 81d1be4..0000000 --- a/src/usbjoy.c +++ /dev/null @@ -1,297 +0,0 @@ -/* Title: USB Joystick library - Version 0.2 - Written by Puck2099 (puck2099@gmail.com), (c) 2006. - <http://www.gp32wip.com> - - If you use this library or a part of it, please, let it know. - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -*/ - -#include <stdlib.h> -#include <stdio.h> /* For the definition of NULL */ -#include <sys/types.h> // For Device open -#include <sys/stat.h> -#include <sys/ioctl.h> -#include <fcntl.h> -#include <unistd.h> // For Device read - -#include <string.h> -#include <limits.h> /* For the definition of PATH_MAX */ -#include <linux/joystick.h> - -#include "usbjoy.h" - - -/* - Function: joy_open - - Opens a USB joystick and fills its information. - - Parameters: - - joynumber - Joystick's identifier (0 reserved for GP2X's builtin Joystick). - - Returns: - - Filled usbjoy structure. - -*/ -struct usbjoy * joy_open (int joynumber) { - int fd, i; - char path [128]; - struct usbjoy * joy = NULL; - - system ("insmod joydev"); // Loads joydev module - - if (joynumber == 0) { - } - else if (joynumber > 0) { - sprintf (path, "/dev/input/js%d", joynumber-1); - fd = open(path, O_RDONLY, 0); - if (fd > 0) { - joy = (struct usbjoy *) malloc(sizeof(struct usbjoy)); - - // Joystick's file descriptor - joy->fd = fd; - - // Set the joystick to non-blocking read mode - fcntl(joy->fd, F_SETFL, O_NONBLOCK); - - // Joystick's name - ioctl(joy->fd, JSIOCGNAME(128*sizeof(char)), joy->name); - - // Joystick's device - sprintf (joy->device, path); - - // Joystick's buttons - ioctl(joy->fd, JSIOCGBUTTONS, &joy->numbuttons); - - // Joystick's axes - ioctl(joy->fd, JSIOCGAXES, &joy->numaxes); - - // Clean buttons and axes - for (i=0; i<32; i++) joy->statebuttons[i] = 0; - for (i=0; i<4; i++) joy->stateaxes[i] = 0; - } - else { - printf ("ERROR: No Joystick found\n"); - } - } - return joy; -} - -/* - Function: joy_name - - Returns Joystick's name. - - Parameters: - - joy - Selected joystick. - - Returns: - - Joystick's name or NULL if <usbjoy> struct is empty. -*/ -char * joy_name (struct usbjoy * joy) { - if (joy != NULL) return joy->name; - else return NULL; -} - - -/* - Function: joy_device - - Returns Joystick's device. - - Parameters: - - joy - Selected joystick. - - Returns: - - Joystick's device or NULL if <usbjoy> struct is empty. -*/ -char * joy_device (struct usbjoy * joy) { - if (joy != NULL) return joy->device; - else return NULL; -} - - -/* - Function: joy_buttons - - Returns Joystick's buttons number. - - Parameters: - - joy - Selected joystick. - - Returns: - - Joystick's buttons or 0 if <usbjoy> struct is empty. -*/ -int joy_buttons (struct usbjoy * joy) { - if (joy != NULL) return joy->numbuttons; - else return 0; -} - - -/* - Function: joy_axes - - Returns Joystick's axes number. - - Parameters: - - joy - Selected joystick. - - Returns: - - Joystick's axes or 0 if <usbjoy> struct is empty. -*/ -int joy_axes (struct usbjoy * joy) { - if (joy != NULL) return joy->numaxes; - else return 0; -} - - -/* - Function: joy_update - - Updates Joystick's internal information (<statebuttons> and <stateaxes> fields). - - Parameters: - - joy - Selected joystick. - - Returns: - - 0 - No events registered (no need to update). - 1 - Events registered (a button or axe has been pushed). - -1 - Error: <usbjoy> struct is empty. -*/ -int joy_update (struct usbjoy * joy) { - struct js_event events[0xff]; - int i, len; - int event = 0; - if (joy != NULL) { - if ((len=read(joy->fd, events, (sizeof events))) >0) { - len /= sizeof(events[0]); - for ( i=0; i<len; ++i ) { - switch (events[i].type & ~JS_EVENT_INIT) { - case JS_EVENT_AXIS: - if (events[i].number == 0) { - joy->stateaxes[JOYLEFT] = joy->stateaxes[JOYRIGHT] = 0; - if (events[i].value < 0) joy->stateaxes[JOYLEFT] = 1; - else if (events[i].value > 0) joy->stateaxes[JOYRIGHT] = 1; - } - else if (events[i].number == 1) { - joy->stateaxes[JOYUP] = joy->stateaxes[JOYDOWN] = 0; - if (events[i].value < 0) joy->stateaxes[JOYUP] = 1; - else if (events[i].value > 0) joy->stateaxes[JOYDOWN] = 1; - } - event = 1; - break; - case JS_EVENT_BUTTON: - joy->statebuttons[events[i].number] = events[i].value; - event = 1; - break; - default: - break; - } - } - } - } - else { - event = -1; - } - return event; -} - - -/* - Function: joy_getbutton - - Returns Joystick's button information. - - Parameters: - - button - Button which value you want to know (from 0 to 31). - joy - Selected joystick. - - Returns: - - 0 - Button NOT pushed. - 1 - Button pushed. - -1 - Error: <usbjoy> struct is empty. -*/ -int joy_getbutton (int button, struct usbjoy * joy) { - if (joy != NULL) { - if (button < joy_buttons(joy)) return joy->statebuttons[button]; - else return 0; - } - else return -1; -} - - -/* - Function: joy_getaxe - - Returns Joystick's axes information. - - Parameters: - - axe - Axe which value you want to know (see <Axes values>). - joy - Selected joystick. - - Returns: - - 0 - Direction NOT pushed. - 1 - Direction pushed. - -1 - Error: <usbjoy> struct is empty. -*/ -int joy_getaxe (int axe, struct usbjoy * joy) { - if (joy != NULL) { - if (axe < 4) return joy->stateaxes[axe]; - else return 0; - } - else return -1; -} - - -/* - Function: joy_close - - Closes selected joystick's file descriptor and detroys it's fields. - - Parameters: - - joy - Selected joystick. - - Returns: - - 0 - Joystick successfully closed. - -1 - Error: <usbjoy> struct is empty. -*/ -int joy_close (struct usbjoy * joy) { - if (joy != NULL) { - close (joy->fd); - free (joy); - return 0; - } - else return -1; -} |