Biblioteca para obtenção de dados de telemetria da interface AssettoCorsa UDP. A biblioteca é baseada em uma API C e também fornece uma API wrapper C++ e um módulo de extensão Python.
Para compilar e construir a biblioteca C/C++ é necessário ter instalado gcc
e o GNU make
no sistema. Para a extensão Python, Python3
deve estar no sistema.
Para construir a biblioteca inteira, escreva o comando:
$ make
Na verdade, isso criará o binário da biblioteca C no diretório lib/
como uma biblioteca estática. O módulo de extensão Python também será integrado ao diretório python-extension/build/
.
Esta seção fornece um breve uso da biblioteca para as três APIs fornecidas. Outros exemplos de uso podem ser encontrados no diretório examples/
.
O exemplo inclui o cabeçalho da biblioteca em include/
. Em seguida, ele inicializa a biblioteca, inscreve-a para receber eventos de informações do carro em tempo real e fecha a comunicação após ler um evento.
#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 ;
}
Para simplificar, nenhuma verificação de erros é feita. Todos os códigos de erro podem ser encontrados no arquivo de cabeçalho da biblioteca.
O exemplo inclui o cabeçalho da biblioteca em include/
. E executa as mesmas ações do exemplo 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 ;
}
Novamente, para simplificar, pequenas exceções são verificadas. Todas as exceções podem ser encontradas no arquivo de cabeçalho da biblioteca.
O exemplo executa as mesmas ações dos exemplos anteriores.
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 ()
Novamente, para simplificar, pequenas exceções são verificadas.
Toda a documentação pode ser encontrada no arquivo DOCUMENTATION.md.
A principal funcionalidade ausente é adicionar suporte para: