MachineService (gRPC)
Generated content. This page is produced by
cargo run --bin gen_docs(src-tauri/src/bin/gen_docs/) readingproto/maslow/v1/*.proto's compiledFileDescriptorSet, viaprost-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
- Kind: unary
- Request:
GetMachineStatusRequest - Response:
MachineStatus
GetActionPolicy
- Kind: unary
- Request:
GetActionPolicyRequest - Response:
ActionPolicy
GetSnapshot
- Kind: unary
- Request:
GetSnapshotRequest - Response:
Snapshot
Connect
- Kind: unary
- Request:
ConnectRequest - Response:
ConnectResponse
Disconnect
- Kind: unary
- Request:
DisconnectRequest - Response:
DisconnectResponse
Jog
- Kind: unary
- Request:
JogRequest - Response:
JogResponse
Home
- Kind: unary
- Request:
HomeRequest - Response:
HomeResponse
Unlock
- Kind: unary
- Request:
UnlockRequest - Response:
UnlockResponse
Hold
- Kind: unary
- Request:
HoldRequest - Response:
HoldResponse
Resume
- Kind: unary
- Request:
ResumeRequest - Response:
ResumeResponse
Zero
- Kind: unary
- Request:
ZeroRequest - Response:
ZeroResponse
Retract
- Kind: unary
- Request:
RetractRequest - Response:
RetractResponse
Extend
- Kind: unary
- Request:
ExtendRequest - Response:
ExtendResponse
TakeSlack
- Kind: unary
- Request:
TakeSlackRequest - Response:
TakeSlackResponse
Comply
- Kind: unary
- Request:
ComplyRequest - Response:
ComplyResponse
Calibrate
- Kind: unary
- Request:
CalibrateRequest - Response:
CalibrateResponse
Stop
- Kind: unary
- Request:
StopRequest - Response:
StopResponse
EStop
- Kind: unary
- Request:
EStopRequest - Response:
EStopResponse
SendLine
- Kind: unary
- Request:
SendLineRequest - Response:
SendLineResponse
SendRealtime
- Kind: unary
- Request:
SendRealtimeRequest - Response:
SendRealtimeResponse
WriteSetting
- Kind: unary
- Request:
WriteSettingRequest - Response:
WriteSettingResponse
SaveConfig
- Kind: unary
- Request:
SaveConfigRequest - Response:
SaveConfigResponse
PingMachine
- Kind: unary
- Request:
PingMachineRequest - Response:
PingMachineResponse
GetFirmwareVersion
- Kind: unary
- Request:
GetFirmwareVersionRequest - Response:
GetFirmwareVersionResponse
WatchMachineEvents
- Kind: server streaming
- Request:
WatchMachineEventsRequest - Response:
MachineEvent(a stream of these)
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.
| Field | Type | Description |
|---|---|---|
jog | bool | |
home | bool | |
unlock | bool | |
zero | bool | |
run | bool | |
hold | bool | |
resume | bool | |
reset | bool | |
retract | bool | |
extend | bool | |
take_slack | bool | |
calibrate | bool | |
comply | bool | |
stop | bool | |
estop | bool |
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.
| Field | Type | Description |
|---|---|---|
tl_x | double | |
tl_y | double | |
tr_x | double | |
tr_y | double | |
br_x | double |
Anchors
Frame anchor coordinates (mm), as stored in the firmware config.
| Field | Type | Description |
|---|---|---|
tl_x | float | |
tl_y | float | |
tr_x | float | |
tr_y | float | |
bl_x | float | |
bl_y | float | |
br_x | float | |
br_y | float | |
valid | bool | True 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. |
calibrated | bool | True 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}".
| Field | Type | Description |
|---|---|---|
path | string | |
value | string | |
kind | ConfigKind |
ConfigEntryList
proto3 cannot use repeated directly inside a oneof field, so a
dump's entries are wrapped in this single-field message instead.
| Field | Type | Description |
|---|---|---|
entries | repeated ConfigEntry |
ConfigKind
Best-effort value type, letting a caller pick an appropriate input widget or parser.
| Value | Number | Description |
|---|---|---|
CONFIG_KIND_UNSPECIFIED | 0 | |
CONFIG_KIND_BOOL | 1 | |
CONFIG_KIND_INT | 2 | |
CONFIG_KIND_FLOAT | 3 | |
CONFIG_KIND_TEXT | 4 |
ConnectRequest
| Field | Type | Description |
|---|---|---|
host | string |
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).
| Field | Type | Description |
|---|---|---|
kind | string | "straggler" (suppressed) or "accepted" (state updated to match). |
from | int32 | |
to | int32 | |
from_label | string | |
to_label | string |
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.
| Field | Type | Description |
|---|---|---|
rms | double | |
max_residual | double | |
per_anchor | repeated double | |
converged | bool |
GetActionPolicyRequest
| Field | Type | Description |
|---|---|---|
name | string |
GetFirmwareVersionRequest
| Field | Type | Description |
|---|---|---|
host | string |
GetFirmwareVersionResponse
| Field | Type | Description |
|---|---|---|
version | string | (part of oneof _version) |
GetMachineStatusRequest
| Field | Type | Description |
|---|---|---|
name | string | "machines/default" |
GetSnapshotRequest
| Field | Type | Description |
|---|---|---|
name | string |
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.
| Field | Type | Description |
|---|---|---|
dx | double | |
dy | double | |
dz | double | |
feed | double |
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.
| Field | Type | Description |
|---|---|---|
ws_state | WsState | (part of oneof payload) |
ws_error | string | (part of oneof payload) |
grbl_line | string | (part of oneof payload) |
status | MachineStatus | (part of oneof payload) |
ws_control | string | (part of oneof payload) |
action_policy | ActionPolicy | (part of oneof payload) |
anchors | Anchors | (part of oneof payload) |
maslow_info | MaslowInfo | (part of oneof payload) |
maslow_state | StatePolicy | (part of oneof payload) |
waypoint | Waypoint | (part of oneof payload) |
discord | Discord | (part of oneof payload) |
cal_measurements | MeasurementList | (part of oneof payload) |
cal_firmware_fit | FirmwareFit | (part of oneof payload) |
cal_firmware_anchors | AnchorParams | (part of oneof payload) |
cal_complete | bool | (part of oneof payload) |
config_dump | ConfigEntryList | (part of oneof payload) |
config_dump_error | string | (part of oneof payload) |
MachineStatus
A parsed GRBL/FluidNC realtime status report ("<...>").
| Field | Type | Description |
|---|---|---|
state | string | e.g. "Idle", "Run", "Hold", "Alarm", "Jog", "Home". |
substate | int32 | (part of oneof _substate) |
mpos | repeated float | Machine position (absolute). Axis count varies; Maslow uses X,Y,Z. |
wpos | repeated float | Work position (machine position minus work offset). |
wco | repeated float | Work coordinate offset, when reported. |
feed | float | |
spindle | float | |
buffer_blocks | int32 | Planner buffer blocks / RX serial bytes free. (part of oneof _buffer_blocks) |
buffer_bytes | int32 | (part of oneof _buffer_bytes) |
ov | repeated int32 | Feed / rapid / spindle overrides in percent. |
MaslowInfo
Maslow belt-tension / homed telemetry ("$Maslow/getInfo").
| Field | Type | Description |
|---|---|---|
homed | bool | |
calibration_in_progress | bool | |
tl | float | Belt lengths (mm) for each arm. Unset when the firmware reported a NaN/Inf reading for that arm. (part of oneof _tl) |
tr | float | (part of oneof _tr) |
br | float | (part of oneof _br) |
bl | float | (part of oneof _bl) |
etl | float | Belt position errors (mm) for each arm. Unset when the firmware reported a NaN/Inf reading for that arm. (part of oneof _etl) |
etr | float | (part of oneof _etr) |
ebr | float | (part of oneof _ebr) |
ebl | float | (part of oneof _ebl) |
extended | bool |
Measurement
One belt-length measurement at a calibration waypoint (mm, XY plane).
| Field | Type | Description |
|---|---|---|
tl | double | |
tr | double | |
bl | double | |
br | double |
MeasurementList
Wrapper for the same reason as ConfigEntryList above.
| Field | Type | Description |
|---|---|---|
measurements | repeated Measurement |
PingMachineRequest
| Field | Type | Description |
|---|---|---|
host | string |
PingMachineResponse
| Field | Type | Description |
|---|---|---|
reachable | bool | |
status | uint32 | |
info | string |
ResumeRequest
No fields.
ResumeResponse
No fields.
RetractRequest
No fields.
RetractResponse
No fields.
SaveConfigRequest
No fields.
SaveConfigResponse
No fields.
SendLineRequest
| Field | Type | Description |
|---|---|---|
line | string |
SendLineResponse
No fields.
SendRealtimeRequest
| Field | Type | Description |
|---|---|---|
byte | uint32 |
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.
| Field | Type | Description |
|---|---|---|
ws_state | WsState | |
status | MachineStatus | (part of oneof _status) |
action_policy | ActionPolicy | (part of oneof _action_policy) |
maslow_info | MaslowInfo | (part of oneof _maslow_info) |
maslow_state | StatePolicy | (part of oneof _maslow_state) |
anchors | Anchors | (part of oneof _anchors) |
config_entries | repeated 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).
| Field | Type | Description |
|---|---|---|
code | int32 | |
label | string | |
busy | bool | True 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
| Field | Type | Description |
|---|---|---|
name | string |
Waypoint
A calibration grid waypoint reported by the firmware.
| Field | Type | Description |
|---|---|---|
n | int32 | |
x | float | |
y | float |
WriteSettingRequest
| Field | Type | Description |
|---|---|---|
path | string | |
value | string |
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.
| Value | Number | Description |
|---|---|---|
WS_STATE_UNSPECIFIED | 0 | |
DISCONNECTED | 1 | |
CONNECTED | 2 |
ZeroRequest
| Field | Type | Description |
|---|---|---|
axes | repeated string | Axis letters to zero, e.g. ["X", "Y"]. Empty means all axes. |
ZeroResponse
No fields.