Converting sound trigger v2.2 getModelState to be asynchronous

Test: built android with checkbuild flag

Change-Id: I4c6f2388c93b6e577113fc7f2cd19242628ee50f
Bug-Id: 70206501
diff --git a/core/jni/android_hardware_SoundTrigger.cpp b/core/jni/android_hardware_SoundTrigger.cpp
index b417a56..98bc735 100644
--- a/core/jni/android_hardware_SoundTrigger.cpp
+++ b/core/jni/android_hardware_SoundTrigger.cpp
@@ -788,61 +788,18 @@
     return status;
 }
 
-static jobject
+static jint
 android_hardware_SoundTrigger_getModelState(JNIEnv *env, jobject thiz,
                                             jint jHandle)
 {
+    jint status = SOUNDTRIGGER_STATUS_OK;
     ALOGV("getModelState");
     sp<SoundTrigger> module = getSoundTrigger(env, thiz);
     if (module == NULL) {
-        return NULL;
+        return SOUNDTRIGGER_STATUS_ERROR;
     }
-    sp<IMemory> memory;
-    jint status = module->getModelState(jHandle, memory);
-    if (status != 0 || memory == NULL) {
-        ALOGW("getModelState, failed to get model state, status: %d", status);
-        return NULL;
-    }
-    struct sound_trigger_recognition_event* event =
-        (struct sound_trigger_recognition_event *)memory->pointer();
-    if (event == NULL) {
-        return NULL;
-    }
-    if (event->type != SOUND_MODEL_TYPE_GENERIC) {
-        ALOGW("getModelState, unsupported model type: %d", event->type);
-        return NULL;
-    }
-
-    jbyteArray jData = NULL;
-    if (event->data_size) {
-        jData = env->NewByteArray(event->data_size);
-        jbyte *nData = env->GetByteArrayElements(jData, NULL);
-        memcpy(nData, (char *)event + event->data_offset, event->data_size);
-        env->ReleaseByteArrayElements(jData, nData, 0);
-    }
-
-    jobject jAudioFormat = NULL;
-    if (event->trigger_in_data || event->capture_available) {
-        jAudioFormat = env->NewObject(gAudioFormatClass,
-                                      gAudioFormatCstor,
-                                      audioFormatFromNative(event->audio_config.format),
-                                      event->audio_config.sample_rate,
-                                      inChannelMaskFromNative(event->audio_config.channel_mask));
-
-    }
-    jobject jEvent = NULL;
-    jEvent = env->NewObject(gGenericRecognitionEventClass, gGenericRecognitionEventCstor,
-                            event->status, event->model, event->capture_available,
-                            event->capture_session, event->capture_delay_ms,
-                            event->capture_preamble_ms, event->trigger_in_data,
-                            jAudioFormat, jData);
-    if (jAudioFormat != NULL) {
-        env->DeleteLocalRef(jAudioFormat);
-    }
-    if (jData != NULL) {
-        env->DeleteLocalRef(jData);
-    }
-    return jEvent;
+    status = module->getModelState(jHandle);
+    return status;
 }
 
 static const JNINativeMethod gMethods[] = {
@@ -875,7 +832,7 @@
         "(I)I",
         (void *)android_hardware_SoundTrigger_stopRecognition},
     {"getModelState",
-        "(I)Landroid/hardware/soundtrigger/SoundTrigger$RecognitionEvent;",
+        "(I)I",
         (void *)android_hardware_SoundTrigger_getModelState},
 };