Commit Graph

47 Commits

Author SHA1 Message Date
Gregg 349270aef2 Updated copyright dates to 2024 2024-02-12 21:44:09 -06:00
Gregg 437771fabd Cleaned up some public/private permissioning inside PushButton and SpanButton
Ensure users can access constants like TRIGGER_ON_HIGH, TRIGGER_ON_LOW, etc. using any of these equivalent fully-qualified names:

* PushButton::TRIGGER_ON_HIGH
* SpanButton::TRIGGER_ON_HIGH
* SpanToggle::TRIGGER_ON_HIGH
2024-01-13 15:20:20 -06:00
Gregg 260be21462 Added optional triggerType to homeSpan.setControlPin()
Default is SpanButton::TRIGGER_ON_LOW.  Follows same options as SpanButton, including the ability to provide your own triggerType function of form:

boolean f(int pin)
2024-01-13 10:01:03 -06:00
Gregg d179f039d1 Moved all PSRAM definitions into separate PSRAM.h file
Now allows #include "HomeSpan.h" to be removed from TLV dependencies
2024-01-10 22:05:26 -06:00
Gregg 7282c2a8c9 Moved Streamer from Utils.h into separate Streamer.cpp
But declared Streamer inside HomeSpan.h instead of separate Streamer.h since it  should only be used when HomeSpan.h is used.

Also, changed class structure so that it is "final" by removing virtual tags and making all protected variables private.
2023-12-30 07:48:11 -06:00
Gregg f3e98601b0 Initial test of StreamBuffer added to WebLog 2023-12-29 22:19:49 -06:00
Gregg ffe56e7261 Remove include HAP.h from SRP
SRP now only requires Utils (for TempBuffer).

Also, moved HS_ALLOC definitions into Utils so it can be re-used by others files
2023-12-28 18:11:39 -06:00
Gregg da55b9b6b1 Start re-working SRP6A's use in Pair-Setup to make it local instead of global 2023-12-27 14:31:22 -06:00
Gregg beef66eec0 Added new initializer to TempBuffer
Allows TempBuffer to be initialized by concatenation of multiple existing buffers.

Constructor contains pairs of (T *buf), nElements, where last argument MUST BE NULL to signify end of variable argument list.

Will work with any type T, and nElements is in units of elements of type T.
2023-12-26 15:53:38 -06:00
Gregg 0e0f1dcb1c Completed initial re-factoring of postPairSetup - must test! 2023-12-24 17:35:25 -06:00
Gregg f6ebc1ae22 Changed various static and dynamic stack-based buffers to TempBuffer
Also added casting overload to TempBuffer so that get() method is no longer needed
2023-11-25 16:13:24 -06:00
Gregg 8268e519dd PSRAM: Adds custom allocator and HS_MALLOC/HS_CALLOC macros
Forces all heap requests to be drawn from PSRAM, unless the device does not contain PSRAM.

To do:  Provide easy-to-use NEW() macro; add custom allocator to unordered sets; auto-shrink vectors after updateDatabase()
2023-11-20 21:57:20 -06:00
Gregg a84429f930 Refactored TLV
* Added support for zero-length TLV
* Added SEPARATOR as a formal kTLVType (and updated listControllers() to use)
* Added `uint8_t *buf(tagType tag, uint8_t *src, int len);` to load buffer needing external memcpy (and updated listControllers() to use)
2023-07-30 21:37:47 -05:00
Gregg 62f68cb33c Upgraded TempBuffer logic to use .get() to return pointer
Next up: update Network.cpp to use client.available() and reduce fixed memory usage.
2023-07-26 06:27:54 -05:00
Gregg 5f9458e625 Converted static HTTP Buffer to dynamic TempBuffer
Saved about 8K in RAM!
2023-07-25 05:54:40 -05:00
Gregg 88897ee085 Updated copyright dates on source code 2023-02-04 11:41:57 -06:00
Gregg e2678f5661 Added position() method to SpanToggle()
Created PushButton::OPEN and PushButton::CLOSED enums.

This completes all SpanToggle() functionality.  Will add a SpanToggle() to UnitTest.
2023-02-03 23:09:08 -06:00
Gregg 232362c807 Update Utils.h
Added comments for new toggled() functionality
2023-01-30 07:56:46 -06:00
Gregg 1a3887b6cf Added switch toggle logic to PushButton Class
Adds new method toggled() which is the analog of triggered().

Next step: Extend SpanButton to access this new logic.
2023-01-29 18:30:25 -06:00
Gregg f8be2847bd Fixed bug in touch sensor logic that would cause failure to compile under 2.0.0-2.0.2
Verified that Unit Test compiles under all version 2.0.0 through 2.0.5 and works on 2.0.0 as well as 2.0.5
2022-10-22 15:25:31 -05:00
Gregg 6fecf2c29f updating main code to incorporate new Blinkable class/interface 2022-08-28 18:32:52 -05:00
Gregg fc76db092d started development of Blinkable Interface to allow generic LED to be used with Blinker 2022-08-27 17:33:08 -05:00
Gregg 3b2c36f179 Changed PushButton::pressType_t to triggerType_t and refreshed triggerType_t constants
Pre-selects are no defined in both PushButton and SpanButton as: TRIGGER_ON_LOW, TRIGGER_ON_HIGH, and TRIGGER_ON_TOUCH
2022-08-15 21:21:21 -05:00
Gregg 754ffc7f34 Added PushButton::setTouchThreshold() and PushButton::setTouchCycles()
Not implemented for ESP32-C3
2022-08-15 07:15:19 -05:00
Gregg e8d40150ed Incorporated logic to auto-calibrate touch sensors
Works with ESP32, ESP32-S2, and ESP32-S3 (ESP32-C3 does not support Touch Sensors).
2022-08-14 18:03:59 -05:00
Gregg dbcd9e267b Added check to ignore PushButton::TOUCH is compiling on ESP32-C3
The C3 does not have touch capability.  Compiler will throw an error is PushButton::TOUCH is referenced when compiling for C3.
2022-08-13 10:06:33 -05:00
Gregg ee55f268bd Finalized new SpanButton and PushButton functionality
Streamlined interface for both functions.  To Do:  Update SpanButton documentation
2022-08-13 07:52:32 -05:00
Gregg 9191b8664e Adding generic SpanButton function 2022-08-12 23:15:02 -05:00
Gregg 7841081fda Added option to set SpanButton type
Types include: GROUNDED, POWERED, and TOUCH.
Also added configureTouch() to customize parameters used for touch sensors.
2022-08-12 21:56:45 -05:00
Gregg 54b8374573 begin update of PushButton to make it more generic
Eliminated constructor that had no pin parameter.  Pin parameter is now always required.  Since PushButton was not part of HomeSpan API, these changes should not impact any users.
2022-08-11 06:12:41 -05:00
Gregg 57d791178c starting update of ControlPin logic to make it more generic 2022-08-10 06:20:50 -05:00
Gregg 02d841390c Updated License Dates 2022-02-20 13:05:03 -06:00
Gregg d667f5e81d Added homeSpan.setStatusAutoOff(uint16_t duration)
Optional method to automatically turn off Status LED after a *duration* seconds.  LED will resume normal operation any time it is re-triggered with a new pattern.  This also resets the elapsed time used to check for autoOff.
2021-12-26 23:07:37 -06:00
Gregg 6de645216c CHANGED default settings for StatusPin and ControlPin
Re-worked code to allow for NO Status LED Pin and NO Control Pin.  If Control Pin is not set explicitly with homeSpan.setControlPin(), there will be no Control Pin.  There is no longer a default since there are too many board variations with S2 and C3 chips now supported.  Same for Status Pin - it will not be defined unless set explicitly with homeSpan.setStatusPin(), with the exception that if LED_BUILTIN is defined (i.e. there is a built-in LED), then the Status LED Pin will default to LED_BUILTIN if not explicitly defined.  MUST UPDATE DOCUMENTATION - THIS CHANGES DEFAULT BEHAVIOR OF HOMESPAN AND MAY REQUIRE UPDATES TO EXISTING SKETCHES
2021-10-05 21:10:24 -05:00
HomeSpan 8d45e20671 Update Utils.h 2021-09-06 21:29:13 -05:00
Gregg 78cbd926f1 Updated licenses and version number
Change copyright years to 2020-2021, and updated version number to 1.1.4 in preparation for next patch.
2021-01-24 12:02:24 -06:00
Gregg 3aa5456881 Fixed memory problem with sendEncrypyted()
Switched from using fixed buffer, httpBuf, to a TempBuffer to allow for dynamic allocation of memory when assembling and transmitting large blocks of data.  This was causing a memory overflow of the static httpBuf when responding to a getAccessories() request for a large number of Accessories.
2021-01-02 21:18:50 -06:00
Gregg b6c5a6b68d Added License Info to all files 2020-11-02 20:09:09 -06:00
Gregg e2f11630fa Updated SpanButtton to recognize new Double Press event
button(int pin, boolean isLong) changed to button(int pin, int pressType), where pressType can be SpanButton::LONG, SpanButton::SINGLE, or SpanButton::DOUBLE.  Updated Example 16 and confirmed everything works as expected.

To do: Review all prior examples and update SpanButton when needed.  Also need to update Zephyr Vent Hood code!
2020-11-01 12:21:34 -06:00
Gregg bde63bf79d Updated PushButton to add initial logic for double-clicking 2020-11-01 10:00:20 -06:00
Gregg 7e4df498db Completed integration of apConfigure()
The 'A' command now resets any existing WiFi functionality so that it can start an Access Point without needing to first reboot.

To Do:  Add a method to cancel out of apConfigure() and reboot by pressing control button.

To Do:  Create time-out for commandMode()
2020-10-09 07:57:30 -05:00
Gregg dee954d5bd Converted VERBOSE macros to LogLevel macros that use real-time if-statements.
This change allows the user to set the log-level with homeSpan.setLogLevel() instead of needing to change in Settings.h.  Next up:  Update Example that introduces VERBOSE to instead use setLogLevel().  Consider adding an interactive 'L' command to change this during run-time.

Also, added "#pragma once" to every *.h file to prevent duplication of definitions.  TO DO:  Review all #include to ensure sanity across all files.
2020-09-28 18:04:59 -05:00
Gregg 538a3a9531 Added PushButton::primed()
Allows you to determine if short-press has occured but button not yet released.
2020-09-27 14:33:38 -05:00
Gregg a40447b8f8 Created methods to set Control and Status Pins
Created separate init() methods for PushButton and Blinker.  Created HomeSpan:setControlPin and HomeSpan:setStatusPin that can be called from main setup() to modify the defaults.  All default settings being migrated to Settings.h
2020-09-27 13:41:02 -05:00
Gregg b7de0cf710 Created Generic PushButton
Wll be used for control button.  Nothing to do with buttons that control Accessories, which are handled by SpanButton.
2020-09-26 16:23:44 -05:00
Gregg 3da2b9a311 Change Config.cpp to Network.cpp
Move all configuration code into Network.cpp, eliminating any calls or connection to HAP.cpp.  Network.cpp is now standalone for HomeSpan.cpp to call directly to handle ALL apects of WiFI and Setup Code initialization.

Also move TempBuffer from HAP.h to Utils.h so it can be used by Network.h
2020-09-06 08:24:13 -05:00
Gregg cccb61f946 Initial commit 2020-07-18 21:47:39 -05:00