From a9e9f76d23ee7206ea0080a8f5a94e312c9d90f1 Mon Sep 17 00:00:00 2001
From: LAPTOP-SNT8I5JK\Boounion <Chenluhua@qq.com>
Date: 星期二, 08 七月 2025 19:41:08 +0800
Subject: [PATCH] 1.UI分组启用和禁用,方便增加更多测试功能时代码整洁简单; 2.增加Are You There测试;

---
 SourceCode/Bond/EAPSimulator/CHsmsActive.cpp     |   17 ++++++++
 SourceCode/Bond/EAPSimulator/Resource.h          |    4 +
 SourceCode/Bond/EAPSimulator/EAPSimulatorDlg.cpp |   35 +++++++++++++----
 SourceCode/Bond/EAPSimulator/CHsmsActive.h       |    3 +
 SourceCode/Bond/EAPSimulator/EAPSimulatorDlg.h   |    4 ++
 SourceCode/Bond/EAPSimulator/EAPSimulator.rc     |    0 
 6 files changed, 53 insertions(+), 10 deletions(-)

diff --git a/SourceCode/Bond/EAPSimulator/CHsmsActive.cpp b/SourceCode/Bond/EAPSimulator/CHsmsActive.cpp
index 8a60924..ba8ccab 100644
--- a/SourceCode/Bond/EAPSimulator/CHsmsActive.cpp
+++ b/SourceCode/Bond/EAPSimulator/CHsmsActive.cpp
@@ -1,5 +1,6 @@
 #include "pch.h"
 #include "CHsmsActive.h"
+#include "Log.h"
 
 
 CHsmsActive::CHsmsActive()
@@ -32,16 +33,21 @@
 		}
 
 		if (ACTIVESTATE::NOT_SELECTED == state) {
+			LOGI("Active state changed(NOT_SELECTED).");
 			hsmsSelectRequest();
 		}
 		else if (ACTIVESTATE::SELECTED == state) {
+			LOGI("Active state changed(SELECTED).");
 			hsmsEstablishCommunications();
 		}
 		else if (ACTIVESTATE::NOT_CONNECTED == state) {
+			LOGI("Active state changed(NOT_CONNECTED).");
 			m_pActive->disconnect();
 		}
 	};
 	auto onRecvSysMessage = [&](void* pFrom, IMessage* pMessage) -> void {
+		LOGI("onRecvSysMessage(sessionId:%d, sType:%d).", 
+			pMessage->getHeader()->sessionId, pMessage->getHeader()->sType);
 		TRACE("sessionId:%d, sType:%d\n", pMessage->getHeader()->sessionId, pMessage->getHeader()->sType);
 	};
 
@@ -57,6 +63,7 @@
 		HEADER* pHeader = pMessage->getHeader();
 		TRACE("收到消息 S%dF%d================\n", pHeader->stream & 0x7F, pHeader->function);
 		TRACE("Body:%s\n", pMessage->toString());
+		LOGI("onRecvDataMessage(%s).", pMessage->toString());
 	};
 
 	ActiveListener listener;
@@ -113,3 +120,13 @@
 
 	return 0;
 }
+
+int CHsmsActive::hsmsAreYouThere()
+{
+	IMessage* pMessage = nullptr;
+	int nRet = HSMS_Create1Message(pMessage, m_nSessionId, 1 | REPLY, 1, ++m_nSystemByte);
+	m_pActive->sendMessage(pMessage);
+	HSMS_Destroy1Message(pMessage);
+
+	return 0;
+}
diff --git a/SourceCode/Bond/EAPSimulator/CHsmsActive.h b/SourceCode/Bond/EAPSimulator/CHsmsActive.h
index 0be2d4f..6e4b39e 100644
--- a/SourceCode/Bond/EAPSimulator/CHsmsActive.h
+++ b/SourceCode/Bond/EAPSimulator/CHsmsActive.h
@@ -25,10 +25,11 @@
 	// Deselect Request
 	int hsmsDeselectRequest();
 
-
 	// 建立通讯(S1F13)
 	int hsmsEstablishCommunications();
 
+	// Are You There
+	int hsmsAreYouThere();
 
 private:
 	ACTIVEListener m_listener;
diff --git a/SourceCode/Bond/EAPSimulator/EAPSimulator.rc b/SourceCode/Bond/EAPSimulator/EAPSimulator.rc
index 911d983..e6d32a0 100644
--- a/SourceCode/Bond/EAPSimulator/EAPSimulator.rc
+++ b/SourceCode/Bond/EAPSimulator/EAPSimulator.rc
Binary files differ
diff --git a/SourceCode/Bond/EAPSimulator/EAPSimulatorDlg.cpp b/SourceCode/Bond/EAPSimulator/EAPSimulatorDlg.cpp
index ee40fd2..e37d164 100644
--- a/SourceCode/Bond/EAPSimulator/EAPSimulatorDlg.cpp
+++ b/SourceCode/Bond/EAPSimulator/EAPSimulatorDlg.cpp
@@ -73,6 +73,7 @@
 	ON_WM_DESTROY()
 	ON_BN_CLICKED(IDC_BUTTON_CONNECT, &CEAPSimulatorDlg::OnBnClickedButtonConnect)
 	ON_BN_CLICKED(IDC_BUTTON_DISCONNECT, &CEAPSimulatorDlg::OnBnClickedButtonDisconnect)
+	ON_BN_CLICKED(IDC_BUTTON_ARE_YOU_THERE, &CEAPSimulatorDlg::OnBnClickedButtonAreYouThere)
 END_MESSAGE_MAP()
 
 
