@ -547,6 +547,7 @@ CPhoneDevice::CPhoneDevice(JavaVM* vm, jobject service, const std::string& appPa
mExecHdrplusMid = env - > GetMethodID ( classService , " execHdrplus " , " (IILjava/lang/String;Ljava/lang/String;)I " ) ;
mSetStaticIpMid = env - > GetMethodID ( classService , " setStaticNetwork " , " (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V " ) ;
mExecuteCmdMid = env - > GetMethodID ( classService , " executeCommand " , " (Ljava/lang/String;)I " ) ;
mConvertDngToPngMid = env - > GetMethodID ( classService , " convertDngToPng " , " (Ljava/lang/String;Ljava/lang/String;)V " ) ;
@ -1672,7 +1673,7 @@ bool CPhoneDevice::TakePhotoWithNetCamera(IDevice::PHOTO_INFO& localPhotoInfo, c
XYLOG ( XYLOG_SEVERITY_INFO , " Ethernet is Available Handle=%llu CH=%u PR=%X PHOTOID=%u " , ( uint64_t ) netHandle , ( uint32_t ) localPhotoInfo . channel , ( uint32_t ) localPhotoInfo . preset , localPhotoInfo . photoId ) ;
}
if ( mBuildTime < 1738166400 )
// if (mBuildTime < 1738166400)
{
// 2025-01-30
SetStaticIp ( ) ;
@ -1687,6 +1688,7 @@ bool CPhoneDevice::TakePhotoWithNetCamera(IDevice::PHOTO_INFO& localPhotoInfo, c
{
XYLOG ( XYLOG_SEVERITY_ERROR , " Vendor(%u) not Supported CH=%u PR=%X PHOTOID=%u " , ( uint32_t ) localPhotoInfo . vendor , ( uint32_t ) localPhotoInfo . channel , ( unsigned int ) localPhotoInfo . preset , localPhotoInfo . photoId ) ;
TakePhotoCb ( 0 , localPhotoInfo , " " , 0 ) ;
ShutdownEthernet ( ) ;
return false ;
}
@ -1736,6 +1738,7 @@ bool CPhoneDevice::TakePhotoWithNetCamera(IDevice::PHOTO_INFO& localPhotoInfo, c
std : : this_thread : : sleep_for ( std : : chrono : : milliseconds ( 1000 ) ) ;
}
ShutdownEthernet ( ) ;
ethernetPowerCtrl . reset ( ) ;
XYLOG ( XYLOG_SEVERITY_DEBUG , " Ethernet Power OFF " ) ;
@ -4349,6 +4352,21 @@ net_handle_t CPhoneDevice::GetEthnetHandle() const
void CPhoneDevice : : SetStaticIp ( const std : : string & iface , const std : : string & ip , const std : : string & netmask , const std : : string & gateway )
{
#if 0
std : : string argv = " root ifconfig " ;
argv + = iface ;
argv + = " down " ;
int resCode = execl ( " /system/xbin/su " , " root " , " ifconfig " , iface . c_str ( ) , " down " , NULL ) ;
argv = " root ifconfig " ;
argv + = iface ;
argv + = " " + ip ;
argv + = " netmask " + netmask ;
argv + = " up " ;
resCode = execl ( " /system/xbin/su " , argv . c_str ( ) , NULL ) ;
// execv("/system/xbin/su", " root ifconfig ", "start", "-a", "android.intent.action.VIEW", "-d", "http://qq.com", "-n", "com.android.browser/.BrowserActivity", NULL);
# else
JNIEnv * env = NULL ;
jboolean ret = JNI_FALSE ;
bool didAttachThread = false ;
@ -4376,6 +4394,46 @@ void CPhoneDevice::SetStaticIp(const std::string& iface, const std::string& ip,
{
m_vm - > DetachCurrentThread ( ) ;
}
# endif
}
int CPhoneDevice : : ExecuteCommand ( const std : : string & cmd )
{
JNIEnv * env = NULL ;
jboolean ret = JNI_FALSE ;
bool didAttachThread = false ;
bool res = GetJniEnv ( m_vm , & env , didAttachThread ) ;
if ( ! res )
{
ALOGE ( " Failed to get JNI Env " ) ;
}
jstring jcmd = env - > NewStringUTF ( cmd . c_str ( ) ) ;
jint resCode = env - > CallIntMethod ( m_javaService , mExecuteCmdMid , jcmd ) ;
env - > DeleteLocalRef ( jcmd ) ;
if ( didAttachThread )
{
m_vm - > DetachCurrentThread ( ) ;
}
return resCode ;
}
void CPhoneDevice : : ShutdownEthernet ( )
{
std : : string cmd = " /system/xbin/su root ifconfig " ;
cmd + = m_network - > iface ;
cmd + = " down " ;
ExecuteCommand ( cmd ) ;
// const char* args[] = {"root", "ifconfig", m_network->iface.c_str(), "down", NULL};
#if 0
int resCode = execv ( " /system/xbin/su " , args ) ;
if ( resCode = = 0 )
{
int aa = 0 ;
}
# endif
}
void CPhoneDevice : : ConvertDngToPng ( const std : : string & dngPath , const std : : string & pngPath )
@ -5159,10 +5217,10 @@ void CPhoneDevice::SetStaticIp()
ipStr = " 0.0.0.0 " ;
}
}
# endif
SetStaticIp ( m_network - > iface , ipStr , m_network - > netmask , m_network - > gateway ) ;
XYLOG ( XYLOG_SEVERITY_INFO , " Set Static IP on %s: %s(%s) " , m_network - > iface . c_str ( ) ,
m_network - > ip . c_str ( ) , ipStr . c_str ( ) ) ;
# endif
}
else
{