|
@@ -436,6 +436,12 @@ public:
|
|
|
g_JVM->AttachCurrentThread( &env, NULL );
|
|
|
pthread_setspecific( g_ThreadKey, (void*)env );
|
|
|
|
|
|
+ if ( !g_HIDDeviceManagerCallbackHandler )
|
|
|
+ {
|
|
|
+ LOGV( "Device open without callback handler" );
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
m_bIsWaitingForOpen = false;
|
|
|
m_bOpenResult = env->CallBooleanMethod( g_HIDDeviceManagerCallbackHandler, g_midHIDDeviceManagerOpen, m_nId );
|
|
|
ExceptionCheck( env, "BOpen" );
|
|
@@ -545,11 +551,18 @@ public:
|
|
|
g_JVM->AttachCurrentThread( &env, NULL );
|
|
|
pthread_setspecific( g_ThreadKey, (void*)env );
|
|
|
|
|
|
- jbyteArray pBuf = NewByteArray( env, pData, nDataLen );
|
|
|
- int nRet = env->CallIntMethod( g_HIDDeviceManagerCallbackHandler, g_midHIDDeviceManagerSendOutputReport, m_nId, pBuf );
|
|
|
- ExceptionCheck( env, "SendOutputReport" );
|
|
|
-
|
|
|
- env->DeleteLocalRef( pBuf );
|
|
|
+ int nRet = -1;
|
|
|
+ if ( g_HIDDeviceManagerCallbackHandler )
|
|
|
+ {
|
|
|
+ jbyteArray pBuf = NewByteArray( env, pData, nDataLen );
|
|
|
+ nRet = env->CallIntMethod( g_HIDDeviceManagerCallbackHandler, g_midHIDDeviceManagerSendOutputReport, m_nId, pBuf );
|
|
|
+ ExceptionCheck( env, "SendOutputReport" );
|
|
|
+ env->DeleteLocalRef( pBuf );
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ LOGV( "SendOutputReport without callback handler" );
|
|
|
+ }
|
|
|
return nRet;
|
|
|
}
|
|
|
|
|
@@ -560,10 +573,18 @@ public:
|
|
|
g_JVM->AttachCurrentThread( &env, NULL );
|
|
|
pthread_setspecific( g_ThreadKey, (void*)env );
|
|
|
|
|
|
- jbyteArray pBuf = NewByteArray( env, pData, nDataLen );
|
|
|
- int nRet = env->CallIntMethod( g_HIDDeviceManagerCallbackHandler, g_midHIDDeviceManagerSendFeatureReport, m_nId, pBuf );
|
|
|
- ExceptionCheck( env, "SendFeatureReport" );
|
|
|
- env->DeleteLocalRef( pBuf );
|
|
|
+ int nRet = -1;
|
|
|
+ if ( g_HIDDeviceManagerCallbackHandler )
|
|
|
+ {
|
|
|
+ jbyteArray pBuf = NewByteArray( env, pData, nDataLen );
|
|
|
+ nRet = env->CallIntMethod( g_HIDDeviceManagerCallbackHandler, g_midHIDDeviceManagerSendFeatureReport, m_nId, pBuf );
|
|
|
+ ExceptionCheck( env, "SendFeatureReport" );
|
|
|
+ env->DeleteLocalRef( pBuf );
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ LOGV( "SendFeatureReport without callback handler" );
|
|
|
+ }
|
|
|
return nRet;
|
|
|
}
|
|
|
|
|
@@ -587,6 +608,12 @@ public:
|
|
|
g_JVM->AttachCurrentThread( &env, NULL );
|
|
|
pthread_setspecific( g_ThreadKey, (void*)env );
|
|
|
|
|
|
+ if ( !g_HIDDeviceManagerCallbackHandler )
|
|
|
+ {
|
|
|
+ LOGV( "GetFeatureReport without callback handler" );
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
{
|
|
|
hid_mutex_guard cvl( &m_cvLock );
|
|
|
if ( m_bIsWaitingForFeatureReport )
|
|
@@ -657,8 +684,11 @@ public:
|
|
|
g_JVM->AttachCurrentThread( &env, NULL );
|
|
|
pthread_setspecific( g_ThreadKey, (void*)env );
|
|
|
|
|
|
- env->CallVoidMethod( g_HIDDeviceManagerCallbackHandler, g_midHIDDeviceManagerClose, m_nId );
|
|
|
- ExceptionCheck( env, "Close" );
|
|
|
+ if ( g_HIDDeviceManagerCallbackHandler )
|
|
|
+ {
|
|
|
+ env->CallVoidMethod( g_HIDDeviceManagerCallbackHandler, g_midHIDDeviceManagerClose, m_nId );
|
|
|
+ ExceptionCheck( env, "Close" );
|
|
|
+ }
|
|
|
|
|
|
hid_mutex_guard dataLock( &m_dataLock );
|
|
|
m_vecData.clear();
|