nom_midi/parser/event/
sysex.rs

1//! System exclusive events
2
3use crate::parser::util::parse_var_length_bytes;
4use crate::types::{EscapeSequence, SystemExclusiveEvent};
5use nom::IResult;
6
7pub fn parse_sysex_message(i: &[u8]) -> IResult<&[u8], SystemExclusiveEvent> {
8    use nom::bytes::streaming::tag;
9    let (i, _) = tag([0xF0])(i)?;
10    let (i, data) = parse_var_length_bytes(i)?;
11    Ok((i, SystemExclusiveEvent(data)))
12}
13
14pub fn parse_escape_sequence(i: &[u8]) -> IResult<&[u8], EscapeSequence> {
15    use nom::bytes::streaming::tag;
16    let (i, _) = tag([0xF7])(i)?;
17    let (i, data) = parse_var_length_bytes(i)?;
18    Ok((i, EscapeSequence(data)))
19}