Messages

Stream 1 16 messages

S1F1R Are You There Request (R) Host ↔ Equipment

✅ Implemented · ControlStateMachine.HandleAreYouThereAsync / RequestOnlineAsync

Checks whether the other side is alive. A function 0 reply means communication is inoperative.

Header only - no body.

E30-0526 §7.3.6 / E5-0725 §10.5

S1F2 On-Line Data (D) Host ↔ Equipment

✅ Implemented · ControlStateMachine.HandleAreYouThereAsync

Reply to S1F1, signifying the sender is alive. From the equipment it carries MDLN and SOFTREV; from the host it is a zero-length list.

L,2
  MDLN
  SOFTREV

E30-0526 §7.3.6 / E5-0725 §10.5

S1F3R Selected Equipment Status Request (SSR) Host → Equipment

✅ Implemented · S1StatusHandlers.HandleSelectedStatusRequestAsync · API gem.Variables.Get(vid)

The host asks the equipment to report the current value of selected status variables.

L,n
  SVID

E30-0526 §7.3.5 / E5-0725 §10.5

S1F4 Selected Equipment Status Data (SSD) Equipment → Host

✅ Implemented · S1StatusHandlers.HandleSelectedStatusRequestAsync

The equipment reports the value of each requested SVID, in the order requested.

L,n
  SV

E30-0526 §7.3.5 / E5-0725 §10.5

S1F11R Status Variable Namelist Request (SVNR) Host → Equipment

✅ Implemented · S1StatusHandlers.HandleNamelistRequestAsync · API gem.Variables.StatusVariables

The host asks the equipment to identify selected status variables. A zero-length list requests all of them.

L,n
  SVID

E30-0526 §7.3.5 / E5-0725 §10.5

S1F12 Status Variable Namelist Reply (SVNRR) Equipment → Host

✅ Implemented · S1StatusHandlers.HandleNamelistRequestAsync

The equipment reports the identifier, name and units of the requested status variables.

L,n
  L,3
    SVID
    SVNAME
    UNITS

E30-0526 §7.3.5 / E5-0725 §10.5

S1F13R Establish Communications Request (CR) Host ↔ Equipment

✅ Implemented · CommunicationStateMachine.HandleEstablishRequestAsync / EstablishAsync · API gem.StartAsync()

Formally establishes communication at the application level, on power-up and after a break. Either side may initiate it.

L,2
  MDLN
  SOFTREV

E30-0526 §7.2 / E5-0725 §10.5

S1F14 Establish Communications Request Acknowledge (CRA) Host ↔ Equipment

✅ Implemented · CommunicationStateMachine.HandleEstablishRequestAsync

Accepts or denies the Establish Communications Request. MDLN and SOFTREV are valid only when COMMACK = 0.

L,2
  COMMACK
  L,2
    MDLN
    SOFTREV

Direction corrected against E5-0725: E5 §S1,F14 gives S,H<->E - either side may initiate S1F13, so either side may send this reply. The E30-0526 §10 message table lists S,H->E. E30 §10.1 states that the definitions of these messages are found in SEMI E5, so this site follows E5.

E30-0526 §7.2 / E5-0725 §10.5

S1F15R Request OFF-LINE (ROFL) Host → Equipment

✅ Implemented · ControlStateMachine.HandleOfflineRequestAsync · API gem.OnControlStateChangeRequest(handler)

The host requests that the equipment transition to the OFF-LINE state.

Header only - no body.

Direction corrected against E5-0725: E5 §S1,F15 gives S,H->E (the host sends it and requires a reply) - this is the request a host uses to drive the equipment OFF-LINE. The E30-0526 §10 message table lists S,H<-E, the opposite direction. E30 §10.1 states that the definitions of these messages are found in SEMI E5, so this site follows E5.

E30-0526 §7.13.3.2 / E5-0725 §10.5

S1F16 OFF-LINE Acknowledge (OFLA) Equipment → Host

✅ Implemented · ControlStateMachine.HandleOfflineRequestAsync

The equipment acknowledges the request to go OFF-LINE, or reports an error.

OFLACK

Direction corrected against E5-0725: E5 §S1,F16 gives S,H<-E - the equipment sends it to answer S1F15. The E30-0526 §10 message table lists S,H->E, the opposite direction. E30 §10.1 states that the definitions of these messages are found in SEMI E5, so this site follows E5.

E30-0526 §7.13.3.2 / E5-0725 §10.5

S1F17R Request ON-LINE (RONL) Host → Equipment

✅ Implemented · ControlStateMachine.HandleOnlineRequestAsync · API gem.OnControlStateChangeRequest(handler)

The host requests that the equipment transition to the ON-LINE state.

Header only - no body.

Direction corrected against E5-0725: E5 §S1,F17 gives S,H->E (the host sends it and requires a reply) - this is the request a host uses to bring the equipment ON-LINE. The E30-0526 §10 message table lists S,H<-E, the opposite direction. E30 §10.1 states that the definitions of these messages are found in SEMI E5, so this site follows E5.

E30-0526 §7.13.3.2 / E5-0725 §10.5

S1F18 ON-LINE Acknowledge (ONLA) Equipment → Host

✅ Implemented · ControlStateMachine.HandleOnlineRequestAsync

The equipment acknowledges the request to go ON-LINE, or reports an error.

ONLACK

E30-0526 §7.13.3.2 / E5-0725 §10.5

S1F21R Data Variable Namelist Request (DVNR) Host → Equipment

✅ Implemented · S1NamelistHandlers.HandleDataVariableNamelistRequestAsync · API gem.Variables.DataVariables

The host requests basic information about the data variables available in the equipment.

L,n
  DVID

E30-0526 §7.3.1.4 / E5-0725 §10.5

S1F22 Data Variable Namelist (DVN) Equipment → Host

✅ Implemented · S1NamelistHandlers.HandleDataVariableNamelistRequestAsync

The equipment reports the identifier, name and units of the requested data variables.

L,n
  L,3
    DVID
    DVVALNAME
    UNITS

E30-0526 §7.3.1.4 / E5-0725 §10.5

S1F23R Collection Event Namelist Request (CENR) Host → Equipment

✅ Implemented · S1NamelistHandlers.HandleCollectionEventNamelistRequestAsync · API gem.Events.DefinedEvents

