diff --git a/ci b/ci new file mode 160000 index 000000000..da37d5d23 --- /dev/null +++ b/ci @@ -0,0 +1 @@ +Subproject commit da37d5d2371435fa73fd5a1f4da7d92b7aafea26 diff --git a/src/Wippersnapper.cpp b/src/Wippersnapper.cpp index 5a189241c..48968a370 100644 --- a/src/Wippersnapper.cpp +++ b/src/Wippersnapper.cpp @@ -32,8 +32,11 @@ */ #include "Wippersnapper.h" +#include "Wippersnapper_Networking.h" -Wippersnapper WS; +// Define the global WS instance as the platform-specific derived class +// This ensures virtual methods like _connect() route to the correct implementation +Wippersnapper_WiFi WS; Wippersnapper::Wippersnapper() { _mqtt = 0; // MQTT Client object diff --git a/src/Wippersnapper.h b/src/Wippersnapper.h index 6395bcb98..ca38175e0 100644 --- a/src/Wippersnapper.h +++ b/src/Wippersnapper.h @@ -501,6 +501,11 @@ class Wippersnapper { wippersnapper_signal_v1_CreateSignalRequest _outgoingSignalMsg; /*!< Outgoing signal message from device */ }; -extern Wippersnapper WS; ///< Global member variable for callbacks + +// Include networking to get the platform-specific Wippersnapper_WiFi typedef +#include "Wippersnapper_Networking.h" + +// // Global WS instance - defined as platform-specific type in Wippersnapper.cpp +// extern Wippersnapper_WiFi WS; ///< Global member variable for callbacks #endif // ADAFRUIT_WIPPERSNAPPER_H diff --git a/src/components/analogIO/Wippersnapper_AnalogIO.h b/src/components/analogIO/Wippersnapper_AnalogIO.h index d6a028e47..7cc17759f 100644 --- a/src/components/analogIO/Wippersnapper_AnalogIO.h +++ b/src/components/analogIO/Wippersnapper_AnalogIO.h @@ -81,6 +81,5 @@ class Wippersnapper_AnalogIO { int32_t _totalAnalogInputPins; /*!< Total number of analog input pins */ analogInputPin *_analog_input_pins; /*!< Array of analog pin objects */ }; -extern Wippersnapper WS; /*!< Wippersnapper variable. */ #endif // WIPPERSNAPPER_DIGITALGPIO_H \ No newline at end of file diff --git a/src/components/digitalIO/Wippersnapper_DigitalGPIO.h b/src/components/digitalIO/Wippersnapper_DigitalGPIO.h index 960687ee5..716c8e583 100644 --- a/src/components/digitalIO/Wippersnapper_DigitalGPIO.h +++ b/src/components/digitalIO/Wippersnapper_DigitalGPIO.h @@ -57,6 +57,5 @@ class Wippersnapper_DigitalGPIO { int32_t _totalDigitalInputPins; /*!< Total number of digital-input capable pins */ }; -extern Wippersnapper WS; #endif // WIPPERSNAPPER_DIGITALGPIO_H \ No newline at end of file diff --git a/src/components/display/controller.h b/src/components/display/controller.h index db463b3d4..e03132db7 100644 --- a/src/components/display/controller.h +++ b/src/components/display/controller.h @@ -17,8 +17,8 @@ #include "Wippersnapper.h" #include "hardware.h" -class Wippersnapper_V2; ///< Forward declaration -class DisplayHardware; ///< Forward declaration +class Wippersnapper; ///< Forward declaration +class DisplayHardware; ///< Forward declaration /**************************************************************************/ /*! @@ -43,5 +43,5 @@ class DisplayController { _hw_instances; ///< Holds pointers to DisplayHardware instances unsigned long _last_bar_update; ///< Timestamp of last status bar update }; -extern Wippersnapper Ws; ///< Global WS instance + #endif \ No newline at end of file diff --git a/src/components/display/drivers/dispDrvThinkInkGrayscale4Eaamfgn.h b/src/components/display/drivers/dispDrvThinkInkGrayscale4Eaamfgn.h index 291174f64..22490f461 100644 --- a/src/components/display/drivers/dispDrvThinkInkGrayscale4Eaamfgn.h +++ b/src/components/display/drivers/dispDrvThinkInkGrayscale4Eaamfgn.h @@ -258,7 +258,7 @@ class drvDispThinkInkGrayscale4Eaamfgn : public dispDrvBase { } } else if (message[i] == 0xC2 && message[i + 1] == 0xB0) { // Degree symbol - _display->write(char(248)); + _display->write(char(247)); i++; } else { _display->print(message[i]); diff --git a/src/components/display/drivers/dispDrvThinkInkGrayscale4T5.h b/src/components/display/drivers/dispDrvThinkInkGrayscale4T5.h index ed266e00b..bc1840d57 100644 --- a/src/components/display/drivers/dispDrvThinkInkGrayscale4T5.h +++ b/src/components/display/drivers/dispDrvThinkInkGrayscale4T5.h @@ -124,7 +124,8 @@ class dispDrvThinkInkGrayscale4T5 : public dispDrvBase { i++; } } else if (message[i] == 0xC2 && message[i + 1] == 0xB0) { - _display->write(char(248)); + // Degree symbol + _display->write(char(247)); i++; } else { _display->print(message[i]); diff --git a/src/components/ds18x20/ws_ds18x20.h b/src/components/ds18x20/ws_ds18x20.h index 5398d4c4f..293fda017 100644 --- a/src/components/ds18x20/ws_ds18x20.h +++ b/src/components/ds18x20/ws_ds18x20.h @@ -60,6 +60,5 @@ class ws_ds18x20 { std::vector _ds18xDrivers; ///< Vec. of ptrs. to ds18x driver objects }; -extern Wippersnapper WS; #endif // WIPPERSNAPPER_DS18X20_H \ No newline at end of file diff --git a/src/components/i2c/WipperSnapper_I2C.h b/src/components/i2c/WipperSnapper_I2C.h index d36ef0766..712b6fc7d 100644 --- a/src/components/i2c/WipperSnapper_I2C.h +++ b/src/components/i2c/WipperSnapper_I2C.h @@ -232,6 +232,5 @@ class WipperSnapper_Component_I2C { WipperSnapper_I2C_Driver_Out_SH1107 *_sh1107 = nullptr; WipperSnapper_I2C_Driver_Out_Ssd1306 *_ssd1306 = nullptr; }; -extern Wippersnapper WS; #endif // WipperSnapper_Component_I2C_H diff --git a/src/components/ledc/ws_ledc.h b/src/components/ledc/ws_ledc.h index d206767a6..10e287947 100644 --- a/src/components/ledc/ws_ledc.h +++ b/src/components/ledc/ws_ledc.h @@ -55,6 +55,5 @@ class ws_ledc { bool analogWrite(uint8_t pin, int value); uint32_t tone(uint8_t pin, uint32_t freq); }; -extern Wippersnapper WS; #endif // ws_ledc_H \ No newline at end of file diff --git a/src/components/pixels/ws_pixels.h b/src/components/pixels/ws_pixels.h index 9fbe98618..7267e3cdb 100644 --- a/src/components/pixels/ws_pixels.h +++ b/src/components/pixels/ws_pixels.h @@ -68,5 +68,5 @@ class ws_pixels { void publishAddStrandResponse(bool is_success, char *pixels_pin_data); uint32_t getGammaCorrectedColor(uint32_t pixel_color, strand_s strand); }; -extern Wippersnapper WS; + #endif // WS_PIXELS \ No newline at end of file diff --git a/src/components/pwm/ws_pwm.h b/src/components/pwm/ws_pwm.h index 6a201b2ce..480b82e70 100644 --- a/src/components/pwm/ws_pwm.h +++ b/src/components/pwm/ws_pwm.h @@ -45,6 +45,5 @@ class ws_pwm { private: ws_ledc *_ledcMgr = nullptr; ///< pointer to ws_ledc }; -extern Wippersnapper WS; #endif // WS_PWM \ No newline at end of file diff --git a/src/components/register/Wippersnapper_Register.cpp b/src/components/register/Wippersnapper_Register.cpp index c38a4dbd2..04828c3d8 100644 --- a/src/components/register/Wippersnapper_Register.cpp +++ b/src/components/register/Wippersnapper_Register.cpp @@ -15,8 +15,6 @@ */ #include "Wippersnapper.h" -extern Wippersnapper WS; - /****************************************************************************/ /*! @brief Encodes hardware registration request message and publishes diff --git a/src/components/servo/ws_servo.h b/src/components/servo/ws_servo.h index f0c8062a1..e24e2908f 100644 --- a/src/components/servo/ws_servo.h +++ b/src/components/servo/ws_servo.h @@ -71,6 +71,5 @@ class ws_servo { servoComponent _servos[MAX_SERVO_NUM]; ///< Container of servo objects and ///< their associated pin #s }; -extern Wippersnapper WS; #endif // WS_SERVO \ No newline at end of file diff --git a/src/components/statusLED/Wippersnapper_StatusLED.cpp b/src/components/statusLED/Wippersnapper_StatusLED.cpp index 4cbdd4c85..619470a2c 100644 --- a/src/components/statusLED/Wippersnapper_StatusLED.cpp +++ b/src/components/statusLED/Wippersnapper_StatusLED.cpp @@ -16,7 +16,6 @@ #include "Wippersnapper_StatusLED.h" #include "Wippersnapper.h" -extern Wippersnapper WS; #ifdef USE_STATUS_NEOPIXEL Adafruit_NeoPixel *statusPixel = new Adafruit_NeoPixel( STATUS_NEOPIXEL_NUM, STATUS_NEOPIXEL_PIN, NEO_GRB + NEO_KHZ800); diff --git a/src/network_interfaces/Wippersnapper_AIRLIFT.h b/src/network_interfaces/Wippersnapper_AIRLIFT.h index 081b0692f..ad6473268 100644 --- a/src/network_interfaces/Wippersnapper_AIRLIFT.h +++ b/src/network_interfaces/Wippersnapper_AIRLIFT.h @@ -36,7 +36,6 @@ #define SPIWIFI SPI /*!< Instance of SPI interface used by an AirLift. */ #endif -extern Wippersnapper WS; /****************************************************************************/ /*! @brief Class for using the AirLift Co-Processor network iface. diff --git a/src/network_interfaces/Wippersnapper_ESP32.h b/src/network_interfaces/Wippersnapper_ESP32.h index dc251fe3c..43fc803f5 100644 --- a/src/network_interfaces/Wippersnapper_ESP32.h +++ b/src/network_interfaces/Wippersnapper_ESP32.h @@ -27,7 +27,9 @@ #include "WiFiMulti.h" #include #include -extern Wippersnapper WS; + +class Wippersnapper_ESP32; +extern Wippersnapper_ESP32 WS; /****************************************************************************/ /*! @@ -359,5 +361,6 @@ class Wippersnapper_ESP32 : public Wippersnapper { } }; + #endif // ARDUINO_ARCH_ESP32_H #endif // Wippersnapper_ESP32_H \ No newline at end of file diff --git a/src/network_interfaces/Wippersnapper_ESP8266.h b/src/network_interfaces/Wippersnapper_ESP8266.h index 7f0f6164d..ce67b10a9 100644 --- a/src/network_interfaces/Wippersnapper_ESP8266.h +++ b/src/network_interfaces/Wippersnapper_ESP8266.h @@ -39,8 +39,6 @@ // static const char *fingerprint PROGMEM = "47 D2 CB 14 DF 38 97 59 C6 65 1A // 1F 3E 00 1E 53 CC A5 17 E0"; -extern Wippersnapper WS; - /******************************************************************************/ /*! @brief Class for interacting with the Espressif ESP8266's network diff --git a/src/network_interfaces/ws_networking_pico.h b/src/network_interfaces/ws_networking_pico.h index e6ebf7348..282b741ef 100644 --- a/src/network_interfaces/ws_networking_pico.h +++ b/src/network_interfaces/ws_networking_pico.h @@ -29,7 +29,6 @@ #include "Arduino.h" #include #include -extern Wippersnapper WS; /****************************************************************************/ /*! diff --git a/src/provisioning/littlefs/WipperSnapper_LittleFS.h b/src/provisioning/littlefs/WipperSnapper_LittleFS.h index 782e8569b..9559de612 100644 --- a/src/provisioning/littlefs/WipperSnapper_LittleFS.h +++ b/src/provisioning/littlefs/WipperSnapper_LittleFS.h @@ -36,5 +36,4 @@ class WipperSnapper_LittleFS { void fsHalt(String msg); }; -extern Wippersnapper WS; #endif // WIPPERSNAPPER_LITTLEFS_H \ No newline at end of file diff --git a/src/provisioning/tinyusb/Wippersnapper_FS.h b/src/provisioning/tinyusb/Wippersnapper_FS.h index 7068cd691..3686029b2 100644 --- a/src/provisioning/tinyusb/Wippersnapper_FS.h +++ b/src/provisioning/tinyusb/Wippersnapper_FS.h @@ -61,5 +61,4 @@ class Wippersnapper_FS { WipperSnapper, False otherwise. */ }; -extern Wippersnapper WS; #endif // WIPPERSNAPPER_FS_H \ No newline at end of file