uRPC - web интерфейс, при помощи которого создаётся, сохраняется и загружается протокол взаимодействия устройств. По готовому протоколу, в свою очередь, можно скачать готовую и работающую прошивку, документацию с описанием протокола, исходные коды кроссплатформенной библиотеки управления с подготовленными скриптами её сборки, графический интерфейс для всех функций библиотеки, набор врапперов для управления библиотекой из разнообразных языков программирования (python, C#) и другие дополнительные решения В результате, после создания на web сайте протокола, можно сгенерировать набор файлов, чтобы уже через 30 минут управлять микроконтроллером через GUI, или через Python скрипты или другим удобным способом. Главная цель проекта: облегченный запуск новых электронных устройств с микроконтроллером, работающих под управлением компьютера.
Все коммуникации между ПК и микроконтроллером осуществляются по принципу клиент-сервер. При этом микроконтроллер является сервером, а ПК – клиентом. Это значит, что все коммуникации инициируются компьютером. Микроконтроллер не может отправить какие-либо данные на ПК самостоятельно, для этого ему требуется соответствующий запрос клиента (компьютера).
URPC позволяет осуществлять коммуникации двух типов:
Коммуникация посредством команд осуществляется следующим образом:
Входные и выходные никак не зависят друг от друга и могут иметь формат. Единственное ограничение: суммарный объём всех входных данных, также как и суммарный объём всех выходных данных не должен превышать 250 байт.
Команды могут иметь входные и выходные аргументы, только входные аргументы, только выходные аргументы, а могут вообще не иметь аргументов.
Общение посредством аксессоров.
Аксессор – это специальная команда (а точнее set/get пара команд), предназначенная для работы с данными на сервере.
Отправка данных с клиента на сервер осуществляется посредством set-функции аксессора, получение данных – посредством вызова get-функции аксессора. Обе функции могут быть вызваны только клиентом (ПК).
Set-функция имеет только входные аргументы, get-функция – только выходные. Формат входных и выходных данных set и get функций одного аксессора должен быть одинаковым.
Также как и в случае команд после получения set и get запросов аксессора сервер (микроконтроллер) запускает соответствующие обработчики, содержание которых определяется пользователем.