Commit Graph

23 Commits

Author SHA1 Message Date
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 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 83170306f5 Updated Blinker class for compatibility with Arduino-ESP32 v2.0.1
The update from Arduino-ESP32 2.0.0 to 2.0.1 contained significant changes to the structures used by the IDF for generic timers.  This broke the Blinker code (would not compile for ESP32-S2 and C3 chips).

The solution: Modified Blinker::isrTimer() to use a *generic* interrupt-clearing function when available (IDF version >= 4.0.0).  Below 4.0.0 the code continues to manually clear the interrupt flag by resetting specific structure variables, though the logic is simpler since this is only needed for the ESP32 chip (the S2 and C3 are not supported in earlier versions of Arduino-ESP32).

This provides for full compatibility with Arduino-ESP32 versions 2.0.1, 2.0.0, and 1.0.6.  The use of a generic interrupt clearing function when IDF>=4.0.0 will hopefully make this future-proof to any further changes by Espressif to the underlying timer structures.
2021-11-25 10:03:57 -06:00
Gregg 7c32f7a364 Fix bug in PushButton()
Ensure a pin value of -1 is retained so that any further calls to other methods are disabled if the pin is not defined.
2021-10-21 20:32:25 -05: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
Gregg 56c09c44aa Updated Blinker again to ensure C3 compatibility
moved gpio_set_direction to start() method so that it is called every time needed in case another part of the program (i.e. DEV_Identify) calls pinMode() and resets the pin to a strict OUTPUT.
2021-10-05 06:32:19 -05:00
Gregg ae1037946a Update Blinker() to fix inherent problem with digitalRead() in ESP32-C3
Pin must be INPUT_OUTPUT for digitalRead to work with ESP32-C3 (the IDF uses a new protocol for the C3).
2021-10-03 21:39:23 -05:00
Gregg c67336ab57 Updated Blinker logic to support S2 and C3
Needed to set clk_src to APB, else default is XTAL, which is only 40MHz clock!
2021-09-18 06:35:41 -05:00
HomeSpan 6088fb16fe Added logic to Timer code to allow for compiling under S2 and C3
With these changes the code compiles but nothing has been tested yet to see if it actually works under S2 and C3!
2021-09-06 12:35:26 -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 9f7d288d18 Ignore any '\r' characters received from Serial Monitor
This allows the Serial Monitor to send NL or CR/NL at end of each line.  A newline ('\n') must be at the end to terminate reading from the Serial Monitor, but any preceeding carriage returns are stripped out.
2021-01-23 20:55:06 -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 e658d6d4eb Tweaks to blinker() to make sure delayTime ADDs to offTime 2020-10-10 16:40:53 -05: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 7ecff55f9c Updated PushButton() so that longPresses always repeat
No need for any new methods - default is now that longPress repeats every longTime milliseconds provided button continues to be held down.  Once a longPress is triggered, a shortPress will not be triggered until button is released.
2020-10-03 12:02:57 -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 2172ac1ce6 Implemented Blinker statusLED
Replaced manual blinking with automated Blinker statusLED
2020-08-22 21:52:25 -05:00
Gregg cccb61f946 Initial commit 2020-07-18 21:47:39 -05:00