Preview de la nouvelle librairie C++ 2.0

Preview de la nouvelle librairie C++ 2.0

Il y a quelques mois, nous vous avons présenté la version bêta du VirtualHub 2.0 avec le support SSL/TLS. Cette semaine, nous vous présentons la version 2.0 de la librairie C++ qui ajoute la même fonctionnalité : le support SSL/TLS. Tout comme pour le VirtualHub 2.0, cette nouvelle version est disponible en version Beta/Preview.





La grosse nouveauté de cette nouvelle version de la librairie C++ est l'ajout du support SSL/TLS, mais pour ce faire nous avons dû changer quelque peu la compilation de cette librairie. Comme d'habitude, nous avons essayé de maintenir la compatibilité arrière au maximum, mais certains choix que nous avons faits risquent de casser les scripts de build. Pour cette raison, nous publions cette librairie en Beta/Preview en parallèle de la version officielle.

Cependant, l'API C++ de la librairie reste inchangé. Les classes et les fonctions sont toujours les mêmes et aucune fonctionnalité n'a été enlevée. Du code prévu pour utiliser l'API 1.0 fonctionne aussi avec cette nouvelle version.

En interne cette nouvelle version de la librairie C++ utilise la libraire mbed TLS. Comme nous l'expliquons plus bas, cette libraire est incluse avec les sources de notre librairie et est compilée en même temps que le code de notre librairie. Cette librairie utilise la licence Apache-2.0 et autorise donc l'utilisation de notre librairie dans un produit commercial.


Support SSL/TLS

La grosse nouveauté est l'ajout du support SSL/TLS qui permet de se connecter au VirtualHub v2.0 de manière sécurisée et chiffrée. Pour utiliser une connexion sécurisée, il suffit d'ajouter le préfixe "WSS://" à l'adresse du VirtualHub lors de l'appel à YAPI::RegisterHub. Le préfixe WSS signifie "WebSocket Secure" et configure la librairie pour communiquer à l'aide du protocole WebSocket sur une connexion chiffrée par SSL/TLS.

Voici le code pour initialiser une connexion avec un VirtualHub v2.0 en WebSocket sécurisée.

...
if (YAPI::RegisterHub("wss://vhub.example.com", errmsg) != YAPI_SUCCESS) {
    cerr << "YAPI::RegisterHub failed: " << errmsg << endl;
}
...



Notez qu'il est aussi possible de forcer l'utilisation de l'ancien protocole HTTP mais en utilisant une connexion chiffrée à l'aide du préfix "https://"

...
if (YAPI::RegisterHub("https://vhub.example.com", errmsg) != YAPI_SUCCESS) {
    cerr << "YAPI::RegisterHub failed: " << errmsg << endl;
}
...



Dans les deux cas, la librairie Yoctopuce se charge de chiffrer les données transmises.

Le reste des fonctionnalités de la librairie sont disponibles et l'utilisation de l'API C++ est inchangée. Pour résumer, il suffit de changer le premier paramètre de la méthode YAPI::RegisterHub pour utiliser un protocole chiffré.


Download


La librairie C++ v2.0 est disponible sur notre site web et nous avons aussi créé un nouveau repository sur GitHub : https://github.com/yoctopuce/yoctolib_cpp_v2

Compiler la librairie


Comme nous l'avons expliqué, l'utilisation de la librairie n'a pas changé, mais la compilation est différente. La première différence est qu'il y a plus de fichiers à compiler.
Pour compiler la librairie, il faut compiler les fichiers suivant:

  • tous les fichiers .cpp du répertoire Sources
  • tous les fichiers .c du répertoire Sources/yapi
  • tous les fichiers .c du répertoire Sources/yapi/mbedtls/library


Il faut aussi ajouter les répertoires Sources et Sources/yapi/mbedtls/include à l'include path du compilateur.

Il y a un makefile GNU dans le sous-répertoire Binaries qui permet de recompiler la libraire. Pour compiler la librairie C++, il faut simplement exécuter la commande make dans le sous-répertoire Binaries.

$ make




Pour Linux et macOS rien ne change, car nous utilisons déjà GNU makefile. Pour Windows c'est une nouveauté, car nous utilisons nmake. Il faut donc installer un GNU make par exemple à l'aide de Chocolatey pour recompiler la librairie C++. Il n'est cependant pas nécessaire d'installer GCC, car le makefile continue d'utiliser le compilateur cl de Microsoft. Toutefois, sous Windows, il est en général bien plus simple de simplement utiliser Visual Studio et de "dropper" tous les fichiers mentionnés plus haut dans votre projet.


Les exemples


Dans le répertoire Examples se trouve tous les exemples d'utilisation des différents modules Yoctopuce ainsi que plusieurs exemples d'utilisation de fonctionnalité de l'API.
Chaque exemple contient un makefile GNU, un projet Visual Studio et un projet XCode.

Sous Windows, il est possible de compiler et tester les exemples à l'aide de Visual Studio 2017 ou 2019.

Le projet Visual Studio pour l'exemple Doc-Inventory
Le projet Visual Studio pour l'exemple Doc-Inventory



Et sous macOS, il possible d'utiliser XCode depuis la version 9.3

Le projet XCode pour l'exemple Doc-Inventory
Le projet XCode pour l'exemple Doc-Inventory



Sous Linux, le plus simple est de simplement utiliser le makefile GNU. Pour compiler l'exemple, il suffit de lance la commande make dans le répertoire de l'exemple.

yocto@linux-build:~/cpp/Examples/Doc-Inventory$ make



Limitations


Actuellement, le support SSL n'est pas disponible pour les plates-formes mips et mipsel.

Pour que la librairie puisse établir un lien encrypté, il faut que les deux parties supportent SSL/TLS. Actuellement, seul le VirtualHub v2.0 supporte cette fonctionnalité. Il n'est donc pas encore possible d'utiliser cette fonctionnalité pour communiquer avec un YoctoHub.

Enfin, si nous sortons cette nouvelle version de la librairie avec la mention "Preview", c'est que nous nous resservons le droit de faire des changements qui casse la compatibilité ascendante. Il est très très peu probable que nous décidions de changer l'API, mais il est possible que nous décidions de changer l'emplacement des fichiers sources ou les scriptes de compilations.

Feedback


N’hésitez pas à contacter le support si vous n'arrivez pas utiliser cette nouvelle version de la librairie ou si vous avez des suggestions.

Commenter aucun commentaire Retour au blog












Yoctopuce, get your stuff connected.