Jelajahi Sumber

整合tcp,增加手柄和紧急按钮掉线逻辑

vothin 10 bulan lalu
induk
melakukan
1bbaee5166
13 mengubah file dengan 406 tambahan dan 188 penghapusan
  1. 2 0
      i18n/zh_CN.tr
  2. 2 36
      jni/logic/callLogic.cc
  3. 148 115
      jni/logic/startLogic.cc
  4. 218 0
      jni/net/tcp_util.cpp
  5. 35 0
      jni/net/tcp_util.h
  6. 0 35
      jni/service/BusinessConfig.cpp
  7. 1 2
      jni/service/BusinessConfig.h
  8. TEMPAT SAMPAH
      libs/armeabi/libzkgui.so
  9. TEMPAT SAMPAH
      obj/activity/callActivity.o
  10. TEMPAT SAMPAH
      obj/activity/startActivity.o
  11. TEMPAT SAMPAH
      obj/net/tcp_util.o
  12. TEMPAT SAMPAH
      obj/service/BusinessConfig.o
  13. TEMPAT SAMPAH
      obj/service/time.o

+ 2 - 0
i18n/zh_CN.tr

@@ -96,6 +96,8 @@
     <string name="Mode2">是否切换成模式2</string>
     <string name="Mode3">是否切换成模式3</string>
     <string name="ModeConfirm">确认切换模式后,本机会重启</string>
+    <string name="SosDisconnected">紧急按钮已断连</string>
+    <string name="HandleDisconnected">手柄已断连</string>
     <!-- 医护界面 -->
     <string name="MedicalLoginMsg">请输入正确的密码,进入医护功能</string>
     <string name="InputMedicalPassword">输入密码进入医护</string>

+ 2 - 36
jni/logic/callLogic.cc

@@ -281,34 +281,8 @@ static void onUI_intent(const Intent *intentPtr) {
 				toId = atoi(_toIdStr.c_str());
 			}
 
-			//TCP call
-			TcpModel tcpModel;
-			tcpModel.tid = base::format("t%d", TimeHelper::getCurrentTime());
-			tcpModel.type = TcpType::VOICE;
-			tcpModel.action = VoiceAction::CALL;
-			tcpModel.from_id = StoragePreferences::getInt(STORE_DEVICE_ID,0);
-			tcpModel.to_id = toId;
-			std::string req = getTcpModelString(tcpModel);
-			LOGD("TCP CALL : %s",req.c_str());
-			setCallTid(tcpModel.tid);
-
-			//回调注册
-			TcpCallback callback;
-			callback.tid = tcpModel.tid;
-			callback.jsonStr = req;
-			callback.onSuccess = [](Json::Value json){
-				LOGD("voice callback success");
-				return 0;
-			};
-			callback.onFalied = [](Json::Value json){
-				LOGD("voice callback failed");
-				return 0;
-			};
-			TcpClient::instance()->sendMsgWithCb(req.c_str(), callback);
-
-
 			// 呼叫的时候需要把tid放进去
-			tid = tcpModel.tid;
+			tid = sendVoiceCall(toId);
 			mButtonAnswerPtr->setVisible(false);
 
 			std::string _callName = intentPtr->getExtra(callName);
