I have some code on Arduino (so, written in C) that receives a String through the UART terminal, reads the String, then decides what String to print back and how many things to print depending on the data.

I've used an if-else stack to decide on what to print back. Something like this:
```
    if (cmdtype == "VALCN" && canSend == true) { //canSend is a flag from above. 
      cmdparam = "00000000";
      rtnProtocols(cmdtype, cmdparam);
    }
    else if (cmdtype == "FIRMV" && canSend == true) {
      cmdparam = "00000000";  //See desktop code for reason why cmdparam is what it is.
      rtnProtocols(cmdtype, cmdparam);
    }
    else if (cmdtype == "RQSPC" && canSend == true) { //RQSPC is a command
      //Need to get serial info, date, end of device info
      cmdtype = "GVSPC";    //Send device info signal
      cmdparam = "00101201";  //cmdparam is serial number
      rtnProtocols(cmdtype, cmdparam);
      
      cmdparam = "30082022";  //cmdparam is date
      rtnProtocols(cmdtype, cmdparam);

      cmdtype = "ENSPC";    //Send device info signal
      cmdparam = "00000000";  //cmdparam is date
      rtnProtocols(cmdtype, cmdparam);
    }
```
There are a lot of variations to the receivable String, so I'm foreseeing this if-else stack spiralling out of control. I am wondering whether there is a way of doing this without using an if-else stack. Or even if there is a way of doing this without conditionals, since all I'm doing with the branches is having it run the same function with different inputs, different times.

I've considered a switch-case, but wasn't able to do so since switch-case can't take Strings. Please let me know if this question is not suitable here, or if more information is needed.