Библиотека для получения данных телеметрии из UDP-интерфейса AssettoCorsa. Библиотека основана на C API, а также предоставляет API-оболочку C++ и модуль расширения Python.
Для компиляции и сборки библиотеки C/C++ необходимо, чтобы в системе были установлены gcc
и GNU make
. Для расширения Python в системе должен быть Python3
.
Чтобы собрать всю библиотеку, напишите команду:
$ make
Это фактически создаст двоичный файл библиотеки C в каталоге lib/
как статическую библиотеку. Модуль расширения Python также будет встроен в каталог python-extension/build/
.
В этом разделе кратко описано использование библиотеки для трех предоставленных API. Дополнительные примеры использования можно найти в каталоге examples/
.
Пример включает заголовок библиотеки в include/
. Затем он инициализирует библиотеку, подписывается на нее для получения событий с информацией об автомобиле в реальном времени, а затем закрывает связь после прочтения одного события.
#include "acudp.h"
int main ()
{
// Init library
acudp_handle * acudp ;
acudp_init ( & acudp ));
// Subscribe to car info events
acudp_setup_response_t setup_response ;
acudp_send_handshake ( acudp , & setup_response );
acudp_client_subscribe ( acudp , ACUDP_SUBSCRIPTION_UPDATE );
// Read car data
acudp_car_t data ;
acudp_read_update_event ( acudp , & data );
/* ... process car data ... */
// Close communication and exit library
acudp_send_dismiss ( acudp );
acudp_exit ( acudp );
return 0 ;
}
Для простоты проверка ошибок не производится. Все коды ошибок можно найти в заголовочном файле библиотеки.
Пример включает заголовок библиотеки в include/
. И выполняет те же действия, что и в примере C.
# include " acudp.hpp "
int main ()
{
// Initailise ACUDP instance and connect to server
acudp::ACUDP acudp{};
acudp. send_handshake ();
// Subscribe to car info events
acudp. subscribe (acudp::SubscribeMode::update);
// Read car data
auto car = acudp. read_update_event ();
/* ... process car data ... */
// All resources are freed by RAII. No need to manually disconnect.
return 0 ;
}
Опять же, для простоты проверяются небольшие исключения. Все исключения можно найти в заголовочном файле библиотеки.
В примере выполняются те же действия, что и в предыдущих примерах.
import acudp
if __name__ == "__main__" :
# Initailise ACUDP instance and connect to server
client = acudp . ACUDP ()
client . send_handshake ()
# Subscribe to car info events
client . subscribe_to_updates ()
# Read car data
car_info = client . read_update_event ();
## ... process car_info data ... ##
# Disconnect client
client . send_dismiss ()
Опять же, для простоты проверяются небольшие исключения.
Всю документацию можно найти в файле DOCUMENTATION.md.
Основной недостающей функциональностью является добавление поддержки: