From 44497e4b9eee31471fd482455d7fa255d1216bcf Mon Sep 17 00:00:00 2001 From: Satish kumar sugasi <ssugas@codeaurora.org> Date: Tue, 18 Oct 2016 23:11:59 -0700 Subject: [PATCH] Add search list complete callback This adds logic to call searchlist complete callback in java from jni layer to update FM state to search complete. Change-Id: If6bb49a6c7b10dc32c00b140bd66c3395f594352 --- jni/android_hardware_fm.cpp | 13 +++++++++++-- qcom/fmradio/FmReceiverJNI.java | 23 +++++++++++++++++++++-- 2 files changed, 32 insertions(+), 4 deletions(-) diff --git a/jni/android_hardware_fm.cpp b/jni/android_hardware_fm.cpp index 9e469ed..b5b0a5e 100644 --- a/jni/android_hardware_fm.cpp +++ b/jni/android_hardware_fm.cpp @@ -194,7 +194,16 @@ void fm_scan_next_cb() void fm_srch_list_cb(uint16_t *scan_tbl) { ALOGI("SRCH_LIST"); - //mCallbackEnv->CallVoidMethod(javaObjectRef, method_srchListCallback); + jbyteArray srch_buffer = NULL; + + srch_buffer = mCallbackEnv->NewByteArray(STD_BUF_SIZE); + if (srch_buffer == NULL) { + ALOGE(" af list allocate failed :"); + return; + } + mCallbackEnv->SetByteArrayRegion(srch_buffer, 0, STD_BUF_SIZE, (jbyte *)scan_tbl); + mCallbackEnv->CallVoidMethod(mCallbacksObj, method_srchListCallback, srch_buffer); + mCallbackEnv->DeleteLocalRef(srch_buffer); } void fm_stereo_status_cb(bool stereo) @@ -1519,7 +1528,7 @@ static void classInitNative(JNIEnv* env, jclass clazz) { method_tuneCallback = env->GetMethodID(javaClassRef, "tuneCallback", "(I)V"); method_seekCmplCallback = env->GetMethodID(javaClassRef, "seekCmplCallback", "(I)V"); method_scanNxtCallback = env->GetMethodID(javaClassRef, "scanNxtCallback", "()V"); - //method_srchListCallback = env->GetMethodID(javaClassRef, "srchListCallback", "([B)V"); + method_srchListCallback = env->GetMethodID(javaClassRef, "srchListCallback", "([B)V"); method_stereostsCallback = env->GetMethodID(javaClassRef, "stereostsCallback", "(Z)V"); method_rdsAvlStsCallback = env->GetMethodID(javaClassRef, "rdsAvlStsCallback", "(Z)V"); method_disableCallback = env->GetMethodID(javaClassRef, "disableCallback", "()V"); diff --git a/qcom/fmradio/FmReceiverJNI.java b/qcom/fmradio/FmReceiverJNI.java index e587b44..c5835ff 100644 --- a/qcom/fmradio/FmReceiverJNI.java +++ b/qcom/fmradio/FmReceiverJNI.java @@ -193,7 +193,6 @@ class FmReceiverJNI { public void tuneCallback(int freq) { int state; - Log.d(TAG, "tuneCallback enter"); state = FmReceiver.getSearchState(); switch(state) { @@ -222,7 +221,7 @@ class FmReceiverJNI { Log.d(TAG, "seekCmplCallback enter"); state = FmReceiver.getSearchState(); - switch(state) { + switch (state) { case FmTransceiver.subSrchLevel_ScanInProg: Log.v(TAG, "Current state is " + state); FmReceiver.setSearchState(FmTransceiver.subSrchLevel_SrchComplete); @@ -240,6 +239,26 @@ class FmReceiverJNI { Log.d(TAG, "seekCmplCallback exit"); } + public void srchListCallback(byte[] scan_tbl) { + int state; + state = FmReceiver.getSearchState(); + switch (state) { + case FmTransceiver.subSrchLevel_SrchListInProg: + Log.v(TAG, "FmRxEventListener: Current state is AUTO_PRESET_INPROGRESS"); + FmReceiver.setSearchState(FmTransceiver.subSrchLevel_SrchComplete); + Log.v(TAG, "RxEvtList: CURRENT-STATE : Search ---> NEW-STATE : FMRxOn"); + FmReceiver.mCallback.FmRxEvSearchListComplete(); + break; + case FmTransceiver.subSrchLevel_SrchAbort: + Log.v(TAG, "Current state is SRCH_ABORTED"); + Log.v(TAG, "Aborting on-going SearchList command..."); + FmReceiver.setSearchState(FmTransceiver.subSrchLevel_SrchComplete); + Log.v(TAG, "RxEvtList: CURRENT-STATE : Search ---> NEW-STATE : FMRxOn"); + FmReceiver.mCallback.FmRxEvSearchCancelled(); + break; + } + } + public void scanNxtCallback() { Log.d(TAG, "scanNxtCallback enter"); FmReceiver.mCallback.FmRxEvSearchInProgress(); -- GitLab