From 90ae1c3db92833354814484e65f8cd2eef1f5f3e Mon Sep 17 00:00:00 2001
From: LAPTOP-SNT8I5JK\Boounion <Chenluhua@qq.com>
Date: 星期三, 30 七月 2025 15:14:20 +0800
Subject: [PATCH] 1.配方列表获取完善;

---
 SourceCode/Bond/EAPSimulator/CModel.cpp |  300 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 300 insertions(+), 0 deletions(-)

diff --git a/SourceCode/Bond/EAPSimulator/CModel.cpp b/SourceCode/Bond/EAPSimulator/CModel.cpp
new file mode 100644
index 0000000..1772e10
--- /dev/null
+++ b/SourceCode/Bond/EAPSimulator/CModel.cpp
@@ -0,0 +1,300 @@
+#include "pch.h"
+#include "CModel.h"
+#include "Log.h"
+#include "Common.h"
+
+
+CModel::CModel()
+{
+	m_pObservableEmitter = nullptr;
+	m_pObservable = nullptr;
+	m_pHsmsActive = nullptr;
+}
+
+CModel::~CModel()
+{
+}
+
+IObservable* CModel::getObservable()
+{
+	if (m_pObservable == nullptr) {
+		m_pObservable = RX_AllocaObservable([&](IObservableEmitter* e) -> void {
+			m_pObservableEmitter = e;			// 保存发射器
+			});
+	}
+
+	return m_pObservable;
+}
+
+void CModel::setWorkDir(const char* pszWorkDir)
+{
+	m_strWorkDir = pszWorkDir;
+}
+
+int CModel::init()
+{
+	CString strIniFile;
+
+
+
+	// Log
+	CString strLogDir;
+	strLogDir.Format(_T("%s\\Log"), (LPTSTR)(LPCTSTR)m_strWorkDir);
+	::CreateDirectory(strLogDir, NULL);
+	CLog::GetLog()->SetOnLogCallback([&](int level, const char* pszMessage) -> void {
+		notifyTextAndInt(RX_CODE_LOG, pszMessage, level);
+		});
+	CLog::GetLog()->SetAutoAppendTimeString(TRUE);
+	CLog::GetLog()->SetOutputTarget(OT_FILE);
+	CLog::GetLog()->SetLogsDir(strLogDir);
+	CLog::GetLog()->SetEquipmentId(_T("EAP"));
+	LOGI("\r\n\r\n~~~ Prog Start! ~~~");
+
+
+	return 0;
+}
+
+int CModel::term()
+{
+	CLog::GetLog()->SetOnLogCallback(nullptr);
+	if (m_pHsmsActive != nullptr) {
+		m_pHsmsActive->term();
+		delete m_pHsmsActive;
+	}
+
+	return 0;
+}
+
+int CModel::connectEq(const char* pszIp, int port)
+{
+	if (m_pHsmsActive != nullptr) {
+		m_pHsmsActive->term();
+		delete m_pHsmsActive;
+	}
+
+	ACTIVEListener listener;
+	listener.onStateChanged = [&](void* pFrom, ACTIVESTATE state) -> void {
+		notifyInt(RX_CODE_ACTIVE_STATUS_CHANGED, (int)state);
+	};
+
+	m_pHsmsActive = new CHsmsActive();
+	m_pHsmsActive->setListener(listener);
+	m_pHsmsActive->init(pszIp, port);
+	return 0;
+}
+
+int CModel::disconnect()
+{
+	if (m_pHsmsActive == nullptr) {
+		return -1;
+	}
+
+	m_pHsmsActive->hsmsDeselectRequest();
+	return 0;
+}
+
+int CModel::notify(int code)
+{
+	/* code */
+	if (m_pObservableEmitter != NULL) {
+		IAny* pAny = RX_AllocaAny();
+		if (pAny != NULL) {
+			pAny->addRef();
+			pAny->setCode(code);
+			m_pObservableEmitter->onNext(pAny);
+			pAny->release();
+		}
+	}
+
+	return 1;
+}
+
+int CModel::notifyPtr(int code, void* ptr/* = NULL*/)
+{
+	/* code */
+	if (m_pObservableEmitter != NULL) {
+		IAny* pAny = RX_AllocaAny();
+		if (pAny != NULL) {
+			pAny->addRef();
+			pAny->setCode(code);
+			pAny->setPtrValue("ptr", ptr);
+			m_pObservableEmitter->onNext(pAny);
+			pAny->release();
+		}
+	}
+
+	return 1;
+}
+
+int CModel::notifyObj(int code, IRxObject* pObj)
+{
+	/* code */
+	if (m_pObservableEmitter != NULL) {
+		IAny* pAny = RX_AllocaAny();
+		if (pAny != NULL) {
+			pAny->addRef();
+			pAny->setCode(code);
+			pAny->setObject("obj", pObj);
+			m_pObservableEmitter->onNext(pAny);
+			pAny->release();
+		}
+	}
+
+	return 1;
+}
+
+int CModel::notifyObjAndPtr(int code, IRxObject* pObj, void* ptr)
+{
+	/* code */
+	if (m_pObservableEmitter != NULL) {
+		IAny* pAny = RX_AllocaAny();
+		if (pAny != NULL) {
+			pAny->addRef();
+			pAny->setCode(code);
+			pAny->setObject("obj", pObj);
+			pAny->setPtrValue("ptr", ptr);
+			m_pObservableEmitter->onNext(pAny);
+			pAny->release();
+		}
+	}
+
+	return 1;
+}
+
+int CModel::notifyInt(int code, int exCode)
+{
+	if (m_pObservableEmitter != NULL) {
+		IAny* pAny = RX_AllocaAny();
+		if (pAny != NULL) {
+			pAny->addRef();
+			pAny->setCode(code);
+			pAny->setIntValue("exCode", exCode);
+			m_pObservableEmitter->onNext(pAny);
+			pAny->release();
+		}
+	}
+
+	return 0;
+}
+
+int CModel::notifyInt2(int code, int exCode, int exCode2)
+{
+	if (m_pObservableEmitter != NULL) {
+		IAny* pAny = RX_AllocaAny();
+		if (pAny != NULL) {
+			pAny->addRef();
+			pAny->setCode(code);
+			pAny->setIntValue("exCode", exCode);
+			pAny->setIntValue("exCode2", exCode2);
+			m_pObservableEmitter->onNext(pAny);
+			pAny->release();
+		}
+	}
+
+	return 0;
+}
+
+int CModel::notifyDouble(int code, double dValue)
+{
+	if (m_pObservableEmitter != NULL) {
+		IAny* pAny = RX_AllocaAny();
+		if (pAny != NULL) {
+			pAny->addRef();
+			pAny->setCode(code);
+			pAny->setDoubleValue("value", dValue);
+			m_pObservableEmitter->onNext(pAny);
+			pAny->release();
+		}
+	}
+
+	return 0;
+}
+
+int CModel::notifyObjAndInt(int code, IRxObject* pObj1, IRxObject* pObj2, int exCode)
+{
+	if (m_pObservableEmitter != NULL) {
+		IAny* pAny = RX_AllocaAny();
+		if (pAny != NULL) {
+			pAny->addRef();
+			pAny->setCode(code);
+			if (pObj1 != nullptr) pAny->setObject("obj", pObj1);
+			if (pObj2 != nullptr) pAny->setObject("obj2", pObj2);
+			pAny->setIntValue("exCode", exCode);
+			m_pObservableEmitter->onNext(pAny);
+			pAny->release();
+		}
+	}
+
+	return 0;
+}
+
+int CModel::notifyText(int code, const char* pszText)
+{
+	if (m_pObservableEmitter != NULL) {
+		IAny* pAny = RX_AllocaAny();
+		if (pAny != NULL) {
+			pAny->addRef();
+			pAny->setCode(code);
+			pAny->setStringValue("text", pszText);
+			m_pObservableEmitter->onNext(pAny);
+			pAny->release();
+		}
+	}
+
+	return 0;
+}
+
+int CModel::notifyTextAndInt(int code, const char* pszText, int exCode)
+{
+	if (m_pObservableEmitter != NULL) {
+		IAny* pAny = RX_AllocaAny();
+		if (pAny != NULL) {
+			pAny->addRef();
+			pAny->setCode(code);
+			pAny->setStringValue("text", pszText);
+			pAny->setIntValue("exCode", exCode);
+			m_pObservableEmitter->onNext(pAny);
+			pAny->release();
+		}
+	}
+
+	return 0;
+}
+
+int CModel::notifyPtrAndInt(int code, void* ptr1, void* ptr2, int exCode)
+{
+	if (m_pObservableEmitter != NULL) {
+		IAny* pAny = RX_AllocaAny();
+		if (pAny != NULL) {
+			pAny->addRef();
+			pAny->setCode(code);
+			pAny->setPtrValue("ptr", ptr1);
+			pAny->setPtrValue("ptr1", ptr1);
+			pAny->setPtrValue("ptr2", ptr2);
+			pAny->setIntValue("exCode", exCode);
+			m_pObservableEmitter->onNext(pAny);
+			pAny->release();
+		}
+	}
+
+	return 0;
+}
+
+int CModel::notifyMesMsg(int code, int stream, int function, const char* pszText)
+{
+	if (m_pObservableEmitter != NULL) {
+		IAny* pAny = RX_AllocaAny();
+		if (pAny != NULL) {
+			pAny->addRef();
+			pAny->setCode(code);
+			pAny->setIntValue("stream", stream);
+			pAny->setIntValue("function", function);
+			pAny->setStringValue("text", pszText);
+			m_pObservableEmitter->onNext(pAny);
+			pAny->release();
+		}
+	}
+
+	return 0;
+}
+

--
Gitblit v1.9.3