Во-первых, тип команды не определяет размер пакета. Например, если команда должна возвращать какие-то данные, но выполнилась с ошибкой, она возвращает только код ошибки. Я это широко использую.
Во-вторых, длина пакета N, передаваемая в начале пакета, позволяет разбирать пакет на лету и проверять его валидность. Обработчик прерывания по приему данных от UART не должен знать конкретных команд и соответствующих им размеров пакетов.
Протокол не подвергался никаким модификациям и устраивает меня по сей день. Были лишь ошибки с адресацией как в исходниках для AVR, так и в DLL. Но на сегодняшний день они исправлены. Есть только одна модификация WAKE, предназначенная для использования в модемах. Там пакет защищает CRC-16, а всё остальное без изменений. Я эту версию не выкладываю ввиду малой её ценности, а путаницу это внесёт.
Потребности делать новый протокол пока не испытываю, более того, WAKE получает всё большее распространение. Уже существует набор модулей для малой автоматизации с этим протоколом, а также готовятся к выпуску 2 модели регуляторов теплоснабжения и 1 модель запорной армаатуры.