X-Git-Url: http://git.code-monkey.de/?a=blobdiff_plain;f=src%2Fcommon%2Fshell.rs;h=e48a5de7290c8d0336c210475228f478459528a5;hb=b0ba131fbae07787bcac2149464eebb0c6272aa3;hp=59472f6c9eb029d5e4aa6c70649586fa2a7f379c;hpb=ad586de91fbe9648414f4fbaab0b3b0b85d67cb3;p=gps-watch.git diff --git a/src/common/shell.rs b/src/common/shell.rs index 59472f6..e48a5de 100644 --- a/src/common/shell.rs +++ b/src/common/shell.rs @@ -197,7 +197,9 @@ impl<'a> Shell<'a> { let usage = b"\ Supported commands: help Show this help message. + ls List recordings. get REC_ID Retrieve recording. + rm REC_ID Remove recording. clear_storage Fully erase the flash's contents. dump_storage Dump the flash's contents. "; @@ -205,7 +207,9 @@ Supported commands: self.tx_buf.write(usage); }, + Some(b"ls") => self.run_ls(logger), Some(b"get") => self.run_get(logger, &mut args_iter), + Some(b"rm") => self.run_rm(logger, &mut args_iter), Some(b"clear_storage") => self.run_clear_storage(logger), Some(b"dump_storage") => self.run_dump_storage(logger), @@ -220,6 +224,10 @@ Supported commands: } } + fn run_ls(&mut self, logger: &mut Logger) { + logger.list_recordings(self.tx_buf); + } + fn run_get(&mut self, logger: &mut Logger, args_iter: &mut ArgumentIter) { if let Some(recording_id_s) = args_iter.next() { if let Some(recording_id) = atoi16(recording_id_s) { @@ -258,6 +266,28 @@ Supported commands: self.tx_buf.flush(); } + fn run_rm(&mut self, logger: &mut Logger, args_iter: &mut ArgumentIter) { + if let Some(recording_id_s) = args_iter.next() { + if let Some(recording_id) = atoi16(recording_id_s) { + if logger.has_recording(recording_id) { + let result = logger.remove_recording(recording_id); + + if result.is_err() { + self.tx_buf.write(b"rm: failed to remove recording\n"); + } + } else { + self.tx_buf.write(b"rm: no such recording\n"); + } + } else { + self.tx_buf.write(b"rm: invalid argument\n"); + } + } else { + self.tx_buf.write(b"rm: missing argument\n"); + } + + self.tx_buf.flush(); + } + fn run_clear_storage(&self, logger: &mut Logger) { logger.storage.clear(); }