К крутилке подключается программатор, затем программатор подключается к компьютеру по USB Type-C кабелю. Крутилка определится в системе как последовательный порт.
В качестве разделителя строк используется последовательность \r\n.
Сообщения разделяются последовательностью \r\n. Сообщение строится в следующем формате:
То есть в начале каждого сообщения пишется тип сообщения (TYPE), по которому определяется смысл сообщения. Затем идёт разделитель - нижнее подчёркивание. После разделителя следует полезная нагрузка (DATA), содержимое которой зависит от типа сообщения.
enc - произошло вращение крутилки. В полезной нагрузке хранится целое знаковое число - новое абсолютное вращение в условных единицах. Примеры сообщений:
but - произошло событие, связанное с кнопкой. В полезной нагрузке хранится одно из слов press или release. Примеры сообщений:
img - обратная связь о смене картинки, отправляется в ответ на запрос о смене картинки. В полезной нагрузке хранится ID картинки, которая теперь отображается. Примеры сообщений:
error - сообщение об ошибке. В полезной нагрузке находится читабельное описание ошибки на английском языке в кодировке ASCII. Примеры сообщений:
info - информационное сообщение. В полезной нагрузке находится читабельный текст в кодировке ASCII, сообщающий о чём-либо. На данный момент может содержать только оповещение о перезагрузке. Примеры сообщений:
ignore - это сообщение следует игнорировать. Работает в качестве "heartbeat", чтобы понимать, что крутилка работает. Отсылается раз в ~10 секунд. В полезной нагрузке может быть только слово "me". Примеры сообщений:
! - это сообщение является ответом на вопросительный знак. Отсылается в ответ на вопросительный знак. Не содержит полезной нагрузки. То есть всё сообщение состоит из одного символа - восклицательного знака.
Сообщения разделяются последовательностью \r\n. Сообщение строится в следующем формате:
То есть каждое сообщение для крутилки содержит в точности 2 символа ASCII. Первый символ (S) - это код команды. Второй символ (A, может отсутствовать) - это аргумент команды.
@ - сменить активную картинку. Аргумент этой команды - ID картинки. Первая картинка имеет номер 0. Количество картинок зависит от прошивки. В ответ крутилка отправит сообщение img при успехе, или error в случае провала. Примеры сообщений:
# - перезагрузить крутилку. Аргументы не требуются. В ответ крутилка отправит сообщение info. Примеры сообщений:
? - пингануть крутилку. Аргументы не требуются. В ответ крутилка отправит сообщение !. Примеры сообщений: