diff --git a/app/src/main/cpp/MicroPhoto.cpp b/app/src/main/cpp/MicroPhoto.cpp index a95bbb52..56d070c8 100644 --- a/app/src/main/cpp/MicroPhoto.cpp +++ b/app/src/main/cpp/MicroPhoto.cpp @@ -533,7 +533,7 @@ extern "C" JNIEXPORT jboolean JNICALL Java_com_xypower_mpapp_MicroPhotoService_sendHeartbeat( JNIEnv* env, jobject pThis, - jlong handler, jint signalLevel) { + jlong handler, jint signalLevel, jboolean scheduled) { CTerminal* pTerminal = reinterpret_cast(handler); if (pTerminal == NULL) @@ -547,7 +547,7 @@ Java_com_xypower_mpapp_MicroPhotoService_sendHeartbeat( device->UpdateSignalLevel(signalLevel); } - pTerminal->SendHeartbeat(); + pTerminal->SendHeartbeat(scheduled != JNI_FALSE); #ifdef OUTPUT_DBG_INFO #if 0 @@ -1536,3 +1536,41 @@ Java_com_xypower_mpapp_MicroPhotoService_notifyTimeUpdated( }); t.detach(); } + +extern "C" +JNIEXPORT jboolean JNICALL +Java_com_xypower_mpapp_MicroPhotoService_sendBasicInfo(JNIEnv *env, jobject thiz, jlong handler) { + // TODO: implement sendBasicInfo() + CTerminal* pTerminal = reinterpret_cast(handler); + if (pTerminal == NULL) + { + return JNI_FALSE; + } + pTerminal->SendBasicInfo(); + return JNI_TRUE; +} +extern "C" +JNIEXPORT jboolean JNICALL +Java_com_xypower_mpapp_MicroPhotoService_sendWorkStatus(JNIEnv *env, jobject thiz, jlong handler) { + // TODO: implement sendWorkStatus() + CTerminal* pTerminal = reinterpret_cast(handler); + if (pTerminal == NULL) + { + return JNI_FALSE; + } + pTerminal->SendWorkStatus(); + return JNI_TRUE; +} +extern "C" +JNIEXPORT jboolean JNICALL +Java_com_xypower_mpapp_MicroPhotoService_sendFault(JNIEnv *env, jobject thiz, jlong handler, jstring faultCode, jstring faultInfo) { + // TODO: implement sendFault() + CTerminal* pTerminal = reinterpret_cast(handler); + if (pTerminal == NULL) + { + return JNI_FALSE; + } + std::string faultInfoStr = jstring2string(env, faultInfo); + pTerminal->SendFaultInfo(faultInfoStr); + return JNI_TRUE; +} \ No newline at end of file diff --git a/app/src/main/java/com/xypower/mpapp/MicroPhotoService.java b/app/src/main/java/com/xypower/mpapp/MicroPhotoService.java index 07108a17..bc160925 100644 --- a/app/src/main/java/com/xypower/mpapp/MicroPhotoService.java +++ b/app/src/main/java/com/xypower/mpapp/MicroPhotoService.java @@ -502,7 +502,7 @@ public class MicroPhotoService extends Service { infoLog("HB Timer Fired ACTION=" + action + " ExpTS=" + Long.toString(expectedHbTime)); Runnable runnable = new Runnable() { public void run() { - mService.sendHeartbeat(mService.mNativeHandle, mService.getSignalLevel()); + mService.sendHeartbeat(mService.mNativeHandle, mService.getSignalLevel(), true); } }; Thread th = new Thread(runnable); @@ -567,7 +567,7 @@ public class MicroPhotoService extends Service { infoLog("HB Timer Fired ACTION=" + action + " ExpTS=" + Long.toString(expectedHbTime)); Runnable runnable = new Runnable() { public void run() { - mService.sendHeartbeat(mService.mNativeHandle, mService.getSignalLevel()); + mService.sendHeartbeat(mService.mNativeHandle, mService.getSignalLevel(), true); } }; Thread th = new Thread(runnable); @@ -623,8 +623,19 @@ public class MicroPhotoService extends Service { } mService.updateCaptureSchedule(startTime + 1); } else if (TextUtils.equals(ACTION_HEARTBEAT_MANUALLY, action)) { - Log.i(TAG, "HB Timer Fired ACTION=" + action); - mService.sendHeartbeat(mService.mNativeHandle, mService.getSignalLevel()); + String actionType = intent.getStringExtra("type"); + if (TextUtils.isEmpty(actionType) || TextUtils.equals(actionType, "hb")) { + Log.i(TAG, "HB Timer Fired ACTION=" + action); + mService.sendHeartbeat(mService.mNativeHandle, mService.getSignalLevel(), false); + } else if (TextUtils.equals(actionType, "basicInfo")) { + mService.sendBasicInfo(mService.mNativeHandle); + } else if (TextUtils.equals(actionType, "workStatus")) { + mService.sendWorkStatus(mService.mNativeHandle); + } else if (TextUtils.equals(actionType, "fault")) { + String faultCode = intent.getStringExtra("faultCode"); + String faultInfo = intent.getStringExtra("faultInfo"); + mService.sendFault(mService.mNativeHandle, faultCode, faultInfo); + } } else if (TextUtils.equals(ACTION_TAKE_PHOTO_MANUALLY, action)) { int channel = intent.getIntExtra(EXTRA_PARAM_CHANNEL, 0); int preset = intent.getIntExtra(EXTRA_PARAM_PRESET, 0xFF); @@ -1962,7 +1973,10 @@ cellSignalStrengthGsm.getDbm(); protected native void notifyTimeUpdated(long handler); - protected native boolean sendHeartbeat(long handler, int signalLevel); + protected native boolean sendHeartbeat(long handler, int signalLevel, boolean scheduled); + protected native boolean sendBasicInfo(long handler); + protected native boolean sendWorkStatus(long handler); + protected native boolean sendFault(long handler, String faultCode, String faultInfo); protected native boolean reloadConfigs(long handler); protected native void updatePosition(long handler, double lon, double lat, double radius, long ts); protected native boolean updateEhernet(long handler, long nativeNetworkHandle, boolean available); diff --git a/app/src/main/res/layout-land/activity_main.xml b/app/src/main/res/layout-land/activity_main.xml index 36b42e29..384045f7 100644 --- a/app/src/main/res/layout-land/activity_main.xml +++ b/app/src/main/res/layout-land/activity_main.xml @@ -205,13 +205,13 @@ app:layout_constraintTop_toTopOf="@+id/btnStartServ" />