The host asks which collection events exist and which data variables each one can supply.

L,n
  CEID

E30-0526 §7.3.1.4 / E5-0725 §10.5

S1F24 Collection Event Namelist (CEN) Equipment → Host

✅ Implemented · S1NamelistHandlers.HandleCollectionEventNamelistRequestAsync

The equipment reports the name and associated data variable identifiers for the requested collection events.

L,n
  L,3
    CEID
    CENAME
    L,a
      DVID

E30-0526 §7.3.1.4 / E5-0725 §10.5

Stream 2 44 messages

S2F13R Equipment Constant Request (ECR) Host → Equipment

✅ Implemented · S2ConstantHandlers.HandleRequestAsync · API gem.Variables.GetEquipmentConstant(ecid)

The host reads the current value of equipment constants: calibration values, gains, alarm limits and other rarely-changed settings.

L,n
  ECID

E30-0526 §7.6.3.2 / E5-0725 §10.6

S2F14 Equipment Constant Data (ECD) Equipment → Host

✅ Implemented · S2ConstantHandlers.HandleRequestAsync

The equipment reports the value of each requested ECID, in the order requested.

L,n
  ECV

E30-0526 §7.6.3.2 / E5-0725 §10.6

S2F15R New Equipment Constant Send (ECS) Host → Equipment

✅ Implemented · S2ConstantHandlers.HandleNewValuesAsync · API gem.OnEquipmentConstantChanged(handler)

The host changes one or more equipment constants.

L,n
  L,2
    ECID
    ECV

E30-0526 §7.6.3.1 / E5-0725 §10.6

S2F16 New Equipment Constant Acknowledge (ECA) Equipment → Host

✅ Implemented · S2ConstantHandlers.HandleNewValuesAsync

Acknowledges the change. When EAC is non-zero the equipment must not change any of the ECIDs named in S2F15.

EAC

E30-0526 §7.6.3.1 / E5-0725 §10.6

S2F17R Date and Time Request (DTR) Host ↔ Equipment

✅ Implemented · S2ClockHandlers.HandleTimeRequestAsync

Requests the current date and time from the other side.

Header only - no body.

E30-0526 §7.11 / E5-0725 §10.6

S2F18 Date and Time Data (DTD) Host ↔ Equipment

✅ Implemented · S2ClockHandlers.HandleTimeRequestAsync

Reports the current date and time.

TIME

E30-0526 §7.11 / E5-0725 §10.6

S2F23R Trace Initialize Send (TIS) Host → Equipment

✅ Implemented · S2TraceHandlers.HandleTraceInitializeAsync

The host starts a trace: which status variables to sample, how often, and how many samples. The data comes back on S6F1. A zero-length TRID stops every trace.

L,5
  TRID
  DSPER
  TOTSMP
  REPGSZ
  L,n
    SVID

Block count corrected against E5-0725: E5 §S2,F23 is M (may be multi-block) where the E30-0526 §10 message table lists S (single block); the direction is the same in both. A long enough SVID list pushes this message past one block, so a host must be able to send it multi-block. E30 §10.1 states that the definitions of these messages are found in SEMI E5, so this site follows E5.

E30-0526 §7.3.3 / E5-0725 §10.6

S2F24 Trace Initialize Acknowledge (TIA) Equipment → Host

✅ Implemented · S2TraceHandlers.HandleTraceInitializeAsync

Acknowledges the trace request, or reports an error.

TIAACK

E30-0526 §7.3.3 / E5-0725 §10.6

S2F29R Equipment Constant Namelist Request (ECNR) Host → Equipment

✅ Implemented · S2ConstantHandlers.HandleNamelistAsync · API gem.Variables.EquipmentConstants

The host requests which equipment constants exist, along with their limits and default values.

L,n
  ECID

E30-0526 §7.6.3.3 / E5-0725 §10.6

S2F30 Equipment Constant Namelist (ECN) Equipment → Host

✅ Implemented · S2ConstantHandlers.HandleNamelistAsync

The equipment reports each equipment constant identifier, name, minimum, maximum, default value and units.

L,n
  L,6
    ECID
    ECNAME
    ECMIN
    ECMAX
    ECDEF
    UNITS

E30-0526 §7.6.3.3 / E5-0725 §10.6

S2F31R Date and Time Send (DTS) Host → Equipment

✅ Implemented · S2ClockHandlers.HandleTimeSetAsync · API gem.OnDateTimeSet(handler)

The host sends its time to the equipment so the equipment can synchronise with it.

TIME

E30-0526 §7.11 / E5-0725 §10.6

S2F32 Date and Time Acknowledge (DTA) Equipment → Host

✅ Implemented · S2ClockHandlers.HandleTimeSetAsync

Acknowledges receipt of the date and time.

TIACK

E30-0526 §7.11 / E5-0725 §10.6

S2F33R Define Report (DR) Host → Equipment

✅ Implemented · EventReportRegistry.DefineReports · API gem.Events.GetReportVariables(rptid)

The host defines a set of reports, each a list of variable identifiers. A zero-length variable list deletes that report.

L,2
  DATAID
  L,a
    L,2
      RPTID
      L,b
        VID

E30-0526 §7.3.1.3 / E5-0725 §10.6

S2F34 Define-Report Acknowledge (DRA) Equipment → Host

✅ Implemented · EventReportRegistry.DefineReports

Acknowledges the report definitions. If any error is detected the whole message is rejected, with no partial changes.

DRACK

E30-0526 §7.3.1.3 / E5-0725 §10.6

S2F35R Link Event Report (LER) Host → Equipment

✅ Implemented · EventReportRegistry.LinkReports · API gem.Events.GetLinkedReports(ceid)

The host links previously defined reports to collection events. A zero-length report list removes every link for that event.

L,2
  DATAID
  L,a
    L,2
      CEID
      L,b
        RPTID

All or nothing; b = 0 removes every link for that event. The "variables this event supplies" constraint applies to <b>data variables</b> only — SV and EC values are current at all times (E30-0526 §7.3.2.3) and may be linked to any event.

E30-0526 §7.3.1.3 / E5-0725 §10.6

S2F36 Link Event Report Acknowledge (LERA) Equipment → Host

✅ Implemented · EventReportRegistry.LinkReports

Acknowledges the link request. If any error is detected the whole message is rejected, with no partial changes.

LRACK

E30-0526 §7.3.1.3 / E5-0725 §10.6

S2F37R Enable/Disable Event Report (EDER) Host → Equipment

✅ Implemented · EventReportRegistry.SetEventsEnabled · API gem.Events.IsEnabled(ceid)

The host enables or disables reporting for a set of collection events. A zero-length list applies to every event.

L,2
  CEED
  L,n
    CEID

E30-0526 §7.3.1.3 / E5-0725 §10.6

S2F38 Enable/Disable Event Report Acknowledge (EDEA) Equipment → Host

✅ Implemented · EventReportRegistry.SetEventsEnabled

Acknowledges the enable/disable request. If any error is detected the whole message is rejected.

ERACK

E30-0526 §7.3.1.3 / E5-0725 §10.6

S2F39R Multi-Block Inquire (DMBI) Host → Equipment

✅ Implemented · S2MultiBlockHandlers.HandleMultiBlockInquireAsync

Before sending a potentially large S2F23/S2F33/S2F35/S2F45/S2F49, the host asks whether the equipment can accept it. Mandatory over SECS-I for multi-block messages; optional over HSMS.

L,2
  DATAID
  DATALENGTH

The host asks whether the equipment can accept a potentially large S2F23/S2F33/S2F35/S2F45/S2F49 before sending it. Per E5 §10.2 this transaction is mandatory over SECS-I for multi-block messages and optional over HSMS — but what is optional is the host asking, not the equipment answering. The module decides from MaxInboundBodyBytes, the same threshold that drives S9F11.

E5-0725 §10.6

S2F40 Multi-Block Grant (DMBG) Equipment → Host

✅ Implemented · S2MultiBlockHandlers.HandleMultiBlockInquireAsync

The equipment grants or refuses permission to send the multi-block message.

GRANT

Reply to S2F39. GRANT = 0 grants permission; 2 means the declared length exceeds MaxInboundBodyBytes.

E5-0725 §10.6

S2F41R Host Command Send (HCS) Host → Equipment

✅ Implemented · S2RemoteCommandHandlers.HandleHostCommandAsync · API gem.OnRemoteCommand(rcmd, handler)

The host asks the equipment to perform a remote command with its associated parameters.

REMOTE only: the equipment accepts this message in the ONLINE/REMOTE state only, and refuses it otherwise.

L,2
  RCMD
  L,n
    L,2
      CPNAME
      CPVAL

E30-0526 §7.5 / E5-0725 §10.6

S2F42 Host Command Acknowledge (HCA) Equipment → Host

✅ Implemented · S2RemoteCommandHandlers.HandleHostCommandAsync

Acknowledges the command. When it is refused because of invalid parameters (HCACK = 3) the reply lists each offending parameter name and the reason.

L,2
  HCACK
  L,n
    L,2
      CPNAME
      CPACK

E30-0526 §7.5 / E5-0725 §10.6

S2F43R Reset Spooling Streams and Functions (RSSF) Host → Equipment

✅ Implemented · S2SpoolConfigHandlers.HandleResetSpoolingAsync

The host selects which streams and functions are to be spooled while spooling is active.

L,m
  L,2
    STRID
    L,n
      FCNID

E30-0526 §7.12 / E5-0725 §10.6

S2F44 Reset Spooling Acknowledge (RSA) Equipment → Host

✅ Implemented · S2SpoolConfigHandlers.HandleResetSpoolingAsync

Acknowledges the spooling selection, or reports an error.

L,2
  RSPACK
  L,m
    L,3
      STRID
      STRACK
      L,n
        FCNID

E30-0526 §7.12 / E5-0725 §10.6

S2F45R Define Variable Limit Attributes (DVLA) Host → Equipment

✅ Implemented · S2LimitHandlers.HandleDefineLimitsAsync · API AddStatusVariable(..., limitsMonitored: true)

The host defines variable monitoring limits. The three zero-length lists mean different things: clear everything, clear one variable, or set one limit to undefined.

L,2
  DATAID
  L,m
    L,2
      VID
      L,n
        L,2
          LIMITID
          L,2
            UPPERDB
            LOWERDB

Defines monitoring limits. The three zero-length lists mean different things: m = 0 clears every limit of every monitored variable, n = 0 clears that variable's, p = 0 sets that one limit to undefined. Any invalid item rejects the whole message (per E5's S2F46 rule) — no partial changes. Accepted definitions are written to non-volatile storage (E30 §7.3.4.4).

E30-0526 §7.3.4 / E5-0725 §10.6

S2F46 Variable Limit Attribute Acknowledge (VLAA) Equipment → Host

✅ Implemented · S2LimitHandlers.HandleDefineLimitsAsync

Acknowledges the limit definitions. When refused it lists each offending variable and limit. If any error is detected the whole message is rejected.

L,2
  VLAACK
  L,m
    L,3
      VID
      LVACK
      L,2
        LIMITID
        LIMITACK

Reply to S2F45. VLAACK = 0 means the whole batch was accepted; otherwise the second item lists each rejected variable and limit. LVACK covers variable-level problems (1 = does not exist, 2 = no limits capability); LIMITACK covers limit-level ones (2 = above LIMITMAX, 3 = below LIMITMIN, 4 = UPPERDB < LOWERDB).

E30-0526 §7.3.4 / E5-0725 §10.6

S2F47R Variable Limit Attribute Request (VLAR) Host → Equipment

✅ Implemented · S2LimitHandlers.HandleLimitRequestAsync

The host queries the current variable limit definitions. A zero-length list asks for every VID that supports limits.

L,m
  VID

Requests limit attributes. A zero-length list asks for every VID that can have limit attributes.

E30-0526 §7.3.4 / E5-0725 §10.6

S2F48 Variable Limit Attributes Send (VLAS) Equipment → Host

✅ Implemented · S2LimitHandlers.HandleLimitRequestAsync

The equipment reports the limit attributes in the order requested: units, LIMITMIN, LIMITMAX and each defined limit.

L,m
  L,2
    VID
    L,4
      UNITS
      LIMITMIN
      LIMITMAX
      L,n
        L,3
          LIMITID
          UPPERDB
          LOWERDB

Reply to S2F47, in the order requested. p = 0 means that VID does not support limits; n = 0 means no limits are currently defined.

E30-0526 §7.3.4 / E5-0725 §10.6

S2F49R Enhanced Remote Command Host → Equipment

✅ Implemented · S2RemoteCommandHandlers.HandleEnhancedCommandAsync · API gem.OnRemoteCommand(rcmd, handler)

The host sends an enhanced remote command, which can name a target object and allows nested parameter structures.

REMOTE only: the equipment accepts this message in the ONLINE/REMOTE state only, and refuses it otherwise.

L,4
  DATAID
  OBJSPEC
  RCMD
  L,m
    L,2
      CPNAME
      CEPVAL

E30-0526 §7.5 / E5-0725 §10.6

S2F50 Enhanced Remote Command Acknowledge Equipment → Host

✅ Implemented · S2RemoteCommandHandlers.HandleEnhancedCommandAsync

Acknowledges the enhanced remote command. The rejection reasons are the same as for S2F42.

L,2
  HCACK
  L,n
    L,2
      CPNAME
      CEPACK

E30-0526 §7.5 / E5-0725 §10.6

S2F51R Request List of Report Identifiers (RQRPTID) Host → Equipment

✅ Implemented · S2InformationHandlers.HandleReportIdRequestAsync · API gem.Events.DefinedReports

The host asks the equipment to list every currently defined report identifier.

Header only - no body.

E30-0526 §7.3.1.5 / E5-0725 §10.6

S2F52 Return List of Report Identifiers (RTRPTID) Equipment → Host

✅ Implemented · S2InformationHandlers.HandleReportIdRequestAsync

The equipment returns the identifier of every report currently defined.

L,n
  RPTID

E30-0526 §7.3.1.5 / E5-0725 §10.6

S2F53R Request List of Report Definitions (RQLRD) Host → Equipment

✅ Implemented · S2InformationHandlers.HandleReportDefinitionRequestAsync · API gem.Events.GetReportVariables(rptid)

The host asks the equipment to return one or more report definitions.

L,n
  RPTID

Direction corrected against E5-0725: E5 §S2,F53 gives M,H->E (the host sends it and requires a reply) - the host asks the equipment for its report definitions and gets S2F54 back. The E30-0526 §10 message table lists M,H<-E, the opposite direction. E30 §10.1 states that the definitions of these messages are found in SEMI E5, so this site follows E5.

E30-0526 §7.3.1.5 / E5-0725 §10.6

S2F54 Return List of Report Definitions (RTLRD) Equipment → Host

✅ Implemented · S2InformationHandlers.HandleReportDefinitionRequestAsync

The equipment returns the requested report definitions: which variables each report contains.

L,n
  L,2
    RPTID
    L,a
      VID

E30-0526 §7.3.1.5 / E5-0725 §10.6

S2F55R Request Event Report Links (RQERL) Host → Equipment

✅ Implemented · S2InformationHandlers.HandleEventLinkRequestAsync · API gem.Events.GetLinkedReports(ceid)

The host asks which reports are linked to one or more collection events.

L,n
  CEID

Direction corrected against E5-0725: E5 §S2,F55 gives M,H->E (the host sends it and requires a reply) - the host asks the equipment which reports are linked to which events and gets S2F56 back. The E30-0526 §10 message table lists M,H<-E, the opposite direction. E30 §10.1 states that the definitions of these messages are found in SEMI E5, so this site follows E5.

E30-0526 §7.3.1.5 / E5-0725 §10.6

S2F56 Return Event Report Links (RTERL) Equipment → Host

✅ Implemented · S2InformationHandlers.HandleEventLinkRequestAsync

The equipment returns the requested event-to-report links.

L,n
  L,3
    CEID
    CENAME
    L,a
      RPTID

E30-0526 §7.3.1.5 / E5-0725 §10.6

S2F57R Request List of Enabled Events (RQEE) Host → Equipment

✅ Implemented · S2InformationHandlers.HandleEnabledEventRequestAsync · API gem.Events.IsEnabled(ceid)

The host asks which collection events are currently enabled for reporting.

Header only - no body.

E30-0526 §7.3.1.5 / E5-0725 §10.6

S2F58 Return List of Enabled Events (RTEE) Equipment → Host

✅ Implemented · S2InformationHandlers.HandleEnabledEventRequestAsync

The equipment returns the identifiers of the events currently enabled. The same information is available from the EventsEnabled status variable.

L,n
  CEID

E30-0526 §7.3.1.5 / E5-0725 §10.6

S2F59R Request Selected Spooling Stream and Functions (RQSSF) Host → Equipment

✅ Implemented · S2InformationHandlers.HandleSpoolSetupRequestAsync

The host asks which streams and functions are currently selected for spooling.

Header only - no body.

E30-0526 §7.12.6 / E5-0725 §10.6

S2F60 Return Selected Spooling Stream and Functions (RTSSF) Equipment → Host

✅ Implemented · S2InformationHandlers.HandleSpoolSetupRequestAsync

The equipment returns the streams and functions currently selected for spooling.

L,n
  L,2
    STRID
    L,a
      FCNID

E30-0526 §7.12.6 / E5-0725 §10.6

S2F61R Request List of Trace Identifiers (RQTRID) Host → Equipment

✅ Implemented · S2InformationHandlers.HandleTraceIdRequestAsync

The host asks the equipment to list every currently defined trace identifier.

Header only - no body.

E30-0526 §7.3.3.7 / E5-0725 §10.6

S2F62 Return List of Trace Identifiers (RTTRID) Equipment → Host

✅ Implemented · S2InformationHandlers.HandleTraceIdRequestAsync

The equipment returns the identifier of every trace currently defined.

L,n
  TRID

E30-0526 §7.3.3.7 / E5-0725 §10.6

S2F63R Request Trace Definitions (RQTD) Host → Equipment

✅ Implemented · S2InformationHandlers.HandleTraceDefinitionRequestAsync

The host asks the equipment to return one or more trace definitions.

L,n
  TRID

Direction corrected against E5-0725: E5 §S2,F63 gives M,H->E (the host sends it and requires a reply) - the host asks the equipment for its trace definitions and gets S2F64 back. The E30-0526 §10 message table lists M,H<-E, the opposite direction. E30 §10.1 states that the definitions of these messages are found in SEMI E5, so this site follows E5.

