Table of Contents

Class SbcTriggerService

Namespace
DuetControlServer.Model
Assembly
DuetControlServer.dll

Singleton hosted service that tracks and evaluates M581.1 expression-based triggers whose expressions reference SBC object model fields (which RRF cannot evaluate)

public sealed class SbcTriggerService : BackgroundService, IHostedService, IDisposable
Inheritance
SbcTriggerService
Implements
Inherited Members

Constructors

SbcTriggerService(CodeFactory, Expressions, ObjectModel, Observer, ILogger<SbcTriggerService>)

Singleton hosted service that tracks and evaluates M581.1 expression-based triggers whose expressions reference SBC object model fields (which RRF cannot evaluate)

public SbcTriggerService(CodeFactory codeFactory, Expressions expressions, ObjectModel model, Observer observer, ILogger<SbcTriggerService> logger)

Parameters

codeFactory CodeFactory

Factory to create code instances

expressions Expressions

Expression evaluator

model ObjectModel

Object model

observer Observer

Object model observer

logger ILogger<SbcTriggerService>

Logger

Methods

ConfigureAsync(Code, CancellationToken)

Register, update, or remove an SBC expression trigger from an M581.1 code. Returns null if the expression contains no SBC fields (so RRF can handle M581.1 itself), or a Message when the request was fully handled by this service.

public Task<Message?> ConfigureAsync(Code code, CancellationToken cancellationToken)

Parameters

code Code

M581.1 code with T, P, and optional R parameters

cancellationToken CancellationToken

Cancellation token

Returns

Task<Message>

Result message, or null to pass the code on to RRF

ExecuteAsync(CancellationToken)

Background loop that re-evaluates all registered triggers after each batch of OM changes. Fires the corresponding trigger macro on a false-to-true transition.

protected override Task ExecuteAsync(CancellationToken stoppingToken)

Parameters

stoppingToken CancellationToken

Returns

Task

Remove(int)

Remove a DSF-managed trigger, if one is registered for the given slot. Called when plain M581 (re)configures or deletes a trigger so RRF takes back ownership.

public void Remove(int triggerNumber)

Parameters

triggerNumber int

Trigger number (0–31)

StartAsync(CancellationToken)

Subscribes to OM change notifications when started

public override Task StartAsync(CancellationToken cancellationToken)

Parameters

cancellationToken CancellationToken

Returns

Task

StopAsync(CancellationToken)

Unsubscribes from OM change notifications when stopped

public override Task StopAsync(CancellationToken cancellationToken)

Parameters

cancellationToken CancellationToken

Returns

Task