Création d’un plugin

Aperçu

Les plugins offrent la possibilité de créer des widgets personnalisés, des mises en page, des sources/types de données et des thèmes personnalisés. Shuffleboard fournit les éléments plugins intégrés suivants.

  • Plugin NetworkTables: pour se connecter aux données publiées sur NetworkTables

  • Base Plugin: Pour afficher des types de données FRC® personnalisés dans des gadgets personnalisés

  • Plugin CameraServer: pour afficher les flux du CameraServer

Astuce

An example custom Shuffleboard plugin which creates a custom data type and a simple widget for displaying it can be found here.

Créer un plugin personnalisé

In order to define a plugin, the plugin class must be a subclass of edu.wpi.first.shuffleboard.api.Plugin or one of its subclasses. An example of a plugin class would be as following.

import edu.wpi.first.shuffleboard.api.plugin.Description;
import edu.wpi.first.shuffleboard.api.plugin.Plugin;
@Description(group = "com.example", name = "MyPlugin", version = "1.2.3", summary = "An example plugin")
public class MyPlugin extends Plugin {
}

Additional explanations on how these attributes are used, including version numbers can be found here.

Notez que l’annotation @Description est nécessaire pour indiquer au chargeur de plug-in les propriétés de la classe de plug-in personnalisée. Les classes de plugins sont autorisées à avoir un constructeur par défaut mais il ne peut accepter aucun argument.

Construction d’un plugin

The easiest way to build plugins is to utilize the example-plugins folder in the shufflebloard source tree. Clone Shuffleboard with git clone https://github.com/wpilibsuite/shuffleboard.git, and checkout the version that corresponds to the WPILib version you have installed (e.g. 2023.2.1). git checkout v2023.2.1

Put your plugin in the example-plugins\PLUGIN-NAME directory. Copy the custom-data-and-widget.gradle from example-plugins\custom-data-and-widget and rename to match your plugin name. Edit settings.gradle in the shuffleboard root directory to add include "example-plugins:PLUGIN-NAME"

Les plugins sont autorisés à avoir des dépendances avec d’autres plugins et librairies, cependant, ils doivent être inclus correctement dans le fichier de construction Maven ou Gradle. Lorsqu’un plugin dépend d’autres plugins, il est recommandé de définir ces dépendances afin que le plugin ne se charge pas lorsque les dépendances ne se chargent pas également. Cela peut être fait en utilisant l’annotation @Requires comme indiqué ci-dessous:

@Requires(group = "com.example", name = "Good Plugin", minVersion = "1.2.3")
@Requires(group = "edu.wpi.first.shuffleboard", name = "Base", minVersion = "1.0.0")
@Description(group = "com.example", name = "MyPlugin", version = "1.2.3", summary = "An example plugin")
public class MyPlugin extends Plugin {
}

La minVersion spécifie la version minimale autorisée du plugin qui peut être chargée. Par exemple, si la minVersion est 1.4.5 et que le plugin avec la version 1.4.7 est chargé, il sera autorisé à le faire. Cependant, si le plugin avec la version 1.2.4 est chargé, il ne sera pas autorisé à le faire car il est inférieur à la minVersion.

Déploiement du plugin au Shuffleboard

In order to load a plugin in Shuffleboard, you will need to generate a jar file of the plugin and put it in the ~/Shuffleboard/plugins folder. This can be done automatically by running from the shuffleboard root gradlew :example-plugins:PLUGIN-NAME:installPlugin

Après le déploiement, le Shuffleboard mettra en cache le chemin du plugin afin qu’il puisse être automatiquement chargé lors du prochain chargement du Shuffleboard. Il peut être nécessaire de cliquer sur Clear Cache dans le menu des plugins pour supprimer un plugin ou recharger un plugin dans le Shuffleboard.

Ajout manuel d’un Plugin

The other way to add a plugin to Shuffleboard is to compile it to a jar file and add it from Shuffleboard. The jar file is located in example-plugins\PLUGIN-NAME\build\libs after running gradlew build in the shuffleboard root Open Shuffleboard, click on the file tab in the top left, and choose Plugins from the drop down menu.

Ajout manuel de plugins personnalisés

Dans la fenêtre des plugins, choisissez le bouton « Load plugin » en bas à droite et sélectionnez votre fichier .jar.