-
Notifications
You must be signed in to change notification settings - Fork 0
Op Catalog
Fabian Plaimauer edited this page Jul 23, 2026
·
1 revision
Master table of every known TTP op code. Op constants live in
crates/tobii-protocol/src/frame.rs; the name table is
crates/tobii-recap/src/opnames.rs. Payloads all begin with the universal
2-byte 00 00 prefix unless noted. "Dir" is who initiates.
| Op (hex) | Dec | Name | Dir | Request payload | Response | Conf | Source |
|---|---|---|---|---|---|---|---|
0x3e8 |
1000 | hello | host→dev | fixed 47-byte blob | echoed/empty ack | [CONFIRMED] |
commands.rs HELLO_PAYLOAD
|
0x640 |
1600 | query_realm | host→dev | 00 00 |
realm_type (first u32 field) | [CODE-VERIFIED] | realm.rs |
0x76c |
1900 | open_realm | host→dev |
00 00 + u32(realm_type) + 00
|
realm_id, field_210, challenge | [CODE-VERIFIED] | realm.rs |
0x776 |
1910 | realm_response | host→dev |
00 00 + u32(realm_id) + u32(field_210) + 16-byte HMAC-MD5 |
ack | [CODE-VERIFIED] | realm.rs |
0x77b |
1915 | close_realm | host→dev |
00 00 + u32(realm_id) |
ack | [CODE-VERIFIED] | realm.rs::build_close_realm |
0x4c4 |
1220 | subscribe | host→dev | 20 B, stream_id BE at payload[9..10] | ack | [CONFIRMED] | commands.rs::subscribe_payload |
| Op (hex) | Dec | Name | Dir | Request payload | Response | Conf | Source |
|---|---|---|---|---|---|---|---|
0x596 |
1430 | get_display_area | host→dev | empty (no 00 00) |
00 00 + TL/TR/BL point3d + trailer |
[CONFIRMED] |
commands.rs::build_get_display_area, display.rs real-frame test |
0x5a0 |
1440 | set_display_area | host→dev |
00 00 + TL/TR/BL point3d + tag 0x10100 + u32 0x3039
|
ack | [CONFIRMED] | commands.rs::set_display_area_corners_payload |
| Op (hex) | Dec | Name | Dir | Request payload | Response | Conf | Source |
|---|---|---|---|---|---|---|---|
0x3f2 |
1010 | cal_start | host→dev | 00 00 |
ack | [CONFIRMED] live |
frame.rs, calibration.rs; memory et5-calibration-protocol
|
0x3fc |
1020 | cal_stop | host→dev | 00 00 |
ack | [CONFIRMED] live | same |
0x424 |
1060 | cal_clear | host→dev |
00 00 (destructive) |
ack | [CODE-VERIFIED] |
frame.rs OP_CAL_CLEAR
|
0x408 |
1032 | cal_add_point | host→dev |
00 00 + Q42(x) + Q42(y) + u32(eye) |
ack | [CONFIRMED] | calibration.rs::cal_add_point_payload |
0x42f |
1071 | cal_compute (compute and apply) | host→dev | 00 00 |
ack | [CODE-VERIFIED] |
frame.rs OP_CAL_COMPUTE
|
0x44c |
1100 | cal_retrieve | host→dev | 00 00 |
opaque blob | [CONFIRMED] |
connection.rs, real blob testdata |
0x456 |
1110 | cal_apply | host→dev |
00 00 + raw blob |
ack | [CODE-VERIFIED] | calibration.rs::cal_apply_payload |
0x438 |
1080 | cal_discard_point (discard_data_2d) | host→dev |
00 00 + Q42(x) + Q42(y) |
ack | [CODE-VERIFIED] | memory et5-calibration-protocol (not in frame.rs consts) |
0x42e |
1070 | cal_compute_and_apply_per_eye | host→dev | per-eye path; returns collected_eyes | — | [HYPOTHESIS] | memory et5-calibration-protocol (inferred, unverified) |
0x460 |
1120 | cal_stimulus_points_get | host→dev | quality: per-point L/R precision+bias | — | [CODE-VERIFIED] | memory et5-calibration-protocol
|
| Op (hex) | Dec | Name | Dir | Request payload | Response | Conf | Source |
|---|---|---|---|---|---|---|---|
0xc62 |
3170 | get_enabled_eye | host→dev | empty |
00 00 02 00 00 00 04 00 00 00 0N (N = 1 L / 2 R / 3 both) |
[CONFIRMED] |
commands.rs, connection.rs test |
0xc58 |
3160 | set_enabled_eye | host→dev |
00 00 02 00 00 00 04 + BE32(value) |
ack | [CONFIRMED] | commands.rs::set_enabled_eye_payload |
SET (
0xc58) is a LOWER op code than GET (0xc62) — the inverse of the display-area/calibration convention. This is real; do not "correct" it. [CODE-VERIFIED] — memoryet5-enabled-eye-op.
| Op (hex) | Name | Payload | Conf | Source |
|---|---|---|---|---|
0x500 |
gaze_notify | ~1692 B, 39 XDS columns, ~33 Hz | [CONFIRMED] |
gaze.rs; see Gaze-Stream
|
0x501 / 0x50e
|
eye-camera image (probable) | ~78 KB, ~33 Hz | [HYPOTHESIS] | live probe 2026-07-22; see Streams |
0x504 |
state-change event (probable) | 69 B, 2 columns, one-shot on subscribe | one-shot [CONFIRMED], meaning [HYPOTHESIS] | live probe |
Any op not above is a mapping target. tobii-recap prints these as
?unknown in its timeline (opnames.rs::op_label). Known open targets: