// SPDX-FileCopyrightText: 2025 Amal Mazrah // SPDX-FileCopyrightText: 2025 Jonas Smedegaard // SPDX-FileCopyrightText: 2025 Mennatullah Hatim Kassim // SPDX-FileCopyrightText: 2025 Noor Ahmad // SPDX-FileCopyrightText: 2025 Tanishka Suwalka // SPDX-License-Identifier: GPL-3.0-or-later /// Mussel - a small library for Arduino to emulate a mussel biosensor /// /// @version 0.0.1 /// @see /// @see #ifndef Mussel_h #define Mussel_h #include "Arduino.h" // seconds #define MUSSEL_NORMAL_PACE 50U #define MUSSEL_STRESS_PACE 10U // milliseconds #define MUSSEL_DEBOUNCE_DELAY 50U // Limited size NOW!! can be transformed into infinite array #define STACK_SIZE 1000 class Mussel { public: // Default constructor Mussel(const int attitude); // Constructor for attitudes using an input pin Mussel(const int attitude, const uint8_t pin); // Constructor for attitudes using an input pin and a sensor type Mussel( const int attitude, const uint8_t pin, const uint8_t type); void begin(); String desc(); byte read(); String debug(); bool push(String id, unsigned long timestamp, int measure); void printStack(); private: int _attitude; int _pin; bool _boolState; byte _count; unsigned long _time; #ifdef DHT_H DHT mussel_dht; #endif // Array to store ID strings String idStack[STACK_SIZE]; unsigned long timeStack[STACK_SIZE]; int measureStack[STACK_SIZE]; // Index of the top element in the stack, -1 means stack is empty int top = -1; }; #endif