From fd67c9c025dcbf3adabd819502440aecca28dfcf Mon Sep 17 00:00:00 2001 From: digitzh Date: Wed, 23 Apr 2025 14:06:35 +0800 Subject: [PATCH 1/3] update README --- README.md | 2 +- src/FixedPeriod_Model/README.md | 24 +++++++++++++++++++++--- 2 files changed, 22 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 09a8e69..1f5bfea 100644 --- a/README.md +++ b/README.md @@ -38,7 +38,7 @@ MakeMe.sh ## 2.2 运行 -在3个终端分别运行: +以FixedPeriod为例,在3个终端分别运行: ```sh ./out/APPs/SampleFixedPeriodCommander/SampleFixedPeriodCommander 127.0.0.1:11111 127.0.0.1:11111,127.0.0.1:11112,127.0.0.1:11113 ./out/APPs/SampleFixedPeriod/SampleFixedPeriod 127.0.0.1:11112 127.0.0.1:11111,127.0.0.1:11112,127.0.0.1:11113 diff --git a/src/FixedPeriod_Model/README.md b/src/FixedPeriod_Model/README.md index 8b40d40..435b50a 100644 --- a/src/FixedPeriod_Model/README.md +++ b/src/FixedPeriod_Model/README.md @@ -88,7 +88,25 @@ while (running) { 验证基于 SCHED_DEADLINE 调度策略的实时任务模型能否正确初始化并运行,确保任务周期、运行时和截止时间参数设置符合预期。 -### 7.2 关键代码结构 +### 7.2 测试方法 + +在ComoFramework根目录下编译FixedPeriod_Model.cpp: +```sh +./buildMe.sh +``` +编译UDPMessageGenerator.cpp: +```sh +gcc -o UDPMessageGenerator UDPMessageGenerator.cpp +``` +在4个终端分别运行: +```sh +./src/UDPMessageGenerator +./out/APPs/SampleFixedPeriodCommander/SampleFixedPeriodCommander 127.0.0.1:11111 127.0.0.1:11111,127.0.0.1:11112,127.0.0.1:11113 +./out/APPs/SampleFixedPeriod/SampleFixedPeriod 127.0.0.1:11112 127.0.0.1:11111,127.0.0.1:11112,127.0.0.1:11113 +./out/APPs/SampleFixedPeriod/SampleFixedPeriod 127.0.0.1:11113 127.0.0.1:11111,127.0.0.1:11112,127.0.0.1:11113 +``` + +### 7.3 关键代码结构 | 代码部分 | 功能说明 | |-------------------------|--------------------------------------------------------------------------| @@ -100,7 +118,7 @@ while (running) { | EXPECT_NE 断言 | 验证调度器对象及其内部资源是否成功初始化 | | RunWithFineCycle | 启动精细化周期调度执行 | -### 7.3 测试逻辑 +### 7.4 测试逻辑 ##### 对象构造验证 通过 EXPECT_NE 检查 FixedPeriod 对象及其内部 mRealTimeTask 成员是否非空,确保调度器资源正确分配。 @@ -111,7 +129,7 @@ while (running) { ##### 实时任务集成 通过两个任务函数模拟实际负载,测试调度器能否正确处理多任务调度场景。 -### 7.4 技术细节 +### 7.5 技术细节 调度策略:使用 SCHED_DEADLINE 确保任务在截止时间内完成。 错误处理:通过 MyRunningErrorHandler 实现错误信息回调,增强调试能力。 -- Gitee From 4d7ea613e5d9ea3ced55127eeb6a51376e205c4b Mon Sep 17 00:00:00 2001 From: digitzh Date: Wed, 23 Apr 2025 14:06:51 +0800 Subject: [PATCH 2/3] ignore .vscode/ --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index fa152c4..45b4901 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,5 @@ out/ +.vscode/ # Prerequisites *.d -- Gitee From ea4795f0486cf0d38749490e4a35f235bc9c116c Mon Sep 17 00:00:00 2001 From: digitzh Date: Wed, 23 Apr 2025 14:07:33 +0800 Subject: [PATCH 3/3] transmit message to FPs --- src/FixedPeriod_Model/UDPFixedPeriodCommander.cpp | 10 +++++----- src/FixedPeriod_Model/UDPFixedPeriodCommander.h | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/FixedPeriod_Model/UDPFixedPeriodCommander.cpp b/src/FixedPeriod_Model/UDPFixedPeriodCommander.cpp index 23da177..1b60937 100644 --- a/src/FixedPeriod_Model/UDPFixedPeriodCommander.cpp +++ b/src/FixedPeriod_Model/UDPFixedPeriodCommander.cpp @@ -89,11 +89,11 @@ void UDPFixedPeriodCommander::ListenForUDP() { Logger::D("UDPFixedPeriodCommander", "Received UDP message: %s", buffer); // 处理UDP消息 - HandleUDPMessage(buffer); + HandleUDPMessage(buffer, recvLen); } } -void UDPFixedPeriodCommander::HandleUDPMessage(const char *message) { +void UDPFixedPeriodCommander::HandleUDPMessage(char *message, int recvLen) { if (strcmp(message, "StartTask") == 0) { Logger::D("UDPFixedPeriodCommander", "Triggering tasks via UDP message."); @@ -104,7 +104,7 @@ void UDPFixedPeriodCommander::HandleUDPMessage(const char *message) { if (0 != task->WaitForSyncSignal) { int iRet = PhxProposeDirectly(mPaxosServer, PosixSemaphorePost_SYNC, - (char *)"Sync#taskid", nullptr, 0); + (char *)"Sync#taskid", message, recvLen); if (iRet != 0) { Logger::E("UDPFixedPeriodCommander", "PhxProposeDirectly failed: %d", iRet); } @@ -113,7 +113,7 @@ void UDPFixedPeriodCommander::HandleUDPMessage(const char *message) { if (nullptr != task->WaitForSyncZMQ) { int iRet = PhxProposeDirectly(mPaxosServer, PosixDBusPost_SYNC, - task->WaitForSyncZMQ, nullptr, 0); + task->WaitForSyncZMQ, message, recvLen); if (iRet != 0) { Logger::E("UDPFixedPeriodCommander", "PhxProposeDirectly failed: %d", iRet); } @@ -124,7 +124,7 @@ void UDPFixedPeriodCommander::HandleUDPMessage(const char *message) { size_t bufSize = 0; int iRet = PhxPropose(mPaxosServer, PosixDBusPost_SYNC, - task->WaitForSyncPaxos, nullptr, 0, buf, &bufSize); + task->WaitForSyncPaxos, message, recvLen, buf, &bufSize); if (iRet != 0) { Logger::E("UDPFixedPeriodCommander", "PhxPropose failed: %d", iRet); } diff --git a/src/FixedPeriod_Model/UDPFixedPeriodCommander.h b/src/FixedPeriod_Model/UDPFixedPeriodCommander.h index 5c7c896..943e622 100644 --- a/src/FixedPeriod_Model/UDPFixedPeriodCommander.h +++ b/src/FixedPeriod_Model/UDPFixedPeriodCommander.h @@ -21,7 +21,7 @@ private: std::thread mUDPThread; void ListenForUDP(); - void HandleUDPMessage(const char *message); + void HandleUDPMessage(char *message, int recvLen); }; } // namespace como -- Gitee