Commit Graph

125 Commits

Author SHA1 Message Date
Gregg 00944c1f2f Converted sprintfNotify and eventNotify to use HapOut
Successfully tested with MultiTest script
2023-12-31 12:36:47 -06:00
Gregg 1f13906a25 Added SHA-384 hash computation to HapOut
Hashing of entire database is now done piecemeal within HapOut, preventing the need to load the entire database into a large buffer just to obtain a unique hash.

Modified updateDatabase() to use HapOut.getHash()
2023-12-31 09:36:19 -06:00
Gregg f2cb880e4e Converted sprintfAttributes to printfAttributes and added encryption to HapOut
Success!
2023-12-30 23:07:09 -06:00
Gregg f3e98601b0 Initial test of StreamBuffer added to WebLog 2023-12-29 22:19:49 -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 aa700f94f1 Added new TLV8 class
To do: Refactor HAP.cpp to use new TLV8 class
2023-12-22 12:07:26 -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 9e3f6c8303 Override new operator for SpanAccessory, SpanService, and SpanCharacteristic
New Operator now uses PSRAM if available, else uses Internal RAM.  Obviates the need for the ps_new() macro, though will keep definition since it may be useful for any class that does not already override malloc() to use PSRAM.
2023-11-24 10:30:20 -06:00
Gregg b7c294d210 Change NVS storage for Characteristics to always use nvs_set_u64()
Reduces NVS consumption by from 3 to only 1 records when storing numerical values.

Also:  Fixed memory problem in getCharacteristics by replacing dynamically-sized stack buffers with TempBuffer (must do this everywhere), which was causing stack probllem when combination number of Accessories and number of Characteristics got very large.
2023-11-24 09:53:12 -06:00
Gregg 9e0512e48b Address WebLog size issue that limited number of entries
Added logic to sequentially transmit chunks of the HTML response String whenever it grows beyond 1024 bytes.  This ensures the number of WebLog entries does not create a very large HTML String that eats up all the free heap space.  WebLog entries are now only limited by storage of the entries themselves.  Tested successfully with 500 entries.
2023-11-22 06:15:43 -06:00
Gregg 2bc107032c Added HS_REALLOC macro for generalized realloc() when using PSRAM
When using PSRAM, changing the number of Accessories no longer creates any change to heap usage on internal RAM.  The entire Accessory will be stored in PSRAM.
2023-11-21 18:36:51 -06:00
Gregg 458a4fb357 Added ps_new() macro
A more generic version of `new(*ptr)` that allocates from PSRAM if present, otherwise is that same a normal `new`
2023-11-21 18:06:27 -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 6f19141a49 Update src.ino 2023-11-04 13:22:12 -05:00
Gregg 1194bd27f6 Update src.ino 2023-11-04 12:52:03 -05:00
Gregg 713c5c65bf Added new homeSpan.rebootCallback() function
An optional callback used to track the number of times the device reboots, where a reboot is defined as any restart where the uptime was less than a specified number of milliseconds (default=5000)
2023-11-04 10:43:28 -05:00
Gregg 965bdc71b7 Add MAC Address output to RemoteDevice.ino
Prompts user with reminder of which MAC Address to use in Main Device.
2023-11-04 09:36:31 -05:00
Gregg 42f69adf49 Made vTaskDelay(5) in pollTask conditional of using autoPoll()
vTaskDelay(5) is only needed if polling is in its own task.  If calling poll() directly, there is no need for any delay.
2023-10-30 06:29:38 -05:00
Gregg 56a2f0bece Changed Accessory Limit from 41 to 150 and added Memory Warning
Low Memory Watermark is compared to DEFAULT_LOW_MEM_THRESHOLD (currently set at 80,000 bytes) after HAP initialization but before WIFI connection.  If Low Memory Watermark is below DEFAULT_LOW_MEM_THRESHOLD, a WARNING is issued.

Note: memory is based on heap with MALLOC_CAP_DEFAULT capabilities
2023-10-29 20:55:02 -05:00
Gregg 5ce7211539 Made conforming changes to setVerboseWiFiReconnect 2023-10-28 18:40:04 -05:00
Gregg 81ee9e2dbc Added homeSpan.setWifiCallbackAll(int n)
Adds a second type of WiFi Callback that is called every time WiFi is established OR re-established after a disconnect.  Passes the number of times WiFi has been connected as an argument.
2023-10-28 17:06:40 -05:00
Gregg 4de61e5914 Change webLogCallback() to pass String as reference 2023-10-24 13:43:04 -05:00
Gregg 0f96d0fff6 Added homeSpan.setWebLogCallback(String (*f)())
Allows extension of initial table produced in WebLog, where f is a function that returns a String.  The returned String is copied into the WebLog HTML just before the </table> tag is printed in the initial table.
2023-10-22 18:23:25 -05:00
Gregg 131e5b1a92 Removed duplicate if(POST /pairings) 2023-07-28 19:38:16 -05:00
Gregg 793f7882b1 Replaced appropriate snprintf() with asprintf() and used *m in sscanf
Optimized use of heap memory instead of stack memory for temporary variables, and makes code easier to read, provided all heap usage is free() at end of each function.

Also removed char *hostName as a member variable of homeSpan.  It's never actually used since MDNS constructs its own copy of hostName as needed.
2023-07-26 22:46:20 -05:00
Gregg a73b206531 Update src.ino 2023-07-21 17:36:57 -05:00
Gregg 4557e3866f Converted various homeSpan.set() methods from void to Span& to enable chaining 2023-07-21 13:27:31 -05:00
Gregg 62b1e9bd35 Update src.ino 2023-07-03 07:05:51 -05:00
Gregg 568c13fee3 Tested homeSpan.setStatusDevice() to create a reverseLED 2023-07-02 17:12:58 -05:00
Gregg d33bbf2477 Update src.ino 2023-05-13 10:36:17 -05:00
Gregg 40bb97215f Added homeSpan methods setSerialInputDisable() and getSerialInputDisable()
Provides ability to disable HomeSpan from reading from Serial port (which is otherwise normally enabled)
2023-05-13 10:34:21 -05:00
Gregg de97faee37 Converted Serial.printf in extra classes to ESP_LOGI and ESP_LOGW
Changed Serial.printf() diagnostic messages to either ESP_LOGI() or ESP_LOGW() macros in Blinker, PWM (LedPin and ServoPin), Pixel, and RFControl class
2023-05-12 21:32:21 -05:00
Gregg 368ce12c04 Started work on converting all Serial.print() to LOG0() macro 2023-05-08 17:07:21 -05:00
Gregg d5eb2ceeb8 Update src.ino 2023-05-07 13:41:27 -05:00
Gregg 5853989651 Update src.ino 2023-04-08 17:17:47 -05:00
Gregg cde3348b79 Update src.ino 2023-02-25 15:34:14 -06:00
Gregg 09063fb7dc Extended functionality of setValidValues() to allow INT, UINT8, UINT16, and UINT32 Characteristics 2023-02-25 15:07:02 -06:00
Gregg 88897ee085 Updated copyright dates on source code 2023-02-04 11:41:57 -06:00
Gregg 03ba061b9b Added logic to hide AP SSID from broadcasting when WIFI_AP_STA used for SpanPoint
This does NOT effect the HomeSpan Access Point from being broadcast as usual when launched.
2023-01-28 18:05:59 -06:00
Gregg 7eca1e776b Add option to SpanPoint to use softAP MAC Address instead of STA
Needed to support ESP-NOW on ESP-8266 chips, which seem to only work if connecting into softAP MAC Address once HomeSpan is connected to WiFi network (prior to connection ESP-8266 will properly connect to normal STA address as well as softAP address).
2023-01-22 18:05:59 -06:00
Gregg 3cb8d27342 Added CUSTOM_CHAR_DATA() macro
Similar to CUSTOM_CHAR_STRING() macro, but does not include a parameter to set the default value (since the user can type an invalid string).  Instead, user setData after creating the Characteristic as needed.
2023-01-01 15:08:34 -06:00
Gregg 72b4ece64d Added DATA format
Includes 3 new methods: getData(), getNewData(), and setData()
2023-01-01 11:33:50 -06:00
Gregg 484f1c4f2e Cleaned up compiler warnings
* Changed ~SpanService to virtual function to ensure any user-defined destructor is also called

* Found/corrected bug in error message related to defining a Characteristic without any Service

* Added warning/error ID numbers to warning/error messages

* Other misc changes to clean up compiler warnings
2022-12-02 17:49:54 -06:00
Gregg 05cbc03f12 Added homeSpan.statusString(HS_STATUS statusMessage)
Can be used in statusCallback to convert HS_STATUS to char string
2022-10-29 18:36:30 -05:00
HomeSpan 7ff91ccf02 Changed hsEventCallback to statusCallback 2022-10-24 19:03:15 -04:00
HomeSpan 5b38c6a04a Started homeSpan.setEventCallback() 2022-10-23 21:26:41 -04:00
Gregg 2d411bab82 Updated SpanPoint so that WiFi_AP_STA is only used if receiveSize>0
Next up: explore power-reducing modes and sleep modes for remote sensors to extend battery life.
2022-10-03 22:04:51 -05:00
Gregg 23afdb3711 Completed all SpanPoint code
Allows for bi-directional transmission between main HomeSpan device and one or more remote devices.

To Do:  Create and test with Temperature Sensor Example
2022-10-01 15:33:11 -05:00
Gregg b7317c3b5f Added SpanPoint::send() functionality
Works as expected.

Next Up:  Modify send() logic so that channels are NOT scanned if device is a main HomeSpan hub.
2022-09-30 22:20:32 -05:00
Gregg c819426dec Moving HomePoint.h back into HomeSpan.h
Added SpanPoint::setAsHub(), which is called after homeSpan.begin() to set device as Hub so SpanPoint knows not to change WiFi channel.

Also added check to make sure there are no SpanPoint objects instantiated before a call to homeSpan.begin() (if it is called at all).
2022-09-30 17:27:57 -05:00