IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Arduino Discussion :

ESP32, MySensors, fonctions et (suspens) POINTEURS !


Sujet :

Arduino

  1. #1
    Membre à l'essai
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Décembre 2014
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2014
    Messages : 75
    Points : 17
    Points
    17
    Par défaut ESP32, MySensors, fonctions et (suspens) POINTEURS !
    Bonjour à tous.
    J'aimerais réaliser un code qui me permette d'ouvrir une porte à distance à l'aide de la bibliothèque MySensors.

    J'ai donc un code plutôt moche qui fonctionne, mais j'aimerais le rendre plus optimisé et plus lisible.
    J'ai donc ceci maintenant :
    Dans mon fichier "main.ino" :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    #include <MySensors.h>
    #include "Gestion_Porte.hpp"
     
    void receive(const MyMessage &message) // Lors de réception d'un message.
    {
    	if (message.sensor == ID_GESTION_PORTE) // Si c'est message du noeud 0 (gestion de la porte) :
    	{
    		if (message.getBool())
    			Ouverture_Porte(&debugMessage, &etatPorteMessage);
    		else
    			Fermeture_Porte(&debugMessage, &etatPorteMessage);
     
    		delay(10);
    	}
    }

    et dans un fichier Gestion_Porte.hpp j'ai :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    #ifndef GESTIONPORTE_HPP
        #define GESTIONPORTE_HPP
     
        #include <Arduino.h>
        #include <MySensors.h>
     
        void Ouverture_Porte(MyMessage *pDebugMessage, MyMessage *pEtatPorteMessage);
        void Fermeture_Porte(MyMessage *pDebugMessage, MyMessage *pEtatPorteMessage);
     
    #endif
    Dans le fichier Gestion_Porte.ino :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    void Ouverture_Porte(MyMessage *pDebugMessage, MyMessage *pEtatPorteMessage)
    {
        unsigned char ouvertureOk = 0;
     
        pDebugMessage->set("Ouverture de la porte");
        send(*pDebugMessage);
     
        if (digitalRead(PIN_FDC_OPEN)) // Si le détecteur de fin de course ouverture n'est pas actif, alors :
        {
            uint64_t timeCount = millis();
     
            digitalWrite(PIN_RELAY_PORTE,HIGH); // Alim 12V pour moteur.
            delay(20);
     
            ledcAttachPin(PIN_DRIVER_IN1, 0); // Attache la pin PIN_DRIVER_IN1 au canal pwm N°0 configuré ci-après.
    	ledcWrite(0, 250); // Initialise le canal pwm 0 (voir setup()) à un signal pwm de 254 (= 1 logique).
    	digitalWrite(PIN_DRIVER_IN2, LOW);
     
            while (digitalRead(PIN_FDC_OPEN) && ouvertureOk != 2) // Tant que le fin de course ouverture n'est pas actif :
            {
                if (millis() - timeCount > DELAY_OUVERTURE) // Si on est dans cette boucle plus longtemps que DELAY_OUVERTURE, alors :
                {
                    ouvertureOk = 2; // Valeur 2 = erreur.
                    pDebugMessage->set("Porte bloquee");
                }
     
                delay(2);
            } 
     
            ledcWrite(0, 0); // Met la vitesse du moteur à 0.
            ledcDetachPin(PIN_DRIVER_IN1); // Detache la pin PIN_DRIVER_IN1 du canal pwm N°0.
            digitalWrite(PIN_RELAY_PORTE,LOW); // Coupe l'alim 12V.
            //pinMode(PIN_DRIVER_IN2, INPUT);        
        }
     
        if(!digitalRead(PIN_FDC_OPEN)) // Si le détecteur de fin de course ouverture est actif,
        {
            ouvertureOk = 1; // Valeur 1 = Ouvert.
            pDebugMessage->set("Porte ouverte");
        }
     
        pEtatPorteMessage->set(ouvertureOk); // ouvertureOK = soit 1 soit 2.
        send(*pDebugMessage);
        send(*pEtatPorteMessage);
    }

    Je n'arrive pas à le compiler et j'ai ce message d'erreur :

    c:/.platformio/packages/toolchain-xtensa-esp32/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld.exe: .pio\build\ESP32\src\main.cpp.o:C:\usr\Bureau\Emeteur_Recepteur RF24 ESP32 (Poulailler)/.pio/libdeps/ESP32/MySensors/core/MyTransport.cpp:46: multiple definition of `_transportReady_cb'; .pio\build\ESP32\src\Gestion_Porte.cpp.o:C:\usr\OneDrive\Bureau\Emeteur_Recepteur RF24 ESP32 (Poulailler)/.pio/libdeps/ESP32/MySensors/core/MyTransport.cpp:46: first defined here
    c:/usr/.platformio/packages/toolchain-xtensa-esp32/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld.exe: .pio\build\ESP32\src\main.cpp.o: in function `stReadyTransition()':
    et tout plein de messages de la sorte.

    Je crois comprendre que le problème viendrait du fait que j'ai le
    #include <MySensors>
    dans le main et le Gestion_Porte mais du coup je ne comprends pas comment faire avec les pointeurs dans mon fichier Gestion_Porte.

    Si quelqu'un peut m'aider ce sera avec plaisir

    Merci.

  2. #2
    Expert confirmé

    Homme Profil pro
    Directeur de projet
    Inscrit en
    Mai 2013
    Messages
    1 277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2013
    Messages : 1 277
    Points : 4 000
    Points
    4 000
    Par défaut
    Bonjour,

    Un code plus complet serait plus utile. Par exemple, les messages parlent d'une ligne 46 impossible à localiser dans des fragments de code.

    En outre, les fragments devraient être constitués de blocs complets. Le premier extrait n'a pas de } de fin. Le lecteur ne sait donc pas si il y a encore du code qui prolonge cette fonction.

    Pour la fonction d'ouverture, il me semble que la toute première ligne devrait être un test de la butée d'ouverture ne serait-ce que pour éviter d'envoyer un message d'ouverture indu.

    Salutations
    Ever tried. Ever failed. No matter. Try Again. Fail again. Fail better. (Samuel Beckett)

  3. #3
    Membre à l'essai
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Décembre 2014
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2014
    Messages : 75
    Points : 17
    Points
    17
    Par défaut
    Bonjour.
    Effectivement j'avais oublié l'accolade de fin du premier bloc !

    Pour ce qui est du test il est bien présent en ligne 8 (3eme code)

    Et pour la ligne 46, ça fait partie de la bibliothèque MySensors du coup j'ai pas jugé utile de vous en faire part ne sachant pas trop à quoi elle est utile ni quel code poster pour la bomme compréhension totale, et surtout, si je mets mon code en entier dans le main (sans pointeurs vers ailleurs) ça fonctionne, mais c'est pas joli, c'est foutoir et pas optimisable, mais confirme bien que le souci vient de ma façon d'utiliser les pointeurs je suppose.

  4. #4
    Expert confirmé

    Homme Profil pro
    Directeur de projet
    Inscrit en
    Mai 2013
    Messages
    1 277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2013
    Messages : 1 277
    Points : 4 000
    Points
    4 000
    Par défaut
    Bonjour,

    Oui le test est présent, mais après l'envoi d'un message qui annonce l'ouverture de la porte même si celle-ci est déjà ouverte. Je proposerais un code plutôt de ce type (non testé bien sûr ).
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    void Ouverture_Porte(MyMessage *pDebugMessage, MyMessage *pEtatPorteMessage) {
       if(! digitalRead(PIN_FDC_OPEN)) return;       // Déjà ouverte
       pDebugMessage->set("Ouverture de la porte");
       send(*pDebugMessage);
       uint64_t T_start = millis();
       digitalWrite(PIN_RELAY_PORTE, HIGH);          // Activer le 12 V moteur
       delay(20);
       ledcAttachPin(PIN_DRIVER_IN1, 0);             // Attache PIN_DRIVER_IN1 au canal pwm 0
       ledcWrite(0, 250);                            // Vitesse du moteur maximale (presque)
       digitalWrite(PIN_DRIVER_IN2, LOW);
       while(digitalRead(PIN_FDC_OPEN) && (millis() - T_start < DELAY_OUVERTURE)) delay(2);
       ledcWrite(0, 0);                              // Vitesse du moteur à 0
       ledcDetachPin(PIN_DRIVER_IN1);                // Detache PIN_DRIVER_IN1 du canal pwm 0
       digitalWrite(PIN_RELAY_PORTE, LOW);           // Désactiver le 12 V moteur
       if(digitalRead(PIN_FDC_OPEN)) {
          pDebugMessage->set("Porte bloquee");	
          pEtatPorteMessage->set(2);
       }
       else {
          pDebugMessage->set("Porte ouverte");
          pEtatPorteMessage->set(1)
       }
       send(*pDebugMessage);
       send(*pEtatPorteMessage);
    }
    Salutations
    Ever tried. Ever failed. No matter. Try Again. Fail again. Fail better. (Samuel Beckett)

  5. #5
    Membre à l'essai
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Décembre 2014
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2014
    Messages : 75
    Points : 17
    Points
    17
    Par défaut
    Exact. Je ne pense pas souvent à la commande "return" dans un void...

    Mais mon souci est toujours présent et la compilation ne fonctionne pas.
    Je peux éventuellement poster le code complet sur github si ça peut aider a m'aider

  6. #6
    Expert confirmé

    Homme Profil pro
    Directeur de projet
    Inscrit en
    Mai 2013
    Messages
    1 277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2013
    Messages : 1 277
    Points : 4 000
    Points
    4 000
    Par défaut
    Bonjour,

    Le #include <MySensors.h> du main ne sert à rien car il existe aussi dans le fichier Gestion_Porte.hpp.

    Mais normalement cela n'a pas d'impact car il doit être protégé de toute re-déclaration (grace à une compilation conditionnelle comme pour Gestion_Porte.hpp).

    Si ce n'est pas le cas, il y aurait effectivement de multiples re-déclarations des fonctions de MySensors.h. Pour régler le problème, Il suffirait alors de ne garder qu'une inclusion, la première.

    Salutations
    Ever tried. Ever failed. No matter. Try Again. Fail again. Fail better. (Samuel Beckett)

  7. #7
    Membre à l'essai
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Décembre 2014
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2014
    Messages : 75
    Points : 17
    Points
    17
    Par défaut
    Oui effectivement avec la protection des autres déclarations, je me dis que ça devrait pas impacter.

    J'ai fini par créer un fichier "MySensors_Wrapper.hpp" dans lequel j'ai mis

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    #ifndef MYSENSORS_WRAPPER_H
        #define MYSENSORS_WRAPPER_H
     
        #include <MySensors.h>
    #endif // MYSENSORS_WRAPPER_H
    et ce fichier je l'appelle dans "Gestion_Porte.hpp" à la place de "#include <MySensors.h>" et je l'ai supprimé du main, mais j'ai toujours ces messages d'erreur...
    La liste des erreurs (pas complète car beaucoup trop longue) c'est :

    .pio\build\ESP32\src\Gestion_Porte.cpp.o: In function `stUplinkTransition()':
    Gestion_Porte.cpp:(.text._Z18stUplinkTransitionv+0x0): multiple definition of `stUplinkTransition()'
    .pio\build\ESP32\src\Gestion_Camera.cpp.o:Gestion_Camera.cpp:(.text._Z18stUplinkTransitionv+0x0): first defined here.pio\build\ESP32\src\Gestion_Porte.cpp.o: In function `MyMessage::set(float, unsigned char)':
    Gestion_Porte.cpp:(.text._ZN9MyMessage3setEfh+0x0): multiple definition of `MyMessage::set(float, unsigned char)'
    .pio\build\ESP32\src\Gestion_Camera.cpp.o:Gestion_Camera.cpp:(.text._ZN9MyMessage3setEfh+0x0): first defined here
    .pio\build\ESP32\src\Gestion_Porte.cpp.o: In function `MyMessage::set(unsigned int)':
    Gestion_Porte.cpp:(.text._ZN9MyMessage3setEj+0x0): multiple definition of `MyMessage::set(unsigned int)'
    .pio\build\ESP32\src\Gestion_Camera.cpp.o:Gestion_Camera.cpp:(.text._ZN9MyMessage3setEj+0x0): first defined here
    .pio\build\ESP32\src\Gestion_Porte.cpp.o: In function `MyMessage::set(int)':
    .pio\build\ESP32\src\main.cpp.o: In function `transportSaveRoutingTable()':
    main.cpp:(.text._Z25transportSaveRoutingTablev+0x0): multiple definition of `transportSaveRoutingTable()'
    .pio\build\ESP32\src\Gestion_Camera.cpp.o:Gestion_Camera.cpp:(.text._Z25transportSaveRoutingTablev+0x0): first defined here
    .pio\build\ESP32\src\main.cpp.o: In function `transportSetRoute(unsigned char, unsigned char)':
    main.cpp:(.text._Z17transportSetRoutehh+0x0): multiple definition of `transportSetRoute(unsigned char, unsigned char)'
    .pio\build\ESP32\src\Gestion_Camera.cpp.o:Gestion_Camera.cpp:(.text._Z17transportSetRoutehh+0x0): first defined here.pio\build\ESP32\src\main.cpp.o: In function `transportClearRoutingTable()':
    main.cpp:(.text._Z26transportClearRoutingTablev+0x0): multiple definition of `transportClearRoutingTable()'
    .pio\build\ESP32\src\Gestion_Camera.cpp.o:Gestion_Camera.cpp:(.text._Z26transportClearRoutingTablev+0x0): first defined here
    .pio\build\ESP32\src\main.cpp.o: In function `transportGetRoute(unsigned char)':
    main.cpp:(.text._Z17transportGetRouteh+0x0): multiple definition of `transportGetRoute(unsigned char)'
    .pio\build\ESP32\src\Gestion_Camera.cpp.o:Gestion_Camera.cpp:(.text._Z17transportGetRouteh+0x0): first defined here
    .pio\build\ESP32\src\main.cpp.o: In function `transportReportRoutingTable()':
    main.cpp:(.text._Z27transportReportRoutingTablev+0x0): multiple definition of `transportReportRoutingTable()'
    .pio\build\ESP32\src\Gestion_Camera.cpp.o:Gestion_Camera.cpp:(.text._Z27transportReportRoutingTablev+0x0): first defined here
    .pio\build\ESP32\src\main.cpp.o: In function `transportTogglePassiveMode(bool)':
    main.cpp:(.text._Z26transportTogglePassiveModeb+0x0): multiple definition of `transportTogglePassiveMode(bool)'
    .pio\build\ESP32\src\Gestion_Camera.cpp.o:Gestion_Camera.cpp:(.text._Z26transportTogglePassiveModeb+0x0): first defined here
    .pio\build\ESP32\src\main.cpp.o: In function `transportGetSignalReport(signalReport_t)':
    main.cpp:(.text._Z24transportGetSignalReport14signalReport_t+0x0): multiple definition of `transportGetSignalReport(signalReport_t)'
    .pio\build\ESP32\src\Gestion_Camera.cpp.o:Gestion_Camera.cpp:(.text._Z24transportGetSignalReport14signalReport_t+0x0): first defined here
    .pio\build\ESP32\src\main.cpp.o: In function `transportSignalReport(char)':
    main.cpp:(.text._Z21transportSignalReportc+0x0): multiple definition of `transportSignalReport(char)'
    .pio\build\ESP32\src\Gestion_Camera.cpp.o:Gestion_Camera.cpp:(.text._Z21transportSignalReportc+0x0): first defined here
    .pio\build\ESP32\src\main.cpp.o: In function `MyMessage::getHeaderSize() const':
    main.cpp:(.text._ZNK9MyMessage13getHeaderSizeEv+0x0): multiple definition of `MyMessage::getHeaderSize() const'
    .pio\build\ESP32\src\Gestion_Camera.cpp.o:Gestion_Camera.cpp:(.text._ZNK9MyMessage13getHeaderSizeEv+0x0): first defined here
    .pio\build\ESP32\src\main.cpp.o: In function `MyMessage::getMaxPayloadSize() const':
    main.cpp:(.text._ZNK9MyMessage17getMaxPayloadSizeEv+0x0): multiple definition of `MyMessage::getMaxPayloadSize() const'
    .pio\build\ESP32\src\Gestion_Camera.cpp.o:Gestion_Camera.cpp:(.text._ZNK9MyMessage17getMaxPayloadSizeEv+0x0): first
    defined here
    .pio\build\ESP32\src\main.cpp.o: In function `MyMessage::isProtocolVersionValid() const':
    main.cpp:(.text._ZNK9MyMessage22isProtocolVersionValidEv+0x0): multiple definition of `MyMessage::isProtocolVersionValid() const'
    .pio\build\ESP32\src\Gestion_Camera.cpp.o:Gestion_Camera.cpp:(.text._ZNK9MyMessage22isProtocolVersionValidEv+0x0): first defined here
    .pio\build\ESP32\src\main.cpp.o: In function `MyMessage::getType() const':
    main.cpp:(.text._ZNK9MyMessage7getTypeEv+0x0): multiple definition of `MyMessage::getType() const'
    .pio\build\ESP32\src\Gestion_Camera.cpp.o:Gestion_Camera.cpp:(.text._ZNK9MyMessage7getTypeEv+0x0): first defined here
    .pio\build\ESP32\src\main.cpp.o: In function `MyMessage::setType(unsigned char)':
    main.cpp:(.text._ZN9MyMessage7setTypeEh+0x0): multiple definition of `MyMessage::setType(unsigned char)'
    .pio\build\ESP32\src\Gestion_Camera.cpp.o:Gestion_Camera.cpp:(.text._ZN9MyMessage7setTypeEh+0x0): first defined here.pio\build\ESP32\src\main.cpp.o: In function `MyMessage::getLast() const':
    main.cpp:(.text._ZNK9MyMessage7getLastEv+0x0): multiple definition of `MyMessage::getLast() const'
    .pio\build\ESP32\src\Gestion_Camera.cpp.o:Gestion_Camera.cpp:(.text._ZNK9MyMessage7getLastEv+0x0): first defined here
    .pio\build\ESP32\src\main.cpp.o: In function `MyMessage::setLast(unsigned char)':
    main.cpp:(.text._ZN9MyMessage7setLastEh+0x0): multiple definition of `MyMessage::setLast(unsigned char)'
    .pio\build\ESP32\src\Gestion_Camera.cpp.o:Gestion_Camera.cpp:(.text._ZN9MyMessage7setLastEh+0x0): first defined here.pio\build\ESP32\src\main.cpp.o: In function `MyMessage::getSender() const':
    main.cpp:(.text._ZNK9MyMessage9getSenderEv+0x0): multiple definition of `MyMessage::getSender() const'
    .pio\build\ESP32\src\Gestion_Camera.cpp.o:Gestion_Camera.cpp:(.text._ZNK9MyMessage9getSenderEv+0x0): first defined here
    .pio\build\ESP32\src\main.cpp.o: In function `MyMessage::setSender(unsigned char)':
    main.cpp:(.text._ZN9MyMessage9setSenderEh+0x0): multiple definition of `MyMessage::setSender(unsigned char)'
    .pio\build\ESP32\src\Gestion_Camera.cpp.o:Gestion_Camera.cpp:(.text._ZN9MyMessage9setSenderEh+0x0): first defined here
    .pio\build\ESP32\src\main.cpp.o: In function `MyMessage::getSensor() const':
    main.cpp:(.text._ZNK9MyMessage9getSensorEv+0x0): multiple definition of `MyMessage::getSensor() const'
    .pio\build\ESP32\src\Gestion_Camera.cpp.o:Gestion_Camera.cpp:(.text._ZNK9MyMessage9getSensorEv+0x0): first defined here
    .pio\build\ESP32\src\main.cpp.o: In function `MyMessage::setSensor(unsigned char)':
    main.cpp:(.text._ZN9MyMessage9setSensorEh+0x0): multiple definition of `MyMessage::setSensor(unsigned char)'
    .pio\build\ESP32\src\Gestion_Camera.cpp.o:Gestion_Camera.cpp:(.text._ZN9MyMessage9setSensorEh+0x0): first defined here
    .pio\build\ESP32\src\main.cpp.o: In function `MyMessage::getDestination() const':
    main.cpp:(.text._ZNK9MyMessage14getDestinationEv+0x0): multiple definition of `MyMessage::getDestination() const'
    .pio\build\ESP32\src\Gestion_Camera.cpp.o:Gestion_Camera.cpp:(.text._ZNK9MyMessage14getDestinationEv+0x0): first defined here
    .pio\build\ESP32\src\main.cpp.o: In function `MyMessage::setDestination(unsigned char)':
    main.cpp:(.text._ZN9MyMessage14setDestinationEh+0x0): multiple definition of `MyMessage::setDestination(unsigned char)'
    .pio\build\ESP32\src\Gestion_Camera.cpp.o:Gestion_Camera.cpp:(.text._ZN9MyMessage14setDestinationEh+0x0): first defined here
    .pio\build\ESP32\src\main.cpp.o: In function `MyMessage::isEcho() const':
    main.cpp:(.text._ZNK9MyMessage6isEchoEv+0x0): multiple definition of `MyMessage::isEcho() const'
    .pio\build\ESP32\src\Gestion_Camera.cpp.o:Gestion_Camera.cpp:(.text._ZNK9MyMessage6isEchoEv+0x0): first defined here.pio\build\ESP32\src\main.cpp.o: In function `MyMessage::isAck() const':
    main.cpp:(.text._ZNK9MyMessage5isAckEv+0x0): multiple definition of `MyMessage::isAck() const'
    .pio\build\ESP32\src\Gestion_Camera.cpp.o:Gestion_Camera.cpp:(.text._ZNK9MyMessage5isAckEv+0x0): first defined here
    .pio\build\ESP32\src\main.cpp.o: In function `MyMessage::setEcho(bool)':
    main.cpp:(.text._ZN9MyMessage7setEchoEb+0x0): multiple definition of `MyMessage::setEcho(bool)'
    .pio\build\ESP32\src\Gestion_Camera.cpp.o:Gestion_Camera.cpp:(.text._ZN9MyMessage7setEchoEb+0x0): first defined here.pio\build\ESP32\src\main.cpp.o: In function `MyMessage::getRequestEcho() const':
    main.cpp:(.text._ZNK9MyMessage14getRequestEchoEv+0x0): multiple definition of `MyMessage::getRequestEcho() const'
    .pio\build\ESP32\src\Gestion_Camera.cpp.o:Gestion_Camera.cpp:(.text._ZNK9MyMessage14getRequestEchoEv+0x0): first defined here
    .pio\build\ESP32\src\main.cpp.o: In function `MyMessage::setRequestEcho(bool)':
    main.cpp:(.text._ZN9MyMessage14setRequestEchoEb+0x0): multiple definition of `MyMessage::setRequestEcho(bool)'
    .pio\build\ESP32\src\Gestion_Camera.cpp.o:Gestion_Camera.cpp:(.text._ZN9MyMessage14setRequestEchoEb+0x0): first defined here
    .pio\build\ESP32\src\main.cpp.o: In function `MyMessage::setPayloadType(mysensors_payload_t)':
    main.cpp:(.text._ZN9MyMessage14setPayloadTypeE19mysensors_payload_t+0x0): multiple definition of `MyMessage::setPayloadType(mysensors_payload_t)'
    .pio\build\ESP32\src\Gestion_Camera.cpp.o:Gestion_Camera.cpp:(.text._ZN9MyMessage14setPayloadTypeE19mysensors_payload_t+0x0): first defined here
    .pio\build\ESP32\src\main.cpp.o: In function `MyMessage::getSigned() const':
    main.cpp:(.text._ZNK9MyMessage9getSignedEv+0x0): multiple definition of `MyMessage::getSigned() const'
    .pio\build\ESP32\src\Gestion_Camera.cpp.o:Gestion_Camera.cpp:(.text._ZNK9MyMessage9getSignedEv+0x0): first defined here
    .pio\build\ESP32\src\main.cpp.o: In function `MyMessage::setSigned(bool)':
    main.cpp:(.text._ZN9MyMessage9setSignedEb+0x0): multiple definition of `MyMessage::setSigned(bool)'
    .pio\build\ESP32\src\Gestion_Camera.cpp.o:Gestion_Camera.cpp:(.text._ZN9MyMessage9setSignedEb+0x0): first defined here
    .pio\build\ESP32\src\main.cpp.o: In function `MyMessage::getLength() const':
    main.cpp:(.text._ZNK9MyMessage9getLengthEv+0x0): multiple definition of `MyMessage::getLength() const'
    .pio\build\ESP32\src\Gestion_Camera.cpp.o:Gestion_Camera.cpp:(.text._ZNK9MyMessage9getLengthEv+0x0): first defined here
    .pio\build\ESP32\src\main.cpp.o: In function `MyMessage::getExpectedMessageSize() const':
    main.cpp:(.text._ZNK9MyMessage22getExpectedMessageSizeEv+0x0): multiple definition of `MyMessage::getExpectedMessageSize() const'
    .pio\build\ESP32\src\Gestion_Camera.cpp.o:Gestion_Camera.cpp:(.text._ZNK9MyMessage22getExpectedMessageSizeEv+0x0): first defined here
    .pio\build\ESP32\src\main.cpp.o: In function `transportHALReceive(MyMessage*, unsigned char*)':
    main.cpp:(.text._Z19transportHALReceiveP9MyMessagePh+0x0): multiple definition of `transportHALReceive(MyMessage*, unsigned char*)'
    .pio\build\ESP32\src\Gestion_Camera.cpp.o:Gestion_Camera.cpp:(.text._Z19transportHALReceiveP9MyMessagePh+0x0): first defined here
    .pio\build\ESP32\src\main.cpp.o: In function `transportSendWrite(unsigned char, MyMessage&)':
    main.cpp:(.text._Z18transportSendWritehR9MyMessage+0x0): multiple definition of `transportSendWrite(unsigned char, MyMessage&)'
    .pio\build\ESP32\src\Gestion_Camera.cpp.o:Gestion_Camera.cpp:(.text._Z18transportSendWritehR9MyMessage+0x0): first defined here
    .pio\build\ESP32\src\main.cpp.o: In function `transportRouteMessage(MyMessage&)':
    main.cpp:(.text._Z21transportRouteMessageR9MyMessage+0x0): multiple definition of `transportRouteMessage(MyMessage&)'
    .pio\build\ESP32\src\Gestion_Camera.cpp.o:Gestion_Camera.cpp:(.text._Z21transportRouteMessageR9MyMessage+0x0): first defined here
    .pio\build\ESP32\src\main.cpp.o: In function `transportSendRoute(MyMessage&)':
    main.cpp:(.text._Z18transportSendRouteR9MyMessage+0x0): multiple definition of `transportSendRoute(MyMessage&)'
    .pio\build\ESP32\src\Gestion_Camera.cpp.o:Gestion_Camera.cpp:(.text._Z18transportSendRouteR9MyMessage+0x0): first defined here
    .pio\build\ESP32\src\main.cpp.o: In function `MyMessage::setLength(unsigned char)':
    main.cpp:(.text._ZN9MyMessage9setLengthEh+0x0): multiple definition of `MyMessage::setLength(unsigned char)'
    .pio\build\ESP32\src\Gestion_Camera.cpp.o:Gestion_Camera.cpp:(.text._ZN9MyMessage9setLengthEh+0x0): first defined here
    .pio\build\ESP32\src\main.cpp.o: In function `MyMessage::getCustom() const':
    main.cpp:(.text._ZNK9MyMessage9getCustomEv+0x0): multiple definition of `MyMessage::getCustom() const'
    .pio\build\ESP32\src\Gestion_Camera.cpp.o:Gestion_Camera.cpp:(.text._ZNK9MyMessage9getCustomEv+0x0): first defined here
    .pio\build\ESP32\src\main.cpp.o: In function `MyMessage::getString() const':
    main.cpp:(.text._ZNK9MyMessage9getStringEv+0x0): multiple definition of `MyMessage::getString() const'
    .pio\build\ESP32\src\Gestion_Camera.cpp.o:Gestion_Camera.cpp:(.text._ZNK9MyMessage9getStringEv+0x0): first defined here
    .pio\build\ESP32\src\main.cpp.o: In function `MyMessage::getCustomString(char*) const':
    main.cpp:(.text._ZNK9MyMessage15getCustomStringEPc+0x0): multiple definition of `MyMessage::getCustomString(char*) const'
    .pio\build\ESP32\src\Gestion_Camera.cpp.o:Gestion_Camera.cpp:(.text._ZNK9MyMessage15getCustomStringEPc+0x0): first defined here
    .pio\build\ESP32\src\main.cpp.o: In function `MyMessage::getStream(char*) const':
    main.cpp:(.text._ZNK9MyMessage9getStreamEPc+0x0): multiple definition of `MyMessage::getStream(char*) const'
    .pio\build\ESP32\src\Gestion_Camera.cpp.o:Gestion_Camera.cpp:(.text._ZNK9MyMessage9getStreamEPc+0x0): first defined
    here
    .pio\build\ESP32\src\main.cpp.o: In function `MyMessage::getString(char*) const':
    main.cpp:(.text._ZNK9MyMessage9getStringEPc+0x0): multiple definition of `MyMessage::getString(char*) const'
    .pio\build\ESP32\src\Gestion_Camera.cpp.o:Gestion_Camera.cpp:(.text._ZNK9MyMessage9getStringEPc+0x0): first defined
    here
    .pio\build\ESP32\src\main.cpp.o: In function `MyMessage::getByte() const':
    main.cpp:(.text._ZNK9MyMessage7getByteEv+0x0): multiple definition of `MyMessage::getByte() const'
    .pio\build\ESP32\src\Gestion_Camera.cpp.o:Gestion_Camera.cpp:(.text._ZNK9MyMessage7getByteEv+0x0): first defined here
    .pio\build\ESP32\src\main.cpp.o: In function `MyMessage::getBool() const':
    main.cpp:(.text._ZNK9MyMessage7getBoolEv+0x0): multiple definition of `MyMessage::getBool() const'
    .pio\build\ESP32\src\Gestion_Camera.cpp.o:Gestion_Camera.cpp:(.text._ZNK9MyMessage7getBoolEv+0x0): first defined here
    .pio\build\ESP32\src\main.cpp.o: In function `MyMessage::getFloat() const':
    main.cpp:(.text._ZNK9MyMessage8getFloatEv+0x0): multiple definition of `MyMessage::getFloat() const'
    .pio\build\ESP32\src\Gestion_Camera.cpp.o:Gestion_Camera.cpp:(.text._ZNK9MyMessage8getFloatEv+0x0): first defined here
    .pio\build\ESP32\src\main.cpp.o: In function `MyMessage::getLong() const':
    main.cpp:(.text._ZNK9MyMessage7getLongEv+0x0): multiple definition of `MyMessage::getLong() const'
    .pio\build\ESP32\src\Gestion_Camera.cpp.o:Gestion_Camera.cpp:(.text._ZNK9MyMessage7getLongEv+0x0): first defined here
    .pio\build\ESP32\src\main.cpp.o: In function `MyMessage::getULong() const':
    main.cpp:(.text._ZNK9MyMessage8getULongEv+0x0): multiple definition of `MyMessage::getULong() const'
    .pio\build\ESP32\src\Gestion_Camera.cpp.o:Gestion_Camera.cpp:(.text._ZNK9MyMessage8getULongEv+0x0): first defined here
    .pio\build\ESP32\src\main.cpp.o: In function `MyMessage::getInt() const':
    main.cpp:(.text._ZNK9MyMessage6getIntEv+0x0): multiple definition of `MyMessage::getInt() const'
    .pio\build\ESP32\src\Gestion_Camera.cpp.o:Gestion_Camera.cpp:(.text._ZNK9MyMessage6getIntEv+0x0): first defined here.pio\build\ESP32\src\main.cpp.o: In function `MyMessage::getUInt() const':
    main.cpp:(.text._ZNK9MyMessage7getUIntEv+0x0): multiple definition of `MyMessage::getUInt() const'
    .pio\build\ESP32\src\Gestion_Camera.cpp.o:Gestion_Camera.cpp:(.text._ZNK9MyMessage7getUIntEv+0x0): first defined here
    .pio\build\ESP32\src\main.cpp.o: In function `MyMessage::set(void const*, unsigned int)':
    main.cpp:(.text._ZN9MyMessage3setEPKvj+0x0): multiple definition of `MyMessage::set(void const*, unsigned int)'
    .pio\build\ESP32\src\Gestion_Camera.cpp.o:Gestion_Camera.cpp:(.text._ZN9MyMessage3setEPKvj+0x0): first defined here
    .pio\build\ESP32\src\main.cpp.o: In function `MyMessage::set(__FlashStringHelper const*)':
    main.cpp:(.text._ZN9MyMessage3setEPK19__FlashStringHelper+0x0): multiple definition of `MyMessage::set(__FlashStringHelper const*)'
    .pio\build\ESP32\src\Gestion_Camera.cpp.o:Gestion_Camera.cpp:(.text._ZN9MyMessage3setEPK19__FlashStringHelper+0x0):
    first defined here
    .pio\build\ESP32\src\main.cpp.o:(.bss._msgTmp+0x0): multiple definition of `_msgTmp'
    .pio\build\ESP32\src\Gestion_Camera.cpp.o:(.bss._msgTmp+0x0): first defined here
    .pio\build\ESP32\src\main.cpp.o: In function `stIDTransition()':
    main.cpp:(.text._Z14stIDTransitionv+0x0): multiple definition of `stIDTransition()'
    .pio\build\ESP32\src\Gestion_Camera.cpp.o:Gestion_Camera.cpp:(.text._Z14stIDTransitionv+0x0): first defined here
    .pio\build\ESP32\src\main.cpp.o: In function `stParentTransition()':
    main.cpp:(.text._Z18stParentTransitionv+0x0): multiple definition of `stParentTransition()'
    .pio\build\ESP32\src\Gestion_Camera.cpp.o:Gestion_Camera.cpp:(.text._Z18stParentTransitionv+0x0): first defined here.pio\build\ESP32\src\main.cpp.o: In function `MyMessage::set(char const*)':
    main.cpp:(.text._ZN9MyMessage3setEPKc+0x0): multiple definition of `MyMessage::set(char const*)'
    .pio\build\ESP32\src\Gestion_Camera.cpp.o:Gestion_Camera.cpp:(.text._ZN9MyMessage3setEPKc+0x0): first defined here
    .pio\build\ESP32\src\main.cpp.o: In function `MyMessage::set(unsigned char)':
    main.cpp:(.text._ZN9MyMessage3setEh+0x0): multiple definition of `MyMessage::set(unsigned char)'
    .pio\build\ESP32\src\Gestion_Camera.cpp.o:Gestion_Camera.cpp:(.text._ZN9MyMessage3setEh+0x0): first defined here
    .pio\build\ESP32\src\main.cpp.o: In function `MyMessage::set(bool)':
    main.cpp:(.text._ZN9MyMessage3setEb+0x0): multiple definition of `MyMessage::set(bool)'
    .pio\build\ESP32\src\Gestion_Camera.cpp.o:Gestion_Camera.cpp:(.text._ZN9MyMessage3setEb+0x0): first defined here
    .pio\build\ESP32\src\main.cpp.o: In function `stUplinkTransition()':
    main.cpp:(.text._Z18stUplinkTransitionv+0x0): multiple definition of `stUplinkTransition()'
    .pio\build\ESP32\src\Gestion_Camera.cpp.o:Gestion_Camera.cpp:(.text._Z18stUplinkTransitionv+0x0): first defined here.pio\build\ESP32\src\main.cpp.o: In function `MyMessage::set(float, unsigned char)':
    main.cpp:(.text._ZN9MyMessage3setEfh+0x0): multiple definition of `MyMessage::set(float, unsigned char)'
    .pio\build\ESP32\src\Gestion_Camera.cpp.o:Gestion_Camera.cpp:(.text._ZN9MyMessage3setEfh+0x0): first defined here
    .pio\build\ESP32\src\main.cpp.o: In function `MyMessage::set(unsigned int)':
    main.cpp:(.text._ZN9MyMessage3setEj+0x0): multiple definition of `MyMessage::set(unsigned int)'
    .pio\build\ESP32\src\Gestion_Camera.cpp.o:Gestion_Camera.cpp:(.text._ZN9MyMessage3setEj+0x0): first defined here
    .pio\build\ESP32\src\main.cpp.o: In function `MyMessage::set(int)':
    main.cpp:(.text._ZN9MyMessage3setEi+0x0): multiple definition of `MyMessage::set(int)'
    .pio\build\ESP32\src\Gestion_Camera.cpp.o:Gestion_Camera.cpp:(.text._ZN9MyMessage3setEi+0x0): first defined here
    .pio\build\ESP32\src\main.cpp.o: In function `MyMessage::set(unsigned short)':
    main.cpp:(.text._ZN9MyMessage3setEt+0x0): multiple definition of `MyMessage::set(unsigned short)'
    .pio\build\ESP32\src\Gestion_Camera.cpp.o:Gestion_Camera.cpp:(.text._ZN9MyMessage3setEt+0x0): first defined here
    .pio\build\ESP32\src\main.cpp.o: In function `MyMessage::set(short)':
    main.cpp:(.text._ZN9MyMessage3setEs+0x0): multiple definition of `MyMessage::set(short)'
    .pio\build\ESP32\src\Gestion_Camera.cpp.o:Gestion_Camera.cpp:(.text._ZN9MyMessage3setEs+0x0): first defined here
    .pio\build\ESP32\src\main.cpp.o: In function `displaySplashScreen()':
    main.cpp:(.text._Z19displaySplashScreenv+0x0): multiple definition of `displaySplashScreen()'
    .pio\build\ESP32\src\Gestion_Camera.cpp.o:Gestion_Camera.cpp:(.text._Z19displaySplashScreenv+0x0): first defined here
    .pio\build\ESP32\src\main.cpp.o: In function `_infiniteLoop()':
    main.cpp:(.text._Z13_infiniteLoopv+0x0): multiple definition of `_infiniteLoop()'
    .pio\build\ESP32\src\Gestion_Camera.cpp.o:Gestion_Camera.cpp:(.text._Z13_infiniteLoopv+0x0): first defined here
    .pio\build\ESP32\src\main.cpp.o: In function `getNodeId()':
    main.cpp:(.text._Z9getNodeIdv+0x0): multiple definition of `getNodeId()'
    .pio\build\ESP32\src\Gestion_Camera.cpp.o:Gestion_Camera.cpp:(.text._Z9getNodeIdv+0x0): first defined here
    .pio\build\ESP32\src\main.cpp.o: In function `getParentNodeId()':
    main.cpp:(.text._Z15getParentNodeIdv+0x0): multiple definition of `getParentNodeId()'
    .pio\build\ESP32\src\Gestion_Camera.cpp.o:Gestion_Camera.cpp:(.text._Z15getParentNodeIdv+0x0): first defined here
    .pio\build\ESP32\src\main.cpp.o: In function `getDistanceGW()':
    main.cpp:(.text._Z13getDistanceGWv+0x0): multiple definition of `getDistanceGW()'
    .pio\build\ESP32\src\Gestion_Camera.cpp.o:Gestion_Camera.cpp:(.text._Z13getDistanceGWv+0x0): first defined here
    .pio\build\ESP32\src\main.cpp.o: In function `getControllerConfig()':
    main.cpp:(.text._Z19getControllerConfigv+0x0): multiple definition of `getControllerConfig()'
    .pio\build\ESP32\src\Gestion_Camera.cpp.o:Gestion_Camera.cpp:(.text._Z19getControllerConfigv+0x0): first defined here
    .pio\build\ESP32\src\main.cpp.o: In function `_sendRoute(MyMessage&)':
    main.cpp:(.text._Z10_sendRouteR9MyMessage+0x0): multiple definition of `_sendRoute(MyMessage&)'
    .pio\build\ESP32\src\Gestion_Camera.cpp.o:Gestion_Camera.cpp:(.text._Z10_sendRouteR9MyMessage+0x0): first defined here
    .pio\build\ESP32\src\main.cpp.o: In function `send(MyMessage&, bool)':
    main.cpp:(.text._Z4sendR9MyMessageb+0x0): multiple definition of `send(MyMessage&, bool)'
    .pio\build\ESP32\src\Gestion_Camera.cpp.o:Gestion_Camera.cpp:(.text._Z4sendR9MyMessageb+0x0): first defined here
    .pio\build\ESP32\src\main.cpp.o: In function `sendBatteryLevel(unsigned char, bool)':
    main.cpp:(.text._Z16sendBatteryLevelhb+0x0): multiple definition of `sendBatteryLevel(unsigned char, bool)'
    .pio\build\ESP32\src\Gestion_Camera.cpp.o:Gestion_Camera.cpp:(.text._Z16sendBatteryLevelhb+0x0): first defined here
    .pio\build\ESP32\src\main.cpp.o: In function `sendHeartbeat(bool)':
    main.cpp:(.text._Z13sendHeartbeatb+0x0): multiple definition of `sendHeartbeat(bool)'
    .pio\build\ESP32\src\Gestion_Camera.cpp.o:Gestion_Camera.cpp:(.text._Z13sendHeartbeatb+0x0): first defined here
    .pio\build\ESP32\src\main.cpp.o: In function `present(unsigned char, mysensors_sensor_t, char const*, bool)':
    main.cpp:(.text._Z7presenth18mysensors_sensor_tPKcb+0x0): multiple definition of `present(unsigned char, mysensors_sensor_t, char const*, bool)'
    .pio\build\ESP32\src\Gestion_Camera.cpp.o:Gestion_Camera.cpp:(.text._Z7presenth18mysensors_sensor_tPKcb+0x0): first
    defined here
    .pio\build\ESP32\src\main.cpp.o: In function `present(unsigned char, mysensors_sensor_t, __FlashStringHelper const*, bool)':
    main.cpp:(.text._Z7presenth18mysensors_sensor_tPK19__FlashStringHelperb+0x0): multiple definition of `present(unsigned char, mysensors_sensor_t, __FlashStringHelper const*, bool)'
    .pio\build\ESP32\src\Gestion_Camera.cpp.o:Gestion_Camera.cpp:(.text._Z7presenth18mysensors_sensor_tPK19__FlashStringHelperb+0x0): first defined here
    .pio\build\ESP32\src\main.cpp.o: In function `sendSketchInfo(__FlashStringHelper const*, __FlashStringHelper const*, bool)':
    main.cpp:(.text._Z14sendSketchInfoPK19__FlashStringHelperS1_b+0x0): multiple definition of `sendSketchInfo(__FlashStringHelper const*, __FlashStringHelper const*, bool)'
    .pio\build\ESP32\src\Gestion_Camera.cpp.o:Gestion_Camera.cpp:(.text._Z14sendSketchInfoPK19__FlashStringHelperS1_b+0x0): first defined here
    .pio\build\ESP32\src\main.cpp.o: In function `sendSketchInfo(char const*, char const*, bool)':
    main.cpp:(.text._Z14sendSketchInfoPKcS0_b+0x0): multiple definition of `sendSketchInfo(char const*, char const*, bool)'
    .pio\build\ESP32\src\Gestion_Camera.cpp.o:Gestion_Camera.cpp:(.text._Z14sendSketchInfoPKcS0_b+0x0): first defined here
    .pio\build\ESP32\src\main.cpp.o: In function `request(unsigned char, unsigned char, unsigned char)':
    main.cpp:(.text._Z7requesthhh+0x0): multiple definition of `request(unsigned char, unsigned char, unsigned char)'
    .pio\build\ESP32\src\Gestion_Camera.cpp.o:Gestion_Camera.cpp:(.text._Z7requesthhh+0x0): first defined here
    .pio\build\ESP32\src\main.cpp.o: In function `requestTime(bool)':
    main.cpp:(.text._Z11requestTimeb+0x0): multiple definition of `requestTime(bool)'
    .pio\build\ESP32\src\Gestion_Camera.cpp.o:Gestion_Camera.cpp:(.text._Z11requestTimeb+0x0): first defined here
    .pio\build\ESP32\src\main.cpp.o: In function `saveState(unsigned char, unsigned char)':
    main.cpp:(.text._Z9saveStatehh+0x0): multiple definition of `saveState(unsigned char, unsigned char)'
    .pio\build\ESP32\src\Gestion_Camera.cpp.o:Gestion_Camera.cpp:(.text._Z9saveStatehh+0x0): first defined here
    .pio\build\ESP32\src\main.cpp.o: In function `loadState(unsigned char)':
    main.cpp:(.text._Z9loadStateh+0x0): multiple definition of `loadState(unsigned char)'
    .pio\build\ESP32\src\Gestion_Camera.cpp.o:Gestion_Camera.cpp:(.text._Z9loadStateh+0x0): first defined here
    .pio\build\ESP32\src\main.cpp.o:(.bss._msg+0x0): multiple definition of `_msg'
    .pio\build\ESP32\src\Gestion_Camera.cpp.o:(.bss._msg+0x0): first defined here
    .pio\build\ESP32\src\main.cpp.o: In function `wait(unsigned int, mysensors_command_t, unsigned char)':
    main.cpp:(.text._Z4waitj19mysensors_command_th+0x0): multiple definition of `wait(unsigned int, mysensors_command_t, unsigned char)'
    .pio\build\ESP32\src\Gestion_Camera.cpp.o:Gestion_Camera.cpp:(.text._Z4waitj19mysensors_command_th+0x0): first defined here
    .pio\build\ESP32\src\main.cpp.o: In function `_process()':
    main.cpp:(.text._Z8_processv+0x0): multiple definition of `_process()'
    .pio\build\ESP32\src\Gestion_Camera.cpp.o:Gestion_Camera.cpp:(.text._Z8_processv+0x0): first defined here
    .pio\build\ESP32\src\main.cpp.o: In function `signerPresentation(MyMessage&, unsigned char)':
    main.cpp:(.text._Z18signerPresentationR9MyMessageh+0x0): multiple definition of `signerPresentation(MyMessage&, unsigned char)'
    .pio\build\ESP32\src\Gestion_Camera.cpp.o:Gestion_Camera.cpp:(.text._Z18signerPresentationR9MyMessageh+0x0): first defined here
    .pio\build\ESP32\src\main.cpp.o: In function `_registerNode()':
    main.cpp:(.text._Z13_registerNodev+0x0): multiple definition of `_registerNode()'
    .pio\build\ESP32\src\Gestion_Camera.cpp.o:Gestion_Camera.cpp:(.text._Z13_registerNodev+0x0): first defined here
    .pio\build\ESP32\src\main.cpp.o: In function `presentNode()':
    main.cpp:(.text._Z11presentNodev+0x0): multiple definition of `presentNode()'
    .pio\build\ESP32\src\Gestion_Camera.cpp.o:Gestion_Camera.cpp:(.text._Z11presentNodev+0x0): first defined here
    .pio\build\ESP32\src\main.cpp.o: In function `_callbackTransportReady()':
    main.cpp:(.text._Z23_callbackTransportReadyv+0x0): multiple definition of `_callbackTransportReady()'
    .pio\build\ESP32\src\Gestion_Camera.cpp.o:Gestion_Camera.cpp:(.text._Z23_callbackTransportReadyv+0x0): first defined here
    .pio\build\ESP32\src\main.cpp.o: In function `_processInternalCoreMessage()':
    main.cpp:(.text._Z27_processInternalCoreMessagev+0x0): multiple definition of `_processInternalCoreMessage()'
    .pio\build\ESP32\src\Gestion_Camera.cpp.o:Gestion_Camera.cpp:(.text._Z27_processInternalCoreMessagev+0x0): first defined here
    .pio\build\ESP32\src\main.cpp.o: In function `transportProcessMessage()':
    main.cpp:(.text._Z23transportProcessMessagev+0x0): multiple definition of `transportProcessMessage()'
    .pio\build\ESP32\src\Gestion_Camera.cpp.o:Gestion_Camera.cpp:(.text._Z23transportProcessMessagev+0x0): first defined here
    .pio\build\ESP32\src\main.cpp.o: In function `transportProcessFIFO()':
    main.cpp:(.text._Z20transportProcessFIFOv+0x0): multiple definition of `transportProcessFIFO()'
    .pio\build\ESP32\src\Gestion_Camera.cpp.o:Gestion_Camera.cpp:(.text._Z20transportProcessFIFOv+0x0): first defined here
    .pio\build\ESP32\src\main.cpp.o: In function `transportProcess()':
    main.cpp:(.text._Z16transportProcessv+0x0): multiple definition of `transportProcess()'
    .pio\build\ESP32\src\Gestion_Camera.cpp.o:Gestion_Camera.cpp:(.text._Z16transportProcessv+0x0): first defined here
    .pio\build\ESP32\src\main.cpp.o: In function `wait(unsigned int)':
    main.cpp:(.text._Z4waitj+0x0): multiple definition of `wait(unsigned int)'
    .pio\build\ESP32\src\Gestion_Camera.cpp.o:Gestion_Camera.cpp:(.text._Z4waitj+0x0): first defined here
    .pio\build\ESP32\src\main.cpp.o: In function `wait(unsigned int, mysensors_command_t)':
    main.cpp:(.text._Z4waitj19mysensors_command_t+0x0): multiple definition of `wait(unsigned int, mysensors_command_t)'.pio\build\ESP32\src\Gestion_Camera.cpp.o:Gestion_Camera.cpp:(.text._Z4waitj19mysensors_command_t+0x0): first defined here
    .pio\build\ESP32\src\main.cpp.o: In function `transportWaitUntilReady(unsigned int)':
    main.cpp:(.text._Z23transportWaitUntilReadyj+0x0): multiple definition of `transportWaitUntilReady(unsigned int)'
    .pio\build\ESP32\src\Gestion_Camera.cpp.o:Gestion_Camera.cpp:(.text._Z23transportWaitUntilReadyj+0x0): first defined here
    .pio\build\ESP32\src\main.cpp.o: In function `transportWait(unsigned int, unsigned char, unsigned char)':
    main.cpp:(.text._Z13transportWaitjhh+0x0): multiple definition of `transportWait(unsigned int, unsigned char, unsigned char)'
    .pio\build\ESP32\src\Gestion_Camera.cpp.o:Gestion_Camera.cpp:(.text._Z13transportWaitjhh+0x0): first defined here
    .pio\build\ESP32\src\main.cpp.o: In function `transportPingNode(unsigned char)':
    main.cpp:(.text._Z17transportPingNodeh+0x0): multiple definition of `transportPingNode(unsigned char)'
    .pio\build\ESP32\src\Gestion_Camera.cpp.o:Gestion_Camera.cpp:(.text._Z17transportPingNodeh+0x0): first defined here
    .pio\build\ESP32\src\main.cpp.o: In function `transportCheckUplink(bool)':
    main.cpp:(.text._Z20transportCheckUplinkb+0x0): multiple definition of `transportCheckUplink(bool)'
    .pio\build\ESP32\src\Gestion_Camera.cpp.o:Gestion_Camera.cpp:(.text._Z20transportCheckUplinkb+0x0): first defined here
    .pio\build\ESP32\src\main.cpp.o: In function `doYield()':
    main.cpp:(.text._Z7doYieldv+0x0): multiple definition of `doYield()'
    .pio\build\ESP32\src\Gestion_Camera.cpp.o:Gestion_Camera.cpp:(.text._Z7doYieldv+0x0): first defined here
    .pio\build\ESP32\src\main.cpp.o: In function `_sleep(unsigned int, bool, unsigned char, unsigned char, unsigned char, unsigned char)':
    main.cpp:(.text._Z6_sleepjbhhhh+0x0): multiple definition of `_sleep(unsigned int, bool, unsigned char, unsigned char, unsigned char, unsigned char)'
    .pio\build\ESP32\src\Gestion_Camera.cpp.o:Gestion_Camera.cpp:(.text._Z6_sleepjbhhhh+0x0): first defined here
    .pio\build\ESP32\src\main.cpp.o: In function `sleep(unsigned int, bool)':
    main.cpp:(.text._Z5sleepjb+0x0): multiple definition of `sleep(unsigned int, bool)'
    .pio\build\ESP32\src\Gestion_Camera.cpp.o:Gestion_Camera.cpp:(.text._Z5sleepjb+0x0): first defined here
    .pio\build\ESP32\src\main.cpp.o: In function `sleep(unsigned char, unsigned char, unsigned int, bool)':
    main.cpp:(.text._Z5sleephhjb+0x0): multiple definition of `sleep(unsigned char, unsigned char, unsigned int, bool)'
    .pio\build\ESP32\src\Gestion_Camera.cpp.o:Gestion_Camera.cpp:(.text._Z5sleephhjb+0x0): first defined here
    .pio\build\ESP32\src\main.cpp.o: In function `sleep(unsigned char, unsigned char, unsigned char, unsigned char, unsigned int, bool)':
    main.cpp:(.text._Z5sleephhhhjb+0x0): multiple definition of `sleep(unsigned char, unsigned char, unsigned char, unsigned char, unsigned int, bool)'
    .pio\build\ESP32\src\Gestion_Camera.cpp.o:Gestion_Camera.cpp:(.text._Z5sleephhhhjb+0x0): first defined here
    .pio\build\ESP32\src\main.cpp.o: In function `smartSleep(unsigned int)':
    main.cpp:(.text._Z10smartSleepj+0x0): multiple definition of `smartSleep(unsigned int)'
    .pio\build\ESP32\src\Gestion_Camera.cpp.o:Gestion_Camera.cpp:(.text._Z10smartSleepj+0x0): first defined here
    .pio\build\ESP32\src\main.cpp.o: In function `smartSleep(unsigned char, unsigned char, unsigned int)':
    main.cpp:(.text._Z10smartSleephhj+0x0): multiple definition of `smartSleep(unsigned char, unsigned char, unsigned int)'
    .pio\build\ESP32\src\Gestion_Camera.cpp.o:Gestion_Camera.cpp:(.text._Z10smartSleephhj+0x0): first defined here
    .pio\build\ESP32\src\main.cpp.o: In function `smartSleep(unsigned char, unsigned char, unsigned char, unsigned char, unsigned int)':
    main.cpp:(.text._Z10smartSleephhhhj+0x0): multiple definition of `smartSleep(unsigned char, unsigned char, unsigned
    char, unsigned char, unsigned int)'
    .pio\build\ESP32\src\Gestion_Camera.cpp.o:Gestion_Camera.cpp:(.text._Z10smartSleephhhhj+0x0): first defined here
    .pio\build\ESP32\src\main.cpp.o: In function `getSleepRemaining()':
    main.cpp:(.text._Z17getSleepRemainingv+0x0): multiple definition of `getSleepRemaining()'
    .pio\build\ESP32\src\Gestion_Camera.cpp.o:Gestion_Camera.cpp:(.text._Z17getSleepRemainingv+0x0): first defined here
    .pio\build\ESP32\src\main.cpp.o: In function `_nodeLock(char const*)':
    main.cpp:(.text._Z9_nodeLockPKc+0x0): multiple definition of `_nodeLock(char const*)'
    .pio\build\ESP32\src\Gestion_Camera.cpp.o:Gestion_Camera.cpp:(.text._Z9_nodeLockPKc+0x0): first defined here
    .pio\build\ESP32\src\main.cpp.o: In function `_checkNodeLock()':
    main.cpp:(.text._Z14_checkNodeLockv+0x0): multiple definition of `_checkNodeLock()'
    .pio\build\ESP32\src\Gestion_Camera.cpp.o:Gestion_Camera.cpp:(.text._Z14_checkNodeLockv+0x0): first defined here
    .pio\build\ESP32\src\main.cpp.o:(.bss.loopTaskWDTEnabled+0x0): multiple definition of `loopTaskWDTEnabled'
    .pio\build\ESP32\src\Gestion_Camera.cpp.o:(.bss.loopTaskWDTEnabled+0x0): first defined here
    .pio\build\ESP32\src\main.cpp.o:(.bss.loopTaskHandle+0x0): multiple definition of `loopTaskHandle'
    .pio\build\ESP32\src\Gestion_Camera.cpp.o:(.bss.loopTaskHandle+0x0): first defined here
    .pio\build\ESP32\src\main.cpp.o: In function `loopTask(void*)':
    main.cpp:(.text._Z8loopTaskPv+0x0): multiple definition of `loopTask(void*)'
    .pio\build\ESP32\src\Gestion_Camera.cpp.o:Gestion_Camera.cpp:(.text._Z8loopTaskPv+0x0): first defined here
    .pio\build\ESP32\src\main.cpp.o: In function `app_main':
    main.cpp:(.text.app_main+0x0): multiple definition of `app_main'
    .pio\build\ESP32\src\Gestion_Camera.cpp.o:Gestion_Camera.cpp:(.text.app_main+0x0): first defined here
    .pio\build\ESP32\src\main.cpp.o: In function `_begin()':
    main.cpp:(.text._Z6_beginv+0x0): multiple definition of `_begin()'
    .pio\build\ESP32\src\Gestion_Camera.cpp.o:Gestion_Camera.cpp:(.text._Z6_beginv+0x0): first defined here
    .pio\build\ESP32\src\main.cpp.o: In function `hwDebugPrint(char const*, ...)':
    main.cpp:(.text._Z12hwDebugPrintPKcz+0x0): multiple definition of `hwDebugPrint(char const*, ...)'
    .pio\build\ESP32\src\Gestion_Camera.cpp.o:Gestion_Camera.cpp:(.text._Z12hwDebugPrintPKcz+0x0): first defined here
    collect2.exe: error: ld returned 1 exit status
    *** [.pio\build\ESP32\firmware.elf] Error 1
    Si ça peut aider, Gestion_Camera.cpp c'est ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    #include "Gestion_Camera.hpp"
     
    void Camera_On(MyMessage *pDebugMessage, MyMessage *pEtatCameraMessage)
    {
    	digitalWrite(PIN_CAMERA_OFF, HIGH); // Commande off raspberry
    	digitalWrite(PIN_ALIM_RASPBERRY, HIGH); // Transistor de mise au 0V du raspberry
    	digitalWrite(PIN_RELAY_PORTE, HIGH); // Commande relais regul 5V
     
    	pEtatCameraMessage->set(1);
    	pDebugMessage->set("Camera allumee");
    	send(*pEtatCameraMessage);
    	send(*pDebugMessage);
    }
     
    void Camera_On(MyMessage *pEtatCameraMessage)
    {
    	digitalWrite(PIN_CAMERA_OFF, HIGH);
    	digitalWrite(PIN_ALIM_RASPBERRY, HIGH);
    	digitalWrite(PIN_RELAY_PORTE, HIGH);
     
    	pEtatCameraMessage->set(1);
    	send(*pEtatCameraMessage);
    }
     
    void Camera_Off(bool &commandCameraOff, MyMessage *pDebugMessage, MyMessage *pEtatCameraMessage)
    {
        digitalWrite(PIN_ALIM_RASPBERRY, LOW); // Coupe l'alimentation du raspberry pi.
     
    	pDebugMessage->set("Camera eteinte");
    	send(*pDebugMessage);
     
    	pEtatCameraMessage->set(0);
    	send(*pEtatCameraMessage);
    }
     
    void Camera_Off(bool &commandCameraOff, MyMessage *pEtatCameraMessage)
    {
        digitalWrite(PIN_ALIM_RASPBERRY, LOW); // Coupe l'alimentation du raspberry pi.
     
    	pEtatCameraMessage->set(0);
    	send(*pEtatCameraMessage);
    }
    et le header :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    #ifndef GESTIONCAMERA_HPP
        #define GESTIONCAMERA_HPP
     
        #include "Defines.hpp"
     
        #include <Arduino.h>
        #include "MySensors_Wrapper.hpp"
     
        void Camera_On(MyMessage *pDebugMessage,MyMessage *pEtatCameraMessage);
        void Camera_Off(bool &commandCameraOff, MyMessage *pDebugMessage,MyMessage *pEtatCameraMessage);
        void Camera_Off(bool &commandCameraOff, MyMessage *pEtatCameraMessage);
     
    #endif
    le defines si jamais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    #ifndef DEFINE_HPP
        #define DEFINE_HPP
     
        //#define MY_DEBUG
     
        #define MY_RADIO_RF24
        #define MY_RF24_CE_PIN GPIO_NUM_22
        #define MY_RF24_CS_PIN GPIO_NUM_21
        #define MY_RF24_IRQ_PIN GPIO_NUM_0
        #define MY_RF24_PA_LEVEL (RF24_PA_MIN) // RF24_PA_LOW, RF24_PA_MIN, RF24_PA_HIGH, RF24_PA_MAX
        #define MY_RF24_DATARATE (RF24_250KBPS)
        //#define MY_RX_MESSAGE_BUFFER_FEATURE // Autorise l'interruption IRQ du NRF24L
     
        //#define MY_RF24_POWER_PIN 22 // Pour couper l'alim du rf24. si mode veille utiliser RF24_sleep.
     
        #define ID_GESTION_PORTE 0
        #define ID_ETAT_PORTE 1
        #define ID_GESTION_CAMERA 2
        #define ID_ETAT_CAMERA 3
        #define ID_GESTION_TREMIE 4
        #define ID_ETAT_MOTEUR_TREMIE 5
        #define ID_ETAT_BAC_TREMIE 6
        #define ID_ETAT_GAMELLE 7
        #define ID_BATTERIE 8
        #define ID_PILES 9
        #define ID_SLEEP 10
        #define ID_LISTEN_OK 11
        #define ID_DEBUG 12
        #define ID_GESTION_CHARGEUR_PILES 13
        #define ID_ETAT_CHARGEUR_PILES 14
        #define ID_WAKE_UP_IN 15
     
        #define DELAY_CAMERA_OFF 60000
     
        #define MICROSECOND_CONVERT 1000000L
     
        #define SLEEP_DAY_DURATION 900000000L
     
        #define PIN_ALIM_RASPBERRY GPIO_NUM_13
        #define PIN_RELAY_TREMIE GPIO_NUM_15
        #define PIN_CAMERA_OFF GPIO_NUM_32
        #define PIN_RELAY_CHARGEUR GPIO_NUM_33
        #define PIN_RELAY_PORTE GPIO_NUM_16
        #define PIN_DRIVER_IN1 GPIO_NUM_2
        #define PIN_DRIVER_IN2 GPIO_NUM_4
        #define PIN_FDC_OPEN GPIO_NUM_34
        #define PIN_FDC_CLOSE GPIO_NUM_35
        #define PIN_CONTOL_PILES GPIO_NUM_36
        #define PIN_CONTROL_BATTERY GPIO_NUM_39
        #define PIN_READ_GAMELLE GPIO_NUM_26
        #define PIN_READ_TREMIE_MIDDLE GPIO_NUM_25
        #define PIN_READ_TREMIE_EMPTY GPIO_NUM_27
     
        #define TEMPO_BEFORE_SLEEP 3600000L
        #define TEMPO_BEFORE_CHECK_PILES 1800000L // 30 minutes = 1800 secondes.
        #define TEMPO_BEFORE_CHECK_BATTERY TEMPO_BEFORE_CHECK_PILES*2
     
        #define DELAY_OUVERTURE 6000
        #define DELAY_FERMETURE 6000
        #define DELAY_TREMIE_FILLING 5000
     
    #endif
    Je ne comprends pas d'où vient le problème :calim2:
    C'est vraiment du moment ou j'ai ajouté les pointeurs et l'inclusion de la bibliotheque MySensors à mes autres fichiers cpp...

  8. #8
    Expert confirmé

    Homme Profil pro
    Directeur de projet
    Inscrit en
    Mai 2013
    Messages
    1 277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2013
    Messages : 1 277
    Points : 4 000
    Points
    4 000
    Par défaut
    Bonjour,

    Apparemment toute les fonctions sont vues comme en double définition dans xxx.cpp et xxx.cpp.o. Mais ce dernier type ne devrait pas être pris en compte car ce n'est pas un fichier source mais le fichier objet produit par le compilateur pour chaque source. Ce ne sont pas des exécutables mais les briques de base qu'utilisera le linker pour construire l'exécutable.

    Je supprimerais donc tous le xxx.cpp.o du projet (normalement ce ne sont que des fichiers temporaires) ou les déplacerais hors de portée. Si cela fonctionne une fois mais se reproduit par la suite c'est que la chaîne de compilation ne fait pas le ménage (problème de configuration).

    Salutation
    Ever tried. Ever failed. No matter. Try Again. Fail again. Fail better. (Samuel Beckett)

  9. #9
    Membre à l'essai
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Décembre 2014
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2014
    Messages : 75
    Points : 17
    Points
    17
    Par défaut
    Bonjour et merci de porter un tel intérêt à mon problème

    Je viens de supprimer tous les fichiers *.o du projet et le problème est toujours présent lors de la compilation. Il me sort encore toute ces erreurs. De plus comme je l'ai mentionné précédemment, si je mets tous les messages à envoyer dans le "main.cpp", la compilation se fait normalement. C'est vraiment le fait d'ajouter un pointeur qui m'affiche ces messages à la compilation. Ce qui me fait donc penser que quelque chose cloche dans mon code mais je ne comprends pas où...

  10. #10
    Expert confirmé

    Homme Profil pro
    Directeur de projet
    Inscrit en
    Mai 2013
    Messages
    1 277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2013
    Messages : 1 277
    Points : 4 000
    Points
    4 000
    Par défaut
    Bonsoir,

    Dont acte.

    De quel pointeur parlez vous ? Il y en a déjà plusieurs dans les éléments communiqués.

    Salutations.
    Ever tried. Ever failed. No matter. Try Again. Fail again. Fail better. (Samuel Beckett)

  11. #11
    Membre à l'essai
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Décembre 2014
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2014
    Messages : 75
    Points : 17
    Points
    17
    Par défaut
    pardon je me suis mal exprimé. Je parlais de tous les pointeurs en general.

    J'ai essayé un programme plus simple à savoir :

    Tout dans mon main :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    #define MY_RADIO_RF24
    #define MY_RF24_CE_PIN GPIO_NUM_22
    #define MY_RF24_CS_PIN GPIO_NUM_21
    #define MY_RF24_IRQ_PIN GPIO_NUM_0
    #define MY_RF24_PA_LEVEL (RF24_PA_MIN) // RF24_PA_LOW, RF24_PA_MIN, RF24_PA_HIGH, RF24_PA_MAX
    #define MY_RF24_DATARATE (RF24_250KBPS)
     
    #include <Arduino.h>
    #include <MySensors.h>
    //#include "testInclude.hpp"
     
    #define ID_DEBUG 0
     
    void testPointeurMain(MyMessage *pDebugMessage);
     
    MyMessage debugMessage(ID_DEBUG, V_VAR1);
     
    void setup() 
    {
      debugMessage.set("Coucou1");
      send(debugMessage);
    }
     
    void loop() 
    {
      testPointeurMain(&debugMessage);
      //SecondTest(&debugMessage);
    }
     
    void testPointeurMain(MyMessage *pDebugMessage)
    {
      pDebugMessage->set("coucou2");
      send(*pDebugMessage);
    }
    ce code se compile normalement.

    Maintenant si j'ajoute un fichier "testInclude.cpp" dans lequel je mets :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    #include "testInclude.hpp"
     
    void SecondTest(MyMessage *pDebugMessage)
    {
        pDebugMessage->set("Coucou du fichier CPP");
        send(*pDebugMessage);
    }
    et dans son header :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    #ifndef TESTINCLUDE_HPP
        #define TESTINCLUDE_HPP
     
        #include <MySensors.h>
     
        void SecondTest(MyMessage *pDebugMessage);
     
    #endif
    et que je modifie une chtouille mon main :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    #define MY_RADIO_RF24
    #define MY_RF24_CE_PIN GPIO_NUM_22
    #define MY_RF24_CS_PIN GPIO_NUM_21
    #define MY_RF24_IRQ_PIN GPIO_NUM_0
    #define MY_RF24_PA_LEVEL (RF24_PA_MIN) // RF24_PA_LOW, RF24_PA_MIN, RF24_PA_HIGH, RF24_PA_MAX
    #define MY_RF24_DATARATE (RF24_250KBPS)
     
    #include <Arduino.h>
    #include <MySensors.h>
    #include "testInclude.hpp"
     
    #define ID_DEBUG 0
     
    void testPointeurMain(MyMessage *pDebugMessage);
     
    MyMessage debugMessage(ID_DEBUG, V_VAR1);
     
    void setup() 
    {
      debugMessage.set("Coucou1");
      send(debugMessage);
    }
     
    void loop() 
    {
      testPointeurMain(&debugMessage);
      SecondTest(&debugMessage);
    }
     
    void testPointeurMain(MyMessage *pDebugMessage)
    {
      pDebugMessage->set("coucou2");
      send(*pDebugMessage);
    }
    Là j'ai ces codes d'erreur :

    In file included from include/testInclude.hpp:4,
    from src/testInclude.cpp:1:
    .pio/libdeps/az-delivery-devkit-v4/MySensors/MySensors.h:426:2: error: #error No forward link or gateway feature activated. This means nowhere to send messages! Pretty pointless.
    #error No forward link or gateway feature activated. This means nowhere to send messages! Pretty pointless.
    ^~~~~
    In file included from .pio/libdeps/az-delivery-devkit-v4/MySensors/MySensors.h:445,
    from include/testInclude.hpp:4,
    from src/testInclude.cpp:1:
    .pio/libdeps/az-delivery-devkit-v4/MySensors/hal/architecture/ESP32/MyMainESP32.cpp:33: warning: "ARDUINO_RUNNING_CORE" redefined
    #define ARDUINO_RUNNING_CORE 1

    In file included from C:/Users/.platformio/packages/framework-arduinoespressif32/cores/esp32/Arduino.h:36,
    from .pio/libdeps/az-delivery-devkit-v4/MySensors/MySensors.h:39,
    from include/testInclude.hpp:4,
    from src/testInclude.cpp:1:
    C:/Users/.platformio/packages/framework-arduinoespressif32/cores/esp32/esp32-hal.h:61: note: this is the location of the previous definition
    #define ARDUINO_RUNNING_CORE CONFIG_ARDUINO_RUNNING_CORE

    *** [.pio\build\az-delivery-devkit-v4\src\testInclude.cpp.o] Error 1
    Donc dès que j'ajoute MySensors.h dans un autre fichier je suis dans cette configuration d'erreur :'(

  12. #12
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 302
    Points : 53 168
    Points
    53 168
    Par défaut
    À tester :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    #include "testInclude.hpp"
     
    void SecondTest(MyMessage *pDebugMessage)
    {
        pDebugMessage->set("Coucou du fichier CPP");
        send(*pDebugMessage);
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    #ifndef TESTINCLUDE_HPP
    #define TESTINCLUDE_HPP
     
    #define MY_RADIO_RF24
    #define MY_RF24_CE_PIN GPIO_NUM_22
    #define MY_RF24_CS_PIN GPIO_NUM_21
    #define MY_RF24_IRQ_PIN GPIO_NUM_0
    #define MY_RF24_PA_LEVEL (RF24_PA_MIN) // RF24_PA_LOW, RF24_PA_MIN, RF24_PA_HIGH, RF24_PA_MAX
    #define MY_RF24_DATARATE (RF24_250KBPS)
     
    #include <MySensors.h>
     
    void SecondTest(MyMessage *pDebugMessage);
     
    #endif
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    #include <Arduino.h>
    #include "testInclude.hpp"
     
    #define ID_DEBUG 0
     
    void testPointeurMain(MyMessage *pDebugMessage);
     
    MyMessage debugMessage(ID_DEBUG, V_VAR1);
     
    void setup() 
    {
      debugMessage.set("Coucou1");
      send(debugMessage);
    }
     
    void loop() 
    {
      testPointeurMain(&debugMessage);
      SecondTest(&debugMessage);
    }
     
    void testPointeurMain(MyMessage *pDebugMessage)
    {
      pDebugMessage->set("coucou2");
      send(*pDebugMessage);
    }
    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

  13. #13
    Membre à l'essai
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Décembre 2014
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2014
    Messages : 75
    Points : 17
    Points
    17
    Par défaut
    Je viens de tester le code que vous m'avez envoyé et c'est pareil :

    .pio\build\ESP32\src\testInclude.cpp.o:(.bss._transportReady_cb+0x0): multiple definition of `_transportReady_cb'
    .pio\build\ESP32\src\main.cpp.o:(.bss._transportReady_cb+0x0): first defined here
    .pio\build\ESP32\src\testInclude.cpp.o: In function `stReadyTransition()':
    testInclude.cpp:(.text._Z17stReadyTransitionv+0x0): multiple definition of `stReadyTransition()'
    .pio\build\ESP32\src\main.cpp.o:main.cpp:(.text._Z17stReadyTransitionv+0x0): first defined here
    .pio\build\ESP32\src\testInclude.cpp.o: In function `stFailureTransition()':
    testInclude.cpp:(.text._Z19stFailureTransitionv+0x0): multiple definition of `stFailureTransition()'
    .pio\build\ESP32\src\main.cpp.o:main.cpp:(.text._Z19stFailureTransitionv+0x0): first defined here
    .pio\build\ESP32\src\testInclude.cpp.o: In function `hwInit()':
    testInclude.cpp:(.text._Z6hwInitv+0x0): multiple definition of `hwInit()'
    .pio\build\ESP32\src\main.cpp.o:main.cpp:(.text._Z6hwInitv+0x0): first defined here
    .pio\build\ESP32\src\testInclude.cpp.o: In function `hwReadConfigBlock(void*, void*, unsigned int)':
    testInclude.cpp:(.text._Z17hwReadConfigBlockPvS_j+0x0): multiple definition of `hwReadConfigBlock(void*, void*, unsigned int)'
    .pio\build\ESP32\src\main.cpp.o:main.cpp:(.text._Z17hwReadConfigBlockPvS_j+0x0): first defined here
    .pio\build\ESP32\src\testInclude.cpp.o: In function `stInitTransition()':
    testInclude.cpp:(.text._Z16stInitTransitionv+0x0): multiple definition of `stInitTransition()'
    .pio\build\ESP32\src\main.cpp.o:main.cpp:(.text._Z16stInitTransitionv+0x0): first defined here
    .pio\build\ESP32\src\testInclude.cpp.o: In function `hwWriteConfigBlock(void*, void*, unsigned int)':
    testInclude.cpp:(.text._Z18hwWriteConfigBlockPvS_j+0x0): multiple definition of `hwWriteConfigBlock(void*, void*, unsigned int)'.pio\build\ESP32\src\main.cpp.o:main.cpp:(.text._Z18hwWriteConfigBlockPvS_j+0x0): first defined here
    .pio\build\ESP32\src\testInclude.cpp.o: In function `hwReadConfig(int)':
    testInclude.cpp:(.text._Z12hwReadConfigi+0x0): multiple definition of `hwReadConfig(int)'
    .pio\build\ESP32\src\main.cpp.o:main.cpp:(.text._Z12hwReadConfigi+0x0): first defined here
    .pio\build\ESP32\src\testInclude.cpp.o: In function `hwWriteConfig(int, unsigned char)':
    testInclude.cpp:(.text.app_main+0x0): multiple definition of `app_main'
    .pio\build\ESP32\src\main.cpp.o:main.cpp:(.text.app_main+0x0): first defined here
    .pio\build\ESP32\src\testInclude.cpp.o: In function `hwDebugPrint(char const*, ...)':
    testInclude.cpp:(.text._Z12hwDebugPrintPKcz+0x0): multiple definition of `hwDebugPrint(char const*, ...)'
    .pio\build\ESP32\src\main.cpp.o:main.cpp:(.text._Z12hwDebugPrintPKcz+0x0): first defined here
    collect2.exe: error: ld returned 1 exit status
    *** [.pio\build\ESP32\firmware.elf] Error 1
    J'ai volontairement raccourci le message car il est sacrément long...

Discussions similaires

  1. Petits problème de fonction et de pointeur
    Par markipoli dans le forum Débuter
    Réponses: 3
    Dernier message: 19/11/2007, 18h42
  2. Apeller fonction DLL avec pointeurs en Delphi
    Par dacid dans le forum Delphi
    Réponses: 2
    Dernier message: 11/08/2006, 13h11
  3. [WD10] Utiliser une fonction OpenGL avec pointeur (int)
    Par Zoons dans le forum WinDev
    Réponses: 3
    Dernier message: 06/07/2006, 17h38
  4. Fonction retournant un pointeur
    Par Le Furet dans le forum C
    Réponses: 8
    Dernier message: 25/09/2005, 19h54
  5. Declaration de fonction retournant un pointeur sur fonction
    Par pseudokifaitladifférence dans le forum C
    Réponses: 5
    Dernier message: 11/08/2003, 20h37

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo