Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

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:

MethodDescription
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):

MethodDescription
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:

MethodDescription
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