E30-0526 §7.3.3.7 / E5-0725 §10.6

S2F64 Return Trace Definitions (RTTD) Equipment → Host

✅ Implemented · S2InformationHandlers.HandleTraceDefinitionRequestAsync

The equipment returns the requested trace definitions: sample period, total samples, group size and the variable list.

L,n
  L,5
    TRID
    DSPER
    TOTSMP
    REPGSZ
    L,a
      SVID

E30-0526 §7.3.3.7 / E5-0725 §10.6

Stream 5 8 messages

S5F1R Alarm Report Send (ARS) Equipment → Host

✅ Implemented · AlarmReporter.ApplyAsync · API gem.SetAlarmAsync(alid) / gem.ClearAlarmAsync(alid)

The equipment reports that an alarm has been set or cleared, carrying the alarm code, identifier and text. The top bit of ALCD says which.

L,3
  ALCD
  ALID
  ALTX

E30-0526 §7.4.3.4 / E5-0725 §10.9

S5F2 Alarm Report Acknowledge (ARA) Host → Equipment

✅ Implemented · OutboundGateway.InspectAcknowledgement

The host acknowledges the alarm report.

ACKC5

E30-0526 §7.4.3.4 / E5-0725 §10.9

S5F3R Enable/Disable Alarm Send (EAS) Host → Equipment

✅ Implemented · S5AlarmHandlers.HandleEnableAlarmAsync · API gem.Alarms.IsEnabled(alid)

The host enables or disables reporting for individual alarms. This changes only whether the alarm is sent to the host, not the alarm state itself. Alarms that are not controllable this way are unaffected.

L,2
  ALED
  ALID

E30-0526 §7.4.3.3 / E5-0725 §10.9

S5F4 Enable/Disable Alarm Acknowledge (EAA) Equipment → Host

✅ Implemented · S5AlarmHandlers.HandleEnableAlarmAsync

Acknowledges the enable/disable request, or reports an error.

ACKC5

E30-0526 §7.4.3.3 / E5-0725 §10.9

S5F5R List Alarms Request (LAR) Host → Equipment

✅ Implemented · S5AlarmHandlers.HandleListAlarmsAsync · API gem.Alarms.GetAllAlarms()

The host asks the equipment to list its alarms. A zero-length list requests all of them.

ALID

E30-0526 §7.4.3.5 / E5-0725 §10.9

S5F6 List Alarm Data (LAD) Equipment → Host

✅ Implemented · S5AlarmHandlers.HandleListAlarmsAsync

The equipment returns the alarm list, each entry carrying the alarm code, identifier and text.

L,m
  L,3
    ALCD
    ALID
    ALTX

E30-0526 §7.4.3.5 / E5-0725 §10.9

S5F7R List Enabled Alarm Request (LEAR) Host → Equipment

✅ Implemented · S5AlarmHandlers.HandleListEnabledAlarmsAsync · API gem.Alarms.GetEnabledAlarms()

The host asks which alarms are currently enabled for reporting.

Header only - no body.

E30-0526 §7.4.3.7 / E5-0725 §10.9

S5F8 List Enabled Alarm Data (LEAD) Equipment → Host

✅ Implemented · S5AlarmHandlers.HandleListEnabledAlarmsAsync

The equipment returns the list of alarms currently enabled for reporting.

L,m
  L,3
    ALCD
    ALID
    ALTX

Block count corrected against E5-0725: E5 §S5,F8 is M (may be multi-block) where the E30-0526 §10 message table lists S (single block); the direction is the same in both. With enough enabled alarms this reply exceeds one block, so a host must be able to receive it multi-block. E30 §10.1 states that the definitions of these messages are found in SEMI E5, so this site follows E5.

E30-0526 §7.4.3.7 / E5-0725 §10.9

Stream 6 12 messages

S6F1R Trace Data Send (TDS) Equipment → Host

✅ Implemented · TraceSession.FlushAsync

The equipment sends a group of trace samples, tied back to the originating S2F23 by its TRID.

L,4
  TRID
  SMPLN
  STIME
  L,n
    SV

The fourth item is a flat L,n where n = (number of SVIDs) x REPGSZ: the samples in one group follow one another inside that single list, rather than each sample getting its own nested L,(number of SVIDs). That flat shape comes from the figure in E30-0526 Annex A.4 - reading E5 on its own does not lead to it. Separately, the block count is corrected against E5-0725: E5 §S6,F1 is M (may be multi-block) where the E30-0526 §10 message table lists S (single block); the direction is the same in both.

E30-0526 §7.3.3 / E5-0725 §10.10

S6F2 Trace Data Acknowledge (TDA) Host → Equipment

✅ Implemented · OutboundGateway.InspectAcknowledgement

The host acknowledges the trace data.

ACKC6

E30-0526 §7.3.3 / E5-0725 §10.10

S6F5R Multi-block Data Send Inquire (MBI) Equipment → Host

❌ Not implemented

Before sending a potentially large data report, the equipment asks whether the host can accept it. Mandatory over SECS-I for multi-block messages; optional over HSMS.

Not implemented by this module; see SEMI E5-0725 §10.10 for the structure.

E5-0725 §10.10

S6F6 Multi-block Grant (MBG) Host → Equipment

❌ Not implemented

The host grants or refuses permission to send the multi-block message.

Not implemented by this module; see SEMI E5-0725 §10.10 for the structure.

E5-0725 §10.10

S6F11R Event Report Send (ERS) Equipment → Host

✅ Implemented · EventReporter.TriggerAsync · API gem.TriggerEventAsync(ceid)

When a collection event occurs, the equipment sends the host the group of reports that are defined, linked and enabled for that event.

L,3
  DATAID
  CEID
  L,a
    L,2
      RPTID
      L,b
        V

E30-0526 §7.3.1.2 / E5-0725 §10.10

S6F12 Event Report Acknowledge (ERA) Host → Equipment

✅ Implemented · OutboundGateway.InspectAcknowledgement

The host acknowledges the event report.

ACKC6

E30-0526 §7.3.1.2 / E5-0725 §10.10

S6F15R Event Report Request (ERR) Host → Equipment

