Bs0Dd 206 Опубликовано: 23 сентября, 2021 (изменено) Coverett - библиотека для взаимодействия с HLAPI устройствами мода OpenComputers II. Что такое HLAPI устройство? Это новый тип устройств в OC2, к которому относятся большинство девайсов, вроде модулей для робота, красной карты, звуковой карты и прочих. Они управляются через "контроллер", который общается JSON сообщениями с компьютером через символьный файл-поток (по умолчанию "/dev/hvc0"). Для Lua автор уже добавил в систему библиотеку "devices", однако она не слишком быстра, как и Lua в целом. Для С (куда в первую очередь писалась библиотека) работа с JSON сообщениями - довольно утомительная задача. Coverett призван упростить общение с HLAPI устройствами в C и совместимых с ним языках. Разумеется, программы не станут от этого очень легкими в написании, C есть C. Однако, процесс разработки программ для OC2 заметно упростится. Сама по себе библиотека состоит только из "ядра" с набором стандартных функций. Наборы функций для устройств подключаются в виде отдельных "модулей" (папка devices) со своими заголовочными файлами (заголовки нужных устройств затем подключаются в исходнике программы). Поэтому, если вы очень хороший знаток C, то можете писать модули для своих устройств и подключать их к библиотеке при сборке. К сожалению на данный момент полноценная документация еще не готова (две руки - очень мало), но в заголовочных файлах библиотеки есть небольшие комментарии-описания (в формате doxygen), а также несколько программ-примеров, что немного поможет в работе с библиотекой. Также необходимо учесть, что библиотека находится в альфа-стадии. Поэтому не исключено наличие багов и (особенно) утечек памяти, поскольку ранее на C я практически не писал)). Репозиторий на GitHub. (Инструкция по сборке, а также собранная библиотека и программы находятся там) Немного про скорость: Скрытый текст Главное преимущество Coverett над devices для Lua - скорость. Приложения хоть и сложнее в написании и отладке, но быстрее в исполнении, что может быть очень полезно, учитывая невысокую производительность компьютеров OC2. Показываю на примере: Программа, выводящая список всех HLAPI устройств на Lua (от автора мода) и моя на C (обратите внимание на время выполнения) Немногим более секунды, довольно приличная разница. Программа для управления редстоун устройствами на Lua и C Тоже секунда разницы. И, наконец, программа для приема файлов с реального компьютера на Lua (import.lua от автора мода) и на C Прием одного и того же файла занял 24 секунды (~8.8kbit/s) и 5 секунд (~42.4kbit/s) соответственно. Изменено 23 сентября, 2021 пользователем Bs0Dd картинки перекосило 9 1 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
NEO 542 Опубликовано: 24 сентября, 2021 Вопрос по оформлению кода. Зачем использовать uppercase для typedef? По сишному кодстайлу uppercase-ом определяют дефайны. 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Bs0Dd Автор темы 206 Опубликовано: 24 сентября, 2021 1 час назад, NEO сказал: Зачем использовать uppercase для typedef? По сишному кодстайлу uppercase-ом определяют дефайны. Ну, как я уже говорил, на си ранее почти не писал, а кастомные типы вообще делаю впервые, ну пошёл от того, что файловый дескриптор там записан апперкейсом (FILE), оттуда и DEVICE, RESULT и так далее. Не знаю стоит ли переделывать теперь, придётся всю библиотеку перекопать и программы. 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
NEO 542 Опубликовано: 24 сентября, 2021 54 минуты назад, Bs0Dd сказал: файловый дескриптор там записан апперкейсом (FILE) Легаси . В более свежих стандартах используют snake_case с добавлением _t, это относится к typedef. 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Bs0Dd Автор темы 206 Опубликовано: 24 сентября, 2021 (изменено) 6 часов назад, NEO сказал: В более свежих стандартах используют snake_case с добавлением _t, это относится к typedef. Чтож, перевернул все и переделал на более правильный вариант, раз уж так. Нехорошо конечно менять систему библиотеки после выхода в публику, но пока прошло мало времени и никто не начал ей пользоваться, можно и поменять разок. Изменено 24 сентября, 2021 пользователем Bs0Dd 1 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах