Skip to content
Merged
Show file tree
Hide file tree
Changes from 21 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 8 additions & 13 deletions examples/Wippersnapper_NoFS/Wippersnapper_NoFS.ino
Original file line number Diff line number Diff line change
@@ -1,36 +1,31 @@
// Adafruit IO WipperSnapper Beta
//
//
// NOTE: This software is a BETA release and in active development.
// Please report bugs or errors to
// https://github.com/adafruit/Adafruit_Wippersnapper_Arduino/issues
// Adafruit IO WipperSnapper
//
// This sketch is for devices which lack USB-MSD or LittleFS support such
// as the Arduino MKR WiFi 1010, Arduino Nano 33 IoT.
// as the ESP32Dev for Wokwi Simulator
//
// Adafruit invests time and resources providing this open source code.
// Please support Adafruit and open source hardware by purchasing
// products from Adafruit!
//
// Brent Rubell for Adafruit Industries, 2021
// Brent Rubell for Adafruit Industries, 2025
//
// All text above must be included in any redistribution.

#include "Wippersnapper_Networking.h"

#include "ws_adapters.h"
#define WS_DEBUG // Enable debug output
/************************ Adafruit IO Config *******************************/

// Visit io.adafruit.com if you need to create an account,
// or if you need your Adafruit IO key.
#define IO_USERNAME "YOUR_AIO_USERNAME"
#define IO_KEY "YOUR_AIO_KEY"

#define IO_URL "io.adafruit.com"
#define IO_PORT 8883
/**************************** WiFi Config ***********************************/
#define WIFI_SSID "YOUR_WIFI_SSID"
#define WIFI_PASS "YOUR_WIFI_PASSWORD"

#include "Wippersnapper_Networking.h"
ws_adapter_wifi wipper(IO_USERNAME, IO_KEY, WIFI_SSID, WIFI_PASS);
ws_adapter_wifi wipper(IO_USERNAME, IO_KEY, WIFI_SSID, WIFI_PASS, IO_URL, IO_PORT);

void setup() {
// Provisioning must occur prior to serial init.
Expand Down
69 changes: 55 additions & 14 deletions src/Wippersnapper_V2.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,8 @@ Wippersnapper_V2::Wippersnapper_V2() {
WsV2._ds18x20_controller = new DS18X20Controller();
WsV2._i2c_controller = new I2cController();
WsV2._pixels_controller = new PixelsController();
WsV2._pwm_controller = new PWMController();
WsV2._servo_controller = new ServoController();
};

/**************************************************************************/
Expand Down Expand Up @@ -335,99 +337,127 @@ bool cbDecodeBrokerToDevice(pb_istream_t *stream, const pb_field_t *field,
WS_DEBUG_PRINTLN("-> Checkin Response Message Type");
WS_DEBUG_PRINT("Handling Checkin Response...");
if (!handleCheckinResponse(stream)) {
WS_DEBUG_PRINTLN("Failure handling Checkin Response!");
return false;
}
WS_DEBUG_PRINTLN("Handled!");
break;
case wippersnapper_signal_BrokerToDevice_digitalio_add_tag:
WS_DEBUG_PRINTLN("-> DigitalIO Add Message Type");
if (!WsV2.digital_io_controller->Handle_DigitalIO_Add(stream)) {
WS_DEBUG_PRINTLN("ERROR: Unable to add digitalio pin!");
return false;
}
break;
case wippersnapper_signal_BrokerToDevice_digitalio_remove_tag:
WS_DEBUG_PRINTLN("-> DigitalIO Remove Message Type");
if (!WsV2.digital_io_controller->Handle_DigitalIO_Remove(stream)) {
WS_DEBUG_PRINTLN("ERROR: Unable to remove digitalio pin!");
return false;
}
break;
case wippersnapper_signal_BrokerToDevice_digitalio_write_tag:
WS_DEBUG_PRINTLN("-> DigitalIO Write Message Type");
if (!WsV2.digital_io_controller->Handle_DigitalIO_Write(stream)) {
WS_DEBUG_PRINTLN("ERROR: Unable to write to digitalio pin!");
return false;
}
break;
case wippersnapper_signal_BrokerToDevice_analogio_add_tag:
WS_DEBUG_PRINTLN("-> AnalogIO Add Message Type");
if (!WsV2.analogio_controller->Handle_AnalogIOAdd(stream)) {
WS_DEBUG_PRINTLN("ERROR: Unable to add analogio pin!");
return false;
}
break;
case wippersnapper_signal_BrokerToDevice_analogio_remove_tag:
WS_DEBUG_PRINTLN("-> AnalogIO Remove Message Type");
if (!WsV2.analogio_controller->Handle_AnalogIORemove(stream)) {
WS_DEBUG_PRINTLN("ERROR: Unable to remove analogio pin!");
return false;
}
break;
case wippersnapper_signal_BrokerToDevice_ds18x20_add_tag:
WS_DEBUG_PRINTLN("-> DS18X20 Add Message Type");
if (!WsV2._ds18x20_controller->Handle_Ds18x20Add(stream)) {
WS_DEBUG_PRINTLN("ERROR: Unable to add DS18X20 sensor!");
return false;
}
break;
case wippersnapper_signal_BrokerToDevice_ds18x20_remove_tag:
WS_DEBUG_PRINTLN("-> DS18X20 Remove Message Type");
if (!WsV2._ds18x20_controller->Handle_Ds18x20Remove(stream)) {
WS_DEBUG_PRINTLN("ERROR: Unable to remove DS18X20 sensor!");
return false;
}
break;
case wippersnapper_signal_BrokerToDevice_i2c_device_add_replace_tag:
WS_DEBUG_PRINTLN("-> I2C Device Add/Replace Message Type");
if (!WsV2._i2c_controller->Handle_I2cDeviceAddOrReplace(stream)) {
WS_DEBUG_PRINTLN("ERROR: Unable to add/replace I2C device!");
return false;
}
break;
case wippersnapper_signal_BrokerToDevice_i2c_bus_scan_tag:
WS_DEBUG_PRINTLN("-> I2C Bus Scan Message Type");
if (!WsV2._i2c_controller->Handle_I2cBusScan(stream)) {
WS_DEBUG_PRINTLN("ERROR: Unable to add/replace I2C device!");
return false;
}
break;
case wippersnapper_signal_BrokerToDevice_i2c_device_remove_tag:
WS_DEBUG_PRINTLN("-> I2C Device Remove Message Type");
if (!WsV2._i2c_controller->Handle_I2cDeviceRemove(stream)) {
WS_DEBUG_PRINTLN("ERROR: Unable to remove I2C device!");
return false;
}
break;
case wippersnapper_signal_BrokerToDevice_pixels_add_tag:
WS_DEBUG_PRINTLN("-> Pixels Add Message Type");
if (!WsV2._pixels_controller->Handle_Pixels_Add(stream)) {
WS_DEBUG_PRINTLN("ERROR: Unable to add pixels strand!");
return false;
}
break;
case wippersnapper_signal_BrokerToDevice_pixels_remove_tag:
WS_DEBUG_PRINTLN("-> Pixels Remove Message Type");
if (!WsV2._pixels_controller->Handle_Pixels_Remove(stream)) {
WS_DEBUG_PRINTLN("ERROR: Unable to remove pixels strand!");
return false;
}
break;
case wippersnapper_signal_BrokerToDevice_pixels_write_tag:
WS_DEBUG_PRINTLN("-> Pixels Write Message Type");
if (!WsV2._pixels_controller->Handle_Pixels_Write(stream)) {
WS_DEBUG_PRINTLN("ERROR: Unable to write to pixels strand!");
return false;
}
break;
case wippersnapper_signal_BrokerToDevice_pwm_add_tag:
WS_DEBUG_PRINTLN("-> PWM Add Message Type");
if (!WsV2._pwm_controller->Handle_PWM_Add(stream)) {
return false;
}
break;
case wippersnapper_signal_BrokerToDevice_pwm_write_duty_tag:
WS_DEBUG_PRINTLN("-> PWM Write Duty Cycle Message Type");
if (!WsV2._pwm_controller->Handle_PWM_Write_DutyCycle(stream)) {
return false;
}
break;
case wippersnapper_signal_BrokerToDevice_pwm_write_freq_tag:
WS_DEBUG_PRINTLN("-> PWM Write Frequency Message Type");
if (!WsV2._pwm_controller->Handle_PWM_Write_Frequency(stream)) {
return false;
}
break;
case wippersnapper_signal_BrokerToDevice_pwm_remove_tag:
WS_DEBUG_PRINTLN("-> PWM Remove Message Type");
if (!WsV2._pwm_controller->Handle_PWM_Remove(stream)) {
return false;
}
break;
case wippersnapper_signal_BrokerToDevice_servo_add_tag:
WS_DEBUG_PRINTLN("-> Servo Add Message Type");
if (!WsV2._servo_controller->Handle_Servo_Add(stream)) {
return false;
}
break;
case wippersnapper_signal_BrokerToDevice_servo_write_tag:
WS_DEBUG_PRINTLN("-> Servo Write Message Type");
if (!WsV2._servo_controller->Handle_Servo_Write(stream)) {
return false;
}
break;
case wippersnapper_signal_BrokerToDevice_servo_remove_tag:
WS_DEBUG_PRINTLN("-> Servo Remove Message Type");
if (!WsV2._servo_controller->Handle_Servo_Remove(stream)) {
return false;
}
break;
Expand Down Expand Up @@ -1005,6 +1035,17 @@ bool Wippersnapper_V2::PublishSignal(pb_size_t which_payload, void *payload) {
MsgSignal.payload.pixels_added =
*(wippersnapper_pixels_PixelsAdded *)payload;
break;
case wippersnapper_signal_DeviceToBroker_pwm_added_tag:
WS_DEBUG_PRINTLN("PWMAdded");
MsgSignal.which_payload = wippersnapper_signal_DeviceToBroker_pwm_added_tag;
MsgSignal.payload.pwm_added = *(wippersnapper_pwm_PWMAdded *)payload;
break;
case wippersnapper_signal_DeviceToBroker_servo_added_tag:
WS_DEBUG_PRINTLN("ServoAdded");
MsgSignal.which_payload =
wippersnapper_signal_DeviceToBroker_servo_added_tag;
MsgSignal.payload.servo_added = *(wippersnapper_servo_ServoAdded *)payload;
break;
default:
WS_DEBUG_PRINTLN("ERROR: Invalid signal payload type, bailing out!");
return false;
Expand Down
10 changes: 9 additions & 1 deletion src/Wippersnapper_V2.h
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,7 @@
#include "protos/digitalio.pb.h"
#include "protos/ds18x20.pb.h"
#include "protos/pixels.pb.h"
#include "protos/pwm.pb.h"
#include "protos/signal.pb.h"

// External libraries
Expand All @@ -112,7 +113,9 @@
#include "components/ds18x20/controller.h"
#include "components/i2c/controller.h"
#include "components/pixels/controller.h"
#include "components/pwm/controller.h"
#include "components/sensor/model.h"
#include "components/servo/controller.h"

// Display
#ifdef USE_DISPLAY
Expand Down Expand Up @@ -153,6 +156,8 @@ class AnalogIOController;
class DS18X20Controller;
class I2cController;
class PixelsController;
class PWMController;
class ServoController;

/**************************************************************************/
/*!
Expand Down Expand Up @@ -255,7 +260,10 @@ class Wippersnapper_V2 {
nullptr; ///< Instance of DS18X20 controller
I2cController *_i2c_controller = nullptr; ///< Instance of I2C controller
PixelsController *_pixels_controller =
nullptr; ///< Instance of Pixels controller
nullptr; ///< Instance of Pixels controller
PWMController *_pwm_controller = nullptr; ///< Instance of PWM controller
ServoController *_servo_controller =
nullptr; ///< Instance of Servo controller

// TODO: does this really need to be global?
uint8_t _macAddrV2[6]; /*!< Unique network iface identifier */
Expand Down
1 change: 0 additions & 1 deletion src/components/ds18x20/model.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,6 @@ DS18X20Model::DS18X20Model() {
memset(&_msg_DS18x20Added, 0, sizeof(_msg_DS18x20Added));
memset(&_msg_DS18x20Remove, 0, sizeof(_msg_DS18x20Remove));
memset(&_msg_DS18x20Event, 0, sizeof(_msg_DS18x20Event));
// no-op
}

/***********************************************************************/
Expand Down
Loading
Loading