diff --git a/src/mqtt_mux.rs b/src/mqtt_mux.rs index 9cc1a12..3986d50 100644 --- a/src/mqtt_mux.rs +++ b/src/mqtt_mux.rs @@ -70,35 +70,13 @@ impl MqttMux where SPI: Transfer { pub fn process_mqtt(&mut self, topic: &str, message: &[u8]) -> Result<(), Error> { let header = self.parse_topic(topic) .map_err(|_| Error::MqttTopicError)?; - info!("{:?}", header); + info!("Parsed command topic: {:?}", header); let (_, command) = self.parse_message(header, message) .map_err(|_| Error::MqttCommandError)?; - info!("{:?}", command); + info!("Parsed comamnd message: {:?}", command); self.execute(command) } -/* - fn parse_header<'a>(&mut self, topic: &'a str) -> IResult<&'a str, MqttTopic> { - preceded( - alt(( - tag("Urukul/Control/"), - tag("/Urukul/Control/") - )), - alt(( - switch, - attenuation, - clock, - clock_source, - clock_frequency, - clock_division, - singletone, - singletone_frequency, - singletone_amplitude, - singletone_phase, - profile - )) - )(topic) - } -*/ + fn parse_topic<'a>(&mut self, topic: &'a str) -> Result> { let mut assigned_channel = false; let mut assigned_profile = false; @@ -423,6 +401,8 @@ fn clock_division_message(message: &[u8]) -> IResult<&[u8], MqttCommand> { } // Parser for one-command master clock setup message +// Possible improvements: Chop off redundant braces and quotes +// Allow optional parameters/permutation of parameters fn clock_message(message: &[u8]) -> IResult<&[u8], MqttCommand> { all_consuming( map( @@ -533,7 +513,8 @@ fn singletone_phase_message(channel: u8, profile: u8, message: &[u8]) -> IResult // Parser for one-command singletone profile Command // Using JSON like command structure -// Possible enhancement: further modularize parsing of all separate fields +// Possible improvements: Chop off redundant braces and quotes +// Allow optional parameters/permutation of parameters fn singletone_message(channel: u8, profile: u8, message: &[u8]) -> IResult<&[u8], MqttCommand> { all_consuming( map( @@ -592,7 +573,7 @@ fn singletone_message(channel: u8, profile: u8, message: &[u8]) -> IResult<&[u8] ) ) )), - |(freq, ampl, phase): (f64, f64, f64)| MqttCommand::Singletone(channel, profile, freq, ampl, phase) + |(freq, ampl, phase): (f64, f64, f64)| MqttCommand::Singletone(channel, profile, freq, phase, ampl) ) )(message) }