"то, что написано в спецификации на WAKE это, по сути дела, только метод передачи N-байт информации не в виде ASCII, а через byte stuffing" - абсолютно правильно, еще с адресацией и с контролем целостности пакета. Остальное можно делать так, как пожелаете.
Согласно 7-уровневой модели OSI протокол Wake определяет Physical layer - EIA/TIA-485/232 и т.д., Data Link layer - stuffing, защита пакетов от искажений, сюда можно отнести и адресацию, на полноценную реализацию Network layer протокол не тянет. Все остальные уровни OSI отсутствуют, кроме 7-го, Application layer. Про него, так понимаю, и вопрос.
Когда SLAVE принимает пакет, он в первую очередь анализирует адрес. Если адрес отсутствует или равен нулю, это коллективный вызов, адресуются сразу все устройства. Этот режим используется при работе с одним устройством или при назначении адресов устройств.
Если адрес передается, но не совпадает с установленным в устройстве, устройство прекращает прием пакета и ждет маркера начала следующего пакета.
Если адрес совпадает, устройство продолжает прием пакета, код команды и данные в количестве N байт помещаются в буфер. Когда пакет принят, производится проверка CRC.
Если CRC совпадает, в глобальную переменную Command копируется код принятой команды, что служит сообщением для основной программы на выполнение команды. Команда выполняется, затем устройство передает ответ - свой адрес, код команды, на которую передается ответ, код ошибки и пакет данных, предусмотренный командой. Если ошибки нет, код ошибки равен ERR_NO. Если есть ошибка, обязательно передается только ее код, данные могут не передаваться. Каждая команда может иметь разные варианты по количеству ворзвращаемых байт данных. Например, может сужествовать команда "прочитать N байт данных, начиная с адреса Y". Ответ на эту команду может иметь любую длину блока данных.
Если CRC не совпадает, передается код команды CMD_ERR и код ошибки ERR_TX.
В моих реализациях протокол Wake имеет ряд стандартизованных кодов ошибок и кодов команд: CMD_NOP = 0 - нет операции; CMD_ERR = 1 - ошибка приема пакета; CMD_ECHO = 2 - передать эхо; CMD_INFO = 3 - передать информацию об устройстве, в сетевых версиях еще CMD_SETADDR = 4 - установка адреса устройства и CMD_GETADDR = 5 - чтение адреса устройства. Остальные команды можно выбирать в зависимости от нужд устройства.
Примеры практической реализации протокола Wake есть по ссылкам в спецификации.