Bibliothèque pour obtenir des données de télémétrie depuis l'interface AssettoCorsa UDP. La bibliothèque est basée sur une API C et fournit également une API wrapper C++ et un module d'extension Python.
Pour compiler et construire la bibliothèque C/C++, il est nécessaire d'avoir installé gcc
et GNU make
dans le système. Pour l'extension Python, Python3
doit être dans le système.
Pour construire la bibliothèque entière, écrivez la commande :
$ make
Cela construira en fait le binaire de la bibliothèque C dans le répertoire lib/
en tant que bibliothèque statique. Le module d'extension Python sera également intégré au répertoire python-extension/build/
.
Cette section donne une brève utilisation de la bibliothèque pour les trois API fournies. D’autres exemples d’utilisation peuvent être trouvés dans le répertoire examples/
.
L'exemple inclut l'en-tête de la bibliothèque dans include/
. Ensuite, il initialise la bibliothèque, l'abonne pour recevoir les événements d'informations sur la voiture en temps réel, puis ferme la communication après avoir lu un événement.
#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 ;
}
Par souci de simplicité, aucune vérification des erreurs n’est effectuée. Tous les codes d'erreur se trouvent dans le fichier d'en-tête de la bibliothèque.
L'exemple inclut l'en-tête de la bibliothèque dans include/
. Et effectue les mêmes actions que dans l'exemple 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 ;
}
Encore une fois, par souci de simplicité, les petites exceptions sont vérifiées. Toutes les exceptions peuvent être trouvées dans le fichier d'en-tête de la bibliothèque.
L'exemple effectue les mêmes actions que dans les exemples précédents.
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 ()
Encore une fois, par souci de simplicité, de petites exceptions sont vérifiées.
Toute la documentation se trouve dans le fichier DOCUMENTATION.md.
La principale fonctionnalité manquante consiste à ajouter la prise en charge de :