grbli/device/response/state/
tool.rs

1const TOOL_LENGTH_REFERENCE_PREFIX: &str = "TLR:";
2
3
4/// Returns tool length reference offset set e.g. "TLR:1" 
5/// 
6/// # Examples
7/// ```
8/// use grbli::device::state::tool::parse_tool_length_reference;
9/// let tlr_offset_set = parse_tool_length_reference("TLR:1");
10/// assert!(tlr_offset_set.unwrap())
11/// ```
12pub fn parse_tool_length_reference(message: &str) -> Result<bool, String> {
13    if is_tool_length_reference(message) {
14        let tlr_message = &message[TOOL_LENGTH_REFERENCE_PREFIX.len()..];
15        
16        // only accept value 1 as offset set
17        return match tlr_message.parse::<i8>() {
18            Ok(value) => Ok(value == 1),
19            Err(_) => Err(format!("Cannot interpret tool reference length offset set value \"{}\"", tlr_message))
20        };
21    }
22    Err(format!("Cannot read tool reference length \"{}\"", message))
23}
24
25/// Indicates if message has tlr syntax
26pub fn is_tool_length_reference(message: &str) -> bool {
27    message.starts_with(TOOL_LENGTH_REFERENCE_PREFIX)
28}