@@ -103,13 +104,11 @@
 				int state;
 				if (pAny->getIntValue("exCode", state)) {
 					if ((ACTIVESTATE)state == ACTIVESTATE::SELECTED) {
-						GetDlgItem(IDC_BUTTON_DISCONNECT)->EnableWindow(TRUE);
+						SetGroup2Enabled(TRUE);
 					}
 					if ((ACTIVESTATE)state == ACTIVESTATE::NOT_CONNECTED) {
-						GetDlgItem(IDC_BUTTON_DISCONNECT)->EnableWindow(FALSE);
-						GetDlgItem(IDC_EDIT_IP)->EnableWindow(TRUE);
-						GetDlgItem(IDC_EDIT_PORT)->EnableWindow(TRUE);
-						GetDlgItem(IDC_BUTTON_CONNECT)->EnableWindow(TRUE);
+						SetGroup2Enabled(FALSE);
+						SetGroup1Enabled(TRUE);
 					}
 				}
 			}
@@ -125,6 +124,8 @@
 		theApp.m_model.getObservable()->observeOn(pRxWindows->mainThread())
 			->subscribe(m_pObserver);
 	}
+
+	theApp.m_model.init();
 }
 
 BOOL CEAPSimulatorDlg::OnInitDialog()
@@ -158,6 +159,8 @@
 
 	SetDlgItemText(IDC_EDIT_IP, _T("127.0.0.1"));
 	SetDlgItemInt(IDC_EDIT_PORT, 7000);
+	SetGroup2Enabled(FALSE);
+	SetGroup1Enabled(TRUE);
 
 
 	// log edit
@@ -236,6 +239,19 @@
 	m_pObserver = NULL;
 }
 
+void CEAPSimulatorDlg::SetGroup1Enabled(bool enabled)
+{
+	GetDlgItem(IDC_EDIT_IP)->EnableWindow(enabled);
+	GetDlgItem(IDC_EDIT_PORT)->EnableWindow(enabled);
+	GetDlgItem(IDC_BUTTON_CONNECT)->EnableWindow(enabled);
+}
+
+void CEAPSimulatorDlg::SetGroup2Enabled(bool enabled)
+{
+	GetDlgItem(IDC_BUTTON_DISCONNECT)->EnableWindow(enabled);
+	GetDlgItem(IDC_BUTTON_ARE_YOU_THERE)->EnableWindow(enabled);
+}
+
 void CEAPSimulatorDlg::OnBnClickedButtonConnect()
 {
 	CString strIp;
@@ -243,12 +259,15 @@
 	GetDlgItemText(IDC_EDIT_IP, strIp);
 	port = GetDlgItemInt(IDC_EDIT_PORT);
 	theApp.m_model.connectEq((LPTSTR)(LPCTSTR)strIp, port);
-	GetDlgItem(IDC_EDIT_IP)->EnableWindow(FALSE);
-	GetDlgItem(IDC_EDIT_PORT)->EnableWindow(FALSE);
-	GetDlgItem(IDC_BUTTON_CONNECT)->EnableWindow(FALSE);
+	SetGroup1Enabled(FALSE);
 }
 
 void CEAPSimulatorDlg::OnBnClickedButtonDisconnect()
 {
 	theApp.m_model.disconnect();
 }
+
+void CEAPSimulatorDlg::OnBnClickedButtonAreYouThere()
+{
+	theApp.m_model.m_pHsmsActive->hsmsAreYouThere();
+}
diff --git a/SourceCode/Bond/EAPSimulator/EAPSimulatorDlg.h b/SourceCode/Bond/EAPSimulator/EAPSimulatorDlg.h
index 3107519..6ee81da 100644
--- a/SourceCode/Bond/EAPSimulator/EAPSimulatorDlg.h
+++ b/SourceCode/Bond/EAPSimulator/EAPSimulatorDlg.h
@@ -17,6 +17,9 @@
 private:
 	void AppendLog(int level, const char* pszText);
 	void InitRxWindow();
+	void SetGroup1Enabled(bool enabled);
+	void SetGroup2Enabled(bool enabled);
+
 
 // 瀵硅瘽妗嗘暟鎹�
 #ifdef AFX_DESIGN_TIME
@@ -43,4 +46,5 @@
 	afx_msg void OnDestroy();
 	afx_msg void OnBnClickedButtonConnect();
 	afx_msg void OnBnClickedButtonDisconnect();
+	afx_msg void OnBnClickedButtonAreYouThere();
 };
diff --git a/SourceCode/Bond/EAPSimulator/Resource.h b/SourceCode/Bond/EAPSimulator/Resource.h
index 09c9050..86f5d87 100644
--- a/SourceCode/Bond/EAPSimulator/Resource.h
+++ b/SourceCode/Bond/EAPSimulator/Resource.h
@@ -12,6 +12,8 @@
 #define IDC_EDIT_PORT                   1002
 #define IDC_BUTTON_CONNECT              1003
 #define IDC_BUTTON_DISCONNECT           1004
+#define IDC_BUTTON3                     1005
+#define IDC_BUTTON_ARE_YOU_THERE        1005
 
 // Next default values for new objects
 // 
@@ -19,7 +21,7 @@
 #ifndef APSTUDIO_READONLY_SYMBOLS
 #define _APS_NEXT_RESOURCE_VALUE        129
 #define _APS_NEXT_COMMAND_VALUE         32771
-#define _APS_NEXT_CONTROL_VALUE         1005
+#define _APS_NEXT_CONTROL_VALUE         1006
 #define _APS_NEXT_SYMED_VALUE           101
 #endif
 #endif

--
Gitblit v1.9.3