BB1: full E40 S16F11 body — MF, PRRECIPEMETHOD, RCPVARS, PRPROCESSPARAMS

Replaces the simplified <L,3 PRJOBID PPID MTRLOUTSPEC> demo body with
the full SEMI E40-0705 §10.2 shape:

  <L,5 PRJOBID MF PRRECIPEMETHOD
       <L,2 PPID <L,n <L,2 RCPPARNM RCPPARVAL>>>
       <L,n MTRLOUTSPEC>
       <L,n <L,2 PARAMNAME PARAMVAL>>>

ProcessJob now carries the extra fields (MaterialFlag, ProcessRecipeMethod,
RcpVar[], ProcessParam[]) so a tool's recipe engine can later consume
the recipe-variable overrides and per-job process parameters.  Server
S16F11 dispatch populates them via the new ProcessJobStore::set_e40_extras
helper after a successful create.

MaterialFlag + ProcessRecipeMethod enums live in their own tiny header
(`e40_constants.hpp`) so process_jobs.hpp (the store) can use them
without dragging in messages_helpers.hpp (which would create a circular
include via data_model.hpp).

The simplified 3-arg HostHandler::send_create_process_job convenience
remains; it constructs a sensible-default PRJobCreateRequest internally.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
2026-06-08 23:44:05 +02:00
parent 4197cdfb25
commit cfa2d1e531
8 changed files with 170 additions and 22 deletions
+28
View File
@@ -0,0 +1,28 @@
#pragma once
#include <cstdint>
// E40-0705 §10.2 constants used by both the runtime stores (e.g.
// ProcessJob carries MaterialFlag) and the generated message catalog
// (S16F11 PRJobCreate body shape). Kept in its own tiny header so the
// store side can use them without pulling in messages_helpers.hpp,
// which in turn pulls in data_model.hpp -> the stores themselves.
namespace secsgem::gem {
// E40 S16F11 MF (Material Flag). Classifies what the material outspec
// represents. Values from SEMI E40 §10.2.
enum class MaterialFlag : uint8_t {
Substrate = 0, // outspec holds substrate / wafer IDs
Carrier = 1, // outspec holds carrier IDs
Other = 2, // tool-defined
};
// E40 S16F11 PRRECIPEMETHOD. Tells equipment what to do with the
// recipe id in RCPSPEC.
enum class ProcessRecipeMethod : uint8_t {
RecipeOnly = 0, // PPID identifies an existing recipe; use as is
RecipeWithVariableTuning = 1, // PPID + apply RCPVARLIST overrides
};
} // namespace secsgem::gem