summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--plugins/linux/src/native/JoystickDevice.cpp10
-rw-r--r--plugins/linux/src/native/eventInterface.cpp10
-rw-r--r--plugins/linux/src/native/jinput.cpp44
-rw-r--r--plugins/linux/src/native/joystickInterface.cpp14
-rw-r--r--plugins/linux/src/native/logger.h11
5 files changed, 72 insertions, 17 deletions
diff --git a/plugins/linux/src/native/JoystickDevice.cpp b/plugins/linux/src/native/JoystickDevice.cpp
index c20fc22..8f6521f 100644
--- a/plugins/linux/src/native/JoystickDevice.cpp
+++ b/plugins/linux/src/native/JoystickDevice.cpp
@@ -35,10 +35,13 @@
#include <malloc.h>
#include <errno.h>
+#include "logger.h"
+
JoystickDevice::JoystickDevice(char *deviceFileName) {
char tempName[Device::MAX_NAME_LENGTH-1] = "Unknown";
int i;
+ LOG_TRACE("Trying to open %s\n", deviceFileName);
fd = open(deviceFileName, O_RDWR | O_NONBLOCK);
/*if(fd<0) {
char errorMessage[512];
@@ -47,7 +50,9 @@ JoystickDevice::JoystickDevice(char *deviceFileName) {
}*/
if(fd>0){
+ LOG_TRACE("Opened %s, trying to get device name\n", deviceFileName);
if(ioctl(fd, JSIOCGNAME(sizeof(tempName)), tempName) < 0) {
+ LOG_TRACE("Failed to get device name for %s\n", deviceFileName);
char errorMessage[512];
sprintf(errorMessage, "Error reading device %s\n", deviceFileName);
perror(errorMessage);
@@ -59,6 +64,7 @@ JoystickDevice::JoystickDevice(char *deviceFileName) {
char tempNumButtons;
char tempNumAxes;
+ LOG_TRACE("Getting button and axes information for %s\n", deviceFileName);
ioctl (fd, JSIOCGBUTTONS, &tempNumButtons);
ioctl (fd, JSIOCGAXES, &tempNumAxes);
@@ -72,7 +78,11 @@ JoystickDevice::JoystickDevice(char *deviceFileName) {
//absAxesData = (int *)malloc(numAbsAxes * sizeof(int));
absAxesData = new int[numAbsAxes];
+ LOG_TRACE("Initialisation of %s completed\n", deviceFileName);
inited = 1;
+ } else {
+ LOG_TRACE("Failed to open device %s\n", deviceFileName);
+ inited = 0;
}
}
diff --git a/plugins/linux/src/native/eventInterface.cpp b/plugins/linux/src/native/eventInterface.cpp
index 654a0bd..2c41cbd 100644
--- a/plugins/linux/src/native/eventInterface.cpp
+++ b/plugins/linux/src/native/eventInterface.cpp
@@ -81,15 +81,19 @@ int evInit() {
}
if ((fd = open(deviceFileNames[0], O_RDONLY)) <0) {
- return -1;
+ evNumDevices=0;
+ evInited=1;
+ return 0;
}
if (ioctl(fd, EVIOCGVERSION, &eventInterfaceVersion)) {
close(fd);
- return -1;
+ evNumDevices=0;
+ evInited=1;
+ return 0;
}
- close(fd);
+ if(fd>=0) {close(fd);}
Device *tempDeviceList[numDeviceFiles];
diff --git a/plugins/linux/src/native/jinput.cpp b/plugins/linux/src/native/jinput.cpp
index 3ce6c6a..5f78535 100644
--- a/plugins/linux/src/native/jinput.cpp
+++ b/plugins/linux/src/native/jinput.cpp
@@ -39,6 +39,7 @@
#include "MixedDevice.h"
#include "eventInterface.h"
#include "joystickInterface.h"
+#include "logger.h"
Device **jinputDeviceList;
int jinputNumDevices;
@@ -51,22 +52,28 @@ int jinputNumDevices;
JNIEXPORT jint JNICALL Java_net_java_games_input_LinuxEnvironmentPlugin_init
(JNIEnv *, jobject) {
+ LOG_TRACE("Initing event interface\n");
if(evInit()!=0) {
- fprintf(stderr, "Failed to init native event interface\n");
- return -1;
+ fprintf(stderr, "Could not find any working event devices\n");
+// return -1;
}
+ LOG_TRACE("Initing joystick interface\n");
if(jsInit()!=0) {
- fprintf(stderr, "Failed to init native joystick interface\n");
- return -1;
+ fprintf(stderr, "Could not find any working joystick devices\n");
+// return -1;
}
+ LOG_TRACE("Getting the number of event devices\n");
int numEventDevices = evGetNumberDevices();
EventDevice *eventDevices[numEventDevices];
+ LOG_TRACE("Getting %d event devices\n", numEventDevices);
evGetDevices((Device **)eventDevices);
+ LOG_TRACE("Getting the number of joystick devices\n");
int numJoysticks = jsGetNumberDevices();
JoystickDevice *jsDevices[numJoysticks];
+ LOG_TRACE("Getting %d joystick devices\n", numJoysticks);
jsGetDevices((Device **)jsDevices);
@@ -80,12 +87,14 @@ JNIEXPORT jint JNICALL Java_net_java_games_input_LinuxEnvironmentPlugin_init
for(j=joystickPtr;j<numJoysticks;j++) {
JoystickDevice *jsDevice = jsDevices[j];
+ LOG_TRACE("Getting device information for event device %d and joystick %d\n", i, j);
if((jsDevice->getNumberButtons() == eventDevice->getNumberButtons()) && (jsDevice->getNumberAbsAxes() == (eventDevice->getNumberAbsAxes() + eventDevice->getNumberRelAxes()))) {
const char *jsName = jsDevice->getName();
const char *eventDeviceName = eventDevice->getName();
if(strcmp(jsName, eventDeviceName) == 0) {
// The current event device is the curre joystick device too
+ LOG_TRACE("Creating a mixed device with id %d, combining event device %d and joystick device %d\n", jinputNumDevices, i, j);
jinputDeviceList[jinputNumDevices] = new MixedDevice(jsDevice, eventDevice);
jinputNumDevices++;
joystickPtr = j;
@@ -93,12 +102,12 @@ JNIEXPORT jint JNICALL Java_net_java_games_input_LinuxEnvironmentPlugin_init
}
}
/*if(jinputNumDevices == deviceCountCache) {
- //fprintf(stderr, "event device \"%s\" doesn't match js \"%s\"\n", eventDevice->getName(), jsDevice->getName());
- //fprintf(stderr, "event device has %d rel axes, %d abs axis and %d buttons\n", eventDevice->getNumberRelAxes(), eventDevice->getNumberAbsAxes(), eventDevice->getNumberButtons());
- //fprintf(stderr, "js device has %d axes and %d buttons\n", jsDevice->getNumberAbsAxes(), jsDevice->getNumberButtons());
+ fprintf(stderr, "event device \"%s\" doesn't match js \"%s\"\n", eventDevice->getName(), jsDevice->getName());
+ fprintf(stderr, "event device has %d rel axes, %d abs axis and %d buttons\n", eventDevice->getNumberRelAxes(), eventDevice->getNumberAbsAxes(), eventDevice->getNumberButtons());
+ fprintf(stderr, "js device has %d axes and %d buttons\n", jsDevice->getNumberAbsAxes(), jsDevice->getNumberButtons());
} else {
- //fprintf(stderr, "event device %s did match js %s\n", eventDevice->getName(), jsDevice->getName());
- } */
+ fprintf(stderr, "event device %s did match js %s\n", eventDevice->getName(), jsDevice->getName());
+ }*/
}
@@ -122,6 +131,7 @@ JNIEXPORT jint JNICALL Java_net_java_games_input_LinuxEnvironmentPlugin_init
JNIEXPORT jstring JNICALL Java_net_java_games_input_LinuxEnvironmentPlugin_getDeviceName
(JNIEnv *env, jobject, jint deviceID) {
+ LOG_TRACE("Gettign device name for jinput device %d\n", deviceID);
return env->NewStringUTF(jinputDeviceList[deviceID]->getName());
}
@@ -133,6 +143,7 @@ JNIEXPORT jstring JNICALL Java_net_java_games_input_LinuxEnvironmentPlugin_getDe
JNIEXPORT jint JNICALL Java_net_java_games_input_LinuxEnvironmentPlugin_getNumAbsAxes
(JNIEnv *env, jobject, jint deviceID) {
+ LOG_TRACE("Gettign number of absolute axes for jinput device %d\n", deviceID);
return jinputDeviceList[deviceID]->getNumberAbsAxes();
}
@@ -144,6 +155,7 @@ JNIEXPORT jint JNICALL Java_net_java_games_input_LinuxEnvironmentPlugin_getNumAb
JNIEXPORT jint JNICALL Java_net_java_games_input_LinuxEnvironmentPlugin_getNumRelAxes
(JNIEnv *env, jobject, jint deviceID) {
+ LOG_TRACE("Gettign number of relative axes for jinput device %d\n", deviceID);
return jinputDeviceList[deviceID]->getNumberRelAxes();
}
@@ -155,6 +167,7 @@ JNIEXPORT jint JNICALL Java_net_java_games_input_LinuxEnvironmentPlugin_getNumRe
JNIEXPORT jint JNICALL Java_net_java_games_input_LinuxEnvironmentPlugin_getNumButtons
(JNIEnv *, jobject, jint deviceID) {
+ LOG_TRACE("Gettign number of buttons for jinput device %d\n", deviceID);
return jinputDeviceList[deviceID]->getNumberButtons();
}
@@ -179,6 +192,7 @@ JNIEXPORT void JNICALL Java_net_java_games_input_LinuxDevice_getNativeSupportedA
jint *axisReturns = env->GetIntArrayElements(axesData, 0);
+ LOG_TRACE("Getting suported absolute axes for jinput device %d\n", deviceID);
jinputDeviceList[deviceID]->getSupportedAbsAxes(axisReturns);
env->ReleaseIntArrayElements(axesData, axisReturns, 0);
@@ -194,6 +208,7 @@ JNIEXPORT void JNICALL Java_net_java_games_input_LinuxDevice_getNativeSupportedR
jint *axisReturns = env->GetIntArrayElements(axesData, 0);
+ LOG_TRACE("Getting suported relative axes for jinput device %d\n", deviceID);
jinputDeviceList[deviceID]->getSupportedRelAxes(axisReturns);
env->ReleaseIntArrayElements(axesData, axisReturns, 0);
@@ -209,6 +224,7 @@ JNIEXPORT void JNICALL Java_net_java_games_input_LinuxDevice_getNativeSupportedB
jint *buttonDataElements = env->GetIntArrayElements(buttonData, 0);
+ LOG_TRACE("Getting suported buttons for jinput device %d\n", deviceID);
jinputDeviceList[deviceID]->getSupportedButtons(buttonDataElements);
env->ReleaseIntArrayElements(buttonData, buttonDataElements, 0);
@@ -226,7 +242,9 @@ JNIEXPORT jint JNICALL Java_net_java_games_input_LinuxDevice_nativePoll
jint *relAxesElements = env->GetIntArrayElements(relAxes, 0);
jint *absAxesElements = env->GetIntArrayElements(absAxes, 0);
+ LOG_POLL_TRACE("Polling jinput device %d\n", deviceID);
int retval = jinputDeviceList[deviceID]->poll();
+ LOG_POLL_TRACE("Getting polled data for device %d\n", deviceID);
jinputDeviceList[deviceID]->getPolledData(relAxesElements, absAxesElements, buttonElements);
env->ReleaseIntArrayElements(buttons, buttonElements, 0);
@@ -244,6 +262,7 @@ JNIEXPORT jint JNICALL Java_net_java_games_input_LinuxDevice_nativePoll
JNIEXPORT jint JNICALL Java_net_java_games_input_LinuxDevice_getNativeAbsAxisFuzz
(JNIEnv *, jobject, jint deviceID, jint axisID) {
+ LOG_TRACE("Getting fuzz data for axis %d on device %d\n", axisID, deviceID);
return jinputDeviceList[deviceID]->getAbsAxisFuzz(axisID);
}
@@ -255,6 +274,7 @@ JNIEXPORT jint JNICALL Java_net_java_games_input_LinuxDevice_getNativeAbsAxisFuz
JNIEXPORT jint JNICALL Java_net_java_games_input_LinuxDevice_getNativeAbsAxisMaximum
(JNIEnv *, jobject, jint deviceID, jint axisID) {
+ LOG_TRACE("Getting absolute axes maximum value data for axis %d on device %d\n", axisID, deviceID);
return jinputDeviceList[deviceID]->getAbsAxisMaximum(axisID);
}
@@ -267,6 +287,7 @@ JNIEXPORT jint JNICALL Java_net_java_games_input_LinuxDevice_getNativeAbsAxisMax
JNIEXPORT jint JNICALL Java_net_java_games_input_LinuxDevice_getNativeAbsAxisMinimum
(JNIEnv *, jobject, jint deviceID, jint axisID) {
+ LOG_TRACE("Getting absolute axes minimum value data for axis %d on device %d\n", axisID, deviceID);
return jinputDeviceList[deviceID]->getAbsAxisMinimum(axisID);
}
@@ -278,6 +299,7 @@ JNIEXPORT jint JNICALL Java_net_java_games_input_LinuxDevice_getNativeAbsAxisMin
JNIEXPORT jint JNICALL Java_net_java_games_input_LinuxDevice_getNativePortType
(JNIEnv *, jobject, jint deviceID) {
+ LOG_TRACE("Getting bus type for device %d\n", deviceID);
jinputDeviceList[deviceID]->getBusType();
}
@@ -294,6 +316,7 @@ JNIEXPORT void JNICALL Java_net_java_games_input_LinuxKeyboard_getNativeSupporte
jint *buttonDataElements = env->GetIntArrayElements(buttons, 0);
+ LOG_TRACE("Gettign number of buttons for jinput keyboard device %d\n", deviceID);
jinputDeviceList[deviceID]->getSupportedButtons(buttonDataElements);
env->ReleaseIntArrayElements(buttons, buttonDataElements, 0);
@@ -311,7 +334,9 @@ JNIEXPORT jint JNICALL Java_net_java_games_input_LinuxKeyboard_nativePoll
jint *relAxesElements = env->GetIntArrayElements(relAxes, 0);
jint *absAxesElements = env->GetIntArrayElements(absAxes, 0);
+ LOG_POLL_TRACE("Polling jinput keyboard device %d\n", deviceID);
int retval = jinputDeviceList[deviceID]->poll();
+ LOG_POLL_TRACE("Getting polled data for keyboard device %d\n", deviceID);
jinputDeviceList[deviceID]->getPolledData(relAxesElements, absAxesElements, buttonElements);
env->ReleaseIntArrayElements(buttons, buttonElements, 0);
@@ -329,5 +354,6 @@ JNIEXPORT jint JNICALL Java_net_java_games_input_LinuxKeyboard_nativePoll
JNIEXPORT jint JNICALL Java_net_java_games_input_LinuxKeyboard_getNativePortType
(JNIEnv *, jobject, jint deviceID) {
+ LOG_TRACE("Getting bus type for keyboard device %d\n", deviceID);
jinputDeviceList[deviceID]->getBusType();
}
diff --git a/plugins/linux/src/native/joystickInterface.cpp b/plugins/linux/src/native/joystickInterface.cpp
index bfa4231..dc4f274 100644
--- a/plugins/linux/src/native/joystickInterface.cpp
+++ b/plugins/linux/src/native/joystickInterface.cpp
@@ -81,15 +81,19 @@ int jsInit() {
}
if ((fd = open(deviceFileNames[0], O_RDONLY)) <0) {
- return -1;
+ jsNumDevices = 0;
+ jsInited=1;
+ return 0;
}
if (ioctl(fd, JSIOCGVERSION, &joystickInterfaceVersion)) {
close(fd);
- return -1;
+ jsNumDevices = 0;
+ jsInited=1;
+ return 0;
}
- close(fd);
+ if(fd>=0) {close(fd);}
Device *tempDeviceList[numDeviceFiles];
@@ -109,9 +113,9 @@ int jsInit() {
for(i=0;i<jsNumDevices;i++) {
while(tempDeviceList[jsTempDeviceCount] == NULL) {
jsTempDeviceCount++;
- }
+ }
jsDeviceList[i] = tempDeviceList[jsTempDeviceCount];
- //printf("Copied joystick %d to %d\n", jsTempDeviceCount, i);
+ //printf("Copied joystick %d to %d\n", jsTempDeviceCount, i);
jsTempDeviceCount++;
}
diff --git a/plugins/linux/src/native/logger.h b/plugins/linux/src/native/logger.h
new file mode 100644
index 0000000..d832491
--- /dev/null
+++ b/plugins/linux/src/native/logger.h
@@ -0,0 +1,11 @@
+#ifdef LOGTRACE
+#define LOG_TRACE(args...) printf(args)
+#else
+#define LOG_TRACE(args...)
+#endif
+
+#ifdef LOGPOLLTRACE
+#define LOG_POLL_TRACE(args...) LOG_TRACE(args...)
+#else
+#define LOG_POLL_TRACE(args...)
+#endif