-
Notifications
You must be signed in to change notification settings - Fork 0
Home
xPLLib est une librairie C++ pour interagir avec le protocole application xPL. Son code est cross-plateform et a déjà compilé avec succès sous Windows et Linux avec des processeurs x86 et ARM. Certains projets l'utilisant génère des executables pour Raspberry PI. Pour plus d'information sur le protocole xPL, consulter Wikipédia ou le site du projet xPL.
xPLLib est déjà utilisée dans plusieurs projets :
- xPLThermostat, crée des thermostats.
- xPLChrono, crée des compteurs
- xPLCalcul, effectue des calculs
- xPLFictif, crée des devices fictifs
- xPLOwfs, tous vos capteurs 1-wire sur le réseau xPL
- xPLCron, le célèbre cron version xPL
Copier le contenu du dossier src dans votre projet
#include "xPLDevice.h"
int main(int argc, char* argv[])
{
xPL::xPLDevice m_xPLDevice;
m_xPLDevice.Initialisation("fragxpl", "chrono", "default");
m_xPLDevice.SetAppName("xPL Chrono", "1.0.0.0");
m_xPLDevice.Open();
while(true)
{
m_xPLDevice.WaitRecv(500);
}
m_xPLDevice.Close();
return 0;
}
Afin de pouvoir écouter les messages xPL et en émettre, il faut ajouter une extension à l'objet xPLDevice. L'extension est une classe qui implémente l'interface IExtension (meaculpa pour les plus puristes d'entre nous, ce n'est pas une interface mais une classe abstraite ne comprenant que des méthodes virtuelles pures puisque la notion d'interface n'existe pas en C++).
class MonxPLDevice : public xPLDevice::IExtension
{
public:
MonxPLDevice(xPLDevice* xPLDev);
~MonxPLDevice();
bool MsgAnswer(SchemaObject& msg);
}
La méthode MsgAnswer sera appelée à chaque réception de messages. Le xPLDevice passé au constructeur n'est pas indispensable, mais il sera utile pour envoyer des messages. Pour activer l'extension, il faudra ajouter, sur l'exemple plus haut, avant l'instruction open, les lignes suivantes :
MonxPLDevice monExtension(&m_xPLDevice);
m_xPLDevice.AddExtension(&monExtension);
xPLLib est fournie avec plusieurs extensions prêtes à l'emploi.
Cette extension gère tous les messages nécessaires pour les capteurs (classe sensor.basic), il suffit de lui fournir la liste des capteurs, leur types et leurs valeurs via les méthodes ...