Pārlūkot izejas kodu

开发门口机呼叫床位根据配置进行显示,修复sos报警失败时导致程序崩溃的问题

vothin 2 gadi atpakaļ
vecāks
revīzija
318bd4b49b

+ 28 - 0
jni/logic/mainLogic.cc

@@ -243,6 +243,7 @@ public:
 			partSetting.twoColorDoorLightValid = root["two_color_door_light_valid"].asInt();
 			partSetting.qrUrl = root["qr_url"].asString();
 			partSetting.screenLight = root["screen_light"].asInt();
+			partSetting.roomCallBed = root["room_call_bed"].asInt();
 
 			StoragePreferences::putString(STORE_DAY_START, partSetting.dayStart);
 			StoragePreferences::putInt(STORE_DAY_LIGHT,partSetting.dayLight);
@@ -264,13 +265,40 @@ public:
 			StoragePreferences::putString(STORE_NURSING_COLOR_RGB, partSetting.nursingColorRgb);
 			StoragePreferences::putBool(STORE_AUDO_ANSWER, partSetting.autoAccept==1);
 			StoragePreferences::putInt(STORE_SCREEN_LIGHT, partSetting.screenLight);
+			StoragePreferences::putInt(STORE_ROOM_CALL_BED, partSetting.roomCallBed);
 
 			setRightTitle(root);
+			callBedButtonSetVisible();
 
 			dataInit = true;
 		}
 	}
 
+	static void callBedButtonSetVisible() {
+		int roomCallBed = StoragePreferences::getInt(STORE_ROOM_CALL_BED, 1);
+		if (!roomCallBed) {
+			// 如果roomCallBed是0的话,那就隐藏
+			mCallBedButtonPtr->setVisible(roomCallBed);
+
+			mCallNurseButtonPtr->setPosition(LayoutPosition(869, 125, 140, 55));
+			mCallCencelButtonPtr->setPosition(LayoutPosition(869, 209, 140, 55));
+			mHelpButtonPtr->setPosition(LayoutPosition(869, 293, 140, 55));
+			mNursingButtonPtr->setPosition(LayoutPosition(869, 377, 140, 55));
+			mMoreButtonPtr->setPosition(LayoutPosition(869, 461, 140, 55));
+
+		}
+		else {
+			// 如果roomCallBed是1的话,那就显示
+			mCallBedButtonPtr->setVisible(roomCallBed);
+
+			mCallNurseButtonPtr->setPosition(LayoutPosition(869, 198, 140, 55));
+			mCallCencelButtonPtr->setPosition(LayoutPosition(869, 271, 140, 55));
+			mHelpButtonPtr->setPosition(LayoutPosition(869, 344, 140, 55));
+			mNursingButtonPtr->setPosition(LayoutPosition(869, 417, 140, 55));
+			mMoreButtonPtr->setPosition(LayoutPosition(869, 490, 140, 55));
+		}
+	}
+
 	// 将医生和护士别称缓存起来
 	static void setRightTitle(Json::Value partSetting) {
 		rightTitleInfo["doctor_title"] = partSetting["doctor_title"].asString();

+ 0 - 1
jni/logic/sipTestLogic.cc

@@ -174,7 +174,6 @@ static S_ACTIVITY_TIMEER REGISTER_ACTIVITY_TIMER_TAB[] = {
 static void onUI_init(){
     //Tips :添加 UI初始化的显示代码到这里,如:mText1Ptr->setText("123");
 	mEditTextDestURIPtr->setText(StoragePreferences::getString(SIP_REG_DOOR_ACCOUNT, SIP_REG_DOOR_ACCOUNT_DEFAULT));
-
 }
 
 /**

+ 10 - 2
jni/logic/startLogic.cc

@@ -5,6 +5,7 @@
 #include "edge/call_log.h"
 #include "net/tcp_client.h"
 #include "net/tcp_model.h"
+#include "base/strings.hpp"
 
 #include "utils/GpioHelper.h"
 #include "utils/TimeHelper.h"
@@ -19,6 +20,7 @@
 static bool sosTimerRegistered = true;
 static bool isSleepTimerRegistered = false;		// 是否开启息屏定时任务
 static bool isSleep = false;	// 是否在息屏
+static string sosTid = "";
 #define HELP_TIMER_HANDLE 3	// 增援的定时器id
 #define SOS_CLICK_TIME_HANDLE 4	// sos的定时器id
 #define SOS_LAMP_TIME_HANDLE 5	// sos的门灯定时器id
@@ -484,7 +486,10 @@ void handleMsg(byte* inBytes){
 			if (callback.tid != "0"){
 				callback.onFalied(tcpModel.json);
 			}
-			callActivityFinish(CallFinishType::FAILED);
+
+			if (tcpModel.tid != sosTid){
+				callActivityFinish(CallFinishType::FAILED);
+			}
 		}
 
 	}
@@ -646,6 +651,7 @@ static S_ACTIVITY_TIMEER REGISTER_ACTIVITY_TIMER_TAB[] = {
 		{2, 30*1000}
 };
 
+
 /**
  * 当界面构造时触发
  */
@@ -668,6 +674,7 @@ static void onUI_init(){
 	//监听SIP信令
 	GetTelephone()->AddCallStateListener(OnCallStateChanged);
 
+
 	//请求版本号
 //	if(UartContext::Uart3IsOpen()) {
 //		string heartStr = "ASK,VNF-0";
@@ -824,11 +831,11 @@ static void onProtocolDataUpdate(const SProtocolData &data) {
 					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亮红灯
 					heartStr = "ULED,1F";
 					// 门灯亮红灯
@@ -836,6 +843,7 @@ static void onProtocolDataUpdate(const SProtocolData &data) {
 					const char* sendMsg2 = heartStr2.c_str();
 					sendProtocolTo(UART_TTYS2, (byte*)(sendMsg2), strlen(sendMsg2));
 
+					sosTid = tcpModel.tid;
 					sosTimerRegistered = false;
 					mActivityPtr->registerUserTimer(SOS_CLICK_TIME_HANDLE, 10000);		// 10秒后才能触发
 					mActivityPtr->registerUserTimer(SOS_LAMP_TIME_HANDLE, 120000);		// 2分钟后才能触发

+ 2 - 1
jni/logic/ui3Logic.cc

@@ -421,7 +421,8 @@ static bool onButtonClick_BackButton(ZKButton *pButton) {
 static bool onButtonClick_sys_back(ZKButton *pButton) {
     LOGD(" ButtonClick sys_back !!!\n");
     return false;
-}static bool onButtonClick_TestButton(ZKButton *pButton) {
+}
+static bool onButtonClick_TestButton(ZKButton *pButton) {
     LOGD(" ButtonClick TestButton !!!\n");
     mTestPasswordWindowPtr->showWnd();
     return false;

+ 4 - 2
jni/service/BusinessConfig.h

@@ -49,10 +49,11 @@
 
 #define STORE_AUDO_ANSWER "auto_answer"
 #define STORE_SCREEN_LIGHT "screen_light"
+#define STORE_ROOM_CALL_BED "room_call_bed"
 #define SIGNAL_TYPE "TCP" //TCP,SIP
 
-static std::string version = "v1.0.20";
-static int versionNo = 20;
+static std::string version = "v1.0.21";
+static int versionNo = 21;
 static std::string serverIP = "172.28.100.100";
 static std::string tcpIP = "172.28.100.100";
 static int serverHttpPort = 8006;
@@ -222,6 +223,7 @@ public:
 	inline static int twoColorDoorLightValid;
 	inline static std::string qrUrl;
 	inline static int screenLight;
+	inline static int roomCallBed;
 };
 
 /**

BIN
libs/armeabi/libzkgui.so


BIN
obj/activity/DeviceUpdateActivity.o


BIN
obj/activity/callActivity.o


BIN
obj/activity/mainActivity.o


BIN
obj/activity/sipTestActivity.o


BIN
obj/activity/startActivity.o


BIN
obj/activity/statusbar.o


BIN
obj/activity/ui3Activity.o


BIN
obj/activity/warnActivity.o


BIN
obj/core/update_assistant.o


BIN
obj/net/tcp_client.o


BIN
obj/service/BusinessConfig.o


BIN
obj/service/time.o