impl<'a> ShellCmdApi<'a> for Ver {
    cmd_api!(ver); // inserts boilerplate for command API

    fn process(&mut self, args: String::<1024>, env: &mut CommonEnv) -> Result<Option<String::<1024>>, xous::Error> {
        use core::fmt::Write;
        let mut ret = String::<1024>::new();
        let helpstring = "ver options: ec, wf200, soc, dna";

        let mut tokens = args.as_str().unwrap().split(' ');

        if let Some(sub_cmd) = tokens.next() {
            match sub_cmd {
                "ec" => {
                    let (rev, dirty) = env.com.get_ec_git_rev().unwrap();
                    let dirtystr = if dirty { "dirty" } else { "clean" };