From 2d6a9d02c77d7e08d4f18ee87d6e3d337b949f47 Mon Sep 17 00:00:00 2001
From: yy1717 <fctom1215@outlook.com>
Date: 星期四, 20 八月 2020 19:35:17 +0800
Subject: [PATCH] 坐标

---
 lib/src/main/cpp/native-lib.cpp |   21 +++++++++++++++++++--
 1 files changed, 19 insertions(+), 2 deletions(-)

diff --git a/lib/src/main/cpp/native-lib.cpp b/lib/src/main/cpp/native-lib.cpp
index 70aa448..5204dd3 100644
--- a/lib/src/main/cpp/native-lib.cpp
+++ b/lib/src/main/cpp/native-lib.cpp
@@ -3,6 +3,7 @@
 #include <pthread.h>
 #include <unistd.h>
 #include <cstdlib>
+#include <map>
 #include "common/serial_port.h"
 #include "jni_log.h"
 #include "common/net.h"
@@ -34,6 +35,8 @@
 static int ttsSeq = 1;
 
 static void SendBootIndicate(union sigval sig);
+
+static std::map<int, void (*)(int)> TTSCallBack;
 
 int DESEncrypt(const uint8_t *key, int key_length,
         const uint8_t *plaintext, int plaintext_length,
@@ -210,7 +213,7 @@
     return seq;
 }
 
-int PlayTTS(const char *string)
+int PlayTTS(const char *string, void (*callback)(int))
 {
     DEBUG("PlayTTS: %s", string);
 
@@ -242,6 +245,8 @@
             LOGE("%s: DetachCurrentThread() failed", __FUNCTION__);
         }
     }
+
+    TTSCallBack.insert(pair<int, void (*)(int)>(id, callback));
 
     return id;
 }
@@ -314,5 +319,17 @@
 JNIEXPORT void JNICALL
 Java_com_anyun_exam_lib_RemoteService_TextSpeakEnd(JNIEnv *env, jobject thiz, jint id) {
     // TODO: implement TextSpeakEnd()
-    PlatformStatusChanged(PLAY_TTS_DONE_EVT, (uint8_t *)&id, sizeof(id));
+
+    auto it = TTSCallBack.find(id);
+
+    if (it != TTSCallBack.end()) {
+        if (it->second != NULL) {
+            tts_back_t tb;
+
+            tb.seq = id;
+            tb.callback = (void (*)(int)) it->second;
+            PlatformStatusChanged(PLAY_TTS_DONE_EVT, (uint8_t *)&tb, sizeof(tb));
+        }
+        TTSCallBack.erase(it);
+    }
 }

--
Gitblit v1.8.0