From 829fe6c6bc33d53fda9c31fd45a37e1df87befff Mon Sep 17 00:00:00 2001
From: mrDarker <mr.darker@163.com>
Date: 星期五, 30 一月 2026 11:16:24 +0800
Subject: [PATCH] Merge branch 'clh' into liuyang
---
SourceCode/Bond/Servo/ProcessJob.h | 42 ++++++++++++++++++++++++++++++++++++++----
1 files changed, 38 insertions(+), 4 deletions(-)
diff --git a/SourceCode/Bond/Servo/ProcessJob.h b/SourceCode/Bond/Servo/ProcessJob.h
index 7c78b26..576b30a 100644
--- a/SourceCode/Bond/Servo/ProcessJob.h
+++ b/SourceCode/Bond/Servo/ProcessJob.h
@@ -8,6 +8,16 @@
#include <chrono>
#include <optional>
+
+
+struct PJWarp {
+ BOOL addToCj;
+ void* pj;
+ int port;
+ BOOL checkSlot[8];
+ int material[8];
+};
+
namespace SERVO {
/// PJ 生命周期(贴近 E40 常见状态)
enum class PJState : uint8_t {
@@ -49,8 +59,9 @@
}
*/
struct CarrierSlotInfo {
- std::string carrierId; // CARRIERID
- std::vector<uint8_t> slots; // SLOTID[]
+ std::string carrierId; // CARRIERID
+ std::vector<uint8_t> slots; // SLOTID[]
+ std::vector<void*> contexts; // Glass
};
/// 简单资源视图接口:供 Validate() 查询(由设备端实现者在外部提供)
@@ -89,6 +100,7 @@
explicit CProcessJob(std::string pjId);
const std::string& id() const noexcept { return m_pjId; }
+ void setId(std::string& id);
const std::string& parentCjId() const noexcept { return m_parentCjId; }
PJState state() const noexcept { return m_state; }
StartPolicy startPolicy() const noexcept { return m_startPolicy; }
@@ -120,7 +132,8 @@
};
// 返回问题清单(空=通过)
bool validate(const IResourceView& rv);
- const std::vector<ValidationIssue>& issues();
+ const std::vector<ValidationIssue>& issues() const;
+ void addIssue(uint32_t code, const std::string& msg);
// —— 状态机(带守卫)——
bool queue(); // NoState -> Queued
@@ -129,7 +142,7 @@
bool pause(); // InProcess -> Paused
bool resume(); // Paused -> InProcess
bool complete(); // InProcess -> Completed
- bool abort(); // Any (未终态) -> Aborted
+ bool abort(std::string reason); // Any (未终态) -> Aborted
bool fail(std::string reason); // 任意态 -> Failed(记录失败原因)
// —— 访问器(用于上报/查询)——
@@ -152,8 +165,13 @@
// 追加一个载具
void addCarrier(std::string carrierId, std::vector<uint8_t> slots);
+ // 设置载具slots和contexts
+ bool setCarrierSlotsAndContexts(std::string carrierId, std::vector<uint8_t> slots, std::vector<void*> contexts);
+ bool setCarrierContexts(std::string carrierId, std::vector<void*> contexts);
+
// 访问器
const std::vector<CarrierSlotInfo>& carriers() const noexcept { return m_carriers; }
+ CarrierSlotInfo* getCarrier(const std::string& strId);
// 判定是否“按载具/卡位”方式
bool usesCarrierSlots() const noexcept { return !m_carriers.empty(); }
@@ -208,6 +226,22 @@
// 错误列表
std::vector<ValidationIssue> m_issues;
+
+ // 新增
+ std::string m_strLotId;
+ std::string m_strProductId;
+ std::string m_strOperationId;
+ PJWarp m_pjWarp;
+
+ public:
+ void setLotId(std::string strLotId);
+ std::string& getLotId();
+ void setProductId(std::string strProductId);
+ std::string& getProductId();
+ void setOperationId(std::string strOperationId);
+ std::string& getOperationId();
+ void setPjWarp(PJWarp pjWarp);
+ PJWarp& getPjWarp();
};
}
--
Gitblit v1.9.3