✅ Implemented · S6EventHandlers.HandleEventReportRequestAsync

The host demands the report group for a given collection event without waiting for the event to occur.

CEID

E30-0526 §7.3.1.2 / E5-0725 §10.10

S6F16 Event Report Data (ERD) Equipment → Host

✅ Implemented · S6EventHandlers.HandleEventReportRequestAsync

The equipment sends the reports linked to the given collection event.

L,3
  DATAID
  CEID
  L,a
    L,2
      RPTID
      L,b
        V

E30-0526 §7.3.1.2 / E5-0725 §10.10

S6F19R Individual Report Request (IRR) Host → Equipment

❌ Not implemented

The host requests the contents of a single defined report.

Not implemented by this module; see SEMI E5-0725 §10.10 for the structure.

E30-0526 §7.3.2 / E5-0725 §10.10

S6F20 Individual Report Data (IRD) Equipment → Host

❌ Not implemented

The equipment sends the variable values contained in the requested report.

Not implemented by this module; see SEMI E5-0725 §10.10 for the structure.

E30-0526 §7.3.2 / E5-0725 §10.10

S6F23R Request Spooled Data (RSD) Host → Equipment

✅ Implemented · S6SpoolHandlers.HandleRequestSpooledDataAsync · API gem.Spool.TransmitAsync / gem.Spool.PurgeAsync

The host tells the equipment either to transmit the messages it currently has spooled, or to purge them.

RSDC

E30-0526 §7.12 / E5-0725 §10.10

S6F24 Request Spooled Data Acknowledgement Send (RSDAS) Equipment → Host

✅ Implemented · S6SpoolHandlers.HandleRequestSpooledDataAsync

The equipment acknowledges the spooled-data request with the appropriate code.

RSDA

E30-0526 §7.12 / E5-0725 §10.10

Stream 7 18 messages

S7F1R Process Program Load Inquire (PPI) Host ↔ Equipment

✅ Implemented · S7ProcessProgramHandlers.HandleGrantRequestAsync · API gem.OnProcessProgramGrantRequest(handler)

Asks the other side for permission to transfer a process program, declaring its PPID and length. Either side may initiate it.

L,2
  PPID
  LENGTH

E30-0526 §7.7 / E5-0725 §10.11

S7F2 Process Program Load Grant (PPG) Host ↔ Equipment

✅ Implemented · S7ProcessProgramHandlers.HandleGrantRequestAsync

Grants or refuses permission for the process program to be sent.

PPGNT

E30-0526 §7.7 / E5-0725 §10.11

S7F3R Process Program Send (PPS) Host ↔ Equipment

⚠️ Partial · S7ProcessProgramHandlers.HandleDownloadAsync · API gem.OnProcessProgramDownload(handler)

Sends the process program itself. Over SECS-I a multi-block S7F3 must be preceded by the S7F1/S7F2 inquire and grant.

L,2
  PPID
  PPBODY

By-reference transfer only: PPBODY carries a local file location and a SHA-256 hash, not the content of the process program itself. The PPBODY entry in the data item list gives the encoding.

E30-0526 §7.7 / E5-0725 §10.11

S7F4 Process Program Acknowledge (PPA) Host ↔ Equipment

✅ Implemented · S7ProcessProgramHandlers.HandleDownloadAsync

Acknowledges the process program, or reports an error.

ACKC7

E30-0526 §7.7 / E5-0725 §10.11

S7F5R Process Program Request (PPR) Host ↔ Equipment

⚠️ Partial · S7ProcessProgramHandlers.HandleUploadAsync · API gem.OnProcessProgramUploadRequest(handler)

Requests the transfer of the process program with the given PPID.

PPID

By-reference transfer only: the PPBODY of the S7F6 reply carries the location the program was placed at and its hash, not the content of the process program itself. The PPBODY entry in the data item list gives the encoding.

E30-0526 §7.7 / E5-0725 §10.11

S7F6 Process Program Data (PPD) Host ↔ Equipment

✅ Implemented · S7ProcessProgramHandlers.HandleUploadAsync

Sends the requested process program. A zero-length body means the PPID was not found.

L,2
  PPID
  PPBODY

E30-0526 §7.7 / E5-0725 §10.11

S7F17R Delete Process Program Send (DPS) Host → Equipment

✅ Implemented · S7ProcessProgramHandlers.HandleDeleteAsync · API gem.OnProcessProgramDelete(handler)

The host asks the equipment to delete one or more process programs. A zero-length list deletes all of them.

L,n
  PPID

E30-0526 §7.7 / E5-0725 §10.11

S7F18 Delete Process Program Acknowledge (DPA) Equipment → Host

✅ Implemented · S7ProcessProgramHandlers.HandleDeleteAsync

Acknowledges the delete request, or reports an error.

ACKC7

E30-0526 §7.7 / E5-0725 §10.11

S7F19R Current EPPD Request (RER) Host → Equipment

✅ Implemented · S7ProcessProgramHandlers.HandleListAsync · API gem.ProcessPrograms.List()

The host requests the equipment process program directory: the list of every PPID the equipment has stored.

Header only - no body.

E30-0526 §7.7 / E5-0725 §10.11

S7F20 Current EPPD Data (RED) Equipment → Host

✅ Implemented · S7ProcessProgramHandlers.HandleListAsync

The equipment returns the list of PPIDs it currently has stored.

L,n
  PPID

E30-0526 §7.7 / E5-0725 §10.11

S7F23R Formatted Process Program Send (FPS) Host ↔ Equipment

❌ Not implemented

Sends a formatted process program, whose body is a list of process commands and parameters. MDLN and SOFTREV come from the PCD that generated it.

Not implemented by this module; see SEMI E5-0725 §10.11 for the structure.

E30-0526 §7.7 / E5-0725 §10.11

S7F24 Formatted Process Program Acknowledge (FPA) Host ↔ Equipment

❌ Not implemented

Acknowledges receipt of a formatted process program and whether the interpreter accepted it. Accepted means only that the message can be interpreted, not that it will run.

Not implemented by this module; see SEMI E5-0725 §10.11 for the structure.

E30-0526 §7.7 / E5-0725 §10.11

S7F25R Formatted Process Program Request (FPR) Host ↔ Equipment

❌ Not implemented

Requests the formatted process program with the given PPID.

Not implemented by this module; see SEMI E5-0725 §10.11 for the structure.

E30-0526 §7.7 / E5-0725 §10.11

S7F26 Formatted Process Program Data (FPD) Host ↔ Equipment

❌ Not implemented

Sends the requested formatted process program.

Not implemented by this module; see SEMI E5-0725 §10.11 for the structure.

E30-0526 §7.7 / E5-0725 §10.11

S7F27R Process Program Verification Send (PVS) Equipment → Host

❌ Not implemented

The equipment tells the host that a process program has been received and checked, with the list of errors found. An empty list means it passed.

Not implemented by this module; see SEMI E5-0725 §10.11 for the structure.

E30-0526 §7.7 / E5-0725 §10.11

S7F28 Process Program Verification Acknowledge (PVA) Host → Equipment

❌ Not implemented

The host acknowledges the process program verification report.

Not implemented by this module; see SEMI E5-0725 §10.11 for the structure.

E30-0526 §7.7 / E5-0725 §10.11

S7F29R Process Program Verification Inquire (PVA) Equipment → Host

❌ Not implemented

The equipment asks the host for permission to send a multi-block process program verification report.

Not implemented by this module; see SEMI E5-0725 §10.11 for the structure.

E30-0526 §7.7 / E5-0725 §10.11

S7F30 Process Program Verification Grant (PVG) Host → Equipment

❌ Not implemented

The host grants or refuses permission to send the verification report.

Not implemented by this module; see SEMI E5-0725 §10.11 for the structure.

E30-0526 §7.7 / E5-0725 §10.11

Stream 9 7 messages

S9F1R Unrecognized Device ID (UDN) Equipment → Host

✅ Implemented · S9Messages.UnrecognizedDeviceId

The device ID in the message header did not match any device ID known to the node that detected the error.

MHEAD

E30-0526 §7.10 / E5-0725 §10.13

S9F3R Unrecognized Stream Type (USN) Equipment → Host

✅ Implemented · S9Messages.UnrecognizedStream

The receiver does not recognise the stream in the message header.

MHEAD

E30-0526 §7.10 / E5-0725 §10.13

S9F5R Unrecognized Function Type (UFN) Equipment → Host

✅ Implemented · S9Messages.UnrecognizedFunction

The stream is recognised but the receiver does not recognise the function.

MHEAD

E30-0526 §7.10 / E5-0725 §10.13

S9F7R Illegal Data (IDN) Equipment → Host

✅ Implemented · S9Messages.IllegalData

The stream and function were recognised but the message body was malformed: the structure did not match the definition, or a data type was not one of those allowed.

MHEAD

E30-0526 §7.10 / E5-0725 §10.13

S9F9R Transaction Timer Timeout (TTN) Equipment → Host

✅ Implemented · S9Messages.TransactionTimeout

A transaction timer expired and the corresponding transaction has been aborted.

SHEAD

E30-0526 §7.10 / E5-0725 §10.13

S9F11R Data Too Long (DLN) Equipment → Host

✅ Implemented · S9Messages.DataTooLong

The receiver was sent more data than it can handle.

MHEAD

E30-0526 §7.10 / E5-0725 §10.13

S9F13R Conversation Timeout (CTN) Equipment → Host

✅ Implemented · S9Messages.ConversationTimeout

A conversation made up of several messages did not complete within its time limit.

L,2
  MEXP
  EDID

E30-0526 §7.10 / E5-0725 §10.13

Stream 10 7 messages

S10F1R Terminal Request (TRN) Equipment → Host

✅ Implemented · SecsGemEquipment.SendTerminalMessageAsync · API gem.SendTerminalMessageAsync(terminalId, text)

The equipment asks the host to display a line of text to the operator.

L,2
  TID
  TEXT

E30-0526 §7.9 / E5-0725 §10.14

S10F2 Terminal Request Acknowledge (TRA) Host → Equipment

✅ Implemented · OutboundGateway.InspectAcknowledgement

The host acknowledges whether the terminal message will be displayed.

ACKC10

E30-0526 §7.9 / E5-0725 §10.14

S10F3R Terminal Display, Single (VTN) Host → Equipment

✅ Implemented · S10TerminalHandlers.HandleDisplayAsync · API gem.OnTerminalMessage(handler)

The host asks the equipment to display a line of text on its terminal.

L,2
  TID
  TEXT

E30-0526 §7.9 / E5-0725 §10.14

S10F4 Terminal Display, Single Acknowledge (VTA) Equipment → Host

✅ Implemented · S10TerminalHandlers.HandleDisplayAsync

The equipment acknowledges whether the terminal message will be displayed.

ACKC10

E30-0526 §7.9 / E5-0725 §10.14

S10F5R Terminal Display, Multi-block (VMN) Host → Equipment

✅ Implemented · S10TerminalHandlers.HandleMultiBlockDisplayAsync · API gem.OnTerminalMessage

The multi-block form of terminal display: the text is a list, one line per element.

L,2
  TID
  L,n
    TEXT

The multi-block form of terminal display: the text is a list, one line per element. The module joins them with newlines and hands them to the same handler as S10F3 — from the integrator's side it is the same event.

E30-0526 §7.9 / E5-0725 §10.14

S10F6 Terminal Display, Multi-block Acknowledge (VMA) Equipment → Host

✅ Implemented · S10TerminalHandlers.HandleMultiBlockDisplayAsync

Acknowledges whether the multi-block terminal message will be displayed.

ACKC10

Reply to S10F5. With no terminal-message handler registered it returns ACKC10 = 1 (will not display), the same rule as S10F4.

E30-0526 §7.9 / E5-0725 §10.14

S10F7R Multi-block Not Allowed (MNN) Equipment → Host

❌ Not implemented

Sent instead of S10F6 when the terminal cannot handle a multi-block message.

Not implemented by this module; see SEMI E5-0725 §10.14 for the structure.

The module deliberately never sends this. It is the escape hatch for terminals that cannot handle a multi-block message, but multi-block is an artefact of SECS-I's 244-byte block limit (E5 §6.3.2); over HSMS there is no such limit. When the text genuinely cannot be shown the module answers S10F6 with ACKC10 = 1 instead.

E30-0526 §7.9 / E5-0725 §10.14

Stream 21 20 messages

S21F1R Item Load Inquire (ITEMLI) Host ↔ Equipment

❌ Not implemented

Requests permission to start a single S21F3/S21F4 item transfer.

Not implemented by this module; see SEMI E5-0725 §10.25 for the structure.

E5-0725 §10.25

S21F2 Item Load Grant (ITEMLG) Host ↔ Equipment

❌ Not implemented

Grants or denies permission to send the item. When granted, ITEMACK is 0 and the error item is zero-length.

Not implemented by this module; see SEMI E5-0725 §10.25 for the structure.

E5-0725 §10.25

S21F3R Item Send (ITEMS) Host ↔ Equipment

❌ Not implemented

Sends an item in a single message, after a granted S21F1/S21F2 exchange. The item may be split into parts that the receiver concatenates back together.

Not implemented by this module; see SEMI E5-0725 §10.25 for the structure.

E5-0725 §10.25

S21F4 Item Send Acknowledge (ITEMSA) Host ↔ Equipment

❌ Not implemented

Acknowledges the item, or reports an error.

Not implemented by this module; see SEMI E5-0725 §10.25 for the structure.

E5-0725 §10.25

S21F5R Item Request (ITEMR) Host ↔ Equipment

❌ Not implemented

Requests the transfer of a particular item.

Not implemented by this module; see SEMI E5-0725 §10.25 for the structure.

E5-0725 §10.25

S21F6 Item Data (ITEMD) Host ↔ Equipment

❌ Not implemented

Transfers the requested item. It may be split into parts that the receiver concatenates back together.

Not implemented by this module; see SEMI E5-0725 §10.25 for the structure.

E5-0725 §10.25

S21F7R Item Type List Request (ITEMTLRQ) Host ↔ Equipment

❌ Not implemented

Requests the current list of items of a given item type. With the process-program item type, for example, this asks for the list of PPIDs.

Not implemented by this module; see SEMI E5-0725 §10.25 for the structure.

E5-0725 §10.25

S21F8 Item Type List Results (ITEMTLRS) Host ↔ Equipment

❌ Not implemented

Returns the current list of items for an item type, with each item length. Every item identifier in the list is unique.

Not implemented by this module; see SEMI E5-0725 §10.25 for the structure.

E5-0725 §10.25

S21F9R Supported Item Type List Request (ITEMTYPERQ) Host ↔ Equipment

❌ Not implemented

Requests the list of item types the other side supports.

Not implemented by this module; see SEMI E5-0725 §10.25 for the structure.

E5-0725 §10.25

S21F10 Supported Item Type List Results (ITEMTYPERS) Host ↔ Equipment

❌ Not implemented

Returns the supported item types; for example the unformatted-process-program type if recipes are supported.

Not implemented by this module; see SEMI E5-0725 §10.25 for the structure.

E5-0725 §10.25

S21F11R Item Delete (ITEMDEL) Host → Equipment

❌ Not implemented

Asks the other side to delete one or more items of a given item type.

Not implemented by this module; see SEMI E5-0725 §10.25 for the structure.

Direction corrected against E5-0725: E5 §S21,F11 gives M,H->E (the host sends it and requires a reply). The E30-0526 §10 message table lists M,H<->E. E30 §10.1 states that the definitions of these messages are found in SEMI E5, so this site follows E5.

E5-0725 §10.25

S21F12 Item Delete Acknowledge (ITEMDELACK) Equipment → Host

❌ Not implemented

Reports the outcome of each requested deletion.

Not implemented by this module; see SEMI E5-0725 §10.25 for the structure.

Direction corrected against E5-0725: E5 §S21,F12 gives M,H<-E - the equipment sends it to answer S21F11. The E30-0526 §10 message table lists M,H<->E. E30 §10.1 states that the definitions of these messages are found in SEMI E5, so this site follows E5.

E5-0725 §10.25

S21F13R Request Permission To Send Item Using S21F17 (RPTSIF17) Host ↔ Equipment

❌ Not implemented

Requests permission before sending an item as a sequence of S21F17/S21F18 transactions. Only one sequence per item may be open at a time.

Not implemented by this module; see SEMI E5-0725 §10.25 for the structure.

E5-0725 §10.25

S21F14 Grant Permission To Send Item Using S21F17 (GPTSIF17) Host ↔ Equipment

❌ Not implemented

Grants or denies permission to send the item as a sequence of S21F17/S21F18 transactions.

Not implemented by this module; see SEMI E5-0725 §10.25 for the structure.

E5-0725 §10.25

S21F15R Item Request Using S21F17 (ITEMRF17) Host ↔ Equipment

❌ Not implemented

Requests the transfer of an item as a sequence of S21F17/S21F18 transactions.

Not implemented by this module; see SEMI E5-0725 §10.25 for the structure.

E5-0725 §10.25

S21F16 Item Request Grant Using S21F17 (ITEMRGF17) Host ↔ Equipment

❌ Not implemented

Accepts or rejects the request to transfer an item as a sequence of S21F17/S21F18 transactions.

Not implemented by this module; see SEMI E5-0725 §10.25 for the structure.

E5-0725 §10.25

S21F17R Send Item Part (SIP) Host ↔ Equipment

❌ Not implemented

Sends one part of an item. The receiver concatenates the parts back into the original item.

Not implemented by this module; see SEMI E5-0725 §10.25 for the structure.

E5-0725 §10.25

S21F18 Send Item Part Acknowledge (IPACK) Host ↔ Equipment

❌ Not implemented

Acknowledges the item part, or reports an error.

Not implemented by this module; see SEMI E5-0725 §10.25 for the structure.

E5-0725 §10.25

S21F19R Item Type Feature Support (ITEMFS) Host ↔ Equipment

❌ Not implemented

Asks which Stream 21 features the other side supports for one or more item types.

Not implemented by this module; see SEMI E5-0725 §10.25 for the structure.

E5-0725 §10.25

S21F20 Item Type Feature Support Results (ITEMFSR) Host ↔ Equipment

❌ Not implemented

Reports which Stream 21 features are supported for the given item types.

Not implemented by this module; see SEMI E5-0725 §10.25 for the structure.

E5-0725 §10.25