Appendix D: CommandMessage Helper Methods
When writing external modules (see Writing External Modules), these helper methods on CommandMessage from the mechutil crate are available:
Constructors:
| Method | Description |
|---|---|
CommandMessage::new() | Empty message with defaults |
CommandMessage::request(topic, data) | Generic Request (message_type = 10) |
CommandMessage::read(topic) | Read request (message_type = 2) |
CommandMessage::write(topic, data) | Write request (message_type = 3) |
CommandMessage::subscribe(topic) | Subscribe request (message_type = 4) |
CommandMessage::broadcast(topic, data) | Broadcast message (message_type = 6) |
CommandMessage::response(tid, data) | Success response |
CommandMessage::error_response(tid, err) | Error response |
CommandMessage::control(type, data) | Control message (message_type = 8) |
Mutation methods (used inside handle_message):
| Method | Description |
|---|---|
msg.set_success(data) | Mark as successful, set response data |
msg.set_error("reason") | Mark as failed, set error message |
msg.into_response(data) | Consume and return a success response |
msg.into_error_response("reason") | Consume and return an error response |
Query methods:
| Method | Description |
|---|---|
msg.domain() | First segment of topic (e.g., "gm" from "gm.motor_speed") |
msg.subtopic() | Everything after the first dot (e.g., "motor_speed" from "gm.motor_speed") |
msg.is_response() | true if message_type == Response |
msg.is_request() | true if Read, Write, Subscribe, Unsubscribe, or Request |
msg.is_broadcast() | true if message_type == Broadcast |