Для простеньких случаев использую тупо свич-кейс без массивов и указателей, когда размер и быстродействие не критичны.
А то что описал, использую в более сложных случаях.
А очень заманчивый способ без массива, с переменной состояния, содержащей указатель на функцию, поостерёгся использовать (зависит конечно от важности устройства и последствий сбоя). Вдруг там случится сбой хотя бы битика, и тогда выполнится что попало.
А для варианта с массивом всегда можно ограничить количество состояний и всегда направить на правильный адрес функции.