Skip to main content

MachineService (gRPC)

Generated content. This page is produced by cargo run --bin gen_docs (src-tauri/src/bin/gen_docs/) reading proto/maslow/v1/*.proto's compiled FileDescriptorSet, via prost-reflect, re-run on every docs-site build. Do not hand-edit it: fix the generator or the source it reads instead.

The machine is modeled as a singleton resource ("machines/default"): there is one physical machine per connection, so no List/Create/Delete methods. Operations that act on it (jog, home, e-stop, ...) are AIP-136 custom methods rather than forced into Create/Update/Delete semantics.

Full name: maslow.v1.MachineService

Methods

GetMachineStatus

GetActionPolicy

GetSnapshot

Connect

Disconnect

Jog

Home

Unlock

Hold

Resume

Zero

Retract

Extend

TakeSlack

Comply

Calibrate

Stop

EStop

SendLine

SendRealtime

WriteSetting

SaveConfig

PingMachine

GetFirmwareVersion

WatchMachineEvents

Types

Every message and enum reachable from this service's requests and responses, including shared types defined in common.proto.

ActionPolicy

Which machine actions are currently allowed, reconciled from FluidNC state, Maslow calibration state, and whether a job is streaming.

FieldTypeDescription
jogbool
homebool
unlockbool
zerobool
runbool
holdbool
resumebool
resetbool
retractbool
extendbool
take_slackbool
calibratebool
complybool
stopbool
estopbool

AnchorParams

The reduced 5-parameter anchor estimate the solver optimises over. BL is fixed at the origin and BR's Y is fixed at 0, so they are not parameters.

FieldTypeDescription
tl_xdouble
tl_ydouble
tr_xdouble
tr_ydouble
br_xdouble

Anchors

Frame anchor coordinates (mm), as stored in the firmware config.

FieldTypeDescription
tl_xfloat
tl_yfloat
tr_xfloat
tr_yfloat
bl_xfloat
bl_yfloat
br_xfloat
br_yfloat
validboolTrue when the geometry is non-degenerate and passes the firmware's own basic sanity checks, i.e. the anchors are usable as a frame definition.
calibratedboolTrue when the anchors are valid AND differ from the firmware's compiled defaults, i.e. a calibration actually ran and overwrote them.

CalibrateRequest

No fields.

CalibrateResponse

No fields.

ComplyRequest

No fields.

ComplyResponse

No fields.

ConfigEntry

One editable leaf of the FluidNC config tree. path is the /-joined key path a write expects (e.g. "axes/x/steps_per_mm", "Maslow_Scale_X"); the resource name for Get/List is "configEntries/{path}".

FieldTypeDescription
pathstring
valuestring
kindConfigKind

ConfigEntryList

proto3 cannot use repeated directly inside a oneof field, so a dump's entries are wrapped in this single-field message instead.

FieldTypeDescription
entriesrepeated ConfigEntry

ConfigKind

Best-effort value type, letting a caller pick an appropriate input widget or parser.

ValueNumberDescription
CONFIG_KIND_UNSPECIFIED0
CONFIG_KIND_BOOL1
CONFIG_KIND_INT2
CONFIG_KIND_FLOAT3
CONFIG_KIND_TEXT4

ConnectRequest

FieldTypeDescription
hoststring

ConnectResponse

No fields.

DisconnectRequest

No fields.

DisconnectResponse

No fields.

Discord

A calibration state report that contradicted the expected transition graph (either suppressed as a straggler, or accepted as the machine prevailing over our tracked state).

FieldTypeDescription
kindstring"straggler" (suppressed) or "accepted" (state updated to match).
fromint32
toint32
from_labelstring
to_labelstring

EStopRequest

No fields.

EStopResponse

No fields.

ExtendRequest

No fields.

ExtendResponse

No fields.

FirmwareFit

Fitness numbers the firmware itself logs after a recompute, used as a comparison point against the client-side solve.

FieldTypeDescription
rmsdouble
max_residualdouble
per_anchorrepeated double
convergedbool

GetActionPolicyRequest

FieldTypeDescription
namestring

GetFirmwareVersionRequest

FieldTypeDescription
hoststring

GetFirmwareVersionResponse

FieldTypeDescription
versionstring(part of oneof _version)

GetMachineStatusRequest

FieldTypeDescription
namestring"machines/default"

GetSnapshotRequest

FieldTypeDescription
namestring

HoldRequest

No fields.

HoldResponse

No fields.

HomeRequest

No fields.

HomeResponse

No fields.

JogRequest

Structured jog request, translated into the appropriate firmware jog command. Distances in mm, relative to the current position.

FieldTypeDescription
dxdouble
dydouble
dzdouble
feeddouble

JogResponse

No fields.

MachineEvent

One update from the machine, mirroring one of the existing Tauri events 1:1. WatchMachineEvents streams these; JobProgress is deliberately not included here (see job.proto's WatchJobProgress) so a telemetry-only consumer is not forced to also receive high-frequency job progress.

FieldTypeDescription
ws_stateWsState(part of oneof payload)
ws_errorstring(part of oneof payload)
grbl_linestring(part of oneof payload)
statusMachineStatus(part of oneof payload)
ws_controlstring(part of oneof payload)
action_policyActionPolicy(part of oneof payload)
anchorsAnchors(part of oneof payload)
maslow_infoMaslowInfo(part of oneof payload)
maslow_stateStatePolicy(part of oneof payload)
waypointWaypoint(part of oneof payload)
discordDiscord(part of oneof payload)
cal_measurementsMeasurementList(part of oneof payload)
cal_firmware_fitFirmwareFit(part of oneof payload)
cal_firmware_anchorsAnchorParams(part of oneof payload)
cal_completebool(part of oneof payload)
config_dumpConfigEntryList(part of oneof payload)
config_dump_errorstring(part of oneof payload)

MachineStatus

A parsed GRBL/FluidNC realtime status report ("<...>").

FieldTypeDescription
statestringe.g. "Idle", "Run", "Hold", "Alarm", "Jog", "Home".
substateint32(part of oneof _substate)
mposrepeated floatMachine position (absolute). Axis count varies; Maslow uses X,Y,Z.
wposrepeated floatWork position (machine position minus work offset).
wcorepeated floatWork coordinate offset, when reported.
feedfloat
spindlefloat
buffer_blocksint32Planner buffer blocks / RX serial bytes free. (part of oneof _buffer_blocks)
buffer_bytesint32(part of oneof _buffer_bytes)
ovrepeated int32Feed / rapid / spindle overrides in percent.

MaslowInfo

Maslow belt-tension / homed telemetry ("$Maslow/getInfo").

FieldTypeDescription
homedbool
calibration_in_progressbool
tlfloatBelt lengths (mm) for each arm. Unset when the firmware reported a NaN/Inf reading for that arm. (part of oneof _tl)
trfloat(part of oneof _tr)
brfloat(part of oneof _br)
blfloat(part of oneof _bl)
etlfloatBelt position errors (mm) for each arm. Unset when the firmware reported a NaN/Inf reading for that arm. (part of oneof _etl)
etrfloat(part of oneof _etr)
ebrfloat(part of oneof _ebr)
eblfloat(part of oneof _ebl)
extendedbool

Measurement

One belt-length measurement at a calibration waypoint (mm, XY plane).

FieldTypeDescription
tldouble
trdouble
bldouble
brdouble

MeasurementList

Wrapper for the same reason as ConfigEntryList above.

FieldTypeDescription
measurementsrepeated Measurement

PingMachineRequest

FieldTypeDescription
hoststring

PingMachineResponse

FieldTypeDescription
reachablebool
statusuint32
infostring

ResumeRequest

No fields.

ResumeResponse

No fields.

RetractRequest

No fields.

RetractResponse

No fields.

SaveConfigRequest

No fields.

SaveConfigResponse

No fields.

SendLineRequest

FieldTypeDescription
linestring

SendLineResponse

No fields.

SendRealtimeRequest

FieldTypeDescription
byteuint32

SendRealtimeResponse

No fields.

Snapshot

Aggregate of the machine's current known state in one round trip, mainly for a caller (an LLM tool call, in particular) that wants full context without issuing several requests. Any field may be unset if that piece of telemetry has not been observed yet on the current connection.

FieldTypeDescription
ws_stateWsState
statusMachineStatus(part of oneof _status)
action_policyActionPolicy(part of oneof _action_policy)
maslow_infoMaslowInfo(part of oneof _maslow_info)
maslow_stateStatePolicy(part of oneof _maslow_state)
anchorsAnchors(part of oneof _anchors)
config_entriesrepeated ConfigEntry

StatePolicy

The Maslow calibration state machine's current label and busy flag for the observed state. The set of allowed action ids behind this state is not exposed here; callers should use ActionPolicy, the already-reconciled allow-list (FluidNC state + calibration state + job state combined).

FieldTypeDescription
codeint32
labelstring
busyboolTrue while the machine is actively performing an operation (transitional state).

StopRequest

No fields.

StopResponse

No fields.

TakeSlackRequest

No fields.

TakeSlackResponse

No fields.

UnlockRequest

No fields.

UnlockResponse

No fields.

WatchMachineEventsRequest

FieldTypeDescription
namestring

Waypoint

A calibration grid waypoint reported by the firmware.

FieldTypeDescription
nint32
xfloat
yfloat

WriteSettingRequest

FieldTypeDescription
pathstring
valuestring

WriteSettingResponse

No fields.

WsState

Connection state of the live WebSocket to the machine. Only the states the connection loop actually reports today; nothing currently reports a transient "connecting" state.

ValueNumberDescription
WS_STATE_UNSPECIFIED0
DISCONNECTED1
CONNECTED2

ZeroRequest

FieldTypeDescription
axesrepeated stringAxis letters to zero, e.g. ["X", "Y"]. Empty means all axes.

ZeroResponse

No fields.