125 lines
5.0 KiB
C++
125 lines
5.0 KiB
C++
/*! \mainpage Guide de démarrage rapide
|
|
*
|
|
* \section intro_sec Introduction
|
|
*
|
|
* Cette bibliothèque inclue une seule classe : PayloadFormatter.@n
|
|
* Elle permet de construire une trame contenant : le nombre total de trames à transmettre, le numéro de la trame transmise, le nombre de lignes de températures, le nombre de colonnes de températures, la date et l'heure,@n
|
|
* la température extérieure, les températures de la matrice aux nombre de lignes * colonnes.@n
|
|
* Cette trame peut ensuite être décodée via le décodeur de trame écrit en javascript disponible <a href="http://www.web-directories.tk/git/Th3maz1ng/projet3_temperature/src/branch/master/src/decodeur_trame_TTN/decodeur.js" target="_blank">ici</a>.@n
|
|
* Le décodeur peut être intégré à TTN.@n@n
|
|
* Attention, il faut préalablement installer la bibliothèque RTClib-master dans le dossier Documents\\Arduino\\libraries téléchargeable <a href="http://www.web-directories.tk/git/Th3maz1ng/ESP8266_swiss_army_board/src/branch/master/src/libs" target="_blank">ici</a>.@n
|
|
* Elle est nécessaire car elle définit l'objet DateTime.
|
|
*
|
|
* Voici un code d'exemple de l'utilisation de l'objet PayloadFormatter :
|
|
*
|
|
*
|
|
* \code{.cpp}
|
|
* #include <PayloadFormatter.h>
|
|
*
|
|
* //Programme d'exemple d'utilisation de la bibliothèque PayloadFormatter
|
|
* //Création de l'objet pour 4 températures internes (2 lignes par 2 colonnes)
|
|
* PayloadFormatter formatter(2,2);
|
|
*
|
|
* double temperatureExterne = 28.58;
|
|
* double temperatureInternes[2][4] = {{15.21,16.18,12.45,18.42},{18.58,11.49,22.38,9.73}};
|
|
* DateTime dt(2020, 5, 14, 12,39); //14/05/2020 à 12h39
|
|
*
|
|
* uint8_t *buffer(NULL);
|
|
* uint16_t size(0);
|
|
*
|
|
* void setup()
|
|
* {
|
|
* Serial.begin(115200);
|
|
* Serial.println("Démarrage d'une session de construction de 2 trames");
|
|
*
|
|
* formatter.startSession(2);
|
|
* size = formatter.buildPayload(&buffer, &dt, temperatureExterne, temperatureInternes[0]);
|
|
*
|
|
* Serial.print("Trame construite : ");
|
|
* for(int i(0); i < size; i++)
|
|
* {
|
|
* buffer[i] <= 0x0F ? Serial.print("0") : Serial.print(""); Serial.print(buffer[i], HEX); Serial.print(" ");
|
|
* }
|
|
* Serial.printf(" de taille : %u\n Session terminee ? %s\n", size, formatter.endSession() ? "OUI" : "NON");
|
|
*
|
|
* size = formatter.buildPayload(&buffer, &dt, temperatureExterne, temperatureInternes[1]);
|
|
*
|
|
* Serial.print("Trame construite : ");
|
|
* for(int i(0); i < size; i++)
|
|
* {
|
|
* buffer[i] <= 0x0F ? Serial.print("0") : Serial.print(""); Serial.print(buffer[i], HEX); Serial.print(" ");
|
|
* }
|
|
* Serial.printf(" de taille : %u\n Session terminee ? %s\n", size, formatter.endSession() ? "OUI" : "NON");
|
|
*
|
|
* Serial.println("Fin de l'exemple");
|
|
* }
|
|
*
|
|
* void loop()
|
|
* {
|
|
*
|
|
* }
|
|
* \endcode
|
|
*
|
|
* \author Anatole SCHRAMM-HENRY
|
|
* \date 15 Jan 2020
|
|
* \copyright All Right Reserved
|
|
*/
|
|
|
|
#ifndef PAYLOADFORMATTER_H
|
|
#define PAYLOADFORMATTER_H
|
|
#include <math.h>
|
|
#include <RTClib.h> //Nécessaire afin d'utiliser l'objet DateTime
|
|
|
|
/*!
|
|
* @brief La classe PayloadFormatter permet de construire une trame formatée.
|
|
*
|
|
*/
|
|
class PayloadFormatter
|
|
{
|
|
public:
|
|
/*!
|
|
* Le constructeur de la classe prend en paramètres :
|
|
* @param numOfRow : correspond au nombre de lignes de températures. Maximum 15.
|
|
* @param numOfCol : correspond au nombre de colonnes de températures. Maximum 15.
|
|
* @warning : une allocation dynamique est effectuée, attention avec les microcontrôleurs ayant une faible quantité de RAM.
|
|
*/
|
|
PayloadFormatter(uint8_t numOfRow, uint8_t numOfColumn);
|
|
/*!
|
|
* Le destructeur libère la mémoire dynamiquement allouée :
|
|
*/
|
|
~PayloadFormatter();
|
|
/*!
|
|
* Construit une trame à l'aide des informations passées en paramètre.
|
|
* @param buffer : l'adresse du buffer de type uint8_t contenant la trame formatée. Voir le code d'exemple pour plus d'information.
|
|
* @param dateTime : l'objet contenant la date et l'heure.
|
|
* @param externTemp : la température externe.
|
|
* @param tempArray : le tableau de double contenant l'ensemble des températures internes.
|
|
* @param numOfRow : non utilisé dans cette version.
|
|
* @param numOfColumn : non utilisé dans cette version.
|
|
* @return uint16_t : la taille en octet de la trame construite.
|
|
*/
|
|
int16_t buildPayload(uint8_t **buffer, DateTime *dateTime, double externTemp, double *tempArray, uint8_t numOfRow = -1, uint8_t numOfColumn = -1);
|
|
/*!
|
|
* Indique le démarrage d'une session de construction de trames.
|
|
* @param totalPackets : le nombre total de trames qui vont être construites lors de la session. Maximum 15.
|
|
*/
|
|
void startSession(uint8_t totalPackets);
|
|
/*!
|
|
* Permet de fermer une session de construction.
|
|
* @return boolean : indiquant si la session a été fermée correctement, ie si le nombre de trame indiqué dans startSession() a bien été construit.
|
|
*/
|
|
boolean endSession();
|
|
|
|
protected:
|
|
private:
|
|
|
|
uint8_t _totalPayloads;
|
|
uint8_t _currentPayload;
|
|
uint8_t _numOfRow;
|
|
uint8_t _numOfColumn;
|
|
uint8_t *_payload;
|
|
uint8_t _length;
|
|
};
|
|
|
|
#endif //PAYLOADFOMATTER_H
|