ESP8266: Object als Parameter eine Funktion

Hallo,
derzeit habe ich in meiner Main.cpp die folgende Funktion:

void MQTTInitAndConnect(boolean Initial)
{
  if (Initial == true)
  {
    Serial.println("################## MQTTInitAndConnect ################################");
    SerialLog("MQTTHOST", MQTT_HOST);
    MQTTclient.setServer(MQTT_HOST, MQTT_PORT);
  }

  while (!client.connected())
  {
    String client_id;
    client_id = String(myHOSTNAME);

    client_id += "(" + String(WiFi.macAddress()) + ")";
    // Serial.printf("The client %s connects to the public mqtt broker\n", client_id.c_str());
    if (MQTTclient.connect(client_id.c_str(), MQTT_USER, MQTT_PASSWORD))
    {
      if (Initial == true)
      {
        Serial.println("mqtt broker connected");
      }
    }
    else
    {
      SerialLog("failed with state ", MQTTclient.state());
      delay(2000);
    }
  }
}

Diese würde ich gern auslagern und mit Include dann einbinden, so das ich diese dann auch in anderen Projekten verwenden kann. Wie mache ich das mit der Paramter übergabe der
Objecte

  • client
  • MQTTclient

Diese sind in der main.cpp definiert.

WiFiClient client;
PubSubClient MQTTclient(client);

Vielen Dank für Tips,

vieleicht lokal doch etwas andere namen nehmen, damit man nicht ganz durcheinander kommt

void MQTTInitAndConnect(boolean Initial, WifiClient &wclient, PubSubClient &mclient)

Dann hast in deiner Funktion Referenzen auf den wifi Client und den MQTT Client die du verwenden kannst. Vermutlich brauchst aber eh nur den MQTT Client. Evtl. fehlt dir das Objekt namens WiFi das du noch übergeben müsstest

P.S.: eine Funktion mit einem blockierenden 2000 ms Delay würde ich nicht wiederverwenden wollen.