@@ -446,15 +420,7 @@ static bool onUI_Timer(int id){
 		break;
 	}
 	case CALLING_TIME: {
-		//TCP call
-		TcpModel tcpModel;
-		tcpModel.type = TcpType::VOICE;
-		tcpModel.action = VoiceAction::CANCEL;
-		tcpModel.from_id = StoragePreferences::getInt(STORE_DEVICE_ID,0);
-		tcpModel.to_id = 0;
-		std::string req = getTcpModelString(tcpModel);
-		LOGD("TCP CALL : %s",req.c_str());
-		TcpClient::instance()->sendMsg(req.c_str());
+		sendVoiceCancel(StoragePreferences::getInt(STORE_DEVICE_ID,0), 0);
 
 //		std::string heartStr = "DOORLED,000F";
 //		const char* sendMsg = heartStr.c_str();

+ 148 - 115
jni/logic/startLogic.cc

@@ -25,13 +25,23 @@ static bool isNursing = false;	// 用于启动时判断是否处于护理状态
 static bool isNetreset = false;
 static int netresetInt = 0;
 static string callTid = "";
+
+
+static bool isConnectHandle = false;
+static bool isConnectSos = false;
+static bool isTriggerHandle = false;
+static bool isTriggerSos = false;
+
 #define FUNCTION_TIMER_HANDLE 3	// 增援的定时器id
 #define SOS_CLICK_TIME_HANDLE 4	// sos的定时器id
 #define SOS_LAMP_TIME_HANDLE 5	// sos的门灯定时器id
 #define EVENT_TIME_HANDLE 8		// 事件定时器
 #define SLEEP_STRAT_TIME_HANDLE 9	// 息屏
 #define SYS_RESTART_TIME_HANDLE 10	// 重启
-#define PROMPT_TIME_HANDLE 11	// 提示语
+#define PROMPT_TIME_HANDLE 11	// 提示语s
+
+#define HANDLE_TRIGGER_TIME_HANDLE 15
+#define SOS_TRIGGER_TIME_HANDLE 16
 
 #define HTTP_SERVER_PORT  80
 
@@ -534,7 +544,7 @@ void setSleepTimerRegistered(bool result) {
 	}
 }
 
-void scrrenOn() {
+void screenOn() {
 	isSleep = false;
 	BRIGHTNESSHELPER->screenOn();
 }
@@ -543,6 +553,25 @@ void setCallTid(std::string tid) {
 	callTid = tid;
 }
 
+void sosCall(string sosMsg) {
+	if (sosTimerRegistered) {
+		LOGD("TCP -> SOS_CALL");
+		sendSosCall(sosMsg);
+
+
+		// SOS亮红灯
+		lightControl("ULED", "1F");
+		// 门灯亮红灯
+		lightControl("DOORLED", "200F");
+
+		lightControl("CALLLED", "100F");
+
+		sosTimerRegistered = false;
+		mActivityPtr->registerUserTimer(SOS_CLICK_TIME_HANDLE, 10000);		// 10秒后才能触发
+		mActivityPtr->registerUserTimer(SOS_LAMP_TIME_HANDLE, 120000);		// 2分钟后才能触发
+	}
+}
+
 //================================= IO 口操作
 //紧急按钮灯,明/灭
 void setSOS_A5(bool light){
@@ -774,33 +803,22 @@ static void onProtocolDataUpdate(const SProtocolData &data) {
 	if(UartContext::Uart3IsOpen()) {	// 如果是true,表示串口打开了
 		string heartStr;
 
-		//按下
-		if (data.state=="0"){    // 0表示正被按下,1表示短按松开,2表示长按松开。
-			if (data.cmd == "KEY5") {	// key5是面板拨号按钮
-				if (StoragePreferences::getString(STORE_SIGNAL_TYPE, SIGNAL_TYPE) == "SIP") {
-					setCheckbox("KEY5");
-					return;
+		if (data.cmd == "KEY5") {	// key5是面板拨号按钮
+			if (data.state == "0") {
+				if (isSleep) {
+					screenOn();
+					if (!StoragePreferences::getInt(STORE_SCREEN_LIGHT, 0)) {
+						return;
+					}
 				}
 
-				if (!StoragePreferences::getInt(STORE_SCREEN_LIGHT, 0)) {
-					if (isSleep) {
-						scrrenOn();
-					}
-					else {
-						voip::CallInfo info = GetTelephone()->GetCallInfo();
-						//拨打 或 挂断
-						if (CallingStatus::instance()->busy()){
-							callActivityFinish(CallFinishType::A1CLICK);
-						} else {
-							Intent* intent = new Intent();
-							intent->putExtra(isOutgoing, "true");
-							intent->putExtra(audioOnly, "true");
-							EASYUICONTEXT->openActivity("callActivity", intent);
-						}
-					}
+				const char* currentAppName = EASYUICONTEXT->currentAppName();
+				string _currentAppName = currentAppName;
+				if (_currentAppName == "sipTestActivity") {
+					setCheckbox("KEY5");
+					return;
 				}
 				else {
-					scrrenOn();
 					voip::CallInfo info = GetTelephone()->GetCallInfo();
 					//拨打 或 挂断
 					if (CallingStatus::instance()->busy()){
@@ -813,28 +831,29 @@ static void onProtocolDataUpdate(const SProtocolData &data) {
 					}
 				}
 			}
+		}
 
-			else if (data.cmd == "KEY6"){	// key6是手柄触发,手柄只有呼叫和挂断功能,没有取消功能,防止用户不停地按
-
-				if (!StoragePreferences::getInt(STORE_SCREEN_LIGHT, 0)) {
-					if (isSleep) {
-						scrrenOn();
-					}
-					else {
-						voip::CallInfo info = GetTelephone()->GetCallInfo();
-						//拨打 或 挂断
-						if (CallingStatus::instance()->busy()){
-							callActivityFinish(CallFinishType::KEY6_CLICK);
-						} else {
-							Intent* intent = new Intent();
-							intent->putExtra(isOutgoing, "true");
-							intent->putExtra(audioOnly, "true");
-							EASYUICONTEXT->openActivity("callActivity", intent);
-						}
+		else if (data.cmd == "KEY6"){	// key6是手柄触发,手柄只有呼叫和挂断功能,没有取消功能,防止用户不停地按
+			if (data.state == "0") {
+				if (isSleep) {
+					screenOn();
+					if (!StoragePreferences::getInt(STORE_SCREEN_LIGHT, 0)) {
+						return;
 					}
 				}
-				else {
-					scrrenOn();
+
+				const char* currentAppName = EASYUICONTEXT->currentAppName();
+				string _currentAppName = currentAppName;
+				if (_currentAppName == "sipTestActivity") {
+					setCheckbox("KEY6");
+					return;
+				}
+
+				isTriggerHandle = true;
+				mActivityPtr->registerUserTimer(HANDLE_TRIGGER_TIME_HANDLE, 5 * 1000);
+			}
+			else if (data.state == "1") {
+				if (isTriggerHandle) {
 					voip::CallInfo info = GetTelephone()->GetCallInfo();
 					//拨打 或 挂断
 					if (CallingStatus::instance()->busy()){
@@ -846,63 +865,67 @@ static void onProtocolDataUpdate(const SProtocolData &data) {
 						EASYUICONTEXT->openActivity("callActivity", intent);
 					}
 				}
-
 			}
-			else if (data.cmd == "KEY7"){	// key7是紧急按钮
-				if (StoragePreferences::getString(STORE_SIGNAL_TYPE, SIGNAL_TYPE) == "SIP") {
-					setCheckbox("KEY7");
+			else if (data.state == "3") {
+				LOGD("手柄在线");
+				isConnectHandle = true;
+			}
+			else if (data.state == "4") {
+				if (!isConnectHandle) {
 					return;
 				}
-				if (isSleep) {
-					scrrenOn();
+				sosCall(LANGUAGEMANAGER->getValue("HandleDisconnected"));
+			}
+
+
+		}
+		else if (data.cmd == "KEY7"){	// key7是紧急按钮
+			if (data.state == "0") {
+				screenOn();
+
+				const char* currentAppName = EASYUICONTEXT->currentAppName();
+				string _currentAppName = currentAppName;
+				if (_currentAppName == "sipTestActivity") {
+					setCheckbox("KEY7");
+					return;
 				}
-				if (sosTimerRegistered) {
-					LOGD("TCP -> SOS_CALL");
-					TcpModel tcpModel;
-					tcpModel.type = TcpType::SOS;
-					tcpModel.action = SosAction::CALL;
-					tcpModel.from_id = StoragePreferences::getInt(STORE_DEVICE_ID, 0);
-					tcpModel.tid = base::format("t%d",TimeHelper::getCurrentTime());
-					std::string req = getTcpModelString(tcpModel);
-					LOGD("TCP SOS_CALL : %s",req.c_str());
-					TcpClient::instance()->sendMsg(req.c_str());
-
-					// SOS亮红灯
-					lightControl("ULED", "1F");
-					// 门灯亮红灯
-					lightControl("DOORLED", "200F");
-
-					lightControl("CALLLED", "100F");
-
-					mActivityPtr->registerUserTimer(SOS_CLICK_TIME_HANDLE, 10000);		// 10秒后才能触发
-					mActivityPtr->registerUserTimer(SOS_LAMP_TIME_HANDLE, 120000);		// 2分钟后才能触发
+				else {
+					if (sosTimerRegistered) {
+						isTriggerSos = true;
+						mActivityPtr->registerUserTimer(SOS_TRIGGER_TIME_HANDLE, 5 * 1000);
+					}
 				}
 			}
-			else if (data.cmd == "KEY<") {	//下左3,红
-				if (StoragePreferences::getString(STORE_SIGNAL_TYPE, SIGNAL_TYPE) == "SIP") {
-					setCheckbox("KEY<");
+			else if (data.state == "1") {
+				sosCall("");
+			}
+			else if (data.state == "3") {
+				LOGD("紧急按钮在线");
+				isConnectHandle = true;
+			}
+			else if (data.state == "4") {
+				if (!isConnectHandle) {
 					return;
 				}
-
-				if (!StoragePreferences::getInt(STORE_SCREEN_LIGHT, 0)) {
-					if (isSleep) {
-						scrrenOn();
-					}
-					else {
-						voip::CallInfo info = GetTelephone()->GetCallInfo();
-						//拨打 或 挂断
-						if (CallingStatus::instance()->busy()){
-							callActivityFinish(CallFinishType::A1CLICK);
-						} else {
-							Intent* intent = new Intent();
-							intent->putExtra(isOutgoing, "true");
-							intent->putExtra(audioOnly, "true");
-							EASYUICONTEXT->openActivity("callActivity", intent);
-						}
+				sosCall(LANGUAGEMANAGER->getValue("SosDisconnected"));
+			}
+		}
+		else if (data.cmd == "KEY<") {	//下左3,红
+			if (data.state == "0") {
+				if (isSleep) {
+					screenOn();
+					if (!StoragePreferences::getInt(STORE_SCREEN_LIGHT, 0)) {
+						return;
 					}
 				}
+
+				const char* currentAppName = EASYUICONTEXT->currentAppName();
+				string _currentAppName = currentAppName;
+				if (_currentAppName == "sipTestActivity") {
+					setCheckbox("KEY<");
+					return;
+				}
 				else {
-					scrrenOn();
 					voip::CallInfo info = GetTelephone()->GetCallInfo();
 					//拨打 或 挂断
 					if (CallingStatus::instance()->busy()){
@@ -915,23 +938,22 @@ static void onProtocolDataUpdate(const SProtocolData &data) {
 					}
 				}
 			}
-			else if (data.cmd == "KEY>") {	// key>是面板挂断按钮
-				if (!StoragePreferences::getInt(STORE_SCREEN_LIGHT, 0)) {
-					if (isSleep) {
-						scrrenOn();
-					}
-					else {
-						voip::CallInfo info = GetTelephone()->GetCallInfo();
-						//拨打 或 挂断
-						if (CallingStatus::instance()->busy()){
-							callActivityFinish(CallFinishType::A1CLICK);
-
-							lightControl("DOORLED", "000F");
-						}
+		}
+		else if (data.cmd == "KEY>") {	// key>是面板挂断按钮
+			if (data.state == "0") {
+				if (isSleep) {
+					screenOn();
+					if (!StoragePreferences::getInt(STORE_SCREEN_LIGHT, 0)) {
+						return;
 					}
 				}
+				const char* currentAppName = EASYUICONTEXT->currentAppName();
+				string _currentAppName = currentAppName;
+				if (_currentAppName == "sipTestActivity") {
+					setCheckbox("KEY>");
+					return;
+				}
 				else {
-					scrrenOn();
 					voip::CallInfo info = GetTelephone()->GetCallInfo();
 					//拨打 或 挂断
 					if (CallingStatus::instance()->busy()){
@@ -941,18 +963,19 @@ static void onProtocolDataUpdate(const SProtocolData &data) {
 					}
 				}
 			}
-			else if (data.cmd == "KEY;"){	//下左4,白
-				if (isSleep) {
-					scrrenOn();
-				}
-				lightControl("DOORLED", "111F");
+
+		}
+		else if (data.cmd == "KEY;"){	//下左4,白
+			if (isSleep) {
+				screenOn();
 			}
-			else {
-				if (isSleep) {
-					scrrenOn();
-				}
-//				lightControl("DOORLED", "000F");
+			lightControl("DOORLED", "111F");
+		}
+		else {
+			if (isSleep) {
+				screenOn();
 			}
+//				lightControl("DOORLED", "000F");
 		}
 	}
 }
@@ -1017,7 +1040,7 @@ static bool onUI_Timer(int id){
 	}
 		break;
 
-	case SYS_RESTART_TIME_HANDLE:
+	case SYS_RESTART_TIME_HANDLE: {
 		netresetInt += 1;
 	    lightControl("NETRESET", "1F");
 
@@ -1027,7 +1050,17 @@ static bool onUI_Timer(int id){
 	    	sync();
 	    	reboot(RB_AUTOBOOT);
 	    }
+	}
 		break;
+    case HANDLE_TRIGGER_TIME_HANDLE: {
+    	isTriggerHandle = false;
+    	return false;
+    }
+    	break;
+    case SOS_TRIGGER_TIME_HANDLE: {
+    	isTriggerSos = false;
+    	return false;
+    }
 	default:
 		break;
 	}

+ 218 - 0
jni/net/tcp_util.cpp

@@ -0,0 +1,218 @@
+/*
+ * tcp_util.cpp
+ *
+ *  Created on: 2024年7月18日
+ *      Author: m
+ */
+
+#include "tcp_model.h"
+#include "tcp_util.h"
+#include "json/json.h"
+#include <utils/TimeHelper.h>
+#include "base/strings.hpp"
+#include "service/BusinessConfig.h"
+
+
+
+void sendAuthLogin(std::string clerkNfc) {
+    Json::Value json;
+    json["passNo"] = clerkNfc;
+    json["operationData"] = "";
+
+    // 发送tcp, tcp_type = AUTH, tcp_action = LOGIN
+    TcpModel tcpModel;
+    tcpModel.tid = base::format("t%d",TimeHelper::getCurrentTime());
+    tcpModel.type = TcpType::AUTH;
+    tcpModel.action = AuthAction::LOGIN;
+    tcpModel.from_id = StoragePreferences::getInt(STORE_DEVICE_ID,0);
+    tcpModel.json = json;
+
+    sendTcpModel(tcpModel);
+}
+
+
+void sendAuthLogout(std::string authItId) {
+	TcpModel tcpModel;
+	tcpModel.tid = base::format("t%d",TimeHelper::getCurrentTime());
+	tcpModel.type = TcpType::AUTH;
+	tcpModel.action = AuthAction::LOGOUT;
+	tcpModel.from_id = StoragePreferences::getInt(STORE_DEVICE_ID,0);
+	tcpModel.to_id = 0;
+	tcpModel.data = authItId;
+
+	sendTcpModel(tcpModel);
+}
+
+
+void sendSignIn(std::string clerkNfc) {
+    Json::Value json;
+    json["passNo"] = clerkNfc;
+    json["operationData"] = "";
+
+    // 发送tcp, tcp_type = AUTH, tcp_action = LOGIN
+    TcpModel tcpModel;
+    tcpModel.tid = base::format("t%d",TimeHelper::getCurrentTime());
+    tcpModel.type = TcpType::SIGN_IN;
+    tcpModel.action = SignInAction::SIGN_IN;
+    tcpModel.from_id = StoragePreferences::getInt(STORE_DEVICE_ID,0);
+    tcpModel.json = json;
+
+    sendTcpModel(tcpModel);
+}
+
+
+void sendPostionStart(std::string clerkNfc) {
+	Json::Value json;
+	json["passNo"] = clerkNfc;
+	json["operationData"] = "";
+
+	TcpModel tcpModel;
+	tcpModel.tid = base::format("t%d", TimeHelper::getCurrentTime());
+	tcpModel.type = TcpType::POSITION;
+	tcpModel.action = PositionAction::POSITION_START;
+	tcpModel.from_id = StoragePreferences::getInt(STORE_DEVICE_ID,0);
+	tcpModel.json = json;
+	sendTcpModel(tcpModel);
+}
+
+
+void sendRoomCheckStart(std::string clerkNfc) {
+	Json::Value json;
+	json["passNo"] = clerkNfc;
+	json["operationData"] = "";
+
+	TcpModel tcpModel;
+	tcpModel.tid = base::format("t%d", TimeHelper::getCurrentTime());
+	tcpModel.type = TcpType::ROOMCHECK;
+	tcpModel.action = RoomCheckAction::START;
+	tcpModel.from_id = StoragePreferences::getInt(STORE_DEVICE_ID,0);
+	tcpModel.json = json;
+
+	sendTcpModel(tcpModel);
+}
+
+
+void sendNursing() {
+    // 门灯控制
+	std::string color = StoragePreferences::getString(STORE_NURSING_COLOR_RGB, "010");
+	if (color != "" && color.size() == 3) {
+		color = color + "F";
+	} else {
+		color = "010F";
+	}
+	lightControl("DOORLED", color);
+
+	// 发送tcp, tcp_type = SIDE, tcp_action = NURSING
+	TcpModel tcpModel;
+	tcpModel.tid = base::format("t%d",TimeHelper::getCurrentTime());
+	tcpModel.type = TcpType::SIDE;
+	tcpModel.action = SideAction::NURSING;
+	tcpModel.from_id = StoragePreferences::getInt(STORE_DEVICE_ID,0);
+
+	sendTcpModel(tcpModel);
+}
+
+
+void sendNursingEnd() {
+	// 发送tcp, tcp_type = SIDE, tcp_action = NURSING_END
+	TcpModel tcpModel;
+	tcpModel.tid = base::format("t%d", TimeHelper::getCurrentTime());
+	tcpModel.type = TcpType::SIDE;
+	tcpModel.action = SideAction::NURSING_END;
+	tcpModel.from_id = StoragePreferences::getInt(STORE_DEVICE_ID,0);
+	tcpModel.data = StoragePreferences::getString(STORE_NURSING_INTERACTION_ID, "");	// 获取nursingTcpModel里,id字段的数据
+
+	sendTcpModel(tcpModel);
+}
+
+void sendReinforceCall() {
+	TcpModel tcpModel;
+	tcpModel.type = TcpType::REINFORCE;
+	tcpModel.action = ReinforceAction::CALL;
+	tcpModel.from_id = StoragePreferences::getInt(STORE_DEVICE_ID,0);
+	tcpModel.to_id = 0;
+	sendTcpModel(tcpModel);
+}
+
+void sendCallByDoor() {
+    // 发送tcp, tcp_type = VOICE, tcp_action = CANCEL_BY_DOOR
+	TcpModel tcpModel;
+	tcpModel.tid = base::format("t%d",TimeHelper::getCurrentTime());
+	tcpModel.type = TcpType::VOICE;
+	tcpModel.action = VoiceAction::CANCEL_BY_DOOR;
+	tcpModel.from_id = StoragePreferences::getInt(STORE_DEVICE_ID,0);
+	sendTcpModel(tcpModel);
+}
+
+
+
+std::string sendVoiceCall(int toId) {
+	TcpModel tcpModel;
+	tcpModel.tid = base::format("t%d", TimeHelper::getCurrentTime());
+	tcpModel.type = TcpType::VOICE;
+	tcpModel.action = VoiceAction::CALL;
+	tcpModel.from_id = StoragePreferences::getInt(STORE_DEVICE_ID,0);
+	tcpModel.to_id = toId;
+
+	sendTcpModel(tcpModel);
+	return tcpModel.tid;
+}
+
+
+void sendVoiceTcp(std::string action, TcpModel model, int toId){
+	//发出TCP
+	TcpModel tcpModel;
+	tcpModel.tid = model.tid;
+	tcpModel.type = TcpType::VOICE;
+	tcpModel.action = action;
+	tcpModel.from_id = StoragePreferences::getInt(STORE_DEVICE_ID,0);
+
+	tcpModel.to_id = toId;
+	if (model.data!=""){
+		tcpModel.data = model.data;
+	} else if (model.json>0){
+		tcpModel.json = model.json;
+	}
+
+	sendTcpModel(tcpModel);
+}
+
+
+void sendVoiceCancel(int fromId, int toId) {
+	TcpModel tcpModel;
+	tcpModel.type = TcpType::VOICE;
+	tcpModel.action = VoiceAction::CANCEL;
+	tcpModel.from_id = fromId;
+	tcpModel.to_id = toId;
+	sendTcpModel(tcpModel);
+}
+
+
+void sendSosCall(std::string sosMsg) {
+	TcpModel tcpModel;
+	tcpModel.tid = base::format("t%d", TimeHelper::getCurrentTime());
+	tcpModel.type = TcpType::SOS;
+	tcpModel.action = SosAction::CALL;
+	tcpModel.from_id = StoragePreferences::getInt(STORE_DEVICE_ID, 0);
+	if (sosMsg != "") {
+		Json::Value data;
+		data["title"] = sosMsg;
+		tcpModel.json = data;
+	}
+
+	sendTcpModel(tcpModel);
+
+}
+
+
+void sendSosCancel(std::string sosId) {
+	TcpModel tcpModel;
+	tcpModel.tid = base::format("t%d", TimeHelper::getCurrentTime());
+	tcpModel.type = TcpType::SOS;
+	tcpModel.action = SosAction::CANCEL;
+	tcpModel.from_id = StoragePreferences::getInt(STORE_DEVICE_ID, 0);
+	tcpModel.data = sosId;
+
+	sendTcpModel(tcpModel);
+}
+

+ 35 - 0
jni/net/tcp_util.h

@@ -0,0 +1,35 @@
+/*
+ * tcp_util.h
+ *
+ *  Created on: 2024年7月18日
+ *      Author: m
+ */
+
+#ifndef JNI_NET_TCP_UTIL_H_
+#define JNI_NET_TCP_UTIL_H_
+
+void sendAuthLogin(std::string clerkNfc);
+void sendAuthLogout(std::string authItId);
+
+void sendSignIn(std::string clerkNfc);
+
+void sendPostionStart(std::string clerkNfc);
+
+void sendRoomCheckStart(std::string clerkNfc);
+
+void sendNursing();
+void sendNursingEnd();
+
+void sendReinforceCall();
+
+void sendCallByDoor();
+
+std::string sendVoiceCall(int toId);
+void sendVoiceTcp(std::string action, TcpModel model, int toId);
+void sendVoiceCancel(int fromId, int toId);
+
+void sendSosCall(std::string sosMsg);
+void sendSosCancel(std::string sosId);
+
+
+#endif /* JNI_NET_TCP_UTIL_H_ */

+ 0 - 35
jni/service/BusinessConfig.cpp

@@ -54,41 +54,6 @@ bool CallingStatus::busy() {
 	return instance()->_busy;
 }
 
-void sendVoiceTcp(std::string action, TcpModel model, int toId){
-	//发出TCP
-	TcpModel tcpModel;
-	tcpModel.tid = model.tid;
-	tcpModel.type = TcpType::VOICE;
-	tcpModel.action = action;
-	tcpModel.from_id = StoragePreferences::getInt(STORE_DEVICE_ID,0);
-
-	tcpModel.to_id = toId;
-	if (model.data!=""){
-		tcpModel.data = model.data;
-	} else if (model.json>0){
-		tcpModel.json = model.json;
-	}
-
-	std::string req = getTcpModelString(tcpModel);
-	LOGD("sendVoiceTcp : %s",req.c_str());
-//	TcpClient::instance()->sendMsg(req.c_str());
-
-	//回调注册
-	TcpCallback callback;
-	callback.tid = tcpModel.tid;
-	callback.jsonStr = req;
-	callback.onSuccess = [](Json::Value json){
-		LOGD("voice callback success");
-		return 0;
-	};
-	callback.onFalied = [](Json::Value json){
-		LOGD("voice callback failed");
-		return 0;
-	};
-	TcpClient::instance()->sendMsgWithCb(req.c_str(), callback);
-}
-
-
 
 TcpCacheManager::TcpCacheManager() {
 }

+ 1 - 2
jni/service/BusinessConfig.h

@@ -13,6 +13,7 @@
 #include <atomic>
 #include "net/tcp_client.h"
 #include "net/tcp_model.h"
+#include "net/tcp_util.h"
 #include <map>
 
 #ifndef JNI_SERVICE_BUSINESSCONFIG_H_
@@ -208,8 +209,6 @@ void callActivityFinish(CallFinishType type);
 void buildSIP(std::string toSipId);
 void acceptSIP();
 
-void sendVoiceTcp(std::string action, TcpModel model, int toId);
-
 
 class PartSetting{
 public:

TEMPAT SAMPAH
libs/armeabi/libzkgui.so


TEMPAT SAMPAH
obj/activity/callActivity.o


TEMPAT SAMPAH
obj/activity/startActivity.o


TEMPAT SAMPAH
obj/net/tcp_util.o


TEMPAT SAMPAH
obj/service/BusinessConfig.o


TEMPAT SAMPAH
obj/service/time.o