Protocol#
The entries of a scanner protocol, and the text blocks that carry them between the design calls and the scanner interpreter.
A protocol entry has a kind, a current value and the schema the scanner UI
presents it with: a range and increment for a numeric entry, and options for a
dropdown. Times are integer microseconds, the unit of the scanner’s time
parameters. A preset is a negative value that the UI shows as a word and
that a scanner sequence maps to a design choice, such as the shortest echo
time. The grammar of the blocks is the one pulseg_protocol_parse reads on the
interpreter side.
Entries#
Parameter names#
The names of the interpreter’s parameter table, grouped by the value type the
table declares, and the options of its string-list parameters. A scanner
sequence names its entries with them. Each name is a member of a StrEnum, so
a key is a str that equals and hashes as its wire name; the keys of a
protocol stay members until a wire block formats them.
Object |
Description |
|---|---|
A key of the protocol: a member of any of the key enums below. |
|
Collects the keys of every UI control, and returns the user-entry keys. |
|
Keys declared as float. |
|
Keys declared as integer. |
|
Keys declared as boolean. |
|
Keys declared as string lists. |
|
Keys the sequence declares to the interpreter rather than shows. |
|
Keys of the float user entries, |
|
Keys of the descriptions naming the user entries, |
|
Options of |
|
Options of |
|
Options of |
|
Options of |
Prescription#
The field-of-view offset and orientation the interpreter fills from the scanner’s prescription. The entries close every listing and are not bound to a design argument; the host applies the offset when it builds the IR, and checks the design in the physical frame the orientation gives.
Object |
Description |
|---|---|
Keys of every prescription entry: the offset’s, then the rotation’s. |
|
Keys of the field-of-view offset entries, in mm along the logical readout, phase and slice axes. |
|
Keys of the rotation entries, row-major: element |
|
Field-of-view offset that protocol values carry, in metres. |
|
Rotation from logical to physical axes that protocol values carry, made orthonormal. |
Wire blocks#
A listing carries every entry with its schema, as the list design call replies
it; a value block carries values only, as the validate and generate calls
read and reply them. These functions are the only place where keys and values
become text and text becomes them. The parsers return the key members for the
names they read, and a value block parsed against a listing returns each
string list as one of the listing’s options.
The RF blocks follow a reply when the call asks for them: [RfDefinitions]
after the listing and [RfLayout] after the value block of a valid
validation. Their readers ignore every other block, and the readers of the
listing and the value block ignore these.
Object |
Description |
|---|---|
First line of every protocol block. |
|
Last line of every protocol block. |
|
Format a protocol with its schema. |
|
Read a protocol with its schema from a listing block. |
|
Format a value block. |
|
Read a value block against the listing it was edited from. |
|
Format prescription entries as the |
|
Read the prescription entries out of the |
|
Reply to |
|
Format a |
|
Read a |
|
One RF definition of an |
|
Format the RF definitions of an evaluation, as the |
|
Read the |
|
The contents of an |
|
Format the RF layout of a validation, as the |
|
Read the |