diff --git a/examples/virtual-device-app/android/App/core/matter/src/main/java/com/matter/virtual/device/app/core/matter/MatterApp.kt b/examples/virtual-device-app/android/App/core/matter/src/main/java/com/matter/virtual/device/app/core/matter/MatterApp.kt index 123679caba3005..19d73cced0f04b 100644 --- a/examples/virtual-device-app/android/App/core/matter/src/main/java/com/matter/virtual/device/app/core/matter/MatterApp.kt +++ b/examples/virtual-device-app/android/App/core/matter/src/main/java/com/matter/virtual/device/app/core/matter/MatterApp.kt @@ -23,8 +23,12 @@ class MatterApp @Inject constructor() { Timber.d("onCommissioningSessionStarted()") } - override fun onCommissioningSessionStopped(errorCode: Int) { - Timber.d("onCommissioningSessionStopped():$errorCode") + override fun onCommissioningSessionEstablishmentError(errorCode: Int) { + Timber.d("onCommissioningSessionEstablishmentError():$errorCode") + } + + override fun onCommissioningSessionStopped() { + Timber.d("onCommissioningSessionStopped()") } override fun onCommissioningWindowOpened() { diff --git a/src/app/server/java/ChipAppServerDelegate.cpp b/src/app/server/java/ChipAppServerDelegate.cpp index 1b00f7ec277870..50d76c63d59423 100644 --- a/src/app/server/java/ChipAppServerDelegate.cpp +++ b/src/app/server/java/ChipAppServerDelegate.cpp @@ -32,7 +32,7 @@ void ChipAppServerDelegate::OnCommissioningSessionEstablishmentStarted() env->CallVoidMethod(mChipAppServerDelegateObject, mOnCommissioningSessionEstablishmentStartedMethod); if (env->ExceptionCheck()) { - ChipLogError(AppServer, "Java exception in OnCommissioningSessionStartedMethod"); + ChipLogError(AppServer, "Java exception in OnCommissioningSessionEstablishmentStartedMethod"); env->ExceptionDescribe(); env->ExceptionClear(); } @@ -55,7 +55,25 @@ void ChipAppServerDelegate::OnCommissioningSessionStarted() } } -void ChipAppServerDelegate::OnCommissioningSessionStopped(CHIP_ERROR err) +void ChipAppServerDelegate::OnCommissioningSessionEstablishmentError(CHIP_ERROR err) +{ + JNIEnv * env = JniReferences::GetInstance().GetEnvForCurrentThread(); + VerifyOrReturn(env != nullptr, ChipLogError(AppServer, "JNIEnv is nullptr")); + VerifyOrReturn(mOnCommissioningSessionEstablishmentErrorMethod != nullptr, + ChipLogError(AppServer, "mOnCommissioningSessionEstablishmentErrorMethod is nullptr")); + + env->ExceptionClear(); + env->CallVoidMethod(mChipAppServerDelegateObject, mOnCommissioningSessionEstablishmentErrorMethod, + static_cast(err.AsInteger())); + if (env->ExceptionCheck()) + { + ChipLogError(AppServer, "Java exception in OnCommissioningSessionEstablishmentErrorMethod"); + env->ExceptionDescribe(); + env->ExceptionClear(); + } +} + +void ChipAppServerDelegate::OnCommissioningSessionStopped() { JNIEnv * env = JniReferences::GetInstance().GetEnvForCurrentThread(); VerifyOrReturn(env != nullptr, ChipLogError(AppServer, "JNIEnv is nullptr")); @@ -63,7 +81,7 @@ void ChipAppServerDelegate::OnCommissioningSessionStopped(CHIP_ERROR err) ChipLogError(AppServer, "mOnCommissioningSessionStoppedMethod is nullptr")); env->ExceptionClear(); - env->CallVoidMethod(mChipAppServerDelegateObject, mOnCommissioningSessionStoppedMethod, static_cast(err.AsInteger())); + env->CallVoidMethod(mChipAppServerDelegateObject, mOnCommissioningSessionStoppedMethod); if (env->ExceptionCheck()) { ChipLogError(AppServer, "Java exception in OnCommissioningSessionStoppedMethod"); @@ -124,7 +142,11 @@ CHIP_ERROR ChipAppServerDelegate::InitializeWithObjects(jobject appDelegateObjec mOnCommissioningSessionStartedMethod = env->GetMethodID(chipAppServerDelegateClass, "onCommissioningSessionStarted", "()V"); VerifyOrReturnLogError(mOnCommissioningSessionStartedMethod != nullptr, CHIP_JNI_ERROR_METHOD_NOT_FOUND); - mOnCommissioningSessionStoppedMethod = env->GetMethodID(chipAppServerDelegateClass, "onCommissioningSessionStopped", "(I)V"); + mOnCommissioningSessionEstablishmentErrorMethod = + env->GetMethodID(chipAppServerDelegateClass, "onCommissioningSessionEstablishmentError", "(I)V"); + VerifyOrReturnLogError(mOnCommissioningSessionEstablishmentErrorMethod != nullptr, CHIP_JNI_ERROR_METHOD_NOT_FOUND); + + mOnCommissioningSessionStoppedMethod = env->GetMethodID(chipAppServerDelegateClass, "onCommissioningSessionStopped", "()V"); VerifyOrReturnLogError(mOnCommissioningSessionStoppedMethod != nullptr, CHIP_JNI_ERROR_METHOD_NOT_FOUND); mOnCommissioningWindowOpenedMethod = env->GetMethodID(chipAppServerDelegateClass, "onCommissioningWindowOpened", "()V"); diff --git a/src/app/server/java/ChipAppServerDelegate.h b/src/app/server/java/ChipAppServerDelegate.h index 8ddf71148e964c..42df60605de39a 100644 --- a/src/app/server/java/ChipAppServerDelegate.h +++ b/src/app/server/java/ChipAppServerDelegate.h @@ -26,7 +26,8 @@ class ChipAppServerDelegate : public AppDelegate public: void OnCommissioningSessionEstablishmentStarted() override; void OnCommissioningSessionStarted() override; - void OnCommissioningSessionStopped(CHIP_ERROR err) override; + void OnCommissioningSessionEstablishmentError(CHIP_ERROR err) override; + void OnCommissioningSessionStopped() override; void OnCommissioningWindowOpened() override; void OnCommissioningWindowClosed() override; @@ -36,6 +37,7 @@ class ChipAppServerDelegate : public AppDelegate jobject mChipAppServerDelegateObject = nullptr; jmethodID mOnCommissioningSessionEstablishmentStartedMethod = nullptr; jmethodID mOnCommissioningSessionStartedMethod = nullptr; + jmethodID mOnCommissioningSessionEstablishmentErrorMethod = nullptr; jmethodID mOnCommissioningSessionStoppedMethod = nullptr; jmethodID mOnCommissioningWindowOpenedMethod = nullptr; jmethodID mOnCommissioningWindowClosedMethod = nullptr; diff --git a/src/app/server/java/src/chip/appserver/ChipAppServerDelegate.java b/src/app/server/java/src/chip/appserver/ChipAppServerDelegate.java index 74181718717774..28daed388331c9 100644 --- a/src/app/server/java/src/chip/appserver/ChipAppServerDelegate.java +++ b/src/app/server/java/src/chip/appserver/ChipAppServerDelegate.java @@ -22,7 +22,9 @@ public interface ChipAppServerDelegate { void onCommissioningSessionStarted(); - void onCommissioningSessionStopped(int errorCode); + void onCommissioningSessionEstablishmentError(int errorCode); + + void onCommissioningSessionStopped(); void onCommissioningWindowOpened();