Biblioteca para la obtención de datos de telemetría desde la interfaz UDP de AssettoCorsa. La biblioteca está basada en una API de C y también proporciona una API contenedora de C++ y un módulo de extensión de Python.
Para compilar y construir la biblioteca C/C++ es necesario tener instalados gcc
y GNU make
en el sistema. Para la extensión Python, Python3
debe estar en el sistema.
Para construir la biblioteca completa, escriba el comando:
$ make
En realidad, esto construirá el binario de la biblioteca C en el directorio lib/
como una biblioteca estática. El módulo de extensión de Python también se integrará en el directorio python-extension/build/
.
Esta sección brinda un breve uso de la biblioteca para las tres API proporcionadas. Se pueden encontrar más ejemplos de uso en el directorio examples/
.
El ejemplo incluye el encabezado de la biblioteca en include/
. Luego inicializa la biblioteca, la suscribe para recibir eventos de información del automóvil en tiempo real y luego cierra la comunicación después de leer un 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, no se realiza ninguna verificación de errores. Todos los códigos de error se pueden encontrar en el archivo de encabezado de la biblioteca.
El ejemplo incluye el encabezado de la biblioteca en include/
. Y realiza las mismas acciones que en el ejemplo de 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 ;
}
Nuevamente, por simplicidad, se verifican pequeñas excepciones. Todas las excepciones se pueden encontrar en el archivo de encabezado de la biblioteca.
El ejemplo realiza las mismas acciones que en los ejemplos 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 ()
Nuevamente, por simplicidad, se verifican pequeñas excepciones.
Toda la documentación se puede encontrar en el archivo DOCUMENTATION.md.
La principal funcionalidad que falta es agregar soporte para: